1 个不稳定版本

0.1.0 2024年7月25日

#54 in 地理空间

Download history 97/week @ 2024-07-21 12/week @ 2024-07-28

109 每月下载次数

MIT 许可证

2.5MB
3.5K SLoC

包含 (ELF 可执行文件/lib, 6.5MB) flatc

线性引用系统库

线性引用 允许相对于固定参考点识别曲线(道路、运河、铁路等)上的位置。

我们称

  • 锚点 为参考点:它可以是一公里碑、一个地标、一个交叉口...
  • 比例尺 是锚点的列表以及它们之间的理论距离,
  • 曲线 是要引用的对象的物理描述,
  • 线性引用方法(LRM)是比例尺和曲线的组合,
  • 线性引用系统(LRS)是完整的数据集。

虽然逻辑相当简单,但多个小的细微差别使得 LRS 难以使用。里程碑之间的距离发生变化(绕城镇修建的绕行道),曲线的起点发生偏移(火车站搬迁),河流及其并行运行的运河只有一个比例尺...

该库旨在处理许多边缘情况,并对数据假设很少

  • 锚点不总是数字,
  • 锚点不需要在曲线上,
  • 锚点之间的距离不是固定的,
  • 锚点之间的距离可能不匹配测量的距离,
  • 在球面坐标和投影坐标上工作,
  • 单个比例尺可以用于许多曲线。

绑定和 HTML 示例

核心库是用 rust 编写的。我们通过 WebAssembly 提供javascript绑定。这些绑定可以在 wasm 目录中构建。

cd wasm
npm install
npm build

示例

一个简单的 HTML 示例允许测试数据和函数

cd wasm
npm run serve

并在浏览器中打开 https://127.0.0.1:8080

如果您提供自己的 maplibre 风格,您可以自定义地图背景

MAPLIBRE_STYLE="https://your_tile_provider/style.json?key=42" npm run serve

使用 liblrs

使用 FlatBuffers 进行数据序列化

定义 LRS 的数据使用 FlatBuffers 格式 进行序列化。

模式在 schema/lrs.fbs 中描述。库是用 rust 编写的,并且 生成的文件 已提交。这意味着在构建和运行此项目时不需要 flatc 可执行文件。

如果您的贡献改变了架构,您将需要使用flatc生成文件。版本必须是发布版23.5.26。不要使用从master构建的版本。

flatc-o src--rust schema/lrs.fbs

规范

注释约定

请参阅如何在Rust中编写文档以保持代码整洁清晰(也请参阅此处的示例)。

从OpenStreetMap中提取几何数据

我们提供了一个二进制文件,可以从OpenStreetMap中提取几何数据并将其保存为FlatBuffer格式。

目前我们只处理铁路数据。必须提供描述LRM的标记。在法国,使用ref:FR:SNCF_Reseau

运行二进制文件

cargorun --release --bingeometry_from_osm ---i france.rail.osm.pbf -o osm.lrs.bin2 --lrm-tag=ref:FR:SNCF_Reseau

依赖项

~13MB
~205K SLoC