diff --git a/index.html b/index.html index 82896d0..de5b362 100644 --- a/index.html +++ b/index.html @@ -686,9 +686,7 @@

Installation

Launch

-

You'll need to have TITILER_STACAPI_STAC_API_URL variables set in your environment pointing to your STAC API service.

-
export TITILER_STACAPI_STAC_API_URL=https://api.stac
-
+

By default the stac_api_url is planetarycomputer.microsoft.com/api/stac/v1, but you can override it by setting the environment variable TITILER_STACAPI_STAC_API_URL.

python -m pip install uvicorn
 
 uvicorn titiler.stacapi.main:app --port 8000
@@ -700,7 +698,7 @@ 

Using Docker

It runs titiler.stacapi using Gunicorn web server.

How it works

-

+

Contribution & Development

See CONTRIBUTING.md

License

@@ -708,7 +706,7 @@

LicenseAuthors

See contributors for a listing of individual contributors.

Changes

-

See CHANGES.md.

+

See CHANGELOG.md.

diff --git a/search/search_index.json b/search/search_index.json index c24b644..54164de 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"titiler-stacapi-mspc","text":"

Connect titiler to MS Planetary Computer STAC API

Documentation: developmentseed.org/titiler-stacapi-mspc/

Source Code: developmentseed/titiler-stacapi-mspc

"},{"location":"#installation","title":"Installation","text":"

Install from sources and run for development:

$ git clone https://github.com/developmentseed/titiler-stacapi-mspc.git\n$ cd titiler-stacapi-mspc\n$ python -m pip install -e .\n
"},{"location":"#launch","title":"Launch","text":"

You'll need to have TITILER_STACAPI_STAC_API_URL variables set in your environment pointing to your STAC API service.

export TITILER_STACAPI_STAC_API_URL=https://api.stac\n
python -m pip install uvicorn\n\nuvicorn titiler.stacapi.main:app --port 8000\n
"},{"location":"#using-docker","title":"Using Docker","text":"
$ git clone https://github.com/developmentseed/titiler-stacapi-mspc.git\n$ cd titiler-stacapi-mspc\n$ docker-compose up --build api\n

It runs titiler.stacapi using Gunicorn web server.

"},{"location":"#how-it-works","title":"How it works","text":""},{"location":"#contribution-development","title":"Contribution & Development","text":"

See CONTRIBUTING.md

"},{"location":"#license","title":"License","text":"

See LICENSE

"},{"location":"#authors","title":"Authors","text":"

See contributors for a listing of individual contributors.

"},{"location":"#changes","title":"Changes","text":"

See CHANGES.md.

"},{"location":"contributing/","title":"Development - Contributing","text":"

Issues and pull requests are more than welcome: github.com/developmentseed/titiler-stacapi/issues

dev install

git clone https://github.com/developmentseed/titiler-stacapi.git\ncd titiler-stacapi\n\npython -m pip install pre-commit -e .[\"dev,test\"]\n

You can then run the tests with the following command:

python -m pytest --cov titiler.stacapi --cov-report term-missing\n

