UNPKG

spatials

Version:

A bunch of utilities for geocoding and spatial calculation

8 lines 7.38 kB
//! spatials //! A bunch of utilities for geocoding and spatial calculation //! version : 1.0.2 //! authors : maurobussini //! license : MIT //! built : 2016-02-07 //! https://github.com/maurobussini/spatials !function(a,b){"function"==typeof define&&define.amd?define(["geolib"],b):"object"==typeof exports?module.exports=b(require("geolib")):a.spatials=b(a.geolib)}(this,function(a){function b(a){return"[object Array]"==={}.toString.call(a)}function c(a){return"undefined"==typeof a||null==a}function d(a){return c(a)?!0:isNaN(a)?!1:a>=0}function e(a){return c(a)?!1:c(a.latitude)?!1:c(a.longitude)?!1:isNaN(a.latitude)?!1:isNaN(a.longitude)?!1:a.latitude<-90||a.latitude>90?!1:a.longitude<-90||a.longitude>90?!1:!0}function f(a){if(c(a))return!1;if(!b(a))return!1;for(var d=0;d<a.length;d++)if(!e(a[d]))return!1;return!0}function g(a){return f(a)?a.length>=3:!1}function h(b){if(!b)throw new Error("Argument 'latDecimalValue' is invalid");if(isNaN(b))throw new Error("Provided latitude is not a valid number");var c=b>0?"N":"S",d=a.decimal2sexagesimal(b);return d+" "+c}function i(b){if(!b)throw new Error("Argument 'lonDecimalValue' is invalid");if(isNaN(b))throw new Error("Provided longitude is not a valid number");var c=b>0?"E":"W",d=a.decimal2sexagesimal(b);return d+" "+c}function j(b){if(!b)throw new Error("Argument 'latSexagesimalValue' is invalid");if("string"!=typeof b)throw new Error("Provided latitude is not a valid string");return a.sexagesimal2decimal(b)}function k(b){if(!b)throw new Error("Argument 'lonSexagesimalValue' is invalid");if("string"!=typeof b)throw new Error("Provided longitude is not a valid string");return a.sexagesimal2decimal(b)}function l(b,c,d){if("undefined"==typeof b||null===b)throw new Error("Argument 'meters' is invalid");if(!d)throw new Error("Argument 'targetUnit' is invalid");if(isNaN(b))throw new Error("Provided meters value should be number");if(0>b)throw new Error("Provided meters value cannot be lower then 0");return 0===b?0:a.convertUnit(d,b,c)}function m(a,b){return l(a,b,"km")}function n(a,b){return l(a,b,"mi")}function o(a,b){return l(a,b,"sm")}function p(a,b){return l(a,b,"ft")}function q(a,b){return l(a,b,"in")}function r(a,b){return l(a,b,"yd")}function s(a,b){return x(a,"mi",b)}function t(a,b){return x(a,"sm",b)}function u(a,b){return x(a,"ft",b)}function v(a,b){return x(a,"in",b)}function w(a,b){return x(a,"yd",b)}function x(b,c,d){if("undefined"==typeof b||null===b)throw new Error("Argument 'sourceValue' is invalid");if(isNaN(b))throw new Error("Provided source value should be number");d=null==d?4:d;var e=a.measures[c],f=b/e;return f=a.round(f,d)}function y(a,b){return E(a,"msToKmh",b)}function z(a,b){return E(a,"msToKn",b)}function A(a,b){return E(a,"kmhToMs",b)}function B(a,b){return E(a,"knToMs",b)}function C(a,b){return E(a,"kmhToKn",b)}function D(a,b){return E(a,"knToKmh",b)}function E(b,c,d){if("undefined"==typeof b||null===b)throw new Error("Argument 'sourceValue' is invalid");if(isNaN(b))throw new Error("Provided source value should be number");d=null==d?4:d;var e={kmhToMs:1/3.6,msToKmh:3.6,knToMs:1/1.943844492441,msToKn:1.943844492441,kmhToKn:null,knToKmh:null};e.kmhToKn=e.kmhToMs*e.msToKn,e.knToKmh=e.knToMs*e.msToKmh;var f=e[c];if(!f)throw new Error("Target speed unit '"+targetUnit+"' is not supported");var g=b*f;return g=a.round(g,d)}function F(b,c,d){if(!b)throw new Error("Argument 'pointA' is invalid");if(!c)throw new Error("Argument 'pointB' is invalid");if(!e(b))throw new Error("Argument 'pointA' is not a valid coordinate");if(!e(c))throw new Error("Argument 'pointB' is not a valid coordinate");return a.getDistance(b,c,d)}function G(a,b){if(!a)throw new Error("Argument 'pointA' is invalid");if(!f(a))throw new Error("Argument 'routeCoordinates' is not a valid coordinates array");for(var c=0,d=0;d<a.length&&!(d+1>=a.length);d++){var e=a[d],g=a[d+1];c+=F(e,g,b)}return c}function H(b,c,d){if(!b)throw new Error("Argument 'pointA' is invalid");if(!c)throw new Error("Argument 'pointB' is invalid");if(!e(b))throw new Error("Argument 'pointA' is not a valid coordinate");if(!e(c))throw new Error("Argument 'pointB' is not a valid coordinate");var f=d===!0?"circle":null;return a.getCompassDirection(b,c,f)}function I(b,c){if(!b)throw new Error("Argument 'point' is invalid");if(!c)throw new Error("Argument 'polygonArrayBounds' is invalid");if(!e(b))throw new Error("Argument 'point' is not a valid coordinate");if(!g(c))throw new Error("Argument 'polygonArrayBounds' is not a valid polygon");return a.isPointInside(b,c)}function J(a,b,c,f){if(!a)throw new Error("Argument 'pointA' is invalid");if(!b)throw new Error("Argument 'pointB' is invalid");if(!c)throw new Error("Argument 'speedMetersPerSecond' is invalid");if(!e(a))throw new Error("Argument 'pointA' is not a valid coordinate");if(!e(b))throw new Error("Argument 'pointB' is not a valid coordinate");if(!d(c))throw new Error("Provided speed must be a number greater or equals zero");if(0==c)return 1/0;if(f=f||2,!d(f))throw new Error("Provided decimals must be a number greater or equals zero");var g=F(a,b,0),h=g/c;return parseFloat(h.toFixed(f))}function K(a,b,c){if(!a)throw new Error("Argument 'pointA' is invalid");if(!b)throw new Error("Argument 'speedMetersPerSecond' is invalid");if(!f(a))throw new Error("Argument 'routeCoordinates' is not a valid coordinates array");if(!d(b))throw new Error("Provided speed must be a number greater or equals zero");if(0==b)return 1/0;if(c=c||2,!d(c))throw new Error("Provided decimals must be a number greater or equals zero");var e=G(a,0),g=e/b;return parseFloat(g.toFixed(c))}function L(a,b,c,f){if(!a)throw new Error("Argument 'pointA' is invalid");if(!b)throw new Error("Argument 'pointB' is invalid");if(!c)throw new Error("Argument 'durationSeconds' is invalid");if(!e(a))throw new Error("Argument 'pointA' is not a valid coordinate");if(!e(b))throw new Error("Argument 'pointB' is not a valid coordinate");if(!d(c))throw new Error("Provided duration must be a number greater or equals zero");if(0==c)return 1/0;if(f=f||2,!d(f))throw new Error("Provided decimals must be a number greater or equals zero");var g=F(a,b,0),h=g/c;return parseFloat(h.toFixed(f))}function M(a,b,c){if(!a)throw new Error("Argument 'pointA' is invalid");if(!b)throw new Error("Argument 'durationSeconds' is invalid");if(!f(a))throw new Error("Argument 'routeCoordinates' is not a valid coordinates array");if(!d(b))throw new Error("Provided duration must be a number greater or equals zero");if(0==b)return 1/0;if(c=c||2,!d(c))throw new Error("Provided decimals must be a number greater or equals zero");var e=G(a,0),g=e/b;return parseFloat(g.toFixed(c))}if(!a)throw new Error("spatials requires 'geolib' library");return{isCoordinate:e,isCoordinatesArray:f,isPolygon:g,latitudeToSexagesimal:h,longitudeToSexagesimal:i,latitudeToDecimal:j,longitudeToDecimal:k,metersToKilometers:m,metersToMiles:n,metersToSeamiles:o,metersToFeet:p,metersToInches:q,metersToYards:r,milesToMeters:s,seamilesToMeters:t,feetToMeters:u,inchesToMeters:v,yardsToMeters:w,metersSecondToKilometersHour:y,metersSecondToKnots:z,kilometersHourToMetersSecond:A,knotsToMetersSecond:B,kilometersHourToKnots:C,knotsToKilometersHour:D,getSegmentDistance:F,getRouteDistance:G,getCompassDirection:H,isInsidePolygon:I,getSegmentTripDuration:J,getRouteTripDuration:K,getSegmentTripSpeed:L,getRouteTripSpeed:M}});