1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import distance from '@turf/distance';
- /**
- * Takes a bounding box and calculates the minimum square bounding box that
- * would contain the input.
- *
- * @name square
- * @param {BBox} bbox extent in [west, south, east, north] order
- * @returns {BBox} a square surrounding `bbox`
- * @example
- * var bbox = [-20, -20, -15, 0];
- * var squared = turf.square(bbox);
- *
- * //addToMap
- * var addToMap = [turf.bboxPolygon(bbox), turf.bboxPolygon(squared)]
- */
- function square(bbox) {
- var west = bbox[0];
- var south = bbox[1];
- var east = bbox[2];
- var north = bbox[3];
- var horizontalDistance = distance(bbox.slice(0, 2), [east, south]);
- var verticalDistance = distance(bbox.slice(0, 2), [west, north]);
- if (horizontalDistance >= verticalDistance) {
- var verticalMidpoint = (south + north) / 2;
- return [
- west,
- verticalMidpoint - (east - west) / 2,
- east,
- verticalMidpoint + (east - west) / 2,
- ];
- } else {
- var horizontalMidpoint = (west + east) / 2;
- return [
- horizontalMidpoint - (north - south) / 2,
- south,
- horizontalMidpoint + (north - south) / 2,
- north,
- ];
- }
- }
- export default square;
|