Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,14 @@ permissions:

jobs:
build-and-check:
runs-on: macos-15
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-15, windows-latest]
defaults:
run:
shell: bash
timeout-minutes: 20

steps:
Expand All @@ -25,6 +32,11 @@ jobs:
7.0.x
10.0.x

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.13"

- name: Restore
run: dotnet restore RhinoSpatial.sln

Expand All @@ -46,8 +58,17 @@ jobs:
- name: Check ATOM downloads and cache
run: dotnet run --project RhinoSpatial.Sandbox.csproj -c Release --no-build -- lod2-atom-check

- name: Check source compatibility
run: dotnet run --project RhinoSpatial.Sandbox.csproj -c Release --no-build -- source-compatibility-check

- name: Check medium-priority compatibility
run: dotnet run --project RhinoSpatial.Sandbox.csproj -c Release --no-build -- medium-compatibility-check

- name: Check low-priority compatibility
run: dotnet run --project RhinoSpatial.Sandbox.csproj -c Release --no-build -- low-compatibility-check

- name: Check 3D Tiles selection
run: dotnet run --project RhinoSpatial.Sandbox.csproj -c Release --no-build -- tiles-selection-check

- name: Validate source catalogue JSON
run: python3 -m json.tool examples/sources.json >/dev/null
run: python -m json.tool examples/sources.json >/dev/null
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ package/yak/*.yak
package/food4rhino/*.zip
RhinoSpatial/Resources/wfs_icons.psd
RhinoSpatial/Resources/wfs_icons.pdf

# Python example helper bytecode
__pycache__/
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,26 @@

RhinoSpatial improves its established source categories through real project use. Earlier releases remain documented on [GitHub Releases](https://github.com/PascalNun/RhinoSpatial/releases).

## Unreleased

- Read remote classic-TIFF COG windows through bounded, validated HTTP byte ranges. Reuse LibTiff imagery/DEM codecs, usable overviews, masks and NoData; preserve affine placement, source elevations and the shared terrain baseline. Reject unsupported/range-refusing sources without whole-file fallback. Reference Source reads headers without decoding pixels.
- Add read-only local GeoPackage feature-layer discovery, declared EPSG CRS, bounded RTree/fallback spatial queries, attributes and standard WKB geometry through existing vector components. Preserve polygon-hole curves and geometry grouping; reject malformed/extended geometry without repairs. Catalog references do not scan feature geometry.
- Correct GDAL ASCII NoData tags that expose a count before their value. Add explicit WGS84 UTM north/south EPSG transformations needed by common COGs.
- Add Microsoft.Data.Sqlite.Core/platform SQLitePCLRaw managed providers, license texts and package inspection; no new native binary. Add 43 low-priority regression cases, macOS/Windows CI, [how-to/URLs](examples/LOW_COMPATIBILITY_WORKFLOWS.md) and synthetic COG/GeoPackage fixtures. Installed/public 0.4.0 remains unchanged.

- Select one suitable CityJSON LoD per object, retaining parts at that level; support streamed CityJSONSeq and affine geometry templates through existing local/archive/download paths. Reject malformed indices or ambiguous LoDs instead of returning partial rings.
- Support embedded affine GeoTIFF georeferencing and local world-file TIFF/PNG/JPEG with declared CRS, preserving rotated footprints, UV clipping, pixel centers and terrain sampling. Sidecar edits invalidate caches; projected CRS keys take priority over geographic keys.
- Support WMTS layer discovery, reference metadata, bounded native tile selection and PNG/JPEG mosaics through existing WMS components. Honor axis order, matrix limits, dimensions and advertised REST/KVP endpoints; validate completed caches and fail required tile errors explicitly.
- Add the managed `StbImageNext` 1.0.0 decoder (no native or further package dependencies), update third-party notices, and save [medium-priority recipes and synthetic examples](examples/MEDIUM_COMPATIBILITY_WORKFLOWS.md). New native Rhino/Windows checks remain pending.

- Follow OGC API next links and supported WFS paging with explicit user caps, deduplication, repeated-page protection and completeness diagnostics. Preserve raw GML for the building loader.
- Discover feature collections from OGC API landing pages, collection lists and advertised links using the existing layer-list/vector components. Layer selection is optional for a single collection and direct files.
- Load bounded, validated direct GeoJSON and Shapefile ZIP downloads, plus remote CityJSON/CityGML building files. Check companion files, CRS metadata, archive paths and expanded sizes; reuse validated downloads.
- Load terrain ATOM feeds through `Load Terrain`, using declared placement metadata and an aligned raster mosaic. Preserve source sample centers, NoData holes and the shared elevation baseline; reject incompatible grids or conflicting heights.
- Use ATOM and OGC API metadata as Spatial Context references without intentionally downloading feature data or archives. Existing saved selections retain priority.
- Correct projected Shapefile WKT authority detection so nested datum/ellipsoid EPSG codes cannot override the actual source CRS. Unsupported declared CRS metadata fails explicitly.
- Add deterministic compatibility checks to CI and save [copyable example workflows](examples/COMPATIBILITY_WORKFLOWS.md), source URLs and live probe results. New Rhino/Grasshopper visual checks remain pending; component GUIDs and input/output layouts are retained. No public release or installed-plugin replacement is included in this batch.

## 0.4.0 — 2026-11-01

Version 0.4.0 is the recommended public release and is published as GitHub Latest. Component names, GUIDs and normal input/output connections are retained. Provider-specific compatibility continues to evolve.
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ See the [Component and Source Reference](docs/COMPONENT_REFERENCE.md) for suppor

The toolkit has been exercised against a growing international set of public services and local formats. Individual providers, coordinate systems, geometry types, service versions, API access rules, and file metadata can still expose edge cases. For project work, prefer official or project-specific sources and keep an older working definition when upgrading.

Unreleased development adds [remote COG imagery/elevation and local GeoPackage vectors](examples/LOW_COMPATIBILITY_WORKFLOWS.md), following the earlier source and medium-priority compatibility batches. These features are not in the public 0.4.0 package; native Rhino validation remains before release.

The [changelog](CHANGELOG.md) records release changes. The [test source catalogue](docs/TEST_SOURCES.md) documents the current compatibility set and known provider limitations.

## Design principles
Expand Down
Loading
Loading