Child pages
  • BEAM-DIMAP Format
Skip to end of metadata
Go to start of metadata

Introduction

BEAM-DIMAP is the standard input/output data format of BEAM. It is a profile of the original DIMAP format developed by SPOT-Image, France.

All XML code snippets used below are taken from the sample BEAM-DIMAP product meris-radiances.dim which can be downloaded here.

Structure

A data product stored in this format is composed of

  • a single XML product header file (*.dim)
  • a directory which contains the image data. For each band or tie-point grid it contains
    • a flat, binary image file (*.img) and
    • an ENVI® -compatible header (*.hdr).
    |-- meris-radiances.dim
    +-- meris-radiances.data
        |-- radiance_1.img
        |-- radiance_1.hdr
        |-- radiance_2.img
        |-- radiance_2.hdr
        |-- ...
        |
        +-- tie_point_grids
            |-- latitude.img
            |-- latitude.hdr
            |-- longitude.img
            |-- longitude.hdr
            |-- ...        

An image file exists for each band or tie-point grid (band separated format). All binary data is stored in big-endian order, MSB (Most Significant Byte) first. Floating point formats used are the IEEE 754 single (32-bit) and double format (64-bit) bit layout. Pixel co-ordinates are always zero based. Pixel coordinate system has its origin in the upper left corner of the upper left pixel of the image raster. Image data is formatted from left to right from top to bottom of the image.

Note that the ENVI header is not required by the BEAM software. It is provided just to ease data exchange with ENVI.

Data Representation

Bands

XML Header:

    ...
    <Raster_Dimensions>
        <NCOLS>246</NCOLS>
        <NROWS>235</NROWS>
        <NBANDS>17</NBANDS>
    </Raster_Dimensions>
    ...
    <Data_Access>
        <DATA_FILE_FORMAT>ENVI</DATA_FILE_FORMAT>
        <DATA_FILE_FORMAT_DESC>ENVI File Format</DATA_FILE_FORMAT_DESC>
        <DATA_FILE_ORGANISATION>BAND_SEPARATE</DATA_FILE_ORGANISATION>
        <Data_File>
            <DATA_FILE_PATH href="meris-radiances.data/radiance_1.hdr" />
            <BAND_INDEX>0</BAND_INDEX>
        </Data_File>
        <Data_File>
            <DATA_FILE_PATH href="meris-radiances.data/radiance_2.hdr" />
            <BAND_INDEX>1</BAND_INDEX>
        </Data_File>
        ...
    </Data_Access>
    ...
    <Image_Interpretation>
        <Spectral_Band_Info>
            <BAND_INDEX>0</BAND_INDEX>
            <BAND_DESCRIPTION>TOA radiance band 1</BAND_DESCRIPTION>
            <BAND_NAME>radiance_1</BAND_NAME>
            <DATA_TYPE>uint16</DATA_TYPE>
            <PHYSICAL_UNIT>mW/(m^2*sr*nm)</PHYSICAL_UNIT>
            <SOLAR_FLUX>1672.7993</SOLAR_FLUX>
            <SPECTRAL_BAND_INDEX>0</SPECTRAL_BAND_INDEX>
            <BAND_WAVELEN>412.545</BAND_WAVELEN>
            <BANDWIDTH>9.93</BANDWIDTH>
            <SCALING_FACTOR>0.009332661516964436</SCALING_FACTOR>
            <SCALING_OFFSET>0.0</SCALING_OFFSET>
            <LOG10_SCALED>false</LOG10_SCALED>
            <NO_DATA_VALUE_USED>false</NO_DATA_VALUE_USED>
            <NO_DATA_VALUE>0.0</NO_DATA_VALUE>
            <VALID_MASK_TERM>!l1_flags.INVALID</VALID_MASK_TERM>
        </Spectral_Band_Info>
        ...
    </Image_Interpretation>
    ...

FIXME: DATA_FILE_PATH and also TIE_POINT_GRID_FILE_PATH (see below) should refer to the image data .img instead of the image ENVI header .hdr, which isn't used by BEAM at all.
- Norman, 31. Aug. 2007

