GIS离线地图的下载与发布

    许多GIS应用都需要地图数据,有的通过访问互联网的地图(如百度地图、高德地图、谷歌地图、天地图、BingMap等),有的因为是内网(专网)需要离线地图则需要将地图先下载缓存切片后再发布,下载离线地图的方式有很多,比如使用一些地图下载器下载,导出为google切片规则、arcgis切片规则、WMTS规则后通过Web服务器发布后,客户端通过OpenLayers.js、arcgis api for JS、SuperMap iClient等方式开发。现在市面上有不少的地图下载器,基本都具备地图下载与导出功能,如太乐地图下载器可以下载各种互联网地图并导出为多种切片规则或拼接tif图片。离线地图的下载的关键技术是熟悉各种互联网地图的规则,目前的规则基本都差不多,有WebMecator、WGS84的规则,懂GIS的人知道,谷歌、BingMap、高德地图等都遵循这些规则,天地图遵循有两种规则,百度地图的规则比较特殊。地图也存在偏移,谷歌中国的地图、BingMap、高德地图、百度地图都有偏移,天地图的地图没有偏移。

下载后的地图,发布相对简单,建议使用Google Z/X/Y的规则导出,然后发布,开发起来相对方便多了。

这两年因各个行业的客户对离线地图的需求,我总结了一些基本的需求如下:

1.能下载各种互联网地图,并导出为切片;

2.能提供离线地图的访问接口,地图客户端进行访问;

3.能周期性或者按需下载切片;

4.能下载街道地图、卫星影像地图;

5.能在地图上叠加各种点位,比如视频监控点位、人员位置点位、车辆点位、车辆轨迹、房屋、报警点位等等;

6.能在地图上进行GIS地图可视化展示,结合GIS地图与echarts或MapV等方式展示迁徙图、热力图、流量图;

7.能将地图转换为深色(黑色、蓝色),满足大屏上展示地图的需求(因为大屏如果是白色的地图很刺眼);

8.能查询地图的点位、道路、建筑、POI等数据,并地图显示与定位。

扫描二维码关注公众号,回复: 4372943 查看本文章

9.能支持多种离线地图的切换,比如可以看百度、高德、谷歌的街道地图与卫星地图,并且支持坐标纠偏(因为这些地图本来就是是有偏移的);

10.支持内网地图中路径分析、缓冲区分析、地名查询服务、地址编码、反地址解析、坐标纠偏服务。

以上需求都是可以解决的,方法有很多,可以不用商业GIS软件平台都可以解决,这也是用户为什么自己找解决方案的原因,如果按照传统的做法,至少需要买套商业GIS服务版本,国外的50~80万不等,国内的30万的样子,如果加上地图数据10万~100万不等,一下子一两百万就没了,所以这也是许多用户选择离线地图与一些轻量级的GIS平台的原因。当然,商业GIS软件有他的优势,具体就不细说了,但如果是以上的需求,着实可以不用购买,完全可以通过开源GIS来解决,性能与功能都能满足要求。

这两年因为需求多,我给不少客户提供了综合性的解决方案,为用户节省了许多银子,特别是私企用户,省下来的都是利润。

方案包括几部分:

1.离线地图下载与发布;

2.离线地图自动缓存(可以不提前缓存,真正做到按需下载);

3.离线地图按需按周期自动更新;

4.离线地图叠加矢量地图;

5.离线地图服务标准化接口(统一了不同地图都使用同一个地图接口,用户不需要熟悉很多API);

6.离线地图变色服务;

7.地图纠偏服务;

8.提供基于OpenLayers.js的强大的地图示例(含源码,降低用户的开发难度与学习成本),包括各种地图功能与可视化功能。

9.离线地图下载(构建用户需要的离线地图格式,省事,客户只需要关心业务开发);

10.提供矢量地图发布与矢量地图数据(全国各种地图数据);

11.提供离线地图集群部署,为大量并发提供高可用的支撑。

以上解决方案为客户彻底解决了GIS地图的困扰。本方案已经很成熟,可以留言交流。

附图:各种离线地图的访问

附图:地图变色(深色地图),这个功能是大屏地图可视化的福音

附代码

离线天地图访问地址:
http://localhost:6080/MapService.svc/GetMap?maptype=tdt-road&x={x}&y={y}&z={z}

var epsg = 'EPSG:3857';//地图投影
        var projection = ol.proj.get(epsg);
        var map = new ol.Map({
            target: 'map',
            view: new ol.View({
                center: ol.proj.transform([104.279, 31.136], 'EPSG:4326', epsg),
                projection: projection,
                zoom: 10
            })
        });

var tdtLayer = new ol.layer.Tile({
            source: new ol.source.XYZ({
  title: "天地图道路",
                url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=tdt-road&x={x}&y={y}&z={z}" //http://www.arctiler.com:6080替换成您的地址
 }),
            rojection: 'EPSG:3857'
        });
        map.addLayer(tdtLayer);

附代码:访问各种离线地图

var map = new ol.Map({
            target: 'map',
            view: new ol.View({
                center: [12406035, 4304933],
                zoom: 5,
                projection: 'EPSG:3857'
            })
        });
       
        var gaodeLayer = new ol.layer.Tile({
            source: new ol.source.XYZ({
                title: "高德地图",
                url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=gaode-road&x={x}&y={y}&z={z}"
                //  title: "高德地图影像",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=gaode-image&x={x}&y={y}&z={z}"
				 //  title: "高德地图标注",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=gaode-label&x={x}&y={y}&z={z}"
				 //  title: "天地图道路",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=tdt-road&x={x}&y={y}&z={z}"
				 //  title: "天地图影像",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=tdt-image&x={x}&y={y}&z={z}"
				 //  title: "天地图标注",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=tdt-label&x={x}&y={y}&z={z}"
				 //  title: "百度地图",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=baidu-road&x={x}&y={y}&z={z}"
				 //  title: "百度影像",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=baidu-image&x={x}&y={y}&z={z}"
				 //  title: "百度标注",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=baidu-label&x={x}&y={y}&z={z}"
				 //  title: "谷歌地图",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=google-road&x={x}&y={y}&z={z}"
				 //  title: "谷歌影像",
                //url: "http://www.arctiler.com:6080/MapService.svc/GetMap?maptype=google-image&x={x}&y={y}&z={z}"
            }),
            rojection: 'EPSG:3857'
        });
        map.addLayer(gaodeLayer);

附图:地图效果图

猜你喜欢

转载自blog.csdn.net/GIS_Lyn/article/details/82597186