在 Postgis 中使用 ST_Intersects 连接表中

问题描述 投票:0回答:1

我有一个具有以下结构的表格:

几何 名字 所有权
01031... 楼主
01032... 楼主
01033... 巴兹 楼主
01034... 酒吧 租户
01035... 酒吧 租户
01036... 酒吧 租户

房东拥有广阔的区域,租户拥有其中的一小部分。

因此,租户的 geom 至少会与房东的 geom 相交。

我希望能够按姓名搜索房东(

select * from table where name = 'foo' and ownership = 'landlord';
)并获取房东拥有的所有几何图形,并获取在这些几何图形中包含几何图形的租户。

同样,我想寻找一个租户,获取他们租用的所有建筑物,并找到所有封闭的房东几何图形。

从概念上讲我无法理解它。 ST_Intersects 是正确的方法吗?

postgis
1个回答
0
投票

ST_Intersects
通常是要走的路。

如果存在不同的空间关系,例如租户行始终位于一排且只有一排房东行内,则其他方法(如

ST_Within
)可能会更好。

一如既往,有很多种编写查询的方法。我认为这是一个可以理解的(但可能不会很高效)

WITH
tenant AS (
    SELECT * from mytable WHERE ownership = 'tenant'
)
, landlord AS (
    SELECT * from mytable WHERE ownership = 'landlord'
)

SELECT
    tenant.name, landlord.name
FROM
    landlord 
LEFT OUTER JOIN 
    tenant
ON ST_Intersects(landlord.geom, tenant.geom)
WHERE 
    landlord.name = 'foo'
;
© www.soinside.com 2019 - 2024. All rights reserved.