51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

地图数据DIY:基于QGIS打造个性化离线地图瓦片

最近,其他部门的同事咨询我:项目上私有化部署应用系统的时候,底图数据用的在线天地图,没法访问,项目上也没有提供影像数据,从哪里可以免费下载一些离线数据包部署过去 ?其实很简单,只需一个QGIS就能快速制作各种离线地图数据,当然,如果觉得地图表达比较单一,也可以对地图数据进行DIY,让你的底图更符合整个业务场景表达,话不多说,老规矩,先来看看我做的一些效果:
HCMGIS插件获取的Esri Imagery,在此基础上进行科技蓝风格配置的离线地图(海南地区,Cesium引擎渲染

MapBox Navigation Night午夜主题风格离线地图(北京地区,Cesium引擎渲染


上述展示的离线地图数据,整体的制作思路,主要分为三个步骤: **1、获取图源:**获取相应的底图数据源(如:电子地图、影像数据),并加载到QGIS中;
**2、地图DIY:**主要针对获取到的底图资源进行颜色校正,如:亮度、饱和度、伽马、对比度等,如果你是一个设计人员或者遥感专业的小伙伴,那这对你来说,真的是手拿把掐~ **3、地图切片:**将调整好的底图数据进行切片,形成标准的xyz切片数据;












1、获取图源









在线免费的地图图源有很多,天地图、Esri、MapBox、OSM、腾讯、高德等等,笔者日常用的比较多的是基于QGIS的插件获取:HCMGIS ,关于这个插件,我在以往的文章里有提过,感兴趣的可以去《从二维到三维:QGIS带你探索三维建模的无限可能》看看,HCMGIS插件提供了丰富的底图数据,大家可以结合自己的实际需求去选择相应的底图,具体如下图:

除此之外,笔者更喜欢MapBox Studio ,这里稍微多花点笔墨,给大家介绍一番~,个人觉得MapBox的制图表达效果为业界天花板,不接受任何反驳,支持在线样式定制(笔者最近落地的一个产品功能,也是对标模仿它),所见即所得,并且服务格式为mvt矢量瓦片,MapBox也内置了很多不同主题风格的的电子地图,那么具体,怎么把MapBox的底图加载到QGIS里呢?首先,打开MapBox Studio(注册登录忽略,感兴趣的自行摸索),点击【New style】下,如下图:

我这里选择了MapBox内置的经典模板【Classic template】,模板里有不同主题类型的个性化底图数据,如:电子地图、卫星影像等等,我选择了【Navigation Night】的午夜风格的电子地图,如下图:

选择完成之后,进入到样式编辑界面,如果可以结合实际的需求,可以在此基础上进行注记、颜色、布局、图标等符号元素的调整,这里不做过多赘述,感兴趣的小伙伴,可以自行摸索一番,然后点击右上角的【share】按钮,然后在分享界面中的【Production】页签下的找到【Developer resources】组,选择【Third party】,然后复制【Integration URL】,如下图:

打开QGIS,在左侧资源浏览器【Browser】中,将刚刚复制的url地址复制到URL输入框中,点击确定,我们就获取到了刚才在MapBox里定义的样式底图,拖到地图canvas,就能看到相应的底图数据了,QGIS里看起来锯齿感比较重,毕竟是切成了栅格瓦片,可以理解。


当然,除了上述,还有其他方式可以把在线底图加载到QGIS里,比如:XYZ Tiles,输入服务的url,就能实现底图数据在QGIS中的快速加载,感兴趣的小伙伴,可以自行操作一番,这里不再做过多的赘述。











2、地图DIY









获取到所需要的底图图源后,接下来,就需要借助QGIS对底图数据进行个性化打造,主要实现方式是对底图数据进行颜色的校正,包括:色相、亮度、饱和度、对比度、伽马校正等参数进行调整,大家可以结合自己的实际应用场景,DIY属于自己的地图主题。 下面就结合上述我获取到的MapBox底图和Esri的影像底图(HCMGIS),给大家介绍一下如何对底图进行个性化的配置,首先,选择需要操作的图层,然后双击,在弹出的图层属性面板中,找到【Symbology】符号化的页签,在右侧【Layer rendering】分组下,可以对图层进行相应的颜色校正设置,如下图:

接下来,我对【Navigation】这个图层,做一个简单的着色模式设置,即:用一个纯色对当前的数据进行一个融合渲染,勾选【Colorize】,选择一个蓝色,默认强度为1,当然其他的参数(亮度、饱和度等),也可以组合使用,点击应用,就可以看到刚刚午夜风格的底图,摇身一变就成了科技蓝风格的底图,如下图:

同样的操作,我们对Esri的影像底图也设置一个蓝色的着色模式,整体效果比电子地图的效果会更有质感一些;











3、地图切片









最后,我们基于上述已经配置好的底图数据进行离线地图包的制作,其实本质上就是对当前加载的地图数据进行切片处理,离线地图包数据格式主要是xyz类型的散列瓦片,项目侧可以将离线数据包部署到相应的服务器上,就可以供上层的业务场景调用了。打开QGIS,点击【Processing-Toolbox】,如下图:

接着选择【Raster tools-Generate XYZ tiles(Directory)】,在切片处理面板中,主要关心以下几个参数,其他可以按照默认进行执行即可: 1、Extent: 设置切片的范围【Extent】,可以按照图层范围,也可以自定义绘制; 2、Zoom切片层级: 设置输出切片的最大最小层级,最大层级越大,输出的切片体量越大,相应的需要时间也更久;
3、输出路径(Output directory): 最终处理好的切片的存储路径;
最后,点击【run】,就开始执行切片处理了,处理完成之后,就可以看到处理好的瓦片文件了。





END







赞(2)
未经允许不得转载:工具盒子 » 地图数据DIY:基于QGIS打造个性化离线地图瓦片