Skip to content

Commit d82974c

Browse files
authored
FIX: silence warning from write_dataframe with GeoSeries.notna() (#435)
1 parent 33d32ec commit d82974c

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

CHANGES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# CHANGELOG
22

3+
## 0.9.1 (yyyy-mm-dd)
4+
5+
### Bug fixes
6+
7+
- Silence warning from `write_dataframe` with `GeoSeries.notna()` (#435).
8+
39
## 0.9.0 (2024-06-17)
410

511
### Improvements

pyogrio/geopandas.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,10 @@ def write_dataframe(
520520
# If there is data, infer layer geometry type + promote_to_multi
521521
if not df.empty:
522522
# None/Empty geometries sometimes report as Z incorrectly, so ignore them
523-
has_z_arr = geometry[geometry.notna() & (~geometry.is_empty)].has_z
523+
with warnings.catch_warnings():
524+
warnings.filterwarnings("ignore", r"GeoSeries\.notna", UserWarning)
525+
geometry_notna = geometry.notna()
526+
has_z_arr = geometry[geometry_notna & (~geometry.is_empty)].has_z
524527
has_z = has_z_arr.any()
525528
all_z = has_z_arr.all()
526529

pyogrio/tests/test_geopandas_io.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from datetime import datetime
33
from io import BytesIO
44
import locale
5+
import warnings
56

67
import numpy as np
78
import pytest
@@ -1062,6 +1063,21 @@ def test_write_empty_dataframe(tmp_path, ext, use_arrow):
10621063
assert_geodataframe_equal(df, expected)
10631064

10641065

1066+
def test_write_empty_geometry(tmp_path):
1067+
expected = gp.GeoDataFrame({"x": [0]}, geometry=from_wkt(["POINT EMPTY"]), crs=4326)
1068+
filename = tmp_path / "test.gpkg"
1069+
1070+
# Check that no warning is raised with GeoSeries.notna()
1071+
with warnings.catch_warnings():
1072+
warnings.simplefilter("error", UserWarning)
1073+
write_dataframe(expected, filename)
1074+
assert filename.exists()
1075+
1076+
# Xref GH-436: round-tripping possible with GPKG but not others
1077+
df = read_dataframe(filename)
1078+
assert_geodataframe_equal(df, expected)
1079+
1080+
10651081
@pytest.mark.parametrize("ext", [".geojsonl", ".geojsons"])
10661082
@pytest.mark.requires_arrow_write_api
10671083
def test_write_read_empty_dataframe_unsupported(tmp_path, ext, use_arrow):

0 commit comments

Comments
 (0)