【问题标题】:Postgis Raster: Loading Tif-SubdatasetPostgis 栅格:加载 Tif 子数据集
【发布时间】:2012-05-29 00:26:37
【问题描述】:

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

非常感谢

托马斯

【问题讨论】:

    标签: postgresql postgis gdal


    【解决方案1】:

    子数据集在栅格中并不常见,而且我从未在 TIFF 中看到过它们(通常,您看到的是波段,而不是子数据集)。它看起来像 a similar bug was fixed for HDF5 files,但这可能对你的 GTiff 没有帮助。我鼓励您为此功能创建一个错误票。

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

    【讨论】:

    • 谢谢,已创建票证。使用 gdal_translate 我至少得到了我想要的。这很有帮助!
    • 哇哦,不到半天就修好了!
    【解决方案2】:

    在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2018-07-18
      • 1970-01-01
      • 2014-10-11
      相关资源
      最近更新 更多