LCP -- FARSITE v.4 LCP Format
Driver short name
LCP
Driver built-in by default
This driver is built-in by default
FARSITE v. 4 landscape file (LCP) is a multi-band raster format used by wildland fire behavior and fire effect simulation models such as FlamMap (firelab.org). The bands of an LCP file store data describing terrain, tree canopy, and surface fuel. The LANDFIRE Program provides geospatial data in LCP format to support fire simulation modeling.
An LCP file (.lcp) is basically a raw format with a 7,316-byte header described below. The data type for all bands is 16-bit signed integer. Bands are interleaved by pixel. Five bands are required: elevation, slope, aspect, fuel model, and tree canopy cover. Crown fuel bands (canopy height, canopy base height, canopy bulk density), and surface fuel bands (duff, coarse woody debris) are optional. The LCP driver reports several band-level metadata items described below. The band names used are: ELEVATION, SLOPE, ASPECT, FUEL_MODEL, CANOPY_COV, CANOPY_HT, CBH, CBD, DUFF and CWD.
The LCP driver reads the linear unit, cell size, and extent, but the .lcp file does not specify a projection internally. UTM projections are typical, but other projections are possible. The driver will look for a file with .prj extension and read the coordinate system in ESRI pseudo-OGC WKT format.
LCP does not support an inherent no data value, but -9999 is used by convention to mark pixels that are not valid data.
Driver capabilities
Supports CreateCopy()
This driver supports the GDALDriver::CreateCopy()
operation
Supports Georeferencing
This driver supports georeferencing
Supports VirtualIO
This driver supports virtual I/O operations (/vsimem/, etc.)
Metadata
The GDAL LCP driver reports dataset- and band-level metadata:
Dataset
LATITUDE: Latitude of the dataset, negative for southern hemisphereLINEAR_UNIT: Feet or metersDESCRIPTION: LCP file description
Band
<band>_UNIT or <band>_OPTION: units or options code for the band<band>_UNIT_NAME or <band>_OPTION_DESC: descriptive name of units/options<band>_MIN: minimum value<band>_MAX: maximum value<band>_NUM_CLASSES: number of classes, -1 if > 100<band>_VALUES: comma-delimited list of class values (fuel model band only)<band>_FILE: original input raster file name for the band
Note: The LCP driver derives from the RawDataset helper class declared in frmts/raw. It should be implemented as lcpdataset.cpp.
Creation Options
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 LCP driver supports CreateCopy() and metadata values can be set via
creation options. Below is a list of options with default values listed
first.
ELEVATION_UNIT=[METERS/FEET]: Defaults to
METERS
. Vertical unit for elevation band.SLOPE_UNIT=[DEGREES/PERCENT]: Defaults to
DEGREES
.ASPECT_UNIT=[AZIMUTH_DEGREES/GRASS_CATEGORIES/GRASS_DEGREES]: Defaults to
AZIMUTH_DEGREES
.FUEL_MODEL_OPTION=[NO_CUSTOM_AND_NO_FILE/CUSTOM_AND_NO_FILE/NO_CUSTOM_AND_FILE/CUSTOM_AND_FILE]: Defaults to
NO_CUSTOM_AND_NO_FILE
. Specify whether or not custom fuel models are used, and if a custom fuel model file is present.CANOPY_COV_UNIT=[PERCENT/CATEGORIES]: Defaults to
PERCENT
.CANOPY_HT_UNIT=[METERS_X_10/FEET/METERS/FEET_X_10]: Defaults to
METERS_X_10
.CBH_UNIT=[METERS_X_10/METERS/FEET/FEET_X_10]: Defaults to
METERS_X_10
.CBD_UNIT=[KG_PER_CUBIC_METER_X_100/POUND_PER_CUBIC_FOOT/KG_PER_CUBIC_METER/POUND_PER_CUBIC_FOOT_X_1000/TONS_PER_ACRE_X_100]: Defaults to
KG_PER_CUBIC_METER_X_100
.DUFF_UNIT=[MG_PER_HECTARE_X_10/TONS_PER_ACRE_X_10]: Defaults to
MG_PER_HECTARE_X_10
.CALCULATE_STATS=[YES/NO]: Defaults to
YES
. Calculate and write the min/max for each band and write the appropriate flags and values in the header. This is mostly a legacy feature used for creating legends.CLASSIFY_DATA=[YES/NO]: Defaults to
YES
. Classify the data into 100 unique values or less and write and write the appropriate flags and values in the header. This is mostly a legacy feature used for creating legends.LINEAR_UNIT=[SET_FROM_SRS/METER/FOOT/KILOMETER]: Defaults to
SET_FROM_SRS
. Set the linear unit, overriding (if it can be calculated) the value in the associated spatial reference. If no spatial reference is available, it defaults to METER.LATITUDE=-90-90: Override the latitude from the spatial reference. If no spatial reference is available, this should be set, otherwise creation will fail.
DESCRIPTION=value: A short description(less than 512 characters) of the dataset
Creation options that are units of linear measure are fairly lenient. METERS=METER and FOOT=FEET for the most part.
Note: CreateCopy does not scale or change any data. By setting the units for various bands, it is assumed that the values are in the specified units.
LCP header format:
Start byte |
No. of bytes |
Format |
Name |
Description |
0 |
4 |
long |
crown fuels |
20 if no crown fuels, 21 if crown fuels exist (crown fuels = canopy height, canopy base height, canopy bulk density) |
4 |
4 |
long |
ground fuels |
20 if no ground fuels, 21 if ground fuels exist (ground fuels = duff loading, coarse woody) |
8 |
4 |
long |
latitude |
latitude (negative for southern hemisphere) |
12 |
8 |
double |
loeast |
offset to preserve coordinate precision (legacy from 16-bit OS days) |
20 |
8 |
double |
hieast |
offset to preserve coordinate precision (legacy from 16-bit OS days) |
28 |
8 |
double |
lonorth |
offset to preserve coordinate precision (legacy from 16-bit OS days) |
36 |
8 |
double |
hinorth |
offset to preserve coordinate precision (legacy from 16-bit OS days) |
44 |
4 |
long |
loelev |
minimum elevation |
48 |
4 |
long |
hielev |
maximum elevation |
52 |
4 |
long |
numelev |
number of elevation classes, -1 if > 100 |
56 |
400 |
long |
elevation values |
list of elevation values as longs |
456 |
4 |
long |
loslope |
minimum slope |
460 |
4 |
long |
hislope |
maximum slope |
464 |
4 |
long |
numslope |
number of slope classes, -1 if > 100 |
468 |
400 |
long |
slope values |
list of slope values as longs |
868 |
4 |
long |
loaspect |
minimum aspect |
872 |
4 |
long |
hiaspect |
maximum aspect |
876 |
4 |
long |
numaspects |
number of aspect classes, -1 if > 100 |
880 |
400 |
long |
aspect values |
list of aspect values as longs |
1280 |
4 |
long |
lofuel |
minimum fuel model value |
1284 |
4 |
long |
hifuel |
maximum fuel model value |
1288 |
4 |
long |
numfuel |
number of fuel models -1 if > 100 |
1292 |
400 |
long |
fuel values |
list of fuel model values as longs |
1692 |
4 |
long |
locover |
minimum canopy cover |
1696 |
4 |
long |
hicover |
maximum canopy cover |
1700 |
4 |
long |
numcover |
number of canopy cover classes, -1 if > 100 |
1704 |
400 |
long |
cover values |
list of canopy cover values as longs |
2104 |
4 |
long |
loheight |
minimum canopy height |
2108 |
4 |
long |
hiheight |
maximum canopy height |
2112 |
4 |
long |
numheight |
number of canopy height classes, -1 if > 100 |
2116 |
400 |
long |
height values |
list of canopy height values as longs |
2516 |
4 |
long |
lobase |
minimum canopy base height |
2520 |
4 |
long |
hibase |
maximum canopy base height |
2524 |
4 |
long |
numbase |
number of canopy base height classes, -1 if > 100 |
2528 |
400 |
long |
base values |
list of canopy base height values as longs |
2928 |
4 |
long |
lodensity |
minimum canopy bulk density |
2932 |
4 |
long |
hidensity |
maximum canopy bulk density |
2936 |
4 |
long |
numdensity |
number of canopy bulk density classes, -1 if >100 |
2940 |
400 |
long |
density values |
list of canopy bulk density values as longs |
3340 |
4 |
long |
loduff |
minimum duff |
3344 |
4 |
long |
hiduff |
maximum duff |
3348 |
4 |
long |
numduff |
number of duff classes, -1 if > 100 |
3352 |
400 |
long |
duff values |
list of duff values as longs |
3752 |
4 |
long |
lowoody |
minimum coarse woody |
3756 |
4 |
long |
hiwoody |
maximum coarse woody |
3760 |
4 |
long |
numwoodies |
number of coarse woody classes, -1 if > 100 |
3764 |
400 |
long |
woody values |
list of coarse woody values as longs |
4164 |
4 |
long |
numeast |
number of raster columns |
4168 |
4 |
long |
numnorth |
number of raster rows |
4172 |
8 |
double |
EastUtm |
max X |
4180 |
8 |
double |
WestUtm |
min X |
4188 |
8 |
double |
NorthUtm |
max Y |
4196 |
8 |
double |
SouthUtm |
min Y |
4204 |
4 |
long |
GridUnits |
linear unit: 0 = meters, 1 = feet, 2 = kilometers |
4208 |
8 |
double |
XResol |
cell size width in GridUnits |
4216 |
8 |
double |
YResol |
cell size height in GridUnits |
4224 |
2 |
short |
EUnits |
elevation units: 0 = meters, 1 = feet |
4226 |
2 |
short |
SUnits |
slope units: 0 = degrees, 1 = percent |
4228 |
2 |
short |
AUnits |
aspect units: 0 = Grass categories, 1 = Grass degrees, 2 = azimuth degrees |
4230 |
2 |
short |
FOptions |
fuel model options: 0 = no custom models AND no conversion file, 1 = custom models BUT no conversion file, 2 = no custom models BUT conversion file, 3 = custom models AND conversion file needed |
4232 |
2 |
short |
CUnits |
canopy cover units: 0 = categories (0-4), 1 = percent |
4234 |
2 |
short |
HUnits |
canopy height units: 1 = meters, 2 = feet, 3 = m x 10, 4 = ft x 10 |
4236 |
2 |
short |
BUnits |
canopy base height units: 1 = meters, 2 = feet, 3 = m x 10, 4 = ft x 10 |
4238 |
2 |
short |
PUnits |
canopy bulk density units: 1 = kg/m^3, 2 = lb/ft^3, 3 = kg/m^3 x 100, 4 = lb/ft^3 x 1000 |
4240 |
2 |
short |
DUnits |
duff units: 1 = Mg/ha x 10, 2 = t/ac x 10 |
4242 |
2 |
short |
WOptions |
coarse woody options (1 if coarse woody band is present) |
4244 |
256 |
char[] |
ElevFile |
elevation file name |
4500 |
256 |
char[] |
SlopeFile |
slope file name |
4756 |
256 |
char[] |
AspectFile |
aspect file name |
5012 |
256 |
char[] |
FuelFile |
fuel model file name |
5268 |
256 |
char[] |
CoverFile |
canopy cover file name |
5524 |
256 |
char[] |
HeightFile |
canopy height file name |
5780 |
256 |
char[] |
BaseFile |
canopy base file name |
6036 |
256 |
char[] |
DensityFile |
canopy bulk density file name |
6292 |
256 |
char[] |
DuffFile |
duff file name |
6548 |
256 |
char[] |
WoodyFile |
coarse woody file name |
6804 |
512 |
char[] |
Description |
LCP file description |
Chris Toney, 2009-02-14