@geoblocks/edittrack
Advanced tools
Comparing version 1.3.5 to 1.3.6
@@ -1,3 +0,7 @@ | ||
import { distance } from 'ol/coordinate.js'; | ||
import { getDistance } from 'ol/sphere'; | ||
export default class ExtractFromSegment { | ||
projection; | ||
constructor(options) { | ||
this.projection = options.projection; | ||
} | ||
computeProfile(segment) { | ||
@@ -13,8 +17,10 @@ return new Promise((resolve, reject) => { | ||
let accDistance = 0; | ||
const geometry_4326 = geometry | ||
.clone() | ||
.transform(this.projection, 'EPSG:4326'); | ||
const coordinates = geometry.getCoordinates(); | ||
const coordinates_4326 = geometry_4326.getCoordinates(); | ||
for (let i = 0, ii = coordinates.length; i < ii; i++) { | ||
const coos = coordinates[i]; | ||
// FIXME: this only works with projections in meters | ||
// and preserving the distances (thus not with mercator) | ||
const m = i === 0 ? 0 : distance(coordinates[i - 1], coos); | ||
const m = i === 0 ? 0 : getDistance(coordinates_4326[i - 1], coordinates_4326[i]); | ||
accDistance += m; | ||
@@ -32,2 +38,2 @@ profile.push([coos[0], coos[1], coos[2], accDistance]); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0cmFjdEZyb21TZWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2ZpbGVyL0V4dHJhY3RGcm9tU2VnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFLMUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBa0I7SUFFckMsY0FBYyxDQUFDLE9BQTRCO1FBRXpDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDbEQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUMxQyxNQUFNLE9BQU8sR0FBZSxFQUFFLENBQUM7Z0JBQy9CLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM5QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3JELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUIsb0RBQW9EO29CQUNwRCx3REFBd0Q7b0JBQ3hELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzNELFdBQVcsSUFBSSxDQUFDLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0cmFjdEZyb21TZWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2ZpbGVyL0V4dHJhY3RGcm9tU2VnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBU3hDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0JBQWtCO0lBRTdCLFVBQVUsQ0FBaUI7SUFFbkMsWUFBWSxPQUEwQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWMsQ0FDWixPQUE0QjtRQUU1QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxPQUFPLEdBQWUsRUFBRSxDQUFDO2dCQUMvQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sYUFBYSxHQUFHLFFBQVE7cUJBQzNCLEtBQUssRUFBRTtxQkFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFFM0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFFeEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNyRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRixXQUFXLElBQUksQ0FBQyxDQUFDO29CQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDekQsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEMsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ== |
import type Feature from 'ol/Feature.js'; | ||
import type LineString from 'ol/geom/LineString.js'; | ||
import { ProjectionLike } from 'ol/proj'; | ||
import type { Profiler } from './index'; | ||
type ExtractFromSegmentProfilerOptions = { | ||
projection: ProjectionLike; | ||
}; | ||
export default class ExtractFromSegment implements Profiler { | ||
private projection; | ||
constructor(options: ExtractFromSegmentProfilerOptions); | ||
computeProfile(segment: Feature<LineString>): Promise<void>; | ||
} | ||
export {}; | ||
//# sourceMappingURL=ExtractFromSegment.d.ts.map |
{ | ||
"name": "@geoblocks/edittrack", | ||
"version": "1.3.5", | ||
"version": "1.3.6", | ||
"description": "Geoblocks edittrack", | ||
@@ -53,4 +53,4 @@ "scripts": { | ||
"tsconfig-paths": "4.2.0", | ||
"typedoc": "0.25.11", | ||
"typescript": "5.3.3" | ||
"typedoc": "0.25.12", | ||
"typescript": "5.4.2" | ||
}, | ||
@@ -57,0 +57,0 @@ "peerDependencies": { |
@@ -1,10 +0,21 @@ | ||
import {distance} from 'ol/coordinate.js'; | ||
import { getDistance } from 'ol/sphere'; | ||
import type Feature from 'ol/Feature.js'; | ||
import type LineString from 'ol/geom/LineString.js'; | ||
import type {Profiler} from './index'; | ||
import { ProjectionLike } from 'ol/proj'; | ||
import type { Profiler } from './index'; | ||
type ExtractFromSegmentProfilerOptions = { | ||
projection: ProjectionLike; | ||
}; | ||
export default class ExtractFromSegment implements Profiler { | ||
computeProfile(segment: Feature<LineString>): Promise<void> { | ||
private projection: ProjectionLike; | ||
constructor(options: ExtractFromSegmentProfilerOptions) { | ||
this.projection = options.projection; | ||
} | ||
computeProfile( | ||
segment: Feature<LineString>, | ||
): Promise<void> { | ||
return new Promise((resolve, reject) => { | ||
@@ -18,8 +29,12 @@ const geometry = segment.getGeometry(); | ||
let accDistance = 0; | ||
const geometry_4326 = geometry | ||
.clone() | ||
.transform(this.projection, 'EPSG:4326'); | ||
const coordinates = geometry.getCoordinates(); | ||
const coordinates_4326 = geometry_4326.getCoordinates(); | ||
for (let i = 0, ii = coordinates.length; i < ii; i++) { | ||
const coos = coordinates[i]; | ||
// FIXME: this only works with projections in meters | ||
// and preserving the distances (thus not with mercator) | ||
const m = i === 0 ? 0 : distance(coordinates[i - 1], coos); | ||
const m = i === 0 ? 0 : getDistance(coordinates_4326[i - 1], coordinates_4326[i]); | ||
accDistance += m; | ||
@@ -26,0 +41,0 @@ profile.push([coos[0], coos[1], coos[2], accDistance]); |
Sorry, the diff of this file is not supported yet
250609
3852