Socket
Socket
Sign inDemoInstall

turf-tin

Package Overview
Dependencies
Maintainers
8
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

turf-tin

turf tin module


Version published
Weekly downloads
13K
increased by12.55%
Maintainers
8
Weekly downloads
 
Created
Source

turf-tin

build status

turf tin module

turf.tin(points, propertyName)

Takes a set of points and the name of a z-value property and creates a Triangulated Irregular Network, or a TIN for short, returned as a collection of Polygons. These are often used for developing elevation contour maps or stepped heat visualizations.

This triangulates the points, as well as adds properties called a, b, and c representing the value of the given propertyName at each of the points that represent the corners of the triangle.

Parameters

parametertypedescription
pointsFeatureCollection- a GeoJSON FeatureCollection containing Features with Point geometries
propertyNamestringoptional: - name of the property from which to pull z values. This is optional: if not given, then there will be no extra data added to the derived triangles.

Example

// generate some random point data
var points = turf.random('points', 30, {
  bbox: [50, 30, 70, 50]
});
//=points
// add a random property to each point between 0 and 9
for (var i = 0; i < points.features.length; i++) {
  points.features[i].properties.z = ~~(Math.random() * 9);
}
var tin = turf.tin(points, 'z')
for (var i = 0; i < tin.features.length; i++) {
  var properties  = tin.features[i].properties;
  // roughly turn the properties of each
  // triangle into a fill color
  // so we can visualize the result
  properties.fill = '#' + properties.a +
    properties.b + properties.c;
}
//=tin

undefined

If the points of the triangle are collinear, then just find the extremes and use the midpoint as the center of the circumcircle.

undefined

Bail if there aren't enough vertices to form any triangles.

undefined

Ensure the vertex array is in order of descending X coordinate (which is needed to ensure a subquadratic runtime), and then find the bounding box around the points.

dx

Find a supertriangle, which is a triangle that surrounds all the vertices. This is used like something of a sentinel value to remove cases in the main algorithm, and is removed before we return any results.

Once found, put it in the "open" list. (The "open" list is for triangles who may still need to be considered; the "closed" list is for triangles which do not.)

undefined

Incrementally add each vertex to the mesh.

length

For each open triangle, check to see if the current point is inside it's circumcircle. If it is, remove the triangle and add it's edges to an edge list.

undefined

If this point is to the right of this triangle's circumcircle, then this triangle should never get checked again. Remove it from the open list, add it to the closed list, and skip.

undefined

If not, skip this triangle.

undefined

Remove the triangle and add it's edges to the edge list.

undefined

Remove any doubled edges.

undefined

Add a new triangle for each edge.

undefined

Copy any remaining open triangles to the closed list, and then remove any triangles that share a vertex with the supertriangle.

undefined

Yay, we're done!

Installation

Requires nodejs.

$ npm install turf-tin

Tests

$ npm test

Keywords

FAQs

Package last updated on 04 Feb 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc