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

经shapely.wkt.loads转换后的多边形是否与原多边形为同一对象

问题原因与解决方案

1. 为什么new in liste返回no

Python中in运算符的匹配逻辑:对于自定义类实例,默认优先做身份匹配(即判断两个对象是否指向同一块内存地址),部分类会重写__eq__方法实现值匹配,但你的场景存在两个导致匹配失败的原因:

  • 你通过WKT序列化再反序列化得到的new是全新的Polygon实例,和原列表liste中的第一个对象内存地址完全不同
  • Shapely的==虽然重写为几何值匹配,但WKT序列化过程默认会截断原始坐标的存储精度,导致反序列化后的几何值和原对象存在极细微的数值差异,也会导致值匹配失败

你可以用以下方式判断几何相等,替代in运算符:

# 精确几何匹配,可调整tolerance参数适配精度误差
print('yes' if any(new.equals_exact(geom, tolerance=1e-9) for geom in liste) else 'no')

2. object at 0x7f8f8f24a880的含义

这是Python对象的虚拟内存地址,代表该实例在当前运行进程的内存空间中的存储位置。每生成一个新的实例(哪怕几何值完全相同),都会分配独立的内存地址,所以你反序列化得到的新对象地址和原列表中的对象地址必然不同。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:39:03