(数据科学学习手札155)基于martin为在线地图构建字体切片服务

本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

大家好我是费老师,在之前的一篇文章(基于martin的高性能矢量切片地图服务构建)中我为大家介绍过martin的安装与使用,它是由maplibre开源维护的新一代高性能地图服务框架,底层基于rust,使得其可以以远胜于geoserver等传统地图服务框架的效率,进行矢量切片地服务图的发布。

martin除了构建矢量切片地图服务的核心功能外,还兼具了其他地图服务常用功能。今天的文章中,我就将为大家介绍如何使用martin快捷构建自定义字体切片服务。

2 利用martin构建自定义字体切片服务

maplibremapbox等框架在构建在线地图应用时,如果需要在地图中使用自定义字体,由于字体文件尤其是中文等字体体积较大,出于应用资源加载速度优化的考虑,不会接受完整的字体文件,而是需要自行将原始的字体文件转换为pbf切片的形式,并构建相应的web服务,供地图应用自动按需访问使用相应切片资源,这一套过程在过去,实现起来还是比较繁琐。

martin0.10.0版本开始提供快捷地字体切片服务功能,使得我们只需要一行命令即可搞定上述的所有过程😎。

首先我们执行cargo install martin --forcemartin进行覆盖更新,譬如我之前的martin版本为0.8.7

版本更新后来到0.11.0

接着我们只需要在本地准备好otfttfttc等常见格式的字体文件,接着执行利用martin命令的--font参数进行字体源的定义,可以接受单个字体文件,也可以接受路径用于批量识别路径下所有字体文件,还可以通过多个--font参数分别定义若干字体源规则,下面的示例中我们以识别目标路径下所有字体文件为例:

bash 复制代码
/home/feffery/.cargo/bin/martin --font .

就这么简单,我们就启动了自定义字体切片服务,默认访问本机的http://127.0.0.1:3000/catalog地址,即可查看到已成功注册的各字体切片服务信息,其中fonts下各个键名 ,就可以作为字体名称在地图应用中进行配置:

maplibre为例,按照我们示例服务的地址,为地图应用设置glyphshttp://127.0.0.1:3000/font/{fontstack}/{range}后,对于maplibre要额外为地图实例设置localIdeographFontFamily参数为false,接着按照symbol型图层参数配置要求设置好text-font等参数即可。

下面我们纯Python编写一个非常简单的应用(完整源码见本文开头仓库),其中使用到feffery-maplibre,是由我开源维护的用于在Dash应用中实现高性能在线地图的组件库,其中展示了点线面各常见要素对应的文字标签形式在不同字体下的效果:

更多资料请参考martin官方文档https://maplibre.org/martin/37-sources-fonts.html


以上就是本文的全部内容,欢迎在评论区与我进行讨论~

相关推荐
vjmap7 天前
用AI绘制CAD气温曲线图
人工智能·ai·gis·cad·dwg
KY_chenzhao8 天前
无人机遥感技术在农业中的具体应用:株数和株高、冠层覆盖度、作物倒伏检测、叶面积指数、病虫害监测、产量估算、空间数据综合制图
gis·无人机·遥感·农林信息
小艳加油8 天前
无人机遥感农林信息提取实现方法;农作物形态信息提取、农作物生理生化信息提取、农作物胁迫信息提取、农作物产量信息提取、遥感提取结果的空间表达——GIS制图流程等
gis·无人机·遥感·农林信息提取
岁月如歌,青春不败8 天前
无人机生态环境监测、图像处理与GIS数据分析
图像处理·数据分析·gis·无人机·生态学·激光雷达·环境科学
weixin_贾8 天前
【案例教程】无人机生态环境监测、图像处理与GIS数据分析综合实践技术应用
gis·无人机·无人机图像拼接
疯狂学习GIS11 天前
GIS矢量数据获取:全球行政区划、路网、POI点、建筑物范围、信号基站等
gis·gis数据
枝上棉蛮12 天前
如何用GISBox将高斯泼溅文件(PLY/Splat)转换为3DTiles?全流程解析
gis·cesium·ply·3dtiles·高斯泼溅·gis软件·splat
charlee4415 天前
GDAL矢量数据集相关接口的资源控制问题
gis·矢量·gdal·资源控制
charlee4420 天前
栅格数据金字塔层级的地理变换信息
gis·gdal·金字塔·栅格·地理变换
Super毛毛穗24 天前
GeoJSON 数据
javascript·gis·geojson