turf 0.0.6+2 copy "turf: ^0.0.6+2" to clipboard
turf: ^0.0.6+2 copied to clipboard

outdated

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,
  );
}
// total.length ==  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 #

  • ❌ along
  • ❌ area
  • ❌ bbox
  • ❌ bboxPolygon
  • bearing
  • ❌ center
  • ❌ centerOfMass
  • ❌ centroid
  • destination
  • distance
  • ❌ envelope
  • ❌ length
  • midpoint
  • ❌ pointOnFeature
  • ❌ polygonTangents
  • ❌ pointToLineDistance
  • ❌ rhumbBearing
  • ❌ rhumbDestination
  • ❌ rhumbDistance
  • ❌ square
  • ❌ greatCircle

Coordinate Mutation #

  • ❌ cleanCoords
  • ❌ flip
  • ❌ rewind
  • ❌ round
  • ❌ truncate

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

Feature Conversion #

  • ❌ combine
  • ❌ explode
  • ❌ flatten
  • ❌ lineToPolygon
  • ❌ polygonize
  • ❌ polygonToLine

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 #

47
likes
0
pub points
94%
popularity

Publisher

verified publishergeometrico.dev

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

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

json_annotation

More

Packages that depend on turf