Skip to content

GeoSeries

polars_st.GeoSeries #

GeoSeries(
    name: str | ArrayLike | None = None,
    values: ArrayLike | None = None,
    dtype: PolarsDataType | None = None,
    *,
    strict: bool = True,
    nan_to_null: bool = False,
    geometry_format: (
        Literal[
            "wkb",
            "wkt",
            "ewkt",
            "geojson",
            "shapely",
            "coords",
            "point",
            "multipoint",
            "linestring",
            "circularstring",
            "multilinestring",
            "polygon",
        ]
        | None
    ) = None
)

Bases: Series

Create a new GeoSeries.

GeoSeries is used as an alias for pl.Series with type annotations added for the st namespace, and an overriden constructor which will parse the values into binary EWKB format.

You can create a GeoSeries from a list of coordinate arrays, WKB, WKT, EWKT or GeoJSON strings, or Shapely objects. If geometry_format is not set, the geometries will be created by infering the correct deserialization operation from its datatype.

See pl.Series for parameters documentation.

Note

Because Polars doesn't support subclassing of their types, calling this constructor will NOT create an instance of GeoSeries, but an instance of pl.Series.

As a result, instance checks are not permitted on this class to prevent misuse:

>>> s = st.GeoSeries(["POINT(0 0)"])
>>> type(s)
<class 'polars.series.series.Series'>
>>> isinstance(s, st.GeoSeries)
Traceback (most recent call last):
...
TypeError: instance check on abstract class GeoSeries is not allowed

Examples:

>>> gs = st.GeoSeries([
...     "POINT(0 0)",
...     "POINT(1 2)",
... ])
>>> gs2 = st.GeoSeries([
...     [0, 0],
...     [1, 2],
... ], geometry_format="point")
>>> gs.equals(gs2)
True
>>> import shapely
>>> gs = st.GeoSeries([
...     shapely.Point(0, 0),
...     shapely.Point(1, 2),
... ])
>>> gs2 = st.GeoSeries([
...     '{"type": "Point", "coordinates": [0, 0]}',
...     '{"type": "Point", "coordinates": [1, 2]}',
... ])
>>> gs.equals(gs2)
True

st property #

polars_st.GeoSeriesNameSpace #

polars_st.GeoSeriesNameSpace.__geo_interface__ property #

__geo_interface__: dict

Return a GeoJSON GeometryCollection dict representation of the DataFrame.

polars_st.GeoSeriesNameSpace.geometry_type #

geometry_type() -> Series

polars_st.GeoSeriesNameSpace.dimensions #

dimensions() -> Series

polars_st.GeoSeriesNameSpace.coordinate_dimension #

coordinate_dimension() -> Series

polars_st.GeoSeriesNameSpace.area #

area() -> Series

polars_st.GeoSeriesNameSpace.bounds #

bounds() -> Series

polars_st.GeoSeriesNameSpace.length #

length() -> Series

polars_st.GeoSeriesNameSpace.minimum_clearance #

minimum_clearance() -> Series

polars_st.GeoSeriesNameSpace.x #

x() -> Series

polars_st.GeoSeriesNameSpace.y #

y() -> Series

polars_st.GeoSeriesNameSpace.z #

z() -> Series

polars_st.GeoSeriesNameSpace.m #

m() -> Series

polars_st.GeoSeriesNameSpace.count_coordinates #

count_coordinates() -> Series

polars_st.GeoSeriesNameSpace.coordinates #

coordinates(output_dimension: Literal[2, 3] | None = None) -> Series

polars_st.GeoSeriesNameSpace.exterior_ring #

exterior_ring() -> GeoSeries

polars_st.GeoSeriesNameSpace.interior_rings #

interior_rings() -> Series

polars_st.GeoSeriesNameSpace.count_interior_rings #

count_interior_rings() -> Series

polars_st.GeoSeriesNameSpace.get_interior_ring #

