MFF2—Vexcel MFF2图像

司机简称

MFF2型

Driver built-in by default

This driver is built-in by default

GDAL支持读取、更新和创建MFF2图像栅格文件格式。MFF2(Multi-File Format 2)格式是为适应Vexcel分级键值(HKV)数据库而设计的,它可以存储二进制数据和ASCII参数。这种格式主要用于Vexcel InSAR处理系统内部。

要选择MFF2数据集,请选择包含 attribimage_data 数据集的文件。

目前只支持纬度/经度和UTM投影(georef.projection.name=ll或georef.projection.name=UTM),仿射变换从纬度/经度控制点计算。在任何情况下,如果gcp在georef文件中可用,则它们将与数据集一起返回。

新创建的文件(具有 MFF2 )总是没有地理参考信息的原始栅格。对于读取和创建,应支持所有数据类型(位深为8、16、32的实数、整数和复数)。

重要提示:创建新的MFF2时,请确保在设置geotransf2之前设置投影(这是必需的,因为geotransf2在内部存储为5个经纬度地面控制点,需要投影来进行转换)。

注:执行为 gdal/frmts/raw/hkvdataset.cpp .

驱动程序功能

Supports CreateCopy()

This driver supports the GDALDriver::CreateCopy() operation

Supports Create()

This driver supports the GDALDriver::Create() operation

Supports Georeferencing

This driver supports georeferencing

Supports VirtualIO

This driver supports virtual I/O operations (/vsimem/, etc.)

格式详细信息

MFF2顶层结构

MFF2“文件”实际上是存储在目录中的一组文件,其中包含名为“attrib”的ASCII头文件和名为“image_data”的二进制图像数据。可选地,可以存在包含地理参考和投影信息的ASCII“georef”文件,以及包含TIFF格式的图像平铺概览的“image_data_ovr”(用于“image_data”二进制图像数据)文件。ASCII文件按key=value对排列。每个文件的允许对如下所述。

“attrib”文件

至少,“attrib”文件必须指定图像范围、像素大小(字节)、像素编码和数据类型以及像素字节顺序。例如,

extent.cols    = 800
extent.rows    = 1040
pixel.size     = 32
pixel.encoding = { unsigned twos_complement *ieee_754 }
pixel.field    = { *real complex }
pixel.order    = { lsbf *msbf }
version        = 1.1

指定图像的范围为1040行×800像素。像素是32位实际数据,按“最高有效字节优先”(msbf)顺序排列,根据ieee_规范进行编码。在MFF2中,当一个值必须属于某个子集(例如pixel.order必须是lsbf或msbf)时,所有选项都显示在大括号之间,并且适合当前文件的选项用“*”表示。

该文件还可以包含以下行,指示数据信道的数量,以及它们如何在二进制数据文件中交织。

channel.enumeration = 1
channel.interleave = { *pixel tile sequential }

“图像数据”文件

“图像数据”文件由原始二进制数据组成,包括“attrib”文件中指示的范围、像素编码和通道数。

“georef”文件

georef文件用于描述二进制数据的地理编码和投影信息。例如,

top_left.latitude            = 32.93333333333334
top_left.longitude           = 130.0
top_right.latitude           = 32.93333333333334
top_right.longitude          = 130.5
bottom_left.latitude         = 32.50000000000001
bottom_left.longitude        = 130.0
bottom_right.latitude        = 32.50000000000001
bottom_right.longitude       = 130.5
centre.latitude              = 32.71666666666668
centre.longitude             = 130.25
projection.origin_longitude  = 0
projection.name              = ll
spheroid.name                = wgs-84

描述基于wgs-84椭球体的纬度和经度(ll)正交投影图像。

由于MFF2版本1.1,左上角是指左上角像素的左上角。右上指右上像素的右上角。左下指的是左下像素的左下角。右下指的是右下角像素的右下角。中心是指上面定义的四个角的中心(图像的中心)。

数学上,对于Npix by Nline图像,MFF2版本1.1的角点和中心(像素,线)坐标为:

