Part of #2230.
Summary
Implement the GeoPandas-compatible GeoSeries.interiors property and GeoDataFrame delegation using Sedona's native interior-ring expressions.
The implementation must remain fully distributed. It must not call to_geopandas(), collect(), toLocalIterator(), or a Python row UDF.
Requirements
- Return a pandas-on-Spark Series containing the interior rings for each polygon.
- Preserve the input index, including named and multi-level indexes.
- Return an empty list for polygons without holes and missing values for non-polygon and null rows, matching GeoPandas.
- Support access through both GeoSeries and GeoDataFrame.
- Preserve geometry metadata for the returned ring values.
- Add API documentation and examples.
Tests
- Add direct tests covering polygons with multiple holes, polygons without holes, empty polygons, non-polygon geometries, nulls, index preservation, and GeoDataFrame delegation.
- Add GeoPandas parity tests across representative geometry and index cases.
Part of #2230.
Summary
Implement the GeoPandas-compatible
GeoSeries.interiorsproperty and GeoDataFrame delegation using Sedona's native interior-ring expressions.The implementation must remain fully distributed. It must not call
to_geopandas(),collect(),toLocalIterator(), or a Python row UDF.Requirements
Tests