Docs: Update benchmark results

This commit is contained in:
github-actions[bot]
2025-11-18 23:31:52 +00:00
parent 341252fec1
commit 5855cf8a6f
77 changed files with 972 additions and 1051 deletions

View File

@@ -1,14 +1,14 @@
const analyzeGPS = async (readings, boundary) => {
async function analyzeGPS(readings, boundary) {
const turf = await import('https://esm.sh/@turf/turf@7.1.0');
const validReadings = readings
.filter(r => turf.booleanPointInPolygon(turf.point(r.loc), boundary))
.sort((a, b) => a.ts - b.ts);
const valid = readings.filter(r =>
turf.booleanPointInPolygon(r.loc, boundary)
).sort((a, b) => a.ts - b.ts);
if (validReadings.length < 2) return 0;
if (valid.length < 2) return 0;
const lineString = turf.lineString(validReadings.map(r => r.loc));
const line = turf.lineString(valid.map(r => r.loc));
return Math.round(turf.length(lineString) * 100) / 100;
};
return Math.round(turf.length(line) * 100) / 100;
}
export default analyzeGPS;

View File

@@ -1,18 +1,18 @@
const analyzeGPS = async (readings, boundary) => {
const t = await import('https://cdn.jsdelivr.net/npm/@turf/turf');
const { booleanPointInPolygon, lineString, length } = await import('https://cdn.jsdelivr.net/npm/@turf/turf/+esm');
const sortedLocations = readings
.filter(r => t.booleanPointInPolygon(r.loc, boundary, { ignoreBoundary: true }))
const sortedCoords = readings
.filter(({ loc }) => booleanPointInPolygon(loc, boundary, { ignoreBoundary: true }))
.sort((a, b) => a.ts - b.ts)
.map(r => r.loc);
.map(({ loc }) => loc);
if (sortedLocations.length < 2) {
if (sortedCoords.length < 2) {
return 0;
}
const path = t.lineString(sortedLocations);
const length = t.length(path, { units: 'kilometers' });
const path = lineString(sortedCoords);
const dist = length(path, { units: 'kilometers' });
return Math.round(length * 100) / 100;
return Math.round(dist * 1e2) / 1e2;
};
export default analyzeGPS;

View File

@@ -0,0 +1,12 @@
const analyzeGPS = async (readings, boundary) => {
const turf = await import('https://cdn.jsdelivr.net/npm/@turf/turf/+esm');
const pts = readings
.filter(({ loc }) => turf.booleanPointInPolygon(turf.point(loc), boundary))
.sort((a, b) => a.ts - b.ts)
.map(r => r.loc);
return pts.length < 2 ? 0 :
+turf.length(turf.lineString(pts), { units: 'kilometers' }).toFixed(2);
};
export default analyzeGPS;

View File

@@ -1,13 +0,0 @@
const analyzeGPS = async (readings, boundary) => {
const { point, booleanPointInPolygon, lineString, length } = await import('https://esm.sh/@turf/turf');
const path = readings
.filter(({ loc }) => booleanPointInPolygon(point(loc), boundary, { ignoreBoundary: true }))
.sort((a, b) => a.ts - b.ts)
.map(({ loc }) => loc);
return path.length < 2
? 0
: +length(lineString(path), { units: 'kilometers' }).toFixed(2);
};
export default analyzeGPS;

View File

@@ -1,12 +1,11 @@
async function analyzeGPS(readings, boundary) {
try {
if (!Array.isArray(readings) || !boundary) return 0;
const turf = await import('https://cdn.skypack.dev/@turf/turf'),
v = readings.filter(r => r?.loc && turf.booleanPointInPolygon(r.loc, boundary, {ignoreBoundary: true}))
.sort((a, b) => a.ts - b.ts);
return v.length < 2 ? 0 : Math.round(turf.length(turf.lineString(v.map(r => r.loc)), {units: 'kilometers'}) * 100) / 100;
} catch {
return 0;
}
export async function analyzeGPS(readings, boundary) {
const { booleanPointInPolygon, lineString, length } = await import('https://cdn.skypack.dev/@turf/turf');
const pts = readings
.filter(r => booleanPointInPolygon(r.loc, boundary))
.sort((a, b) => a.ts - b.ts)
.map(r => r.loc);
return pts.length < 2 ? 0 : +length(lineString(pts)).toFixed(2);
}
export default analyzeGPS;

View File

@@ -1,8 +1,13 @@
async function analyzeGPS(readings,boundary){
const{booleanPointInPolygon,lineString,length}=await import('https://cdn.jsdelivr.net/npm/@turf/turf@6.5.0/dist/turf.esm.min.js');
const pts=readings.filter(r=>booleanPointInPolygon({type:'Point',coordinates:r.loc},boundary,{ignoreBoundary:true})).sort((a,b)=>a.ts-b.ts);
if(pts.length<2)return 0;
const km=length(lineString(pts.map(r=>r.loc)),{units:'kilometers'});
return Math.round(km*100)/100;
let turf$;
const useTurf = () => turf$ ??= import('https://cdn.skypack.dev/@turf/turf?min');
async function analyzeGPS(readings, boundary) {
const t = await useTurf();
const pts = readings
.filter(r => t.booleanPointInPolygon(t.point(r.loc), boundary))
.sort((a, b) => a.ts - b.ts);
if (pts.length < 2) return 0;
const km = t.length(t.lineString(pts.map(r => r.loc)), { units: 'kilometers' });
return Math.round(km * 100) / 100;
}
export default analyzeGPS;

View File

@@ -1,8 +1,8 @@
async function analyzeGPS(readings,boundary){
const{turf}=await import('https://cdn.skypack.dev/@turf/turf');
const{booleanPointInPolygon,lineString,length}=await import('https://cdn.skypack.dev/@turf/turf');
const valid=readings
.filter(({loc})=>turf.booleanPointInPolygon([loc[0],loc[1]],boundary,{ignoreBoundary:true}))
.filter(r=>booleanPointInPolygon({type:'Point',coordinates:r.loc},boundary,{ignoreBoundary:true}))
.sort((a,b)=>a.ts-b.ts);
return valid.length<2?0:+turf.length(turf.lineString(valid.map(({loc})=>loc)),{units:'kilometers'}).toFixed(2);
return valid.length<2?0:+length(lineString(valid.map(r=>r.loc)),{units:'kilometers'}).toFixed(2);
}
export default analyzeGPS;