在sql中选择邻居多边形

时间:2016-05-18 12:50:41

标签: sql postgresql gis postgis

我有一个数百万记录的数据库(我国的所有房屋)。现在我想选择所有有相邻记录的记录(附有房子的记录),并给它一个状态' T'。每条记录都有一个几何列,如下所示:

POLYGON(( 254059.737 593504.637 0.0, 254059.227 593500.0 0.0, 254059.216 593499.899 0.0, 254058.242 593500.0 0.0, 254057.914 593500.034 0.0, 254057.893 593500.0 0.0, 254057.807 593499.863 0.0, 254052.074 593490.692 0.0, 254052.182 593490.639 0.0, 254058.138 593490.002 0.0, 254057.932 593488.165 0.0, 254074.487 593486.413 0.0, 254075.981 593500.0 0.0, 254076.265 593502.583 0.0, 254076.561 593502.55 0.0, 254076.594 593502.847 0.0, 254059.737 593504.637 0.0))

是否有可能使用sql语句执行此操作?我从未使用SQL,所以我是一个完整的新手。详细解释是优选的。

我开始时:

SELECT id, geometry, 'T'::text as type 
FROM houses 
WHERE

我想我必须在WHERE子句中添加一些交叉函数?

1 个答案:

答案 0 :(得分:0)

查看ST_IntersectionST_Crosses

所以,我做这样的事情:

SELECT DISTINCT
    h1.id,
    'T'::text as type
FROM
    houses h1,
    houses h2
WHERE
    h1.id <> h2.id and
    ST_Intersects(h1.geometry, h2.geometry)