NetCDF,
How can (or should) LiDAR be modeled in NetCDF-4?
I’m a NetCDF novice, and it seems to me that the format assumes uniformly
spaced samples (e.g. [1]).
I see from the archives that LiDAR isn’t a very popular topic on this list [2],
but I figured I’d give it a shot and ask for any suggestion you may have.
Below is a table of sample points that I’d like to encode in NetCDF. It
originates from a USGS LAS file about Disneyland.
lat lon alt intensity category(Ground=2;Low-Vegetation=3;Unclassified=1;Water=9)
414783.24 3741669.72 40.32 26 9
414782.09 3741669.31 40.44 3 9
414782.73 3741670.04 40.40 10 9
414782.03 3741670.63 40.28 26 9
414781.51 3741671.03 40.34 22 9
My latest attempt is at [3] and included below, but it isn’t satisfactory
because I’m forced to round my points to suit a grid.
I was thinking that I should just assert a series of 1x1 dimensional records,
but I’m not sure how I could group them in a sensible way.
Also, I get the sense that I’m losing the point of using NetCDF in the first
place.
Any thoughts?
Thanks for your consideration.
Regards,
Tim Lebo
[1]
http://www.unidata.ucar.edu/software/netcdf/workshops/2010/apis_examples/ExampleDataset2D.html
[2] http://bit.ly/1gGjsgs
[3]
https://github.com/tetherless-world/opendap/blob/c566b40a97c6ce062a9a54f45607583eca34ad56/data/source/usgs-gov/earthexplorer/version/disneyland-2014-Jan-31/manual/CA_OrangeCo_2011_000402.sample.cdl
netcdf disneyland_lidar {
dimensions:
latitude = 5 ;
longitude = 1 ;
variables:
float latitude(latitude) ;
latitude:units = "?" ;
float longitude(longitude) ;
longitude:units = "?" ;
float altitude(latitude, longitude) ;
altitude:units = "?" ;
float intensity(latitude, longitude) ;
intensity:units = "?" ;
int category(latitude, longitude) ;
data:
// This sets up the grid that we don't actually want to assume.
// ERROR: We're rounding to get to a grid.
latitude = 414781.5, 414782, 414782.5, 414783, 414783.5 ;
// ERROR: We're squashing to get to a grid.
longitude = 3741670 ;
altitude =
40.32,
40.44,
40.40,
40.28,
40.34 ;
intensity =
26,
3,
10,
26,
22 ;
category =
9,
9,
9,
9,
9 ;
}