经过技术人员数天的技术攻关,终于成功从百度地图APP采集到POI的边界数据,并成功进行了坐标数据还原和边界数据验证。下面详细介绍一下。
如下所示,是从百度地图APP采集到的某小区(uid为ba9b506a87e4f43cf32d8314)的基本信息和边界GEOJSON数据:view plaincopy to clipboardprint?
uid: ba9b506a87e4f43cf32d8314
name: 振业泊公馆
addr: 西安市灞桥区广安路800号
geo: Point [x=12139200, y=4046920]
cityId: 233
tel: (029)83531888
zip: null
nearby: null
geojson:
{"dataset":[{"ud":"ba9b506a87e4f43cf32d8314","ty":33,"nst":60,"fst":0,"of":15,"in":0,"tx":"振业泊公馆","sgeo":{"bound":[12138948,4046770,12139454,4047084],"type":3,"elements":[{"points":[12139329,4047084,99,-203,26,-30,-3,-59,-459,-23,-30,16,-8,26,1,52,-7,131,56,19,4,17,3,53,318,2]}]}}]}
该POI在百度地图APP中的边界截图如下:
下面分析一下返回的GEOJSON数据的含义。
先看下POI的位置坐标参数,如下:
view plaincopy to clipboardprint?
geo: Point [x=12139200, y=4046920]
以前我们曾介绍过,百度地图中使用的是墨卡托平面坐标,详见这里http://www.site-digger.com/html/articles/20150831/98.html。
将[x=12139200, y=4046920]墨卡托坐标转换为经纬度坐标为(109.047102,34.315398),如下图所示。
可以通过坐标拾取系统的坐标反查功能验证一下,如下图所示,位置正确:
再重点看GEOJSON的含义,为了便于查看,JSON数据格式化后如下图所示:
点击展开,查看完整图片
猜测边界信息位于"points"中。但是points数据看起来很奇怪,不是正常的经纬度组。
猜测1,按前后顺序每两个为一组经纬度。
前两个看起来是应该墨卡托坐标,后面的数字很小,而且有负数,很奇怪。
猜测2,从第二组数字起,值为相对于前一组数