注:本文中所述内容仅作为研究用途,不包括任何技术细节,不提供数据爬取、非法攻击的咨询和支持。另:百度建筑轮廓数据中存在明显签名式错误,下载使用容易被追求侵权。
矢量瓦片:爬取百度地图必须要了解矢量瓦片。矢量瓦片是二进制数据。技术以maxbox为标准。详情可以参考矢量地理数据如何切片?
WebGL:OpenGL的一个javascript绑定。WebGL可以为HTML5 Canvas提供硬件3D加速渲染,Web开发人员可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型wonder-yyc:分享收集的Web 3D学习资源
矢量瓦片技术需要 部署java web。也可以通过本地部署 java web服务器(tomcat)调试js。
百度地图更新后三维模型更加精细了。因为模型是提前建好的,然后将三维模型保存为顶点缓冲和索引,最后直接通过WebGL的方式显示到画布上。(高德还是采用建筑轮廓,并通过高度进行拉伸得到的三维模型)
说白了,百度地图的模型就像是(我们在建模软件里面建完的模型一样)。模型通过计算机图形学(webgl)渲染到屏幕上。
所以建筑高度没有了。
取而代之的是模型渲染信息(顶点缓冲和索引)
投机取巧的童鞋可以洗洗睡了。但是在gis工作者眼中还是小儿科。
技术前提:了解javascript,了解webgl(three.js,重点!!)或者opengl。了解浏览器调试技巧,断点调试。了解地图架构与java web服务器交互(此片文章不牵扯太深刻,不懂的同学也可以通过这篇文章改变你对百度地图的看法)
之前一直有人说百度地图更新后数据加密了,其实这是不完全正确的。百度地图之前采用的是栅格瓦片,不支持三维建筑高度。升级后采用的是webgl与矢量瓦片。矢量瓦片返回的就是二进制数据,所以返回数据没有加密,仅仅是在对其矢量瓦片的请求url进行了封装,,请求的url同样可以通过js跟踪调试解密。然后把二进制数据经过解析(可以调试出json数据)后交给浏览器webgl渲染。
原来的栅格瓦片虽然比较好爬取,直接加载图片在体验上效果非常差,地图缩放会有明显的层级感,不支持3D模型等问题,随着webgl技术越来越成熟,电脑性能强大,大部分地图都支持