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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2012-06-29 ArcGISEngine实现图层输出kml