Skip to content

feat: Overhaul to use our geotiff package & generic TileMatrixSet support#208

Merged
kylebarron merged 38 commits intomainfrom
kyle/generic-tms
Feb 18, 2026
Merged

feat: Overhaul to use our geotiff package & generic TileMatrixSet support#208
kylebarron merged 38 commits intomainfrom
kyle/generic-tms

Conversation

@kylebarron
Copy link
Member

@kylebarron kylebarron commented Jan 28, 2026

This is a really big PR, but unfortunately it really had to be a big PR because we effectively had to change our geotiff reader and our TileMatrixSet traversal at the same time.

Change list

  • Fully removes geotiff.js as a dependency. We now only use @developmentseed/geotiff and the underlying @cogeotiff/core for reading data.

  • The TileMatrixSetTileset now accepts an arbitrary, spec-compliant, OGC TileMatrixSet instance. This will make it much more interoperable. Closes Use exact TileMatrixSet specification #216. This should make it easier for Lonboard to generate a TMS from async-geotiff, pass the TMS definition to JS, and then have it auto-fetch tiles from Python according to that tiling system.

  • Removes GeoTIFFLayer from our public API for now, since our geotiff implementation doesn't support fetching the entire full-resolution image and stitching tiles together. (And it's probably a candidate to fully remove in the future in favor of COGLayer)

  • Define new projection resolver epsgResolver. Our default implementation caches all fetched projections in our PROJECTION_REGISTRY (closes proj4js *crs registration* workaround #185). But users can easily override this behavior by passing a custom epsgResolver

  • Removes multiple copies of affine handling, ensuring we put all affine transformation handling into @developmentseed/affine

  • Update cog-basic example for latest changes. (Other examples haven't been updated yet)

@cogeotiff/core is very pleasant to use. It's nice to use Typescript Enums instead of hard-coding integer matching.

Todo

Closes #216

@github-actions github-actions bot added the feat label Jan 28, 2026
@kylebarron kylebarron marked this pull request as draft January 28, 2026 21:17
@kylebarron kylebarron marked this pull request as ready for review February 17, 2026 22:47
@kylebarron kylebarron changed the title feat: Generic TileMatrixSet support in tileset feat: Overhaul to use our geotiff package & generic TileMatrixSet support Feb 17, 2026
@kylebarron kylebarron merged commit 860a701 into main Feb 18, 2026
4 checks passed
@kylebarron kylebarron deleted the kyle/generic-tms branch February 18, 2026 00:16
This was referenced Feb 18, 2026
kylebarron pushed a commit that referenced this pull request Feb 18, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>0.3.0-beta.1</summary>

##
[0.3.0-beta.1](v0.2.0...v0.3.0-beta.1)
(2026-02-18)


### Features

* **affine:** Create new affine standalone package as port of Python
affine
([ce7b73d](ce7b73d))
* Create `morecantile` subpackage
([#238](#238))
([20b3ace](20b3ace))
* Create new `geotiff` subpackage, abstracting over `@cogeotiff/core`
([#223](#223))
([4fa5230](4fa5230))
* **geotiff:** generate TileMatrixSet from `GeoTIFF` instance
([#235](#235))
([cb1106e](cb1106e))
* **geotiff:** High-level CRS handling from GeoTIFF GeoKeys
([#236](#236))
([559dc03](559dc03))
* **geotiff:** Overhaul `GeoTIFF` and `Overview` classes
([#225](#225))
([857a8c2](857a8c2))
* **geotiff:** Support decoding JPEG and WebP-compressed COGs
([#229](#229))
([3dc6281](3dc6281))
* Initial GeoTIFF dynamic decoder API
([#226](#226))
([5d611f3](5d611f3))
* Overhaul to use our `geotiff` package & generic TileMatrixSet support
([#208](#208))
([860a701](860a701)),
closes
[#216](#216)


### Bug Fixes

* Fix shader caching
([#221](#221))
([2a02439](2a02439))


### Miscellaneous Chores

* release 0.3.0-beta.1
([#239](#239))
([8ba364e](8ba364e))
</details>

<details><summary>affine: 0.3.0-beta.1</summary>

## 0.3.0-beta.1 (2026-02-18)


### Features

* **affine:** Create new affine standalone package as port of Python
affine
([ce7b73d](ce7b73d))
* **geotiff:** generate TileMatrixSet from `GeoTIFF` instance
([#235](#235))
([cb1106e](cb1106e))
* Overhaul to use our `geotiff` package & generic TileMatrixSet support
([#208](#208))
([860a701](860a701)),
closes
[#216](#216)


### Miscellaneous Chores

* release 0.3.0-beta.1
([#239](#239))
([8ba364e](8ba364e))
</details>

<details><summary>geotiff: 0.3.0-beta.1</summary>

## 0.3.0-beta.1 (2026-02-18)


### Features

* **affine:** Create new affine standalone package as port of Python
affine
([ce7b73d](ce7b73d))
* Create new `geotiff` subpackage, abstracting over `@cogeotiff/core`
([#223](#223))
([4fa5230](4fa5230))
* **geotiff:** generate TileMatrixSet from `GeoTIFF` instance
([#235](#235))
([cb1106e](cb1106e))
* **geotiff:** High-level CRS handling from GeoTIFF GeoKeys
([#236](#236))
([559dc03](559dc03))
* **geotiff:** Overhaul `GeoTIFF` and `Overview` classes
([#225](#225))
([857a8c2](857a8c2))
* **geotiff:** Support decoding JPEG and WebP-compressed COGs
([#229](#229))
([3dc6281](3dc6281))
* Initial GeoTIFF dynamic decoder API
([#226](#226))
([5d611f3](5d611f3))
* Overhaul to use our `geotiff` package & generic TileMatrixSet support
([#208](#208))
([860a701](860a701)),
closes
[#216](#216)


### Miscellaneous Chores

* release 0.3.0-beta.1
([#239](#239))
([8ba364e](8ba364e))
</details>

<details><summary>morecantile: 0.3.0-beta.1</summary>

## 0.3.0-beta.1 (2026-02-18)


### Features

* Create `morecantile` subpackage
([#238](#238))
([20b3ace](20b3ace))
* **geotiff:** generate TileMatrixSet from `GeoTIFF` instance
([#235](#235))
([cb1106e](cb1106e))
* Overhaul to use our `geotiff` package & generic TileMatrixSet support
([#208](#208))
([860a701](860a701)),
closes
[#216](#216)


### Miscellaneous Chores

* release 0.3.0-beta.1
([#239](#239))
([8ba364e](8ba364e))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: ds-release-bot[bot] <116609932+ds-release-bot[bot]@users.noreply.github.com>
@ds-release-bot ds-release-bot bot mentioned this pull request Feb 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use exact TileMatrixSet specification proj4js *crs registration* workaround

1 participant