From ca7d65be587f66961f1af328c87c75dcee4cae9f Mon Sep 17 00:00:00 2001 From: snkmcb Date: Sat, 5 Sep 2026 20:01:40 +0900 Subject: [PATCH 1/2] chore: prepare v0.2.0 release --- CHANGELOG.md | 20 +++++- README.md | 17 ++--- VERSION | 2 +- docs/architecture/WORKSPACE.md | 4 +- docs/design/DESIGN_POLICY.md | 6 +- docs/reference/CAPABILITY_MATRIX.md | 17 ++--- docs/releases/README.md | 3 +- docs/releases/v0.2.0.md | 67 +++++++++++++++++++ docs/roadmap/README.md | 4 +- docs/roadmap/implementation-status.md | 24 +++---- libs/usd-geo-core/CMakeLists.txt | 2 +- libs/usd-geo-core/openstrata.library.yaml | 2 +- libs/usd-geotiff/CMakeLists.txt | 2 +- libs/usd-geotiff/README.md | 4 +- libs/usd-geotiff/openstrata.library.yaml | 2 +- libs/usd-raster-authoring/CMakeLists.txt | 2 +- libs/usd-raster-core/CMakeLists.txt | 2 +- libs/usd-raster-core/openstrata.library.yaml | 2 +- openstrata.toml | 2 +- plugins/raster-geotiff/CMakeLists.txt | 2 +- plugins/raster-geotiff/openstrata.plugin.yaml | 2 +- 21 files changed, 136 insertions(+), 52 deletions(-) create mode 100644 docs/releases/v0.2.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dedcb3..14189f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,19 @@ All notable changes to this project are documented here. -The project has not tagged a release. The release sequence is in -[the roadmap](docs/roadmap/README.md); the task-level record is +Released versions are recorded in [the release records](docs/releases/README.md). +The release sequence is in [the roadmap](docs/roadmap/README.md); the task-level +record is [implementation status](docs/roadmap/implementation-status.md). ## [Unreleased] +- No unreleased changes. + +## [0.2.0] - 2026-09-05 + +### Added + - Connected the strict 1-based GeoTIFF `band` argument to metadata and mesh authoring, with parser regression coverage for normalization and rejection. - Read GDAL band metadata for descriptions, units, scale, and offset, and apply @@ -19,6 +26,15 @@ The project has not tagged a release. The release sequence is in `GTIF012` diagnostics before pixel buffers are allocated. - Added an OpenUSD-backed 2x2 mesh authoring regression test and integrated it into the `ost build` / `ost test` workflow. +- Added windowed GeoTIFF reads for strips and tiles through `ReadWindow`, + `ReadTile`, and `ReadScanlines`, including single-band selection and output + type conversion. +- Added Deflate, LZW, PackBits, horizontal differencing, and floating-point + predictor decoding, plus chunky and separate planar configurations. +- Added read planning, adjacent-range coalescing, I/O counters, amplification + reporting, memory budgets, cancellation, and overview selection. +- Added coverage for the supported integer and floating-point sample formats, + compressed paths, and mid-read cancellation. ## [0.1.0] - 2026-08-27 diff --git a/README.md b/README.md index 4aeb96e..f16f89c 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ OpenUSD FileFormat Plugins and libraries for raster and grid geospatial data. The project reads GeoTIFF first, through a windowed, transport-independent reader, and authors the result into existing OpenUSD schemas. The initial metadata-to-regular-grid mesh slice is connected for synthetic and small -inputs; the specialized libtiff backend handles compressed windows. A -production GDAL adapter is planned as the preferred backend for general raster -dataset access and later format expansion. +inputs; the specialized libtiff backend handles compressed windows, and the +reader reports planning and I/O statistics. A production GDAL adapter is +planned as the preferred backend for general raster dataset access and later +format expansion. **What it does** @@ -36,17 +37,17 @@ resolver transport or expose GDAL types to plugin and authoring layers. ## Status Early. The repository structure, core libraries, GeoTIFF metadata reader, -pixel windows including the supported compressed paths, and the first -regular-grid mesh authoring slice are implemented and tested. Broader read -planning and the full mesh argument and conversion surface remain planned. No -release has been tagged. +pixel windows including the supported compressed paths, read planning, and the +first regular-grid mesh authoring slice are implemented and tested. The v0.2.0 +release covers the windowed pixel-read slice. The full mesh argument and +conversion surface remain planned. | Milestone | Scope | Status | | --- | --- | --- | | 0 | Repository skeleton, CMake, OpenStrata workspace, CI, docs | done | | 1 | Raster core value model, with no OpenUSD | done | | 2 | GeoTIFF metadata and a metadata-only FileFormat Plugin | in progress | -| 3 | Windowed pixel reading | in progress | +| 3 | Windowed pixel reading | done | | 4 | `UsdGeomMesh` authoring | in progress | The task-level record is diff --git a/VERSION b/VERSION index 6e8bf73..0ea3a94 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0 +0.2.0 diff --git a/docs/architecture/WORKSPACE.md b/docs/architecture/WORKSPACE.md index bde733d..01487ec 100644 --- a/docs/architecture/WORKSPACE.md +++ b/docs/architecture/WORKSPACE.md @@ -284,8 +284,8 @@ composed separately; see [RESOLVER_SOURCE.md](RESOLVER_SOURCE.md). | Milestone | Boundary | Status | | --- | --- | --- | -| v0.1.0 | repository structure, raster core, GeoTIFF metadata, metadata-only FileFormat Plugin | planned | -| v0.2.0 | band reads, `RasterWindow`, strip and tile layouts, NoData | planned | +| v0.1.0 | repository structure, raster core, GeoTIFF metadata, metadata-only FileFormat Plugin | released | +| v0.2.0 | band reads, `RasterWindow`, strip and tile layouts, NoData | released | | v0.3.0 | DEM to `UsdGeomMesh`, coordinate transform, local origin, format arguments | planned | | v0.4.0 | bounded-memory tiling and payload-backed authoring | planned | | v0.5.0 | production converter, manifests, generated cache | planned | diff --git a/docs/design/DESIGN_POLICY.md b/docs/design/DESIGN_POLICY.md index 3524a7c..9ddd274 100644 --- a/docs/design/DESIGN_POLICY.md +++ b/docs/design/DESIGN_POLICY.md @@ -32,9 +32,9 @@ path for long-running deterministic payload and cache generation. ## 2. Current Assessment -Milestones 0 and 1 are complete. The GeoTIFF metadata, window-reading, and -initial regular-grid mesh slices are connected and tested; no release has been -tagged. The task-level record is +Milestones 0 through 3 are complete for the v0.2.0 scope. The GeoTIFF +metadata, window-reading, and initial regular-grid mesh slices are connected +and tested; v0.2.0 records the completed pixel-read release. The task-level record is [implementation status](../roadmap/implementation-status.md). The properties to establish and then preserve are: diff --git a/docs/reference/CAPABILITY_MATRIX.md b/docs/reference/CAPABILITY_MATRIX.md index 8a829ff..ec9f62c 100644 --- a/docs/reference/CAPABILITY_MATRIX.md +++ b/docs/reference/CAPABILITY_MATRIX.md @@ -4,10 +4,11 @@ What raster input is accepted, and what it becomes in USD. The GeoTIFF metadata reader and the window reader are connected to the `raster-geotiff` FileFormat plugin's library path. Deflate, LZW, and PackBits -decoding are available when the optional libtiff backend is enabled; uncompressed -floating-point predictor support is built into the reader, and read planning remains -later M3 work. Rows below distinguish the library -capability from the user-facing bundle. +decoding are available when the optional libtiff backend is enabled; +floating-point predictor support is built into the reader, and read planning, +range coalescing, counters, budgets, cancellation, and overview selection are +tested capabilities. Rows below distinguish the library capability from the +user-facing bundle. Status vocabulary, from [MODULE_README_CONTRACT.md](../contributing/MODULE_README_CONTRACT.md): @@ -38,10 +39,10 @@ not planned explicitly out of scope | Little-endian and big-endian headers | implemented | M2 | | | Classic TIFF IFD traversal | implemented | M2 | | | BigTIFF (64-bit offsets) | implemented | M2 | | -| Strip-organized data | implemented | M3 | Initial uncompressed reads whole rows | -| Tile-organized data | implemented | M3 | Initial uncompressed intersecting-tile reads | +| Strip-organized data | implemented | M3 | Reads whole intersecting rows and reports amplification | +| Tile-organized data | implemented | M3 | Reads only intersecting tiles when the source permits | | Multiple IFDs / overviews | implemented | M9 | Discovered at M2, used at M9 | -| Planar configuration: chunky | implemented | M3 | Initial uncompressed path | +| Planar configuration: chunky | implemented | M3 | Window path | | Planar configuration: separate | implemented | M3 | Single-band reads select one plane | | Subfile / mask IFDs | not planned yet | | | @@ -134,7 +135,7 @@ argument appears there only in the milestone that implements what it reaches. | Source | Status | Milestone | | --- | --- | --- | | Local file | implemented | M2 | -| In-memory fixture | planned | M1 | +| In-memory fixture | implemented | M1 | | Resolver-provided `ArAsset` | planned | M8 | | HTTP implemented in this repository | not planned | Belongs to `usd-http-resolver` | diff --git a/docs/releases/README.md b/docs/releases/README.md index b4a80d9..77a89e5 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -9,11 +9,10 @@ Released versions are recorded below. The remaining planned sequence follows. | Version | Date | Record | | --- | --- | --- | | v0.1.0 | 2026-08-27 | [v0.1.0.md](v0.1.0.md) — GeoTIFF metadata FileFormat and packaged acceptance | +| v0.2.0 | 2026-09-05 | [v0.2.0.md](v0.2.0.md) — GeoTIFF windowed raster reads | | Version | Planned theme | | --- | --- | -| v0.1.0 | GeoTIFF metadata contract: repository structure, raster core, GeoTIFF header and metadata, metadata-only FileFormat Plugin | -| v0.2.0 | GeoTIFF raster reads: band reading, `RasterWindow`, strips and tiles, NoData | | v0.3.0 | DEM to `UsdGeomMesh`: height mesh, coordinate transform, local origin, format arguments | | v0.4.0 | Bounded-memory tiling: tiled mesh authoring and payloads | | v0.5.0 | Production converter: CLI, manifests, generated cache | diff --git a/docs/releases/v0.2.0.md b/docs/releases/v0.2.0.md new file mode 100644 index 0000000..36512b7 --- /dev/null +++ b/docs/releases/v0.2.0.md @@ -0,0 +1,67 @@ +# v0.2.0 + +Released 2026-09-05. + +## Scope + +This release completes the GeoTIFF pixel-reading slice. It adds bounded, +windowed reads over strip- and tile-organized sources while preserving the +transport-independent `RandomAccessSource` boundary. + +## Supported behavior + +- `ReadWindow`, `ReadTile`, and `ReadScanlines` for single-band reads. +- Classic TIFF and BigTIFF strip and tile layouts, including chunky and + separate planar configuration. +- Uncompressed, Deflate, LZW, and PackBits decoding, with horizontal + differencing and floating-point predictors where supported by the backend. +- Unsigned and signed 8-, 16-, and 32-bit integer samples, plus 32- and 64-bit + IEEE floating-point samples, with output type conversion. +- Band scale and offset application through the `double` conversion path. +- Read planning, adjacent-range coalescing, requested-versus-fetched byte + counters, I/O amplification reporting, memory budgets, cancellation, and + overview selection. + +## Authored USD + +The FileFormat plugin exposes metadata and the initial regular-grid mesh +representation, including fixed topology, Y-up coordinates, a quantized local +origin, extent, conversion metadata, and the interactive vertex ceiling. The +pixel reader is also available through the GeoTIFF library contracts used by +that plugin. + +## File-format arguments + +The strict 1-based `band` argument is connected to metadata and mesh authoring. +Pixel reads select one band per call. The broader dynamic argument and +conversion surface remains planned for the v0.3.0 work. + +## Known limitations + +- The plugin is still a preview path, not a production converter or tiled + payload generator. +- Resolver-backed remote reads, HTTP transport, reprojection, and vertical + datum transformation remain outside this repository. +- Strip-organized sources read complete intersecting rows, so narrow windows + can have high I/O amplification; the reader reports it. +- JPEG, ZSTD, sub-byte, and complex samples are not supported. +- Multi-band composites and image authoring remain planned. + +## Build requirements + +CY2026 / OpenUSD 26.08, Python 3.13 for plugin tests, CMake, Ninja, and a C++17 +compiler matching the runtime ABI. Direct aggregate runtime composition requires +OpenStrata 0.22.8 or newer. + +## Dependencies and licensing + +Project code is Apache-2.0. OpenUSD is a runtime/build dependency. The +optional libtiff backend is used for compressed decoding and carries the +libtiff and zlib notices recorded in `THIRD_PARTY_NOTICES.md`. + +## Verification + +The core-only lane, fixture determinism, workspace CTest, GeoTIFF sample-format +and compression tests, read-planning and I/O-statistics tests, cancellation +coverage, overview-selection tests, FileFormat L0-L4, product verification, +and repeatable package inventory are the release gates. \ No newline at end of file diff --git a/docs/roadmap/README.md b/docs/roadmap/README.md index 29b95ab..7998a1d 100644 --- a/docs/roadmap/README.md +++ b/docs/roadmap/README.md @@ -107,7 +107,7 @@ GeoTIFF -> usdGeoTiff ---\ | 0 | Repository skeleton: CMake, OpenStrata workspace, CI, docs structure, module README contract | done | — | | 1 | Raster core value model and memory fixtures, with no OpenUSD | done | `v0.1.0` | | 2 | GeoTIFF metadata: header, IFD, dimensions, bands, sample type, CRS, geotransform, NoData | next | `v0.1.0` | -| 3 | Pixel reading: strips, tiles, selected band, `RasterWindow`, bounded-memory decode | planned | `v0.2.0` | +| 3 | Pixel reading: strips, tiles, selected band, `RasterWindow`, bounded-memory decode | done | `v0.2.0` | | 4 | `UsdGeomMesh` authoring: initial regular mesh slice landed; height scale, NoData, local origin, CRS metadata | in progress | `v0.3.0` | | 5 | Dynamic FileFormat arguments plus the initial `usdRasterGdal` production adapter and GeoTIFF backend equivalence | planned | `v0.3.0` | | 6 | Raster tiling: spatial tiles, payload generation, bounded memory | planned | `v0.4.0` | @@ -131,7 +131,7 @@ maps onto the milestones above. | --- | --- | --- | --- | | W1 | Repository structure, CI, documentation contracts | 0 | done | | W2 | Format-independent raster value model and diagnostics | 1 | done | -| W3 | GeoTIFF container, georeferencing, and windowed decoding | 2, 3 | next | +| W3 | GeoTIFF container, georeferencing, and windowed decoding | 2, 3 | in progress | | W4 | Coordinate contract, mesh authoring, and golden tests | 4 | planned | | W5 | Argument normalization, layer identity, plugin adapter | 5 | planned | | W6 | Spatial tiling, payloads, bounded memory | 6 | planned | diff --git a/docs/roadmap/implementation-status.md b/docs/roadmap/implementation-status.md index 82099b9..a751b5f 100644 --- a/docs/roadmap/implementation-status.md +++ b/docs/roadmap/implementation-status.md @@ -4,17 +4,17 @@ The task-level record of what exists. The [capability matrix](../reference/CAPABILITY_MATRIX.md) records source support; this file records work. -**Current state: milestones 0 and 1 are complete, and the GeoTIFF metadata -vertical slice is connected.** The repository skeleton, the OpenUSD-free core -lane, the core libraries, the initial GeoTIFF window reader, the metadata -authoring library, and the first format-specific plugin are built and tested. -The optional libtiff backend now decodes Deflate, LZW, and PackBits windows -through the RandomAccessSource client-I/O boundary. Uncompressed floating-point -predictor windows are decoded in the reader, and read planning, memory budgets, +**Current state: milestones 0 through 3 are complete for the v0.2.0 scope.** +The repository skeleton, the OpenUSD-free core lane, the core libraries, the +GeoTIFF window reader, the metadata authoring library, and the first +format-specific plugin are built and tested. The optional libtiff backend now +decodes Deflate, LZW, and PackBits windows through the RandomAccessSource +client-I/O boundary. Floating-point predictors, read planning, memory budgets, tile-boundary cancellation, and overview selection are covered by tests. -Converter sources are not implemented yet. The initial -GeoTIFF-to-regular-grid mesh slice is now connected and tested, including its -interactive vertex ceiling, and no release has been tagged. +Converter sources and the broader mesh/conversion surface are not implemented +yet. The initial GeoTIFF-to-regular-grid mesh slice is connected and tested, +including its interactive vertex ceiling. The v0.2.0 release covers the +completed pixel-read slice. Status words, from [MODULE_README_CONTRACT.md](../contributing/MODULE_README_CONTRACT.md): @@ -112,11 +112,11 @@ Detail in [phase-1-raster-core.md](phase-1-raster-core.md). | `third_party/libtiff` dependency target and optional system discovery | implemented | | ADR: libgeotiff versus in-repository key decoding | open | -## Milestone 3 — pixel reading (in progress, `v0.2.0`) +## Milestone 3 — pixel reading (done, `v0.2.0`) | Task | Status | | --- | --- | -| Initial uncompressed UInt16 and Float32 strip/tile decoding | implemented | +| UInt16 and Float32 strip/tile decoding | implemented | | Deflate through the optional libtiff backend | implemented | | LZW, PackBits | implemented | | Horizontal differencing predictor | implemented | diff --git a/libs/usd-geo-core/CMakeLists.txt b/libs/usd-geo-core/CMakeLists.txt index 6814203..48b6bbc 100644 --- a/libs/usd-geo-core/CMakeLists.txt +++ b/libs/usd-geo-core/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.23) project(usdGeoCore - VERSION 0.1.0 + VERSION 0.2.0 DESCRIPTION "Format-independent geospatial values and diagnostics" LANGUAGES CXX) diff --git a/libs/usd-geo-core/openstrata.library.yaml b/libs/usd-geo-core/openstrata.library.yaml index 87edba4..cb26f0e 100644 --- a/libs/usd-geo-core/openstrata.library.yaml +++ b/libs/usd-geo-core/openstrata.library.yaml @@ -1,7 +1,7 @@ schema: openstrata.library/v1alpha1 library: id: usdGeoCore - version: 0.1.0 + version: 0.2.0 cmake: package: usdGeoCore target: usdgeo::core diff --git a/libs/usd-geotiff/CMakeLists.txt b/libs/usd-geotiff/CMakeLists.txt index a157799..4bc0b73 100644 --- a/libs/usd-geotiff/CMakeLists.txt +++ b/libs/usd-geotiff/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.23) project(usdGeoTiff - VERSION 0.1.0 + VERSION 0.2.0 DESCRIPTION "OpenUSD-free GeoTIFF metadata reader" LANGUAGES CXX) diff --git a/libs/usd-geotiff/README.md b/libs/usd-geotiff/README.md index 92ab77f..9c686cd 100644 --- a/libs/usd-geotiff/README.md +++ b/libs/usd-geotiff/README.md @@ -14,8 +14,8 @@ materials. Mesh authoring is a subsequent milestone. ## Status The classic and BigTIFF metadata path is implemented and tested for the -synthetic fixtures. Initial uncompressed chunky and separate-planar strip and -tile windows are implemented for UInt16 and Float32, including sampled reads, +synthetic fixtures. Chunky and separate-planar strip and tile windows are +implemented for UInt16 and Float32, including sampled reads, endian conversion, GDAL band descriptions, units, scale, and offset. Deflate windows are implemented through the optional libtiff backend. LZW and PackBits are also available through that backend. Horizontal differencing predictors diff --git a/libs/usd-geotiff/openstrata.library.yaml b/libs/usd-geotiff/openstrata.library.yaml index 6b665c9..74604f8 100644 --- a/libs/usd-geotiff/openstrata.library.yaml +++ b/libs/usd-geotiff/openstrata.library.yaml @@ -1,7 +1,7 @@ schema: openstrata.library/v1alpha1 library: id: usdGeoTiff - version: 0.1.0 + version: 0.2.0 cmake: package: usdGeoTiff target: usdgeotiff::core \ No newline at end of file diff --git a/libs/usd-raster-authoring/CMakeLists.txt b/libs/usd-raster-authoring/CMakeLists.txt index 6ce69b3..c4c9bb7 100644 --- a/libs/usd-raster-authoring/CMakeLists.txt +++ b/libs/usd-raster-authoring/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.23) project(usdRasterAuthoring - VERSION 0.1.0 + VERSION 0.2.0 DESCRIPTION "Shared OpenUSD raster metadata authoring" LANGUAGES CXX) diff --git a/libs/usd-raster-core/CMakeLists.txt b/libs/usd-raster-core/CMakeLists.txt index e924298..0fd362d 100644 --- a/libs/usd-raster-core/CMakeLists.txt +++ b/libs/usd-raster-core/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.23) project(usdRasterCore - VERSION 0.1.0 + VERSION 0.2.0 DESCRIPTION "Format-independent raster value model and byte-source contract" LANGUAGES CXX) diff --git a/libs/usd-raster-core/openstrata.library.yaml b/libs/usd-raster-core/openstrata.library.yaml index f44c239..739c596 100644 --- a/libs/usd-raster-core/openstrata.library.yaml +++ b/libs/usd-raster-core/openstrata.library.yaml @@ -1,7 +1,7 @@ schema: openstrata.library/v1alpha1 library: id: usdRasterCore - version: 0.1.0 + version: 0.2.0 cmake: package: usdRasterCore target: usdraster::core diff --git a/openstrata.toml b/openstrata.toml index 527c78a..bdbc6b9 100644 --- a/openstrata.toml +++ b/openstrata.toml @@ -1,6 +1,6 @@ [project] name = "usd-raster-plugins" -version = "0.1.0" +version = "0.2.0" [requires] platform = "cy2026" diff --git a/plugins/raster-geotiff/CMakeLists.txt b/plugins/raster-geotiff/CMakeLists.txt index 6ca9448..9b79529 100644 --- a/plugins/raster-geotiff/CMakeLists.txt +++ b/plugins/raster-geotiff/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.22) project(RasterGeotiffPlugin - VERSION 0.1.0 + VERSION 0.2.0 DESCRIPTION "OpenUSD tif file-format plugin" LANGUAGES CXX) diff --git a/plugins/raster-geotiff/openstrata.plugin.yaml b/plugins/raster-geotiff/openstrata.plugin.yaml index a0c2317..dfd149b 100644 --- a/plugins/raster-geotiff/openstrata.plugin.yaml +++ b/plugins/raster-geotiff/openstrata.plugin.yaml @@ -3,7 +3,7 @@ # the contract `ost plugin inspect|build|doctor|test` resolve against. plugin: name: raster-geotiff - version: 0.1.0 + version: 0.2.0 kind: usd-fileformat # SPDX license for this plugin's own code. Surfaced by `ost plugin inspect` and # recorded in the package manifest. Change it to match your project's license. From 07900ff3de4f4a11aa594c5ffb71840cf8bdba97 Mon Sep 17 00:00:00 2001 From: snkmcb Date: Sat, 5 Sep 2026 20:05:02 +0900 Subject: [PATCH 2/2] docs: align COG roadmap with shipped overview selection --- docs/design/DESIGN_POLICY.md | 2 +- docs/releases/README.md | 2 +- docs/roadmap/README.md | 4 ++-- docs/roadmap/tiling-and-lod.md | 9 ++++----- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/design/DESIGN_POLICY.md b/docs/design/DESIGN_POLICY.md index 9ddd274..ce740a1 100644 --- a/docs/design/DESIGN_POLICY.md +++ b/docs/design/DESIGN_POLICY.md @@ -191,7 +191,7 @@ Long conversions are not pushed into `SdfFileFormat::Read`. See | Format | Status | Notes | | --- | --- | --- | | GeoTIFF (strip and tile, BigTIFF) | first target | metadata, then windows, then mesh | -| COG | planned as an optimization | overview discovery and tile-aware reads inside the GeoTIFF reader, not a separate parser | +| COG | planned as an optimization | tile-aware reads and remote performance inside the GeoTIFF reader, not a separate parser | | PNG / JPEG + world file | candidate | no in-band georeferencing; requires explicit arguments | | NetCDF / GRIB | candidate | multi-dimensional; needs a variable-selection contract first | | Zarr | candidate | chunked object storage; depends on resolver maturity | diff --git a/docs/releases/README.md b/docs/releases/README.md index 77a89e5..5ee8f89 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -17,7 +17,7 @@ Released versions are recorded below. The remaining planned sequence follows. | v0.4.0 | Bounded-memory tiling: tiled mesh authoring and payloads | | v0.5.0 | Production converter: CLI, manifests, generated cache | | v0.6.0 | Resolver-backed GeoTIFF: remote `ArAsset` reads and `usd-http-resolver` compatibility | -| v0.7.0 | COG-aware optimization: overview selection, remote tile selectivity, performance baseline | +| v0.7.0 | COG-aware optimization: tile-aware planning, remote selectivity, performance baseline | Scope per release is in the [roadmap](../roadmap/README.md). diff --git a/docs/roadmap/README.md b/docs/roadmap/README.md index 7998a1d..3eafa77 100644 --- a/docs/roadmap/README.md +++ b/docs/roadmap/README.md @@ -80,7 +80,7 @@ The rationale for the split between preview and production is | `v0.4.0` | Bounded-memory tiling | Tiled mesh authoring and payloads | | `v0.5.0` | Production converter | CLI, manifests, generated cache | | `v0.6.0` | Resolver-backed GeoTIFF | Remote `ArAsset` reads, `usd-http-resolver` compatibility | -| `v0.7.0` | COG-aware optimization | Overview selection, remote tile selectivity, performance baseline | +| `v0.7.0` | COG-aware optimization | Tile-aware planning, remote selectivity, performance baseline | | Later | Format expansion | Additional raster formats after infrastructure maturity | | Later | `usd-geospatial-core` extraction | Only when the duplication with `usd-pointcloud-plugins` is real and stable | @@ -113,7 +113,7 @@ GeoTIFF -> usdGeoTiff ---\ | 6 | Raster tiling: spatial tiles, payload generation, bounded memory | planned | `v0.4.0` | | 7 | Converter: independent mesh and heightmap modes, deterministic output, manifests, generated cache, resumable workflow | planned | `v0.5.0` | | 8 | Resolver interoperability: `ArAsset` adapter, remote GeoTIFF, integration tests | planned | `v0.6.0` | -| 9 | COG optimization: overview discovery, tile-aware reads, remote selectivity metrics | planned | `v0.7.0` | +| 9 | COG optimization: tile-aware reads, remote selectivity metrics, performance baseline | planned | `v0.7.0` | Detail per milestone is in [phase-0-repository-skeleton.md](phase-0-repository-skeleton.md), diff --git a/docs/roadmap/tiling-and-lod.md b/docs/roadmap/tiling-and-lod.md index d4d0a51..4d86879 100644 --- a/docs/roadmap/tiling-and-lod.md +++ b/docs/roadmap/tiling-and-lod.md @@ -144,8 +144,8 @@ implementation. See [ADR-0002](../adr/0002-resolver-owns-transport.md). COG is not a new parser. It is a layout convention over GeoTIFF, so this milestone is an optimization of the existing reader. -- Overview discovery from the multi-IFD structure, and selection of the - coarsest level that satisfies the requested sampling step. +- Harden the existing overview selection against remote sources and record + the selected level in remote performance reports. - Tile-aware read planning that prefers native tile boundaries. - Reporting which overview level served each request. - Remote selectivity metrics: requested bytes, fetched bytes, request count, @@ -155,9 +155,8 @@ milestone is an optimization of the existing reader. ### Exit criteria -- A preview of a large COG reads from an overview rather than decimating - full-resolution data, proven by the level recorded in metadata and by the - byte counters. +- A preview of a large COG uses the selected overview through the resolver + source, proven by the level recorded in metadata and by the byte counters. - Bytes fetched for a preview drop by an order of magnitude against the Milestone 8 baseline on the same source. - A GeoTIFF without overviews still works, decimating full-resolution data with