From f52c443e58638dcdbbe4e5b7ce9702e6362278b7 Mon Sep 17 00:00:00 2001 From: "laurent.rothuizen" Date: Tue, 24 Oct 2023 17:23:02 +0200 Subject: [PATCH 1/2] Update models.py for vectortile (crs) --- ngr_spider/models.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ngr_spider/models.py b/ngr_spider/models.py index a2e71fc..2471ee5 100644 --- a/ngr_spider/models.py +++ b/ngr_spider/models.py @@ -80,12 +80,8 @@ class WmsLayer(Layer): @dataclasses.dataclass class OatTileSet(): - tileset_title: str + tileset_id: str tileset_crs: str - tileset_data_type: str - tileset_min_scale: str = "" - tileset_max_scale: str = "" - @dataclasses.dataclass class OatTiles(): @@ -96,6 +92,7 @@ class OatTiles(): @dataclasses.dataclass class OatLayer(Layer): styles: list[VectorTileStyle] + tiles: list[OatTiles] @dataclasses.dataclass From 81225c2a1fef16ee15025877915c0d95f1e36f20 Mon Sep 17 00:00:00 2001 From: "laurent.rothuizen" Date: Tue, 24 Oct 2023 17:24:39 +0200 Subject: [PATCH 2/2] Get tiles/tilesets with crs and tmsId --- ngr_spider/ogc_api_tiles.py | 62 ++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/ngr_spider/ogc_api_tiles.py b/ngr_spider/ogc_api_tiles.py index 6fdd0e5..f294f40 100644 --- a/ngr_spider/ogc_api_tiles.py +++ b/ngr_spider/ogc_api_tiles.py @@ -2,7 +2,7 @@ import logging import urllib.request -from .models import OatLayer, OatTiles, VectorTileStyle +from .models import OatLayer, OatTileSet, OatTiles, VectorTileStyle LOGGER = logging.getLogger(__name__) @@ -89,32 +89,18 @@ def __init__(self, url): def get_layers(self): tiles_title: str tiles_abstract: str -# tileset_titles: str = "" -# tileset_crs: str = "" -# tileset_min_scale: str = "" -# tileset_max_scale: str = "" -# tileset_data_type: str # process layers tiles_json = self.tiles.json tiles_title = tiles_json["title"] tiles_abstract = tiles_json["description"] -# tile_sets = tiles_json["tilesets"] -# for tile_set in tile_sets: -# t_links = tile_set["links"] -# for l in t_links: -# if l["rel"] == "self": -# with urllib.request.urlopen(l["href"]) as url: -# tile = json.load(url) -# tileset_title = tile["title"] -# tileset_crs = tile["crs"] -# tileset_data_type: tile["dataType"] layer = OatLayer( tiles_title, tiles_title, tiles_abstract, "", - self.get_styles() + self.get_styles(), + self.get_tiles() ) return [layer] @@ -156,21 +142,27 @@ def get_styles(self): else: styles.append(s) return styles - - - def get_tile_matrix_sets(self): - tile_matrix_sets = dict() - matrix_sets = self.tile_matrix_sets.json - for matrix_set in matrix_sets["tileMatrixSets"]: - matrix_set_id = matrix_set["id"] - tile_matrix_sets[matrix_set["id"]] = {} - matrix_set_url: str - for link in matrix_set["links"]: - se = link["rel"] - if se == "self": - with urllib.request.urlopen(link["href"]) as url: - matrix_set_meta = json.load(url) - for i in matrix_set_meta["tileMatrices"]: - tile_matrix_sets[matrix_set_id] = i["scaleDenominator"] - - return tile_matrix_sets + + def get_tiles(self): + tiles: list[OatTiles] = [] + tiles_json = self.tiles.json + tiles.append( + OatTiles( + title=tiles_json["title"], + abstract=tiles_json["description"], + tilesets=self.get_tilesets() + ) + ) + return tiles + + def get_tilesets(self): + tilesets: list[OatTileSet] = [] + tilesets_json = self.tiles.json["tilesets"] + for tileset in tilesets_json: + tilesets.append( + OatTileSet( + tileset_id = tileset["tileMatrixSetId"], + tileset_crs = tileset["crs"] + ) + ) + return tilesets