This repo is set to use pre-commit to run isort, flake8, pydocstring, black (\"uncompromising Python code formatter\") and mypy when committing new code.

$ pre-commit install\n
"},{"location":"technical-considerations/","title":"Technical Considerations","text":""},{"location":"technical-considerations/#optimizing-tile-requests-in-titiler-stacapi","title":"Optimizing Tile Requests in titiler-stacapi","text":"

To enhance the efficiency of tile requests in titiler-stacapi, it's essential to set appropriate zoom levels and bounding boxes and be mindful of the number of requests made to the STAC API. This guide will walk you through understanding and applying these settings to improve performance and avoid overloading the service with expansive queries.

"},{"location":"technical-considerations/#understanding-zoom-levels","title":"Understanding Zoom Levels","text":"

Zoom levels dictate the level of detail in the tiles requested. Specifying a range (min/max) can significantly optimize request times and resource usage.

"},{"location":"technical-considerations/#bounding-box-considerations","title":"Bounding Box Considerations","text":"

The bounding box limits the geographical area of interest, preventing unnecessarily broad tile generation. Define this based on your application's specific needs to reduce load times and server strain.

"},{"location":"technical-considerations/#mindful-usage-of-stac-api-requests","title":"Mindful Usage of STAC API Requests","text":"

Each tile request to titiler-stacapi results in one request to a STAC API /search. It's vital to use this feature respectfully towards STAC API providers by being aware of the request load. High volumes of tile requests translate to an equal number of STAC API requests, which could overwhelm the API endpoints.

For detailed examples and more on optimizing your usage of titiler-stacapi, refer to the project's primary documentation.

"},{"location":"endpoints/","title":"Endpoints","text":"

By default the main application (titiler.pgstac.main.app) provides three sets of endpoints:

"},{"location":"endpoints/collections_endpoints/","title":"Collections","text":""},{"location":"endpoints/collections_endpoints/#stac-collections-endpoints","title":"STAC Collections endpoints","text":"Method URL Output Description GET /collections/{collection_id}/tiles/{TileMatrixSetId}/{z}/{x}/{y}[@{scale}x][.{format}] image/bin Create a web map tile image for a collection and a tile index GET /collections/{collection_id}/{TileMatrixSetId}/tilejson.json JSON (TileJSON) Return a Mapbox TileJSON document GET /collections/{collection_id}/{TileMatrixSetId}/map HTML simple map viewer"},{"location":"endpoints/collections_endpoints/#tiles","title":"Tiles","text":"

:endpoint:/collections/{collection_id}/tiles/{TileMatrixSetId}/{z}/{x}/{y}[@{scale}x][.{format}]

Important

assets OR expression is required

Example:

"},{"location":"endpoints/collections_endpoints/#tilesjson","title":"TilesJSON","text":"

:endpoint:/collections/{collection_id}[/{TileMatrixSetId}]/tilejson.json

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/","title":"Items","text":""},{"location":"endpoints/items_endpoints/#stac-items-endpoints","title":"STAC Items endpoints","text":"

The Item endpoints are created using TiTiler's MultiBaseTilerFactory

Method URL Output Description GET /collections/{collection_id}/items/{item_id}/bounds JSON (Bounds) return dataset's bounds GET /collections/{collection_id}/items/{item_id}/assets JSON return the list of available assets GET /collections/{collection_id}/items/{item_id}/info JSON (Info) return assets basic info GET /collections/{collection_id}/items/{item_id}/info.geojson GeoJSON (InfoGeoJSON) return assets basic info as a GeoJSON feature GET /collections/{collection_id}/items/{item_id}/asset_statistics JSON (Statistics) return per asset statistics GET /collections/{collection_id}/items/{item_id}/statistics JSON (Statistics) return assets statistics (merged) POST /collections/{collection_id}/items/{item_id}/statistics GeoJSON (Statistics) return assets statistics for a GeoJSON (merged) GET /collections/{collection_id}/items/{item_id}/tiles[/{TileMatrixSetId}]/{z}/{x}/{y}[@{scale}x][.{format}] image/bin create a web map tile image from assets GET /collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/tilejson.json JSON (TileJSON) return a Mapbox TileJSON document GET /collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/WMTSCapabilities.xml XML return OGC WMTS Get Capabilities GET /collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/map HTML simple map viewer GET /collections/{collection_id}/items/{item_id}/point/{lon},{lat} JSON (Point) return pixel values from assets GET /collections/{collection_id}/items/{item_id}/preview[.{format}] image/bin create a preview image from assets GET /collections/{collection_id}/items/{item_id}/bbox/{minx},{miny},{maxx},{maxy}[/{width}x{height}].{format} image/bin create an image from part of assets POST /collections/{collection_id}/items/{item_id}/feature[/{width}x{height}][.{format}] image/bin create an image from a geojson feature intersecting assets"},{"location":"endpoints/items_endpoints/#tiles","title":"Tiles","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/tiles[/{TileMatrixSetId}]/{z}/{x}/{y}[@{scale}x][.{format}]

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/#preview","title":"Preview","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/preview[.{format}]

Important

Example:

"},{"location":"endpoints/items_endpoints/#bboxfeature","title":"BBOX/Feature","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/bbox/{minx},{miny},{maxx},{maxy}.{format} :endpoint:/collections/{collection_id}/items/{item_id}/bbox/{minx},{miny},{maxx},{maxy}/{width}x{height}.{format}

Important

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/feature[/{width}x{height}][].{format}] - [POST]

