1、缘起

openmaptiles提供了一套OSM数据使用的完整解决方案,在前面文章如何实现OSM地图本地发布并自定义配图中,我们详细介绍了如何安装openmaptiles,并生成了一个阿尔巴尼亚地区的“helloworld”。

参照上篇文章的内容,输入下面的命令,就可以生成中国地图。

./quickstart.sh china

上面命令,需要耐心等待,我电脑4核8G,用了16个小时左右。最终得到了中国大陆地区,0-7级的矢量瓦片数据。

openmaptiles主要是从geofabrik网站下载OSM数据,geofabrik在中国地区下载的最小颗粒度是中国大陆和台湾,没有办法按大陆地区的省,或按自定义区域进行下载。

2、问题

能不能按自定义区域生成地图?

有哪些方法能提高处理速度?

3、分析

openmaptiles生成地图分4个步骤:1、数据下载、2、数据入库、3、数据分析、4、生成矢量瓦片。

问题一分析:

前三个步骤,只能按整个中国的范围和所有层级来处理,第4步可以通过控制范围、层级来实现自定义区域的切图。

问题二分析:

第1步数据下载的时间取决于网速。

第2步数据入库和第3步数据分析的时间取决于机器性能。

第4步生成矢量瓦片的时间取决于机器性能、切图范围、切图层级。

想要提高处理速度,可以针对上面的要素,对症下药。

4、生成自定义地区矢量瓦片

前面的./quickstart.sh china命令包含1-4步,后续就不要再执行这个命令了,不然又得重来16个小时。前面已经提到过,这个命令在第4步,默认会切整个中国范围0-7级的地图。想要更大层级的地图,只需要另外单独执行第4步就可以。

openmaptiles生成的矢量瓦片,最大到14级,设置再大也没有用,因为前三步没有对更大级别的数据进行分析。

第4步生成矢量瓦片的命令,会把上一次的瓦片清除,如果想把两次的结果放在一个文件中,比如想把中国0-7级和北京8-14级的矢量瓦片放在一个.mbtiles文件中,则需要修改配置,让程序不清除上一次的结果。

下面以生成全国范围0-7级地图+北京范围8-14级地图为例,说明如何来修改配置。

为避免重启电脑后就各种不灵的尴尬,我们从重启电脑后开始。

4.1、启动docker

检查docker是否启动

docker run hello-world

如果没有启动,输入下面命令启动docker。如果有需要,后续可以自己把docker设置为开机自启动。

systemctl start docker

4.2、启动postGIS容器

前面的./quickstart.sh china命令在执行过程中,下载了4个docker镜像,启动了若干个容器,工具类容器在使用完成后就销毁了,数据类和应用类的容器会保留。(镜像和容器的关系)

下图红框中的容器就是存放数据的,它里面有个postGIS,我们需要启动这个容器。

进入openmaptiles文件夹

启动postGIS容器

make start-db-preloaded

4.3、设置不清理上次的结果

打开Makefile文件,找到generate-tiles命令,下图红框的位置,就是清除上次结果文件的命令,我们在这行前面输入#号,把它注释掉。

4.4、删除默认切图范围

程序默认会用china.bbox中的参数作为切图范围,我们把这个文件删掉,后续在.env文件中配置。

china.bbox文件在data文件夹中,删除命令:

rm -f ./data/china.bbox

4.5、修改切图层级和范围

打开.env文件

修改切图的层级MIN_ZOOM和MAX_ZOOM

修改切图的范围BBOX,格式为:minX,minY,maxX,maxY

4.6、生成瓦片

输入下面命令,生成瓦片

make generate-tiles

生成的结果是tiles.mbtiles文件,在data文件夹中

4.7、重复操作

重复4.5和4.6步骤,修改层级和范围,就能把多次的结果放在一个文件中。

5、总结

openmaptiles生成地图分4个步骤:1、数据下载、2、数据入库、3、数据分析、4、生成矢量瓦片。

中国地区生成地图的最小颗粒度是中国大陆和台湾,没有办法按大陆地区的省或按自定义区域进行生成。

前三个步骤,只能按整个中国的范围来处理,第4步可以通过控制生成范围、生成层级来实现生成自定义区域的地图。

前三个步骤只需要执行一次,最后一个步骤可以多次执行。

如果想把多次生成的矢量瓦片放在一个文件中,可以设置不清除上次生成的结果。

关注《GIS兵器库》公众号, 第一时间获得更多高质量GIS文章。

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接:  http://gisarmory.xyz/blog/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

