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

Shapely判断Point是否在Polygon范围内时出现AssertionError如何解决

根因分析

  • 你字典中存储的是WKT(Well-Known Text)格式的几何字符串,Shapely的Polygon构造函数不直接接收该类字符串作为入参,你需要先将WKT字符串解析为Shapely可识别的几何对象,直接传入WKT字符串是触发本次断言错误的核心原因。
  • 附加潜在问题:你调用函数时的入参顺序和函数定义不匹配,函数定义第一个参数是经度long、第二个是纬度lat,但你的调用代码传入的是Lat在前Long在后,会导致后续点坐标匹配出错。

修复方案

首先引入Shapely的WKT解析工具,修改你的查询函数如下:

from shapely.wkt import loads as wkt_loads
from shapely.geometry import Point

def poly_lookup(long, lat, geom_dict):
    # 点对象只需要创建一次,放到循环外提升效率
    point = Point(long, lat)
    for key, val in geom_dict.items():
        # 用wkt_loads解析WKT字符串,直接得到Polygon对象
        polygon = wkt_loads(val)
        if point.within(polygon):
            return key

调用时注意参数顺序,传入poly_lookup(Long, Lat, geom_dict)即可。

如果修改后仍然报错,可以单独打印出错的val值,排查WKT字符串本身是否存在格式问题:

  • 多边形WKT首尾坐标是否完全一致(闭合要求)
  • 坐标点数量是否至少3个
  • 坐标格式、括号结构是否符合WKT规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:24:01