从同一个postgis表中查找相交的坐标

时间:2013-11-03 20:16:32

标签: sql postgis

我目前有两个表,一个用于状态,并包含一个唯一的ID,状态名称和状态的坐标。第二个是城市区域,其中包含唯一的ID,城市区域名称和该区域的坐标。我试图找出哪些城市区域相互交叉,同时排除自交叉(意味着如果区域A与区域B相交,区域B与区域A相交,则只返回一个结果,而不是两者)

我目前有代码:

SELECT s.name 
FROM urbanTable AS s, stateTable as a 
WHERE ST_Intersects(s.coords, s.coords) 
AND (a.gid != s.gid) 
GROUP BY s.name;

然而,这并没有返回正确数量的结果。非常感谢任何和所有的帮助!谢谢!

2 个答案:

答案 0 :(得分:3)

假设gidurbanTable

上的唯一标识符
select
    u1.name,
    u2.name
from
    urbanTable u1,
    urbantable u2
where
    u1.gid < u2.gid and -- avoid duplicating results
    ST_Intersects(u1.coords, u2.coords)

答案 1 :(得分:0)

我认为您在测试ST_Intersects(s.coords, s.coords)而不是ST_Intersects(s.coords, a.coords)

时会出现拼写错误