diff --git a/index.html b/index.html
index b99b2ec..d54459b 100644
--- a/index.html
+++ b/index.html
@@ -2761,74 +2761,95 @@
try {
console.log("Starte Daten-Abruf vom Server...");
+ const isVal = (c) => Array.isArray(c) && c.length >= 2 && !isNaN(c[0]) && !isNaN(c[1]) && c[0] !== null && c[1] !== null;
const sanitize = (gj) => {
if (!gj || !gj.features) return { type: "FeatureCollection", features: [] };
return {
...gj,
- features: gj.features.filter(f => f && f.geometry && f.geometry.coordinates)
+ features: gj.features.filter(f => {
+ if (!f || !f.geometry || !f.geometry.coordinates) return false;
+ // Recursive coordinate check for simple structures
+ if (f.geometry.type === 'Point') return isVal(f.geometry.coordinates);
+ return true; // Polygons are harder to check deeply, but usually safer
+ })
};
};
- // 1. Eigentümer / Flurstücke
- const ownersRes = await fetch(`${API_BASE}/owners`);
- if (ownersRes.ok) {
- let geojson = sanitize(await ownersRes.json());
- // Transformation falls die DB UTM-Koordinaten liefert (z.B. > 1000)
- if (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");
+ // 1. Eigentümer
+ try {
+ const res = await fetch(`${API_BASE}/owners`);
+ if (res.ok) {
+ let gj = sanitize(await res.json());
+ if (gj.features.length > 0) {
+ // Check for UTM transform
+ const c = gj.features[0].geometry.coordinates;
+ const test = Array.isArray(c[0]) ? (Array.isArray(c[0][0]) ? c[0][0][0] : c[0][0]) : c[0];
+ if (Math.abs(test) > 1000) gj = transformGeoJSON(gj, "EPSG:25832", "EPSG:4326");
}
+ state.owners = gj;
+ updateOwnerLayer();
+ if (layers.owners.getBounds().isValid()) map.fitBounds(layers.owners.getBounds());
}
- state.owners = geojson;
- updateOwnerLayer();
-
- if (layers.owners.getBounds().isValid()) {
- map.fitBounds(layers.owners.getBounds());
- }
- }
+ } catch (e) { console.error("Owners load error:", e); }
// 2. Varianten
- const variantsRes = await fetch(`${API_BASE}/variants`);
- if (variantsRes.ok) {
- const variants = await variantsRes.json();
- if (variants && variants.length > 0) {
- 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;
- }
+ try {
+ const res = await fetch(`${API_BASE}/variants`);
+ if (res.ok) {
+ const v = await res.json();
+ v.forEach(sv => {
+ const l = state.variants.find(lv => lv.id === sv.id);
+ if (l) { l.routes = sv.routes || []; l.name = sv.name || l.name; }
});
updateRouteLayers();
}
- }
+ } catch (e) { console.error("Variants load error:", e); }
// 3. Nutzungen
- const usageRes = await fetch(`${API_BASE}/usage`);
- if (usageRes.ok) {
- state.usage = sanitize(await usageRes.json());
- updateUsageLayer();
- }
+ try {
+ const res = await fetch(`${API_BASE}/usage`);
+ if (res.ok) {
+ let gj = sanitize(await res.json());
+ // Transform usage if UTM
+ if (gj.features.length > 0) {
+ const c = gj.features[0].geometry.coordinates;
+ const test = Array.isArray(c[0]) ? (Array.isArray(c[0][0]) ? c[0][0][0] : c[0][0]) : c[0];
+ if (Math.abs(test) > 1000) gj = transformGeoJSON(gj, "EPSG:25832", "EPSG:4326");
+ }
+ state.usage = gj;
+ updateUsageLayer();
+ }
+ } catch (e) { console.error("Usage load error:", e); }
// 4. WEA
- const weaRes = await fetch(`${API_BASE}/wea`);
- if (weaRes.ok) {
- state.wea = sanitize(await weaRes.json());
- updateWEALayer();
- }
+ try {
+ const res = await fetch(`${API_BASE}/wea`);
+ if (res.ok) {
+ let gj = sanitize(await res.json());
+ if (gj.features.length > 0) {
+ if (Math.abs(gj.features[0].geometry.coordinates[0]) > 1000) gj = transformGeoJSON(gj, "EPSG:25832", "EPSG:4326");
+ }
+ state.wea = gj;
+ updateWEALayer();
+ }
+ } catch (e) { console.error("WEA load error:", e); }
- // 5. Infratruktur
- const infraRes = await fetch(`${API_BASE}/infrastructure`);
- if (infraRes.ok) {
- state.infrastructure = sanitize(await infraRes.json());
- updateInfrastructureLayer();
- }
+ // 5. Infrastruktur
+ try {
+ const res = await fetch(`${API_BASE}/infrastructure`);
+ if (res.ok) {
+ let gj = sanitize(await res.json());
+ if (gj.features.length > 0) {
+ if (Math.abs(gj.features[0].geometry.coordinates[0]) > 1000) gj = transformGeoJSON(gj, "EPSG:25832", "EPSG:4326");
+ }
+ state.infrastructure = gj;
+ updateInfrastructureLayer();
+ }
+ } catch (e) { console.error("Infra load error:", e); }
- console.log("Daten erfolgreich vom Server geladen.");
+ console.log("Daten-Ladevorgang abgeschlossen.");
} catch (err) {
- console.error("Fehler beim Laden der Server-Daten:", err);
+ console.error("Kritischer Fehler beim Laden der Datenbank:", err);
} finally {
isLoading = false;
renderVariants();