2、如何快速生成离线地图瓦片china.mbtiles

1、参考文档

https://github.com/systemed/tilemaker

https://github.com/systemed/tilemaker/blob/master/docs/INSTALL.md

2、下载 china-latest.osm.pbf

Geofabrik Download Server

3、使用一台16H 32G的服务器来转换

3.1、下载tilemaker

git clone https://github.com/systemed/tilemaker.git
cd tilemaker

3.2、修改config.json

根据自己的需要调整minzoom、maxzoom,最大只能设置16,如果超过16,就会报错 Compile tilemaker 
with -DFAT_TILE_INDEX to enable tile output at zoom level 17 or greater。

解决办法:
需要修改源码文件为:src/shared_data.cpp

void Config::readConfig(rapidjson::Document &jsonConfig, bool &hasClippingBox, Box &clippingBox)  {
	baseZoom       = jsonConfig["settings"]["basezoom"].GetUint();
	startZoom      = jsonConfig["settings"]["minzoom" ].GetUint();
	endZoom        = jsonConfig["settings"]["maxzoom" ].GetUint();
	includeID      = jsonConfig["settings"]["include_ids"].GetBool();
	highResolution = jsonConfig["settings"].HasMember("high_resolution") && jsonConfig["settings"]["high_resolution"].GetBool();
	if (! jsonConfig["settings"]["compress"].IsString()) {
		cerr << "\"compress\" should be any of \"gzip\",\"deflate\",\"none\" in JSON file." << endl;
		exit (EXIT_FAILURE);
	}
#ifndef FAT_TILE_INDEX
	if (endZoom>16) {
		cerr << "Compile tilemaker with -DFAT_TILE_INDEX to enable tile output at zoom level 17 or greater" << endl;
		exit (EXIT_FAILURE);
	}
  
  将 endZoom>16 修改为 endZoom>22,但是需要很大的计算机资源,猜测需要16H128G

3.3、使用docker构建镜像

cd tilemaker
docker build . -t tilemaker

3.4、启动

docker run -v /root/tilemaker_data/:/srv -i -t --rm tilemaker /srv/china-latest.osm.pbf --output=/srv/china.mbtiles

3.5、运行

/root/map_8g/:china.mbtile和样式存放的文件夹

docker run --rm -it -v /root/map_8g/:/data -p 8081:80 maptiler/tileserver-gl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了凡啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值