From 83c48bd8b34562815b473cc937710c58f3a55f4a Mon Sep 17 00:00:00 2001 From: kgerb Date: Tue, 21 Apr 2026 23:21:57 +0200 Subject: [PATCH 1/9] Update 3Dtrees SmartTile tool to version 2.0.1, adding support for a new output option for resolution 2 as COPC. Adjusted default settings and updated center of mass for output preview. --- tools/3dtrees_smart_tile/smart_tile.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/3dtrees_smart_tile/smart_tile.xml b/tools/3dtrees_smart_tile/smart_tile.xml index d348121d44..c80e3cc901 100644 --- a/tools/3dtrees_smart_tile/smart_tile.xml +++ b/tools/3dtrees_smart_tile/smart_tile.xml @@ -1,7 +1,7 @@ Create COPC tiles, subsample outputs, filter border overlap, and remap prediction dimensions - 2.0.0 + 2.0.1 0 @@ -59,6 +59,7 @@ --resolution-1 '$operation.resolution_1' --resolution-2 '$operation.resolution_2' --output-copc-res1 $operation.output_copc_res1 + --output-copc-res2 $operation.output_copc_res2 --dimension-reduction $operation.dimension_reduction --chunk-size '$operation.chunk_size' --num-spatial-chunks \${GALAXY_SLOTS:-4} @@ -229,6 +230,7 @@ + @@ -363,7 +365,7 @@ - + @@ -449,6 +451,7 @@ - It then creates overlapping tiles and writes two subsampled output collections. - `Reduce dimensions in subsampled outputs` only affects the subsampled outputs, not the internal COPC cache. - `Write resolution 1 as COPC (.copc.laz)` only affects the first subsampled output collection (default: enabled). +- `Write resolution 2 as COPC (.copc.laz)` only affects the second subsampled output collection (default: disabled). **Filter** From 6ea2b3c20bae4ecc4a8303fea53ed84ab250ec98 Mon Sep 17 00:00:00 2001 From: kgerb Date: Wed, 22 Apr 2026 08:47:35 +0200 Subject: [PATCH 2/9] change boolean to select --- tools/3dtrees_smart_tile/smart_tile.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/3dtrees_smart_tile/smart_tile.xml b/tools/3dtrees_smart_tile/smart_tile.xml index c80e3cc901..42774718de 100644 --- a/tools/3dtrees_smart_tile/smart_tile.xml +++ b/tools/3dtrees_smart_tile/smart_tile.xml @@ -4,7 +4,10 @@ 2.0.1 0 - + + + + From f064f3f1f61cb1a21d0b674a4f3558669805e5e3 Mon Sep 17 00:00:00 2001 From: kgerb Date: Sat, 16 May 2026 00:16:12 +0200 Subject: [PATCH 3/9] tools: add 3dtrees metadata wrapper --- tools/3dtrees_metadata/.shed.yml | 12 ++ tools/3dtrees_metadata/metadata.xml | 141 ++++++++++++++++++ .../test-data/collection_summary.json | 8 + .../test-data/gadm_fixture.geojson | 35 +++++ .../test-data/wwf_ecoregions_fixture.geojson | 34 +++++ 5 files changed, 230 insertions(+) create mode 100644 tools/3dtrees_metadata/.shed.yml create mode 100644 tools/3dtrees_metadata/metadata.xml create mode 100644 tools/3dtrees_metadata/test-data/collection_summary.json create mode 100644 tools/3dtrees_metadata/test-data/gadm_fixture.geojson create mode 100644 tools/3dtrees_metadata/test-data/wwf_ecoregions_fixture.geojson diff --git a/tools/3dtrees_metadata/.shed.yml b/tools/3dtrees_metadata/.shed.yml new file mode 100644 index 0000000000..24eac2fc91 --- /dev/null +++ b/tools/3dtrees_metadata/.shed.yml @@ -0,0 +1,12 @@ +name: 3dtrees_metadata +owner: bgruening +description: Extract administrative metadata for 3Dtrees collections from GADM boundaries. +homepage_url: https://github.com/3dTrees-earth/tool_metadata +long_description: | + Extracts administrative context for a 3Dtrees collection summary by computing + the collection centroid from collection_summary.json and intersecting it with a + supplied GADM vector dataset. +remote_repository_url: https://github.com/bgruening/galaxytools/tree/master/tools/3dtrees_metadata +type: unrestricted +categories: +- "Geo Science" diff --git a/tools/3dtrees_metadata/metadata.xml b/tools/3dtrees_metadata/metadata.xml new file mode 100644 index 0000000000..d419dd9aa8 --- /dev/null +++ b/tools/3dtrees_metadata/metadata.xml @@ -0,0 +1,141 @@ + + Extract administrative and ecoregion metadata for a point-cloud collection + + 1.0.0 + 0 + + + ghcr.io/3dtrees-earth/tool_metadata:@TOOL_VERSION@ + + &1 + ]]> + + + + + + + + + ^[A-Za-z0-9._-]*$ + + + + ^[A-Za-z0-9._-]*$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @misc{3dtrees_metadata, title = {3Dtrees: Metadata}, author = {3Dtrees Project}, year = {2026}} + + + diff --git a/tools/3dtrees_metadata/test-data/collection_summary.json b/tools/3dtrees_metadata/test-data/collection_summary.json new file mode 100644 index 0000000000..d3db2a25a9 --- /dev/null +++ b/tools/3dtrees_metadata/test-data/collection_summary.json @@ -0,0 +1,8 @@ +{ + "collection": { + "multipolygon_wkt": "MULTIPOLYGON(((7.84 47.98, 7.86 47.98, 7.86 48.00, 7.84 48.00, 7.84 47.98)))" + }, + "n_tiles": 2, + "homogeneous_crs": true, + "homogeneous_attribute_names": true +} diff --git a/tools/3dtrees_metadata/test-data/gadm_fixture.geojson b/tools/3dtrees_metadata/test-data/gadm_fixture.geojson new file mode 100644 index 0000000000..80656cdc6b --- /dev/null +++ b/tools/3dtrees_metadata/test-data/gadm_fixture.geojson @@ -0,0 +1,35 @@ +{ + "type": "FeatureCollection", + "name": "gadm_fixture", + "crs": { + "type": "name", + "properties": { + "name": "urn:ogc:def:crs:OGC:1.3:CRS84" + } + }, + "features": [ + { + "type": "Feature", + "properties": { + "GID_0": "DEU", + "COUNTRY": "Germany", + "GID_1": "DEU.1_1", + "NAME_1": "Baden-Wuerttemberg", + "TYPE_1": "Land", + "ENGTYPE_1": "State" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [7.70, 47.80], + [8.00, 47.80], + [8.00, 48.20], + [7.70, 48.20], + [7.70, 47.80] + ] + ] + } + } + ] +} diff --git a/tools/3dtrees_metadata/test-data/wwf_ecoregions_fixture.geojson b/tools/3dtrees_metadata/test-data/wwf_ecoregions_fixture.geojson new file mode 100644 index 0000000000..0c4b464112 --- /dev/null +++ b/tools/3dtrees_metadata/test-data/wwf_ecoregions_fixture.geojson @@ -0,0 +1,34 @@ +{ + "type": "FeatureCollection", + "name": "wwf_ecoregions_fixture", + "crs": { + "type": "name", + "properties": { + "name": "urn:ogc:def:crs:OGC:1.3:CRS84" + } + }, + "features": [ + { + "type": "Feature", + "properties": { + "ECO_NAME": "Black Forest", + "ECO_ID": "PA0414", + "REALM": "PA", + "BIOME": 4, + "BIOME_DESC": "Temperate Broadleaf & Mixed Forests" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [7.70, 47.80], + [8.00, 47.80], + [8.00, 48.20], + [7.70, 48.20], + [7.70, 47.80] + ] + ] + } + } + ] +} From f82e16895cd10c0182a2190c153594c259253253 Mon Sep 17 00:00:00 2001 From: kgerb Date: Sat, 16 May 2026 00:23:30 +0200 Subject: [PATCH 4/9] tools: rename 3dtrees metadata wrapper XML --- tools/3dtrees_metadata/.shed.yml | 11 ++++++----- .../{metadata.xml => 3dtrees_metadata.xml} | 0 2 files changed, 6 insertions(+), 5 deletions(-) rename tools/3dtrees_metadata/{metadata.xml => 3dtrees_metadata.xml} (100%) diff --git a/tools/3dtrees_metadata/.shed.yml b/tools/3dtrees_metadata/.shed.yml index 24eac2fc91..d25107b342 100644 --- a/tools/3dtrees_metadata/.shed.yml +++ b/tools/3dtrees_metadata/.shed.yml @@ -1,12 +1,13 @@ name: 3dtrees_metadata owner: bgruening -description: Extract administrative metadata for 3Dtrees collections from GADM boundaries. +description: Extract administrative and ecoregion metadata for 3Dtrees collections. homepage_url: https://github.com/3dTrees-earth/tool_metadata long_description: | - Extracts administrative context for a 3Dtrees collection summary by computing - the collection centroid from collection_summary.json and intersecting it with a - supplied GADM vector dataset. -remote_repository_url: https://github.com/bgruening/galaxytools/tree/master/tools/3dtrees_metadata + Extracts administrative and ecoregion context for a 3Dtrees collection summary + by computing the collection centroid from collection_summary.json and + intersecting it with selected GADM and WWF Terrestrial Ecoregions v2.0 vector + datasets. +remote_repository_url: https://github.com/3dTrees-earth/galaxytools/tree/3dtrees_metadata_v1_0_0/tools/3dtrees_metadata type: unrestricted categories: - "Geo Science" diff --git a/tools/3dtrees_metadata/metadata.xml b/tools/3dtrees_metadata/3dtrees_metadata.xml similarity index 100% rename from tools/3dtrees_metadata/metadata.xml rename to tools/3dtrees_metadata/3dtrees_metadata.xml From 32e0fd0423ef2f346797f7b99460f1ead0b90251 Mon Sep 17 00:00:00 2001 From: kgerb Date: Sat, 16 May 2026 09:51:04 +0200 Subject: [PATCH 5/9] tools: update metadata tool repository URL --- tools/3dtrees_metadata/.shed.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/3dtrees_metadata/.shed.yml b/tools/3dtrees_metadata/.shed.yml index d25107b342..b644d6ea25 100644 --- a/tools/3dtrees_metadata/.shed.yml +++ b/tools/3dtrees_metadata/.shed.yml @@ -1,7 +1,7 @@ name: 3dtrees_metadata owner: bgruening description: Extract administrative and ecoregion metadata for 3Dtrees collections. -homepage_url: https://github.com/3dTrees-earth/tool_metadata +homepage_url: https://github.com/3dTrees-earth/3dtrees_metadata long_description: | Extracts administrative and ecoregion context for a 3Dtrees collection summary by computing the collection centroid from collection_summary.json and From 8bbb0de21280e87cc2266d73fccee07257dbdc1d Mon Sep 17 00:00:00 2001 From: kgerb Date: Sat, 16 May 2026 10:04:44 +0200 Subject: [PATCH 6/9] tools: use 3dtrees metadata container --- tools/3dtrees_metadata/3dtrees_metadata.xml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/tools/3dtrees_metadata/3dtrees_metadata.xml b/tools/3dtrees_metadata/3dtrees_metadata.xml index d419dd9aa8..3681aa060b 100644 --- a/tools/3dtrees_metadata/3dtrees_metadata.xml +++ b/tools/3dtrees_metadata/3dtrees_metadata.xml @@ -5,28 +5,20 @@ 0 - ghcr.io/3dtrees-earth/tool_metadata:@TOOL_VERSION@ + ghcr.io/3dtrees-earth/3dtrees_metadata:@TOOL_VERSION@ Date: Sat, 16 May 2026 10:24:36 +0200 Subject: [PATCH 7/9] Update metadata tool to use internal reference layers --- tools/3dtrees_metadata/3dtrees_metadata.xml | 39 ++++----------------- 1 file changed, 6 insertions(+), 33 deletions(-) diff --git a/tools/3dtrees_metadata/3dtrees_metadata.xml b/tools/3dtrees_metadata/3dtrees_metadata.xml index 3681aa060b..696bbb0e20 100644 --- a/tools/3dtrees_metadata/3dtrees_metadata.xml +++ b/tools/3dtrees_metadata/3dtrees_metadata.xml @@ -11,18 +11,7 @@ ln -s '$collection_summary' collection_summary.json && python -u /src/run.py --collection-summary collection_summary.json - #if str($metadata_layers).find('gadm') != -1: - --gadm-path '$gadm_path' - #if $gadm_layer: - --gadm-layer '$gadm_layer' - #end if - #end if - #if str($metadata_layers).find('ecoregion') != -1: - --wwf-ecoregions-path '$wwf_ecoregions_path' - #if $wwf_ecoregions_layer: - --wwf-ecoregions-layer '$wwf_ecoregions_layer' - #end if - #end if + --metadata-layers '$metadata_layers' --output-file additional_metadata.json 2>&1 ]]> @@ -32,14 +21,6 @@ - - - ^[A-Za-z0-9._-]*$ - - - - ^[A-Za-z0-9._-]*$ - @@ -48,8 +29,6 @@ - - @@ -64,7 +43,6 @@ - @@ -77,7 +55,6 @@ - @@ -91,9 +68,9 @@ **What it does** This tool reads a 3Dtrees `collection_summary.json`, computes the WGS84 centroid -from `collection.multipolygon_wkt`, and intersects that point with supplied -reference vector datasets. GADM provides administrative context; optional WWF -Terrestrial Ecoregions v2.0 data provides ecoregion, realm, and biome context. +from `collection.multipolygon_wkt`, and intersects that point with the selected +reference layers. GADM provides administrative context; WWF Terrestrial +Ecoregions v2.0 data provides ecoregion, realm, and biome context. ----- @@ -101,12 +78,8 @@ Terrestrial Ecoregions v2.0 data provides ecoregion, realm, and biome context. - **Collection summary**: `collection_summary.json` produced by the 3Dtrees standardization tool in collection mode. -- **GADM vector dataset**: A GADM boundary file supplied at runtime. GeoPackage - and GeoJSON inputs are the intended formats. -- **GADM layer**: Optional layer name. If omitted, the tool checks all available - layers and selects the deepest matching administrative level. -- **WWF Terrestrial Ecoregions v2.0 dataset**: Optional ecoregions vector file. -- **WWF ecoregions layer**: Optional layer name for the WWF dataset. +- **Metadata layers to extract**: one or more internal reference layers. The tool + reads the selected reference datasets from the Docker image. ----- From eb7b9532fe99ab9fd3aabfa6dccfb9d228464da1 Mon Sep 17 00:00:00 2001 From: kgerb Date: Sat, 16 May 2026 12:12:23 +0200 Subject: [PATCH 8/9] tools: align metadata layer argument --- tools/3dtrees_metadata/3dtrees_metadata.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/3dtrees_metadata/3dtrees_metadata.xml b/tools/3dtrees_metadata/3dtrees_metadata.xml index 696bbb0e20..4236516eff 100644 --- a/tools/3dtrees_metadata/3dtrees_metadata.xml +++ b/tools/3dtrees_metadata/3dtrees_metadata.xml @@ -17,7 +17,7 @@ ]]> - + From 6cf6b13e917b94207c7326c01613294577f7f830 Mon Sep 17 00:00:00 2001 From: kgerb Date: Mon, 1 Jun 2026 11:49:46 +0200 Subject: [PATCH 9/9] test: cover standardization collection centroid --- tools/3dtrees_standardization/standard.xml | 54 +++++++++++++++++- .../test-data/mikro2_no_crs.laz | Bin 0 -> 847 bytes .../test-data/mikro_no_crs.laz | Bin 0 -> 833 bytes 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 tools/3dtrees_standardization/test-data/mikro2_no_crs.laz create mode 100644 tools/3dtrees_standardization/test-data/mikro_no_crs.laz diff --git a/tools/3dtrees_standardization/standard.xml b/tools/3dtrees_standardization/standard.xml index 72d9dd5d5f..176cba2645 100644 --- a/tools/3dtrees_standardization/standard.xml +++ b/tools/3dtrees_standardization/standard.xml @@ -1,7 +1,7 @@ Standardize LAS/LAZ files or validate collections for consistency - 1.1.0 + 1.2.0 0 @@ -27,6 +27,12 @@ --dataset-path ./input_files/ --output-dir ./ --method collection + #if $mode.approx_lon is not None: + --approx-lon '$mode.approx_lon' + #end if + #if $mode.approx_lat is not None: + --approx-lat '$mode.approx_lat' + #end if #end if ]]> @@ -49,6 +55,12 @@ + + @@ -90,16 +102,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -134,6 +185,7 @@ Validates consistency of multiple LAS/LAZ files: - **Tile Geometry**: Detects overlaps and gaps between tiles - **Global Statistics**: Computes aggregated statistics across all files - **Removeable Attributes**: Identifies attributes that are all-NA or constant-zero +- **Collection Centroid**: Computes a WGS84 centroid from valid collection geometry, or uses optional approximate longitude/latitude as a trusted override when provided **Outputs (collection mode):** - ``collection_summary.json`` containing collection-level checks and flags, per-file metadata (CRS, attributes, point counts, convex hulls), and suggested removeable attributes for standardization diff --git a/tools/3dtrees_standardization/test-data/mikro2_no_crs.laz b/tools/3dtrees_standardization/test-data/mikro2_no_crs.laz new file mode 100644 index 0000000000000000000000000000000000000000..2ae852ef6ff2fd7ebf21276b116eb923d1d35295 GIT binary patch literal 847 zcmeZq40dB+U}QiCj4bFP==`Fb#A1aYg@VN7?8Nj`bXf+52@J2;%NcJ2jRu+Cu7aro zDpD=7&i!Fki#<9GlKxX9=?J781k*x5Gy{V{jRV*9#RVe8l8!*i_8(9_XouWYVW9k* zz#VxYbzpPuLDbor)i{9lp%EfbKFpT_X!5k??p_59y{gOth19&{{FKxb28KOhdJIXG z3Q*zvGzA~W;FA3OoMHtHBO^mYBMVIi24IFapT^9X!nf2n(BvinknDEq7%VL+om02smy-f}{=`6XJeEq>K4IoENuGqN5>FZqox9g|>*`?xK@-1w! z4DZC!^$qh<%{b!kZI@Krcs=B}(TQxJ;w#NH-`6bF;0a7FDCaqR)sVku)xv8xr*7Y7 zt)405JXg+Q-bGQ<)7#Qk9oScUM7S~Edvo*i0FKLk3k&>e<0X1eJSx_?`g=|0%r|8~ N!$1I(roBMH2mrU-(F6bh literal 0 HcmV?d00001