feat: Artennachweise Restriktionen Abstand Layer integriert
Deploy Bürgerwind / deploy (push) Successful in 17s Details

This commit is contained in:
Johannes Baumeister 2026-05-29 09:20:27 +02:00
parent e129d890e6
commit a51a6addf9
2 changed files with 53 additions and 1 deletions

29
app.js
View File

@ -1153,7 +1153,34 @@ document.addEventListener('DOMContentLoaded', async () => {
console.warn("Artennachweis-Layer konnte nicht geladen werden."); console.warn("Artennachweis-Layer konnte nicht geladen werden.");
} }
statusEl.innerText = "Layer geladen (ALKIS DB & Artennachweis integriert)."; // Artennachweis Restriktionsabstände laden
console.log("Lade Artennachweise-Restriktionen aus Datenbank...");
const restriktionResp = await fetch('/api/layers/artennachweise_restriktionen').catch(err => {
console.error("Netzwerkfehler beim Laden der Restriktionsabstände:", err);
return null;
});
if (restriktionResp?.ok) {
const data = await restriktionResp.json();
console.log(`Restriktionsabstände API: ${data.features ? data.features.length : 0} Features erhalten.`);
if (data.features && data.features.length > 0) {
const restriktionLayer = L.geoJSON(data, {
style: {
color: "#000000",
weight: 1,
fillOpacity: 0,
fillColor: "transparent"
}
});
overlays["Artennachweis Restriktionen"] = restriktionLayer;
state.map.addLayer(restriktionLayer);
layerControl.addOverlay(restriktionLayer, "Artennachweis Restriktionen");
}
} else {
console.warn("Restriktionsabstände-Layer konnte nicht geladen werden.");
}
statusEl.innerText = "Layer geladen (ALKIS DB & Artennachweise integriert).";
} catch (e) { } catch (e) {
if (!isLocalFile) console.error("Layer-Init fehlgeschlagen:", e); if (!isLocalFile) console.error("Layer-Init fehlgeschlagen:", e);
} }

View File

@ -275,6 +275,31 @@ app.get('/api/layers/artennachweis', async (req, res) => {
} }
}); });
// NEU: API zum Laden der Artennachweis Restriktionsabstände
app.get('/api/layers/artennachweise_restriktionen', async (req, res) => {
log("Lade Artennachweise-Restriktionen aus Datenbank...");
try {
const result = await pool.query(
`SELECT jsonb_build_object(
'type', 'FeatureCollection',
'features', COALESCE(jsonb_agg(features.feature), '[]'::jsonb)
)
FROM (
SELECT jsonb_build_object(
'type', 'Feature',
'geometry', ST_AsGeoJSON(ST_Transform(geom, 4326))::jsonb,
'properties', jsonb_build_object()
) AS feature
FROM geodaten.artennachweise_restriktion_abstand
) features`
);
res.json(result.rows[0].jsonb_build_object);
} catch (err) {
log(`FEHLER beim Laden der Restriktionen: ${err.message}`);
res.status(500).json({ error: err.message });
}
});
// API für Projekt-Statistiken (Fortschrittsanzeige) // API für Projekt-Statistiken (Fortschrittsanzeige)
app.get('/api/stats/:projekt_id', async (req, res) => { app.get('/api/stats/:projekt_id', async (req, res) => {
const { projekt_id } = req.params; const { projekt_id } = req.params;