前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >批量获取百度地图中的县级以上行政区域的边界数据

批量获取百度地图中的县级以上行政区域的边界数据

作者头像
sparkexpert
发布2022-05-07 14:18:06
6720
发布2022-05-07 14:18:06
举报
文章被收录于专栏:大数据智能实战

最近在做一个演示DEMO的时候,需要省界和市一级界线的数据。以前自己是有这样的SHP数据的,然而现在由于行政区划更新很快,而自己之前下的数据还是2010年版本的国家基础数据。

网上没有相关的最新的界线数据,只好自己去搜索一下。还是不少人在做这样的东西的,如http://www.cnblogs.com/milkmap/archive/2012/04/11/2442430.html,http://www.cnblogs.com/i-gps/archive/2012/05/18/2507941.html等。而且都是利用百度地图的接口来实现的。

刚好按照网上的方法,自己也能搞定某一个边界的下载,按照网上的一个HTML页面就可以搞定的。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>获取地区轮廓线</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"> </script> <style type="text/css"> body{font-size:13px;margin:10px} #container{width:800px;height:500px;border:1px solid gray} </style> </head> <body> <div id="container"></div> <br /> 输入省、直辖市或县名称:<input type="text" id="districtName" style="width:80px" value="重庆市"> <input type="button" οnclick="getBoundary()" value="获取轮廓线"> <textarea id="Div1" style="width:100%;height:200px"></textarea> <script type="text/javascript"> var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5); map.addControl(new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL})); map.enableScrollWheelZoom(); function getBoundary(){            var bdary = new BMap.Boundary();     var name = document.getElementById("districtName").value;     bdary.get(name, function(rs){       //获取行政区域         map.clearOverlays();        //清除地图覆盖物       document.getElementById('Div1').innerText = rs.boundaries;          var count = rs.boundaries.length; //行政区域的点有多少个         for(var i = 0; i < count; i++){             var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物             map.addOverlay(ply);  //添加覆盖物             map.setViewport(ply.getPath());    //调整视野                  }                 });   } </script> </body> </html>

但是中国的县级以上区域总共有3500多个,这样的话,逐个弄肯定是不行的。

于是呢,采用.net的webbrowser来实现对边界数据的批量下载。

其原理非常简单,就是通过webbrowser的document获取页面中指定的input和按钮,进行消息触发。

由于百度提供的边界线接口中,县级区域数据并未完全更新完整,如三沙市,广丰县实质上已经变为区等,所以这样界线数据相对来说还是有些滞后。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档