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

这篇博客介绍了如何通过Docker在一台16核32GB内存的服务器上,从china-latest.osm.pbf文件快速转换生成离线地图瓦片china.mbtiles。主要步骤包括下载tilemaker,修改配置文件config.json,构建Docker镜像,并进行启动和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

国服TB第一人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值