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

OpenStreetMapX.jl按距离筛选节点链路及绘制边界方法问询

OpenStreetMapX.jl 范围查询与边界绘图实现方案

以下是针对需求的具体实现步骤,基于OpenStreetMapX.jl包完成:

前置准备:坐标转换

OpenStreetMapX的地图数据采用UTM坐标系(米为单位),因此首先需要将经纬度点A=(lat, long)转换为UTM坐标:

# 替换为你的实际坐标
lat, long = 39.5296, -119.8138 
a_lla = LLA(lat, long)
# 转换为地图对应的UTM坐标
a_utm = transform(a_lla, mx.projection)

1. 获取A点1公里范围内的节点与链路

节点查询

使用within_radius函数直接筛选出半径1000米内的所有节点:

nodes_1km = within_radius(mx.nodes, a_utm, 1000.0)

链路查询

从地图边集合中筛选出起点或终点在1公里节点集合内的链路:

edges_1km = [e for e in mx.edges if e.src in nodes_1km || e.dst in nodes_1km]

2. 获取A点2-5公里范围内(不含1公里内)的节点与链路

节点查询

先获取5公里内的所有节点,再排除1公里内的节点,得到2-5公里范围的节点集合:

nodes_5km = within_radius(mx.nodes, a_utm, 5000.0)
nodes_2to5km = setdiff(nodes_5km, nodes_1km)

链路查询

筛选出至少一端在2-5公里节点集合内,且两端不同时在1公里内的链路:

edges_2to5km = [e for e in mx.edges if 
    (e.src in nodes_2to5km || e.dst in nodes_2to5km) && 
    !(e.src in nodes_1km && e.dst in nodes_1km)
]

3. 绘制范围边界

通过生成圆形边界的坐标点,结合Plots.jl叠加到地图上:

using Plots

# 生成圆形边界的经纬度坐标点
function generate_circle_boundary(center_utm::UTM, radius::Float64, num_points::Int=100)
    angles = range(0, 2π, length=num_points)
    # 生成UTM坐标系下的圆形点
    utm_points = [UTM(center_utm.x + radius*cos(θ), center_utm.y + radius*sin(θ), center_utm.zone, center_utm.isnorth) for θ in angles]
    # 转换回经纬度
    lla_points = [transform(p, LLA) for p in utm_points]
    return [p.lon for p in lla_points], [p.lat for p in lla_points]
end

# 生成各半径的边界坐标
longs_1km, lats_1km = generate_circle_boundary(a_utm, 1000.0)
longs_2km, lats_2km = generate_circle_boundary(a_utm, 2000.0)
longs_5km, lats_5km = generate_circle_boundary(a_utm, 5000.0)

# 绘制基础地图并叠加边界
plotmap(mx, title="范围边界可视化")
plot!(longs_1km, lats_1km, label="1km 边界", color=:red, linewidth=2)
plot!(longs_2km, lats_2km, label="2km 边界", color=:green, linewidth=2)
plot!(longs_5km, lats_5km, label="5km 边界", color=:blue, linewidth=2)

关键函数说明

  • within_radius: OpenStreetMapX核心范围查询函数,用于获取指定UTM点周围指定半径内的节点
  • transform: 实现LLA(经纬度)与UTM坐标之间的转换,需传入地图的投影参数mx.projection
  • plotmap: OpenStreetMapX内置的地图绘制函数,可直接绘制加载的地图数据

内容的提问来源于stack exchange,提问作者cherry blossom tree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:55:14