turf tin module
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.
| parameter | type | description |
|---|---|---|
points |
FeatureCollection | - a GeoJSON FeatureCollection containing Features with Point geometries |
propertyName |
string | optional: - 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. |
// 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;
}
//=tinFind 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.)
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.
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.
Requires nodejs.
$ npm install turf-tin$ npm test