基于python&arcpy的批量CAD/dwg文件转shp/shapefile

前言

在将多个CAD图纸合并到一张图上,或者实现图形的数据库管理时,往往会面临数据坐标转换和格式转换的问题,当前主流是统一用shapefile或者gdb地理数据库等方式进行管理。
CAD转shapefile有很多种方式,以下方法基于ArcGIS的arcpy工具包进行,可以实现批量CAD文件转gdb或者shp格式。

算法流程

arcpy是ArcGIS的python工具包,如果电脑有安装ArcGIS或者ArcGIS Pro,在默认安装路径下有安装arcpy,python运行的时候选择ArcGIS安装的python程序运行。

ArcGIS提供help文档链接:
https://pro.arcgis.com/zh-cn/pro-app/2.6/tool-reference/conversion/cad-to-geodatabase.htm

具体流程是先将CAD文件(格式为dwg)导入创建的地理数据库中,然后将地理数据库的文件导出成shapefile文件,调用的arcpy的主要函数为:
CreateFileGDB_management(创建地理数据库)
CADToGeodatabase_conversion(CAD导入地理数据库)
FeatureClassToShapefile_conversion(导出成shapefile)

在这里插入图片描述

import arcpy
import os

# 自定义输入文件路径
defaultpath=r"D:\03程序开发小工具"
# 输入CAD文件名称
CADname='test'
# 定义工作空间
arcpy.env.workspace = defaultpath
# CAD文件路径
input_cad_dataset =os.path.join(defaultpath,'cad',CADname+'.dwg')
# gdb文件路径
out_gdb_path = os.path.join(defaultpath,'gdb',CADname+'.gdb')
# 要素集文件名称
out_dataset_name = CADname
# CAD转shp坐标比例
reference_scale = "1"
# 先创建一个gdb地理数据库
arcpy.CreateFileGDB_management(os.path.join(defaultpath,'gdb'), CADname+'.gdb')
# 将CAD文件导入到gdb地理数据库,新建一个要素集
arcpy.CADToGeodatabase_conversion(input_cad_dataset, out_gdb_path, out_dataset_name, reference_scale)

# 切换工作空间到gdb中
arcpy.env.workspace = out_gdb_path
# 获取gdb中的文件列表
datasets = arcpy.ListDatasets(feature_type='feature')
# 输入shp文件的保存路径
output_shp_path=os.path.join(CADname+defaultpath,'shp')

datasets = [''] + datasets if datasets is not None else []
# 获取每个地理数据库中的要素集
for ds in datasets:
    for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
        path = os.path.join(arcpy.env.workspace, ds, fc)
        # print(path)
        outfc = arcpy.ValidateTableName(fc)
        # print(outfc)
        # 将要素集里的要素转为shp文件
        arcpy.FeatureClassToShapefile_conversion(outfc, output_shp_path)

至此,就生成了从CAD转shp的代码,但是转换后的shp是没有定义坐标系的,根据CAD的坐标进行坐标系的定义。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用Pythonarcpy批量将表格换为Excel文件,可以使用以下代码作为参考: ```python import arcpy from arcpy import env # 设置工作空间 arcpy.env.workspace = "E:/01" arcpy.env.overwriteOutput = True # 设置输出Excel文件夹路径 OutputFeatures = "E:/02" # 获取所有的表格文件 ta_features = arcpy.ListFiles("*.dbf") # 遍历每个表格文件并进行换 for filename in ta_features: print("Processing:", filename) dbffile = arcpy.env.workspace + "/" + filename outFeatures = OutputFeatures + "/" + filename[:-4] arcpy.TableToExcel_conversion(dbffile, outFeatures + ".xls", Use_field_alias_as_column_header="ALIAS", Use_domain_and_subtype_description="CODE") ``` 以上代码首先设置了工作空间和输出Excel文件夹路径。然后使用`arcpy.ListFiles`获取所有的表格文件,然后遍历每个文件,使用`arcpy.TableToExcel_conversion`将表格文件换为Excel文件换后的Excel文件将保存在指定的输出文件夹中。 希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python实现table批量成Excel](https://blog.csdn.net/qq_38281942/article/details/107039292)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python学习—使用arcpy将excel批量table表,并进一步将tableshp格式](https://blog.csdn.net/weixin_43416590/article/details/124840053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值