我想从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开关不起作用。有什么建议吗?

非常感谢!

托马斯

有帮助吗?

解决方案

子数据集在栅格中并不常见,我从来没有在Tiff中看到过它们(通常,你看到的是乐队,而不是子数据集)。它看起来像 HDF5文件修复了类似的错误, ,但这可能不会帮助你的GTiff。我鼓励你为此功能创建一个bug票。

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

其他提示

在Postgis Rasters的情况下,PROSDATASET由POSTGIS系统创建,因为POSTGIS栅格通常平铺,并且每个瓦片在表格中由不同的线路表示,通常是不同的RID。我不确定在这里发生了什么,但我想你用了outofdb选项来存储你的光栅,对吗?

对于使用gdal_translate从Postgis导出rasters的人,您可以在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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top