Skip to content

Commit 82fbfe5

Browse files
authored
fix geometry detection (#573)
1 parent 4be96ff commit 82fbfe5

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

cf_xarray/geometry.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,10 @@ def encode_geometries(ds: xr.Dataset):
298298
geom_var_names = [
299299
name
300300
for name, var in ds._variables.items()
301-
if var.dtype == "O" and isinstance(var.data.flat[0], SHAPELY_TYPES)
301+
if var.dtype == "geometry"
302+
or (var.dtype == "O" and isinstance(var.data.flat[0], SHAPELY_TYPES))
302303
]
304+
303305
if not geom_var_names:
304306
return ds
305307

cf_xarray/tests/test_geometry.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,5 +507,7 @@ def test_encode_decode(geometry_ds, polygon_geometry):
507507
)
508508
multi_ds = xr.merge([polyds, geometry_ds[1]])
509509
for ds in (geometry_ds[1], polygon_geometry.to_dataset(), geom_dim_ds, multi_ds):
510-
roundtripped = decode_geometries(encode_geometries(ds))
510+
encoded = encode_geometries(ds)
511+
assert len(encoded.data_vars) > len(ds.data_vars)
512+
roundtripped = decode_geometries(encoded)
511513
xr.testing.assert_identical(ds, roundtripped)

0 commit comments

Comments
 (0)