(数据科学学习手札155)基于martin为在线地图构建字体切片服务
本文示例代碼已上傳至我的
Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
大家好我是費(fèi)老師,在之前的一篇文章(基于martin的高性能矢量切片地圖服務(wù)構(gòu)建)中我為大家介紹過martin的安裝與使用,它是由maplibre開源維護(hù)的新一代高性能地圖服務(wù)框架,底層基于rust,使得其可以以遠(yuǎn)勝于geoserver等傳統(tǒng)地圖服務(wù)框架的效率,進(jìn)行矢量切片地服務(wù)圖的發(fā)布。
而martin除了構(gòu)建矢量切片地圖服務(wù)的核心功能外,還兼具了其他地圖服務(wù)常用功能。今天的文章中,我就將為大家介紹如何使用martin快捷構(gòu)建自定義字體切片服務(wù)。
2 利用martin構(gòu)建自定義字體切片服務(wù)
maplibre、mapbox等框架在構(gòu)建在線地圖應(yīng)用時(shí),如果需要在地圖中使用自定義字體,由于字體文件尤其是中文等字體體積較大,出于應(yīng)用資源加載速度優(yōu)化的考慮,不會(huì)接受完整的字體文件,而是需要自行將原始的字體文件轉(zhuǎn)換為pbf切片的形式,并構(gòu)建相應(yīng)的web服務(wù),供地圖應(yīng)用自動(dòng)按需訪問使用相應(yīng)切片資源,這一套過程在過去,實(shí)現(xiàn)起來還是比較繁瑣。
而martin從0.10.0版本開始提供快捷地字體切片服務(wù)功能,使得我們只需要一行命令即可搞定上述的所有過程??。
首先我們執(zhí)行cargo install martin --force對martin進(jìn)行覆蓋更新,譬如我之前的martin版本為0.8.7:
版本更新后來到0.11.0:
接著我們只需要在本地準(zhǔn)備好otf、ttf或ttc等常見格式的字體文件,接著執(zhí)行利用martin命令的--font參數(shù)進(jìn)行字體源的定義,可以接受單個(gè)字體文件,也可以接受路徑用于批量識(shí)別路徑下所有字體文件,還可以通過多個(gè)--font參數(shù)分別定義若干字體源規(guī)則,下面的示例中我們以識(shí)別目標(biāo)路徑下所有字體文件為例:
/home/feffery/.cargo/bin/martin --font .
就這么簡單,我們就啟動(dòng)了自定義字體切片服務(wù),默認(rèn)訪問本機(jī)的http://127.0.0.1:3000/catalog地址,即可查看到已成功注冊的各字體切片服務(wù)信息,其中fonts下各個(gè)鍵名,就可以作為字體名稱在地圖應(yīng)用中進(jìn)行配置:
以maplibre為例,按照我們示例服務(wù)的地址,為地圖應(yīng)用設(shè)置glyphs為http://127.0.0.1:3000/font/{fontstack}/{range}后,對于maplibre要額外為地圖實(shí)例設(shè)置localIdeographFontFamily參數(shù)為false,接著按照symbol型圖層參數(shù)配置要求設(shè)置好text-font等參數(shù)即可。
下面我們純Python編寫一個(gè)非常簡單的應(yīng)用(完整源碼見本文開頭倉庫),其中使用到feffery-maplibre,是由我開源維護(hù)的用于在Dash應(yīng)用中實(shí)現(xiàn)高性能在線地圖的組件庫,其中展示了點(diǎn)線面各常見要素對應(yīng)的文字標(biāo)簽形式在不同字體下的效果:
更多資料請參考martin官方文檔https://maplibre.org/martin/37-sources-fonts.html。
以上就是本文的全部內(nèi)容,歡迎在評(píng)論區(qū)與我進(jìn)行討論~
總結(jié)
以上是生活随笔為你收集整理的(数据科学学习手札155)基于martin为在线地图构建字体切片服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蕃茄烧豆腐怎么做好吃啊?
- 下一篇: 字节跳动获美私募股权基金500亿美元估值