top_left: (0,0)
top_right: (Npix,0)
bottom_left: (0,Nline)
bottom_right: (Npix,Nline)
centre: (Npix/2.0,Nline/2.0)

这些计算使用浮点运算完成(即中心坐标可能采用非整数值)。

请注意,角点总是以纬度/经度表示,即使是投影图像。

支持的投影

ll-正交纬度/经度投影图像,纬度与行平行,经度与列平行。参数:球体名称,projection.origin_longitude(投影坐标原点的经度)。如果未设置,则默认为基于投影边界的输出图像的中心经度。

通用横向墨卡托投影图像。参数:球体名称,projection.origin_longitude(utm投影的中央子午线)。中央子午线必须是UTM区域中心的子午线,即3度、9度、12度等。如果未指定或设置有效的UTM中央子午线,则读取器应根据输出图像的中心经度将该值重置为最近的有效中央子午线。UTM投影原点的纬度始终为0度。

识别椭球体

MFF2格式将下列名称与椭球赤道半径和反展平参数相关联:

airy-18304:            6377563.396      299.3249646
modified-airy4:        6377340.189      299.3249646
australian-national4:  6378160          298.25
bessel-1841-namibia4:  6377483.865      299.1528128
bessel-18414:          6377397.155      299.1528128
clarke-18584:          6378294.0        294.297
clarke-18664:          6378206.4        294.9786982
clarke-18804:          6378249.145      293.465
everest-india-18304:   6377276.345      300.8017
everest-sabah-sarawak4:6377298.556      300.8017
everest-india-19564:   6377301.243      300.8017
everest-malaysia-19694:6377295.664      300.8017
everest-malay-sing4:   6377304.063      300.8017
everest-pakistan4:     6377309.613      300.8017
modified-fisher-19604: 6378155          298.3
helmert-19064:         6378200          298.3
hough-19604:           6378270          297
hughes4:               6378273.0        298.279
indonesian-1974:       6378160          298.247
international-1924:    6378388          297
iugc-67:               6378160.0        298.254
iugc-75:               6378140.0        298.25298
krassovsky-1940:       6378245          298.3
kaula:                 6378165.0        292.308
grs-80:                6378137          298.257222101
south-american-1969:   6378160          298.25
wgs-72:                6378135          298.26
wgs-84:                6378137          298.257223563
ev-wgs-84:             6378137          298.252841
ev-bessel:             6377397          299.1976073

字段说明

channel.enumeration:  (optional- only needed for multiband)
Number of channels of data (eg. 3 for rgb)

channel.interleave = { *pixel tile sequential } :  (optional- only
needed for multiband)

For multiband data, indicates how the channels are interleaved.  *pixel
indicates that data is stored red value, green value, blue value, red
value, green value, blue value etc. as opposed to (line of red values)
(line of green values) (line of blue values) or (entire red channel)
(entire green channel) (entire blue channel)

extent.cols:
Number of columns of data.

extent.rows:
Number of rows of data.

pixel.encoding = { *unsigned twos-complement ieee-754 }:
Combines with pixel.size and pixel.field to give the data type:
(encoding, field, size)- type
(unsigned, real, 8)- unsigned byte data
(unsigned, real, 16)- unsigned int 16 data
(unsigned, real, 32)- unsigned int 32 data
(twos-complement, real, 16)- signed int 16 data
(twos-complement, real, 32)- signed int 32 data
(twos-complement, complex, 64)- complex signed int 32 data
(ieee-754, real, 32)- real 32 bit floating point data
(ieee-754, real, 64)- real 64 bit floating point data
(ieee-754, complex, 64)- complex 32 bit floating point data
(ieee-754, complex, 128)- complex 64 bit floating point data

pixel.size:
Size of one pixel of one channel (bits).

pixel.field = { *real complex }:
Whether the data is real or complex.

pixel.order = { *lsbf msbf }:
Byte ordering of the data (least or most significant byte first).

version: (only in newer versions- if not present, older version is
assumed) Version of mff2.