文章目录

  • 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级的矢量瓦片数据。如果是0-14级,前面的配置需要52个小时左右。

  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 run hello-world
    
  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 area=china
    
  2. 生成的结果是tiles.mbtiles文件,在data文件夹中

4.7、重复操作

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

5、总结

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

原文地址:http://gisarmory.xyz/blog/index.html?blog=OSMOpenmaptiles

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

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

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. OSM地图本地发布(三)-----自定义图层提取

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

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

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

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

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

  7. 全新个性化地图服务发布,更好支持自定义地图样式

    我是做LBS游戏的,地图样式.配色是否可以更炫一些? 我是做共享出行的,地图样式是否可以简洁明了些,重点突出城市道路? 我是做智慧景区的,地图样式是否可以和我们园区的主题匹配下? ...... 好了, ...

  8. OSM地图本地发布(二)-----数据准备

    一.准备工作 1.安装PostgreSQL+PostGIS,版本不限(推荐最新版本)安装教程:Windows上安装.Linux上安装. 2.osm2pgsql工具,下载地址. 3.安装QGIS,方便查 ...

  9. 超棒的jQuery矢量地图生成插件 - JQVAMP

    为什么80%的码农都做不了架构师?>>>    日期:2012-5-14  来源:GBin1.com 在线演示  本地下载 是不是也考虑生成一个矢量类型的地图?今天我们将介绍的这款j ...

  10. Web地图服务发布及运维方案

    1 概述: 由于矢量切片的制作和发布过程复杂,地图服务发布阶段直接采取工程数据自动化的方式,将切片数据和对应的工程文件拷贝到目标服务器,从而快速实现WEB地图服务部署和发布. 2Web地图服务发布 2 ...

最新文章

  1. RecyclerView 可以与CollapsingToolbarLayout一起使用
  2. C语言经典例16-最大公约数和最小公倍数
  3. bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【LCT】
  4. android捕获线程异常,android - 终结器引发的未捕获的异常:所有WebView方法必须在同一线程上调用。 (预期的Looper) - 堆栈内存溢出...
  5. 页面按钮埋点+跟踪location.search
  6. Windows—JDK安装与环境变量配置
  7. 用递归实现字符数组的反转
  8. 机器学习——LASSO算法
  9. 中国药科大学计算机专业排行,江苏省高校排名,榜首实至名归,江南大学仅排第10...
  10. 飘云QQ宣布终止后续开发 称不懂游戏规则玩不起
  11. ps4仁王服务器不稳定,原来《仁王》放弃独占PS4早有预兆 未来将是跨平台大潮...
  12. Win10系统在当前文件夹下打开cmd(命令行)窗口
  13. use glyphs icons
  14. 误发邮件如何能撤回?
  15. 我的大学之模拟电子技术 No.5
  16. 区块链如何加快智慧城市建设?
  17. python二元多次函数拟合_对python实现二维函数高次拟合的示例详解
  18. 参加csdn活动有感
  19. 循迹避障小车系统设计
  20. 计算机网页设计教程dw,Dreamweaver 网页制作标准教程.pdf

热门文章

  1. PHP网页监控系统,实现网页变化监控
  2. 服务器装系统就蓝屏,重装了下系统老是蓝屏
  3. 墨者学院 - IIS写权限漏洞分析溯源
  4. 【MapGIS必备】常见问题处理(第十四期)
  5. java一个中文的验证码程序,Java中文验证码
  6. Javaweb-学习路线
  7. 蒙特卡洛方法的应用——解决“彩色砖块”问题
  8. 继电保护原理4-自动重合闸
  9. 游戏音效未来之路该如何发展
  10. 【业务实战】批量生成二维码并打成压缩包