From 035cf47893156aeccac6d5355e94508de254ec2d Mon Sep 17 00:00:00 2001 From: vincentsarago Date: Tue, 27 Aug 2024 16:47:58 +0200 Subject: [PATCH] update changelog and add tests --- CHANGES.md | 4 ++++ morecantile/models.py | 11 ++++------- tests/test_models.py | 13 +++++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index d785954..e81d327 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,8 @@ +## 5.4.1 (2024-08-27) + +* ensure `TileMatrixSet._geographic_crs` is a pyproj CRS object (author @AndrewAnnex, https://github.com/developmentseed/morecantile/pull/152) + ## 5.4.0 (2024-08-20) * adds --tms optional argument to the shapes and tiles cli tools (author @AndrewAnnex, https://github.com/developmentseed/morecantile/pull/151) diff --git a/morecantile/models.py b/morecantile/models.py index 36412f0..9659f22 100644 --- a/morecantile/models.py +++ b/morecantile/models.py @@ -1,7 +1,6 @@ """Pydantic modules for OGC TileMatrixSets (https://www.ogc.org/standards/tms)""" import math -import sys import warnings from functools import cached_property from typing import Any, Dict, Iterator, List, Literal, Optional, Sequence, Tuple, Union @@ -18,6 +17,7 @@ model_validator, ) from pyproj.exceptions import CRSError, ProjError +from typing_extensions import Annotated from morecantile.commons import BoundingBox, Coords, Tile from morecantile.errors import ( @@ -37,11 +37,6 @@ to_rasterio_crs, ) -if sys.version_info >= (3, 9): - from typing import Annotated # pylint: disable=no-name-in-module -else: - from typing_extensions import Annotated - NumType = Union[float, int] BoundsType = Tuple[NumType, NumType] LL_EPSILON = 1e-11 @@ -499,7 +494,9 @@ def __init__(self, **data): """Set private attributes.""" super().__init__(**data) - self._geographic_crs = pyproj.CRS.from_user_input(data.get("_geographic_crs", WGS84_CRS)) + self._geographic_crs = pyproj.CRS.from_user_input( + data.get("_geographic_crs", WGS84_CRS) + ) try: self._to_geographic = pyproj.Transformer.from_crs( diff --git a/tests/test_models.py b/tests/test_models.py index 28fc34b..95e4c33 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -162,6 +162,19 @@ def test_Custom(): assert round(wmMat.scaleDenominator, 6) == round(cusMat.scaleDenominator, 6) assert round(wmMat.pointOfOrigin[0], 6) == round(cusMat.pointOfOrigin[0], 6) + extent = (-20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892) + custom_tms = TileMatrixSet.custom( + extent, pyproj.CRS.from_epsg(3857), geographic_crs="epsg:4326" + ) + assert isinstance(custom_tms._geographic_crs, pyproj.CRS) + assert custom_tms._geographic_crs == pyproj.CRS.from_epsg(4326) + + extent = (-20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892) + custom_tms = TileMatrixSet.custom( + extent, pyproj.CRS.from_epsg(3857), geographic_crs=pyproj.CRS.from_epsg(4326) + ) + assert isinstance(custom_tms._geographic_crs, pyproj.CRS) + def test_custom_tms_bounds_epsg4326(): """Check bounds with epsg4326."""