Important

Example:

"},{"location":"endpoints/items_endpoints/#point","title":"Point","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/point/{lon},{lat}

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/#tilesjson","title":"TilesJSON","text":"

:endpoint:/collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/tilejson.json tileJSON document

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/#bounds","title":"Bounds","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/bounds - Return the bounds of the STAC item.

Example:

"},{"location":"endpoints/items_endpoints/#info","title":"Info","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/info - Return basic info on STAC item's COG.

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/info.geojson - Return basic info on STAC item's COG as a GeoJSON feature

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/assets - Return the list of available assets

"},{"location":"endpoints/items_endpoints/#available-assets","title":"Available Assets","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/assets - Return a list of available assets

Example:

"},{"location":"endpoints/items_endpoints/#statistics","title":"Statistics","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/asset_statistics - [GET]

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/statistics - [GET]

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/statistics - [POST]

Example:

"},{"location":"endpoints/tms_endpoints/","title":"TileMatrixSet","text":"Method URL Output Description GET /tileMatrixSets JSON (TMS list) return the list of supported TileMatrixSet GET /tileMatrixSets/{TileMatrixSetId} JSON (TileMatrixSet) return the TileMatrixSet JSON document"},{"location":"endpoints/tms_endpoints/#list-tms","title":"List TMS","text":"

:endpoint:/tileMatrixSets - Get the list of supported TileMatrixSet

curl https://myendpoint/tileMatrixSets | jq\n>> {\n  \"tileMatrixSets\": [\n    {\n      \"id\": \"LINZAntarticaMapTilegrid\",\n      \"title\": \"LINZ Antarctic Map Tile Grid (Ross Sea Region)\",\n      \"links\": [\n        {\n          \"href\": \"https://myendpoint/tileMatrixSets/LINZAntarticaMapTilegrid\",\n          \"rel\": \"item\",\n          \"type\": \"application/json\"\n        }\n      ]\n    },\n    ...\n  ]\n}\n
"},{"location":"endpoints/tms_endpoints/#get-tms-info","title":"Get TMS info","text":"

:endpoint:/tileMatrixSets/{TileMatrixSetId} - Get the TileMatrixSet JSON document

curl http://127.0.0.1:8000/tileMatrixSets/WebMercatorQuad | jq\n>> {\n  \"type\": \"TileMatrixSetType\",\n  \"title\": \"Google Maps Compatible for the World\",\n  \"identifier\": \"WebMercatorQuad\",\n  \"supportedCRS\": \"http://www.opengis.net/def/crs/EPSG/0/3857\",\n  \"wellKnownScaleSet\": \"http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible\",\n  \"boundingBox\": {\n    \"type\": \"BoundingBoxType\",\n    \"crs\": \"http://www.opengis.net/def/crs/EPSG/0/3857\",\n    \"lowerCorner\": [\n      -20037508.3427892,\n      -20037508.3427892\n    ],\n    \"upperCorner\": [\n      20037508.3427892,\n      20037508.3427892\n    ]\n  },\n  \"tileMatrix\": [\n    {\n      \"type\": \"TileMatrixType\",\n      \"identifier\": \"0\",\n      \"scaleDenominator\": 559082264.028717,\n      \"topLeftCorner\": [\n        -20037508.3427892,\n        20037508.3427892\n      ],\n      \"tileWidth\": 256,\n      \"tileHeight\": 256,\n      \"matrixWidth\": 1,\n      \"matrixHeight\": 1\n    },\n    ...\n
"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"titiler-stacapi-mspc","text":"

