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

R语言中同CRS(EPSG:3994)下新西兰坐标点叠加Shapefile失败

解决坐标点无法叠加到Shapefile的问题

以下是逐步排查和解决的方法:

1. 确认两个图层的CRS是否完全匹配

你提到两者都是EPSG:3994,但实际可能存在定义差异(比如proj4字符串或WKT格式不一致)。先运行以下代码检查:

# 查看两个图层的CRS详情
st_crs(eff_sp4)
st_crs(CRA6_shp)

如果输出的EPSG代码、proj4字符串不完全一致,直接指定EPSG代码转换,而非依赖st_crs(CRA6_shp):

# 确保eff_sp4转换为标准EPSG:3994
eff_sp4 <- st_transform(eff_sp4, 3994)

如果eff_sp4本身已经是3994,直接删掉st_transform那行代码,避免重复转换导致错误。

2. 检查坐标点的范围是否在Shapefile范围内

坐标点可能不在Shapefile的显示区域内,导致被挤出画布。运行以下代码对比边界:

# 输出两个图层的边界框
st_bbox(eff_sp4)
st_bbox(CRA6_shp)

EPSG:3994是以米为单位的坐标系,新西兰区域的坐标大概是x: 1000000-2000000,y: -5000000--3000000。如果eff_sp4的坐标是x: 160-180、y: -30--50,说明它实际是WGS84地理坐标系(EPSG:4326),而非3994,这时候需要从4326转换:

# 从WGS84地理坐标系转换为3994
eff_sp4 <- st_transform(eff_sp4, 3994, crs = 4326)

3. 验证坐标点图层本身是否可显示

先单独绘制eff_sp4,确认图层本身有效:

ggplot() + 
  geom_sf(data = eff_sp4, color = "red", size = 5)

如果这一步看不到点,说明eff_sp4可能存在问题:

  • 用nrow(eff_sp4)检查是否有数据
  • 用st_is_valid(eff_sp4)检查几何对象是否有效

4. 简化代码排查

暂时去掉不必要的元素,用最简代码测试叠加:

ggplot() +
  geom_sf(data = CRA6_shp) +
  geom_sf(data = eff_sp4, color = "steelblue", size = 2)

如果能显示,再逐步加回标题、主题等元素,排查是否是其他代码影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:42:50