使用ST_Intersection和Postgis的错误结果

问题描述 投票:0回答:1

我正在尝试与Postgis做一个简单的交集,但是我得到的结果是错误的。该功能开始时大约缺少7米。

这是我用于交集的sql命令:

select ST_Intersection(t2.wkb_geometry,
                     t1.wkb_geometry), t2.sde_id as s_sde, t2.mtb_id,
ST_Length(ST_Intersection(t1.wkb_geometry,t2.wkb_geometry))
from
public.mountainbike_pavement_temp2 t1 inner join public.mountainbike_strecken_temp2 t2 on
t1.wkb_geometry && t2.wkb_geometry;

结果长度应为187米左右,但结果长度仅为180米左右。我已经尝试了很多,但是我找不到任何原因,为什么会这样,以及如何解决它。

当我在ArcGis中进行此相交时,一切都会按预期工作。

我尝试过postgres 9.6.15和postgis 2.4

并且还有

postgres 12.1和postgis 3.0,相同的结果。

表和数据可以在这里找到:

https://pastebin.com/4vHqRYx5

https://pastebin.com/RAfzXXW6

表名:mountainbike_pavement_temp2public.mountainbike_strecken_temp2

[从mountainbike_pavement_temp2到mountainbike_strecken_temp2的第一个顶点的距离全部为0,这是通过postgis中的ST_Distance计算得出的(请参见下面的评论)。因此,我认为有一个交叉点。

enter image description here

postgresql geometry postgis intersection
1个回答
2
投票

问题是pavement行与strecken行不完全重合。具体来说,它们包含不位于POINT ( -43663.049707713886 245429.5072260416 )线串上的顶点strecken。这意味着相交不包括strecken线的整个长度。

© www.soinside.com 2019 - 2024. All rights reserved.