Connect titiler to MS Planetary Computer STAC API

Documentation: developmentseed.org/titiler-stacapi-mspc/

Source Code: developmentseed/titiler-stacapi-mspc

"},{"location":"#installation","title":"Installation","text":"

Install from sources and run for development:

$ git clone https://github.com/developmentseed/titiler-stacapi-mspc.git\n$ cd titiler-stacapi-mspc\n$ python -m pip install -e .\n
"},{"location":"#launch","title":"Launch","text":"

By default the stac_api_url is planetarycomputer.microsoft.com/api/stac/v1, but you can override it by setting the environment variable TITILER_STACAPI_STAC_API_URL.

python -m pip install uvicorn\n\nuvicorn titiler.stacapi.main:app --port 8000\n
"},{"location":"#using-docker","title":"Using Docker","text":"
$ git clone https://github.com/developmentseed/titiler-stacapi-mspc.git\n$ cd titiler-stacapi-mspc\n$ docker-compose up --build api\n

It runs titiler.stacapi using Gunicorn web server.

"},{"location":"#how-it-works","title":"How it works","text":""},{"location":"#contribution-development","title":"Contribution & Development","text":"

See CONTRIBUTING.md

"},{"location":"#license","title":"License","text":"

See LICENSE

"},{"location":"#authors","title":"Authors","text":"

See contributors for a listing of individual contributors.

"},{"location":"#changes","title":"Changes","text":"

See CHANGELOG.md.

"},{"location":"contributing/","title":"Development - Contributing","text":"

Issues and pull requests are more than welcome: github.com/developmentseed/titiler-stacapi/issues

dev install

git clone https://github.com/developmentseed/titiler-stacapi.git\ncd titiler-stacapi\n\npython -m pip install pre-commit -e .[\"dev,test\"]\n

You can then run the tests with the following command:

python -m pytest --cov titiler.stacapi --cov-report term-missing\n

