>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Rust

如何使用 Headway 部署你自己的 OpenStreetMap 地图服务器

World map image

如果你曾经需要搭建自己的地图基础设施,你可能还记得那种头疼的感觉。首先要配置一个用于渲染底图的瓦片服务器,然后分别接入 Nominatim 或 Pelias 来实现地址搜索,再部署 Valhalla 或 OSRM 进行路线规划,最后还要在上面搭建一个 Web 前端来整合所有功能。最终,一个简单的任务就变成了一堆互不匹配的服务和配置文件的大杂烩。

我最近发现了 Headway 仓库,其作者试图解决这个痛点。他们将一个可用的地图服务器组装成单一的开箱即用技术栈,运行在 OpenStreetMap 数据之上。

盒子里面有什么

该项目的核心概念很简单:让开发者只需几条命令就能启动一个功能完整的地图服务,无需手动将各个组件粘合在一起。

该技术栈包括:

  • 带有可直接在浏览器中使用的 Web 界面的底图
  • 用于搜索地址和兴趣点(POI)的地理编码器
  • 路线规划引擎
  • 200 多个热门城市的现成配置集

该项目使用 Rust 编写,专为自托管设计。你可以获取特定社区、大都市或整个国家的 OSM 数据切片,然后将其提供给构建脚本。

路线规划和搜索表现如何

在当前阶段,Headway 处理我们通常运行这些服务的基本功能。

首先是地理编码。搜索栏可以让你找到街道名称、建筑编号以及加载地图切片中的场所。

其次是计算两点之间的路线。支持三种主要出行方式:

  • 步行
  • 自行车
  • 汽车

公共交通路线规划仍在开发中,所以暂时不要期待地铁或公交线路。

系统要求和构建细节

没有奇迹:地理空间数据处理总是会触及硬件限制。开发者在文档中诚实地警告了该技术栈的资源消耗。

生成可用文件需要一台 Linux 或 macOS 机器(amd64 架构),至少 8 GB 内存。如果你决定构建一个大型区域,则需要更多的内存。在数据准备阶段,该项目临时占用 50 到 100 GB 的磁盘空间,因此请提前检查 SSD 上的可用空间。

编译和数据提取处理完成后,资源需求会显著下降。在服务器上运行和服务一个普通城市的查询大约需要 4 GB 内存。

这在哪里有用武之地

在以下几种明确的场景中部署这样的技术栈是有意义的:

  1. 隔离环境和气隙网络。 如果企业应用程序在没有互联网访问的封闭环境中运行,Headway 可以满足对外部地图的需求。
  2. 本地配送和物流服务。 当你的业务局限于单个城市或区域时,为每个地理编码和路线规划请求支付商业地图 API 费用就毫无意义了。
  3. 个人项目和原型。 在本地机器上快速启动,无需在第三方服务中注册 API 密钥。
  4. 隐私要求。 关于用户移动和搜索查询的数据严格保留在你的服务器上。

值得一试吗

Headway 采用免费的 Apache 2.0 许可证发布。该项目目标明确,概念清晰:消除搭建地理服务的繁琐工作。

如果你需要为特定城市或区域提供本地地图服务器,这是一个绝佳的测试候选方案。从 200 个现成的城市预设中选择一个来评估性能和界面可用性,然后开始构建你自己的 OSM 数据切片。

相关项目