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

使用sf包在巴西地图添加坐标点失败,求解决方案

解决sf+ggplot绘制巴西地图时坐标点错位问题

问题根源

geobr加载的巴西地图默认使用EPSG:4674(SIRGAS 2000)坐标系,而你的坐标点数据集大概率是EPSG:4326(WGS84经纬度),坐标系不匹配导致点无法正确叠加在地图上。

解决步骤

1. 检查并统一坐标系

先确认两者的坐标系信息:

# 查看地图的坐标系
st_crs(brasil)

# 查看坐标点数据集的坐标系
st_crs(unidades_lat_long)

若点数据坐标系为EPSG:4326,将其转换为与地图一致的坐标系:

unidades_lat_long <- st_transform(unidades_lat_long, crs = st_crs(brasil))

如果你的点数据未设置坐标系,先手动指定(假设是WGS84经纬度):

st_crs(unidades_lat_long) <- 4326

2. 修正绘图代码

geom_sf会自动识别sf对象的geometry列,无需手动指定aes(geometry = geom);同时调整点的样式和主题参数,匹配期望效果:

library(ggplot2)
library(sf)
library(geobr)

# 加载地图数据
brasil <- read_state(year = 2020, showProgress = FALSE)

# 统一坐标系
unidades_lat_long <- st_transform(unidades_lat_long, crs = st_crs(brasil))

# 绘图
ggplot() +
  geom_sf(data = brasil, fill = "white") +
  geom_sf(data = unidades_lat_long, color = "black", size = 1.2) + # 调整点大小让显示更清晰
  labs(title = "Unidades fixas -  Brasil") +
  theme(
    legend.position = "none",
    plot.title = element_text(hjust = 0.5),
    plot.caption = element_text(hjust = 0, face = "italic", lineheight = 1),
    axis.title = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    panel.background = element_blank()
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:17:41