admin管理员组文章数量:1565807
Arcpy读取CAD软件dwg、dxf等格式数据,转换geojson
code
import os
import sys
import uuid
import arcpy
# 获取当前脚本的物理路径
def getScriptDirectory():
script_path = os.path.abspath(__file__)
script_directory = os.path.dirname(script_path)
script_directory = script_directory.replace('\\', '/')
c= script_directory[-1]
if script_directory[-1] != '/':
script_directory += '/'
return script_directory
# 检查目录,若不存在则创建
def checkDir(dir):
if not os.path.exists(dir):
os.makedirs(dir)
# 工作目录
ws = getScriptDirectory()
uid = str(uuid.uuid4())
# 临时目录
tmp_path = ws + 'tmp/' + uid + '/'
checkDir(tmp_path)
out_gdb_name = 'out.gdb'
out_gdb_path = tmp_path + out_gdb_name
def dwg2gdb(input_dwg_file, out_gdb_path, spatial_reference):
arcpy.CreateFileGDB_management(tmp_path, out_gdb_name)
ds = arcpy.conversion.CADToGeodatabase(input_dwg_file, out_gdb_path, 'out_ds', 1000, spatial_reference)
return str(ds).replace('\\', '/')
def filter_layer(dataset, out_gdb):
polygon_classes = dataset + '/Polygon'
f1 = 'Layer = \'拆迁房屋\''
f2 = 'Layer = \'临迁房屋\''
f3 = 'Layer = \'临时借地\''
f4 = 'Layer = \'永久征地\''
out_f1 = 'chai_qian_fang_wu'
out_f2 = 'lin_qian_fang_wu'
out_f3 = 'lin_shi_jie_di'
out_f4 = 'yong_jiu_zheng_di'
arcpy.conversion.FeatureClassToFeatureClass(polygon_classes, out_gdb, out_f1, f1)
arcpy.conversion.FeatureClassToFeatureClass(polygon_classes, out_gdb, out_f2, f2)
arcpy.conversion.FeatureClassToFeatureClass(polygon_classes, out_gdb, out_f3, f3)
arcpy.conversion.FeatureClassToFeatureClass(polygon_classes, out_gdb, out_f4, f4)
out_classes = [
out_gdb + '/' + out_f1,
out_gdb + '/' + out_f2,
out_gdb + '/' + out_f3,
out_gdb + '/' + out_f4,
]
return out_classes
def dwg2geojson(input_dwg_file, out_path, dwg_sr):
ds = dwg2gdb(input_dwg_file, out_gdb_path, dwg_sr)
out_classes = filter_layer(ds, out_gdb_path)
checkDir(out_path)
all_success = True
for fc in out_classes:
fc_name = os.path.basename(fc)
out_json_file = out_path + fc_name + '.geojson'
try:
arcpy.conversion.FeaturesToJSON(fc, out_json_file, 'FORMATTED', 'NO_Z_VALUES', 'NO_M_VALUES', 'GEOJSON', 'KEEP_INPUT_SR', 'USE_FIELD_NAME')
print(out_json_file)
except Exception as ex:
all_success = False
print('fail:' + str(ex))
if all_success:
print('complete')
else:
print('error')
if __name__ == "__main__":
# dwg_file = sys.argv[1]
dwg_file = r'D:\file\production\Py\data\dwg\testdwg.dwg'
sr = arcpy.SpatialReference(4326)
dwg2geojson(dwg_file, tmp_path, sr)
output
版权声明:本文标题:Arcpy读取CAD软件dwg、dxf等格式数据,转换geojson 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727535426a1119861.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论