Skip to content

Import a folder of per-tree clouds as one project - #6

Merged
tim-devereux merged 1 commit into
mainfrom
feature/per-tree-import
Oct 5, 2026
Merged

tim-devereux merged 1 commit into
mainfrom
feature/per-tree-import

Conversation

@tim-devereux

Copy link
Copy Markdown
Collaborator

Pipelines that emit one cloud per tree (raysplit, and most per-tree extraction tools) had to be merged by hand before segfix could open them, and a merged cloud with no tree-ID field falls back to numbering trees by their RGB colour - numbering that has nothing to do with the one the segmentation used. Keeping the original IDs meant adding a treeID column in the merge script, per tile, duplicating data that was already there.

Per-tree Files... on the startup dialog does that merge on import: the tree ID comes from the filename (an editable regex, last number wins), from a path,tree_id CSV, or typed in, and any file can be marked as ground so its points arrive unassigned. The dialog shows the ID every file would get and refuses an import until the set is sound, because by the time the merge has run a wrong answer has cost a copy of the data.

The merge streams - peak memory is one chunk, not one file and never the set - keeps the fields every input has, and ignores any tree-ID column already in a file: the filename is the authority. Everything downstream is unchanged, so Export Trees writes the set back out under those IDs.

Pipelines that emit one cloud per tree (raysplit, and most per-tree
extraction tools) had to be merged by hand before segfix could open them,
and a merged cloud with no tree-ID field falls back to numbering trees by
their RGB colour - numbering that has nothing to do with the one the
segmentation used. Keeping the original IDs meant adding a treeID column
in the merge script, per tile, duplicating data that was already there.

Per-tree Files... on the startup dialog does that merge on import: the
tree ID comes from the filename (an editable regex, last number wins),
from a path,tree_id CSV, or typed in, and any file can be marked as
ground so its points arrive unassigned. The dialog shows the ID every
file would get and refuses an import until the set is sound, because by
the time the merge has run a wrong answer has cost a copy of the data.

The merge streams - peak memory is one chunk, not one file and never the
set - keeps the fields every input has, and ignores any tree-ID column
already in a file: the filename is the authority. Everything downstream
is unchanged, so Export Trees writes the set back out under those IDs.
@tim-devereux
tim-devereux merged commit 8675aa4 into main Oct 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant