@flumens/utils 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/location.d.ts +11 -5
- package/dist/location.js +1 -1
- package/package.json +1 -1
package/dist/location.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Polygon, LineString } from 'geojson';
|
|
1
|
+
import { Polygon, LineString, MultiPolygon, Point } from 'geojson';
|
|
2
|
+
export type Position = [number, number];
|
|
2
3
|
export type Location = {
|
|
3
4
|
latitude: number;
|
|
4
5
|
longitude: number;
|
|
@@ -9,7 +10,7 @@ export type Location = {
|
|
|
9
10
|
altitudeAccuracy?: number;
|
|
10
11
|
shape?: LineString | Polygon;
|
|
11
12
|
geocoded?: {
|
|
12
|
-
center:
|
|
13
|
+
center: Position;
|
|
13
14
|
};
|
|
14
15
|
};
|
|
15
16
|
export declare const gridrefAccuracy: any;
|
|
@@ -69,10 +70,15 @@ type LatLng = {
|
|
|
69
70
|
*/
|
|
70
71
|
export declare const normalizeCoords: ({ lat, lng }: LatLng) => LatLng;
|
|
71
72
|
export declare const isValidLocation: (location?: Location | null) => boolean;
|
|
72
|
-
|
|
73
|
-
export declare function
|
|
73
|
+
export declare function coordsToMeters(latLon: Position): Position;
|
|
74
|
+
export declare function metersToCoords(XY: Position): Position;
|
|
75
|
+
export declare function getGeomMetersToLatLon(geometry: Point | LineString | Polygon | MultiPolygon): LineString | Polygon | Point | {
|
|
76
|
+
coordinates: Position[][][];
|
|
77
|
+
type: "MultiPolygon";
|
|
78
|
+
bbox?: import("geojson").BBox | undefined;
|
|
79
|
+
};
|
|
74
80
|
export declare function getGeomWKT(geometry: LineString | Polygon): string;
|
|
75
|
-
export declare function getGeomCenter(geometry: LineString | Polygon):
|
|
81
|
+
export declare function getGeomCenter(geometry: LineString | Polygon): Position;
|
|
76
82
|
/**
|
|
77
83
|
* Calculates the length of a linestring in meters.
|
|
78
84
|
*/
|
package/dist/location.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isValidLocation=exports.normalizeCoords=exports.gridrefAccuracy=void 0,exports.prettyPrintGridRef=n,exports.locationToGrid=i,exports.parseGrid=function(t){let e;const o=r.default.GridRefParser.factory(t);o&&(o.osRef.x+=o.length/2,o.osRef.y+=o.length/2,e=o.osRef);return e},exports.gridrefStringToLatLng=function(t){try{const e=r.default.GridRefParser.factory(t);return e?e.osRef.to_latLng():null}catch(t){console.error(t.message)}return null},exports.isValidGridRef=function(t){try{const e=r.default.GridRefParser.factory(t);return!(!e||!r.default.MappingUtils.is_gb_hectad(e.hectad))}catch(t){console.error(t.message)}return!1},exports.isInGB=function(t){if(t.latitude){const e=r.default.latlng_to_grid_coords(t.latitude,t.longitude);return!!e&&"GB"===e.country}return!1},exports.updateModelLocation=function(e,r){return t.__awaiter(this,arguments,void 0,(function*(t,e,r=!1){var o;if(null===(o=t.metadata)||void 0===o?void 0:o.deleted)return void console.warn("LocationUtils: skipping deleted model location set");const n=Object.assign({},e);n.latitude=parseFloat(parseFloat(`${n.latitude}`).toFixed(5)),n.longitude=parseFloat(parseFloat(`${n.longitude}`).toFixed(5)),(n.accuracy||Number.isFinite(n.accuracy))&&(n.accuracy=parseFloat(parseFloat(`${n.accuracy}`).toFixed(2))),(n.altitude||Number.isFinite(n.altitude))&&(n.altitude=parseFloat(parseFloat(`${n.altitude}`).toFixed(2))),(n.altitudeAccuracy||Number.isFinite(n.altitudeAccuracy))&&(n.altitudeAccuracy=parseFloat(parseFloat(`${n.altitudeAccuracy}`).toFixed(2))),n.source="gps",r||(n.gridref=i(n));const a=t.data.location,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isValidLocation=exports.normalizeCoords=exports.gridrefAccuracy=void 0,exports.prettyPrintGridRef=n,exports.locationToGrid=i,exports.parseGrid=function(t){let e;const o=r.default.GridRefParser.factory(t);o&&(o.osRef.x+=o.length/2,o.osRef.y+=o.length/2,e=o.osRef);return e},exports.gridrefStringToLatLng=function(t){try{const e=r.default.GridRefParser.factory(t);return e?e.osRef.to_latLng():null}catch(t){console.error(t.message)}return null},exports.isValidGridRef=function(t){try{const e=r.default.GridRefParser.factory(t);return!(!e||!r.default.MappingUtils.is_gb_hectad(e.hectad))}catch(t){console.error(t.message)}return!1},exports.isInGB=function(t){if(t.latitude){const e=r.default.latlng_to_grid_coords(t.latitude,t.longitude);return!!e&&"GB"===e.country}return!1},exports.updateModelLocation=function(e,r){return t.__awaiter(this,arguments,void 0,(function*(t,e,r=!1){var o;if(null===(o=t.metadata)||void 0===o?void 0:o.deleted)return void console.warn("LocationUtils: skipping deleted model location set");const n=Object.assign({},e);n.latitude=parseFloat(parseFloat(`${n.latitude}`).toFixed(5)),n.longitude=parseFloat(parseFloat(`${n.longitude}`).toFixed(5)),(n.accuracy||Number.isFinite(n.accuracy))&&(n.accuracy=parseFloat(parseFloat(`${n.accuracy}`).toFixed(2))),(n.altitude||Number.isFinite(n.altitude))&&(n.altitude=parseFloat(parseFloat(`${n.altitude}`).toFixed(2))),(n.altitudeAccuracy||Number.isFinite(n.altitudeAccuracy))&&(n.altitudeAccuracy=parseFloat(parseFloat(`${n.altitudeAccuracy}`).toFixed(2))),n.source="gps",r||(n.gridref=i(n));const a=t.data.location,s=Object.assign(Object.assign({},a),n);t.setGPSLocation?yield t.setGPSLocation(s):(t.data.location=s,yield t.save())}))},exports.prettyPrintLocation=function(t){if(!t||!t.latitude)return"";if(t.gridref)return n(t.gridref);const e=i(t);if(e)return n(e);return`${parseFloat(t.latitude).toFixed(4)}, ${parseFloat(t.longitude).toFixed(4)}`},exports.checkGridType=function(t,e){if(!e)return!1;const r=t.gridref||"";let{length:o}=exports.gridrefAccuracy[e];/^.\d/.test(r)&&(o-=1);return r.length===o},exports.doesExceedGridRef=a,exports.normalizeGridRefAcc=function t(e,r,o){if(o>=1e4)return null;if(a(e,r,o))return t(e,r,10*o);return e.to_gridref(o)},exports.getGridSquareCenter=function(t){const e=r.default.GridRefParser.factory(t);if(!e)return null;const o=e.osRef;return new e.NationalRef(o.x+e.length/2,o.y+e.length/2).to_latLng()},exports.coordsToMeters=s,exports.metersToCoords=c,exports.getGeomMetersToLatLon=function(t){if("Point"===t.type)return Object.assign(Object.assign({},t),{coordinates:c(t.coordinates)});if("LineString"===t.type)return Object.assign(Object.assign({},t),{coordinates:t.coordinates.map((t=>c(t)))});if("Polygon"===t.type)return Object.assign(Object.assign({},t),{coordinates:t.coordinates.map((t=>t.map((t=>c(t)))))});return Object.assign(Object.assign({},t),{coordinates:t.coordinates.map((t=>t.map((t=>t.map((t=>c(t)))))))})},exports.getGeomWKT=function(t){const r=JSON.parse(JSON.stringify(t));"Polygon"===r.type?r.coordinates[0]=r.coordinates[0].map(s):r.coordinates=r.coordinates.map(s);return e.default.stringify(r)},exports.getGeomCenter=function(t){const e=JSON.parse(JSON.stringify(t));if("Polygon"===e.type)return[e.coordinates[0][0][0],e.coordinates[0][0][1]];return[e.coordinates[0][0],e.coordinates[0][1]]},exports.calculateLineLength=function(t){function e(t,e,r,o){const n=(r-t)*Math.PI/180;e=e*Math.PI/180,o=o*Math.PI/180;const i=n*Math.cos((e+o)/2),a=o-e;return 6371e3*Math.sqrt(i*i+a*a)}if(t.length<2)return 0;let r=0;for(let o=1;o<t.length;o++)r+=e(t[o-1][0],t[o-1][1],t[o][0],t[o][1]);return r};const t=require("tslib"),e=t.__importDefault(require("wellknown")),r=t.__importDefault(require("@flumens/bigu")),o=require("@mapbox/sphericalmercator");function n(t){const[,e]=t.match(/^([A-Z]*)\d/i),r=t.replace(e,""),o=r.length;if(o%2)return`${e} ${r}`;return`${e} ${r.slice(0,o/2)} ${r.slice(o/2)}`}function i(t){const e=r.default.latlng_to_grid_coords(t.latitude,t.longitude);if(!e||!Number.isFinite(t.accuracy))return null;const o=r.default.GridRefParser.get_normalized_precision(2*t.accuracy);return e.to_gridref(o)}function a(t,e,r){const{accuracy:o}=e,{x:n}=t,{y:i}=t;return n%r-o<0||(n%r+o>r||(i%r-o<0||i%r+o>r))}exports.gridrefAccuracy={tetrad:{label:"Tetrad (2km square)",length:5},monad:{label:"Monad (1km square)",length:6}};exports.normalizeCoords=({lat:t,lng:e})=>e>180?{lat:t,lng:e-180-180}:e<-180?{lat:t,lng:180+(e+180)}:{lat:t,lng:e};function s(t){const e=new o.SphericalMercator;return(([t,r])=>e.forward([t,r]))(t)}function c(t){const e=new o.SphericalMercator;return(([t,r])=>e.inverse([t,r]))(t)}exports.isValidLocation=t=>Number.isFinite(null==t?void 0:t.latitude)&&Number.isFinite(null==t?void 0:t.longitude);
|