Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publish LAS 1.4 R14 #76

Merged
merged 99 commits into from
Mar 26, 2019
Merged

Publish LAS 1.4 R14 #76

merged 99 commits into from
Mar 26, 2019

Conversation

esilvia
Copy link
Member

@esilvia esilvia commented Jan 25, 2019

LAS 1.4 R14 is ready for final comment before publication. Please post any comments on this thread and we'll do our best to address your feedback promptly.

Here's a summary of the changes with respect to R13, the current version (issue numbers included):

Noteworthy changes:

Clarification or usability improvements:

In accordance with the requirements for a Revision without incrementing the Version Number, there are no substantive changes that significantly impact the interpretation of the LAS format itself.

PDF here: https://s3.amazonaws.com/asprs-las/LAS-specification-5ae7567ae98f953674c09b078596f72e0a08a223.pdf

Line by line comparisons: https://github.com/ASPRSorg/LAS/pull/76/files

esilvia and others added 30 commits October 13, 2017 08:48
Draft enhancements to support GmAPD LiDAR.
# Conflicts resolved:
#	source/10_point.txt
…r EVLRs section.

Added Introduction root heading.
Reorganized heading heirarchy to something more logical (#57).
Removed (optional) tags from Defined VLRs headings.
Capitalization of headings is now more consistent.
Updates to address review comments from @hobu and @rapidlasso.
Undid typo correction. Should be in a different branch.
Adds Aggregate bit to the Global Encoding to accommodate new technologies.
Renamed "LAS 1.4 Additions" to "Comparison of LAS 1.4 to Previous Versions".
Added issue links to changelog in 01_intro.txt.
Resolving Issue 57 - Clean up TOC and Headings
@esilvia esilvia added clarification deprecation aesthetic wiki Changes to be incorporated into the wiki labels Jan 25, 2019
@esilvia esilvia added this to the v1.4 R14 milestone Jan 25, 2019
@esilvia esilvia requested a review from hobu January 25, 2019 16:11
@rapidlasso
Copy link
Member

rapidlasso commented Jan 28, 2019

Turns out FUGRO implemented the triples in the Extra Bytes. For more info see my comment here: (#1)

@rapidlasso
Copy link
Member

rapidlasso commented Jan 28, 2019

For the "extra bytes" scale factor and offset, should we state that the scale factor (if not used) should be set to 1.0 and that the offset (if not used) should be set to 0.0. I came across a data set that left the scale factor at zero and merely indicated in the 'options' that the scale factor was not set. This broke my code that always multiplied. Having a default value of 1.0 may safe future implementation from having that bug.

@esilvia
Copy link
Member Author

esilvia commented Jan 29, 2019

The spec states in its current form that unused scale, offset, and nodata values should be zero if unused as indicated in the options field, which it sounds like is the case for your sample dataset. Since I don't see any ambiguity in its current form, I'm not sure that I can or should change that in a revision. Do you feel differently @rapidlasso ?

@rapidlasso
Copy link
Member

Not strongly. But the best "zero" for a scale factor is a value of "1.0". It was just a poor decision / oversight when I wrote that part of the "Extra Bytes" specification back then and I wish I had formulated it like that.

@manfred-brands
Copy link

If we do want to simplify, then in that case one could deprecate the flags for offset/scale factor. They are always there and set to 0.0/1.0 as default. We should not have both a flag that indicates not to use them and a default value for those that ignore the flag.

@rapidlasso
Copy link
Member

Here I strongly disagree. That would really change the specification as this also affects used scale factors (that may no longer get used because the flag is zero). My suggested change only affects the zero setting of unused scale factors.

@manfred-brands
Copy link

I agree that from a compatibility stand my suggestion is not good.
But dictating a useful value for fields that are not to be used will lead to developers ignoring that flag. Changing a spec is a whole new way to solve bugs in code.

@esilvia
Copy link
Member Author

esilvia commented Feb 19, 2019

I've chewed on this for a bit and I think it's best to keep the scale defaulting to zero. When we implement a "Compact Extra Bytes" VLR then I think we should take this into consideration.

@esilvia
Copy link
Member Author

esilvia commented Feb 19, 2019

Per a discussion on #1 regarding #4, I'm leaving this PR open for another day or two to ensure that we have consensus on R14. Thus far I believe we're clear to proceed with publication.

@rapidlasso
Copy link
Member

rapidlasso commented Feb 20, 2019

The change from raw anytype to scaled and offset double values for the min / max values will require LASlib (and maybe other implementations) to make functional changes. How are we supposed to know whether an existing LAS/LAZ file uses the old anytype convention that is currently valid versus the new double convention that is soon to be valid once R14 is ratified? Here are the current functions used in the LASlib and LASzip APIs for this:

https://github.com/LAStools/LAStools/blob/master/LASzip/src/lasattributer.hpp#L119
https://github.com/LAStools/LAStools/blob/master/LASzip/src/lasattributer.hpp#L132
https://github.com/LAStools/LAStools/blob/master/LASzip/src/lasattributer.hpp#L277

@manfred-brands
Copy link

@rapidlasso comments repeat what I had previously said at #1

No matter the intention, the R14 changes the type of the min/max fields from R13 without anywhere an indication in the file that it is a different version. CARIS stores min/max values as the field type. LASLib interprets them as such as well.

@rapidlasso
Copy link
Member

CARIS stores min max doubles or min max anytype? I don't think LASlib / LAStools actually use those values anywhere at the moment.

@manfred-brands
Copy link

anytype:

Value interpreted as anytype:
Beam (UInt32) MinimumValue=1 MaximumValue=512 NoDataValue=4294967295
Profile (UInt32) MinimumValue=1 MaximumValue=576 NoDataValue=4294967295

Values interpreted as double:
Beam (UInt32) MinimumValue=4.94065645841247E-324 MaximumValue=2.52961610670718E-321 NoDataValue=4294967295
Profile (UInt32) MinimumValue=4.94065645841247E-324 MaximumValue=2.84581812004558E-321 NoDataValue=4294967295

@manfred-brands
Copy link

@rapidlasso some lasreader code is calling set_min/max and update_min/max. (_ply/_qfit/_txt). In the current version it is calling lasattributer.cast which converts the stored value to anytype.

@rapidlasso
Copy link
Member

Yes. LASlib / LASzip can set anytype min/max values when writing. But I have no tool that uses the written values for any post processing. So I would currently not notice when these values are broken.

Clarified form of the ExtraByte min/max field.
@esilvia
Copy link
Member Author

esilvia commented Mar 21, 2019

You're right. A revision shouldn't change the field type regardless of the original intent. I'll revert #4 for R14 and defer it to 1.5.

The original post now has updated PDF and commit comparison links.

@esilvia
Copy link
Member Author

esilvia commented Mar 22, 2019

Now that the ExtraByte min/max objection has been resolved, this is the last call for comments before LAS 1.4 R14 gets released. If I receive no more objections, I'll merge the pull request, remove the DRAFT tags, and send the PDF to ASPRS for publication.

@esilvia esilvia merged commit 266f56b into master Mar 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aesthetic clarification deprecation wiki Changes to be incorporated into the wiki
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants