国内行政区划数据的获取方法总结
点击左上方蓝色字体“慧天地”即可订阅
(点击图片可放大观看,更多精彩请留意文末推荐)
01
官网获取矢量数据
全国地理信息资源目录服务系统
网址:
http://www.webmap.cn/main.do?method=index
全国1:100万基础地理数据覆盖全国陆地范围和包括台湾岛、海南岛、钓鱼岛、南海诸岛在内的主要岛屿及其临近海域,共77幅1:100万图幅,该数据整体现势性为2015年。数据采用2000国家大地坐标系,1985国家高程基准,经纬度坐标。
数据内容含行政区(面),行政境界点(领海基点),行政境界(线),水系(点、线、面),公路、铁路(点、线),居民地(点、面),居民地地名(注记点),自然地名(注记点)等12类要素层。
进入网站,选择 【数据下载]】-> 【1:100万全国基础地理数据库】,即可进行查询。只有注册后的用户可以免费下载数据且不限制下载量,同时建议下载数据者仔细阅读该网站的《全国地理信息资源目录服务系统服务条款》。
02
官网获取标准地图
自然资源部(测绘地理信息)
网址:http://www.nasg.gov.cn/
进入网站,在网页最底端找到【地方测绘地理信息部门网站】,选择相应的名称即可进入其网站,见下图。也可直接百度其网址。
以江苏省为例,进入其测绘地理信息局网站,选择【政务之窗】->【专项服务】->【标准地图服务】,见下图。即可下载所需的栅格地图。后期可以根据此图进行矢量化,就可以得到相应的矢量数据啦~
03
官网查询相关数据
全国行政区划信息查询平台
网址:http://xzqh.mca.gov.cn/map
这里小编给大家主要介绍全国行政区划信息查询平台。除该平台以外,百度地图、天地图等电子地图平台也都提供了行政区浏览的功能,不再详述。
进入网站,就可以看到行政区划的电子地图,同时地图下方可以查看其属性信息,具体有地名、驻地人口、面积、行政区划代码、区号和邮编这些信息。以南京市为例,见下图。
04
地图API获取矢量数据
百度地图目前支持全国所有省市(台湾除外)的展现和poi搜索、导航服务。由于地图api的更新频率和百度官方在线地图服务更新频率一致。保持全国数据季度级更新,局部数据实时更新。目前百度地图只支持县级及其以上的行政区域的查询。建议大家调用前仔细阅读《百度地图API使用条款》。
在此小编重新整合之前写过的代码,调用百度地图JavaScript API v1.3来介绍这种获取方法(调用其他地图接口方法类似)。
注意:本例使用了ActiveXObject控件,这是只有IE浏览器支持创建的控件。运行代码时可能会提示“已限制ActiveX控件”,选择允许即可。
以南京市玄武区为例,在网页界面输入,查询显示结果如下图:
点击获取轮廓线即可生成政区名.txt文件(存储在D盘),输出文件内容如下图。后期可以将百度坐标转化为WGS84坐标,通过ArcGIS等软件由点生成面,然后就可以使用这份数据啦~
示例代码如下:
1<body>
2 <!--地图容器-->
3 <div id="container"></div>
4 <br />
5
6 <!--提示文字、搜索框-->
7 输入省、市或县名称: <input type="text" id="districtName" style="width:80px" value="">
8
9 <!--查询按钮-->
10 <input type="button" onclick="getBoundary()" value="获取轮廓线">
11
12 <script type="text/javascript">
13 //调用地图接口,设置地图初始中心、添加地图的平移缩放控件
14 var map = new BMap.Map("container");
15 map.centerAndZoom(new BMap.Point(118.917674, 32.109577), 5);
16 map.addControl(new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL}));
17 map.enableScrollWheelZoom();
18
19 //创建文件,存储行政区划边界点的坐标
20 var fso = new ActiveXObject("Scripting.FileSystemObject");
21 var folderName = "D:\\";
22 if(!fso.FolderExists(folderName))
23 {
24 fso.CreateFolder(folderName);
25 }
26
27 //定义查询按钮触发的函数
28 function getBoundary()
29 {
30 //bdary存储行政区域边界,name存储查询名称
31 var bdary = new BMap.Boundary();
32 var name = document.getElementById("districtName").value;
33
34 //get方法,获取行政区域的边界
35 //rs是获取到的结果
36 bdary.get(name, function(rs)
37 {
38 map.clearOverlays();
39 //存储行政区域边界的点数
40 var count = rs.boundaries.length;
41
42 //获取到边界的点数组后,添加一个多边形覆盖物
43 for(var i = 0; i < count; i++)
44 {
45 var poly = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2.5, strokeColor: "#191970"}); 46 map.addOverlay(poly);
47 map.setViewport(poly.getPath());
48 }
49
50 //将坐标写入文件,输出文件
51 var newFileObject = null;
52 newFileObject = fso.CreateTextFile(folderName + name + ".txt",true);
53 newFileObject.Write(rs.boundaries[0]+"\n");
54 newFileObject.Close();
55 });
56 }
57 </script>
58 </body>
荐读
点击下文标题即可阅读
国家版图|中国行政区划和中国领陆用数据分析中国哪些城市将崛起?
编辑 / 呼慧珊 审核 / 呼慧珊 张洁
指导:万剑华教授(微信号wjh18266613129)