Skip to content

Commit 33e7205

Browse files
authored
Merge pull request #651 from mraspaud/fix_freeze_epsg
Fix dynamic area freezing not preserving epsg code
2 parents b77d0b6 + d68e190 commit 33e7205

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

pyresample/geometry.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import math
2323
import warnings
2424
from collections import OrderedDict
25+
from contextlib import suppress
2526
from functools import partial, wraps
2627
from logging import getLogger
2728
from pathlib import Path
@@ -66,6 +67,7 @@
6667

6768
from pyproj import CRS
6869
from pyproj.enums import TransformDirection
70+
from pyproj.exceptions import CRSError
6971

7072
logger = getLogger(__name__)
7173

@@ -1284,6 +1286,8 @@ def freeze(self, lonslats=None, resolution=None, shape=None, proj_info=None,
12841286
area_extent = self.area_extent
12851287
if not area_extent or not width or not height:
12861288
projection, corners = self._compute_bound_centers(proj_dict, lonslats, antimeridian_mode=antimeridian_mode)
1289+
with suppress(CRSError):
1290+
projection = CRS(CRS(projection).to_epsg())
12871291
area_extent, width, height = self.compute_domain(corners, resolution, shape, projection)
12881292
return AreaDefinition(self.area_id, self.description, '',
12891293
projection, width, height,

pyresample/test/test_geometry/test_area.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,3 +1763,12 @@ def test_dynamic_area_can_use_bounding_box_attribute():
17631763
swath_def_to_freeze_on = SwathDefinition(None, None, attrs=dict(bounding_box=[[0, 20, 20, 0], [55, 55, 45, 45]]))
17641764
res_area = area_def.freeze(swath_def_to_freeze_on)
17651765
assert res_area.area_extent == (3533500, 2484500, 5108500, 3588500)
1766+
assert res_area.crs == CRS("epsg:3035")
1767+
1768+
1769+
def test_dynamic_area_preserves_epsg_code():
1770+
"""Test that area freezing preserves epsg code."""
1771+
area_def = DynamicAreaDefinition("test_area", "", "epsg:3035", resolution=500)
1772+
swath_def_to_freeze_on = SwathDefinition(None, None, attrs=dict(bounding_box=[[0, 20, 20, 0], [55, 55, 45, 45]]))
1773+
res_area = area_def.freeze(swath_def_to_freeze_on)
1774+
assert res_area.crs == CRS("epsg:3035")

0 commit comments

Comments
 (0)