Terraformer Core
Link Terraformer.Primitive Back to Top
Terraformer Primitives are JavaScript objects that map directly to their GeoJSON couterparts. Converting a GeoJSON object into a Terraformer Primitive will allow you use convenience methods like point.within(polygon)
.
Every Primitive
inherits from the Terraformer.Primitive
base class, thus all other Primitives share the Terraformer.Primitive
methods.
There is a Primitive for every type of GeoJSON object, plus a Circle
Primitive which represents a circle as a polygon.
Link Constructor Back to Top
You create a new Terraformer.Primitive
object by passing it a valid GeoJSON Object. This will return a Terraformer.Primitive
with the same type as your GeoJSON object.
var point = new Terraformer.Primitive({
type:"Point",
coordinates:[1,2]
});
point instanceof Terraformer.Point; //-> true
point instanceof Terraformer.Primitive; //-> true
point.within(polygon) //-> true or false
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
toMercator() |
this |
Converts this GeoJSON object’s coordinates to the web mercator spatial reference. |
toGeographic() |
this |
Converts this GeoJSON object’s coordinates to geographic coordinates. |
envelope() |
Envelope |
Returns an object with x , y , w and h suitable for passing to most indexes. |
bbox() |
BBox |
Returns the GeoJSON Bounding Box for this primitive. |
convexHull() |
Polygon or null |
Returns the convex hull of this primitive as a Polygon . Will return null if the convex hull cannot be calculated or a valid Polygon cannot be created. |
contains(<Geometry> geometry) |
Boolean |
Returns true if the passed GeoJSON Geometry object is completely contained inside this primitive. |
within(<Geometry> geometry) |
Boolean |
Returns true if the passed GeoJSON Geometry object is completely within this primitive. |
intersects(<Geometry> geometry) |
Boolean |
Returns true if the passed GeoJSON Geometry intersects this primitive. |
Link Terraformer.Point Back to Top
A JavaScript object representing a GeoJSON Point.
Link Constructor Back to Top
Terraformer.Point
can be created by passing a GeoJSON Coordinate Pair like [longitude, latitude]
, with plain x,y
, or a valid GeoJSON Point.
var point1 = new Terraformer.Point({
type:"Point",
coordinates:[1,2]
});
var point2 = new Terraformer.Point(1,2);
var point3 = new Terraformer.Point([1,2]);
Link Terraformer.MultiPoint Back to Top
A JavaScript object representing a GeoJSON MultiPoint.
Link Constructor Back to Top
Terraformer.MultiPoint
can be created by passing in a valid GeoJSON MultiPoint, or an array of GeoJSON Coordinates.
var multipoint1 = new Terraformer.MultiPoint({
type:"MultiPoint",
coordinates:[ [1,2],[2,1] ]
});
var multipoint2 = new Terraformer.MultiPoint([ [1,2],[2,1] ]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
forEach(<Function> function) |
null |
Iterates over each point. Equivalent to multipoint.coordinates.forEach(function) . The function will be called with point , index and coordinates . |
get(<Integer> index) |
Point |
Returns a Terraformer.Point for the point at index in the coordinate array. |
addPoint(<Coordinate> coordinate) |
this |
Adds a new coordinate to the end of the coordinate array. Equivalent to multipoint.coordinates.push([3,4]) . |
insertPoint(<Coordinate> coordinate, |
this |
Inserts the passed point at the passed index. Equivalent to multipoint.coordinates.splice(index, 0, point) |
removePoint(<Integer> index or <Coordinate> coordinate) |
this |
Removes the point at index or the passed Coordinate depending on the type of object passed in. |
Link Terraformer.LineString Back to Top
A JavaScript object representing a GeoJSON LineString.
Link Constructor Back to Top
Terraformer.LineString
can be created by passing in a valid GeoJSON LineString, or an array of GeoJSON Coordinates like [longitude, latitude]
.
var linestring = new Terraformer.LineString({
type:"LineString",
coordinates:[ [1,2],[2,1] ]
});
var linestring = new Terraformer.LineString([ [1,2],[2,1] ]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
addVertex(<Coordinate> coordinate) |
this |
Adds a new coordinate to the end of the coordinate array. Equivalent to linestring.coordinates.push([3,4]) . |
insertVertex(<Coordinate> coordinate, <Integer> index) |
this |
Inserts the passed coordinate at the passed index. Equivalent to linestring.coordinates.splice(index, 0, point) |
removeVertex(<Integer> index) |
this |
Removes the coordinate at index . Equivalent to calling linestring.coordinates.splice(remove, 1) |
Link Terraformer.MultiLineString Back to Top
A JavaScript object representing a GeoJSON MultiLineString.
Link Constructor Back to Top
Terraformer.LineString
can be created by passing in a valid GeoJSON MultiLineString, or a GeoJSON MultiLineString coordinate array.
var multilinestring = new Terraformer.MultiLineString({
type:"LineString",
coordinates:[ [1,2],[2,1] ]
});
var multilinestring = new Terraformer.MultiLineString([
[[1,1],[2,2],[3,4]],
[[0,1],[0,2],[0,3]]
]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
forEach(<Function> function) |
null |
Iterates over each LineString. Equivalent to multilinestring.coordinates.forEach(function) . The function will be called with linestring , index and coordinates . |
get(<Integer> index) |
LineString |
Returns a Terraformer.LineString for the LineString at index in the coordinates array. |
Link Terraformer.Polygon Back to Top
A JavaScript object representing a GeoJSON Polygon.
Link Constructor Back to Top
Terraformer.Polygon
can be created by passing in a valid GeoJSON Polygon, or GeoJSON Polygon coordinate array.
var polygon1 = new Terraformer.Polygon({
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]
});
var polygon2 = new Terraformer.Polygon([
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
addVertex(<Coordinate> coordinate) |
this |
Adds a new coordinate just before the closing coordinate of the linear ring. |
insertVertex(<Coordinate> coordinate, |
this |
Inserts the passed coordinate at the passed index. Equivalent to polygon.coordinates.splice(index, 0, point) |
removeVertex(<Integer> index) |
this |
Removes the coordinate at index . Equivalent to calling polygon.coordinates.splice(remove, 1) |
close() |
this |
Ensures that the first and last vertex of the polygon are equal to each other. |
hasHoles() |
Boolean | True if this polygon has holes. |
holes() |
Array <Polygon> |
Returns an Array of Polygon objects made from each hole in this polygon. |
Link Terraformer.MultiPolygon Back to Top
A JavaScript object representing a GeoJSON MultiPolygon.
Link Constructor Back to Top
Terraformer.MultiPolygon
can be created by passing in a valid GeoJSON MultiPolygon, or an array that is a valid coordinate array for GeoJSON MultiPolygon.
var multipolygon1 = new Terraformer.MultiPolygon({
"type": "MultiPolygon",
"coordinates": [
[
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
],
[
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]
]
});
var multipolygon2 = new Terraformer.MultiPolygon([
[
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
],
[
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]
]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
forEach(<Function> function) |
null |
Iterates over each LineString. Equivalent to multipolygon.coordinates.forEach(function) . The function will be called with polygon , index and coordinates . |
get(<Integer> index) |
Polygon |
Returns a Terraformer.Polygon for the Polygon at index in the coordinate array. |
Link Terraformer.Feature Back to Top
A JavaScript object representing a GeoJSON Feature.
Link Constructor Back to Top
Terraformer.Feature
can be created by passing in a valid GeoJSON Feature or GeoJSON Geometry.
var feature1 = new Terraformer.Feature({
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]
}
});
var feature2 = new Terraformer.Feature({
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],
[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]
]
});
Link Terraformer.FeatureCollection Back to Top
A JavaScript object representing a GeoJSON FeatureCollection.
Link Constructor Back to Top
Terraformer.FeatureCollection
can be created by passing a valid GeoJSON Feature Collection or an array of GeoJSON Features.
var featurecollection1 = new Terraformer.FeatureCollection(
"type": "FeatureCollection",
"features": [feature1, feature2]
});
var featurecollection2 = new Terraformer.FeatureCollection([feature1, feature2]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
forEach(<Function> function) |
null |
Iterates over each Feature. Equivalent to featurecollection.features.forEach(function) . The function will be called with feature , index and coordinates . |
get(<Integer> index) |
Feature |
Returns a Terraformer.Feature for the Feature at index in the features array. |
Link Terraformer.GeometryCollection Back to Top
A JavaScript object representing a GeoJSON Geometry Collection.
Link Constructor Back to Top
Terraformer.GeometryCollection
can be created by passing a valid GeoJSON Geometry Collection or an array of GeoJSON Geometries.
var geometrycollection1 = new Terraformer.GeometryCollection(
"type": "FeatureCollection",
"features": [geometry1, geometry2]
});
var geometrycollection2 = new Terraformer.GeometryCollection([geometry1, geometry2]);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
forEach(<Function> function) |
null |
Iterates over each LineString. Equivalent to geometrycollection.coordinates.forEach(function) . The function will be called with geometry , index and coordinates . |
get(<Integer> index) |
Primitive |
Returns a Terraformer.Primitive for the Geometry at index in the coordinate array. |
Link Terraformer.Circle Back to Top
The GeoJSON spec does not provide a way to visualize circles. Terraformer.Circle
is actual a GeoJSON Feature object that contains a Polygon representing a circle with a certain number of sides.
Link Constructor Back to Top
Terraformer.Circle
is created with a center
, radius
, and steps
.
Option | Type | Default | Description |
---|---|---|---|
center |
Coordinate |
null |
Required A GeoJSON Coordinate in [x,y] format. |
radius |
Integer |
250 |
The radius of the circle in meters. |
steps |
Integer |
32 |
How many steps will be used to create the polygon that represents the circle. |
circle = new Terraformer.Circle([-122.27, 45.65], 500, 64);
circle.contains(point);
Link Methods Back to Top
Method | Returns | Description |
---|---|---|
recalculate() |
this | Recalculates the circle |
steps(<Integer optional> steps) |
Integer |
Returns the number of steps to produce the polygon representing the circle. If the steps parameter is passed the circle will be recalculated witht he new step count before returning. |
radius(<Integer optional> radius) |
Integer |
Returns the radius circle. If the radius parameter is passed the circle will be recalculated witht he new radius before returning. |
center(<Coordinate optional> center) |
Coordinates |
Returns the center of the circle. If the center parameter is passed the circle will be recalculated with the new center before returning. |
Link Terraformer.Tools Back to Top
Terraformer also has numerous helper methods for working with GeoJSON and geographic data. These tools work with a mix of lower level GeoJSON constructs like Coordinates
, Coordinate Arrays and GeoJSON objects and Terraformer Primitives
Link Spatial Reference Conversions Back to Top
Method | Returns | Description |
---|---|---|
toMercator(<GeoJSON> geojson) |
GeoJSON |
Converts this GeoJSON object’s coordinates to the web mercator spatial reference. This is an in-place modification of the passed object. |
toGeographic(<GeoJSON> geojson) |
GeoJSON |
Converts this GeoJSON object’s coordinates to geographic coordinates. This is an in-place modification of the passed object. |
applyConverter(<GeoJSON> geojson), function) |
GeoJSON |
Runs the passed function against every Coordinate in the geojson object. Your function will be passed a Coordinate and will be expected to return a Coordinate . |
positionToMercator(<Coordinate> coordinate) |
Coordinate |
Converts the passed Coordinate to web mercator spatial reference. |
positionToGeographic(<Coordinate> coordinate) |
Coordinate |
Converts the passed Coordinate to geographic coordinates. |
Link Calculations Back to Top
Method | Returns | Description |
---|---|---|
calculateBounds(<GeoJSON> geojson) |
BBox |
Returns a GeoJSON bounding box for the passed geoJSON. |
calculateEnvelope(<GeoJSON> geojson) |
Envelope |
Returns an object with x , y , w , h . Suitable for passing to most indexes. |
convexHull(<GeoJSON> geojson) |
Coordinates |
Returns an array of coordinates representing the convex hull the the passed geoJSON. |
Link Comparisons Back to Top
Method | Returns | Description |
---|---|---|
coordinatesContainPoint(<[Coordinates]> coordinates, <Coordinate> coordinate) |
Boolean |
Accepts an array of coordinates and a coordinate and returns true if the point falls within the coordinate array. |
polygonContainsPoint(<Polygon> polygon, <Coordinate> coordinate) |
Boolean |
Accepts the geometry of a polygon and a coordinate and returns true if the point falls within the polygon. |
arrayIntersectsArray(<[Coordinates]> coordinates, <[Coordinates]> coordinates) |
Boolean |
Accepts two arrays of coordinates and returns true if they cross each other at any point. |
coordinatesEqual(<Coordinate> coordinate, <Coordinate> coordinate) |
Boolean |
Accepts two individual coordinate pairs and returns true if the passed coordinate pairs are equal to each other. |
var pt = [0,0];
var pt2 = [-111.873779, 40.647303];
var polygon = {
"type": "Polygon",
"coordinates": [[
[-112.074279, 40.52215],
[-112.074279, 40.853293],
[-111.610107, 40.853293],
[-111.610107, 40.52215],
[-112.074279, 40.52215]
]]
};
var polygonGeometry = polygon.coordinates;
Terraformer.Tools.polygonContainsPoint(polygonGeometry, pt);
// returns false
Terraformer.Tools.polygonContainsPoint(polygonGeometry, pt2);
// returns true