为sf对象设置正确CRS以匹配荷兰图层并绘制坐标点
解决SF对象CRS匹配问题(适配荷兰RD New投影)
嘿,这事儿不难搞!你手里的荷兰图层用的是荷兰RD New投影(对应EPSG:28992),虽然它的SRID显示NA,但proj4string参数是完全正确的。下面分两种情况给你操作步骤:
情况1:你的坐标点SF对象还没设置CRS
- 如果你的点是GPS采集的经纬度(WGS84坐标系,EPSG:4326):
先给点对象指定原始CRS,再转换到RD New投影:# 假设你的点对象叫my_points st_crs(my_points) <- 4326 # 标记原始坐标为WGS84经纬度 my_points_rd <- st_transform(my_points, 28992) # 转换到荷兰RD New投影 - 如果你的点已经是米制的RD New坐标(和图层的bbox范围匹配):
直接给点对象设置对应CRS就行,两种方式任选:# 方式1:用完整的proj4string(和图层一致) st_crs(my_points) <- "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs" # 方式2:用更简洁的EPSG码(推荐) st_crs(my_points) <- 28992
情况2:你的坐标点SF对象已有CRS但不匹配
直接用st_transform转换到目标投影就行:
my_points_rd <- st_transform(my_points, 28992)
验证并叠加绘制
转换完成后,你可以先确认两个图层的CRS一致:
st_crs(my_points_rd) == st_crs(dutch_layer) # 返回TRUE就没问题
然后就能正常叠加绘制了:
plot(st_geometry(dutch_layer), main = "荷兰图层+叠加坐标点") plot(st_geometry(my_points_rd), add = TRUE, col = "darkred", pch = 16, cex = 0.8)
内容的提问来源于stack exchange,提问作者Tdebeus
相关产品推荐
相关产品推荐

