数据保存在Postgres数据库中(使用PostGIS扩展)。我有一个包含列的表:pid,geometry,parent。 pID是主键,几何是用点描述的地理数据,而父列包含该记录的父级的pID。 这意味着我们需要像这样的表顺序:
我们面临的问题是如果我们不知道它们的初始顺序,如何找到最近/最小的父多边形。如果我们首先处理C,我们可以将D添加为父级,但如果我们从A和B开始,则D不是正确的父级。
如果您有任何建议,如何解决这个问题我将不胜感激。
答案 0 :(得分:1)
使用包含地理区域的额外列,然后在查询中使用contains
,within
,&&
或其他包含操作。最后通过这个新列命令desc并限制1获取父
例如,行必须是:
st_area和st_envelope函数可以提供帮助
查询必须是
Select id
from Table
Where st_envelope('parameter') @ BoundingBox
ORDER BY Area DESC
LIMIT 1
表格postgis文档 http://postgis.net/docs/manual-2.3/ST_Geometry_Contained.html
@ — Returns TRUE if A's bounding box is contained by B's.
使用@
创建容器过滤器,因此您拥有包含几何体的所有“父项”,然后获取其中一个(按区域排序)