GDAL非常慢的打开子数据集

时间:2019-04-12 15:24:33

标签: c# gdal osgeo

我正在将v2.3.3 C#绑定用于GDAL,处理多种类型的栅格文件。

使用HDF5栅格时,可以有很多子数据集(HDF5只是多个数据集或栅格的容器)。

我发现通过调用var ds = Gdal.Open(...)var ds = Gdal.OpenEx(...)从HDF5内部打开特定的子数据集非常慢(平均约900毫秒)。

原因似乎是子数据集的每个打开都带有整个HDF5容器的所有元数据,而不仅仅是与指定子数据集有关的元数据。

var source = @"f:\mysource.h5";
var subName = "HDF5:\"F:\\mysource.h5\"://geo/0.05000/259_575/depth";
var openOptions = new[] {"NO_METADATA", "YES"};

var subDs = Gdal.OpenEx(subName, 0, null, openOptions, null);

在这里,我试图提供一个选项来抑制元数据,但无济于事。当我使用subDs检查Gdal.GDALInfo(subDs, null)对象时,我会看到所有预期的信息,例如驱动程序(HDF5Image / HDF5数据集),坐标系(wgs84),像素大小等,但也非常长元数据列表,其中包含有关所有子数据集的信息。一个示例(大约9000行文本中只有10个):

geo_0.05000_249_563_east=282 
geo_0.05000_249_563_north=35 
geo_0.05000_249_563_security_key=100 
geo_0.05000_249_563_south=34.5 
geo_0.05000_249_563_west=281.5 
geo_0.05000_249_564_east=282.5 
geo_0.05000_249_564_north=35 
geo_0.05000_249_564_security_key=100 
geo_0.05000_249_564_south=34.5 
geo_0.05000_249_564_west=282

如您所见,这些子数据集名称与我打开的名称(259_575)不同。

即使对于较大的GeoTIFF文件,对Gdal.OpenEx(...)的调用通常也非常快。相比之下,打开与数据大小和投影相当的GeoTIFF只需40毫秒。

我的问题是,是否有一个“开放选项”将抑制元数据的出现?我发现GDAL / HDF5 driver page没有任何帮助。

或者,也许有其他方法可以在打开子栅格时抑制元数据?

0 个答案:

没有答案