- Circle : Takes a Point and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.
| Argument | Type | Description |
|---|
Center | Feature | Center Point |
radius | Int | radius of the circle |
steps | Int | Number of steps |
units | str(optional) | Unit of distance, default is 'km' refer Units type section |
kwargs | dict(optional) | optional properties |
| Return | Type | Description |
|---|
Feature | Feature | A circle polygon |
from turfpy.transformation import circle
from geojson import Point, Feature
circle(center=Feature(geometry=Point((-75.343, 39.984))), radius=5, steps=10)
- bbox_clip : Takes a Feature or geometry and a bbox and clips the feature to the bbox.
| Argument | Type | Description |
|---|
geojson | Feature | Geojson data |
bbox | List | Bounding Box which is used to clip the geojson |
| Return | Type | Description |
|---|
bb_clip | Feature | Clipped geojson |
from turfpy.transformation import bbox_clip
from geojson import Feature
f = Feature(geometry={"coordinates": [[[2, 2], [8, 4],
[12, 8], [3, 7], [2, 2]]], "type": "Polygon"})
bbox = [0, 0, 10, 10]
clip = bbox_clip(f, bbox)
- bezier_spline : Takes a line and returns a curved version by applying a Bezier spline algorithm.
| Argument | Type | Description |
|---|
line | Feature | LineString Feature which is used to draw the curve |
resolution | Float | Time in milliseconds between points |
sharpness | Float | A measure of how curvy the path should be between splines |
| Return | Type | Description |
|---|
Curve | Feature | Curve as LineString Feature |
from geojson import LineString, Feature
from turfpy.transformation import bezier_spline
ls = LineString([(-76.091308, 18.427501),
(-76.695556, 18.729501),
(-76.552734, 19.40443),
(-74.61914, 19.134789),
(-73.652343, 20.07657),
(-73.157958, 20.210656)])
f = Feature(geometry=ls)
bezier_spline(f)
- concave : Generate concave hull for the given feature or Feature Collection.
| Argument | Type | Description |
|---|
features | Feature or FeatureCollection | It can be a feature or Feature Collection |
alpha | Float | Alpha determines the shape of concave hull, greater values will make shape more tighten. |
| Return | Type | Description |
|---|
concave hull | Feature | Feature of concave hull polygon |
from turfpy.transformation import concave
from geojson import FeatureCollection, Feature, Point
f1 = Feature(geometry=Point((-63.601226, 44.642643)))
f2 = Feature(geometry=Point((-63.591442, 44.651436)))
f3 = Feature(geometry=Point((-63.580799, 44.648749)))
f4 = Feature(geometry=Point((-63.573589, 44.641788)))
f5 = Feature(geometry=Point((-63.587665, 44.64533)))
f6 = Feature(geometry=Point((-63.595218, 44.64765)))
fc = [f1, f2, f3, f4, f5, f6]
concave(FeatureCollection(fc), alpha=100)
- convex : Generate convex hull for the given feature or Feature Collection.
| Argument | Type | Description |
|---|
features | Feature or FeatureCollection | It can be a feature or Feature Collection |
| Return | Type | Description |
|---|
convex hull | Feature | Feature of convex hull polygon |
from turfpy.transformation import convex
from geojson import FeatureCollection, Feature, Point
f1 = Feature(geometry=Point((10.195312, 43.755225)))
f2 = Feature(geometry=Point((10.404052, 43.8424511)))
f3 = Feature(geometry=Point((10.579833, 43.659924)))
f4 = Feature(geometry=Point((10.360107, 43.516688)))
f5 = Feature(geometry=Point((10.14038, 43.588348)))
f6 = Feature(geometry=Point((10.195312, 43.755225)))
fc = [f1, f2, f3, f4, f5, f6]
convex(FeatureCollection(fc))
- intersect : Takes polygons and finds their intersection.
| Argument | Type | Description |
|---|
features | List[Feature] or FeatureCollection | List of features of Feature Collection |
| Return | Type | Description |
|---|
intersection | Feature | Intersection Geojson Feature |
from turfpy.transformation import intersect
from geojson import Feature
f = Feature(geometry={"coordinates": [
[[-122.801742, 45.48565], [-122.801742, 45.60491],
[-122.584762, 45.60491], [-122.584762, 45.48565],
[-122.801742, 45.48565]]], "type": "Polygon"})
b = Feature(geometry={"coordinates": [
[[-122.520217, 45.535693], [-122.64038, 45.553967],
[-122.720031, 45.526554], [-122.669906, 45.507309],
[-122.723464, 45.446643], [-122.532577, 45.408574],
[-122.487258, 45.477466], [-122.520217, 45.535693]
]], "type": "Polygon"})
inter = intersect([f, b])
- union : Given list of features or FeatureCollection return union of those.
| Argument | Type | Description |
|---|
features | List[Feature] or FeatureCollection | A list of GeoJSON features or FeatureCollection. |
| Return | Type | Description |
|---|
union | Feature | A GeoJSON Feature or FeatureCollection |
from turfpy.transformation import union
from geojson import Feature, Polygon, FeatureCollection
f1 = Feature(geometry=Polygon([[
[-82.574787, 35.594087],
[-82.574787, 35.615581],
[-82.545261, 35.615581],
[-82.545261, 35.594087],
[-82.574787, 35.594087]
]]), properties={"fill": "#00f"})
f2 = Feature(geometry=Polygon([[
[-82.560024, 35.585153],
[-82.560024, 35.602602],
[-82.52964, 35.602602],
[-82.52964, 35.585153],
[-82.560024, 35.585153]]]), properties={"fill": "#00f"})
union(FeatureCollection([f1, f2], properties={"combine": "yes"}))
- dissolve : Take FeatureCollection or list of features to dissolve based on property_name provided.
| Argument | Type | Description |
|---|
features | List[Feature], FeatureCollection | A list of GeoJSON features or FeatureCollection. |
property_name | str | Name of property based on which to dissolve. |
| Return | Type | Description |
|---|
dissolved | Feature or FeatureCollection | A GeoJSON Feature or FeatureCollection. |
from geojson import Polygon, Feature, FeatureCollection
from turfpy.transformation import dissolve
f1 = Feature(geometry=Polygon([[
[0, 0],
[0, 1],
[1, 1],
[1, 0],
[0, 0]]]), properties={"combine": "yes", "fill": "#00f"})
f2 = Feature(geometry=Polygon([[
[0, -1],
[0, 0],
[1, 0],
[1, -1],
[0,-1]]]), properties={"combine": "yes"})
f3 = Feature(geometry=Polygon([[
[1,-1],
[1, 0],
[2, 0],
[2, -1],
[1, -1]]]), properties={"combine": "no"})
dissolve(FeatureCollection([f1, f2, f3]), property_name='combine')
- difference : Find the difference between given two features.
| Argument | Type | Description |
|---|
feature_1 | Feature | A GeoJSON feature |
feature_2 | Feature | A GeoJSON feature |
| Return | Type | Description |
|---|
difference | Feature | A GeoJSON feature |
from geojson import Polygon, Feature
from turfpy.transformation import difference
f1 = Feature(geometry=Polygon([[
[128, -26],
[141, -26],
[141, -21],
[128, -21],
[128, -26]]]), properties={"combine": "yes", "fill": "#00f"})
f2 = Feature(geometry=Polygon([[
[126, -28],
[140, -28],
[140, -20],
[126, -20],
[126, -28]]]), properties={"combine": "yes"})
difference(f1, f2)
- transform rotate : Rotates any geojson Feature or Geometry of a specified angle, around its centroid or a given pivot point; all rotations follow the right-hand rule
| Argument | Type | Description |
|---|
feature | Feature | A GeoJSON feature |
angle | float | angle of rotation (along the vertical axis), from North in decimal degrees, negative clockwise |
pivot | list(optional) | point around which the rotation will be performed, deafult values is centroid |
mutate | boolean(optional) | allows GeoJSON input to be mutated (significant performance increase if True), deafult value is False |
| Return | Type | Description |
|---|
geojson | Feature | The rotated GeoJSON |
from turfpy.transformation import transform_rotate
from geojson import Polygon, Feature
f = Feature(geometry=Polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]))
pivot = [0, 25]
transform_rotate(f, 10, pivot)
- transform translate : Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line on the provided direction angle.
| Argument | Type | Description |
|---|
feature | Feature | A GeoJSON feature |
distance | float | length of the motion, negative values determine motion in opposite direction |
direction | float | of the motion, angle from North in decimal degrees, positive clockwise |
units | str(optional) | Unit of distance, default is 'km' refer Units type section |
z_translation | float(optional) | length of the vertical motion, same unit of distance, default value is 0 |
mutate | boolean(optional) | allows GeoJSON input to be mutated (significant performance increase if True), deafult value is False |
| Return | Type | Description |
|---|
geojson | Feature | The translated GeoJSON |
from turfpy.transformation import transform_translate
from geojson import Polygon, Feature
f = Feature(geometry=Polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]))
transform_translate(f, 100, 35, mutate=True)
- transform scale : Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).
If a FeatureCollection is provided, the origin
point will be calculated based on each individual Feature.
| Argument | Type | Description |
|---|
feature | Feature | FeatureCollection |
factor | float | factor of scaling, positive or negative values greater than 0 |
origin | str or list | Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid), can also provide a point, deafult value is centroid |
mutate | boolean(optional) | allows GeoJSON input to be mutated (significant performance increase if True), deafult value is False |
| Return | Type | Description |
|---|
geojson | Feature | The scaled GeoJSON |
from turfpy.transformation import transform_scale
from geojson import Polygon, Feature
f = Feature(geometry=Polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]))
transform_scale(f, 3, origin=[0, 29])
- tesselate : Tesselates a Feature into a FeatureCollection of triangles using earcut.
| Argument | Type | Description |
|---|
poly | Feature(Polygon) | the polygon to tesselate |
| Return | Type | Description |
|---|
geojson | FeatureCollection | a geometrycollection feature |
from geojson import Feature
from turfpy.transformation import tesselate
polygon = Feature(geometry={"coordinates": [[[11, 0], [22, 4], [31, 0], [31, 11],[21, 15], [11, 11], [11, 0]]], "type": "Polygon"})
tesselate(polygon)
- line offset : Takes a linestring or multilinestring and returns a line at offset by the specified distance.
| Argument | Type | Description |
|---|
geojson | Feature(Line or MultiLineString) | input GeoJSON of Line or MutliLineString |
distance | float | distance to offset the line (can be of negative value) |
unit | str(Optional) | Unit of distance, default is 'km' refer Units type section |
| Return | Type | Description |
|---|
geojson | Feature | Line feature offset from the input line |
from geojson import MultiLineString, Feature
from turfpy.transformation import line_offset
ls = Feature(geometry=MultiLineString([
[(3.75, 9.25), (-130.95, 1.52)],
[(23.15, -34.25), (-1.35, -4.65), (3.45, 77.95)]
]))
line_offset(ls, 2, unit='mi')
- voronoi : Takes a FeatureCollection of points, and a bounding box, and returns a FeatureCollection of Voronoi polygons.
| Argument | Type | Description |
|---|
points | FeatureCollection or List of Points | points to find the Voronoi polygons around. |
bbox | list | A bounding box to clip |
| Return | Type | Description |
|---|
geojson | Feature | A GeoJSON Feature. |
from turfpy.transformation import voronoi
points = [
[-66.9703, 40.3183],
[-63.7763, 40.4500],
[-65.4196, 42.13985310302137],
[-69.5813, 43.95405461286195],
[-65.66337553550034, 55.97088945355232],
[-60.280418548905, 56.240669185466146],
[-68.5129561347689, 50.12984589640148],
[-64.2393519226657, 59.66235385923687],
]
bbox = [-70, 40, -60, 60]
result = voronoi(points, bbox)
Some functionalities support units as a parameter, default values of units is kilometers for the functionalities that have units are parameters. The values for it are:
'km' = kilometers
'm' = meters
'mi = miles
'ft' = feets
'in' = inches
'deg' = degrees
'cen' = centimeters
'rad' = radians
'naut' = nauticals
'yd' = yards