1 个不稳定版本
0.1.0 | 2024年7月25日 |
---|
#54 in 地理空间
109 每月下载次数
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