0

我目前有两张表,一张用于州,并保存一个唯一的 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;

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

4

2 回答 2

3

假设gid是唯一标识符urbanTable

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)
于 2013-11-03T20:31:15.117 回答
0

我认为你有一个错字,因为你测试ST_Intersects(s.coords, s.coords)而不是ST_Intersects(s.coords, a.coords)

于 2013-11-03T20:26:21.560 回答