visr / LasIO.jl

Julia package for reading and writing the LAS lidar format.
Other
22 stars 13 forks source link

Basic support for reading variable length records. #1

Closed c42f closed 7 years ago

c42f commented 7 years ago

The support here is pretty basic, I just wanted it for a quick check of the status of VLRs in a file supplied by someone else. I'm not much of a user of VLRs - feedback welcome especially if I've missed something obvious!

visr commented 7 years ago

Great, thanks, this is good to have. I'll take it for a spin soon.

visr commented 7 years ago

I added a commit with a 1k LAS file with VLR entries and user defined bytes between the VLR and the data. We can write the original file back now, so we capture all this information.

For a bit I doubted your decision to put the VLR information in the LasHeader, because it is treated separately in the ASPRS doc:

PUBLIC HEADER BLOCK VARIABLE LENGTH RECORDS POINT DATA RECORDS

But for all practical purposes I guess it's nice to only have two objects to deal with: the vector of points and the metadata. So I actually went ahead and put the VLR and user defined bytes directly in the read function of LasHeader.

Let me know if you agree with these changes.

c42f commented 7 years ago

Your extensions look great to me.

I'm quite sure whether these things should be part of the header or not, especially since the EVLRs come after the point data. But I'm also not too worried at this stage. Some of these things might be clearer with support for more versions of las showing how to generalize.

visr commented 7 years ago

Yeah I agree, I'll just merge this now.

The fact that EVLR come after the data doesn't seem like a big issue to me, since based on the header data we can jump there before reading the point data. It's just that if we do that it's not really a header anymore. And if people do store a lot of information there it might not be something you want to read every time.