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

在地图上连接HF电台发射与接收站点的技术实现求助

火腿电台发射机与接收机站点连接地图实现

问题背景

开展火腿电台(ham radio)项目时,需在地图上建立发射机与接收机站点间的配对连接,但原有代码无法实现预期的点对点连线效果。

原始数据

rx_sign <- c("2E0ILY/KIWI","ND7M","KP4MD","N2HQI","WA2N","WA2ZKD","OE9TAV","2E0PYB","OE9TAV","2E0ILY/KIWI")
rx_lat <- c(52.896,36.229,38.688,43.021,35.813,43.146,47.438,51.771,47.438,52.896)
rx_lon <- c(-2.625,-116.042,-121.292,-76.458,-82.542,-77.625,9.625,0.708,9.625,-2.625)
tx_sign <- c("2E0JCC","AA5GI","AC9YY","AC9YY","AC9YY","AC9YY","DC6EB","DG8GAD","DG8GAD","DK9MS")
tx_lat <- c(51.479,35.479,41.813,41.813,41.813,41.813,49.479,48.438,48.438,50.479)
tx_lon <- c(-2.708,-95.042,-88.042,-88.042,-88.042,-88.042,6.958,9.875,9.875,8.958)

map_data <- data.frame(rx_sign,rx_lat,rx_lon,tx_sign,tx_lat,tx_lon)

原有代码问题

原有代码中geom_line直接调用rx_lon/rx_lat和tx_lon/tx_lat,会把所有接收机点、所有发射机点分别连在一起,而非按配对关系绘制发射机到接收机的独立连线。

修正后的实现方案

核心是将宽格式的配对数据转换为长格式,让ggplot识别每条连线的起点与终点:

library(ggplot2)
library(tidyr)

# 处理数据:添加连接ID并转换为长格式
map_data_long <- map_data %>%
  mutate(link_id = row_number()) %>%
  pivot_longer(
    cols = c(rx_lon, tx_lon, rx_lat, tx_lat),
    names_to = c("type", ".value"),
    names_pattern = "(rx|tx)_(lon|lat)"
  )

# 绘制地图
base_world <- map_data("world")

ggplot() + 
  # 绘制世界地图底图
  geom_polygon(data=base_world, aes(x=long, y=lat, group=group), fill="lightgray", color="white") +
  # 按连接ID绘制发射机-接收机连线
  geom_line(data=map_data_long, aes(x=lon, y=lat, group=link_id), color="red", size=0.8) +
  # 绘制接收机点位
  geom_point(data=map_data, aes(x=rx_lon, y=rx_lat), colour = "yellow", size=1.5, alpha=0.7) +
  # 绘制发射机点位
  geom_point(data=map_data, aes(x=tx_lon, y=tx_lat), colour = "blue", size=1.5, alpha=0.7) +
  # 调整主题与投影
  theme_minimal() +
  theme(text = element_text(size=12), legend.position="none") +
  coord_quickmap()

代码说明

  • mutate(link_id = row_number()):为每一组配对生成唯一ID,确保每条连线独立
  • pivot_longer:将宽格式数据转换为长格式,把同一配对的发射机、接收机坐标归到同一ID下
  • geom_line(aes(group=link_id)):按连接ID分组,实现点对点连线
  • coord_quickmap():优化地图投影,避免经纬度变形

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:05:46