【问题标题】:Deleting Non-Intersecting Geometries in PostGIS在 PostGIS 中删除不相交的几何图形
【发布时间】:2022-01-20 14:47:36
【问题描述】:

我正在处理地理空间数据(相当大的数据)。现在大数据多边形分布在地图上,我需要将感兴趣的区域(我有数据的地方)细分为图块以进一步处理它们。 目前我正在使用 postgis 方法 ST_Square 创建所需大小的多边形。在 postgis 中创建切片的命令

ST_SquareGrid(0.2,geom)

geom 是我需要细分的多边形,0.2 是我创建瓷砖的米大小。我正在使用投影 3857。

这个功能似乎完全可以正常工作,直到我发现它为没有可用数据的区域创建图块。如下图所示。应该只有 3 个方格,因为第 4 个方格中没有任何数据。

你能帮我控制一下,让它只创建数据所在的图块,避免创建空图块。

(解决方案可以在 GeoDjango 或 PostGis 中)

【问题讨论】:

    标签: geometry geospatial postgis geodjango


    【解决方案1】:

    您可以在生成方形网格后的后续步骤中使用DELETE。这个想法是删除那些不与您的初始特征相交的特征。你有不同的方法来解决这个问题。第一个使用空间索引(如果存在),因为它使用ST_Intersects

    DELETE FROM grid
      WHERE grid.gid NOT IN (
        SELECT grid.gid
        FROM grid, features 
        WHERE ST_Intersects (
          grid.geom,
          features.geom
        )
    );
    

    而您也可以使用此查询,它使用 ST_Disjoint 并且不使用空间索引,即它的性能会更慢。

    DELETE FROM grid 
    WHERE ST_Disjoint(
      geom, (SELECT geom FROM features)
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-04
      • 2020-03-21
      • 2014-02-14
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多