相同CRS的两个sf对象执行st_join空间连接全返回NA问题求助
问题核心原因
你遇到的问题本质是坐标赋值逻辑错误:原始坐标表中的xcoord、ycoord是WGS84坐标系下的经纬度数值(单位:度),你并未对坐标做投影转换,仅直接给点数据错误标记了Amersfoort / RD New的CRS属性,导致点和社区边界的坐标范围完全不重叠,因此匹配结果全为NA。
解决步骤
- 第一步:给原始点数据标记正确的原生坐标系(WGS84,EPSG编码4326)
- 第二步:将点数据投影转换为和社区边界一致的Amersfoort / RD New坐标系
- 第三步:验证坐标范围匹配后,执行空间连接操作
正确代码示例
# 点数据转换、投影代码 locaties_sf <- locaties_df %>% # 先给原始经纬度标记正确的WGS84坐标系 st_as_sf(coords = c(x = "xcoord", y = "ycoord"), crs = 4326) %>% # 投影转换为和社区边界一致的坐标系 st_transform(crs = st_crs(neigbourhood_boundries_sf)) # 验证坐标范围:确认点的bbox和社区边界的x(10425~278026)、y(306846~621876)范围匹配 st_bbox(locaties_sf) # 执行空间连接 st_join(locaties_sf, neigbourhood_boundries_sf, join = st_within)
内容的提问来源于stack exchange,提问作者Tdebeus
相关产品推荐
相关产品推荐

