Make it works(6) 純離線的無(wú)限級(jí)別中國(guó)地圖解決方案

首先,這不是一個(gè)教程.而是一個(gè)現(xiàn)成的產(chǎn)品包,包括了資源與服務(wù),可以開(kāi)箱即用.

1. 引入

1.1 它解決了哪些問(wèn)題

  • 下載地圖瓦片不可能下載很多級(jí)別,有時(shí)候遇到特定縮放級(jí)別沒(méi)有地圖十分尷尬的問(wèn)題
  • 內(nèi)網(wǎng)同時(shí)有使用矢量和柵格瓦片的場(chǎng)景,無(wú)法同時(shí)應(yīng)對(duì)的問(wèn)題
  • 后續(xù)數(shù)據(jù)擴(kuò)展不方便的問(wèn)題

1.2 它解決不了的問(wèn)題

  • 因?yàn)槭褂玫氖荗SM免費(fèi)數(shù)據(jù),地物相當(dāng)少,因此大多數(shù)情況無(wú)法看清詳細(xì)的地物
  • 使用柵格影像時(shí),因?yàn)橹袊?guó)地圖的樣式十分復(fù)雜,又是實(shí)時(shí)渲染,因此渲染時(shí)間較長(zhǎng)

1.3 注意

  • 使用的是OSM數(shù)據(jù)源,請(qǐng)遵守該數(shù)據(jù)源的使用許可
  • 使用的數(shù)據(jù)源是2019年的數(shù)據(jù),比較舊
  • 請(qǐng)嚴(yán)格遵循中國(guó)的網(wǎng)絡(luò)地圖相關(guān)規(guī)范??????

2. 使用

整個(gè)包在這里,密碼: i30d.請(qǐng)全部下載到本地.

2.1 部署環(huán)境

  • 具有Docker和Docker-compsoe的Linux/Windows環(huán)境

2.2 組件與原理

  • 數(shù)據(jù)源:OSM的中國(guó)區(qū)地圖包
  • 地圖渲染引擎:TileServer-gl
  • 中國(guó)地圖渲染樣式:osm-liberty
  • 字體:思源黑體與思源宋體

原理其實(shí)很簡(jiǎn)單,TileServer提供了一種渲染功能,OSM提供了Tileserver支持的mbtiles格式的底圖包.使用了開(kāi)源的OSM-liberty樣式,將里面的字體替換為本地字體,同時(shí),處理為pbf格式的本地字體也由Tileserver服務(wù)化,在渲染時(shí)調(diào)用.

Tileserver的優(yōu)勢(shì)是完全兼容Mapbox樣式,將矢量數(shù)據(jù)渲染為png格式的柵格瓦片,當(dāng)然,當(dāng)前端就是Mapbox時(shí),也可以直接提供矢量瓦片.這樣就同時(shí)兼容了兩者.

2.3 部署

  1. 執(zhí)行install.sh導(dǎo)入Tileserver-gl的docker鏡像,因?yàn)橄螺d非常慢,還可能失敗,因此將其放在包中
  2. 在根目錄執(zhí)行docker-compose up -d,即可啟動(dòng)服務(wù)

2.4 管理頁(yè)面

默認(rèn)設(shè)置為8080端口,進(jìn)入localhost:8080,就能進(jìn)入Tileserver的管理頁(yè)面


其中:

  • GL Style:OSM Liberty的樣式JSON,可以直接被Mapbox使用

  • TijeJson:標(biāo)準(zhǔn)的Tilejson文件,是柵格形式的,也能被Mapbox直接使用

  • WMTS:描述XML,兼容其他地圖服務(wù)

  • XYZ:一個(gè)簡(jiǎn)單的xyz形式的URL路徑,可以被直接使用與常用地圖引擎

  • Viewer/Vector:以矢量瓦片的形式展示數(shù)據(jù)

  • Raster:以柵格瓦片的的形式展示數(shù)據(jù)

  • inspect:直接展示數(shù)據(jù),不進(jìn)行復(fù)雜渲染,展示數(shù)據(jù)中的點(diǎn)線面

2.5 地圖效果

可以看見(jiàn),無(wú)論是矢量瓦片,柵格瓦片還是字體瓦片,都來(lái)自于本地.完全脫離了互聯(lián)網(wǎng).

整體
局部
有地物的局部
沒(méi)有地物的局部
鄰國(guó)街道
更遠(yuǎn)一些的鄰國(guó)
路網(wǎng)
柵格格式

3. 擴(kuò)展

3.1 修改端口

只需要改動(dòng)docker-compose.yml中的端口映射即可

3.2 添加數(shù)據(jù)

  1. 將數(shù)據(jù)制作成mbtiles包并放到mb路徑下(當(dāng)然,數(shù)據(jù)本身可以通過(guò)網(wǎng)絡(luò)訪問(wèn)的就不用了)
  2. 修改config.json,添加該數(shù)據(jù)的映射(同樣只針對(duì)本地?cái)?shù)據(jù))
  3. 添加樣式文件的json,并放到styles文件夾下
  4. 修改config.json,添加該樣式的映射(如果只需要數(shù)據(jù),不需要渲染的話可以無(wú)需后兩步)

4. 結(jié)語(yǔ)

這個(gè)東西很早就成型并投入使用了,工作變化后,我也再也沒(méi)有使用/更新過(guò).最近整理了一下,看看能不能幫助更多的人.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容