使用gdal_translate导出PostGIS栅格至GeoTIFF:子数据集选择问题
解决GDAL导出PostgreSQL栅格时的子数据集选择问题
首先,通过gdalinfo命令列出PostgreSQL数据源内的所有子数据集,明确每个子数据集的具体访问路径:
gdalinfo PG:"host=dem-db port=5432 dbname=dem user=postgres password=passwd"
执行后会输出包含SUBDATASETS的段落,其中每个SUBDATASET_X_NAME对应一个子数据集的完整路径,示例如下:
SUBDATASET_1_NAME=PG:"host=dem-db port=5432 dbname=dem user=postgres password=passwd schema=public table=dem_raster column=rast"
SUBDATASET_2_NAME=PG:"host=dem-db port=5432 dbname=dem user=postgres password=passwd schema=public table=corrupted_raster column=rast"
接下来,直接将正常的子数据集路径作为gdal_translate的输入,跳过损坏的子数据集。比如第一个子数据集正常可用,命令如下:
gdal_translate -of GTiff "PG:host=dem-db port=5432 dbname=dem user=postgres password=passwd schema=public table=dem_raster column=rast" output.tif
如果不确定哪个子数据集正常,可以单独用gdalinfo验证:
gdalinfo "PG:host=dem-db port=5432 dbname=dem user=postgres password=passwd schema=public table=dem_raster column=rast"
若输出无报错,说明该子数据集可正常读取。
之前使用-sds参数失效,是因为该参数会遍历所有子数据集(包括损坏的),导致命令执行失败。直接指定单个正常子数据集即可避开这个问题。
内容的提问来源于stack exchange,提问作者Alireza sherkatmaesum
相关产品推荐
相关产品推荐

