Improved loadFromDatabase: added UTM transformation check and auto-zoom to data
Deploy TrassenPlaner / deploy (push) Waiting to run Details

This commit is contained in:
Johannes Baumeister 2026-04-15 22:27:01 +02:00
parent 5c2bbeed02
commit 1bed2abfa9
1 changed files with 52 additions and 20 deletions

View File

@ -2750,34 +2750,66 @@
if (isLoading) return;
isLoading = true;
try {
console.log("Loading data from PostGIS...");
console.log("Starte Daten-Abruf vom Server...");
// 1. Eigentümer / Flurstücke
const ownersRes = await fetch(`${API_BASE}/owners`);
state.owners = await ownersRes.json();
const usageRes = await fetch(`${API_BASE}/usage`);
state.usage = await usageRes.json();
const variantsRes = await fetch(`${API_BASE}/variants`);
const variants = await variantsRes.json();
if (variants && variants.length > 0) {
state.variants = variants;
if (ownersRes.ok) {
let geojson = await ownersRes.json();
// Transformation falls die DB UTM-Koordinaten liefert (z.B. > 1000)
if (geojson.features && geojson.features.length > 0) {
const firstCoord = geojson.features[0].geometry?.coordinates?.[0]?.[0]?.[0] || 0;
if (Math.abs(firstCoord) > 1000) {
console.log("Erkannte UTM-Koordinaten in DB, transformiere...");
geojson = transformGeoJSON(geojson, "EPSG:25832", "EPSG:4326");
}
}
state.owners = geojson;
updateOwnerLayer();
// Auto-Zoom auf die Daten beim ersten Laden
if (layers.owners.getBounds().isValid()) {
map.fitBounds(layers.owners.getBounds());
}
}
// 2. Varianten
const variantsRes = await fetch(`${API_BASE}/variants`);
if (variantsRes.ok) {
const variants = await variantsRes.json();
if (variants && variants.length > 0) {
// Merging logic to preserve existing objects but update routes
variants.forEach(sv => {
const local = state.variants.find(lv => lv.id === sv.id);
if (local) {
local.routes = sv.routes || [];
local.name = sv.name || local.name;
}
});
updateRouteLayers();
}
}
// 3. Nutzungen
const usageRes = await fetch(`${API_BASE}/usage`);
if (usageRes.ok) {
state.usage = await usageRes.json();
updateUsageLayer();
}
// 4. WEA
const weaRes = await fetch(`${API_BASE}/wea`);
state.wea = await weaRes.json();
updateWEALayer();
if (weaRes.ok) {
state.wea = await weaRes.json();
updateWEALayer();
}
const infraRes = await fetch(`${API_BASE}/infrastructure`);
state.infrastructure = await infraRes.json();
updateInfrastructureLayer();
initApp();
console.log("Data successfully loaded from PostGIS.");
console.log("Daten erfolgreich vom Server geladen.");
} catch (err) {
console.error("PostGIS Load failed:", err);
initApp(); // Fallback
console.error("Fehler beim Laden der Server-Daten:", err);
} finally {
isLoading = false;
renderVariants();
}
}
let isSaving = false;