38°

关于百度地图建筑轮廓数据研究总结

 

百度地图WebGL版本的3d效果显示的方式与高德不同。高德地图是采用建筑轮廓,并通过高度进行拉伸得到的三维模型。百度地图则是采用预先生成三维模型,然后将三维模型保存为顶点缓冲和索引,最后直接通过WebGL的方式显示到画布上。
最开始没有注意到百度地图还提供矢量瓦片数据,于是希望通过下载内容比较少的栅格数据,然后通过识别其中的颜色色块来提取建筑轮廓。这种方式由于识别图形本身就是一个比较复杂的事情,所以,止步于此;
之后发现百度地图提供了矢量数据,于是按照处理栅格数据瓦片的思路,希望将其从服务器中下载下来,然后通过本地的集中解析来达到获取矢量数据的目的(对于高德地图的矢量瓦片数据就是通过这种方式获得的)。但是,百度对其矢量瓦片的请求url进行的封装,无法直接通过瓦片编号和等级直接获取。于是对代码进行跟踪,拿到了加密函数,于是,瓦片获取就没有问题了。
获取到的矢量瓦片是二进制文件,虽然请求参数可以获取json格式的明文,但其文件格式仍旧非常复杂,而其中又包含了各种内容(道路面、桥梁、运动场停车场等)一一解析工作量还是比较大。
最终,通过对workerManager进行分析,直接从worker返回消息处入手,将解析后的顶点缓冲和索引进行解析,直接获得建筑的平面数据和高度。把这些数据保存下来,并通过后期的处理,即可以获得比较完整的百度地图建筑轮廓数据。
注:本文中所述内容仅作为研究用途,不包括任何技术细节,不提供数据爬取、非法攻击的咨询和支持。
另:百度建筑轮廓数据中存在明显签名式错误,下载使用容易被追求侵权。

本文由【火眼金睛容嬷嬷】发布于开源中国,原文链接:https://my.oschina.net/rodger/blog/3159500

全部评论: 0

    我有话说: