Routines for converting to and from VICAR image files
Project description
Introduction
vicar
is a Python module that supports reading and writing of JPL's VICAR file format. It supports the definition of the VICAR file format as found here:
https://pds-rings.seti.org/help/VICAR_file_fmt.pdf
Installation
The vicar
module is available via the rms-vicar
package on PyPI and can be
installed with:
pip install rms-vicar
Getting Started
The vicar
module provides these classes:
VicarLabel
: Class for reading, writing, and parsing of VICAR labels.VicarImage
: Class for handling VICAR image (and other) data files.VicarError
: Extension of class ValueError to contain exceptions.
Details of each class are available in the module documentation.
To read a VICAR image file:
import vicar
vic = vicar.VicarImage("path/to/file")
The resulting object contains:
vic.array
: The 3-D data array converted to native format.vic.array2d
: Same as above, but with leading dimension (typically, bands) stripped.vic.prefix
: The array prefix bytes as a 3-D array of unsigned bytes.vic.prefix2d
: Same as above, but with the leading dimension stripped.vic.binheader
: The binary header as a bytes object; usevic.binheader_array()
to extract information.vic.label
: The internalVicarLabel
object that manages the VICAR label information, if direct access is needed.
VICAR parameter values can be extracted from the label using dictionary-like syntax:
len(vic)
: The number of parameters in the VICAR label.vic['LBLSIZE']
: The value of the LBLSIZE parameter (an integer).vic[0]
: The value of the first parameter.vic[-1]
: The value of the last parameter.vic['LBLSIZE',-1]
: The value of the last occurrence of the LBLSIZE parameter.vic.get(('LBLSIZE',2), 99)
: The value of the third occurrence of the LBLSIZE parameter, or 99 if there are fewer than 3 occurrences.vic.arg('LBLSIZE')
: The numeric index of "LBLSIZE" among the VICAR parameters.
You can also use dictionary-like syntax to modify and insert header values:
vic['SOLDIST'] = 1.e9
: Set SOLDICT to this value.del vic['SOLDIST',0]
: Remove the first occurrence of SOLDIST from the label.vic['LBLSIZE+'] = 2000
: Insert a new LBLSIZE parameter instead of modifying an existing one.
Note that certain required VICAR parameters contain structural information about the file; these cannot generally be modified directly.
Numerous methods are available to iterate over the VICAR label parameters:
for (name,value) in vic.items(): ...
for key in vic.keys(): ...
for name in vic.names(): ...
for value in vic.values(): ...
Iterators can take a regular expression as input to restrict the items returned:
for value in vic.values(r'LAB\d\d'): ...
Use str(vic)
to get the VICAR label content represented as a string.
Here are the steps to create and write a VICAR image file:
import vicar
vic = vicar.VicarImage()
vic.array = array
vic.prefix = prefix
vic.binheader = binheader
vic['NOTES'] = ['add as many more VICAR parameters', 'as you wish']
vic.write_file("path/to/file")
Contributing
Information on contributing to this package can be found in the Contributing Guide.
Links
Licensing
This code is licensed under the Apache License v2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for rms_vicar-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9dfc5d00f299f28e2e36832d8d46a3b26f5bb81db2c173d2136ee15257210f7a |
|
MD5 | 6a784620677dc09f4451454a5ea0201e |
|
BLAKE2b-256 | baebc29fcc695e548c95d00354da24f9a9f3e57fe09711037dbe4d3b7feca574 |