BRouter
BRouter 是一个可配置的 OSM 离线路由器,支持高程感知,基于 Java + Android。设计为多模式,特别强调自行车 和基于能量的汽车路线规划。
更多信息请参阅 http://brouter.de/brouter.
Android 上的 BRouter
您可以从
F-Droid 或 Google Play
Store 在您的 Android 设备上安装 BRouter 应用。
您也可以自行 构建 BRouter。您可以在
docs/users/android_quickstart.md 中找到 BRouter Android 应用的详细
文档。
使用 Locus 的 Android
您可以在 Android 设备上使用 BRouter 作为 Locus Map 的离线路由引擎。这是目前 在 Android 设备上使用 BRouter 功能最丰富且维护最完善的解决方案。
关于如何设置此功能的完整文档可在 https://www.locusmap.eu/locus-map-can-navigate-offline/ 获取。
使用 OSMAnd 的 Android
或者,您也可以使用 BRouter 作为 OSMAnd 在您的 Android 设备上的离线路由引擎。
关于如何设置此功能的完整文档可在
docs/users/osmand.md 获取。
Windows/Linux/Mac OS 上的 BRouter
构建和安装
要编译 BRouter Android 应用,必须首先在主文件夹中名为 local.properties 的文件中设置 Android SDK 路径:
sdk.dir=<your/android/sdk/path>
使用 Android 应用构建 BRouter(如果已设置 Android SDK 路径):
./gradlew clean build
在没有 Android 应用的情况下构建 BRouter:
./gradlew clean build -x :brouter-routing-app:build
构建包含所有依赖类的服务器和地图创建器的 JAR 文件:
./gradlew clean build fatJar # places JAR file in brouter-server/build/libs/
构建用于分发的 ZIP 文件,包含 readme、配置文件、APK 和 JAR:
./gradlew distZip # places ZIP file in brouter-server/build/distributions/
获取所需的 segments(数据)文件
路由数据文件以 5*5 度文件的形式组织, 文件名包含该方格的西南角坐标,这意味着:
- 您想在 West48/North37 附近进行路由 -> 您需要
W50_N35.rd5 - 您想在 East7/North47 附近进行路由 -> 您需要
E5_N45.rd5
这些在 BRouter 中被称为 "segments" 的数据文件,是从 OpenStreetMap 数据生成的,并存储为自定义的 二进制格式 (rd5),以提高 BRouter 路由的效率。
从 brouter.de 下载
覆盖整个地球的 Segments 文件每周在 https://brouter.de/brouter/segments4/ 生成。
您可以下载一个或多个 segments 文件,覆盖您想要路由的地球区域,
并将其放入 misc/segments4 目录中。
自行生成 segments 文件
您也可以直接从 OpenStreetMap 数据的 planet dump (或 GeoFabrik extract)生成所需的 segments 文件。
关于此操作的更多文档可在
docs/developers/build_segments.md 文件中找到。
(可选)生成 profile 变体
此仓库包含针对多种不同
交通方式的 BRouter profile 示例。其中大多数可以通过设置
profile 文件第一个 global 上下文中的变量轻松进行自定义。
在 misc/scripts/generate_profile_variants.sh 中提供了一个辅助脚本,
可帮助您快速基于默认 profile 生成变体,以创建
覆盖大多数基本使用情况的默认 profile 集合。
请参阅
docs/developers/profile_developers_guide.md
以获取关于 profile 编辑和自定义的详细指南。
运行 BRouter HTTP 服务器
辅助脚本在 misc/scripts/standalone 中提供,用于快速为各种平台启动
BRouter HTTP 服务器。
- Linux/Mac OS:
./misc/scripts/standalone/server.sh - Windows (使用 Bash):
./misc/scripts/standalone/server.sh - Windows (使用 CMD):
misc\scripts\standalone\server.cmd
此 HTTP 服务器暴露的 API 端点记录在
brouter-server/src/main/java/btools/server/request/ServerHandler.java
文件中。
服务器在标准输出上为每个路由请求输出日志数据。对于每个路由 请求,会打印一行包含以下八个字段的日志。字段之间 以空白字符分隔。
- 时间戳,采用 ISO8601 格式,例如
2024-05-14T21:11:26.499+02:00 - 当前服务器会话计数(1-999 的整数)或在检测到新 IP 地址时为 "new"
- IP 地址(IPv4 或 IPv6),前缀为
ip= - 路由请求的持续时间(毫秒),前缀为
ms= - 分隔符
-> - HTTP 请求方法
- HTTP 请求 URL
- HTTP 请求版本
日志输出示例:
2024-05-14T21:11:26.499+02:00 new ip=127.0.0.1 ms=189 -> GET /brouter?lonlats=13.377485,52.516247%7C13.351221,52.515004&profile=trekking&alternativeidx=0&format=geojson HTTP/1.1
2024-05-14T21:11:33.229+02:00 1 ip=127.0.0.1 ms=65 -> GET /brouter?lonlats=13.377485,52.516247%7C13.351221,52.515004&profile=trekking&alternativeidx=0&format=geojson HTTP/1.1
使用 Docker 的 BRouter
要构建 Docker 镜像,请在(项目顶层目录中)运行:
docker build -t brouter .
按照上一章所述下载分段文件。包含分段文件的文件夹可以挂载到容器中。按如下方式运行 BRouter:
docker run --rm \
-v ./misc/scripts/segments4:/segments4 \
-p 17777:17777 \
--name brouter \
brouter
这将使用一组默认的路由配置文件启动 brouter。它将在端口 17777 上可访问。
如果您想提供自己的路由配置文件,您也可以挂载包含自定义配置文件的文件夹:
docker run --rm \
-v ./misc/scripts/segments4:/segments4 \
-v /path/to/custom/profiles:/profiles2 \
-p 17777:17777 \
--name brouter \
brouter
文档
更多文档可在 docs 文件夹中找到。
相关项目
- nrenner/BRouter-web,一个基于 BRouter HTTP 服务器的 Web 界面。在线实例可用地址为 http://brouter.de/brouter-web/。
- poutnikl/Brouter-profiles, 一组 BRouter 配置文件。
- Phyks/BRouterTesting,一组 用于帮助开发新 BRouter 配置文件的测试用例。
许可证
BRouter 采用 MIT License 发布。