ArcGisPro脚本工具【6】——湘源画的规划用地CAD带指标导入ArcGIS数据库

文章介绍了如何利用Arcpy脚本工具和ArcGISPro2.8.6中的Data_Interoperability组件,结合FME来处理湘源软件画的规划用地数据,包括导入地块内线和保留各种规划指标。主要工具是AttributeExposer,用于暴露地块隐藏属性。文章提供了FME工具的使用方法和脚本工具的编写思路,强调了输入用地CAD的清理和转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次Arcpy脚本工具用的是ArcGisPro2.8版本,尽量使用同一版本,其它版本可以参照。

混进有

工具介绍

城规专业一般都使用湘源软件画规划用地图。现在很多工作都转入ArcGIS中,但是传统画的用地图想要完美转成数据库文件是比较麻烦的,比如:

1、有地块内线的用地怎么导入?

2、规划用地中的各种指标,如【容积率、建筑密度、绿地率、建筑限高……】,如何保留?

第2点是最难的。比较笨的办法是把这些指标编辑成文字,然后通过【空间连接】工具连接到地块上,但是这样明显太笨了,于是就有了这个工具。

这个工具不是简单用脚本就能解决的,需要用到ArcGIS Pro安装包全家桶里的【Data_Interoperability】。

这里分享一下我使用的ArcGIS Pro 2.8.6的安装包,里面有Data_Interoperability。安装好后,就相当于给ArcGIS Pro安装了一个FME组件。FME有的人可能知道,是数据处理的超级软件,有兴趣的可以上网学习一下。

ArcGIS_Pro_2.8.6安装包https://pan.baidu.com/s/1H_j_incqFLjghN5UQLHZWQ?pwd=rkeu

工具结构

工具主要是用FME写的,FME工具怎么写的这里就不多做介绍,只说明一下主要思路。有FME基础的人听得懂就行,没用FME的人,直接调用这个写好的工具,也不必深究。后面有机会专门讲一讲FME的用法。

这里最主要的工具是【AttributeExposer】,暴露地块的隐藏属性,可以把指标等各种属性暴露出来。后续就是字段整理,以及计算各类指标。

FME工具写好后,可以在ArcGIS Pro新建一个空间ETL工具。

在工具属性里,设置【工作空间】为你刚写好的FME工具。这相当于直接调用了这个FME工具。

但是由于FME工具在参数方面有些小问题,比如参数标签不能用中文,输出参数必须先指定数据库,再指定要素名称等等....用起来不太习惯。于是我新建了一个脚本工具,然后在脚本里调用FME工具,一切就变得熟悉了起来。

最后要调用的工具是这个:

其它文件也是有用的,不要删掉(测试用的cad可删)

最终参数有3个。 

1、【输入用地CAD】——湘源画的规划用地。这里需要重点说明的一点是。不管是ArcGIS还是FME,都是按【面】来认用地要素的。FME更优秀的一点是可以认【填充图案】。但是湘源画的用地是一种特殊的自定义块,正常情况下不管是ArcGIS还是FME都不能读取。所以我们需要把用地炸开,只取填充图案。

炸开后,我们会发现指标等隐藏属性已经不见了。这没关系,其实是还在的,进了FME就可以看到了。

最后一件重要的事情:用来输入的规划地块,即【填充图案】一定要干净,如果含有其它无关的要素导入进处理,是大概率会出错的。这里推荐一种方法,隔离用地图层,选择炸开后的用地,用【w】命令,写块写出一个新文件,用这个新文件作为输入地块。

2、【输入人均居住面积】——这是用来计算人口、停车位数量的参数。默认是45,这个可以根据当地实际情况调整,或者在输出结果后再修改指标,都可以,不重要。

3、【输出用地要素】——输出结果的用地要素。

脚本编写

主要思路

由于主要工具是FME写的,所以脚本里的代码只是基本的一些框架代码。

完整代码如下:

import arcpy
import os

# 获取文档位置
default_path = os.path.dirname(__file__)
arcpy.ImportToolbox(default_path + r"\cc工具箱.tbx")  # 加载cc工具箱

input_cad = arcpy.GetParameterAsText(0)     # 输入用地cad文件
pp_area = arcpy.GetParameter(1)              # 输入人均居住面积
output_fc = arcpy.GetParameterAsText(2)     # 输出用地要素

# 获取参数
gdb_FME = default_path + r'\FME导出.gdb'  # 临时FME导出gdb

# cad用地导入gdb
def cad2gdb():
    arcpy.AddMessage(r'——————————cad用地导入gdb——————————' )
    # 判断数据库里是否已经有存在同名要素【如果有则清除】
    fc = gdb_FME + r'\FME导出用地'   # 设置一个中间数据
    if arcpy.Exists(fc):
        arcpy.Delete_management(fc)
    # 使用FME工具【FMEcad2gdb】
    arcpy.cc.FMEcad2gdb(input_cad, gdb_FME, r'FME导出用地', pp_area)
    arcpy.AddMessage(r'——————————复制到目标gdb——————————')
    # 复制到目标gdb
    arcpy.CopyFeatures_management(fc, output_fc)

if __name__ == '__main__':
    cad2gdb()

结果展示

最终生成结果如下:

这里我对一些指标结果作了一些修正,比如绿地率有上下限,结果就是【10-20】这样的,如果是工业用地,建筑密度结果就是【建筑系数≥40%】之类的。如果想修改结果表达也没问题,我把原始的指标也按字段保留了下来,可以自己修正。

工具下载

最后,贴上工具下载地址:

工具下载:CAD用地带指标导入ArcGIS数据库https://pan.baidu.com/s/1SJpl31KfLU5z6mlKrL2DAw?pwd=p55o

FME CAD转GDB是指在FME软件中将CAD(计算机辅助设计)文件格式转换为GDB(地理数据库)文件格式。 首先,FME软件是一种强大的数据转换和集成工具,可以处理各种不同的数据格式。CAD文件是一种常见的设计文件格式,用于创建和编辑图形和设计元素。而GDB文件是一种用于存储地理数据的文件格式,通常由地理信息系统(GIS)软件使用。 在FME中进行CAD转GDB的过程包含以下几个步骤: 1. 导入CAD文件:通过FME中的CAD阅读器,将CAD文件导入到FME的工作空间中。 2. 数据转换:使用FME中的转换器和处理器,将CAD数据转换为GDB数据模型。这可能涉及到属性映射、几何转换以及数据清洗等操作,以确保数据的准确性和一致性。 3. 转换参数设置:根据需要,可以通过FME的参数设置来调整转换过程中的各种参数,如坐标系统转换、属性规则、拓扑检查等。 4. 导出GDB文件:使用FME的GDB写入器,将转换后的数据保存为GDB文件格式。在此过程中,可以选择性地创建数据集、要素类和属性表等。 通过FME进行CAD转GDB的优势在于它的灵活性和功能强大性。FME提供了丰富的数据转换和处理功能,可以处理大量的数据和各种数据格式。此外,FME还支持自动化工作流和批量处理,使得大规模数据转换变得更加高效和便捷。 总之,使用FME软件进行CAD转GDB可以帮助用户将CAD文件转换为与GIS软件兼容的GDB文件,以便在地理信息系统中进行分析、查询和可视化等操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值