Skip to content

API Reference

TypeScript

Accepts GeoJSON geometry objects and returns a Position ([x, y]) or null.

interiorPoint(geometry)

Computes an interior point of the given geometry, dispatching to the appropriate algorithm based on geometry dimension:

  • Area (Polygon/MultiPolygon): scanline algorithm
  • Line (LineString/MultiLineString): vertex closest to length-weighted centroid
  • Point (Point/MultiPoint): point closest to arithmetic-mean centroid
  • GeometryCollection: uses the highest-dimension component

Parameters:

  • geometry: Geometry | null — A GeoJSON Geometry object, or null

Returns: Position | null[x, y] coordinates inside the geometry, or null if empty

typescript
import { interiorPoint } from "interior-point";

interiorPoint({
  type: "Polygon",
  coordinates: [
    [
      [0, 0],
      [6, 0],
      [6, 2],
      [2, 2],
      [2, 8],
      [0, 8],
      [0, 0],
    ],
  ],
});
// => [1, 5]

Returns null for empty geometries:

typescript
interiorPoint(null); // => null
interiorPoint({ type: "GeometryCollection", geometries: [] }); // => null

Type Reference

TypeDefinition
GeometryGeoJSON Geometry from @types/geojson
Position[number, number] (GeoJSON Position)

Rust

interior_point(geometry)

Computes an interior point of the given geometry, dispatching by dimension.

Parameters:

  • geometry: &Geometry<f64> — A reference to a geo_types::Geometry

Returns: Option<Coord<f64>> — The interior point coordinate, or None if empty

rust
use interior_point::interior_point;
use geo_types::{Geometry, Polygon, LineString};

let poly = Polygon::new(
    LineString::from(vec![
        (0.0, 0.0),
        (6.0, 0.0),
        (6.0, 2.0),
        (2.0, 2.0),
        (2.0, 8.0),
        (0.0, 8.0),
        (0.0, 0.0),
    ]),
    vec![],
);
let result = interior_point(&poly.into());
// => Some(Coord { x: 5.0, y: 5.0 })

Returns None for empty geometries:

rust
use geo_types::GeometryCollection;
let empty = GeometryCollection::<f64>(vec![]).into();
assert_eq!(interior_point::interior_point(&empty), None);

Type Reference

TypeDefinition
Geometry<f64>geo_types::Geometry<f64>
Coord<f64>geo_types::Coord { x: f64, y: f64 }