This repo is set to use pre-commit to run isort, flake8, pydocstring, black (\"uncompromising Python code formatter\") and mypy when committing new code.

$ pre-commit install\n
"},{"location":"technical-considerations/","title":"Technical Considerations","text":""},{"location":"technical-considerations/#optimizing-tile-requests-in-titiler-stacapi","title":"Optimizing Tile Requests in titiler-stacapi","text":"

To enhance the efficiency of tile requests in titiler-stacapi, it's essential to set appropriate zoom levels and bounding boxes and be mindful of the number of requests made to the STAC API. This guide will walk you through understanding and applying these settings to improve performance and avoid overloading the service with expansive queries.

"},{"location":"technical-considerations/#understanding-zoom-levels","title":"Understanding Zoom Levels","text":"

Zoom levels dictate the level of detail in the tiles requested. Specifying a range (min/max) can significantly optimize request times and resource usage.

"},{"location":"technical-considerations/#bounding-box-considerations","title":"Bounding Box Considerations","text":"

The bounding box limits the geographical area of interest, preventing unnecessarily broad tile generation. Define this based on your application's specific needs to reduce load times and server strain.

"},{"location":"technical-considerations/#mindful-usage-of-stac-api-requests","title":"Mindful Usage of STAC API Requests","text":"

Each tile request to titiler-stacapi results in one request to a STAC API /search. It's vital to use this feature respectfully towards STAC API providers by being aware of the request load. High volumes of tile requests translate to an equal number of STAC API requests, which could overwhelm the API endpoints.

For detailed examples and more on optimizing your usage of titiler-stacapi, refer to the project's primary documentation.

"},{"location":"endpoints/","title":"Endpoints","text":"

By default the main application (titiler.pgstac.main.app) provides three sets of endpoints:

"},{"location":"endpoints/collections_endpoints/","title":"Collections","text":""},{"location":"endpoints/collections_endpoints/#stac-collections-endpoints","title":"STAC Collections endpoints","text":"Method URL Output Description GET /collections/{collection_id}/tiles/{TileMatrixSetId}/{z}/{x}/{y}[@{scale}x][.{format}] image/bin Create a web map tile image for a collection and a tile index GET /collections/{collection_id}/{TileMatrixSetId}/tilejson.json JSON (TileJSON) Return a Mapbox TileJSON document GET /collections/{collection_id}/{TileMatrixSetId}/map HTML simple map viewer"},{"location":"endpoints/collections_endpoints/#tiles","title":"Tiles","text":"

:endpoint:/collections/{collection_id}/tiles/{TileMatrixSetId}/{z}/{x}/{y}[@{scale}x][.{format}]

Important

assets OR expression is required

Example:

"},{"location":"endpoints/collections_endpoints/#tilesjson","title":"TilesJSON","text":"

:endpoint:/collections/{collection_id}[/{TileMatrixSetId}]/tilejson.json

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/","title":"Items","text":""},{"location":"endpoints/items_endpoints/#stac-items-endpoints","title":"STAC Items endpoints","text":"

The Item endpoints are created using TiTiler's MultiBaseTilerFactory

Method URL Output Description GET /collections/{collection_id}/items/{item_id}/bounds JSON (Bounds) return dataset's bounds GET /collections/{collection_id}/items/{item_id}/assets JSON return the list of available assets GET /collections/{collection_id}/items/{item_id}/info JSON (Info) return assets basic info GET /collections/{collection_id}/items/{item_id}/info.geojson GeoJSON (InfoGeoJSON) return assets basic info as a GeoJSON feature GET /collections/{collection_id}/items/{item_id}/asset_statistics JSON (Statistics) return per asset statistics GET /collections/{collection_id}/items/{item_id}/statistics JSON (Statistics) return assets statistics (merged) POST /collections/{collection_id}/items/{item_id}/statistics GeoJSON (Statistics) return assets statistics for a GeoJSON (merged) GET /collections/{collection_id}/items/{item_id}/tiles[/{TileMatrixSetId}]/{z}/{x}/{y}[@{scale}x][.{format}] image/bin create a web map tile image from assets GET /collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/tilejson.json JSON (TileJSON) return a Mapbox TileJSON document GET /collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/WMTSCapabilities.xml XML return OGC WMTS Get Capabilities GET /collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/map HTML simple map viewer GET /collections/{collection_id}/items/{item_id}/point/{lon},{lat} JSON (Point) return pixel values from assets GET /collections/{collection_id}/items/{item_id}/preview[.{format}] image/bin create a preview image from assets GET /collections/{collection_id}/items/{item_id}/bbox/{minx},{miny},{maxx},{maxy}[/{width}x{height}].{format} image/bin create an image from part of assets POST /collections/{collection_id}/items/{item_id}/feature[/{width}x{height}][.{format}] image/bin create an image from a geojson feature intersecting assets"},{"location":"endpoints/items_endpoints/#tiles","title":"Tiles","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/tiles[/{TileMatrixSetId}]/{z}/{x}/{y}[@{scale}x][.{format}]

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/#preview","title":"Preview","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/preview[.{format}]

Important

Example:

"},{"location":"endpoints/items_endpoints/#bboxfeature","title":"BBOX/Feature","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/bbox/{minx},{miny},{maxx},{maxy}.{format} :endpoint:/collections/{collection_id}/items/{item_id}/bbox/{minx},{miny},{maxx},{maxy}/{width}x{height}.{format}

Important

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/feature[/{width}x{height}][].{format}] - [POST]

