Standard VLRs - ASPRSorg/LAS GitHub Wiki

VLR Key List: https://www.asprs.org/misc/las-key-list.html

Intro

The LAS 1.5 specification shifted responsibility for management of Variable Length Records (VLRs) owned by the ASPRS LAS Working Group (LWG) from the specification itself to the Official LAS Wiki so that VLRs can be updated or modified without a formal specification update. This page is the official registry of VLRs managed by the LWG.

User-contributed VLRs are documented on this page: https://github.com/ASPRSorg/LAS/wiki/User-Contributed-VLRs

Disclaimer

VLR definitions from the various versions of the LAS specification are included here for convenience. All efforts are made to ensure that the definitions here match the definitions in the specification; nevertheless, in any case of disagreement, the official definition in the most current specification will supercede any definition included in this page.

Deprecated VLRs

Some VLRs are included here for the sake of completeness and to assist with the interpretation of LAS files using legacy versions of LAS. It is strongly recommended that LAS writers not include support for these deprecated VLRs and that the more modern versions of the VLR be used when creating new LAS files.

Classification Lookup (Deprecated)

Field Value
User ID LASF_Spec
Record ID 0
Record Length after Header 256 records * 16 bytes per struct = 4,096

The Classification Lookup VLR provides a mechanism for the LAS file to self-document all classifications within the LAS file without having to rely on external documentation or metadata. The VLR payload is defined as an array of CLASSIFICATION structs, defined as follows:

struct CLASSIFICATION {
    uint8_t ClassNumber;
    char Description[15];
}; //total of 16 bytes

The legacy Classification Lookup VLR (Record ID 0) has been a feature of the LAS specification since LAS 1.0. This VLR is deprecated in LAS 1.5 due to the limitation of 15 characters being insufficient for a detailed description. An updated version of the VLR may be found on this page under Classification Lookup v2. It is strongly recommended that the updated VLR be used instead.

Classification Lookup v2

Field Value
User ID LASF_Spec
Record ID 8
Record Length after Header 256 records * 192 bytes per struct = 49,152

The Classification Lookup v2 VLR provides a mechanism for the LAS file to self-document all classifications within the LAS file without having to rely on external documentation or metadata. This second version of the VLR improves upon the original by providing additional space for useful classification names, and adds space for optional descriptions.

The VLR payload is defined as a fixed-size array of CLASSIFICATION structs, defined as follows:

struct CLASSIFICATION {
    char ClassName[64];
    char Description[128];
}; //total of 192 bytes

The struct's position in the 0-indexed array matches the classification value. For example, a Classification Lookup VLR following the ASPRS Standard Point Class table would have the following payload:

Index Name Description
0 Created, Never Classified Descriptions are optional and user-defined
1 Unclassified You can write whatever you want and be valid
2 Ground Blank descriptions are also okay (fill with null, not spaces)
3 Low Vegetation
4 Medium Vegetation Descriptions should match your file's application
5 High Vegetation Vegetation more than 2m above ground
6 Edificio Name fields are intentionally long to allow non-English words
... ... ...
38 Oopsie The reserved classifications 23-63 should NOT be used...
39 Please don't ...unless you want to conform to a LAS Domain Profile
40 Submerged Topography Check out the Topobathy Domain Profile v2!
... ... ...
64 My custom CLASS Use the "User Definable" classes instead
65 Another custom class They can be whatever you want them to be
... ... ...
254 The payload is a fixed size so all 256 classes can be defined
255 Classifications not used should be filled with null values

Any space not needed for a name or description should be null-filled.