关于互联网地图数据下载的思路
-
主要切片类型
切片:3857坐标系,4326坐标系,百度坐标系,wms的bbox
矢量:pbf,建筑面,wfs
-
开发语言
不限。推荐Python,编写简单不需要开发集成环境notepadd++既可以下载,另外可以集成成lib包供其他程序调用和程序分发共享。
-
整体思路
-
地图切片下载
-
根据经纬度构造成、出下载框(矩形, east,west,north,south可以构造一个矩形框)。
然后根据左下角和右上角的坐标点和切片级别,通过公式换算出行列号。最后得出x=[x1,x2,x3 ,……,xn];y=[y1,y2,y3……,yn],z=z0 。
然后通过构造循环得到xyz=[[ x1,y1,z0],[ x1,y2,z0], [ x1,y2,z0],……, [ x1,yn,z0]],构造url下载即可,下载的切片按照在z,x,y的方式存储。
如果不会直接换算行列表,也可以使用地图API直接换算出来行列号(麻烦点),对于特殊的地图投影或者自定义的坐标系,推荐直接通过Leaflet先加载出来,在获取行列号转换公式。
下载的核心在于获取正确的经纬度和行列号的转换公式。
对于wms使用bbox获取地图切片,可以通过根据切片的四个角的坐标构造成bbox,然后按照z,x,y的方式存储,实际上这时的wms已经变成wmts的文件格式了,直接使用wmts的加载方式即可,直接加载。
-
POI数据下载
POI数据主要来源于高德、腾讯、百度、天地图、谷歌地图。
大致下载的方式是通过Key构造HTTP请求来获取POI数据。在下载的区域生成矩形下载框,然后构造下载网格(对于不规则图形,可以通过点在面内的空间关系来获取下载网格)。
下载网格是至关重要的,网格大了之后,获取的数据不完全,太小需要构造很多的HTTP请求,受到KEY调用次数的限制。建议:以高德地图为例,构造请求时下载网格为312m*312m,一次请求获取20个POI(已经过测试可行且高效,太乐地图下载器就是这样下载的)。
-
下载建筑面数据
建筑面数据也是根据切片的形式下载的,行列号与栅格切片一致。然后对下载的建筑面数据进行解析,保存成SHP文件即可,通过ArcMap处理后即可使用。建议:由于需要较多的解析转换数据,最好的方式是下载OSM的数据https://www.openstreetmap.org/
以上方法皆已验证可行,如有更好方式,请补充.