UNPKG

geolib

Version:

Library to provide basic geospatial operations like distance calculation, decoding of sexagesimal coordinates etc.

1 lines 1.15 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _toRad=_interopRequireDefault(require("./toRad"));var _getLatitude=_interopRequireDefault(require("./getLatitude"));var _getLongitude=_interopRequireDefault(require("./getLongitude"));var _constants=require("./constants");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getAreaOfPolygon=points=>{let area=0;if(points.length>2){let lowerIndex;let middleIndex;let upperIndex;for(let i=0;i<points.length;i++){if(i===points.length-2){lowerIndex=points.length-2;middleIndex=points.length-1;upperIndex=0}else if(i===points.length-1){lowerIndex=points.length-1;middleIndex=0;upperIndex=1}else{lowerIndex=i;middleIndex=i+1;upperIndex=i+2}const p1lon=(0,_getLongitude.default)(points[lowerIndex]);const p2lat=(0,_getLatitude.default)(points[middleIndex]);const p3lon=(0,_getLongitude.default)(points[upperIndex]);area+=((0,_toRad.default)(p3lon)-(0,_toRad.default)(p1lon))*Math.sin((0,_toRad.default)(p2lat))}area=area*_constants.earthRadius*_constants.earthRadius/2}return Math.abs(area)};var _default=exports.default=getAreaOfPolygon;