Important

Example:

"},{"location":"endpoints/items_endpoints/#point","title":"Point","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/point/{lon},{lat}

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/#tilesjson","title":"TilesJSON","text":"

:endpoint:/collections/{collection_id}/items/{item_id}[/{TileMatrixSetId}]/tilejson.json tileJSON document

Important

assets OR expression is required

Example:

"},{"location":"endpoints/items_endpoints/#bounds","title":"Bounds","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/bounds - Return the bounds of the STAC item.

Example:

"},{"location":"endpoints/items_endpoints/#info","title":"Info","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/info - Return basic info on STAC item's COG.

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/info.geojson - Return basic info on STAC item's COG as a GeoJSON feature

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/assets - Return the list of available assets

"},{"location":"endpoints/items_endpoints/#available-assets","title":"Available Assets","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/assets - Return a list of available assets

Example:

"},{"location":"endpoints/items_endpoints/#statistics","title":"Statistics","text":"

:endpoint:/collections/{collection_id}/items/{item_id}/asset_statistics - [GET]

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/statistics - [GET]

Example:

:endpoint:/collections/{collection_id}/items/{item_id}/statistics - [POST]

Example:

"},{"location":"endpoints/tms_endpoints/","title":"TileMatrixSet","text":"Method URL Output Description GET /tileMatrixSets JSON (TMS list) return the list of supported TileMatrixSet GET /tileMatrixSets/{TileMatrixSetId} JSON (TileMatrixSet) return the TileMatrixSet JSON document"},{"location":"endpoints/tms_endpoints/#list-tms","title":"List TMS","text":"

:endpoint:/tileMatrixSets - Get the list of supported TileMatrixSet

curl https://myendpoint/tileMatrixSets | jq\n>> {\n  \"tileMatrixSets\": [\n    {\n      \"id\": \"LINZAntarticaMapTilegrid\",\n      \"title\": \"LINZ Antarctic Map Tile Grid (Ross Sea Region)\",\n      \"links\": [\n        {\n          \"href\": \"https://myendpoint/tileMatrixSets/LINZAntarticaMapTilegrid\",\n          \"rel\": \"item\",\n          \"type\": \"application/json\"\n        }\n      ]\n    },\n    ...\n  ]\n}\n
"},{"location":"endpoints/tms_endpoints/#get-tms-info","title":"Get TMS info","text":"

:endpoint:/tileMatrixSets/{TileMatrixSetId} - Get the TileMatrixSet JSON document

curl http://127.0.0.1:8000/tileMatrixSets/WebMercatorQuad | jq\n>> {\n  \"type\": \"TileMatrixSetType\",\n  \"title\": \"Google Maps Compatible for the World\",\n  \"identifier\": \"WebMercatorQuad\",\n  \"supportedCRS\": \"http://www.opengis.net/def/crs/EPSG/0/3857\",\n  \"wellKnownScaleSet\": \"http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible\",\n  \"boundingBox\": {\n    \"type\": \"BoundingBoxType\",\n    \"crs\": \"http://www.opengis.net/def/crs/EPSG/0/3857\",\n    \"lowerCorner\": [\n      -20037508.3427892,\n      -20037508.3427892\n    ],\n    \"upperCorner\": [\n      20037508.3427892,\n      20037508.3427892\n    ]\n  },\n  \"tileMatrix\": [\n    {\n      \"type\": \"TileMatrixType\",\n      \"identifier\": \"0\",\n      \"scaleDenominator\": 559082264.028717,\n      \"topLeftCorner\": [\n        -20037508.3427892,\n        20037508.3427892\n      ],\n      \"tileWidth\": 256,\n      \"tileHeight\": 256,\n      \"matrixWidth\": 1,\n      \"matrixHeight\": 1\n    },\n    ...\n
"}]} \ No newline at end of file