Skip to content

Top-level functions

Array/Chunked Array functions

geoarrow.rust.core

affine_transform builtin

affine_transform(input: AffineInputT | ArrowArrayExportable | ArrowStreamExportable, transform: AffineTransform) -> AffineInputT | NativeGeometryArrayT | NativeChunkedGeometryArrayT

Apply an affine transformation to geometries.

This is intended to be equivalent to shapely.affinity.affine_transform for 2D transforms.

Parameters:

  • input (AffineInputT | ArrowArrayExportable | ArrowStreamExportable) –

    input geometry array or chunked geometry array

  • other

    an affine transformation to apply to all geometries.

    This integrates with the affine Python library, and most users should use that integration, though it allows any input that is a tuple with 6 or 9 float values.

Returns:

  • AffineInputT | NativeGeometryArrayT | NativeChunkedGeometryArrayT

    New GeoArrow array or chunked array with the same type as input and with transformed

  • AffineInputT | NativeGeometryArrayT | NativeChunkedGeometryArrayT

    coordinates.

area builtin

area(input: ArrowArrayExportable | ArrowStreamExportable, *, method: AreaMethod | AreaMethodT = 'euclidean') -> Float64Array | ChunkedFloat64Array

Determine the area of an array of geometries

Parameters:

Other Parameters:

  • method (AreaMethod | AreaMethodT) –

    The method to use for area calculation. One of "Ellipsoidal", "Euclidean", or "Spherical". Refer to the documentation on AreaMethod for more information.

Returns:

center builtin

center(input: ArrowArrayExportable | ArrowStreamExportable) -> PointArray | ChunkedPointArray

Compute the center of geometries

This first computes the axis-aligned bounding rectangle, then takes the center of that box

Parameters:

Returns:

centroid builtin

centroid(input: ArrowArrayExportable | ArrowStreamExportable) -> PointArray | ChunkedPointArray

Calculation of the centroid.

The centroid is the arithmetic mean position of all points in the shape. Informally, it is the point at which a cutout of the shape could be perfectly balanced on the tip of a pin.

The geometric centroid of a convex object always lies in the object. A non-convex object might have a centroid that is outside the object itself.

Parameters:

Returns:

chaikin_smoothing builtin

chaikin_smoothing(input: ChaikinSmoothingT | ArrowArrayExportable | ArrowStreamExportable, n_iterations: int) -> LineStringArray | PolygonArray | MultiLineStringArray | MultiPolygonArray | ChunkedLineStringArray | ChunkedPolygonArray | ChunkedMultiLineStringArray | ChunkedMultiPolygonArray

Smoothen LineString, Polygon, MultiLineString and MultiPolygon using Chaikins algorithm.

Chaikins smoothing algorithm

Each iteration of the smoothing doubles the number of vertices of the geometry, so in some cases it may make sense to apply a simplification afterwards to remove insignificant coordinates.

This implementation preserves the start and end vertices of an open linestring and smoothes the corner between start and end of a closed linestring.

Parameters:

Returns:

convex_hull builtin

convex_hull(input: ArrowArrayExportable | ArrowStreamExportable) -> PolygonArray | ChunkedPolygonArray

Returns the convex hull of a Polygon. The hull is always oriented counter-clockwise.

This implementation uses the QuickHull algorithm, based on Barber, C. Bradford; Dobkin, David P.; Huhdanpaa, Hannu (1 December 1996) Original paper here: www.cs.princeton.edu/~dpd/Papers/BarberDobkinHuhdanpaa.pdf

Parameters:

Returns:

densify builtin

densify(input: ArrowArrayExportable, max_distance: float) -> LineStringArray | PolygonArray | MultiLineStringArray | MultiPolygonArray

Return a new linear geometry containing both existing and new interpolated coordinates with a maximum distance of max_distance between them.

Note: max_distance must be greater than 0.

Parameters:

Returns:

envelope builtin

envelope(input: ArrowArrayExportable | ArrowStreamExportable) -> RectArray | ChunkedRectArray

Computes the minimum axis-aligned bounding box that encloses an input geometry

Parameters:

Returns:

frechet_distance builtin

frechet_distance(input: ArrowArrayExportable | ArrowStreamExportable, other: BroadcastGeometry) -> Float64Array | ChunkedFloat64Array

Determine the similarity between two arrays of LineStrings using the Frechet distance.

The Fréchet distance is a measure of similarity: it is the greatest distance between any point in A and the closest point in B. The discrete distance is an approximation of this metric: only vertices are considered. The parameter ‘densify’ makes this approximation less coarse by splitting the line segments between vertices before computing the distance.

