支持的文件格式

OTB依赖于 GDAL 用于读取和写入数据(栅格或矢量图像)。这意味着GDAL支持的所有格式理论上也支持OTB。话虽如此,但也有一些限制。

栅格图像

读取栅格图像

GDAL提供了一个非常大的驱动程序面板来访问图像文件中的元数据。OTB将元数据存储在一个名为otbImageMetadata的特殊词典中。有一个元数据框架,它使用接口(ImageMetadataInterface)将GDAL读取的数据链接到otbImageMetadata。因此,要访问特定传感器的元数据,需要相应的接口。到目前为止,可用的接口包括:

传感器 格式 备注
CosmoSkyMed HDF5/TIFF 每个极化一个Tiff文件,或一个包含所有数据的HDF5文件。请参阅下面的HDF特殊性。
FORMOSAT DIMAP/TIFF 不适用
Ikonos TIFF 不适用
Pleiades JPEG2000/TIFF/DIMAP 我们建议使用tiff/jp2000文件。事实上,在读取dimap文件时,我们注意到图像移动了0.5像素(这是GDAL中的一个有文档记录的错误)。
QuickBird TIFF 不适用
雷达卫星2号 TIFF 不适用
哨兵1号 TIFF 使用TIFF文件,而不是清单。
Spot 5 DIMAP/TIFF RPC不可用。
Spot 6/7 DIMAP/JPEG2000/TIFF 不适用
TerraSarX COS 使用cos文件,而不是主XML。不支持MGD产品。
WorldView 2 TIFF 不适用

不在此列表中的传感器仍可与OTB一起使用,但元数据将不可访问。

完整产品通常包含多个文件(图像文件、清单、元数据文件等)。对于合成孔径雷达产品,OTB必须获取图像文件。对于光学传感器,OTB也可以将清单文件作为输入。在这种情况下,OTB将考虑产品的所有波段。

写入栅格图像

OTB使用对应表将特定的文件扩展名链接到GDAL驱动程序。这意味着,即使驱动程序存在于GDAL中,也无法写入此表中未列出的格式。OTB中可用于写入栅格的格式包括:

  • GTiff(.tif/.tiff)
  • ENVI (.hdr)
  • HFA(.img)
  • NITF(.ntf)
  • PNG(.png)
  • JPEG(.jpg/.jpeg)
  • PCIDSK(.pix)
  • ISIS2(.lbl/.pds)
  • JP2OpenJPEG/JP2KAK/JP2ECW(.j2k/.jp2/.jpx)

HDF数据集的特殊性

读取HDF数据集时,需要使用 Extended Filename &sdataidx=<(int)idx> 。例如,在某些CosmoSkyMed产品中,第一个子数据集是快速浏览,而实际产品是第二个子数据集。

矢量数据

OTB可以读取OGR支持的所有矢量格式。但写作过程有点棘手。OTB实现了两种处理写入矢量数据的方法。第一个使用OGR::DataSource。第二个使用OTB::VectorData。根据应用程序使用的类,可以使用不同的格式。这令人困惑,我们计划解决这个问题。目前,完全支持格式(IE。受所有应用程序支持)包括:

  • ESRI形状文件(.shp)
  • 地图信息文件(.tag)
  • 地理标记语言(.gml)
  • GPS交换格式(.gpx)
  • SQLite(.sqlite)
  • Keyhole标记语言(.kml)
  • GeoPackage(.gpkg)

数字高程模型

许多OTB应用程序使用高程模型作为输入,通常带有参数“-lev.dem”。此参数接受GDAL支持的任何栅格文件或包含此类文件的目录。在第二种情况下,输入目录中的所有栅格都将由GDAL打开,因此使用VRT可能是个好主意。请注意,DEM文件夹应仅包含DEM文件。参数为“-lev.geid”的大地水准面也是如此。通常可以使用参数“-lev.Default”设置默认高程。

根据提供的参数,应用程序将:

  • 如果DEM和大地水准面都提供,则计算DEM+大地水准面的值。
  • 如果未提供,则使用默认值。
  • 如果仅提供DEM,则使用在DEM中读取的值。
  • 如果仅提供大地水准面,则计算默认高程+大地水准面的值。

关于egm96.grd文件的说明

在以前的OTB版本(使用Ossim)中,使用egm96.grd文件作为大地水准面是很常见的。GDAL无法打开此文件。但是,仍然可以通过使用以下egm96.grd.hdr文件来使用它:

ENVI
samples = 1441
lines   = 721
bands   = 1
header offset = 24
file type = ENVI Standard
data type = 4
interleave = bsq
sensor type = Unknown
byte order = 1
wavelength units = Unknown
map info = {Geographic Lat/Lon, 1, 1,-0.125, 90.125, 0.25, 0.25,WGS-84}
coordinate system string = {GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]}
band names = {
Band 1}

附加此文件后,GDAL将能够将egm96.grd文件作为ENVI数据集读取。