
關注我的微信公眾號和

關注我的今日頭條

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