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