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

如何根据空间位置取值并直接通过world变量在地图国家中心标注名称?

问题解答

可以直接通过world变量实现国家中心标注的需求,无需额外引入其他数据源,修改后的可运行代码如下:

# 加载所需包
library(sf)
library(sp)

# 提取沙特阿拉伯矢量边界
saudi = world[world$name_long == "Saudi Arabia", ]
# 绘制沙特底图
plot(st_geometry(saudi), expandBB = c(0, 0.2, 0.1, 1), col = "gray", lwd = 2)
# 叠加周边国家边界
plot(world[0], add = TRUE)

# 计算所有国家的几何中心点,取最大多边形的中心避免飞地影响
world_centers <- st_centroid(world, of_largest_polygon = TRUE)
# 获取当前绘图窗口的坐标范围
plot_extent <- st_bbox(st_as_sfc(st_bbox(par("usr"))))
# 筛选当前可见范围内的国家中心
visible_centers <- st_intersection(world_centers, plot_extent)
# 在中心位置标注国家名称,cex可调整文字大小
text(st_coordinates(visible_centers), labels = visible_centers$name_long, cex = 0.7, col = "black")
关键逻辑说明
  • 直接基于world内置的几何字段计算中心坐标,不需要额外调用其他数据接口
  • 增加可见范围筛选逻辑,仅标注当前视窗内的国家,不会生成冗余标注
  • 可自行调整text()函数的cex、col、font等参数,适配你的绘图风格需求
参考效果对比
  • 当前实现效果:
    当前实现效果
  • 期望标注效果:
    期望标注效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:36:01