Fréchet distance sweep continuously along their respective curves and the direction of curves is significant. This makes it a better measure of similarity than Hausdorff distance for curve or surface matching.

This implementation is based on Computing Discrete Frechet Distance by T. Eiter and H. Mannila.

Parameters:

Returns:

geodesic_perimeter builtin

geodesic_perimeter(input: ArrowArrayExportable) -> Float64Array

Determine the perimeter of a geometry on an ellipsoidal model of the earth.

This uses the geodesic measurement methods given by Karney (2013).

For a polygon this returns the sum of the perimeter of the exterior ring and interior rings. To get the perimeter of just the exterior ring of a polygon, do polygon.exterior().geodesic_length().

Units
  • return value: meter

Returns:

is_empty builtin

is_empty(input: ArrowArrayExportable | ArrowStreamExportable) -> BooleanArray | ChunkedBooleanArray

Returns True if a geometry is an empty point, polygon, etc.

Parameters:

Returns:

length builtin

length(input: ArrowArrayExportable | ArrowStreamExportable, *, method: LengthMethod | LengthMethodT = 'euclidean') -> Float64Array | ChunkedFloat64Array

Calculation of the length of a Line

Parameters:

Other Parameters:

  • method (LengthMethod | LengthMethodT) –

    The method to use for length calculation. One of "Ellipsoidal", "Euclidean", "Haversine", or "Vincenty". Refer to the documentation on LengthMethod for more information.

Returns:

line_interpolate_point builtin

line_interpolate_point(input: ArrowArrayExportable | ArrowStreamExportable, fraction: float | int | ArrowArrayExportable | ArrowStreamExportable | NumpyArrayProtocolf64) -> PointArray | ChunkedPointArray

Returns a point interpolated at given distance on a line.

This is intended to be equivalent to shapely.line_interpolate_point when normalized=True.

If the given fraction is * less than zero (including negative infinity): returns the starting point * greater than one (including infinity): returns the ending point * If either the fraction is NaN, or any coordinates of the line are not finite, returns Point EMPTY.

Parameters:

Returns:

line_locate_point builtin

line_locate_point(input: ArrowArrayExportable | ArrowStreamExportable, point: GeoInterfaceProtocol | ArrowArrayExportable | ArrowStreamExportable) -> Float64Array | ChunkedFloat64Array

Returns a fraction of the line's total length representing the location of the closest point on the line to the given point.

This is intended to be equivalent to shapely.line_locate_point when normalized=True.

If the line has zero length the fraction returned is zero.

If either the point's coordinates or any coordinates of the line are not finite, returns NaN.

Parameters:

Returns:

polylabel builtin

polylabel(input: ArrowArrayExportable | ArrowStreamExportable, tolerance: float) -> PointArray | ChunkedPointArray

Calculate a Polygon's ideal label position by calculating its pole of inaccessibility.

The pole of inaccessibility is the most distant internal point from the polygon outline (not to be confused with centroid), and is useful for optimal placement of a text label on a polygon.

The calculation uses an iterative grid-based algorithm, ported from the original JavaScript implementation.

Parameters:

Returns:

signed_area builtin

signed_area(input: ArrowArrayExportable | ArrowStreamExportable, *, method: AreaMethod | AreaMethodT = 'euclidean') -> Float64Array | ChunkedFloat64Array

Signed area of a geometry array

Parameters:

Other Parameters:

  • method (AreaMethod | AreaMethodT) –

    The method to use for area calculation. One of "Ellipsoidal", "Euclidean", or "Spherical". Refer to the documentation on AreaMethod for more information.

Returns:

simplify builtin

simplify(input: SimplifyInputT | ArrowArrayExportable | ArrowStreamExportable, epsilon: float, *, method: SimplifyMethod | SimplifyMethodT = 'rdp') -> SimplifyInputT | PointArray | LineStringArray | PolygonArray | MultiPointArray | MultiLineStringArray | MultiPolygonArray | ChunkedPointArray | ChunkedLineStringArray | ChunkedPolygonArray | ChunkedMultiPointArray | ChunkedMultiLineStringArray | ChunkedMultiPolygonArray

Simplifies a geometry.

Parameters:

Other Parameters:

Returns:

total_bounds builtin

total_bounds(input: ArrowArrayExportable | ArrowStreamExportable) -> Tuple[float, float, float, float]

Computes the total bounds (extent) of the geometry.

Parameters:

Returns:

Table functions

geoarrow.rust.core

explode builtin

explode(input: ArrowStreamExportable) -> GeoTable

Explode a table.

This is intended to be equivalent to the explode function in GeoPandas.

Parameters:

Returns:

  • GeoTable

    A new table with multi-part geometries exploded to separate rows.