如何查看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
相关产品推荐
相关产品推荐