Element

Description

 

 

 

 

 

Data directory structure:

    |-- meris-radiances.dim
    +-- meris-radiances.data
        |-- radiance_1.img
        |-- radiance_1.hdr
        |-- ...

Tie-point grids

XML Header:

    ...
    <Data_Access>
        ...
         <Tie_Point_Grid_File>
            <TIE_POINT_GRID_FILE_PATH href="meris-radiances.data/tie_point_grids/dem_alt.hdr" />
            <TIE_POINT_GRID_INDEX>2</TIE_POINT_GRID_INDEX>
        </Tie_Point_Grid_File>
        ...
    </Data_Access>

    ...
    <Tie_Point_Grids>
        <NUM_TIE_POINT_GRIDS>15</NUM_TIE_POINT_GRIDS>
        ...
        <Tie_Point_Grid_Info>
            <TIE_POINT_GRID_INDEX>2</TIE_POINT_GRID_INDEX>
            <TIE_POINT_DESCRIPTION>Digital elevation model altitude</TIE_POINT_DESCRIPTION>
            <PHYSICAL_UNIT>m</PHYSICAL_UNIT>
            <TIE_POINT_GRID_NAME>dem_alt</TIE_POINT_GRID_NAME>
            <DATA_TYPE>float32</DATA_TYPE>
            <NCOLS>18</NCOLS>
            <NROWS>17</NROWS>
            <OFFSET_X>-14.5</OFFSET_X>
            <OFFSET_Y>-14.5</OFFSET_Y>
            <STEP_X>16.0</STEP_X>
            <STEP_Y>16.0</STEP_Y>
            <CYCLIC>false</CYCLIC>
        </Tie_Point_Grid_Info>
        ...
    </Tie_Point_Grids>
    ...

Element

Description

 

TIE_POINT_GRID_FILE_PATH

Attribute href specifies location of (the header of) the binary data file.

Required

TIE_POINT_GRID_INDEX

The index of the grid, used to link elements Tie_Point_Grid_File and Tie_Point_Grid_Info.

Required

TIE_POINT_GRID_NAME

The name of the grid

Required

TIE_POINT_DESCRIPTION

A description of the grid

Optional

DATA_TYPE

Binary data type of numerical grid data, BEAM only handles {{float32}, 32-bit floating point}

Required

NCOLS, NROWS

Number of grid columns and rows

Required

OFFSET_X, OFFSET_Y

Location of the first grid cell in the scene's pixel coordinate system

Required

STEP_X, STEP_Y

Distance in pixels from center of one grid cell to another

Required

CYCLIC

true for grids containing longitude values, false otherwise (deprecated element)

Optional

Data directory structure:

    |-- meris-radiances.dim
    +-- meris-radiances.data
        |-- ...
        +-- tie_point_grids
            |-- ...
            |-- dem_alt.hdr
            |-- dem_alt.img
            |-- ...        

Geo-Coding

Geo-codings are used in BEAM to map raster (pixel) coordinates (x,y) to geographical coordinates (lat,lon) and back.

Geo-coding based on regular tie-point grids

The geo-coding is provided by two tie-point grids, usually named latitude and longitude. Coordinate reference system is always Geographical Lat/Lon, WGS-84 datum.

    ...
    <Coordinate_Reference_System>
        <Geocoding_Tie_Point_Grids>
            <TIE_POINT_GRID_NAME_LAT>latitude</TIE_POINT_GRID_NAME_LAT>
            <TIE_POINT_GRID_NAME_LON>longitude</TIE_POINT_GRID_NAME_LON>
        </Geocoding_Tie_Point_Grids>
    </Coordinate_Reference_System>
    ...
    <Tie_Point_Grids>
        ...
        <Tie_Point_Grid_Info>
            ...
            <TIE_POINT_GRID_NAME>latitude</TIE_POINT_GRID_NAME>
            ...
        </Tie_Point_Grid_Info>
        <Tie_Point_Grid_Info>
            ...
            <TIE_POINT_GRID_NAME>longitude</TIE_POINT_GRID_NAME>
            ...
        </Tie_Point_Grid_Info>
        ...
    <Tie_Point_Grids>

