免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

楼主: 四金呐
收起左侧

[经验共享] 【干货】arcgis将标注转换为注记要素

    [复制链接]

0

主题

411

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
61
发表于 2022-1-15 13:43 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

1399

铜板

1

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
25
发表于 2022-1-19 16:45 | 显示全部楼层
学习学习
回复

使用道具 举报

地信网友  发表于 2022-1-27 15:45
谢谢,看看
回复

使用道具

0

主题

3347

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
371
发表于 2022-1-27 15:45 | 显示全部楼层
谢谢,看看
回复

使用道具 举报

发表于 2022-1-28 19:06 | 显示全部楼层
#coding=utf8 import arcpy import sys def initProgress(hint,num):     arcpy.SetProgressor("step", u"正在"+hint,0,num,1) def step():     arcpy.SetProgressorLabel(u"正在进行....")     arcpy.SetProgressorPosition() def freeProgress():     arcpy.ResetProgressor()   ########## def getCount(inFeature):     result = arcpy.GetCount_management(inFeature)     count= int(result.getOutput(0))     return count ##### def delsame(jfb_Select):     desc = arcpy.Describe(jfb_Select)     shapeName = desc.ShapeFieldName     arcpy.DeleteIdentical_management(jfb_Select, [shapeName]) def getOIDField(jfb_Select):     desc = arcpy.Describe(jfb_Select)     OIDField=desc.OIDFieldName     return OIDField ####### def AddLayer(mxd,inFeature):      df=arcpy.mapping.ListDataFrames(mxd)[0]     addLayer = arcpy.mapping.Layer(inFeature)     arcpy.mapping.AddLayer(df, addLayer,"TOP") #AUTO_ARRANGE,"BOTTOM",TOP  def FieldExists(TableName,FieldName):     desc = arcpy.Describe(TableName)     FieldName=FieldName.upper()     for field in desc.fields:         if field.Name.upper() ==FieldName:             return True             break     return False def getField(TableName,FieldName):     desc = arcpy.Describe(TableName)     FieldName=FieldName.upper()     for field in desc.fields:         if field.Name.upper() ==FieldName:             return field             break     return None  def getrowbyFID(FieldNames,FID):     with arcpy.da.SearchCursor(byFeature, FieldNames,oidFieldNameby+"="+str(FID))  as cursor:         for row in cursor:             return row  def Main():     count=getCount(inFeature)     if count <= 0:         arcpy.AddMessage(u""+inFeature+"没有数据")         return     arcpy.Select_analysis(inFeature,outFeature) #ORIG_FID     YL_FID1="YL_FID1"     if not FieldExists(inFeature,YL_FID1):         arcpy.AddField_management(inFeature,YL_FID1 ,"LONG")     FidFieldName=getOIDField(outFeature)     arcpy.CalculateField_management(inFeature,YL_FID1, '!'+FidFieldName+'!', "YTHON")      FieldNames= FieldList.split(";")     for FieldName in FieldNames:         if not FieldExists(outFeature,FieldName):             inField=getField(byFeature,FieldName)             if inField:                 arcpy.AddField_management(outFeature,FieldName ,inField.type,inField.precision                                           ,inField.scale,inField.length,inField.AliasName)     num=len(FieldNames)     for i in range(num-1,-1,-1):#0需要循环的         FieldName=FieldNames[i]         #arcpy.AddMessage(u"FieldName"+FieldName+",i="+str(i))         pField=getField(outFeature,FieldName)         if not pField.editable or pField.type=="OID" or pField.type=="Geometry":             #arcpy.AddMessage(u"FieldName"+FieldName+",只读,删除")             FieldNames.pop(i)     FieldNames.append("OID@")     YL_FID2="YL_FID2"     if not FieldExists(byFeature,YL_FID2):         arcpy.AddField_management(byFeature,YL_FID2 ,"LONG")     FidFieldName=getOIDField(byFeature)     arcpy.CalculateField_management(byFeature,YL_FID2, '!'+FidFieldName+'!', "YTHON")       mytemp="in_memory/YL999888"     mysort="in_memory/YL999sort"     arcpy.AddMessage("TabulateIntersection================")     arcpy.TabulateIntersection_analysis(outFeature,YL_FID1,byFeature,mytemp,YL_FID2)     arcpy.AddMessage("TabulateIntersection")     arcpy.Sort_management(mytemp,mysort,YL_FID1+" ASCENDING;PERCENTAGE DESCENDING")     arcpy.AddMessage("Sort_management")     arcpy.DeleteIdentical_management(mysort, [YL_FID1])     arcpy.AddMessage("DeleteIdentical")     initProgress("update",num)      updatecursor=arcpy.da.UpdateCursor(outFeature, FieldNames)     scursor=arcpy.da.SearchCursor(mysort, [YL_FID1,YL_FID2,"PERCENTAGE"])      try:         srow=scursor.next()         Fieldnum=len(FieldNames)         k=1          for row in updatecursor:             step()             FID1=srow[0]             FID2=srow[1]             Scale=srow[2]             #arcpy.AddMessage("========{0},{1},{2}".format(FID1,FID2,Scale))              if Scale>minScale:                 row2= getrowbyFID(FieldNames,FID2)                  for i in range(Fieldnum-1):                     row[i]=row2[i]                  updatecursor.updateRow(row)             else:                 arcpy.AddMessage(u""+inFeature+"中FID="+str(FID1)+"最大比例"+str(Scale)+",找不到叠加比例大于"+str(minScale))                if k<=num:                 srow=scursor.next()             k=k+1         if FieldExists(byFeature,YL_FID2):             arcpy.DeleteField_management(byFeature,YL_FID2)         if FieldExists(outFeature,YL_FID1):             arcpy.DeleteField_management(outFeature,YL_FID1)         if updatecursor:             del updatecursor         if scursor:             del scursor     finally:          freeProgress()  arcpy.env.overwriteOutput = True   inFeature = arcpy.GetParameterAsText(0) #输入要素 byFeature = arcpy.GetParameterAsText(1) #依据的要素 FieldList = arcpy.GetParameterAsText(2) #字段列表 outFeature = arcpy.GetParameterAsText(3) #输出要素 minScale=arcpy.GetParameter(4) ##最小比例,如果是负值,取最大的 oidFieldNameby=getOIDField(byFeature) try:     Main() except Exception as e:     arcpy.AddError(e.message)
回复 支持 反对

使用道具 举报

1

主题

7398

铜板

1

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
443
发表于 2022-1-29 20:57 手机频道 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

2万

铜板

3

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2147
发表于 2022-1-30 16:47 | 显示全部楼层
谢谢提供分享!
回复 支持 反对

使用道具 举报

0

主题

2180

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
178
发表于 2022-1-31 08:56 | 显示全部楼层
谢谢分享
回复

使用道具 举报

37

主题

2万

铜板

111

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
5763
发表于 2022-2-3 14:26 | 显示全部楼层
谢谢分享,学习学习
回复 支持 反对

使用道具 举报

0

主题

2万

铜板

1

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3513
发表于 2022-2-4 09:27 | 显示全部楼层
将标注转换为注记
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表