(数据科学学习手札155)基于martin为在线地图构建字体切片服务
本文示例代码已上传至我的
Github仓库https://github.com/CNFeffery/DataScienceStudyNotes
1 简介
大家好我是费老师,在之前的一篇文章(基于martin的高性能矢量切片地图服务构建)中我为大家介绍过martin的安装与使用,它是由maplibre开源维护的新一代高性能地图服务框架,底层基于rust,使得其可以以远胜于geoserver等传统地图服务框架的效率,进行矢量切片地服务图的发布。
而martin除了构建矢量切片地图服务的核心功能外,还兼具了其他地图服务常用功能。今天的文章中,我就将为大家介绍如何使用martin快捷构建自定义字体切片服务。

2 利用martin构建自定义字体切片服务
maplibre、mapbox等框架在构建在线地图应用时,如果需要在地图中使用自定义字体,由于字体文件尤其是中文等字体体积较大,出于应用资源加载速度优化的考虑,不会接受完整的字体文件,而是需要自行将原始的字体文件转换为pbf切片的形式,并构建相应的web服务,供地图应用自动按需访问使用相应切片资源,这一套过程在过去,实现起来还是比较繁琐。
而martin从0.10.0版本开始提供快捷地字体切片服务功能,使得我们只需要一行命令即可搞定上述的所有过程。
首先我们执行cargo install martin --force对martin进行覆盖更新,譬如我之前的martin版本为0.8.7:

版本更新后来到0.11.0:

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

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

以maplibre为例,按照我们示例服务的地址,为地图应用设置glyphs为http://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。
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
(数据科学学习手札155)基于martin为在线地图构建字体切片服务的更多相关文章
- (数据科学学习手札100)搞定matplotlib中的字体设置
本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 matplotlib作为数据可视化的利器,被广泛 ...
- (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)
一.简介 接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文 ...
- (数据科学学习手札47)基于Python的网络数据采集实战(2)
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...
- (数据科学学习手札75)基于geopandas的空间数据分析——坐标参考系篇
本文对应代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们对geopandas中的数据结 ...
- (数据科学学习手札44)在Keras中训练多层感知机
一.简介 Keras是有着自主的一套前端控制语法,后端基于tensorflow和theano的深度学习框架,因为其搭建神经网络简单快捷明了的语法风格,可以帮助使用者更快捷的搭建自己的神经网络,堪称深度 ...
- (数据科学学习手札42)folium进阶内容介绍
一.简介 在上一篇(数据科学学习手札41)中我们了解了folium的基础内容,实际上folium在地理信息可视化上的真正过人之处在于其绘制图像的高度可定制化上,本文就将基于folium官方文档中的一些 ...
- (数据科学学习手札40)tensorflow实现LSTM时间序列预测
一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...
- (数据科学学习手札32)Python中re模块的详细介绍
一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供 ...
- (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
*从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 pandas提供了很多方 ...
- (数据科学学习手札61)xpath进阶用法
一.简介 xpath作为对网页.对xml文件进行定位的工具,速度快,语法简洁明了,在网络爬虫解析内容的过程中起到很大的作用,除了xpath的基础用法之外(可参考我之前写的(数据科学学习手札50)基于P ...
随机推荐
- 钟表练习 html+css实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- LangChain:打造自己的LLM应用
1.LangChain是什么 LangChain是一个框架,用于开发由LLM驱动的应用程序.可以简单认为是LLM领域的Spring,以及开源版的ChatGPT插件系统.核心的2个功能为: 1)可以将 ...
- 使用$test$plusargs提高RTL验收速度
0 前言 这段时间在整合一个小ip,因为要验证每个feature是否可行,需要用testbench + C语言的方式进行仿真验证,由于每种feature不仅要在C语言中修改寄存器配置,还要再testb ...
- 使用supervisor守护Prometheus进程
使用supervisor守护Prometheus进程 目录 使用supervisor守护Prometheus进程 安装supervisor 安装Prometheus监控系统 配置supervisor ...
- JaCoCo助您毁灭线上僵尸代码
一. 现状·问题 随着需求不断迭代,业务系统的业务代码突飞猛进,在你自豪于自己的代码量产出很高时,有没有回头看看线上真正的客户使用量又有多少呢? 费事费力耗费大量人力成本上线的功能,可能一年没人使用, ...
- [ABC129E] Sum Equals Xor
2023-01-15 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 dp/模拟 解题思路 我们都知道,异或是一种不进位的加法,而要想 $ a ...
- 【LaTeX】语法(更新中)
目录 长度 空行 空格 超链接 数学公式 段落中(隐式) 单独成段(显式) 居中,左对齐,右对齐 居中 左对齐 右对齐 参考文献配置 TODO 参考资料 中文支持参考环境配置中的 内容,在这里不做重复 ...
- 多层前馈神经网络及BP算法
一.多层前馈神经网络 首先说下多层前馈神经网络,BP算法,BP神经网络之间的关系.多层前馈[multilayer feed-forward]神经网络由一个输入层.一个或多个隐藏层和一个输出层组成,后向 ...
- 手把手教你搭建springbootsecurity+jwt,全面了解
研究了两周了springbootsecurity+jwt的使用,终于搭起来了,这里跟大家分享下. 首先,不了解jwt的可以提前去查下相关资料,我之前也有讲过,大家可以先看下: https://www ...
- 编译nw-node版本的插件
编译nw-node版本的插件 下载nwjs对应版本的nodejs 原始源码目录 yh@yh:~/addon$ tree . ├── addon.cc ├── binding.gyp ├── CppLi ...