Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 多边形包容_Postgresql_Postgis - Fatal编程技术网

Postgresql 多边形包容

Postgresql 多边形包容,postgresql,postgis,Postgresql,Postgis,数据保存在Postgres数据库中(带有PostGIS扩展)。我有一个包含以下列的表:pid、几何体、父项。pID是主键,几何图形是用点描述的地理数据,父列包含此记录父项的pID。 这意味着我们希望表格的顺序如下: A、 正方形(几何学),C B、 正方形(几何学),C C、 多边形(几何),D D、 多边形(几何)\ 我们面临的问题是,如果我们不知道最接近/最小的父多边形的初始顺序,如何找到它们。如果我们先处理C,然后可以添加D作为父级,但是如果我们从a和B开始,D不是正确的父级 如果您

数据保存在Postgres数据库中(带有PostGIS扩展)。我有一个包含以下列的表:pid、几何体、父项。pID是主键,几何图形是用点描述的地理数据,父列包含此记录父项的pID。 这意味着我们希望表格的顺序如下:

  • A、 正方形(几何学),C
  • B、 正方形(几何学),C
  • C、 多边形(几何),D
  • D、 多边形(几何)\
我们面临的问题是,如果我们不知道最接近/最小的父多边形的初始顺序,如何找到它们。如果我们先处理C,然后可以添加D作为父级,但是如果我们从a和B开始,D不是正确的父级


如果您有任何建议,如何解决此问题,我将不胜感激。

使用地理区域的额外列,然后在查询中使用
包含
中的
和&
或其他包含操作。最后,按此新列对desc进行排序,并限制1以获取父级

例如,行必须是:

  • A、 正方形(几何体)、C、面积(100)、边界框(正方形)
  • B、 正方形(几何体)、C、面积(100)、边界框(正方形)
  • C,多边形(几何体),D,面积(2000),边界框(多边形)
st_区域和st_信封函数可以提供帮助

查询的名称必须为

Select id 
from Table 
Where st_envelope('parameter') @ BoundingBox 
ORDER BY Area DESC 
LIMIT 1
表格博士后


使用
@
你可以制作容器过滤器,这样你就有了所有包含几何体的“父对象”,然后得到其中一个(按区域排序)

你能更精确地解释一下吗,我不明白你的想法是什么?
@ — Returns TRUE if A's bounding box is contained by B's.