百度地图POI的边界GEOJSON数据采集
经过数天的技术攻关,终于成功从百度地图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]
将[x=12139200, y=4046920]墨卡托坐标转换为经纬度坐标为(109.047102,34.315398)。
可以通过坐标拾取系统的坐标反查功能验证一下,如下图所示,位置正确:
再重点看GEOJSON的含义,为了便于查看,JSON数据格式化后如下图所示:
猜测边界信息位于"points"中。但是points数据看起来很奇怪,不是正常的经纬度组。
猜测1,按前后顺序每两个为一组经纬度。
前两个看起来是应该墨卡托坐标,后面的数字很小,而且有负数,很奇怪。
猜测2,从第二组数字起,值为相对于前一组数据的差值。例如第二组数据是(99, -203),真实值应该是(12139329 + 99, 4047084 - 203),即(12139428, 4046881)。
下面验证下上述猜测是否正确。按上述思路将points中的墨卡托坐标对进行修正:
修正后的13组墨卡托坐标对如下:
再将其转为经纬度坐标对,如下:
使用百度地图API标注,代码如下:
标注效果如下:
和百度地图中查询出来的该小区边界对比一致,如下图。
再找另一个POI验证一遍,从百度地图APP采集到的小区(366581fe3fd52baa714b871e)的基本信息和边界信息如下:
修正后的墨卡托坐标组:
修正后的墨卡托坐标组:
百度地图API标注测试,测试结果截图:
和直接通过百度地图中查询出来的边界是吻合的,如下图所示。
再找一个边界复杂点的小区验证下,从百度地图APP采集到的小区(50fe0b843b8fa7ed0b1cc7b9)的基本信息和GEOJSON数据如下:
如下图所示,上面是在百度地图中查询出来的“自然界·云栖”小区的边界,下面是我们采集到的边界参数经过API标记后的结果。上下是吻合的。
再来一个边界更复杂的POI:
如下图所示,上面是百度地图查询结果,下面是我们采集标注的结果。
了解更多分析及数据抓取可查看:
http://cloud.yisurvey.com:9081//html/37be8794-b79e-4511-9d0a-81f082bac606.html
本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。
更多推荐
所有评论(0)