| read.ENVI & write.ENVI | R Documentation |
Read and write binary data in ENVI format, which is supported by most GIS software.
read.ENVI(filename, headerfile=paste(filename, ".hdr", sep=""))
write.ENVI (X, filename, interleave = c("bsq", "bil", "bip"))
X |
data to be saved in ENVI file. Can be a matrix or 3D array. |
filename |
character string with name of the file (connection) |
headerfile |
optional character string with name of the header file |
interleave |
optional character string specifying interleave to be used |
ENVI binary files use a generalized raster data format that consists of two parts:
binary file - flat binary file equivalent to memory dump, as produced by
writeBin in R or fwrite in C/C++.
header file - small text (ASCII) file containing the metadata associated with the binary file. This file can contain the following fields, followed by equal sign and a variable:
samples - number of columns
lines - number of rows
bands - number of bands (channels, planes)
data type - following types are supported:
1 - 1-byte unsigned integer
2 - 2-byte signed integer
3 - 4-byte signed integer
4 - 4-byte float
5 - 8-byte double
9 - 2x8-byte complex number made up from 2 doubles
12 - 2-byte unsigned integer
header offset - number of bytes to skip before
raster data starts in binary file.
interleave - Permutations of dimensions in binary data:
BSQ - Band Sequential (X[col,row,band])
BIL - Band Interleave by Line (X[col,band,row])
BIP - Band Interleave by Pixel (X[band,col,row])
byte order - the endian-ness of the saved data:
0 - means little-endian byte order, format used on PC/Intel machines
1 - means big-endian (aka IEEE, aka "network") byte order, format used on UNIX and Macintosh machines
Fields samples, lines, bands, data type are
required, while header offset, interleave, byte order are
optional. All of them are in form of integers except interleave which
is a string.
This generic format allows reading of many raw file formats, including those with embedded header information. Also it is a handy binary format to exchange data between PC and UNIX/Mac machines, as well as different languages like: C, Fortran, Matlab, etc. Especially since header files are simple enough to edit by hand.
File type supported by most of GIS (geographic information system) software including: ENVI software, Freelook (free file viewer by ENVI), ArcGIS, etc.
Function read.ENVI returns either a matrix or 3D array.
Function write.ENVI does not return anything.
Jarek Tuszynski (SAIC) jaroslaw.w.tuszynski@saic.com
Displaying of images can be done through functions: graphics::image,
fields::image.plot and fields:add.image or
spatstat:plot.im.
ENVI files are practically C-style memory-dumps as performed by
readBin and writeBin functions plus separate
meta-data header file.
GIF file formats can also store 3D data (see read.gif and
write.gif functions).
Packages related to GIS data: shapefiles, maptools, sp, spdep, adehabitat, GRASS, PBSmapping.
X = array(1:60, 3:5)
write.ENVI(X, "temp.nvi")
Y = read.ENVI("temp.nvi")
stopifnot(X == Y)
readLines("temp.nvi.hdr")
d = c(20,30,40)
X = array(runif(prod(d)), d)
write.ENVI(X, "temp.nvi", interleave="bil")
Y = read.ENVI("temp.nvi")
stopifnot(X == Y)
readLines("temp.nvi.hdr")
file.remove("temp.nvi")
file.remove("temp.nvi.hdr")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.