ArcGIS Pro python生成界址點



關注我的微信公眾號和

關注我的今日頭條

#
coding: UTF-8 import arcpy import os import types import string import shutil import sys import re def initProgress(hint,num): arcpy.SetProgressor("step", hint,0,num,1) def step(): arcpy.SetProgressorLabel(u"waiting....") arcpy.SetProgressorPosition() def freeProgress(): arcpy.ResetProgressor() 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 getLayer(layername): layername=layername.upper() mxd = arcpy.mapping.MapDocument("CURRENT") try: for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name.upper()==layername: return lyr return None finally: del mxd ### def midFill(sumn,mystr,Fill): n=getlength(mystr) if n>=sumn: return mystr leftn=int((sumn-n)/2) s="" lefts=s.ljust(leftn,Fill) s="" rightn=sumn-n-leftn rights=s.ljust(rightn,Fill) return lefts+mystr+rights #獲得一個表的記錄數 def getCount(inFeature): result = arcpy.GetCount_management(inFeature) count= int(result.getOutput(0)) return count def clearSelect(inFeature): mylyr="mylyr" arcpy.MakeFeatureLayer_management (inFeature, mylyr) arcpy.SelectLayerByAttribute_management (mylyr, "CLEAR_SELECTION") #把內多邊形,分解出來 def splitNgeometry(mgeometry): num=mgeometry.count Sumarray = arcpy.Array() parray = arcpy.Array() for i in range(num): pt=mgeometry[i] if pt: parray.add(pt) else:#內邊形 Sumarray.add(parray) parray.removeAll() Sumarray.add(parray) return Sumarray def getJZDH(pgeometry,StartChar): """mylayer="mylayer" arcpy.MakeFeatureLayer_management(JZDFeature, mylayer) arcpy.SelectLayerByLocation_management (mylayer, 'intersect',pgeometry ) num=getCount(mylayer) if num>0: return """ cur = arcpy.da.InsertCursor(JZDFeature,[JZDHFieldName,"SHAPE@"]) cur.insertRow((StartChar, pgeometry)) if cur: del cur #獲得點的距離 def pointDistance(pt1,pt2): return math.sqrt((pt1.X-pt2.X)*(pt1.X-pt2.X)+(pt1.Y-pt2.Y)*(pt1.Y-pt2.Y)) def CreateOneJZD(partgeometry,StartChar): num = partgeometry.count-1 global sumidx for i in range(num): pt = partgeometry[i] pointGeometry = arcpy.PointGeometry(pt) JZDH=getJZDH(pointGeometry,StartChar+str(sumidx)) sumidx=sumidx+1 def CreateJZD(geometry,StartChar): part_count = geometry.partCount # 有幾部分 pointcount=geometry.pointCount Sumarray = arcpy.Array() for i in range(part_count): partgeometry=geometry.getPart(i) SpliArray=splitNgeometry(partgeometry) N=SpliArray.count #arcpy.AddMessage("NNNNN=====:"+str(N)) for j in range(N): Splitgeometry=SpliArray[j] CreateOneJZD(Splitgeometry,StartChar) def getchar(idx): return chr(idx) def main(): num=getCount(ZDFeature) if num<1: arcpy.AddMessage(u"宗地沒有數據") return global sumidx clearSelect(JZDFeature) idx=1 arcpy.management.DeleteFeatures(JZDFeature) for row in arcpy.da.SearchCursor(ZDFeature, ["OID@", "SHAPE@"]): FID=row[0] pgeometry=row[1] StartChar="J" arcpy.AddMessage("BHMode:"+BHMode) if (not BHMode.endswith("J1,J2,J3,")): sumidx=1 if (BHMode.endswith(",JB2,JB3")): StartChar=StartChar+getchar(idx+64) arcpy.AddMessage("=============" + StartChar) arcpy.AddMessage("宗地FID:"+str(FID)) CreateJZD(pgeometry,StartChar) idx=idx+1 def printauthor(toolname): titlestr="" sumn=60 Fill='*' titlestr=titlestr.ljust(sumn,Fill) arcpy.AddMessage(titlestr) arcpy.AddMessage(midFill(sumn,u"歡迎使用:"+toolname,Fill)) mystr=u"本工具閆磊編寫QQ:276529800,電話:18987281928" arcpy.AddMessage(midFill(sumn,mystr,Fill)) mystr=u"使用前請做好數據備份,工具產生的不良后果請自行承擔!" arcpy.AddMessage(midFill(sumn,mystr,Fill)) arcpy.AddMessage(titlestr) ZDFeature = arcpy.GetParameterAsText(0) #宗地 JZDFeature=arcpy.GetParameterAsText(1) #輸出數據 JZDHFieldName=arcpy.GetParameterAsText(2) #界址點號字段 BHMode=arcpy.GetParameterAsText(3) #編號 FX=arcpy.GetParameter(4) #方向 sumidx=1 arcpy.env.overwriteOutput=True #printauthor(u"部標准坐標導入") main() #arcpy.RefreshActiveView()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM