You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看OSM ROAD_CLASSES道路类型及用OSMX.jl提取公共交通要素并绘图

问题1:查看OpenStreetMap的ROAD_CLASSES中的道路类型

ROAD_CLASSES是OSMX.jl内置的字典结构,存储了不同道路类型对应的路由优先级、绘图颜色等元数据。直接在Julia交互环境中执行以下代码即可查看所有包含的道路类型及对应参数:

using OSMX
# 打印完整的ROAD_CLASSES字典,包含道路类型与对应属性
println(ROAD_CLASSES)
# 仅提取所有道路类型的名称
road_type_names = keys(ROAD_CLASSES)
println(road_type_names)

执行后会得到类似"motorway", "trunk", "primary", "secondary"等道路类型列表,每个类型对应包含:priority(路由优先级)、:color(绘图颜色)等字段的子字典。

问题2:从本地map.osm文件识别并绘制公共交通要素

步骤1:读取解析本地OSM文件

首先用OSMX.jl加载本地OSM文件:

using OSMX, Plots
# 读取本地map.osm文件
osm_data = OSMX.readOSM("map.osm")

步骤2:筛选公共交通相关节点与链接

OSM通过标签区分公共交通要素,可按以下规则筛选:

  • 公交站点节点:标签包含highway=bus_stop或public_transport=stop_position
  • 地铁站点节点:标签包含railway=station且station=subway,或railway=subway_entrance
  • 公共交通线路(链接):标签包含route=bus(公交线)、route=subway(地铁线),或railway=subway(地铁轨道)

筛选代码示例:

# 筛选公交站点节点
bus_stops = [node for node in osm_data.nodes if haskey(node.tags, "highway") && node.tags["highway"] == "bus_stop"]
# 筛选地铁站点节点
subway_stations = [node for node in osm_data.nodes if haskey(node.tags, "railway") && node.tags["railway"] == "station" && haskey(node.tags, "station") && node.tags["station"] == "subway"]
# 筛选公交/地铁线路(way对象)
pt_routes = [way for way in osm_data.ways if (haskey(way.tags, "route") && way.tags["route"] in ["bus", "subway"]) || (haskey(way.tags, "railway") && way.tags["railway"] == "subway")]

步骤3:可视化公共交通要素

使用Plots.jl将筛选出的节点和线路绘制出来:

# 初始化绘图画布
plot(size=(800, 800), title="Local Public Transport Network")
# 绘制公共交通线路
for way in pt_routes
    # 获取线路对应的所有节点的经纬度坐标
    route_coords = [(node.lon, node.lat) for node in osm_data.nodes if node.id in way.nodes]
    plot!(first.(route_coords), last.(route_coords), color="darkblue", linewidth=2, label="PT Routes")
end
# 绘制公交站点(红色圆点)
scatter!([node.lon for node in bus_stops], [node.lat for node in bus_stops], color="crimson", markersize=5, label="Bus Stops")
# 绘制地铁站点(紫色圆点)
scatter!([node.lon for node in subway_stations], [node.lat for node in subway_stations], color="darkviolet", markersize=6, label="Subway Stations")
# 显示绘图
display(current())

内容的提问来源于stack exchange,提问作者Rainbow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:02:40