我正在尝试与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,相同的结果。
表和数据可以在这里找到:
表名:mountainbike_pavement_temp2public.mountainbike_strecken_temp2
[从mountainbike_pavement_temp2到mountainbike_strecken_temp2的第一个顶点的距离全部为0,这是通过postgis中的ST_Distance计算得出的(请参见下面的评论)。因此,我认为有一个交叉点。
问题是pavement
行与strecken
行不完全重合。具体来说,它们包含不位于POINT ( -43663.049707713886 245429.5072260416 )
线串上的顶点strecken
。这意味着相交不包括strecken
线的整个长度。