Gis 展平/溶解/合并整个形状文件

Gis 展平/溶解/合并整个形状文件,gis,geojson,shapefile,gdal,ogr2ogr,Gis,Geojson,Shapefile,Gdal,Ogr2ogr,我一直在使用ogr2ogr来处理shapefile所需的大部分工作(包括分解它们)。然而,我发现对于大的,它需要很长的时间 下面是我正在做的一个例子: ogr2ogr new.shp old.shp-方言sqlite-sql“从旧版本中选择ST_联管(几何图形)” 在某些情况下,可能需要分解常见的相邻形状(我认为在上面的命令中就是这样)然而,在我的例子中,我只想将整个文件和其中的每个形状展平,而不考虑值(我已经隔离了我需要的形状)。 当您不需要关心值,只需要一个在文件中勾勒形状数组的形状时,有

我一直在使用
ogr2ogr
来处理shapefile所需的大部分工作(包括分解它们)。然而,我发现对于大的,它需要很长的时间

下面是我正在做的一个例子:

ogr2ogr new.shp old.shp-方言sqlite-sql“从旧版本中选择ST_联管(几何图形)”

在某些情况下,可能需要分解常见的相邻形状(我认为在上面的命令中就是这样)然而,在我的例子中,我只想将整个文件和其中的每个形状展平,而不考虑值(我已经隔离了我需要的形状)。

  • 当您不需要关心值,只需要一个在文件中勾勒形状数组的形状时,有没有更快的方法来实现这一点

如果您已隔离形状,并且它们没有任何共享边界,则可以使用ST_Collect轻松将它们收集到单个多多边形中。这应该非常快速和简单:

ogr2ogr gcol.shp old.shp -dialect sqlite -sql "SELECT ST_Collect(geometry) FROM old"

如果几何体重叠且边界需要“溶解”,则必须使用ST_Union。更快的空间合并是通过级联合并技术完成的。它受到OGR的支持,但似乎做得并不优雅

下面是一个两步SQL查询。首先使用ST_Collect对所有内容进行多重多边形(这很快),然后进行自联合,这将触发呼叫

或者为了更好地查看实际的SQL语句:

SELECT ST_Union(gcol, gcol)
FROM (
  SELECT ST_Collect(geometry) AS gcol
  FROM old
) AS f
通过将其转换为光栅,然后再转换回矢量,我获得了更好的成功(即更快)。例如:

# convert the vector file old.shp to a raster file new.tif using a pixel size of XRES/YRES
gdal_rasterize -tr XRES YRES -burn 255 -ot Byte -co COMPRESS=DEFLATE old.shp new.tif

# convert the raster file new.tif to a vector file new.shp, using the same raster as a -mask speeds up the processing
gdal_polygonize.py -f 'ESRI Shapefile' -mask new.tif new.tif new.shp

# removes the DN attribute created by gdal_polygonize.py
ogrinfo new.shp -sql "ALTER TABLE new DROP COLUMN DN"

谢谢,迈克。这是一个很好的线索,但似乎仍然需要永远。也许我会看看波斯特吉斯。我会让它再打开一点,然后接受。可能是死路一条。@stewart715 ST_Collect(仅)需要永远,还是组合查询?PostGIS比SpatiaLite更成熟,在SpatiaLite中,您的初始查询(仅使用ST_Union)应该可以工作。
# convert the vector file old.shp to a raster file new.tif using a pixel size of XRES/YRES
gdal_rasterize -tr XRES YRES -burn 255 -ot Byte -co COMPRESS=DEFLATE old.shp new.tif

# convert the raster file new.tif to a vector file new.shp, using the same raster as a -mask speeds up the processing
gdal_polygonize.py -f 'ESRI Shapefile' -mask new.tif new.tif new.shp

# removes the DN attribute created by gdal_polygonize.py
ogrinfo new.shp -sql "ALTER TABLE new DROP COLUMN DN"