VICAR -- VICAR

Driver short name

VICAR

Driver built-in by default

This driver is built-in by default

Note

PDS3 datasets can incorporate a VICAR header. By default, GDAL will use the PDS driver in that situation. Starting with GDAL 3.1, if the GDAL_TRY_PDS3_WITH_VICAR configuration option is set to YES, the dataset will be opened by the VICAR driver. Alternatively, starting with GDAL 3.10, specifying the -if VICAR option to command line utilities accepting it, or VICAR as the only value of the papszAllowedDrivers of GDALOpenEx(), also forces the driver to recognize the passed filename.

Driver capabilities

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.)

Metadata

Starting with GDAL 3.1, the VICAR label can be retrieved as JSON-serialized content in the json:VICAR metadata domain.

For example:

$ python3
from osgeo import gdal
ds = gdal.Open('../autotest/gdrivers/data/test_vicar_truncated.bin')
print(ds.GetMetadata_List('json:VICAR')[0])
{
 "LBLSIZE":9680,
 "FORMAT":"BYTE",
 "TYPE":"IMAGE",
 "BUFSIZ":2097152,
 "DIM":3,
 "EOL":0,
 "RECSIZE":4840,
 "ORG":"BSQ",
 "NL":1000,
 "NS":400,
 "NB":1,
 "N1":4000,
 "N2":1000,
 "N3":1,
 "N4":0,
 "NBB":0,
 "NLB":0,
 "HOST":"X86-64-LINX",
 "INTFMT":"LOW",
 "REALFMT":"RIEEE",
 "BHOST":"X86-LINUX",
 "BINTFMT":"LOW",
 "BREALFMT":"RIEEE",
 "BLTYPE":"M94_HRSC",
 "COMPRESS":"NONE",
 "EOCI1":0,
 "EOCI2":0,
 "PROPERTY":{
     "M94_ORBIT":{
         "ORBIT_NUMBER":5273,
         "ASCENDING_NODE_LONGITUDE":118.46,
         "ORBITAL_ECCENTRICITY":1.23,
         "ORBITAL_INCLINATION":4.56,
         "PERIAPSIS_ARGUMENT_ANGLE":7.89,
         "PERIAPSIS_TIME":"PERIAPSIS_TIME",
         "PERIAPSIS_ALTITUDE":333.16,
         "ORBITAL_SEMIMAJOR_AXIS":1.23,
         "SPACECRAFT_SOLAR_DISTANCE":4.56,
         "SPACECRAFT_CLOCK_START_COUNT":"1\/1",
         "SPACECRAFT_CLOCK_STOP_COUNT":"1\/2",
         "START_TIME":"start_time",
         "STOP_TIME":"stop_time",
         "SPACECRAFT_POINTING_MODE":"NADIR",
         "RIGHT_ASCENSION":-1.0000000000000001e+32,
         "DECLINATION":-1.0000000000000001e+32,
         "OFFSET_ANGLE":-1.0000000000000001e+32,
         "SPACECRAFT_ORIENTATION":[
             0.000000,
             -1.000000,
             0.000000
         ]
     },
     [...]
     "PHOT":{
         "PHO_FUNC":"NONE"
     }
 },
 "TASK":{
     "HRCONVER":{
         "USER":"mexsyst",
         "DAT_TIM":"DAT_TIM",
         "SPICE_FILE_NAME":[
             "foo"
         ],
         "SPICE_FILE_ID":"(LSK,SCLK,ON)",
         "DETECTOR_TEMPERATURE":1.23,
         "DETECTOR_TEMPERATURE__UNIT":"degC",
         "FOCAL_PLANE_TEMPERATURE":8.5833,
         "FOCAL_PLANE_TEMPERATURE__UNIT":"degC",
         "INSTRUMENT_TEMPERATURE":2.34,
         "INSTRUMENT_TEMPERATURE__UNIT":"degC",
         "LENS_TEMPERATURE":4.56,
         "LENS_TEMPERATURE__UNIT":"degC",
         "SOURCE_FILE_NAME":"SOURCE_FILE_NAME",
         "MISSING_FRAMES":0,
         "OVERFLOW_FRAMES":0,
         "ERROR_FRAMES":1
     }
   }
 }

