如何用高德地图定位生成二维码_OSM地图本地发布如何生成各省市矢量地图
1、缘起
2、问题
3、分析
4、生成自定义地区矢量瓦片
4.1、启动docker
4.2、启动postGIS容器
4.3、设置不清理上次的结果
4.4、删除默认切图范围
4.5、修改切图层级和范围
4.6、生成瓦片
4.7、重复操作
5、总结
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 --version
如果没有启动,输入下面命令启动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文章。
![](/assets/blank.gif)
如何用高德地图定位生成二维码_OSM地图本地发布如何生成各省市矢量地图相关推荐
- python api文档生成二维码_使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- java通过QR生成二维码 (QRCodeUtils工具类)(HUTOOL生成二维码)
1.简述 二维码生成关键是QR,QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化 详情简介请看 2.工具类 package com.lingxu.bas ...
- 怎样生成二维码?分享几种轻易生成二维码的方法
怎样能够生成二维码呢?在日常中,使用二维码拥有很多的便利之处,比如,二维码可以被轻松地扫描和分享,使得信息的传递更加便捷.二维码还可以被用于实现物品追踪.防伪和溯源等功能,保证商品的质量和安全性.总之 ...
- js 生成二维码 下载到本地
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- php - 使用 phpqrcode.php 生成二维码图片,同时并将生成的二维码图片保存到本地服务器中(详细示例教程源码)
效果图 网上的教程都太乱了,不好移植到自己的项目中. 最终效果,如下图所示: 你可以直接复制本文提供的方法,稍微改改就能应用到你的项目中去. 示例代码干净整洁,注释超级详细 示例源码 首先需要引入 p ...
- 利用Java生成二维码
转自:imooc 慕课网 QR Code 流行的三大国际标准 PDF47:不支持中文 DM:专利未公开,需支付专利费用 QRCode:专利公开,支持中文(Quick Response code) 纠错 ...
- 用QRCode.js制作二维码的生成器(qrcode.makeCode方法生成二维码)
现在前端二维码的生成器有很多,像草料二维码生成器,联图二维码生成器等这些在线生成器都是生成功能比较强大,生成的二维码比较精美的在线生成器,看着比较高大上,那么他们的实现原理?就是通过QRCode.js ...
- 巧用Python的Qrcode库生成二维码大全
二维码介绍 QR 码是二维条码的一种,QR来自英文 "Quick Response" 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码. QR 码 比普通条码 ...
- iOS 生成二维码/条形码
级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...
最新文章
- IOS-Swift开发基础——通知
- CodeForces - 916D Jamie and To-do List(主席树+模拟)
- 一个简单servlet程序
- 从淘宝数据结构来看电子商务中商品属性设计
- [html] DOM节点的根节点是不是body?
- hdu5279 YJC plays Minecraft 【分治NTT】
- eslint 保存自动格式化_代码规范之理解ESLint、Prettier、EditorConfig
- js版俄罗斯方块(二)
- python读取超大csv
- 小白文件管理器共享服务器,在WIN7下使用小白文件管理器局域网功能(SMB)的教程...
- 目录-化工工艺设计手册-换热器
- C# 如何插入、删除Excel分页符
- office2016鼠标右键没有新建word等
- 没有对象,你凭什么成为百万富翁
- vue使用three.js加载.FBX模型文件
- mysql嵌套查询;去重,分页综合查询
- android 设置布局宽度,Android布局宽度为50%
- 用java实现图片合并与折叠
- 在Matlab R2019版本上分析simulink模型的BODE图、阶跃响应、单位脉冲响应
- 获取VM中win10虚拟机映像
热门文章
- python读取us7ascii字符集Oracle数据库中文乱码问题的解决方案
- 解决mac下ssh空闲一段时间自动断开的问题
- WPF引用外部类库中的资源文件提示不能找到的解决方法
- JAVA运行时异常及常见的5中RuntimeExecption
- windows下anaconda环境激活报错CommandNotFoundError: Your shell has not been properly configured to use ‘con
- AdaPrompt:进一步将下游任务融入到预训练模型
- c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...
- hashmap是线程安全的吗?怎么解决?_线程安全及三种解决方案
- linux 标准函数注释,Linux 驱动程序中相关函数注释汇总(跟新中)
- android网页声音大小设置在哪里,怎样调节网页声音的大小