#openstreetmap #petgraph #mobility #data-science #cache #isochrone

bin+lib osm_graph

该库提供了一套从地理坐标生成等时区的工具。它利用OpenStreetMap数据构建道路网络,并计算在指定时间限制内可到达的区域。该库为Rust和Python设计,提供高性能和易于集成到数据科学工作流程中。

2 个版本

0.1.1 2024年2月22日
0.1.0 2024年2月2日

107地理空间

每月 33 次下载

MIT 许可证

39KB
733

OSM_graph

快速为Python和Rust生成等时区!

该库提供了一套从地理坐标生成等时区和逆等时区的工具。它利用OpenStreetMap数据构建道路网络,并计算在指定时间限制内可到达的区域。该库为Rust和Python设计,提供高性能和易于集成到数据科学工作流程中。

Isochrones

特性

  • 图构建:解析OpenStreetMap数据以构建表示道路网络的图。
  • 等时区计算:使用Dijkstra算法生成等时区,即在给定点出发在指定时间段内可到达的区域。
  • 逆等时区计算:确定在指定时间段内可以到达的点所在区域。
  • 凹凸包:支持生成等时区周围的凹凸包,以获得更准确或简化的地理形状。
  • 缓存:实现缓存机制以存储和检索预先计算的图,以便更快地访问。
  • Python集成:提供Python绑定,以便在Python脚本、笔记本和应用中直接使用库的功能。
  • 并发支持:利用Rust的并发功能,在大型数据集上高效地计算等时区。

GeoJSON输出:将等时区转换为GeoJSON格式,以便轻松可视化和集成到地图工具中。

安装

[dependencies]
osm-graph = "0.1.0"

要在Rust中使用库,将其添加到您的Cargo.toml中

pip install pysochrone

对于Python,

maturin develop

或者,确保您已安装Rust和maturin,然后构建和安装Python包

使用方法

use osm_graph::{calculate_isochrones_from_point, HullType};

async fn main() {
    let isochrone = isochrone::calculate_isochrones_from_point(
        48.123456,
        11.123456,
        10_000.0,
        vec![300.0, 600.0, 900.0, 1_200.0, 1_500.0, 1_800.0],
        overpass::NetworkType::Drive,
        isochrone::HullType::Convex,
    )
    .await
    .unwrap();
}

Rust

import pysochrone

isochrones = pysochrone.calc_isochrones(
    48.123456, 
    11.123456, 
    5000, 
    [600, 1200, 1800], 
    "Drive", 
    "Convex"
)

Python

[ ] 测试和基准测试。 [ ] 可自定义速度限制:允许用户为不同类型的道路指定自定义速度限制。 [x] 支持行人及自行车网络:扩展图构建以支持行人及自行车网络类型。 [ ] OSM图的拓扑简化,以提高下游分析的效率。 [ ] 附加道路网络分析。 [ ] 路由引擎。 [ ] 高级缓存策略:实施更复杂的缓存机制以处理动态查询参数。 [ ] 交互式可视化工具:开发一套用于在Web应用程序中交互式可视化等时线的工具。 [ ] API集成:提供与第三方API的集成选项,以增强数据准确性和功能。 [ ] 优化和并行计算:进一步优化图算法并探索大规模数据的并行计算选项。

贡献

欢迎贡献力量!请提交pull请求,提出讨论性问题,并提出新功能或改进建议。

许可证

此库采用MIT许可证。

依赖项

~18–31MB
~480K SLoC