-
Notifications
You must be signed in to change notification settings - Fork 993
Closed
Labels
Milestone
Description
Proposed module @turf/point-origin
Aimed for Turf v5.1 release
A module which defines a point of origin from a GeoJSON/BBox.
How to use
import pointOrigin from '@turf/point-origin'
const origin = pointOrigin(geojson, 'nw')
//=> North-West Feature<Point>Refactoring for
Used to help define origin/pivot points
@turf/transform-scale@turf/transform-rotate@turf/transform-translate
Already created in @turf/transform-scale
/**
* Define Origin
*
* @private
* @param {GeoJSON} geojson GeoJSON
* @param {string|Geometry|Feature<Point>|Array<number>} origin sw/se/nw/ne/center/centroid
* @returns {Feature<Point>} Point origin
*/
function defineOrigin(geojson, origin) {
// Default params
if (origin === undefined || origin === null) origin = 'centroid';
// Input Geometry|Feature<Point>|Array<number>
if (Array.isArray(origin) || typeof origin === 'object') return getCoord(origin);
// Define BBox
var bbox = (geojson.bbox) ? geojson.bbox : turfBBox(geojson);
var west = bbox[0];
var south = bbox[1];
var east = bbox[2];
var north = bbox[3];
switch (origin) {
case 'sw':
case 'southwest':
case 'westsouth':
case 'bottomleft':
return point([west, south]);
case 'se':
case 'southeast':
case 'eastsouth':
case 'bottomright':
return point([east, south]);
case 'nw':
case 'northwest':
case 'westnorth':
case 'topleft':
return point([west, north]);
case 'ne':
case 'northeast':
case 'eastnorth':
case 'topright':
return point([east, north]);
case 'center':
return center(geojson);
case undefined:
case null:
case 'centroid':
return centroid(geojson);
default:
throw new Error('invalid origin');
}
}Reactions are currently unavailable