1

我想将 TIF 文件中的子数据集加载到我的 PostGIS 数据库中。

gdalinfo 为我提供了有关 TIF 文件的以下信息:

Driver: GTiff/GeoTIFF
Files: pathto/imagename.tif
Size is 611, 1
Coordinate System is `'
Metadata:
  TIFFTAG_IMAGEDESCRIPTION=CXmlTiff type 
  TIFFTAG_RESOLUSTIONUNIT=2 (pixels/inch)
  TIFFTAG_XRESOLUTION=100
  TIFFTAG_YRESOLUTION=100
ImageStructure Metadata:
  INTERLEAVE=BAND
Subdatasets:
  SUBDATASET_1_NAME=GTIFF_DIR:1:pathto/imagename.tif
  SUBDATASET_1_DESC=Page 1 (611P x 1L x 1B)
  SUBDATASET_2_NAME=GTIFF_DIR:2:pathto/imagename.tif
  SUBDATASET_2_DESC=Page 1 (392P x 514352L x 1B)
Corner Coordinates:
Upper Left  (   0.0, 0.0)
Lower Left  (   0.0, 1.0)
Upper Right ( 611.0, 0.0)
Lower Right ( 611.0, 1.0)
Center      ( 305.5, 0.5)
Band 1 Block=611x1 Type=Byte, ColorInterp=Gray

我想加载第二个子数据集(392x514352)。

现在,使用 raster2pgsql 和文件名作为输入,只有第一个子数据集被加载,第二个被忽略。只有一个波段,所以使用 -b 开关不起作用。有什么建议吗?

非常感谢

托马斯

4

2 回答 2

0

子数据集在栅格中并不常见,而且我从未在 TIFF 中看到过它们(通常,您看到的是波段,而不是子数据集)。看起来类似的错误已针对 HDF5 文件进行了修复,但这可能对您的 GTiff 没有帮助。我鼓励您为此功能创建一个错误票。

同时,gdal_translate可以与将-sds文件的所有子数据集复制到单个输出文件的选项一起使用,然后您可以将其与 raster2pgsql 一起使用。

于 2012-05-22T19:45:14.020 回答
0

在 postgis 栅格的情况下,子数据集由 postgis 系统创建,因为 postgis 栅格通常是平铺的,并且每个平铺在表中由不同的行表示,通常是不同的 Rid。我不确定这里发生了什么,但我想您使用 outofdb 选项来存储您的栅格,对吧?

对于那些使用 gdal_translate 从 postgis 导出栅格的人,您可以在 postgresql 连接选项中使用选项“mode='2'”:结果是一个简单的文件,它合并了 rast 列的所有行。

例子:

gdal_translate PG:"host='localhost' port='5432' dbname='mydb' user='me' schema='public' password='secret' table='rastertable' where='rid BETWEEN 1 and 10' mode='2'" /path/filename.tif
于 2018-08-22T20:36:18.797 回答