Skip to content

Functions

Array/Chunked Array functions

geoarrow.rust.compute

affine_transform

affine_transform(
    input: ArrowArrayExportable | ArrowStreamExportable,
    transform: AffineTransform,
) -> NativeArray | ChunkedNativeArray

Apply an affine transformation to geometries.

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

Parameters:

Returns:

area

area(
    input: ArrowArrayExportable | ArrowStreamExportable,
    *,
    method: AreaMethod | AreaMethodT = AreaMethod.Euclidean
) -> Array | ChunkedArray

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

Compute the center of geometries

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

Parameters:

Returns:

centroid

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

chaikin_smoothing(
    input: ArrowArrayExportable | ArrowStreamExportable, n_iterations: int
) -> NativeArray | ChunkedNativeArray

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

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

densify(
    input: ArrowArrayExportable, max_distance: float
) -> NativeArray | ChunkedNativeArray

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

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

Parameters:

Returns:

frechet_distance

frechet_distance(
    input: ArrowArrayExportable | ArrowStreamExportable,
    other: BroadcastGeometry,
) -> Array | ChunkedArray

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.

[Frechet distance]: en.wikipedia.org/wiki/Fr%C3%A9chet_distance [Computing Discrete Frechet Distance]: www.kr.tuwien.ac.at/staff/eiter/et-archive/cdtr9464.pdf

Parameters:

Returns:

geodesic_perimeter

geodesic_perimeter(
    input: ArrowArrayExportable | ArrowStreamExportable,
) -> Array | ChunkedArray

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

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

Parameters:

Returns:

length

length(
    input: ArrowArrayExportable | ArrowStreamExportable,
    *,
    method: LengthMethod | LengthMethodT = LengthMethod.Euclidean
) -> Array | ChunkedArray

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. Defaults to LengthMethod.Euclidean.

Returns:

line_interpolate_point

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

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

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:

scale

Returns a scaled geometry, scaled by factors along each dimension.

Parameters:

Returns:

signed_area

signed_area(
    input: ArrowArrayExportable | ArrowStreamExportable,
    *,
    method: AreaMethod | AreaMethodT = AreaMethod.Euclidean
) -> Array | ChunkedArray

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

simplify(
    input: ArrowArrayExportable | ArrowStreamExportable,
    epsilon: float,
    *,
    method: SimplifyMethod | SimplifyMethodT = SimplifyMethod.RDP
) -> NativeArray | ChunkedNativeArray

Simplifies a geometry.

Parameters:

Other Parameters:

  • method (SimplifyMethod | SimplifyMethodT) –

    The method to use for simplification calculation. One of "rdp", "vw", or "vw_preserve". Refer to the documentation on SimplifyMethod for more information. Defaults to SimplifyMethod.RDP.

Returns:

skew

Skew a geometry from it's bounding box center, using different values for xs and ys to distort the geometry's aspect ratio.

Parameters:

Returns:

total_bounds

Computes the total bounds (extent) of the geometry.

Parameters:

Returns:

translate

Returns a scaled geometry, scaled by factors along each dimension.

Parameters:

Returns:

Table functions

geoarrow.rust.compute

explode

explode(input: ArrowStreamExportable) -> Table

Explode a table.

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

Parameters:

Returns:

  • Table

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