or

$ gdalinfo -json ../autotest/gdrivers/data/test_vicar_truncated.bin -mdd all

Binary prefixes

Starting with GDAL 3.1, if the VICAR label declares a non-zero binary prefix length (NBB label item), then GDAL will look in the vicar.json configuration file if there is an entry corresponding to the BLTYPE label item (currently only M94_HRSC is defined), and if there is a match, a OGR vector layer will be available on the dataset, with a feature for each image record.

For example:

$ ogrinfo h0038_0000.bl2.16 -al -q

Layer name: binary_prefixes
OGRFeature(binary_prefixes):0
    EphTime (Real) = 127988268.646895
    Exposure (Real) = 40.1072692871094
    COT (Integer) = 28275
    FEETemp (Integer) = 28508
    FPMTemp (Integer) = 29192
    OBTemp (Integer) = 28295
    FERT (Integer) = 27001
    LERT (Integer) = 28435
    CmpDataLen (Integer) = 146
    FrameCount (Integer) = 486
    Pischel (Integer) = 5
    ActPixel (Integer) = 5120
    RSHits (Integer) = 0
    DceInput (Integer) = 0
    DceOutput (Integer) = 4
    FrameErr1 (Integer) = 0
    FrameErr2 (Integer) = 0
    Gob1 (Integer) = 0
    Gob2 (Integer) = 0
    Gob3 (Integer) = 0
    DSS (Integer) = 97
    DecmpErr1 (Integer) = 0
    DecmpErr2 (Integer) = 0
    DecmpErr3 (Integer) = 0
    FillerFlag (Integer) = 5

Creation support

Starting with GDAL 3.1, the VICAR driver supports updating imagery of existing datasets, creating new datasets through the CreateCopy() and Create() interfaces.

When using CreateCopy(), gdal_translate or gdalwarp, an effort is made to preserve as much as possible of the original label when doing VICAR to VICAR conversions. This can be disabled with the USE_SRC_LABEL=NO creation option.

Creation options can be specified in command-line tools using the syntax -co <NAME>=<VALUE> or by providing the appropriate arguments to GDALCreate() (C) or Driver.Create (Python). The available creation options are:

  • GEOREF_FORMAT=[MIPL/GEOTIFF]: (GDAL >= 3.4) How to encode georeferencing information. Defaults to MIPL using the MAP property group. When setting to GEOTIFF, a GEOTIFF property group will be used using GeoTIFF keys and tags. The COORDINATE_SYSTEM_NAME, POSITIVE_LONGITUDE_DIRECTION and TARGET_NAME options will be ignored when selecting the GEOTIFF encoding.

  • COORDINATE_SYSTEM_NAME=[PLANETOCENTRIC/PLANETOGRAPHIC]: Defaults to PLANETOCENTRIC. Value of MAP.COORDINATE_SYSTEM_NAME. If specified, and USE_SRC_MAP is in effect, this will be taken into account to override the source COORDINATE_SYSTEM_NAME.

  • POSITIVE_LONGITUDE_DIRECTION=[EAST/WEST]: Defaults to EAST. Value of MAP.override. If specified, and USE_SRC_MAP is in effect, this will be taken into account to override the source POSITIVE_LONGITUDE_DIRECTION.

    TARGET_NAME=value:

  • Value of MAP.TARGET_NAME. This is normally deduced from the SRS datum name. If specified, and USE_SRC_MAP is in effect, this will be taken into account to override the source TARGET_NAME.

  • USE_SRC_LABEL=[YES/NO.]: Defaults to YES. Whether to use source label in VICAR to VICAR conversions.

  • LABEL=value: Label to use, either as a JSON string or a filename containing one. If defined, takes precedence over USE_SRC_LABEL.

  • COMPRESS=[NONE/BASIC/BASIC2.]: Defaults to NONE. Compression method. For maximum interoperability, do not use BASIC or BASIC2 which are not well specified and not always available in VICAR capable applications.

See Also