# Creation of a WebMapTile ServiceImageryProvider using a WMTS layer with a custom TilingScheme based on an existing EPSG code (EPSG:2056)

**URL:** https://community.cesium.com/t/creation-of-a-webmaptile-serviceimageryprovider-using-a-wmts-layer-with-a-custom-tilingscheme-based-on-an-existing-epsg-code-epsg-2056/39114
**Category:** CesiumJS
**Created:** [March 6, 2025, 9:06pm UTC](https://community.cesium.com/t/creation-of-a-webmaptile-serviceimageryprovider-using-a-wmts-layer-with-a-custom-tilingscheme-based-on-an-existing-epsg-code-epsg-2056/39114 "2025-03-06T21:06:16Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![swiss\_knight](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/swiss_knight/32/3458_2.png) [@swiss\_knight](https://community.cesium.com/u/swiss_knight)
#### Post date: [March 6, 2025, 9:06pm UTC](https://community.cesium.com/t/creation-of-a-webmaptile-serviceimageryprovider-using-a-wmts-layer-with-a-custom-tilingscheme-based-on-an-existing-epsg-code-epsg-2056/39114/1 "2025-03-06T21:06:16Z")

</div>

Hi,

Cesium JS currently [allows](https://cesium.com/learn/cesiumjs/ref-doc/TilingScheme.html) for those two WMTS tiling schemes:

- [Cesium.GeographicTilingScheme()](https://cesium.com/learn/cesiumjs/ref-doc/GeographicTilingScheme.html)
- [Cesium.WebMercatorTilingScheme()](https://cesium.com/learn/cesiumjs/ref-doc/WebMercatorTilingScheme.html)

and that’s really great.

But I’d like to integrate some WMTS layer (using [WebMapTileServiceImageryProvider](https://cesium.com/learn/cesiumjs/ref-doc/WebMapTileServiceImageryProvider.html)) from [this WMTS](https://www.ogd.stadt-zuerich.ch/mapproxy/wmts/1.0.0/WMTSCapabilities.xml) for which the only available `TileMatrixSet` is based on `EPSG:2056` as follow:

```xml
<TileMatrixSet>
<ows:Identifier>ktzh</ows:Identifier>
<ows:SupportedCRS>EPSG:2056</ows:SupportedCRS>
<TileMatrix>
<ows:Identifier>00</ows:Identifier>
<ScaleDenominator>241904.76190464283</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>11</MatrixWidth>
<MatrixHeight>8</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>01</ows:Identifier>
<ScaleDenominator>120952.38095249998</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>22</MatrixWidth>
<MatrixHeight>15</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>02</ows:Identifier>
<ScaleDenominator>60476.19047607142</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>43</MatrixWidth>
<MatrixHeight>30</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>03</ows:Identifier>
<ScaleDenominator>30238.095238214282</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>85</MatrixWidth>
<MatrixHeight>59</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>04</ows:Identifier>
<ScaleDenominator>15119.04761892857</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>170</MatrixWidth>
<MatrixHeight>118</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>05</ows:Identifier>
<ScaleDenominator>7559.523809642857</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>339</MatrixWidth>
<MatrixHeight>235</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>06</ows:Identifier>
<ScaleDenominator>3779.7619046428567</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>677</MatrixWidth>
<MatrixHeight>469</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>07</ows:Identifier>
<ScaleDenominator>1889.8809525</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>1354</MatrixWidth>
<MatrixHeight>937</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>08</ows:Identifier>
<ScaleDenominator>944.9404760714285</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>2707</MatrixWidth>
<MatrixHeight>1874</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>09</ows:Identifier>
<ScaleDenominator>472.4702382142857</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>5413</MatrixWidth>
<MatrixHeight>3748</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>10</ows:Identifier>
<ScaleDenominator>236.2351189285714</ScaleDenominator>
<TopLeftCorner>2480237.0 1315832.0</TopLeftCorner>
<TileWidth>512</TileWidth>
<TileHeight>512</TileHeight>
<MatrixWidth>10825</MatrixWidth>
<MatrixHeight>7495</MatrixHeight>
</TileMatrix>
</TileMatrixSet>

```

What would be the most efficient / cleaner way to achieve this?

Note: I am neither the owner nor do I have access to this WMTS server.

Also, I’m not sure it’s worth opening a feature request, but I would love Cesium to let users import custom WMTS layers in any given CRS based on EPSG codes.

ps: the word “WebMapTileServiceImageryProvider” was too long for the title, I had to insert a space to split it.

Thanks.

---

<div class="post-metadata">

### Author: ![Gabby\_Getz](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/gabby_getz/32/7838_2.png) [@Gabby\_Getz](https://community.cesium.com/u/Gabby_Getz)
#### Post date: [March 7, 2025, 3:51pm UTC](https://community.cesium.com/t/creation-of-a-webmaptile-serviceimageryprovider-using-a-wmts-layer-with-a-custom-tilingscheme-based-on-an-existing-epsg-code-epsg-2056/39114/2 "2025-03-07T15:51:03Z")

</div>

Ah, right now you’ll need to convert the imagery to a CRS similar to either Geographic or WebMercator. [Support for additional projections](https://github.com/CesiumGS/cesium/issues/3877) is a popular feature request. I’ll add your comment to that thread. Thanks for bringing it up!
