Fix PDAL RuntimeError when EPT omits Classification dimension#55
Open
endolith wants to merge 1 commit into
Open
Fix PDAL RuntimeError when EPT omits Classification dimension#55endolith wants to merge 1 commit into
endolith wants to merge 1 commit into
Conversation
USGS Entwine tiles sometimes omit Classification from ept.json schema. filters.range on Classification then fails at runtime. Detect presence via each dataset's ept.json and disable filterNoise when any intersecting dataset lacks Classification. Co-authored-by: endolith <endolith@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #13.
Some USGS 3DEP Entwine resources expose an
ept.jsonschema that does not includeClassification. The tile path always enabledfilterNoise, which appendsfilters.rangeonClassificationand triggersRuntimeError: filters.range: Invalid dimension name in 'limits' option: 'Classification'.This change fetches each intersecting dataset's
ept.json(with a small in-memory cache) and only enablesfilterNoisewhen every dataset's schema listsClassification. When any dataset omits it, classification-based noise filtering is skipped and a log line explains why.Trade-off: For those tiles, class 18 (high noise) points are no longer stripped before DSM generation, which may slightly affect DSM quality compared to classified data.