Skip to content

GeoPandas: implement distributed interiors #3168

Description

@jiayuasu

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions