org.gvsig.lidar
===============

org.gvsig.lidar is a provider to read and write LAS files on gvSIG, as
defined by LAS specification:
https://www.asprs.org/committee-general/laser-las-file-format-exchange-activities.html

The plugin is designed to work on gvSIG 2.2 and 2.3. It requires gvSIG to be
executed with a Java JVM version 8.0 or higher, as the libraries it uses
require Java 8.0.

LAS files are dessigned to store clouds of 3D points captured using LIDAR
sensors. They have a set of mandatory fields and set of optional ones,
depending on the point data format specified on the LAS header.

The following mandatory fields are exposed as layer fields by the DAL
providers:
- CLASSIFICATION
- POINTX (x coordinate of the point)
- POINTY (y coordinate of the point)
- POINTZ (z coordinate of the point, useful to symbolize terrain elevation)
- INTENSITY
- RETURNNUM (return number)
- NUMBEROFRETURNS (number of returns)

The following optional fields are exposed as layer fields by the DAL
providers when available on the LAS file:
- COLOR (point color expressed as an RGB Java long)
- TIME (absolute capture time as a long integer, as generated by Data.getTime())
- WEEKTIME (relative capture time, expressed as GPS week time)

org.gvsig.lidar provides 2 different LAS drivers, based on 2 different
libraries:
- The JGrasstools-based provider is a read/write driver. It will use
  the C-based libLas library if available on the native library path,
  and it will use a pure Java implementation if libLAS is not available
  or not successfully loaded. Note that only the Java version has been
  tested.
- The Whitebox-based provider is a pure Java read-only driver. It currently
  performs better than the JGrasstools Java-based one.

Both drivers include 2 thinning (simplification) parameters, in order to
read a subset of the total available points on the LAS file:
- thinningDivisor: reads 1 of every n points (1/n), e.g. thinningDivisor=10
  loads 10% of total points
- thinningResolution: Loads n points per square map unit, e.g.
  thinningResolution=0.0001 loads 0.0001 points/m2 (assumming that the units
  of the projection of the example layer are metres), which is the same
  as 100 points/km2

Note that thinningDivisor is ignored when thinningResolution is > 0.
The thinning is useful to quickly render huge files on smaller scales.

