在CAD测绘图中,建筑有外轮廓以及文字标注,可以通过arcgis进行提取并分析出建筑的结构、层数、面积以及简单的质量分析。
成果展示
数据准备
带文字标注的建筑轮廓CAD
一般的CAD地形图中,建筑都带有标注文字,有建筑结构和层数的信息,符合要求。
工作流程
该方法用到了3个工具,所在工具箱路径如下:
【空间连接】(【分析工具】—【叠加分析】—【空间连接】)
【添加字段】(【数据管理工具】—【字段】—【添加字段】)
【计算字段】(【数据管理工具】—【字段】—【计算字段】)
1)空间连接
2)添加字段
按顺序添加4个新字段【建筑结构、建筑层数、建筑面积、建筑质量】,其中建筑结构和建筑质量的数据类型为【TEXT】,建筑层数为【SHORT】或【LONG】,建筑面积为【DOUBLE】。
3)计算字段【建筑结构】
提取【Txtmemo】字段(也可以是【Text】字段)的第1个字作为结构。
代码块1如下:
!TxtMemo![:1]
4)计算字段【建筑层数】
提取【Txtmemo】字段的第1个字后的文字,作为层数,如果取值结果为空,就赋值为1。
代码块1如下:
def ss(a):
if len(a)>1:
return int(a[1:])
else:
return 1
代码块2如下:
ss( !TxtMemo! )
5)计算字段【建筑面积】
基底面积 * 层数 即为建筑面积。
代码块1如下:
!Shape_Area! * !建筑层数!
6)计算字段【建筑质量】
【建筑质量】的计算这里只通过建筑结构和层数提供一个简单的判断,想要得出准确的结果,需要更详细的资料,这里就不详述,只是提供一个思路。
代码块1如下:
def ss(a,b):
if a==u'混' and b>1:
return '质量较好'
elif a==u'混' or a==u'砖':
return '质量一般'
else:
return '质量较差'
代码块2如下:
ss( !建筑结构! , !建筑层数! )
TIPS
- 上面的示例数据,建筑的标注文字经过整理,删除或修改了一些不规范的文字,最终的结果文字如:【混、混4、砖、木、砖2、简……】。如果出现CAD文字是炸开的情况,或者连接后出现【混7混、R2、2砖……】等情况,后续的建筑结构、建筑层数就不能正确计算。要解决这些问题,需要用到【空间连接】工具参数的调整以及python的【正则表达式】,具体参看:Arcgis小技巧【4】——【空间连接】工具如何连接炸开的文字
https://blog.csdn.net/xcc34452366/article/details/128329834?spm=1001.2014.3001.5502
- 计算字段时,脚本语言要选择【python】。系统默认是【VB】,要注意。
- 代码里除了中文字符,其它的输入,特别是符号,一定要在英文状态下输入,很重要。