turf 0.0.7 icon indicating copy to clipboard operation
turf: ^0.0.7 copied to clipboard

A turf.js-like geospatial analysis library working with GeoJSON, written in pure Dart.

turf.dart #

pub package

THIS PROJECT IS WORK IN PROCESS

A turf.js-like geospatial analysis library working with GeoJSON, written in pure Dart.

This includes a fully RFC 7946-compliant object-representation and serialization for GeoJSON.

Most of the implementation is a direct translation from turf.js.

Get started #

  • Get the Dart tools
  • Install the library with dart pub add turf
  • Import the library in your code and use it. For example:
import 'package:turf/helpers.dart';
import 'package:turf/src/line_segment.dart';

Feature<Polygon> poly = Feature<Polygon>(
  geometry: Polygon(coordinates: [
    [
      Position(0, 0),
      Position(2, 2),
      Position(0, 1),
      Position(0, 0),
    ],
    [
      Position(0, 0),
      Position(1, 1),
      Position(0, 1),
      Position(0, 0),
    ],
  ]),
);

main() {
  var total = segmentReduce<int>(
    poly,
    (previousValue, currentSegment, initialValue, featureIndex,
        multiFeatureIndex, geometryIndex, segmentIndex) {
      if (previousValue != null) {
        previousValue++;
      }
      return previousValue;
    },
    0,
    combineNestedGeometries: false,
  );
  print(total);
  // total ==  6
}

GeoJSON Object Model #

polymorphism

Notable Design Decisions #

  • Nested GeometryCollections (as described in RFC 7946 section 3.1.8) are not supported which takes a slightly firmer stance than the "should avoid" language in the specification

Tests and Benchmarks #

Tests are run with dart test and benchmarks can be run with dart run benchmark

Any new benchmarks must be named *_benchmark.dart and reside in the ./benchmark folder.

Components #

Measurement #

Coordinate Mutation #

Transformation #

  • bboxClip
  • bezierSpline
  • buffer
  • circle
  • clone - implemented as a member function of each [GeoJSONObject]
  • concave
  • convex
  • difference
  • dissolve
  • intersect
  • lineOffset
  • polygonSmooth
  • simplify
  • tesselate
  • transformRotate
  • transformTranslate
  • transformScale
  • union
  • voronoi
  • polyLineDecode

Feature Conversion #

MISC #

  • ellipse
  • kinks
  • lineArc
  • lineChunk
  • lineIntersect
  • lineOverlap
  • lineSegment
  • lineSlice
  • lineSliceAlong
  • lineSplit
  • mask
  • nearestPointOnLine
  • sector
  • shortestPath
  • unkinkPolygon

Random #

  • randomPosition
  • randomPoint
  • randomLineString
  • randomPolygon

Data #

  • sample

Interpolation #

  • interpolate
  • isobands
  • isolines
  • planepoint
  • tin

Joins #

  • pointsWithinPolygon
  • tag

Grids #

  • hexGrid
  • pointGrid
  • squareGrid
  • triangleGrid

Classification #

Aggregation #

  • collect
  • clustersDbscan
  • clustersKmeans

META #

Booleans #

  • booleanClockwise
  • booleanConcave
  • booleanContains
  • booleanCrosses
  • booleanDisjoint
  • booleanEqual
  • booleanIntersects
  • booleanOverlap
  • booleanParallel
  • booleanPointInPolygon
  • booleanPointOnLine
  • booleanWithin

Unit Conversion #

24
likes
120
pub points
89%
popularity

Publisher

verified publisher icondartlang.rocks

A turf.js-like geospatial analysis library working with GeoJSON, written in pure Dart.

Repository (GitHub)

Documentation

API reference

License

Icon for licenses.MIT (LICENSE)

Dependencies

json_annotation, turf_equality

More

Packages that depend on turf