Add heatmaps to map (various data facets)

This commit is contained in:
D. Berge
2025-08-03 11:57:12 +02:00
parent 3366377ab0
commit c13aa23e2f

View File

@@ -52,7 +52,189 @@
<span>Raw data</span>
<label title="Show points"><v-icon small left class="mx-0">mdi-vector-point</v-icon> <input type="checkbox" value="seqrp" v-model="layerSelection"/></label>
<label title="Show lines"><v-icon small left class="mx-0">mdi-vector-line</v-icon> <input type="checkbox" value="seqrl" v-model="layerSelection"/></label>
<div>
<v-menu bottom offset-y class="mr-1 pb-1">
<template v-slot:activator="{ on, attrs }">
<v-icon small left class="mx-0" v-bind="attrs" v-on="on">mdi-dots-grid</v-icon>
</template>
<v-list nav dense>
<v-list-item @click="setHeatmapValue('total_error')">
<v-list-item-content>
<v-list-item-title>Δ<span style="text-decoration:overline;">ij</span> Total error</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('delta_i')">
<v-list-item-content>
<v-list-item-title>Δi Inline error</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('delta_j')">
<v-list-item-content>
<v-list-item-title>Δj Crossline error</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-content>
<v-menu bottom offset-y>
<template v-slot:activator="{ on, attrs }">
<v-list-item-title v-bind="attrs" v-on="on">
Gun data <v-icon small right>mdi-chevron-right</v-icon>
</v-list-item-title>
</template>
<v-list nav dense>
<v-list-item>
<v-list-item-content>
<v-menu bottom offset-y>
<template v-slot:activator="{ on, attrs }">
<v-list-item-title v-bind="attrs" v-on="on">
Pressure <v-icon small right>mdi-chevron-right</v-icon>
</v-list-item-title>
</template>
<v-list nav dense>
<v-list-item @click="setHeatmapValue('press_μ')">
<v-list-item-content>
<v-list-item-title>Mean (μ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('press_σ')">
<v-list-item-content>
<v-list-item-title>Standard deviation (σ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('press_R')">
<v-list-item-content>
<v-list-item-title>Range (R)</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-content>
<v-menu bottom offset-y>
<template v-slot:activator="{ on, attrs }">
<v-list-item-title v-bind="attrs" v-on="on">
Depths <v-icon small right>mdi-chevron-right</v-icon>
</v-list-item-title>
</template>
<v-list nav dense>
<v-list-item @click="setHeatmapValue('depth_μ')">
<v-list-item-content>
<v-list-item-title>Mean (μ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('depth_σ')">
<v-list-item-content>
<v-list-item-title>Standard deviation (σ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('depth_R')">
<v-list-item-content>
<v-list-item-title>Range (R)</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-content>
<v-menu bottom offset-y>
<template v-slot:activator="{ on, attrs }">
<v-list-item-title v-bind="attrs" v-on="on">
Deltas <v-icon small right>mdi-chevron-right</v-icon>
</v-list-item-title>
</template>
<v-list nav dense>
<v-list-item @click="setHeatmapValue('delta_μ')">
<v-list-item-content>
<v-list-item-title>Mean (μ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('delta_σ')">
<v-list-item-content>
<v-list-item-title>Standard deviation (σ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('delta_R')">
<v-list-item-content>
<v-list-item-title>Range (R)</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-content>
<v-menu bottom offset-y>
<template v-slot:activator="{ on, attrs }">
<v-list-item-title v-bind="attrs" v-on="on">
Delay <v-icon small right>mdi-chevron-right</v-icon>
</v-list-item-title>
</template>
<v-list nav dense>
<v-list-item @click="setHeatmapValue('delay_μ')">
<v-list-item-content>
<v-list-item-title>Mean (μ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('delay_σ')">
<v-list-item-content>
<v-list-item-title>Standard deviation (σ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('delay_R')">
<v-list-item-content>
<v-list-item-title>Range (R)</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-content>
<v-menu bottom offset-y>
<template v-slot:activator="{ on, attrs }">
<v-list-item-title v-bind="attrs" v-on="on">
Fill time <v-icon small right>mdi-chevron-right</v-icon>
</v-list-item-title>
</template>
<v-list nav dense>
<v-list-item @click="setHeatmapValue('fill_μ')">
<v-list-item-content>
<v-list-item-title>Mean (μ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('fill_σ')">
<v-list-item-content>
<v-list-item-title>Standard deviation (σ)</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item @click="setHeatmapValue('fill_R')">
<v-list-item-content>
<v-list-item-title>Range (R)</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
</v-list-item-content>
</v-list-item>
</v-list>
</v-menu>
<input type="checkbox" value="seqrh" v-model="layerSelection"/>
</div>
<!--
<label title="Show position error"><v-icon small left class="mx-0">mdi-dots-grid</v-icon> <input type="checkbox" value="seqrh" v-model="layerSelection"/></label>
-->
<span>Final data</span>
<label title="Show points"><v-icon small left class="mx-0">mdi-vector-point</v-icon> <input type="checkbox" value="seqfp" v-model="layerSelection"/></label>
@@ -365,6 +547,7 @@ export default {
maxPitch: 89
},
heatmapValue: "total_error",
crosshairsPosition: [],
searchText: "",
@@ -887,6 +1070,12 @@ export default {
}
},
setHeatmapValue (v) {
this.heatmapValue = v;
console.log("Switched heatmap to", v);
this.render();
},
checkWebGLSupport() {
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl2') || canvas.getContext('webgl');
@@ -967,7 +1156,7 @@ export default {
//this.layersAvailable.seqfp = this.rawSequencesPointsGunDataLayer;
this.layersAvailable.seqrh = this.rawSequencesIJErrorLayer;
this.layersAvailable.seqrh = this.heatmapLayer;
this.layersAvailable.crosshairs = (options = {}) => {
return new IconLayer({