correct elevation for summit logs

This commit is contained in:
Christian Beutel
2025-08-20 13:34:55 +02:00
parent e3916e371a
commit 097ecd409d
6 changed files with 19 additions and 14 deletions

View File

@@ -90,9 +90,13 @@
return;
}
const gpxObject = GPX.parse(trailData);
const totals = gpxObject.features;
try {
await gpxObject.correctElevation();
} catch (e) {
console.warn("Unable to correct elevation: " + e);
}
const totals = gpxObject.features;
$data.duration = totals.duration / 1000;
$data.elevation_gain = totals.elevationGain;
$data.elevation_loss = totals.elevationLoss;

View File

@@ -58,7 +58,7 @@
};
}
trail = gpx2trail(log.expand.gpx_data!).trail;
trail = (await gpx2trail(log.expand.gpx_data!)).trail;
trail.id = log.id;
trail.expand!.gpx_data = log.expand.gpx_data;

View File

@@ -10,9 +10,7 @@ import geohash from "ngeohash"
import { encodePolyline } from '$lib/util/polyline_util';
import { APIError } from '$lib/util/api_util';
import type { ValhallaHeightResponse } from '../valhalla';
import { bbox, splitMultiLineStringToLineStrings } from '$lib/util/geojson_util';
import { browser } from '$app/environment';
import xmldom from 'xmldom';
import { bbox } from '$lib/util/geojson_util';
const defaultAttributes = {
version: '1.1',

View File

@@ -18,18 +18,21 @@ import { handleFromRecordWithIRI } from "./activitypub_util";
import { Waypoint } from "$lib/models/waypoint";
export function gpx2trail(gpxString: string, fallbackName?: string, f: (url: RequestInfo | URL, config?: RequestInit) => Promise<Response> = fetch) {
export async function gpx2trail(gpxString: string, fallbackName?: string, correctElevation: boolean = false, f: (url: RequestInfo | URL, config?: RequestInit) => Promise<Response> = fetch) {
const gpx = GPX.parse(gpxString);
if (gpx instanceof Error) {
throw gpx;
}
// try {
// await gpx.correctElevation(f)
// } catch(e) {
// console.warn("Unable to correct elevation: " + e)
// }
if (correctElevation) {
try {
await gpx.correctElevation(f)
} catch (e) {
console.warn("Unable to correct elevation: " + e)
}
}
const trail = new Trail("");

View File

@@ -21,7 +21,7 @@ export async function PUT(event: RequestEvent) {
}
let parseResult: { trail: Trail, gpx: GPX };
try {
parseResult = gpx2trail(gpxData, data.get("name") as string | undefined, event.fetch);
parseResult = await gpx2trail(gpxData, data.get("name") as string | undefined, true, event.fetch);
} catch (e: any) {
console.error(e)
throw new ClientResponseError({ status: 400, response: { message: "Invalid file" } })

View File

@@ -319,7 +319,7 @@
try {
const prevId = $formData.id;
const parseResult = gpx2trail(gpxData, selectedFile.name);
const parseResult = await gpx2trail(gpxData, selectedFile.name);
setFields(parseResult.trail);
$formData.id = prevId ?? cryptoRandomString({ length: 15 });
$formData.expand!.gpx_data = gpxData;