Postgis光栅:装载Tif-Subdataset
-
13-12-2019 - |
题
我想从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
. 不隶属于 StackOverflow