martinfleis: Thanks for the PR!

This is indeed the safest option, but also a bit unnecessary. As you correctly pointed out, there are some inplace changes which are perfectly fine. Spatial index is expensive to compute, so I'd try to minimise the need of its invalidation and recomputation. But `sort_values` might not be the only case causing the issue. 
koshy1123: @martinfleis Thanks for the comment! I updated the PR to check if the dataframe's index is identical before and after the update. The logic here is to only invalidate the spatial index if the dataframe's index has changed.
martinfleis: That is not ideal either. .sindex is based on integer location, not the index. So if you do reset_index() or set_index() inplace, index will be different but the order remains the same. Hence spatial index will be still valid. I would maybe try to specify which cases causes problem and then fix those specifically, instead of trying to catch them all here. 
martinfleis: It seems that this has been resolved in the meantime. Thanks for looking into that @koshy1123!
jorisvandenbossche: It might still be good to add the tests for this, though, so we ensure this keeps working correctly. 

(I suppose the actual fix might have happened by moving the sindex to the GeometryArray, and `sort_values` will then still mutate the array even if updating the geodataframe in place)
martinfleis: > It might still be good to add the tests for this, though, so we ensure this keeps working correctly.

In that case we should move them to `test_sindex.py` (and ensure they pass).
jorisvandenbossche: > In that case we should move them to `test_sindex.py` (and ensure they pass).

Yep, just did both :)
diff --git a/geopandas/geodataframe.py b/geopandas/geodataframe.py
index 54adb0ed..c82cba5f 100644
--- a/geopandas/geodataframe.py
+++ b/geopandas/geodataframe.py
@@ -633,7 +633,10 @@ class GeoDataFrame(GeoPandasBase, DataFrame):
                 "geometry": shape(feature["geometry"]) if feature["geometry"] else None
             }
             # load properties
-            row.update(feature["properties"])
+            properties = feature["properties"]
+            if properties is None:
+                properties = {}
+            row.update(properties)
             rows.append(row)
         return GeoDataFrame(rows, columns=columns, crs=crs)
 