FIXME: According to DIMAP and OGC data models, Geocoding_Tie_Point_Grids should be placed in the predefined element Geoposition. Coordinate_Reference_System (CRS) just describes the coordinate system but not the actual positions.
- Norman, 31. Aug. 2007

Geo-coding based on pixels

Geo-coding based on geodetic maps

The geo-coding is provided by a cartographic, projected coordinate system. Image pixels are mapped to positions in this coordinate system.

The follwing sample code (from meris-radiances-utm.dim) shows the use of the UTM-32 (North) coordinate system using the WGS-84 datum. The MAP_INFO element positions the image raster within the cartographic map.

    ...
    <Coordinate_Reference_System>
        <GEO_TABLES version="1.0">CUSTOM</GEO_TABLES>
        <Horizontal_CS>
            <HORIZONTAL_CS_TYPE>PROJECTED</HORIZONTAL_CS_TYPE>
            <HORIZONTAL_CS_NAME>UTM Zone 32</HORIZONTAL_CS_NAME>
            <Geographic_CS>
                <GEOGRAPHIC_CS_NAME>UTM Zone 32</GEOGRAPHIC_CS_NAME>
                <Horizontal_Datum>
                    <HORIZONTAL_DATUM_NAME>WGS-84</HORIZONTAL_DATUM_NAME>
                    <Ellipsoid>
                        <ELLIPSOID_NAME>WGS-84</ELLIPSOID_NAME>
                        <Ellipsoid_Parameters>
                            <ELLIPSOID_MAJ_AXIS unit="meter">6378137.0</ELLIPSOID_MAJ_AXIS>
                            <ELLIPSOID_MIN_AXIS unit="meter">6356752.3</ELLIPSOID_MIN_AXIS>
                        </Ellipsoid_Parameters>
                    </Ellipsoid>
                </Horizontal_Datum>
            </Geographic_CS>
            <Projection>
                <NAME>UTM Zone 32</NAME>
                <Projection_CT_Method>
                    <PROJECTION_CT_NAME>Transverse_Mercator</PROJECTION_CT_NAME>
                    <Projection_Parameters>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>semi_major</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="meter">6378137.0</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>semi_minor</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="meter">6356752.3</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>latitude_of_origin</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="degree">0.0</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>central_meridian</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="degree">9.0</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>scale_factor</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="">0.9996</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>false_easting</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="meter">500000.0</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                        <Projection_Parameter>
                            <PROJECTION_PARAMETER_NAME>false_northing</PROJECTION_PARAMETER_NAME>
                            <PROJECTION_PARAMETER_VALUE unit="meter">0.0</PROJECTION_PARAMETER_VALUE>
                        </Projection_Parameter>
                    </Projection_Parameters>
                </Projection_CT_Method>
            </Projection>
            <MAP_INFO>
                <PIXEL_X value="123.5" />
                <PIXEL_Y value="129.5" />
                <EASTING value="599878.8" />
                <NORTHING value="4769766.5" />
                <ORIENTATION value="0.0" />
                <PIXELSIZE_X value="1269.7792" />
                <PIXELSIZE_Y value="1269.7792" />
                <NODATA_VALUE value="9999.0" />
                <MAPUNIT value="meter" />
                <ORTHORECTIFIED value="false" />
                <ELEVATION_MODEL value="" />
                <SCENE_FITTED value="true" />
                <SCENE_WIDTH value="247" />
                <SCENE_HEIGHT value="259" />
                <RESAMPLING value="CUBIC_CONVOLUTION" />
            </MAP_INFO>
        </Horizontal_CS>
    </Coordinate_Reference_System>
    ...

FIXME: According to DIMAP and OGC data models, MAP_INFO should be placed in the predefined DIMAP element Geoposition. Coordinate_Reference_System (CRS) just describes the coordinate system but not the actual positioning of the image pixels.
- Norman, 31. Aug. 2007

Geo-coding based on ground control points (since BEAM 4.1)

Flag-coding

  • No labels