
关注我的微信公众号和

关注我的今日头条

#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()