gpt4 book ai didi

sql - PostGIS:多面体的边界框

转载 作者:行者123 更新时间:2023-11-29 11:41:03 25 4
gpt4 key购买 nike

SELECT id, ST_Box2D(areas) AS bbox FROM mytable;

在此示例中,“mytable”包含两列:“id”是行的唯一 ID 号和“区域”是一个几何字段,每行包含一个MULTIPOLYGON


这适用于仅包含一个多边形的多边形,但有些行的多边形非常分散,因此当多边形包含欧洲的一个多边形和加拿大的一个多边形时,边界框不相关。

所以我需要一种方法来为每个多边形的每个多边形获取一个 box2d,但我还没有找到方法。更准确地说,我的目标是每行返回一个多多边形,每个多边形包含一个 box2d。


第一个例子

  • id:123
  • area:在澳大利亚只包含一个椭圆多边形的多边形
  • 因此 bbox 应该返回一个在澳大利亚只包含一个矩形(边界框)的多边形

第二个例子

  • id:321
  • area:一个多边形,包含巴黎的一个圆圈,多伦多的一个圆圈
  • 因此bbox应该返回一个多边形,包含一个在巴黎的矩形,一个在多伦多的矩形

最佳答案

你应该使用ST_Dump https://postgis.net/docs/ST_Dump.html

然后您将获得每个多边形一行。分割几何时,其他字段将被复制。它类似于聚合函数,但恰恰相反。

语法有点特殊,因为它输出复合数据类型,因此您必须像这样提取几何部分:

SELECT (ST_Dump(the_geom)).geom from mytable;

因为这会在表中提供更多行,所以您应该从查询中创建一个新表。

然后您可以在新表中的新几何列上创建一个索引,它将建立在每个多边形的边界框上。

HTH

/尼克拉斯

您是否也希望每个多边形都排成一排?这就是我的想法,但是如果你只想要一个带有 bboxes 的表,每行一个 id 引用原始的多边形(你当然会为多边形的每个部分重复相同的 id)那么你可以做同样的 byt只是提取像这样的 bboxes:

CREATE TABLE newTable AS
SELECT id, BOX2D((ST_Dump(the_geom)).geom) AS myBox FROM originamTable

恐怕我并没有真正得到你想要的东西,但在这种情况下你有很多使用 ST_Dump 的可能性。

关于sql - PostGIS:多面体的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com