@@ -1024,6 +1027,16 @@ individually so that features may have different properties
         GeoDataFrame.to_file : write GeoDataFrame to file
         """
 
+        # Accept engine keyword for compatibility with pandas.DataFrame.to_parquet
+        # The only engine currently supported by GeoPandas is pyarrow, so no
+        # other engine should be specified.
+        engine = kwargs.pop("engine", "auto")
+        if engine not in ("auto", "pyarrow"):
+            raise ValueError(
+                f"GeoPandas only supports using pyarrow as the engine for "
+                f"to_parquet: {engine!r} passed instead."
+            )
+
         from geopandas.io.arrow import _to_parquet
 
         _to_parquet(self, path, compression=compression, index=index, **kwargs)

Changing a geodataframe's row order inplace should invalidate its spatial index
This bit me recently, but when a geodataframe's order of rows changes "in place", the `sindex` should be invalidated and recomputed. Here's a reproducible example:
```
import geopandas
import pandas as pd
from shapely import wkt

# create an example gdf
df = pd.DataFrame(
    {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],
     'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],
     'Coordinates': ['POINT(-34.58 -58.66)', 'POINT(-15.78 -47.91)',
                     'POINT(-33.45 -70.66)', 'POINT(4.60 -74.08)',
                     'POINT(10.48 -66.86)']})

df['Coordinates'] = df['Coordinates'].apply(wkt.loads)
gdf = geopandas.GeoDataFrame(df, geometry='Coordinates')

# create spatial index without invalidating sindex
before_spatial_index = gdf.sindex
gdf.sort_values('City', inplace=True)
after_spatial_index = gdf.sindex

before_spatial_index == after_spatial_index # returns True (I expected False)

# create spatial index after invalidating sindex
gdf._invalidate_sindex()
after_spatial_index = gdf.sindex
before_spatial_index == after_spatial_index  # returns False (what I initially expected)
```
diff --git a/geopandas/io/tests/test_arrow.py b/geopandas/io/tests/test_arrow.py
index 1e701581..4c8d82c5 100644
--- a/geopandas/io/tests/test_arrow.py
+++ b/geopandas/io/tests/test_arrow.py
@@ -7,7 +7,7 @@ import pytest
 from pandas import DataFrame, read_parquet as pd_read_parquet
 from pandas.testing import assert_frame_equal
 import numpy as np
-from shapely.geometry import box
+from shapely.geometry import box, Point
 
 import geopandas
 from geopandas import GeoDataFrame, read_file, read_parquet, read_feather
@@ -23,6 +23,7 @@ from geopandas.io.arrow import (
     METADATA_VERSION,
 )
 from geopandas.testing import assert_geodataframe_equal, assert_geoseries_equal
+from geopandas.tests.util import mock
 
 
 # Skip all tests in this module if pyarrow is not available
@@ -172,6 +173,28 @@ def test_validate_metadata_invalid(metadata, error):
         _validate_metadata(metadata)
 
 
+def test_to_parquet_fails_on_invalid_engine(tmpdir):
+    df = GeoDataFrame(data=[[1, 2, 3]], columns=["a", "b", "a"], geometry=[Point(1, 1)])
+
+    with pytest.raises(
+        ValueError,
+        match=(
+            "GeoPandas only supports using pyarrow as the engine for "
+            "to_parquet: 'fastparquet' passed instead."
+        ),
+    ):
+        df.to_parquet(tmpdir / "test.parquet", engine="fastparquet")
+
+
+@mock.patch("geopandas.io.arrow._to_parquet")
+def test_to_parquet_does_not_pass_engine_along(mock_to_parquet):
+    df = GeoDataFrame(data=[[1, 2, 3]], columns=["a", "b", "a"], geometry=[Point(1, 1)])
+    df.to_parquet("", engine="pyarrow")
+    # assert that engine keyword is not passed through to _to_parquet (and thus
+    # parquet.write_table)
+    mock_to_parquet.assert_called_with(df, "", compression="snappy", index=None)
+
+
 # TEMPORARY: used to determine if pyarrow fails for roundtripping pandas data
 # without geometries
 def test_pandas_parquet_roundtrip1(tmpdir):
diff --git a/geopandas/tests/test_geodataframe.py b/geopandas/tests/test_geodataframe.py
index 94672e4e..59f93592 100644
--- a/geopandas/tests/test_geodataframe.py
+++ b/geopandas/tests/test_geodataframe.py
@@ -619,7 +619,7 @@ class TestDataFrame:
         p3 = Point(3, 3)
         f3 = {
             "type": "Feature",
-            "properties": {"a": 2},
+            "properties": None,
             "geometry": p3.__geo_interface__,
         }
 
@@ -627,10 +627,103 @@ class TestDataFrame:
 
         result = df[["a", "b"]]
         expected = pd.DataFrame.from_dict(
-            [{"a": 0, "b": np.nan}, {"a": np.nan, "b": 1}, {"a": 2, "b": np.nan}]
+            [{"a": 0, "b": np.nan}, {"a": np.nan, "b": 1}, {"a": np.nan, "b": np.nan}]
         )
         assert_frame_equal(expected, result)
 
+    def test_from_features_empty_properties(self):
+        geojson_properties_object = """{
+          "type": "FeatureCollection",
+          "features": [
+            {
+              "type": "Feature",
+              "properties": {},
+              "geometry": {
+                "type": "Polygon",
+                "coordinates": [
+                  [
+                    [
+                      11.3456529378891,
+                      46.49461446367692
+                    ],
+                    [
+                      11.345674395561216,
+                      46.494097442978195
+                    ],
+                    [
+                      11.346918940544128,
+                      46.49385370294394
+                    ],
+                    [
+                      11.347616314888,
+                      46.4938352377453
+                    ],
+                    [
+                      11.347514390945435,
+                      46.49466985846028
+                    ],
+                    [
+                      11.3456529378891,
+                      46.49461446367692
+                    ]
+                  ]
+                ]
+              }
+            }
+          ]
+        }"""
+
+        geojson_properties_null = """{
+          "type": "FeatureCollection",
+          "features": [
+            {
+              "type": "Feature",
+              "properties": null,
+              "geometry": {
+                "type": "Polygon",
+                "coordinates": [
+                  [
+                    [
+                      11.3456529378891,
+                      46.49461446367692
+                    ],
+                    [
+                      11.345674395561216,
+                      46.494097442978195
+                    ],
+                    [
+                      11.346918940544128,
+                      46.49385370294394
+                    ],
+                    [
+                      11.347616314888,
+                      46.4938352377453
+                    ],
+                    [
+                      11.347514390945435,
+                      46.49466985846028
+                    ],
+                    [
+                      11.3456529378891,
+                      46.49461446367692
+                    ]
+                  ]
+                ]
+              }
+            }
+          ]
+        }"""
+
+        # geoJSON with empty properties
+        gjson_po = json.loads(geojson_properties_object)
+        gdf1 = GeoDataFrame.from_features(gjson_po)
+
+        # geoJSON with null properties
+        gjson_null = json.loads(geojson_properties_null)
+        gdf2 = GeoDataFrame.from_features(gjson_null)
+
+        assert_frame_equal(gdf1, gdf2)
+
     def test_from_features_geom_interface_feature(self):
         class Placemark(object):
             def __init__(self, geom, val):
diff --git a/geopandas/tests/test_op_output_types.py b/geopandas/tests/test_op_output_types.py
index 5e9b5d96..dd25ff91 100644
--- a/geopandas/tests/test_op_output_types.py
+++ b/geopandas/tests/test_op_output_types.py
@@ -88,8 +88,8 @@ def test_getitem(df):
     assert_object(df[["value1", "value2"]], pd.DataFrame)
     assert_object(df[[geo_name, "geometry2"]], GeoDataFrame, geo_name)
     assert_object(df[[geo_name]], GeoDataFrame, geo_name)
-    assert_object(df[["geometry2", "value1"]], GeoDataFrame, None, None)
-    assert_object(df[["geometry2"]], GeoDataFrame, None, None)
+    assert_object(df[["geometry2", "value1"]], GeoDataFrame, None)
+    assert_object(df[["geometry2"]], GeoDataFrame, None)
     assert_object(df[["value1"]], pd.DataFrame)
     # Series
     assert_object(df[geo_name], GeoSeries, geo_name)
@@ -102,12 +102,8 @@ def test_loc(df):
     assert_object(df.loc[:, ["value1", "value2"]], pd.DataFrame)
     assert_object(df.loc[:, [geo_name, "geometry2"]], GeoDataFrame, geo_name)
     assert_object(df.loc[:, [geo_name]], GeoDataFrame, geo_name)
-    # TODO: should this set the geometry column to geometry2 or return a DataFrame?
     assert_object(df.loc[:, ["geometry2", "value1"]], GeoDataFrame, None)
     assert_object(df.loc[:, ["geometry2"]], GeoDataFrame, None)
-    # Ideally this would mirror __getitem__ and below would be true
-    # assert_object(df.loc[:, ["geometry2", "value1"]], pd.DataFrame)
-    # assert_object(df.loc[:, ["geometry2"]], pd.DataFrame)
     assert_object(df.loc[:, ["value1"]], pd.DataFrame)
     # Series
     assert_object(df.loc[:, geo_name], GeoSeries, geo_name)
@@ -120,12 +116,8 @@ def test_iloc(df):
     assert_object(df.iloc[:, 0:2], pd.DataFrame)
     assert_object(df.iloc[:, 2:4], GeoDataFrame, geo_name)
     assert_object(df.iloc[:, [2]], GeoDataFrame, geo_name)
-    # TODO: should this set the geometry column to geometry2 or return a DataFrame?
     assert_object(df.iloc[:, [3, 0]], GeoDataFrame, None)
     assert_object(df.iloc[:, [3]], GeoDataFrame, None)
-    # Ideally this would mirror __getitem__ and below would be true
-    # assert_object(df.iloc[:, [3, 0]], pd.DataFrame)
-    # assert_object(df.iloc[:, [3]], pd.DataFrame)
     assert_object(df.iloc[:, [0]], pd.DataFrame)
     # Series
     assert_object(df.iloc[:, 2], GeoSeries, geo_name)
@@ -157,12 +149,8 @@ def test_reindex(df):
     assert_object(df.reindex(columns=[geo_name, "geometry2"]), GeoDataFrame, geo_name)
     assert_object(df.reindex(columns=[geo_name]), GeoDataFrame, geo_name)
     assert_object(df.reindex(columns=["new_col", geo_name]), GeoDataFrame, geo_name)
-    # TODO: should this set the geometry column to geometry2 or return a DataFrame?
     assert_object(df.reindex(columns=["geometry2", "value1"]), GeoDataFrame, None)
     assert_object(df.reindex(columns=["geometry2"]), GeoDataFrame, None)
-    # Ideally this would mirror __getitem__ and below would be true
-    # assert_object(df.reindex(columns=["geometry2", "value1"]), pd.DataFrame)
-    # assert_object(df.reindex(columns=["geometry2"]), pd.DataFrame)
     assert_object(df.reindex(columns=["value1"]), pd.DataFrame)
 
     # reindexing the rows always preserves the GeoDataFrame
@@ -181,12 +169,8 @@ def test_drop(df):
     assert_object(df.drop(columns=["value1", "value2"]), GeoDataFrame, geo_name)
     cols = ["value1", "value2", "geometry2"]
     assert_object(df.drop(columns=cols), GeoDataFrame, geo_name)
-    # TODO: should this set the geometry column to geometry2 or return a DataFrame?
     assert_object(df.drop(columns=[geo_name, "value2"]), GeoDataFrame, None)
     assert_object(df.drop(columns=["value1", "value2", geo_name]), GeoDataFrame, None)
-    # Ideally this would mirror __getitem__ and below would be true
-    # assert_object(df.drop(columns=[geo_name, "value2"]), pd.DataFrame)
-    # assert_object(df.drop(columns=["value1", "value2", geo_name]), pd.DataFrame)
     assert_object(df.drop(columns=["geometry2", "value2", geo_name]), pd.DataFrame)
 
 
@@ -226,7 +210,6 @@ def test_apply(df):
     assert_object(df[["geometry2", "value1"]].apply(identity, axis=1), pd.DataFrame)
 
     assert_object(df[["value1"]].apply(identity, axis=1), pd.DataFrame)
-    # if compat # https://github.com/pandas-dev/pandas/pull/30091
 
 
 def test_apply_axis1_secondary_geo_cols(df):
diff --git a/geopandas/tests/test_overlay.py b/geopandas/tests/test_overlay.py
index 14ea914a..166e9da5 100644
--- a/geopandas/tests/test_overlay.py
+++ b/geopandas/tests/test_overlay.py
@@ -14,6 +14,7 @@ from geopandas import _compat
 from geopandas.testing import assert_geodataframe_equal, assert_geoseries_equal
 import pytest
 
+
 DATA = os.path.join(os.path.abspath(os.path.dirname(__file__)), "data", "overlay")
 
 
@@ -795,3 +796,79 @@ def test_no_intersection():
     expected = GeoDataFrame(columns=["foo", "bar", "geometry"])
     result = overlay(gdf1, gdf2, how="intersection")
     assert_geodataframe_equal(result, expected, check_index_type=False)
+
+
+class TestOverlayWikiExample:
+    def setup_method(self):
+        self.layer_a = GeoDataFrame(geometry=[box(0, 2, 6, 6)])
+
+        self.layer_b = GeoDataFrame(geometry=[box(4, 0, 10, 4)])
+
+        self.intersection = GeoDataFrame(geometry=[box(4, 2, 6, 4)])
+
+        self.union = GeoDataFrame(
+            geometry=[
+                box(4, 2, 6, 4),
+                Polygon([(4, 2), (0, 2), (0, 6), (6, 6), (6, 4), (4, 4), (4, 2)]),
+                Polygon([(10, 0), (4, 0), (4, 2), (6, 2), (6, 4), (10, 4), (10, 0)]),
+            ]
+        )
+
+        self.a_difference_b = GeoDataFrame(
+            geometry=[Polygon([(4, 2), (0, 2), (0, 6), (6, 6), (6, 4), (4, 4), (4, 2)])]
+        )
+
+        self.b_difference_a = GeoDataFrame(
+            geometry=[
+                Polygon([(10, 0), (4, 0), (4, 2), (6, 2), (6, 4), (10, 4), (10, 0)])
+            ]
+        )
+
+        self.symmetric_difference = GeoDataFrame(
+            geometry=[
+                Polygon([(4, 2), (0, 2), (0, 6), (6, 6), (6, 4), (4, 4), (4, 2)]),
+                Polygon([(10, 0), (4, 0), (4, 2), (6, 2), (6, 4), (10, 4), (10, 0)]),
+            ]
+        )
+
+        self.a_identity_b = GeoDataFrame(
+            geometry=[
+                box(4, 2, 6, 4),
+                Polygon([(4, 2), (0, 2), (0, 6), (6, 6), (6, 4), (4, 4), (4, 2)]),
+            ]
+        )
+
+        self.b_identity_a = GeoDataFrame(
+            geometry=[
+                box(4, 2, 6, 4),
+                Polygon([(10, 0), (4, 0), (4, 2), (6, 2), (6, 4), (10, 4), (10, 0)]),
+            ]
+        )
+
+    def test_intersection(self):
+        df_result = overlay(self.layer_a, self.layer_b, how="intersection")
+        assert df_result.geom_equals(self.intersection).bool()
+
+    def test_union(self):
+        df_result = overlay(self.layer_a, self.layer_b, how="union")
+        assert_geodataframe_equal(df_result, self.union)
+
+    def test_a_difference_b(self):
+        df_result = overlay(self.layer_a, self.layer_b, how="difference")
+        assert_geodataframe_equal(df_result, self.a_difference_b)
+
+    def test_b_difference_a(self):
+        df_result = overlay(self.layer_b, self.layer_a, how="difference")
+        assert_geodataframe_equal(df_result, self.b_difference_a)
+
+    def test_symmetric_difference(self):
+        df_result = overlay(self.layer_a, self.layer_b, how="symmetric_difference")
+        assert_geodataframe_equal(df_result, self.symmetric_difference)
+
+    def test_a_identity_b(self):
+        df_result = overlay(self.layer_a, self.layer_b, how="identity")
+        assert_geodataframe_equal(df_result, self.a_identity_b)
+
+    def test_b_identity_a(self):
+        df_result = overlay(self.layer_b, self.layer_a, how="identity")
+        assert_geodataframe_equal(df_result, self.b_identity_a)
diff --git a/geopandas/tests/test_sindex.py b/geopandas/tests/test_sindex.py
index 0b53a8d4..c36c77d1 100644
--- a/geopandas/tests/test_sindex.py
+++ b/geopandas/tests/test_sindex.py
@@ -174,6 +174,31 @@ class TestFrameSindex:
         subset2 = self.df[["A", "geom"]]
         assert subset2.sindex is original_index
 
+    def test_rebuild_on_update_inplace(self):
+        gdf = self.df.copy()
+        old_sindex = gdf.sindex
+        # sorting in place
+        gdf.sort_values("A", ascending=False, inplace=True)
+        # spatial index should be invalidated
+        assert not gdf.has_sindex
+        new_sindex = gdf.sindex
+        # and should be different
+        assert new_sindex is not old_sindex
+
+        # sorting should still have happened though
+        assert gdf.index.tolist() == [4, 3, 2, 1, 0]
+
+    @pytest.mark.skipif(not compat.PANDAS_GE_11, reason="fails on pd<1.1.0")
+    def test_update_inplace_no_rebuild(self):
+        gdf = self.df.copy()
+        old_sindex = gdf.sindex
+        gdf.rename(columns={"A": "AA"}, inplace=True)
+        # a rename shouldn't invalidate the index
+        assert gdf.has_sindex
+        # and the "new" should be the same
+        new_sindex = gdf.sindex
+        assert old_sindex is new_sindex
+
 
 # Skip to accommodate Shapely geometries being unhashable
 @pytest.mark.skip

pip install -e .
parse_log_pytest
requirements.txt
pytest descartes matplotlib rtree
apt-get update apt-get install -y gcc
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==24.2.0
certifi @ file:///croot/certifi_1671487769961/work/certifi
click==8.1.8
click-plugins==1.1.1
cligj==0.7.2
cycler==0.11.0
descartes==1.1.0
exceptiongroup==1.2.2
fiona==1.9.6
fonttools==4.38.0
-e git+https://github.com/geopandas/geopandas.git@4a972f059c936ca71c38d3ae5c6c6a744b7bf152#egg=geopandas
importlib-metadata==6.7.0
iniconfig==2.0.0
kiwisolver==1.4.5
matplotlib==3.5.3
numpy==1.21.6
packaging==24.0
pandas==1.3.5
Pillow==9.5.0
pluggy==1.2.0
pyparsing==3.1.4
pyproj==3.2.1
pytest==7.4.4
python-dateutil==2.9.0.post0
pytz==2025.2
Rtree==1.0.1
shapely==2.0.7
six==1.17.0
tomli==2.0.1
typing_extensions==4.7.1
zipp==3.15.0

name: geopandas
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==24.2.0
      - click==8.1.8
      - click-plugins==1.1.1
      - cligj==0.7.2
      - cycler==0.11.0
      - descartes==1.1.0
      - exceptiongroup==1.2.2
      - fiona==1.9.6
      - fonttools==4.38.0
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - kiwisolver==1.4.5
      - matplotlib==3.5.3
      - numpy==1.21.6
      - packaging==24.0
      - pandas==1.3.5
      - pillow==9.5.0
      - pluggy==1.2.0
      - pyparsing==3.1.4
      - pyproj==3.2.1
      - pytest==7.4.4
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - rtree==1.0.1
      - shapely==2.0.7
      - six==1.17.0
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - zipp==3.15.0
prefix: /opt/conda/envs/geopandas

geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features_unaligned_properties geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features_empty_properties
geopandas/tests/test_overlay.py::test_overlay_nybb[union] geopandas/tests/test_overlay.py::test_overlay_nybb[intersection] geopandas/tests/test_overlay.py::test_overlay_nybb[difference] geopandas/tests/test_overlay.py::test_overlay_nybb[symmetric_difference] geopandas/tests/test_overlay.py::test_overlay_nybb[identity] geopandas/tests/test_overlay.py::test_overlay_overlap[union] geopandas/tests/test_overlay.py::test_overlay_overlap[intersection] geopandas/tests/test_overlay.py::test_overlay_overlap[difference] geopandas/tests/test_overlay.py::test_overlay_overlap[symmetric_difference] geopandas/tests/test_overlay.py::test_overlay_strict[union-True-polys] geopandas/tests/test_overlay.py::test_overlay_strict[union-True-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[union-True-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[union-True-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[union-True-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[union-False-polys] geopandas/tests/test_overlay.py::test_overlay_strict[union-False-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[union-False-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[union-False-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[union-False-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-True-polys] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-True-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-True-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-False-polys] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-False-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-False-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-False-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-False-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[difference-True-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[difference-True-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[difference-True-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[difference-False-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[difference-False-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[difference-False-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-True-polys] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-True-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-True-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-True-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-False-polys] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-False-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-False-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-False-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-False-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[identity-True-polys] geopandas/tests/test_overlay.py::test_overlay_strict[identity-True-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[identity-True-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[identity-True-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[identity-True-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[identity-False-polys] geopandas/tests/test_overlay.py::test_overlay_strict[identity-False-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[identity-False-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[identity-False-line_poly] geopandas/tests/test_overlay.py::test_overlay_strict[identity-False-point_poly]
geopandas/tests/test_geodataframe.py::TestDataFrame::test_df_init geopandas/tests/test_geodataframe.py::TestDataFrame::test_different_geo_colname geopandas/tests/test_geodataframe.py::TestDataFrame::test_geo_getitem geopandas/tests/test_geodataframe.py::TestDataFrame::test_getitem_no_geometry geopandas/tests/test_geodataframe.py::TestDataFrame::test_geo_setitem geopandas/tests/test_geodataframe.py::TestDataFrame::test_geometry_property geopandas/tests/test_geodataframe.py::TestDataFrame::test_geometry_property_errors geopandas/tests/test_geodataframe.py::TestDataFrame::test_rename_geometry geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_col geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_inplace geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_series geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_empty geopandas/tests/test_geodataframe.py::TestDataFrame::test_set_geometry_np_int geopandas/tests/test_geodataframe.py::TestDataFrame::test_get_geometry_invalid geopandas/tests/test_geodataframe.py::TestDataFrame::test_align geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_geom_col geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_only_geom_column geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_na geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_bad_na geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_dropna geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_keepna geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_drop_id geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_drop_id_only_geom_column geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_json_with_duplicate_columns geopandas/tests/test_geodataframe.py::TestDataFrame::test_copy geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_file_crs geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_file_with_duplicate_columns geopandas/tests/test_geodataframe.py::TestDataFrame::test_bool_index geopandas/tests/test_geodataframe.py::TestDataFrame::test_coord_slice_points geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_dict geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_features_geom_interface_feature geopandas/tests/test_geodataframe.py::TestDataFrame::test_from_feature_collection geopandas/tests/test_geodataframe.py::TestDataFrame::test_dataframe_to_geodataframe geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_geointerface geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_iterfeatures geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_geojson_no_bbox geopandas/tests/test_geodataframe.py::TestDataFrame::test_geodataframe_geojson_bbox geopandas/tests/test_geodataframe.py::TestDataFrame::test_pickle geopandas/tests/test_geodataframe.py::TestDataFrame::test_pickle_method geopandas/tests/test_geodataframe.py::TestDataFrame::test_estimate_utm_crs geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_wkb geopandas/tests/test_geodataframe.py::TestDataFrame::test_to_wkt geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[intersects-left] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[intersects-inner] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[intersects-right] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[within-left] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[within-inner] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[within-right] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[contains-left] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[contains-inner] geopandas/tests/test_geodataframe.py::TestDataFrame::test_sjoin[contains-right] geopandas/tests/test_geodataframe.py::TestDataFrame::test_clip geopandas/tests/test_geodataframe.py::TestDataFrame::test_overlay[union] geopandas/tests/test_geodataframe.py::TestDataFrame::test_overlay[intersection] geopandas/tests/test_geodataframe.py::TestDataFrame::test_overlay[difference] geopandas/tests/test_geodataframe.py::TestDataFrame::test_overlay[symmetric_difference] geopandas/tests/test_geodataframe.py::TestDataFrame::test_overlay[identity] geopandas/tests/test_geodataframe.py::TestConstructor::test_dict geopandas/tests/test_geodataframe.py::TestConstructor::test_dict_of_series geopandas/tests/test_geodataframe.py::TestConstructor::test_dict_specified_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_array geopandas/tests/test_geodataframe.py::TestConstructor::test_from_frame geopandas/tests/test_geodataframe.py::TestConstructor::test_from_frame_specified_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_only_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_no_geometries geopandas/tests/test_geodataframe.py::TestConstructor::test_empty geopandas/tests/test_geodataframe.py::TestConstructor::test_column_ordering geopandas/tests/test_geodataframe.py::TestConstructor::test_overwrite_geometry geopandas/tests/test_geodataframe.py::TestConstructor::test_repeat_geo_col geopandas/tests/test_geodataframe.py::test_geodataframe_crs geopandas/tests/test_op_output_types.py::test_getitem[geometry] geopandas/tests/test_op_output_types.py::test_getitem[point] geopandas/tests/test_op_output_types.py::test_loc[geometry] geopandas/tests/test_op_output_types.py::test_loc[point] geopandas/tests/test_op_output_types.py::test_iloc[geometry] geopandas/tests/test_op_output_types.py::test_iloc[point] geopandas/tests/test_op_output_types.py::test_squeeze[geometry] geopandas/tests/test_op_output_types.py::test_squeeze[point] geopandas/tests/test_op_output_types.py::test_to_frame[geometry] geopandas/tests/test_op_output_types.py::test_to_frame[point] geopandas/tests/test_op_output_types.py::test_reindex[geometry] geopandas/tests/test_op_output_types.py::test_reindex[point] geopandas/tests/test_op_output_types.py::test_drop[geometry] geopandas/tests/test_op_output_types.py::test_drop[point] geopandas/tests/test_op_output_types.py::test_apply[geometry] geopandas/tests/test_op_output_types.py::test_apply[point] geopandas/tests/test_op_output_types.py::test_apply_axis1_secondary_geo_cols[geometry] geopandas/tests/test_op_output_types.py::test_apply_axis1_secondary_geo_cols[point] geopandas/tests/test_op_output_types.py::test_expanddim_in_apply geopandas/tests/test_op_output_types.py::test_expandim_in_groupby_aggregate_multiple_funcs geopandas/tests/test_op_output_types.py::test_expanddim_in_unstack geopandas/tests/test_overlay.py::test_overlay[default-index-union] geopandas/tests/test_overlay.py::test_overlay[default-index-intersection] geopandas/tests/test_overlay.py::test_overlay[default-index-difference] geopandas/tests/test_overlay.py::test_overlay[default-index-symmetric_difference] geopandas/tests/test_overlay.py::test_overlay[default-index-identity] geopandas/tests/test_overlay.py::test_overlay[int-index-union] geopandas/tests/test_overlay.py::test_overlay[int-index-intersection] geopandas/tests/test_overlay.py::test_overlay[int-index-difference] geopandas/tests/test_overlay.py::test_overlay[int-index-symmetric_difference] geopandas/tests/test_overlay.py::test_overlay[int-index-identity] geopandas/tests/test_overlay.py::test_overlay[string-index-union] geopandas/tests/test_overlay.py::test_overlay[string-index-intersection] geopandas/tests/test_overlay.py::test_overlay[string-index-difference] geopandas/tests/test_overlay.py::test_overlay[string-index-symmetric_difference] geopandas/tests/test_overlay.py::test_overlay[string-index-identity] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[union-False] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[union-True] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[intersection-False] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[intersection-True] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[difference-False] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[difference-True] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[symmetric_difference-False] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[symmetric_difference-True] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[identity-False] geopandas/tests/test_overlay.py::test_geometry_not_named_geometry[identity-True] geopandas/tests/test_overlay.py::test_bad_how geopandas/tests/test_overlay.py::test_duplicate_column_name[union] geopandas/tests/test_overlay.py::test_duplicate_column_name[intersection] geopandas/tests/test_overlay.py::test_duplicate_column_name[symmetric_difference] geopandas/tests/test_overlay.py::test_duplicate_column_name[identity] geopandas/tests/test_overlay.py::test_geoseries_warning geopandas/tests/test_overlay.py::test_preserve_crs[union] geopandas/tests/test_overlay.py::test_preserve_crs[intersection] geopandas/tests/test_overlay.py::test_preserve_crs[difference] geopandas/tests/test_overlay.py::test_preserve_crs[symmetric_difference] geopandas/tests/test_overlay.py::test_preserve_crs[identity] geopandas/tests/test_overlay.py::test_crs_mismatch[union] geopandas/tests/test_overlay.py::test_crs_mismatch[intersection] geopandas/tests/test_overlay.py::test_crs_mismatch[difference] geopandas/tests/test_overlay.py::test_crs_mismatch[symmetric_difference] geopandas/tests/test_overlay.py::test_crs_mismatch[identity] geopandas/tests/test_overlay.py::test_empty_intersection geopandas/tests/test_overlay.py::test_correct_index geopandas/tests/test_overlay.py::test_warn_on_keep_geom_type geopandas/tests/test_overlay.py::test_overlay_strict[intersection-True-poly_line] geopandas/tests/test_overlay.py::test_overlay_strict[intersection-True-poly_point] geopandas/tests/test_overlay.py::test_overlay_strict[difference-True-polys] geopandas/tests/test_overlay.py::test_overlay_strict[difference-True-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[difference-False-polys] geopandas/tests/test_overlay.py::test_overlay_strict[difference-False-point_poly] geopandas/tests/test_overlay.py::test_overlay_strict[symmetric_difference-True-point_poly] geopandas/tests/test_overlay.py::test_mixed_geom_error geopandas/tests/test_overlay.py::test_keep_geom_type_error geopandas/tests/test_overlay.py::test_keep_geom_type_geometry_collection geopandas/tests/test_overlay.py::test_keep_geom_type_geometry_collection2 geopandas/tests/test_overlay.py::test_keep_geom_type_geomcoll_different_types geopandas/tests/test_overlay.py::test_keep_geom_type_geometry_collection_difference geopandas/tests/test_overlay.py::test_overlap_make_valid[True] geopandas/tests/test_overlay.py::test_overlap_make_valid[False] geopandas/tests/test_overlay.py::test_empty_overlay_return_non_duplicated_columns geopandas/tests/test_overlay.py::test_non_overlapping[union] geopandas/tests/test_overlay.py::test_non_overlapping[intersection] geopandas/tests/test_overlay.py::test_non_overlapping[difference] geopandas/tests/test_overlay.py::test_non_overlapping[symmetric_difference] geopandas/tests/test_overlay.py::test_non_overlapping[identity] geopandas/tests/test_overlay.py::test_no_intersection geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_intersection geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_union geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_a_difference_b geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_b_difference_a geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_symmetric_difference geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_a_identity_b geopandas/tests/test_overlay.py::TestOverlayWikiExample::test_b_identity_a geopandas/tests/test_sindex.py::TestSeriesSindex::test_has_sindex geopandas/tests/test_sindex.py::TestSeriesSindex::test_empty_geoseries geopandas/tests/test_sindex.py::TestSeriesSindex::test_point geopandas/tests/test_sindex.py::TestSeriesSindex::test_empty_point geopandas/tests/test_sindex.py::TestSeriesSindex::test_polygons geopandas/tests/test_sindex.py::TestSeriesSindex::test_polygons_append geopandas/tests/test_sindex.py::TestSeriesSindex::test_lazy_build geopandas/tests/test_sindex.py::TestSeriesSindex::test_rebuild_on_item_change geopandas/tests/test_sindex.py::TestSeriesSindex::test_rebuild_on_slice geopandas/tests/test_sindex.py::TestFrameSindex::test_sindex geopandas/tests/test_sindex.py::TestFrameSindex::test_lazy_build geopandas/tests/test_sindex.py::TestFrameSindex::test_sindex_rebuild_on_set_geometry geopandas/tests/test_sindex.py::TestFrameSindex::test_rebuild_on_row_slice geopandas/tests/test_sindex.py::TestFrameSindex::test_rebuild_on_single_col_selection geopandas/tests/test_sindex.py::TestFrameSindex::test_rebuild_on_multiple_col_selection geopandas/tests/test_sindex.py::TestFrameSindex::test_rebuild_on_update_inplace geopandas/tests/test_sindex.py::TestFrameSindex::test_update_inplace_no_rebuild geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_bounds_tuple[test_geom0-expected0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_bounds_tuple[test_geom1-expected1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_bounds_tuple[test_geom2-expected2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_bounds_tuple[test_geom3-expected3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_invalid_bounds_tuple[test_geom0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_invalid_bounds_tuple[-0.5] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_invalid_bounds_tuple[None] geopandas/tests/test_sindex.py::TestPygeosInterface::test_intersection_invalid_bounds_tuple[test_geom3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[None-test_geom0-expected0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[None-test_geom1-expected1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[None-test_geom2-expected2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[None-test_geom3-expected3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[intersects-test_geom4-expected4] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[intersects-test_geom5-expected5] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[intersects-test_geom6-expected6] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[intersects-test_geom7-expected7] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[within-test_geom8-expected8] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[within-test_geom9-expected9] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[within-test_geom10-expected10] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[within-test_geom11-expected11] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains-test_geom12-expected12] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains-test_geom13-expected13] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains-test_geom14-expected14] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains-test_geom15-expected15] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains-test_geom16-expected16] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[touches-test_geom17-expected17] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[touches-test_geom18-expected18] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains-test_geom19-expected19] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[covers-test_geom20-expected20] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[covers-test_geom21-expected21] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[covers-test_geom22-expected22] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains_properly-test_geom23-expected23] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains_properly-test_geom24-expected24] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains_properly-test_geom25-expected25] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains_properly-test_geom26-expected26] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains_properly-test_geom27-expected27] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query[contains_properly-test_geom28-expected28] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_invalid_geometry geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_empty_geometry[None-expected_value0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_empty_geometry[test_geom1-expected_value1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_empty_geometry[test_geom2-expected_value2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_empty_geometry[test_geom3-expected_value3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_empty_geometry[test_geom4-expected_value4] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_invalid_predicate geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_sorting[True-expected0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[None-test_geom0-expected0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[None-test_geom1-expected1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[None-test_geom2-expected2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[intersects-test_geom3-expected3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[intersects-test_geom4-expected4] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[intersects-test_geom5-expected5] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[intersects-test_geom6-expected6] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[intersects-test_geom7-expected7] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[within-test_geom8-expected8] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[within-test_geom9-expected9] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[within-test_geom10-expected10] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains-test_geom11-expected11] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains-test_geom12-expected12] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains-test_geom13-expected13] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains-test_geom14-expected14] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains-test_geom15-expected15] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains-test_geom16-expected16] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[touches-test_geom17-expected17] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[touches-test_geom18-expected18] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[covers-test_geom19-expected19] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[covers-test_geom20-expected20] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[covers-test_geom21-expected21] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains_properly-test_geom22-expected22] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains_properly-test_geom23-expected23] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains_properly-test_geom24-expected24] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains_properly-test_geom25-expected25] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains_properly-test_geom26-expected26] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk[contains_properly-test_geom27-expected27] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_empty_geometry[test_geoms0-expected_value0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_empty_geometry[test_geoms1-expected_value1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_empty_geometry[test_geoms2-expected_value2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_empty_geometry[test_geoms3-expected_value3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_empty_input_array geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_invalid_input_geometry geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_invalid_predicate geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_input_type[None-test_geom0-expected0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_input_type[intersects-test_geom1-expected1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_input_type[contains-test_geom2-expected2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_query_bulk_sorting[True-expected0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_rtree_nearest_warns geopandas/tests/test_sindex.py::TestPygeosInterface::test_empty_tree_geometries geopandas/tests/test_sindex.py::TestPygeosInterface::test_size geopandas/tests/test_sindex.py::TestPygeosInterface::test_len geopandas/tests/test_sindex.py::TestPygeosInterface::test_is_empty geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[None-expected_shape0] geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[intersects-expected_shape1] geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[within-expected_shape2] geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[contains-expected_shape3] geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[overlaps-expected_shape4] geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[crosses-expected_shape5] geopandas/tests/test_sindex.py::TestPygeosInterface::test_integration_natural_earth[touches-expected_shape6] geopandas/tests/test_sindex.py::test_old_spatial_index_deprecated
geopandas/geodataframe.py
geopandas/geodataframe.py