基于OpenStreetMap数据的简单路由
项目描述
pyroutelib3
基于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_route
和find_route_without_turn_around
函数)和k-d树数据结构(KDTree
类)的通用实现。
该库的设计考虑到了可扩展性,并且大多数组件都可以通过使用定义良好的协议来完全替换为自定义组件。例如,提供了一个nx.GraphAdaptor
以使用networkx图与pyroutelib3的功能。
安装
pip install --upgrade pyroutelib3
pyroutelib3 使用 语义化版本控制。在指定对该库的依赖时,始终使用主要版本号的约束,例如 pyroutelib3 ~= 2.0.0
。
请注意,该库的版本1与版本2不兼容。
功能
- 通用的A*算法实现(
find_route
和find_route_without_turn_around
函数) - 通用的图数据结构(
SimpleGraph
类) - 通用的k-d数据结构(
KDTree
类) - 通过使用定义良好的协议进行扩展(
protocols
模块)- networkx 兼容性(
nx.GraphAdaptor
和nx.ExternalGraphAdaptor
类)
- networkx 兼容性(
- OSM XML 和 OSM PBF 文件解析(
osm.reader.read_features
函数) - 将 OpenStreetMap 数据 转换为可用的图(
osm.Graph
类)
许可证
pyroutelib3 根据 GNU GPL v3(或任何后续版本)进行分发。
© 版权 2024 Mikołaj Kuranowski
pyroutelib3 是免费软件:您可以在自由软件基金会发布的 GNU 通用公共许可证条款下重新分发和/或修改它;许可证的第3版,或者(根据您的选择)许可证的任何后续版本。
pyroutelib3 的分发是为了希望它是有用的,但没有任何保证;甚至没有对适销性和特定目的适用性的暗示性保证。有关详细信息,请参阅 GNU 通用公共许可证。
您应该已经收到一份 GNU 通用公共许可证副本,与 pyroutelib3 一起。如果没有,请参阅 https://gnu.ac.cn/licenses/。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。