• 1、缘起

  • 2、问题

  • 3、分析

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

    • 4.1、启动docker

    • 4.2、启动postGIS容器

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

    • 4.4、删除默认切图范围

    • 4.5、修改切图层级和范围

    • 4.6、生成瓦片

    • 4.7、重复操作

  • 5、总结

1、缘起

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

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

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

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

2、问题

  1. 能不能按自定义区域生成地图?
  2. 有哪些方法能提高处理速度?

3、分析

  1. openmaptiles生成地图分4个步骤:1、数据下载、2、数据入库、3、数据分析、4、生成矢量瓦片。
  2. 问题一分析:
    1. 前三个步骤,只能按整个中国的范围和所有层级来处理,第4步可以通过控制范围、层级来实现自定义区域的切图。
  3. 问题二分析:
    1. 第1步数据下载的时间取决于网速。
    2. 第2步数据入库和第3步数据分析的时间取决于机器性能。
    3. 第4步生成矢量瓦片的时间取决于机器性能、切图范围、切图层级。
    4. 想要提高处理速度,可以针对上面的要素,对症下药。

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

  1. 前面的./quickstart.sh china 命令包含1-4步,后续就不要再执行这个命令了,不然又得重来16个小时。前面已经提到过,这个命令在第4步,默认会切整个中国范围0-7级的地图。想要更大层级的地图,只需要另外单独执行第4步就可以。
  2. openmaptiles生成的矢量瓦片,最大到14级,设置再大也没有用,因为前三步没有对更大级别的数据进行分析。
  3. 第4步生成矢量瓦片的命令,会把上一次的瓦片清除,如果想把两次的结果放在一个文件中,比如想把中国0-7级和北京8-14级的矢量瓦片放在一个.mbtiles文件中,则需要修改配置,让程序不清除上一次的结果。
  4. 下面以生成全国范围0-7级地图+北京范围8-14级地图为例,说明如何来修改配置。
  5. 为避免重启电脑后就各种不灵的尴尬,我们从重启电脑后开始。

4.1、启动docker

  1. 检查docker是否启动

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

    systemctl start docker

4.2、启动postGIS容器

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

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

  3. 进入openmaptiles文件夹

  4. 启动postGIS容器

    make start-db-preloaded

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

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

4.4、删除默认切图范围

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

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

    rm -f ./data/china.bbox

4.5、修改切图层级和范围

  1. 打开.env文件
  2. 修改切图的层级MIN_ZOOMMAX_ZOOM
  3. 修改切图的范围BBOX,格式为:minX,minY,maxX,maxY

4.6、生成瓦片

  1. 输入下面命令,生成瓦片

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

4.7、重复操作

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

5、总结

  1. openmaptiles生成地图分4个步骤:1、数据下载、2、数据入库、3、数据分析、4、生成矢量瓦片。
  2. 中国地区生成地图的最小颗粒度是中国大陆和台湾,没有办法按大陆地区的省或按自定义区域进行生成。
  3. 前三个步骤,只能按整个中国的范围来处理,第4步可以通过控制生成范围、生成层级来实现生成自定义区域的地图。
  4. 前三个步骤只需要执行一次,最后一个步骤可以多次执行。
  5. 如果想把多次生成的矢量瓦片放在一个文件中,可以设置不清除上次生成的结果。

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


如何用高德地图定位生成二维码_OSM地图本地发布如何生成各省市矢量地图相关推荐

  1. python api文档生成二维码_使用Python第三方库生成二维码

    本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...

  2. java通过QR生成二维码 (QRCodeUtils工具类)(HUTOOL生成二维码)

    1.简述 二维码生成关键是QR,QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化 详情简介请看 2.工具类 package com.lingxu.bas ...

  3. 怎样生成二维码?分享几种轻易生成二维码的方法

    怎样能够生成二维码呢?在日常中,使用二维码拥有很多的便利之处,比如,二维码可以被轻松地扫描和分享,使得信息的传递更加便捷.二维码还可以被用于实现物品追踪.防伪和溯源等功能,保证商品的质量和安全性.总之 ...

  4. js 生成二维码 下载到本地

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  5. php - 使用 phpqrcode.php 生成二维码图片,同时并将生成的二维码图片保存到本地服务器中(详细示例教程源码)

    效果图 网上的教程都太乱了,不好移植到自己的项目中. 最终效果,如下图所示: 你可以直接复制本文提供的方法,稍微改改就能应用到你的项目中去. 示例代码干净整洁,注释超级详细 示例源码 首先需要引入 p ...

  6. 利用Java生成二维码

    转自:imooc 慕课网 QR Code 流行的三大国际标准 PDF47:不支持中文 DM:专利未公开,需支付专利费用 QRCode:专利公开,支持中文(Quick Response code) 纠错 ...

  7. 用QRCode.js制作二维码的生成器(qrcode.makeCode方法生成二维码)

    现在前端二维码的生成器有很多,像草料二维码生成器,联图二维码生成器等这些在线生成器都是生成功能比较强大,生成的二维码比较精美的在线生成器,看着比较高大上,那么他们的实现原理?就是通过QRCode.js ...

  8. 巧用Python的Qrcode库生成二维码大全

    二维码介绍 QR 码是二维条码的一种,QR来自英文 "Quick Response" 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码. QR 码 比普通条码 ...

  9. iOS 生成二维码/条形码

    级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...

最新文章

  1. IOS-Swift开发基础——通知
  2. CodeForces - 916D Jamie and To-do List(主席树+模拟)
  3. 一个简单servlet程序
  4. 从淘宝数据结构来看电子商务中商品属性设计
  5. [html] DOM节点的根节点是不是body?
  6. hdu5279 YJC plays Minecraft 【分治NTT】
  7. eslint 保存自动格式化_代码规范之理解ESLint、Prettier、EditorConfig
  8. js版俄罗斯方块(二)
  9. python读取超大csv
  10. 小白文件管理器共享服务器,在WIN7下使用小白文件管理器局域网功能(SMB)的教程...
  11. 目录-化工工艺设计手册-换热器
  12. C# 如何插入、删除Excel分页符
  13. office2016鼠标右键没有新建word等
  14. 没有对象,你凭什么成为百万富翁
  15. vue使用three.js加载.FBX模型文件
  16. mysql嵌套查询;去重,分页综合查询
  17. android 设置布局宽度,Android布局宽度为50%
  18. 用java实现图片合并与折叠
  19. 在Matlab R2019版本上分析simulink模型的BODE图、阶跃响应、单位脉冲响应
  20. 获取VM中win10虚拟机映像

热门文章

  1. python读取us7ascii字符集Oracle数据库中文乱码问题的解决方案
  2. 解决mac下ssh空闲一段时间自动断开的问题
  3. WPF引用外部类库中的资源文件提示不能找到的解决方法
  4. JAVA运行时异常及常见的5中RuntimeExecption
  5. windows下anaconda环境激活报错CommandNotFoundError: Your shell has not been properly configured to use ‘con
  6. AdaPrompt:进一步将下游任务融入到预训练模型
  7. c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. hashmap是线程安全的吗?怎么解决?_线程安全及三种解决方案
  9. linux 标准函数注释,Linux 驱动程序中相关函数注释汇总(跟新中)
  10. android网页声音大小设置在哪里,怎样调节网页声音的大小