在同一个表上使用postgis几何编写SQL查询

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

我是编写SQL查询的新手,所以提前谢谢。我有一个名为geo_areas的postgres表。此表包含城市,城镇和州的列表。我有一个名为type的列,它指定它是城市,城镇还是州。我还有一个名为Geometry的列,它包含所述名称的几何。它看起来与此类似,

Name, Type, Geometry

Philadelphia, Town, XXXXXXXXXX
Pennsylvania, State, XXXXXXXXXXX
Pittsburgh, Town, XXXXXXXXXXX
Porsche, City, XXXXXXXXX

我需要编写一个查询,列出其几何中包含的所有其他名称,类似于此。

Name, Type, Contains

Pennsylvania, State, [Porsche, Pittsburg, Philadelphia]
Porsche, City, [Philadelphia, Pittsburgh]
Philadelphia, Town, []
Pittsburgh, Town, []

感谢所有对正确方向迈出的一步的帮助!

sql postgresql postgis
1个回答
1
投票

假设您希望包含在您可以尝试的状态中的几何体

select t2.* 
from  my_table t1  
inner join my_table t2 on st_dwithin(t1.geom,t2.geom, 0) 
and t1.type='State' 
and t2.type!='State' 

或者对于st_contains

select t2.* 
from  my_table t1  
inner join my_table t2 on st_contains(t2.geom,t1.geom) 
and t1.type='State' 
and t2.type!='State' 
© www.soinside.com 2019 - 2024. All rights reserved.