我有一张表l_t_troncon,带有一个gest列LINESTRING。它代表了一条道路。
现在,我想检测路径是否与其他路径相交。
有时,当我使用ST_INTERSECTS时,它会显示为False。 然而,在同一个查询中,ST_DISTANCE表示0,ST_INTERSECTION表示存在交集。
在地图上,有一个交叉点。
它是表本身的连接,SRID是相同的。 和geom列是几何(而不是地理)。
我不知道为什么会这样。 我使用官方postgresql APT repo中的postgresql 9.4和postgis 2.1.8。
有任何解释吗?
我的疑问:
SELECT lt2.id,
ST_DISTANCE(lt.geom, lt2.geom) as DIS,
ST_SRID(lt.geom) as SRID,
ST_ASTEXT(lt.geom) as GEOM1,
ST_ASTEXT(lt2.geom) as GEOM2,
ST_CROSSES(lt.geom, lt2.geom) as CROSSES,
ST_INTERSECTS(lt.geom, lt2.geom) as INTERSECTS,
ST_DWITHIN(lt.geom, lt2.geom, 0) as DWITHIN,
ST_EQUALS(ST_ClosestPoint(lt.geom, lt2.geom), ST_ClosestPoint(lt2.geom, lt.geom)) as POINTS_EQUALS,
ST_ASTEXT(ST_INTERSECTION(lt.geom, lt2.geom)) as INTERSECTION
FROM l_t_troncon lt
JOIN l_t_troncon lt2 ON lt.id != lt2.id
WHERE lt.id = 3253 ORDER BY DIS ASC;
结果:
ID DIS SRID GEOM1 GEOM2 CROSSES INTERSECTS DWITHIN POINTS_EQUALS INTERSECTION
3251 0 2154 LINESTRING(1090785.76652617 6536888.19328297,1090833.26031043 6536868.26841502) LINESTRING(1090552.31321667 6538203.74023832,1090799.01544745 6536813.53348014) f f t t POINT(1090785.76652617 6536888.19328297)
3252 52.7247742247967 2154 LINESTRING(1090785.76652617 6536888.19328297,1090833.26031043 6536868.26841502) LINESTRING(1090799.01544745 6536813.53348014,1097373.76929105 6537183.45894039) f f f f GEOMETRYCOLLECTION EMPTY
3248 63.7211646996764 2154 LINESTRING(1090785.76652617 6536888.19328297,1090833.26031043 6536868.26841502) LINESTRING(1083213.56795189 6536386.7418127,1090799.01544745 6536813.53348014) f f f f GEOMETRYCOLLECTION EMPTY
如果我尝试LINESTRINGS:
SELECT ST_DISTANCE(ST_GEOMFROMTEXT('LINESTRING(1090785.76652617 6536888.19328297,1090833.26031043 6536868.26841502)', 2154),
ST_GEOMFROMTEXT('LINESTRING(1090552.31321667 6538203.74023832,1090799.01544745 6536813.53348014)', 2154))
结果是4.06621238136966e-09
SELECT ST_ASTEXT(ST_INTERSECTION(ST_GEOMFROMTEXT('LINESTRING(1090785.76652617 6536888.19328297,1090833.26031043 6536868.26841502)', 2154),
ST_GEOMFROMTEXT('LINESTRING(1090552.31321667 6538203.74023832,1090799.01544745 6536813.53348014)', 2154)))
结果是GEOMETRYCOLLECTION EMPTY
问题似乎只出现在第一个结果上(ID 3251)。对其他人都有好结果