写在前面
我是一个Acgis小白,写这篇博客是为了记录完成过程,如果有更高效的办法欢迎分享~ 我用的是Arcgis10.2。
需求描述
目前已有意大利的shp文件,希望将意大利划分成0.1*0.1经纬度的栅格,并且关联每个栅格中心点所属的省份信息。最终希望得到的输出是一个表格,里面包含栅格的经纬度、所属省份信息。
PS. 安利一个下载全球shp文件的好用的网址(https://www.diva-gis.org/gdata)。
问题分析
要实现我上面的操作,需要把整个过程拆分成如下步骤:
- 导入意大利的省级shp文件(这是面数据);
- 将shp文件转为栅格(面数据 转 栅格数据);
- 将栅格数据转为点数据(这样才能得到经纬度);
- 给点数据增加经纬度信息;
- 将面数据和点数据进行关联;
- 将数据导出为表格。
1、导入意大利的省级shp文件(这是面数据);
步骤略。
2、将shp文件转为栅格(面数据 转 栅格数据);
首先,打开工具箱
找到转换工具->转为栅格->面转栅格
输入要素就是第一步导入的shp图层
然后就可以得到转为栅格的数据,如下
3、将栅格数据转为点数据(这样才能得到经纬度);
因为栅格数据的经纬度是一个范围,为了得到栅格中心点的经纬度,就需要把栅格转成点。
转换工具->由栅格转出->栅格转点
这一步的数据就是上一步得到的栅格图层
这样就可以得到点数据了,如下:
4、给点数据增加经纬度信息;
打开“点图层”的属性表格
可以发现面数据已经被转成了3308个点,但是这些点的经纬度信息还没有,这需要我们人为添加。
下面添加两个字段,分别是"lat"和“lon”,添加方法如下。值得注意的就是,数据类型需要选“双精度”。
字段添加完毕后,右击列名,选择“计算几何“,便可以得到经纬度。需要注意的是,lon对应X坐标,lat对应Y坐标。
通过上述操作,就可以得到每个点的经纬度了。
5、将面数据和点数据进行关联;
右击“点”图层->连接和关联->连接。
这样就可以得到一个关联后的点图层,如下:
打开这个图层的属性表,可以发现,既有经纬度信息,又有行政区划信息。
6、将数据导出为表格。
接下来导出数据就大功告成了!
导出数据一共有三种方法,这里都介绍一下吧。
方法一:复制粘贴大法。
直接ctrl A + ctrl C + ctrl V 当然是不行的。这样只能复制表格中一个cell的信息。
正确的打开方式是先对表格进行全选,然后对着空白处右键,选择“复制所选项”。
然后在本地新建一个空白的excel,直接粘贴进去即可。
这个方法适合数据量不是很多的情况,如果数据量太多,就会卡死。
方法二:转换工具大法。
打开工具框,找到“转换工具”->Excel->表转Excel。
这个方法有一个限制,就是行数超过65535就会导出失败。
方法三:DBF大法。
打开属性表,选择“导出”,这里的数据格式是dbf。
把文件导出后,dbf后缀直接改成csv,就可以用excel打开表格了。
这个方法适用于数据量特别大的情况。如果遇到如下问题:
可以把导出的数据类型改成txt,然后再用Python或什么方法,txt转成excel吧。
大功告成!
最后,感谢我的导师,今天中午他在百忙之中教会了我上面的操作,希望这个博客可以帮到更多需要的人,感恩!