get_interior_ring(index: IntoIntegerExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.count_geometries #

count_geometries() -> Series

polars_st.GeoSeriesNameSpace.get_geometry #

get_geometry(index: IntoIntegerExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.count_points #

count_points() -> Series

polars_st.GeoSeriesNameSpace.get_point #

get_point(index: IntoIntegerExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.parts #

parts() -> Series

polars_st.GeoSeriesNameSpace.precision #

precision() -> Series

polars_st.GeoSeriesNameSpace.set_precision #

set_precision(
    grid_size: IntoNumericExpr,
    mode: Literal["valid_output", "no_topo", "keep_collapsed"] = "valid_output",
) -> GeoSeries

polars_st.GeoSeriesNameSpace.distance #

distance(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.hausdorff_distance #

hausdorff_distance(
    other: IntoGeoExprColumn, densify: float | None = None
) -> Series

polars_st.GeoSeriesNameSpace.frechet_distance #

frechet_distance(
    other: IntoGeoExprColumn, densify: float | None = None
) -> Series

polars_st.GeoSeriesNameSpace.srid #

srid() -> Series

polars_st.GeoSeriesNameSpace.set_srid #

set_srid(srid: IntoIntegerExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.to_srid #

to_srid(srid: IntoIntegerExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.to_wkt #

to_wkt(
    rounding_precision: int | None = 6,
    trim: bool = True,
    output_dimension: Literal[2, 3, 4] = 3,
    old_3d: bool = False,
) -> Series

polars_st.GeoSeriesNameSpace.to_ewkt #

to_ewkt(
    rounding_precision: int | None = 6,
    trim: bool = True,
    output_dimension: Literal[2, 3, 4] = 3,
    old_3d: bool = False,
) -> Series

polars_st.GeoSeriesNameSpace.to_wkb #

to_wkb(
    output_dimension: Literal[2, 3, 4] = 3,
    byte_order: Literal[0, 1] | None = None,
    include_srid: bool = False,
) -> Series

polars_st.GeoSeriesNameSpace.to_geojson #

to_geojson(indent: int | None = None) -> Series

polars_st.GeoSeriesNameSpace.to_shapely #

to_shapely() -> Series

polars_st.GeoSeriesNameSpace.to_dict #

to_dict() -> Series

polars_st.GeoSeriesNameSpace.cast #

cast(into: IntoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.multi #

multi() -> Series

polars_st.GeoSeriesNameSpace.to_geopandas #

to_geopandas(
    *, use_pyarrow_extension_array: bool = False, **kwargs: Any
) -> GeoSeries

Convert this pl.Series to a geopandas GeoSeries.

polars_st.GeoSeriesNameSpace.has_z #

has_z() -> Series

polars_st.GeoSeriesNameSpace.has_m #

has_m() -> Series

polars_st.GeoSeriesNameSpace.is_ccw #

is_ccw() -> Series

polars_st.GeoSeriesNameSpace.is_closed #

is_closed() -> Series

polars_st.GeoSeriesNameSpace.is_empty #

is_empty() -> Series

polars_st.GeoSeriesNameSpace.is_ring #

is_ring() -> Series

polars_st.GeoSeriesNameSpace.is_simple #

is_simple() -> Series

polars_st.GeoSeriesNameSpace.is_valid #

is_valid() -> Series

polars_st.GeoSeriesNameSpace.is_valid_reason #

is_valid_reason() -> Series

polars_st.GeoSeriesNameSpace.crosses #

crosses(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.contains #

contains(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.contains_properly #

contains_properly(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.covered_by #

covered_by(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.covers #

covers(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.disjoint #

disjoint(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.dwithin #

dwithin(other: IntoGeoExprColumn, distance: float) -> Series

polars_st.GeoSeriesNameSpace.intersects #

intersects(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.overlaps #

overlaps(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.touches #

touches(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.within #

within(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.equals #

equals(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.equals_exact #

equals_exact(other: IntoGeoExprColumn, tolerance: float = 0.0) -> Series

polars_st.GeoSeriesNameSpace.equals_identical #

equals_identical(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.relate #

relate(other: IntoGeoExprColumn) -> Series

polars_st.GeoSeriesNameSpace.relate_pattern #

relate_pattern(other: IntoGeoExprColumn, pattern: str) -> Series

polars_st.GeoSeriesNameSpace.union #

union(other: IntoGeoExprColumn, grid_size: float | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.unary_union #

unary_union(grid_size: float | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.coverage_union #

coverage_union() -> GeoSeries

polars_st.GeoSeriesNameSpace.intersection #

intersection(
    other: IntoGeoExprColumn, grid_size: float | None = None
) -> GeoSeries

polars_st.GeoSeriesNameSpace.difference #

difference(
    other: IntoGeoExprColumn, grid_size: float | None = None
) -> GeoSeries

polars_st.GeoSeriesNameSpace.symmetric_difference #

symmetric_difference(
    other: IntoGeoExprColumn, grid_size: float | None = None
) -> GeoSeries

polars_st.GeoSeriesNameSpace.boundary #

boundary() -> GeoSeries

polars_st.GeoSeriesNameSpace.buffer #

buffer(
    distance: IntoNumericExpr,
    quad_segs: int = 8,
    cap_style: Literal["round", "square", "flat"] = "round",
    join_style: Literal["round", "mitre", "bevel"] = "round",
    mitre_limit: float = 5.0,
    single_sided: bool = False,
) -> GeoSeries

polars_st.GeoSeriesNameSpace.offset_curve #

offset_curve(
    distance: IntoNumericExpr,
    quad_segs: int = 8,
    join_style: Literal["round", "mitre", "bevel"] = "round",
    mitre_limit: float = 5.0,
) -> GeoSeries

polars_st.GeoSeriesNameSpace.centroid #

centroid() -> GeoSeries

polars_st.GeoSeriesNameSpace.center #

center() -> GeoSeries

polars_st.GeoSeriesNameSpace.clip_by_rect #

clip_by_rect(
    xmin: IntoNumericExpr,
    ymin: IntoNumericExpr,
    xmax: IntoNumericExpr,
    ymax: IntoNumericExpr,
) -> GeoSeries

polars_st.GeoSeriesNameSpace.convex_hull #

convex_hull() -> GeoSeries

polars_st.GeoSeriesNameSpace.concave_hull #

concave_hull(ratio: float = 0.0, allow_holes: bool = False) -> GeoSeries

polars_st.GeoSeriesNameSpace.segmentize #

segmentize(max_segment_length: IntoNumericExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.envelope #

envelope() -> GeoSeries

polars_st.GeoSeriesNameSpace.extract_unique_points #

extract_unique_points() -> GeoSeries

polars_st.GeoSeriesNameSpace.build_area #

build_area() -> GeoSeries

polars_st.GeoSeriesNameSpace.make_valid #

make_valid() -> GeoSeries

polars_st.GeoSeriesNameSpace.normalize #

normalize() -> GeoSeries

polars_st.GeoSeriesNameSpace.node #

node() -> GeoSeries

polars_st.GeoSeriesNameSpace.point_on_surface #

point_on_surface() -> GeoSeries

polars_st.GeoSeriesNameSpace.remove_repeated_points #

remove_repeated_points(tolerance: IntoNumericExpr = 0.0) -> GeoSeries

polars_st.GeoSeriesNameSpace.reverse #

reverse() -> GeoSeries

polars_st.GeoSeriesNameSpace.simplify #

simplify(
    tolerance: IntoNumericExpr, preserve_topology: bool = True
) -> GeoSeries

polars_st.GeoSeriesNameSpace.force_2d #

force_2d() -> GeoSeries

polars_st.GeoSeriesNameSpace.force_3d #

force_3d(z: IntoNumericExpr = 0.0) -> GeoSeries

polars_st.GeoSeriesNameSpace.flip_coordinates #

flip_coordinates() -> GeoSeries

polars_st.GeoSeriesNameSpace.minimum_rotated_rectangle #

minimum_rotated_rectangle() -> GeoSeries

polars_st.GeoSeriesNameSpace.snap #

snap(other: IntoGeoExprColumn, tolerance: IntoNumericExpr) -> GeoSeries

polars_st.GeoSeriesNameSpace.shortest_line #

shortest_line(other: IntoGeoExprColumn) -> GeoSeries

polars_st.GeoSeriesNameSpace.affine_transform #

affine_transform(matrix: IntoExprColumn | Sequence[float]) -> GeoSeries

polars_st.GeoSeriesNameSpace.translate #

translate(
    x: IntoNumericExpr = 0.0, y: IntoNumericExpr = 0.0, z: IntoNumericExpr = 0.0
) -> GeoSeries

polars_st.GeoSeriesNameSpace.rotate #

rotate(
    angle: IntoNumericExpr,
    origin: Literal["center", "centroid"] | Sequence[float] = "center",
) -> GeoSeries

polars_st.GeoSeriesNameSpace.scale #

scale(
    x: IntoNumericExpr = 1.0,
    y: IntoNumericExpr = 1.0,
    z: IntoNumericExpr = 1.0,
    origin: Literal["center", "centroid"] | Sequence[float] = "center",
) -> GeoSeries

polars_st.GeoSeriesNameSpace.skew #

skew(
    x: IntoNumericExpr = 0.0,
    y: IntoNumericExpr = 0.0,
    z: IntoNumericExpr = 0.0,
    origin: Literal["center", "centroid"] | Sequence[float] = "center",
) -> GeoSeries

polars_st.GeoSeriesNameSpace.interpolate #

interpolate(distance: IntoNumericExpr, normalized: bool = False) -> GeoSeries

polars_st.GeoSeriesNameSpace.project #

project(other: IntoGeoExprColumn, normalized: bool = False) -> Series

polars_st.GeoSeriesNameSpace.line_merge #

line_merge(directed: bool = False) -> GeoSeries

polars_st.GeoSeriesNameSpace.shared_paths #

shared_paths(other: IntoGeoExprColumn) -> GeoSeries

polars_st.GeoSeriesNameSpace.total_bounds #

total_bounds() -> Series

polars_st.GeoSeriesNameSpace.collect #

collect(into: GeometryType | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.union_all #

union_all(grid_size: float | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.coverage_union_all #

coverage_union_all() -> GeoSeries

polars_st.GeoSeriesNameSpace.intersection_all #

intersection_all(grid_size: float | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.difference_all #

difference_all(grid_size: float | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.symmetric_difference_all #

symmetric_difference_all(grid_size: float | None = None) -> GeoSeries

polars_st.GeoSeriesNameSpace.polygonize #

polygonize() -> GeoSeries

polars_st.GeoSeriesNameSpace.voronoi_polygons #

voronoi_polygons(
    tolerance: float = 0.0,
    extend_to: bytes | None = None,
    only_edges: bool = False,
) -> GeoSeries

polars_st.GeoSeriesNameSpace.delaunay_triangles #

delaunay_triangles(
    tolerance: float = 0.0, only_edges: bool = False
) -> GeoSeries

polars_st.GeoSeriesNameSpace.plot #

plot(**kwargs: Unpack[MarkConfigKwds]) -> Chart

Draw map plot.

Polars does not implement plotting logic itself but instead defers to Altair.

df.st.plot(**kwargs) is shorthand for alt.Chart(df).mark_geoshape(**kwargs).interactive(). Please read Altair GeoShape documentation for available options.