From 1098c83f03d70dc96170ca0b635e36ed282ee811 Mon Sep 17 00:00:00 2001 From: Greg Lucas Date: Sun, 15 Mar 2026 10:28:14 -0600 Subject: [PATCH] FIX: Handle empty points in geometry projection --- lib/cartopy/crs.py | 2 ++ lib/cartopy/tests/test_crs.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lib/cartopy/crs.py b/lib/cartopy/crs.py index 8a6dd4ccf..500057ade 100644 --- a/lib/cartopy/crs.py +++ b/lib/cartopy/crs.py @@ -833,6 +833,8 @@ def project_geometry(self, geometry, src_crs=None): return getattr(self, method_name)(geometry, src_crs) def _project_point(self, point, src_crs): + if point.is_empty: + return point return sgeom.Point(*self.transform_point(point.x, point.y, src_crs)) def _project_line_string(self, geometry, src_crs): diff --git a/lib/cartopy/tests/test_crs.py b/lib/cartopy/tests/test_crs.py index cffe2087f..b94d580fb 100644 --- a/lib/cartopy/tests/test_crs.py +++ b/lib/cartopy/tests/test_crs.py @@ -314,6 +314,11 @@ def test_transform_points_empty(): assert_array_equal(result, np.array([], dtype=np.float64).reshape(0, 3)) +def test_project_geometry_empty_point(): + """Test with an empty shapely point.""" + assert ccrs.PlateCarree().project_geometry(sgeom.Point()).is_empty + + def test_transform_points_outside_domain(): """Test CRS.transform_points with out of domain arrays.""" # Length-1 arrays error out with a bad status code, while