【数据获取】1:25万全国基础地理公开数据库(水系、道路、村庄)下载整理
全国地理信息资源目录服务系统(http://www.webmap.cn/main.do?method=index)是自然资源部下属的数据平台,其中有很多非加密的共享数据可以为我们下载使用,本推文以1:25万的地理数据为例,分享数据获取的方法,以及数据批量合并的工具。
数据库主要分为4个大类,按照点线面来区分,每个大类下又分为至少两个小类。整体现势性为2015年;图层内容含水系(点、线、面层),公路、铁路(线层),居民地(点、面层),居民地地名(注记点),自然地名(注记点)等9类要素层。
1.进入下载界面,注册账号,登陆
有多种方式来确定范围,平时用的较多的是按照省份或者是框选的方式,其实这个选择的范围是不精确的,下载完之后数据还是需要用界线去裁剪,所以这里也不用纠结,大概框选区域就行,下面我以海南省的地理数据库信息为基础,为大家演示下载的过程。
2.选择海南省和下面出现的市行政区域
3.加入购物车,然后点击购物车
4.如实填写即可,获取验证码,然后得到需要下载的数据,如下图,即可下载了!!!
1.将数据解压到单独的文件夹,如下图,每个文件夹中都有相同名称的文件,要将所有文件夹中的同类文件合并
2.问题分析
如果放在从前已经打开python准备遍历文件夹,然后找到同名称的shp进行合并了,但是我最后的目的还是想做一个可以直接加载到arcgis中方便使用的工具,所以我决定用model builder试一下。大概分析一下有这样几个问题需要解决:
1.如何通过循环遍历所有文件夹
2.如何获得遍历各文件夹下的名称
3.合并的嵌套结构如何在model builder中表示出来
接下来我们来解决这些问题。
3.解决问题
通过遍历文件夹的方式来获得目录下每个文件夹的名称,而文件夹下有二级名称,可以直接通过定义路径的方式获得所有的要素类。
通过迭代空间的方式获得空间下文件夹的名称
通过计算值的方式获取到指定的要素类,我们以水体的面要素为例进行编辑,首先根据得到的文件名获取水体的要素
filename="F:\\图文编辑和教学\\推文\\10.10\\"+value+"\\"+value+"\\hyda.shp"
return filename
得到的文件需要与后面的迭代文件进行合并,而整个过程也不能够出现使用前面的数据和后面生成的数据一起合并,这种情况在python代码中比较好处理,但是 在model builder中属于比较难处理的一种问题。
所以仍然考虑用计算值的方式来求解,通过计算值和合并的结果产生关联,利用这种关联将合并之后的数据与迭代数据进行合并
通过计算值工具获得合并之后的结果
filename="C:\\Users\\yanza\\Documents\\ArcGIS\\Default.gdb\\c1_Merge_Copy"
return filename
在合并之后的结果上再进行循环,得到最后的模型
由于第一次迭代的时候合并的结果为空,没有该图层,所以需要事先生成一个指定位置的图层以防运行时出现错误!!!
大功告成,开始跑数据
部分区域还需要进一步完善,可能有的数据库并不一定有hyda的文件,因此选择的时候需要先探究其是否存在的问题,所以在计算值的时候需要用os.path.exists()函数来确定文件是否存在,如果存在,就输出该文件,如果不存在就用一个空的文件代替进行合并即可,修改计算值的代码如下
import os
filename = "F:\\图文编辑和教学\\推文\\10\\" + value + "\\" + value + "\\hyda.shp"
filename1 = "C:\\Users\\yanza\\Documents\\ArcGIS\\Default.gdb\\c1_Merge_Cop" '此为空文件
if os.path.exists(filename):
return filename
else:
return filename1
合并的工具我将放在微信公众号元凿坊工作室的后台,回复“合并工具”供大家下载,后面有时间会再整理一下这个将其做成一个小工具的形式。如果大家有制作arcgis小工具方面的需求可以关注淘宝小店元凿坊工作室,谢谢大家的关注。
精选推文阅读
点下方“在看”,给点助力把!!!1