OSM地图本地发布-如何生成各省市矢量地图
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步可以通过控制生成范围、生成层级来实现生成自定义区域的地图。
- 前三个步骤只需要执行一次,最后一个步骤可以多次执行。
- 如果想把多次生成的矢量瓦片放在一个文件中,可以设置不清除上次生成的结果。
原文地址:http://gisarmory.xyz/blog/index.html?blog=OSMOpenmaptiles
关注《GIS兵器库》公众号, 第一时间获得更多高质量GIS文章。

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接: http://gisarmory.xyz/blog/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
OSM地图本地发布-如何生成各省市矢量地图的更多相关文章
- 如何实现OSM地图本地发布并自定义配图
目录 1.缘起 2.准备环境 2.1.安装linux系统 2.2.安装docker 2.3.安装Docker Compose 2.4.安装git 3.发布地图 3.1.拉取代码 3.2.测试网络 3. ...
- arcgis for js 4.6加载本地发布好的2维地图
我本地发布好的地图服务信息如下图所示: 我们在代码中使用到的url是图中所示的REST URL 加载代码如下: <!DOCTYPE html> <html> <head& ...
- iOS程序发布测试-生成ad hoc证书
转自: http://blog.sina.com.cn/s/blog_68444e230100srdn.html iOS程序发布测试3-生成ad hoc证书 iOS证书分2种,1种是开发证书,用来给你 ...
- Python 创建本地服务器环境生成二维码
一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...
- 【转】Luajit-2.1.0-beta1的发布和生成arm64用bytecode的解脱
来自:Luajit-2.1.0-beta1的发布和生成arm64用bytecode的解脱 前情提要:由于苹果要求2015年2月1日上架的新app必须支持64位的arm64,旧的app也得在6月1日支持 ...
- Atitit.程序包装exe启动器 打包 发布 设计 -生成exe java
Atitit.程序包装exe启动器 打包 发布 设计 -生成exe java 1. 要实现的功能1 2. ahk是个好东东..能启动了...1 3. exe4j vs nativej1 4. 2 ...
- 我给女朋讲编程网络系列(2)--IIS8 如何在本地发布网站
通过IIS8 在本地发布网站,一个截图,你就全明白了,越是简单,越是实用. 如果有现成的网站,就将你的网站放到一个文件夹中,比如WebTest2中. 如何没有网站,可以在WebTest2中新建一个in ...
- 分享Sql Server 2008 r2 数据备份,同步服务器数据(二.本地发布,订阅)
上一篇文章中写到了数据库的本地备份,这一篇主要分享一下关于不同服务器的数据备份,主要是使用sql server中的本地发布,本地订阅功能,在数据库的读写分离中,也会经常性的用到这个功能. 复制-> ...
- mapbox 接入高德矢量地图实战
Mapbox 作为现如今比较流行的地图框架为我们提供了漂亮的个性化地图,在平常的使用过程中可以方便的接入高德/谷歌等矢量切片地图.由于Mapbox地图数据来源于Open Street Map等国外厂商 ...
随机推荐
- NOIP2015 解题报告
Day1 T3 运输计划 二分之后做一遍树上差分,找出被所有时间超限的运输计划覆盖的花费时间最长的航道,将其改造成虫洞. LCA 用倍增求可能会被卡常,建议用 Tarjan 求.
- JQuery案例:购物车编辑
购物车编辑 实现了:商品的加减,总价的变动 实现了:全选/全不选(使用prop而不是attr) 实现了:删除(遮罩层) <html> <head> <meta chars ...
- linq 查询的结果会开辟新的内存吗?
一:背景 1. 讲故事 昨天群里有位朋友问:linq 查询的结果会开辟新的内存吗?如果开了,那是对原序列集里面元素的深拷贝还是仅仅拷贝其引用? 其实这个问题我觉得问的挺好,很多初学 C# 的朋友或多或 ...
- Windows 的这款工具,有时让我觉得 Mac 不是很香
上次写了个 cheat.sh 在手,天下我有,小伙伴们热情高涨,觉得这是一个没有杂质的好工具:也有小伙伴抱怨说对 Windows 用户不是特别友好 (其实用 curl API 是没啥问题的).为了「雨 ...
- 16.java设计模式之迭代器模式
基本需求: 展示一个学校的结构,比如一个学校下面有多个学院,学院下面有多个系,对其节点主要是遍历,与组合模式略有不同 传统方案: 学校<-学院<-系 依次继承 这种方式,在一个页面中展示出 ...
- 思维导图学《JVM 虚拟机规范》
目录 工具 虚拟机实现 class 文件结构 字节码指令 其他 虚拟机结构 公众号 coding 笔记.点滴记录,以后的文章也会同步到公众号(Coding Insight)中,希望大家关注_ 公众号 ...
- UML第一次个人作业
这个作业属于哪个课程 https://api.jihuayu.site/cnblogs 这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ ...
- 基于CFSSL工具创建CA证书,服务端证书,客户端证书
背景描述 在局域网中部署组件时,想要通过证书来实现身份的认证,确保通信的安全性,可以通过cfssl工具来进行CA证书,服务端证书,客户端证书的创建. 目录 背景描述 部署cfssl工具 下载,上传cf ...
- 记一次MongoDB的失败导出
MongoDB用的是阿里云的,今天想着把原来的数据导出进行一次去重处理,整理下数据.操作了好几个小时,还是未能成功导出. MongoDB用的是阿里云的专有网络连接,本想通过公网直接访问,申请了公网地址 ...
- PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解
本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...