加载CAD文件

24 篇文章 0 订阅
23 篇文章 0 订阅
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')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值