利用ArcGis内置Python函数将cad图转为shape文件

322 阅读1分钟

第一步:将CAD图转为gdb地理数据库

import arcpy
import os
import argparse
import time
def parse_args():
  parser = argparse.ArgumentParser()
  parser.add_argument('--workspace', type=str, default='D:/Desktop/data', help=u'输入工作空间')
  parser.add_argument('--input_cad_dataset', type=str, default='D:/Desktop/CAD/text.dwg', help=u'输入CAD文件路径')
  parser.add_argument('--out_gdb_path', type=str, default='D:/Desktop/data/text.gdb', help=u'输入地理数据库输出路径')
  parser.add_argument('--out_dataset_name', type=str, default='text', help=u'输入数据集')
  parser.add_argument('--reference_scale', type=str, default='1000', help=u'输入转换比例')
  parser.add_argument('--output_shp_path', type=str, default='D:/Desktop/output', help=u'输入shape文件输出路径')

  argument_namespace = parser.parse_args()
  return argument_namespace

argument_namespace = parse_args()
# Set workspace
arcpy.env.workspace = argument_namespace.workspace
# Set local variables
input_cad_dataset = argument_namespace.input_cad_dataset
out_gdb_path = os.path.join(argument_namespace.workspace, 'text.gdb')
out_dataset_name = argument_namespace.out_dataset_name
reference_scale = argument_namespace.reference_scale
# Create a file geodatabase for the feature dataset
arcpy.CreateFileGDB_management(argument_namespace.workspace, "text.gdb")
# Execute CreateFeaturedataset
print(u'开始转换地理数据库')
arcpy.CADToGeodatabase_conversion(input_cad_dataset, out_gdb_path, 
                                  out_dataset_name, reference_scale)
time.sleep(2)
print(argument_namespace.out_gdb_path + u' 地理数据库转化成功!')

第二步:将地理数据库转为导出为shape文件

import arcpy
import os
import argparse
import time
def parse_args():
  parser = argparse.ArgumentParser()
  parser.add_argument('--workspace', type=str, default='D:/Desktop/data', help=u'输入工作空间')
  parser.add_argument('--input_cad_dataset', type=str, default='D:/Desktop/CAD/text.dwg', help=u'输入CAD文件路径')
  parser.add_argument('--out_gdb_path', type=str, default='D:/Desktop/data/text.gdb', help=u'输入地理数据库输出路径')
  parser.add_argument('--out_dataset_name', type=str, default='text', help=u'输入数据集')
  parser.add_argument('--reference_scale', type=str, default='1000', help=u'输入转换比例')
  parser.add_argument('--output_shp_path', type=str, default='D:/Desktop/output', help=u'输入shape文件输出路径')

  argument_namespace = parser.parse_args()
  return argument_namespace

argument_namespace = parse_args()
out_gdb_path = os.path.join(argument_namespace.workspace, 'text.gdb')
print(u'转换shp')
arcpy.env.workspace = out_gdb_path
datasets = arcpy.ListDatasets(feature_type='feature')
output_shp_path=argument_namespace.output_shp_path
out_annotation=os.path.join(output_shp_path, 'Annotation')
for ds in datasets:
    for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
        path = os.path.join(arcpy.env.workspace, ds, fc)
        outfc = arcpy.ValidateTableName(fc)
        if outfc != 'Annotation':
            arcpy.FeatureClassToShapefile_conversion(outfc, output_shp_path)
        if outfc == 'Annotation':
            arcpy.FeatureToPoint_management(outfc, out_annotation)
            print(out_annotation + u' 标注转化成功!')
time.sleep(2)
print(u'转换完成')

第三步:利用ArcGis中Python模块打开或者利用命令行调用ArcGis的Python环境打开

cmd /k "cd /d D:/Python27/ArcGIS10.2 && python D:/Desktop/cadToGdb.py && python D:/Desktop/annToShape.py && python D:/Desktop/gdbToShape.py