跳转到主要内容

基于OpenStreetMap数据的简单路由

项目描述

pyroutelib3

GitHub | 文档 | 问题跟踪器 | PyPI

基于OSM数据的简单路由。

pyroutelib3是一个用于在OpenStreetMap数据上简单路由的Python库。

import pyroutelib3

live_graph = pyroutelib3.osm.LiveGraph(pyroutelib3.osm.CarProfile())

start_node = live_graph.find_nearest_node((52.23201, 21.00737))
end_node = live_graph.find_nearest_node((52.24158, 21.02807))

route = pyroutelib3.find_route_without_turn_around(live_graph, start_node.id, end_node.id)
route_lat_lons = [live_graph.get_node(node).position for node in route]

上面的示例使用了osm.LiveGraph,它会自动下载OpenStreetMap数据拼图并将其缓存在您的磁盘上。从像Geofabrik OSM数据提取这样的服务事先下载数据会更为明智。

import pyroutelib3

with open("mazowieckie-latest.osm.pbf", "rb") as f:
    graph = pyroutelib3.osm.Graph.from_file(pyroutelib3.osm.CarProfile(), f)

start_node = graph.find_nearest_node((52.23201, 21.00737))
end_node = graph.find_nearest_node((52.24158, 21.02807))

route = pyroutelib3.find_route_without_turn_around(graph, start_node, end_node)
route_lat_lons = [graph.get_node(node).position for node in route]

pyroutelib3不仅能够将OpenStreetMap数据解析为图(见osm模块),还包含了A*路径查找算法(find_routefind_route_without_turn_around函数)和k-d树数据结构(KDTree类)的通用实现。

该库的设计考虑到了可扩展性,并且大多数组件都可以通过使用定义良好的协议来完全替换为自定义组件。例如,提供了一个nx.GraphAdaptor以使用networkx图与pyroutelib3的功能。

安装

pip install --upgrade pyroutelib3

pyroutelib3 使用 语义化版本控制。在指定对该库的依赖时,始终使用主要版本号的约束,例如 pyroutelib3 ~= 2.0.0

请注意,该库的版本1与版本2不兼容。

功能

  • 通用的A*算法实现(find_routefind_route_without_turn_around 函数)
  • 通用的图数据结构(SimpleGraph 类)
  • 通用的k-d数据结构(KDTree 类)
  • 通过使用定义良好的协议进行扩展(protocols 模块)
    • networkx 兼容性(nx.GraphAdaptornx.ExternalGraphAdaptor 类)
  • OSM XMLOSM PBF 文件解析(osm.reader.read_features 函数)
  • OpenStreetMap 数据 转换为可用的图(osm.Graph 类)
    • 通过使用不同的配置文件实现过程的高度可定制性。
    • 通过使用对非首选标签的惩罚来表达路径偏好。
    • 尊重路径上的 访问限制
    • 支持 转向限制,包括 restriction:TRANSPORTexempt 标签。
    • 动态下载数据(osm.LiveGraph 类)

许可证

pyroutelib3 根据 GNU GPL v3(或任何后续版本)进行分发。

© 版权 2024 Mikołaj Kuranowski

pyroutelib3 是免费软件:您可以在自由软件基金会发布的 GNU 通用公共许可证条款下重新分发和/或修改它;许可证的第3版,或者(根据您的选择)许可证的任何后续版本。

pyroutelib3 的分发是为了希望它是有用的,但没有任何保证;甚至没有对适销性和特定目的适用性的暗示性保证。有关详细信息,请参阅 GNU 通用公共许可证。

您应该已经收到一份 GNU 通用公共许可证副本,与 pyroutelib3 一起。如果没有,请参阅 https://gnu.ac.cn/licenses/

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pyroutelib3-2.0.0.tar.gz (63.1 kB 查看哈希)

上传时间

构建分布

pyroutelib3-2.0.0-py3-none-any.whl (66.0 kB 查看哈希)

上传时间 Python 3

由以下支持