Geospatial Geopandas geom_几乎等于方法给出了错误的输出
我有两个地理数据帧 地理框架1Geospatial Geopandas geom_几乎等于方法给出了错误的输出,geospatial,geopandas,Geospatial,Geopandas,我有两个地理数据帧 地理框架1 MULTILINESTRING((-0.87131 52.25771, -0.87144 52.25763, -0.87126 52.25756, -0.87146 52.25747, -0.87159 52.25756)) MULTILINESTRING((-0.87180 52.25758, -0.87167 52.25760, -0.87160 52.25767, -0.87148 52.25769, -0.87141 52.25774)) MULTILIN
MULTILINESTRING((-0.87131 52.25771, -0.87144 52.25763, -0.87126 52.25756, -0.87146 52.25747, -0.87159 52.25756))
MULTILINESTRING((-0.87180 52.25758, -0.87167 52.25760, -0.87160 52.25767, -0.87148 52.25769, -0.87141 52.25774))
MULTILINESTRING((-0.87190 52.25757, -0.87185 52.25767, -0.87171 52.25775, -0.87151 52.25777, -0.87151 52.25777))
地理框架2
MULTILINESTRING((-0.87131 52.25771, -0.87144 52.25763, -0.87126 52.25756, -0.87146 52.25747, -0.87159 52.25756))
MULTILINESTRING((-0.87190 52.25757, -0.87185 52.25767, -0.87171 52.25775, -0.87151 52.25777, -0.87151 52.25777))
在开始之前,从几何角度看,这两个集合完全相等。为了检查“geom_几乎等于”方法,我从geoframe2中删除了一个linestring并执行了该方法
features_equal = geoframe1.loc[geoframe1.geom_almost_equals(geoframe2, decimal=5)]
结果应该只给出两个实际上相等的几何体。
但我得到的结果只有1个几何体
**MULTILINESTRING((-0.87190 52.25757, -0.87185 52.25767, -0.87171 52.25775, -0.87151 52.25777, -0.87151 52.25777))**
这怎么会发生?
是否有任何内部处理导致错误操作?
请在这方面提供帮助。从GitHub复制我的答案
geoframe1.geom_几乎等于(geoframe2,十进制=5)
按行工作。它将对齐两个地理序列,并检查每行的几何图形是否几乎相等
在您的情况下,第一个与第一个检查,第一个为True
,因为两者相等。Second与Second进行检查,Second为False
,因为它们不同。第三个检查None
因此,您有
[True,False,False]
,它自然返回一行。谢谢martinfleis。到目前为止,我一直认为geoframe1的每一行都会将自己与geoframe2的所有行进行比较(就像嵌套的for循环),geopandas中是否有这样一个函数可以检查实际的几何相等性,而不是行?