各位微信公众号朋友,大家好!GIS数据小达人上线了,小编长期从事于GIS数据处理工作,在深圳某甲级测绘资质公司厮混,工作与规划国土测绘相关(天天跟图斑打交道,外号图斑小王子)。喜欢钻研一些GIS相关的技术,数据库啊,ArcGIS,python都会一点点(其实就是菜鸟啊)。所以呢,这个公众号主要就是分享工作中的一些小技巧,与行业相关的朋友交流学习(各路高手轻拍啊)。
今天介绍一下如何快速从属性表中选出列数据。在ArcMAP中,如果想把某列感兴趣的数据复制出来,ArcMap的属性表不支持直接选中复制。一般来说,如果有规律(比如某个字段值一样)可以通过定义查询,然后通过属性表的EXPORT功能导成txt或者excel格式的数据。现在介绍一个利用快捷的方法只通过ArcMAP(版本要求10.1以上)的python命令行就直接解决。
如下图,高亮部分,这是感兴趣的这一排学校的建筑,现在想快速把这列的BLDG_NO字段的信息提取出来。
步骤如下:
通过Create Layer From Selected Features选出这17条数据并形成一个单独层。
通过python命令行,利用arcpy的游标和for循环,直接将这列数据倒出来。
下面是直接从Python命令行复制出来的数据。
>>> cur = arcpy.SearchCursor("建筑 selection")
>>> for row in cur:
... print(row.getValue('BLDG_NO'))
...
4403070120041600075
4403070120041600068
4403070120041600104
4403070120041600061
4403070120041600065
4403070120041600064
4403070120041600071
4403070120041600084
4403070120041600063
4403070120041600083
4403070120041600069
4403070120041600067
4403070120041600062
4403070120041600070
4403070120041600100
4403070120041600109
当然,朋友们可能会问小编啦,这有什么用?下面通过一个实例告诉大家这个的方便之处。
我想查出这些这片建筑的业务信息,比如建筑物基本属性信息,建筑用地信息,建筑物面积信息,并在影像上初步核对。
只要简单的修改一下代码,就可以直接复制到业务层的定义查询器中使用啦。
代码:
>>> del cur
>>> cur = arcpy.SearchCursor("建筑 selection")
>>> for row in cur:
... print("'"+row.getValue('BLDG_NO')+"',")
...
'4403070120041600075',
'4403070120041600068',
'4403070120041600104',
'4403070120041600061',
'4403070120041600065',
'4403070120041600064',
'4403070120041600071',
'4403070120041600084',
'4403070120041600063',
'4403070120041600083',
'4403070120041600069',
'4403070120041600067',
'4403070120041600062',
'4403070120041600070',
'4403070120041600100',
'4403070120041600109',
实际效果如下图:
对应到其他层,只要将这个建筑物面积信息基本表的定义查询的代码复制到相应的业务层即可,怎么样,这个方法可以吧!
领取专属 10元无门槛券
私享最新 技术干货