import os,arcpy
from arcpy import env
def flatten(nested):
try:
for sublist in nested:
for element in nested:
yield element
except TypeError:
yield nested
env.overwriteOutput=True
path=''
env.workspace=path
#新建文件地理数据库
out_gdb_path='BJData.gdb'
fgdblst=arcpy.ListWorkspaces('*','FileGDB')
if fgdblst:
for db in arcpy.ListWorkspaces('*','FileGDB'):
fname=os.path.basename(db)
if fname==out_gdb_path:
print(out_gdb_path+'already exists!')
else:
arcpy.CreateFileGDB_management(path,out_gdb_path)
else:
arcpy.CreateFileGDB_management(path,out_gdb_path)
out_dataset_name='analysisresults'
reference_scale='1000'
for fd in arcpy.FistFiles('*.dwg'):
arcpy.CADToGeodatabase_conversion(fd,out_gdb_path,fd[:-4],reference_scale)
workspace=path+'\\'+out_gdb_path
env.workspace=workspace
polygonlst=[]
for dirpath,dirnames,filenames in arcpy.da.Walk(workspace,datatype='FeatureClass',type='Polygon'):
for filename in filenames:
geometries=arcpy.CopyFeatures_management(filename,arcpy.Geometry())
#将地理处理工具的输出参数设置为空 Geometry 对象时,该工具将返回 Geometry 对象列表
polygonlst.append(geometries)
FPoint=list(flatten(polygonlst))[0]
pointGeometry=arcpy.PointGeometry(FPoint)
if arcpy.Exists(workspace+'\\'+'FPoint'):
print('Data exists')
else:
arcpy.CopyFeatures_management(pointGeometry,workspace+'\\'+'FPoint')
CCoordiX=116.369544
CCoordiY=40.005164
TCoordiX=FPoint.X-CCoordiX
TCoordiY=FPoint.Y-CCoordiY
S=[]
multip=[]
for pc in polygonlst:
for spc in pc:
spcp=list(flatten(spc))
for coordis in spcp:
point=arcpy.Point()
point.X=coordis.X-TCoordiX
point.Y=coordis.Y-TCoordiY
S.append(point)
multip.append(S)
S=[]
M=[]
for arrayp in multip:
New=arcpy.Polygon(arcpy.Array(arrayp),path+'\\'+'WGS 1984.prj')
M.append(New)
arcpy.CopyFeatures_management(M,workspace+'\\'+'BlockM')
加载CAD文件
最新推荐文章于 2024-05-08 15:44:02 发布