生成osm文件_OSM地图本地发布-如何生成各省市矢量地图相关推荐

  1. 如何用高德地图定位生成二维码_OSM地图本地发布如何生成各省市矢量地图

    1.缘起 2.问题 3.分析 4.生成自定义地区矢量瓦片 4.1.启动docker 4.2.启动postGIS容器 4.3.设置不清理上次的结果 4.4.删除默认切图范围 4.5.修改切图层级和范围 ...

  2. OSM地图本地发布(一)-----概述

    目录 一.前言 二.开源GIS介绍 1.前端GIS框架 2.后端技术 3.空间数据库 4.地图服务器 4.GIS软件 三.技术选型 四.文章目录 1.OSM本地发布(一)-----概述 2.OSM本地 ...

  3. OSM地图本地发布(五)-----Geoserver发布海洋图层

    一.准备工作 1.下载OSM海洋数据,下载地址:Water polygons,OSM地图默认坐标系是EPSG:3857,即为墨卡托投影(Mercator)数据是shp格式,下方有两种海洋数据,Larg ...

  4. java用itextPDF生成PDF文件保存至本地并上传至ftp服务器

    标题java用itextPDF生成PDF文件保存至本地并上传至ftp服务器 所需jar :itext-asian-5.2.0.jar,itextpdf-5.5.5.jar,commons-net-3. ...

  5. python生成pyc文件可以互用吗_Python生成pyc文件

    Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...

  6. OSM地图本地发布(四)-----Geoserver发布自定义地图

    一.准备工作 1. 安装jdk 1.8.tomcat 2.安装Geoserver,下载地址:https://sourceforge.net/projects/geoserver/files/GeoSe ...

  7. 如何实现OSM地图本地发布并自定义配图

    文章目录 1.缘起 2.准备环境 2.1.安装linux系统 2.2.安装docker 2.3.安装Docker Compose 2.4.安装git 3.发布地图 3.1.拉取代码 3.2.测试网络 ...

  8. OSM地图本地发布(三)-----自定义图层提取

    一.准备工作 1.完成数据准备OSM本地发布(二)-----数据准备 2.推荐使用Navicat操作数据库 3.下文是在<在GeoServer中为OpenStreetMap数据设置OSM样式&g ...

  9. 生成osm文件_超酷城市肌理!地理数据信息爬取方法大全(B篇)DEM+POI+OSM

    WENWEN:这一弹是对第一弹的补充和深化讲解,上一弹请点击常用的地理数据信息爬取方法大全(前期场地信息获取第一弹),关于DEM获取地形地理空间数据云提交任务一直在排队的问题,这个应该是官网的问题,不 ...

  10. ArcMap 生成SLD文件及wms服务发布及使用

    一.生成sld文件 a.使用工具ArcGIS_SLD_Converter将ArcMap里面图层导出为sld文件 1.在http://arcmap2sld.i3mainz.hs-mainz.de/Arc ...

最新文章

  1. 橘子CPS联盟小程序操作手册2.0
  2. 解释一下为什么我很少jQuery
  3. HTML 标签简写及全称
  4. 怎么解决tomcat占用8080端口问题
  5. html 旋转木马 轮播,JS实现旋转木马式图片轮播效果
  6. c语言找出递增子数组的长度,编程之美2.16 数组中最长递增子序列的长度
  7. phpthink验证旧密码_忘记MacBook密码解决方法
  8. 拓端tecdat|R语言使用混合模型进行聚类
  9. Centos 安装 K8S
  10. 大数据综合实验的踩坑总结(林子雨)
  11. 基于Vue3在线商城(Vue3+VueCLI+VueRouter+vuex+axios+Bootstrap)
  12. 5gh掌上云计算认证不通过_华为云计算认证考试好考吗?我考华为云计算HCIE的经验分享...
  13. 数据可视化 - 什么是数据可视化
  14. python前面三个大于号是啥_JavaScript 无符号位移运算符 三个大于号 的使用方法...
  15. 华为机试真题 C++ 实现【乱序整数序列两数之和绝对值最小】
  16. 关于苹果手机部分版本机型上传时卡住相册问题记录
  17. peerDependencies WARNING问题剖析
  18. 更改Colab的CUDA以及cudnn
  19. 信息系统开发与管理【二】之 管理信息系统的基本知识
  20. 微信小程序canvas商品分享海报

热门文章

  1. 洛谷 P1357 花园
  2. MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了
  3. RAP2环境部署(nginx代理模式)及运维
  4. 百看不如一练, 247 个 Python 实战案例(附源代码)
  5. 【附源码】计算机毕业设计java学生网上请假系统设计与实现
  6. [CoreBluetooth] API MISUSE: can only accept this command while in the powered on state(iOS蓝牙)
  7. java中int count什么意思_int groupCount()
  8. HDU6357——Hills And Valleys
  9. 学术Assignment写作怎么了解文献内容?
  10. Windows中使用pip下载任何包都报错