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

st_join结合st_within判断点在多边形内出现误判的技术问询

问题原因分析
  • 坐标精度与边界判断逻辑:st_within是严格的「点在多边形内部」判断,不包含边界。如果snake_1的点刚好落在多边形的边界线上(哪怕是经纬度微小精度误差导致),就会被判定为不在内部,返回NA。而可视化时受像素精度限制,看起来点在多边形范围内。
  • 多边形拓扑无效:如果df2的多边形存在自相交、重复节点、拓扑错误等问题,会导致空间关系判断异常,明明视觉上在内部的点被误判。
  • CRS不匹配:两个数据集的坐标参考系统(CRS)可能不一致,虽然可视化时自动对齐看起来位置正确,但空间判断基于原始坐标数值计算,CRS不匹配会导致计算偏差。
替代方案
  • 使用st_intersects作为join判断条件:该函数会判断点与多边形是否存在交集(包含边界和内部),能覆盖边界上的点的情况,代码示例:
    st_join(df1, df2, join = st_intersects)
    
  • 修复多边形拓扑:如果是多边形拓扑问题,先修复无效多边形再判断:
    df2_valid <- st_make_valid(df2)
    st_join(df1, df2_valid, join = st_within)
    
  • 检查并统一CRS:先确认两个数据集的CRS是否一致,不一致则转换为相同CRS:
    # 查看CRS
    st_crs(df1)
    st_crs(df2)
    # 转换df1的CRS匹配df2
    df1 <- st_transform(df1, st_crs(df2))
    st_join(df1, df2, join = st_within)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:22:33