diff --git a/components/LineChart.vue b/components/LineChart.vue new file mode 100644 index 0000000..c42cf48 --- /dev/null +++ b/components/LineChart.vue @@ -0,0 +1,105 @@ + + + diff --git a/components/LoadingSpinner.vue b/components/LoadingSpinner.vue new file mode 100644 index 0000000..b786162 --- /dev/null +++ b/components/LoadingSpinner.vue @@ -0,0 +1,29 @@ + + + diff --git a/components/MyLeafletMap.vue b/components/MyLeafletMap.vue index 8d99fca..bb21bba 100644 --- a/components/MyLeafletMap.vue +++ b/components/MyLeafletMap.vue @@ -3,276 +3,224 @@ diff --git a/components/PopupInfo.vue b/components/PopupInfo.vue new file mode 100644 index 0000000..ba8e234 --- /dev/null +++ b/components/PopupInfo.vue @@ -0,0 +1,29 @@ + + + diff --git a/components/Slider.vue b/components/Slider.vue new file mode 100644 index 0000000..6e65345 --- /dev/null +++ b/components/Slider.vue @@ -0,0 +1,58 @@ + + + diff --git a/composables/useFetchOpenData.ts b/composables/useFetchOpenData.ts deleted file mode 100644 index fac6911..0000000 --- a/composables/useFetchOpenData.ts +++ /dev/null @@ -1,440 +0,0 @@ -import proj4 from 'proj4'; - -proj4.defs('EPSG:25832', '+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs'); -const fromProjection = 'EPSG:25832'; -const toProjection = 'WGS84'; - -type bathingEntry = Record; -type classificationEntry = Record; -type measurementEntry = Record; -type seasonalEntry = Record; -type infrastructureEntry = Record; -export interface MergedData { - bathing: bathingEntry - classification: classificationEntry | null - measurements: measurementEntry | null - seasonal: seasonalEntry | null - infrastructure: infrastructureEntry | null -} - -const headerMap = { - bathing: [ - 'BADEGEWAESSERID', - 'BADEGEWAESSERNAME', - 'KURZNAME', - 'ALLGEMEIN_GEBRAEUCHL_NAME', - 'GEWAESSERKATEGORIE', - 'KUESTENGEWAESSER', - 'BADEGEWAESSERTYP', - 'WEITEREBESCHREIBUNG', - 'BADESTELLENLAENGE', - 'EUANMELDUNG', - 'EUABMELDUNG', - 'FLUSSGEBIETSEINHEITID', - 'FLUSSGEBIETSEINHEITNAME', - 'WASSERKOERPERID', - 'WASSERKOERPERNAME', - 'NATWASSERKOERPERID', - 'NATWASSERKOERPERNAME', - 'SCHLUESSELWOERTER', - 'KREISNR', - 'KREIS', - 'GEMEINDENR', - 'GEMEINDE', - 'UTM_OST', - 'UTM_NORD', - 'GEOGR_LAENGE', - 'GEOGR_BREITE', - 'BADESTELLENINFORMATION', - 'AUSWIRKUNGEN_AUF_BADEGEWAESSER', - 'MOEGLICHEBELASTUNGEN', - ], - classification: [ - 'BADEGEWAESSERID', - 'BEURTEILUNGSZEITRAUM_VON', - 'BEURTEILUNGSZEITRAUM_BIS', - 'EINSTUFUNG_ODER_VORABBEWERTUNG', - ], - measurement: [ - 'BADEGEWAESSERID', - 'MESSSTELLENNAME', - 'MESSSTELLENID', - 'UEBERWACHUNGSARTID', - 'UEBERWASCHUNGSARTTEXT', - 'GEWAESSERKATEGORIE', - 'KUESTENGEWAESSER', - 'PROBEID', - 'DATUMMESSUNG', - 'PROBENART', - 'ECOLI', - 'INTEST_ENTEROKOKKEN', - 'WASSERTEMP', - 'LUFTTEMP', - 'SICHTTIEFE', - 'BEMERKUNG', - ], - seasonal: [ - 'BADEGEWAESSERID', - 'SAISONBEGINN', - 'SAISONENDE', - 'GESCHLOSSEN', - ], - infrastructure: [ - 'BADEGEWAESSERID', - 'INFRASTRUKTURID', - 'INFRASTRUKTUR', - ], -}; - -const dataUrls = { - bathing: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=badegewasser-stammdaten-', - classification: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=badegewasser-einstufung', - measurement: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=badegewasser-messungen', - seasonal: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=badegewasser-saisondauer', - infrastructure: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=badegewasser-infrastruktur-aktuell', - busStops: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=bushaltestelle', - lake: 'https://opendata.schleswig-holstein.de/api/action/package_show?id=see-wasserkorper', -}; - -const lakeNames = [ - 'hemmelsdorfer', - 'hemmelmarker', - 'kellersee', - 'postsee', - 'Arenholzer', - 'Barkauer', - 'Behlendorfer', - 'Behler', - 'Belauer', - 'Bistensee', - 'Bordesholmer', - 'Bornhöveder', - 'Bottschloter', - 'Brahmsee', - 'Dieksee', - 'Dobersdorfer', - 'Drüsensee', - 'Einfelder', - 'Großensee', - 'Plöner', - 'Pönitzer', - 'Ratzeburger', - 'Segeberger', - 'Gudower', - 'Hohner', - 'Süderfahrenstedt', - 'Mözener', - 'Neustadt', - 'Neversdorfer', - 'Passader', - 'Rantumdammsiel', - 'Schluensee', - 'Schöhsee', - 'Schwansener', - 'Seedorfer', - 'Sibbersdorfer', - 'Stendorfer', - 'Stocksee', - 'Stolper', - 'Südensee', - 'Süseler', - 'Suhrer', - 'Trammer', - 'Tresdorfer', - 'Vierer', - 'Westensee', - 'Windebyer', - 'Wittensee', - 'Meldorf-Kronenloch', -]; - -export interface LakeDepth { - Zeit: string - wasserstand: string - wasserstand_status: string -} - -const lakeUrls = [ - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-hemmelsdorfer-see-hemmelsdorfer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-hemmelmarker-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-kellersee-kellersee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-postsee-postsee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-arenholzer-see-arenholzer-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-barkauer-see-barkauer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-behlendorfer-see-behlendorfer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-behler-see-behler-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-belauer-see-belauer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-bistensee-bistensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-bordesholmer-see-bordesholmer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-bornhoveder-see-bornhoveder-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-bottschlotter-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-brahmsee', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-dieksee-dieksee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-dobersdorfer-see-dobersdorfer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-drusensee-drusensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-einfelder-see-einfelder-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-grossensee-grossensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-kl-ploner-see-kl-ploner-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-kl-ponitzer-see-kl-ponitzer-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-ratzeburger-see-ratzeburger-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-gr-segeberger-see-segeberger-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-gudower-see-gudower-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-hohner-see-hohner-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-langsee-suderfahrenstedt-langsee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-mozener-see-mozener-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-neustadter-binnenwasser1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-neversdorfer-see-neversdorfer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-passader-see-passader-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-rantumdammsiel-rantumbecken1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-schluensee-schluensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-schohsee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-schwansener-see-fp-schopfwerk1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-seedorfer-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-sibbersdorfer-see-sibbersdorfer-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-stendorfer-see-stendorfer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-stocksee-stocksee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-stolper-see-stolper-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-sudensee-sudensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-suseler-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-suhrer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-trammer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-tresdorfer-see1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-vierer-see', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-westensee-westensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-windebyer-noor1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-wittensee-wittensee1', - 'https://opendata.schleswig-holstein.de/api/action/package_show?id=wasserstand-pegel-meldorf-kronenloch', -]; - -async function getUrl(apiUrl: string, type: string): Promise { - const response = await fetch(apiUrl); - const data = await response.json(); - let rawUrl = ''; - if (data.success) { - if (type === 'csv') { - rawUrl = data.result.resources.find( - (res: any) => res.format === 'CSV' || res.mimetype === 'text/csv', - )?.url; - } - else if (type === 'json') { - rawUrl = data.result.resources.find( - (res: any) => res.format === 'GeoJSON' || res.mimetype === 'json', - )?.url; - } - else if (type === 'shp') { - rawUrl = data.result.resources.find( - (res: any) => res.format === 'SHP' || res.mimetype === 'application/zip', - )?.url; - } - else { - console.error('unsupported file type'); - } - if (rawUrl) { - return rawUrl.replace(/^http:/, 'https:'); - } - } - console.error('Failed to get URL:', data.error); - throw new Error(`Failed to load Meta Information from ${apiUrl}`); -} -async function fetchAndParseCSV(csvUrl: string, headers?: string[]): Promise { - const proxyUrl = `/api/proxy-csv?url=${encodeURIComponent(csvUrl)}`; - const response = await fetch(proxyUrl); - const arrayBuffer = await response.arrayBuffer(); - const decoder = new TextDecoder('iso-8859-1'); - const csvText = decoder.decode(arrayBuffer); - - const rows = csvText.trim().split('\n'); - if (headers) { - return rows.map((line) => { - const values = line.split('|').map(v => v.replace(/^"|"$/g, '').trim()); - const entry: Record = {}; - headers.forEach((key, i) => { - entry[key] = values[i] ?? ''; - }); - return entry as D; - }); - } - else { - const headerLine = rows.shift(); - if (!headerLine) - return []; - - const detectedHeaders = headerLine.split(';').map(v => v.replace(/^"|"$/g, '').trim()); - - return rows.map((line) => { - const values = line.split(';').map(v => v.replace(/^"|"$/g, '').trim()); - const entry: Record = {}; - detectedHeaders.forEach((key, i) => { - entry[key] = values[i] ?? ''; - }); - return entry as D; - }); - } -} -async function fetchAndParseGeoJson(geoJsonUrl: string): Promise> { - const proxyUrl = `/api/proxy-csv?url=${encodeURIComponent(geoJsonUrl)}`; - const response = await fetch(proxyUrl).then(res => res.json()); - if (geoJsonUrl.toLowerCase().endsWith('.zip')) { - return response as GeoJSON.FeatureCollection; - } - const reprojectedCoordinatesData = reprojectGeoJSON(response); - return reprojectedCoordinatesData; -} - -function reprojectGeoJSON(geojson: GeoJSON.FeatureCollection): GeoJSON.FeatureCollection { - return { - ...geojson, - features: geojson.features.map((feature) => { - if (feature.geometry.type !== 'Point') { - return feature; - } - const [x, y] = feature.geometry.coordinates; - const [lon, lat] = proj4(fromProjection, toProjection, [x, y]); - - let newBbox = feature.bbox; - if (feature.bbox && feature.bbox.length === 4) { - const [minX, minY, maxX, maxY] = feature.bbox; - const [minLon, minLat] = proj4(fromProjection, toProjection, [minX, minY]); - const [maxLon, maxLat] = proj4(fromProjection, toProjection, [maxX, maxY]); - newBbox = [minLon, minLat, maxLon, maxLat]; - } - - return { - ...feature, - geometry: { - ...feature.geometry, - coordinates: [lon, lat], - }, - bbox: newBbox, - }; - }), - }; -} - -export async function fetchBathData(selectedDate: string): Promise { - try { - dataUrls.bathing = `https://opendata.schleswig-holstein.de/api/action/package_show?id=badegewasser-stammdaten-${selectedDate}`; - const [bathingCsvUrl, classificationCsvUrl, measurementCsvUrl, seasonalCsvUrl, infrastructureCsvUrl] = await Promise.all([ - getUrl(dataUrls.bathing, 'csv'), - getUrl(dataUrls.classification, 'csv'), - getUrl(dataUrls.measurement, 'csv'), - getUrl(dataUrls.seasonal, 'csv'), - getUrl(dataUrls.infrastructure, 'csv'), - ]); - - const [bathingData, classificationData, measurementData, seasonalData, infrastructureData] = await Promise.all([ - fetchAndParseCSV(bathingCsvUrl, headerMap.bathing), - fetchAndParseCSV(classificationCsvUrl, headerMap.classification), - fetchAndParseCSV(measurementCsvUrl, headerMap.measurement), - fetchAndParseCSV(seasonalCsvUrl, headerMap.seasonal), - fetchAndParseCSV(infrastructureCsvUrl, headerMap.infrastructure), - ]); - - const classificationMap = new Map(); - classificationData.forEach((row) => { - if (row.EINSTUFUNG_ODER_VORABBEWERTUNG === '---') { - row.EINSTUFUNG_ODER_VORABBEWERTUNG = 'ohne Bewertung'; - } - classificationMap.set(row.BADEGEWAESSERID, row as classificationEntry); - }); - - const measurementMap = new Map(); - measurementData.forEach((row) => { - const id = row.BADEGEWAESSERID; - const currentDate = new Date(row.DATUMMESSUNG); - if (!measurementMap.has(id)) { - measurementMap.set(id, row); - } - else { - const existingEntry = measurementMap.get(id)!; - const existingDate = new Date(existingEntry.DATUM); - if (currentDate > existingDate) { - measurementMap.set(id, row); - } - } - }); - - const seasonalMap = new Map(); - seasonalData.forEach(row => seasonalMap.set(row.BADEGEWAESSERID, row as seasonalEntry)); - - const infrastructureMap = new Map(); - infrastructureData.forEach(row => infrastructureMap.set(row.BADEGEWAESSERID, row as infrastructureEntry)); - - // Merge data - const merged: MergedData[] = bathingData.map((bathingRow) => { - const id = bathingRow.BADEGEWAESSERID; - return { - bathing: bathingRow, - classification: classificationMap.get(id) || null, - measurements: measurementMap.get(id) || null, - seasonal: seasonalMap.get(id) || null, - infrastructure: infrastructureMap.get(id) || null, - }; - }); - return merged; - } - catch (err) { - console.error('Failed to fetch and merge:', err); - return []; - } -} - -export async function fetchBusStopData(): Promise[]> { - try { - const [busStopGeoJsonUrl] = await Promise.all([ - getUrl(dataUrls.busStops, 'json'), - ]); - - if (!busStopGeoJsonUrl) - throw new Error('Missing GEOJson URL'); - - const [busStopData] = await Promise.all([ - fetchAndParseGeoJson(busStopGeoJsonUrl), - ]); - return busStopData.features; - } - catch (err) { - console.error('Failed to fetch:', err); - return []; - } -} - -export async function fetchLakesData(): Promise[]> { - try { - const lakeWaterShpUrl = await getUrl(dataUrls.lake, 'shp'); - if (!lakeWaterShpUrl) - throw new Error('Missing SHP URL'); - - const csvUrls = await Promise.all( - lakeUrls.map(url => getUrl(url, 'csv')), - ); - - const lakeData = await fetchAndParseGeoJson(lakeWaterShpUrl); - - const lakeCsvData = await Promise.all( - csvUrls.map(url => fetchAndParseCSV(url)), - ); - - // Merge data - const merged = lakeData.features.map((feature) => { - const wkName = feature.properties.WK_NAME.toLowerCase(); - - const matchingIndex = lakeNames.findIndex(lakeName => - wkName.includes(lakeName.toLowerCase()), - ); - - return { - ...feature, - properties: { - ...feature.properties, - lakeDepth: matchingIndex !== -1 ? lakeCsvData[matchingIndex] : [], - }, - }; - }); - return merged; - } - catch (err) { - console.error('Failed to fetch and merge:', err); - return []; - } -} diff --git a/composables/useSliderDates.ts b/composables/useSliderDates.ts new file mode 100644 index 0000000..b6f1660 --- /dev/null +++ b/composables/useSliderDates.ts @@ -0,0 +1,33 @@ +const yearColors = ['#3B82F6', '#10B981', '#8B5CF6', '#F59E0B', '#EF4444']; + +export function getDatesGroups(fetchedData: any) { + const groupedDates = computed(() => { + const yearGroups = new Map(); + fetchedData.forEach((date: any) => { + const year = date.date.slice(0, 4); + if (!yearGroups.has(year)) { + yearGroups.set(year, []); + } + yearGroups.get(year)!.push(date.date); + }); + const total = fetchedData.length; + let offset = 0; + return Array.from(yearGroups.entries()).map(([year, dates], i) => { + const width = (dates.length / total) * 100; + const group = { + year, + width: width.toFixed(2), + offset: offset.toFixed(2), + color: yearColors[i % yearColors.length], + }; + offset += width; + return group; + }); + }); + return groupedDates; +} + +export function getDateOptions(fetchedData: any) { + const options = fetchedData.map((o: any) => o.date); + return options; +} diff --git a/data/bathingWaterInputLayer.json b/data/bathingWaterInputLayer.json new file mode 100644 index 0000000..9d1bd69 --- /dev/null +++ b/data/bathingWaterInputLayer.json @@ -0,0 +1,108 @@ +{ + "datasets": [ + { + "host": "opendata.schleswig-holstein.de", + "id": "badegewasser-stammdaten", + "resource_id": "d4534d43-e378-40c8-9466-5bf1bff76794", + "title": "Badegewässer Stammdaten", + "headers": [ + "BADEGEWAESSERID", + "BADEGEWAESSERNAME", + "KURZNAME", + "ALLGEMEIN_GEBRAEUCHL_NAME", + "GEWAESSERKATEGORIE", + "KUESTENGEWAESSER", + "BADEGEWAESSERTYP", + "WEITEREBESCHREIBUNG", + "BADESTELLENLAENGE", + "EUANMELDUNG", + "EUABMELDUNG", + "FLUSSGEBIETSEINHEITID", + "FLUSSGEBIETSEINHEITNAME", + "WASSERKOERPERID", + "WASSERKOERPERNAME", + "NATWASSERKOERPERID", + "NATWASSERKOERPERNAME", + "SCHLUESSELWOERTER", + "KREISNR", + "KREIS", + "GEMEINDENR", + "GEMEINDE", + "UTM_OST", + "UTM_NORD", + "GEOGR_LAENGE", + "GEOGR_BREITE", + "BADESTELLENINFORMATION", + "AUSWIRKUNGEN_AUF_BADEGEWAESSER", + "MOEGLICHEBELASTUNGEN" + ] + }, + { + "host": "opendata.schleswig-holstein.de", + "id": "badegewasser-einstufung", + "resource_id": "bd51a0a3-ffb2-41a3-aa6c-a15df0cb64bd", + "title": "Badegewässer Einstufung", + "headers": [ + "BADEGEWAESSERID", + "BEURTEILUNGSZEITRAUM_VON", + "BEURTEILUNGSZEITRAUM_BIS", + "EINSTUFUNG_ODER_VORABBEWERTUNG" + ] + }, + { + "host": "opendata.schleswig-holstein.de", + "id": "badegewasser-messungen", + "resource_id": "a5fca440-849b-404d-a39e-fb87c48c692e", + "title": "Badegewässer Messungen", + "headers": [ + "BADEGEWAESSERID", + "MESSSTELLENNAME", + "MESSSTELLENID", + "UEBERWACHUNGSARTID", + "UEBERWASCHUNGSARTTEXT", + "GEWAESSERKATEGORIE", + "KUESTENGEWAESSER", + "PROBEID", + "DATUMMESSUNG", + "PROBENART", + "ECOLI", + "INTEST_ENTEROKOKKEN", + "WASSERTEMP", + "LUFTTEMP", + "SICHTTIEFE", + "BEMERKUNG" + ] + }, + { + "host": "opendata.schleswig-holstein.de", + "id": "badegewasser-saisondauer", + "resource_id": "a8a8ba9b-541b-4e14-b44c-eb771c61a2cf", + "title": "Badegewässer Saisondauer", + "headers": [ + "BADEGEWAESSERID", + "SAISONBEGINN", + "SAISONENDE", + "GESCHLOSSEN" + ] + }, + { + "host": "opendata.schleswig-holstein.de", + "id": "badegewasser-infrastruktur-aktuell", + "resource_id": "097e0aa7-c867-4897-a7d5-80332f5dfc76", + "title": "Badegewässer Infrastruktur", + "headers": [ + "BADEGEWAESSERID", + "INFRASTRUKTURID", + "INFRASTRUKTUR" + ] + } + ], + "mappings": [ + { "source_db_id": "badegewasser-stammdaten", "source_db_field": "BADEGEWAESSERID", "condition": "=", "target_db_id": "badegewasser-einstufung", "target_db_field": "BADEGEWAESSERID" }, + { "source_db_id": "badegewasser-stammdaten", "source_db_field": "BADEGEWAESSERID", "condition": "=", "target_db_id": "badegewasser-messungen", "target_db_field": "BADEGEWAESSERID" }, + { "source_db_id": "badegewasser-stammdaten", "source_db_field": "BADEGEWAESSERID", "condition": "=", "target_db_id": "badegewasser-saisondauer", "target_db_field": "BADEGEWAESSERID" }, + { "source_db_id": "badegewasser-stammdaten", "source_db_field": "BADEGEWAESSERID", "condition": "=", "target_db_id": "badegewasser-infrastruktur-aktuell", "target_db_field": "BADEGEWAESSERID" } + ], + "options": + { "label_option": "EINSTUFUNG_ODER_VORABBEWERTUNG", "legend_option": "default" } +} diff --git a/data/lakesInputLayer.json b/data/lakesInputLayer.json new file mode 100644 index 0000000..8d9e3d7 --- /dev/null +++ b/data/lakesInputLayer.json @@ -0,0 +1,105 @@ +{ + "datasets": [ + { "host": "opendata.schleswig-holstein.de", "id": "see-wasserkorper", "resource_id": "a0f4d2d4-5768-4b03-b92c-875cd349a775", "title": "See-Wasserkörper" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-hemmelsdorfer-see-hemmelsdorfer-see1", "resource_id": "304586f1-c51f-49e0-ba2a-ef449824d6e6", "title": "Wasserstand Pegel Hemmelsdorfer See - Hemmelsdorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-hemmelmarker-see", "resource_id": "3fe50159-6c0a-4c5d-88a3-b43d56be01ee", "title": "Wasserstand Pegel Hemmelmarker See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-kellersee-kellersee1", "resource_id": "a5da2f8b-e192-4957-9821-5d4c4f35ba23", "title": "Wasserstand Pegel Kellersee - Kellersee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-postsee-postsee1", "resource_id": "c22b636f-2b2c-4621-9f6a-6082e25c392a", "title": "Wasserstand Pegel Postsee - Postsee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-arenholzer-see-arenholzer-see", "resource_id": "1d984bc3-e9fd-4199-aa99-7c5130d2c2ca", "title": "Wasserstand Pegel Arenholzer See - Arenholzer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-barkauer-see-barkauer-see1", "resource_id": "77c978b2-63bc-483c-b2f4-af4689dc5258", "title": "Wasserstand Pegel Barkauer See - Barkauer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-behlendorfer-see-behlendorfer-see1", "resource_id": "0301fa08-ebcf-49aa-80c0-778b6c2e18df", "title": "Wasserstand Pegel Behlendorfer See - Behlendorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-behler-see-behler-see1", "resource_id": "1132ef82-401b-4013-b58d-771625f610ad", "title": "Wasserstand Pegel Behler See - Behler See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-belauer-see-belauer-see1", "resource_id": "a810983e-0530-4cad-83a7-97b252b1358f", "title": "Wasserstand Pegel Belauer See - Belauer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-bistensee-bistensee1", "resource_id": "f9bfcbe9-8a4b-492b-b2c8-08f30851ace7", "title": "Wasserstand Pegel Bistensee - Bistensee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-bordesholmer-see-bordesholmer-see1", "resource_id": "1f314490-77b9-4399-b37d-eb3e067aaeaf", "title": "Wasserstand Pegel Bordesholmer See - Bordesholmer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-bornhoveder-see-bornhoveder-see1", "resource_id": "af33f464-7585-489c-be4d-82f525f644ed", "title": "Wasserstand Pegel Bornhöveder See - Bornhöveder See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-bottschlotter-see", "resource_id": "a1fe3fcc-ca08-467d-b4ce-85d13cb88b07", "title": "Wasserstand Pegel Bottschlotter See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-brahmsee", "resource_id": "758c147d-42d6-42e5-8805-59fc3d86bec2", "title": "Wasserstand Pegel Brahmsee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-dieksee-dieksee1", "resource_id": "be59631a-aa88-4475-9ed3-50a13a680dd9", "title": "Wasserstand Pegel Dieksee - Dieksee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-dobersdorfer-see-dobersdorfer-see1", "resource_id": "84d13768-4ad3-4ab2-abca-28033e4f2e28", "title": "Wasserstand Pegel Dobersdorfer See - Dobersdorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-drusensee-drusensee1", "resource_id": "2ac64064-c517-4974-b7d6-c6b7b008ea16", "title": "Wasserstand Pegel Drüsensee - Drüsensee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-einfelder-see-einfelder-see1", "resource_id": "f4f4f1dd-a404-4076-93bf-8238a9359870", "title": "Wasserstand Pegel Einfelder See - Einfelder See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-grossensee-grossensee1", "resource_id": "edb6ce71-2ed6-4187-b527-4681a29c4561", "title": "Wasserstand Pegel Großensee - Großensee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-kl-ploner-see-kl-ploner-see1", "resource_id": "6f848e76-84df-4364-ab7c-ea6472bb3ce6", "title": "Wasserstand Pegel Kl.Plöner See - Kl.Plöner See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-kl-ponitzer-see-kl-ponitzer-see", "resource_id": "e317f2e0-075c-4fb0-8a01-4b5142854e3c", "title": "Wasserstand Pegel Kl.Pönitzer See - Kl.Pönitzer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-ratzeburger-see-ratzeburger-see1", "resource_id": "60d78992-037b-4918-b4d1-0a9f1765f56f", "title": "Wasserstand Pegel Ratzeburger See - Ratzeburger See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-gr-segeberger-see-segeberger-see1", "resource_id": "17126965-8349-4ccc-ae76-86ca59cd7eec", "title": "Wasserstand Pegel Gr.Segeberger See - Segeberger See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-gudower-see-gudower-see1", "resource_id": "ae4a7fe2-deef-4bd0-90be-f8fce0122d4d", "title": "Wasserstand Pegel Gudower See - Gudower See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-hohner-see-hohner-see1", "resource_id": "3e0d38a4-4a9e-4f87-888e-97f11c036d16", "title": "Wasserstand Pegel Hohner See - Hohner See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-langsee-suderfahrenstedt-langsee1", "resource_id": "4910bd0b-8cae-42b1-8545-425e78f156a7", "title": "Wasserstand Pegel Langsee (Süderfahrenstedt) - Langsee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-mozener-see-mozener-see1", "resource_id": "336803b8-07d2-4804-83e7-a33930ee27a0", "title": "Wasserstand Pegel Mözener See - Mözener See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-neustadter-binnenwasser1", "resource_id": "875a0110-b29e-4083-b4f9-a11f7d5df62e", "title": "Wasserstand Pegel Neustädter Binnenwasser" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-neversdorfer-see-neversdorfer-see1", "resource_id": "3023dd36-de72-4913-82f5-455ce0679a3a", "title": "Wasserstand Pegel Neversdorfer See - Neversdorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-passader-see-passader-see1", "resource_id": "428ecb06-1093-458e-8bfe-017c8eac55ba", "title": "Wasserstand Pegel Passader See - Passader See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-rantumdammsiel-rantumbecken1", "resource_id": "a2760c42-24b9-4a22-adc6-ea442d397775", "title": "Wasserstand Pegel Rantumdammsiel - Rantumbecken" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-schluensee-schluensee1", "resource_id": "d3bfcae6-a844-403f-94f9-49f7a6eb2dc0", "title": "Wasserstand Pegel Schluensee - Schluensee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-schohsee1", "resource_id": "b2b50d48-f94b-4703-bdfb-923963a67a12", "title": "Wasserstand Pegel Schöhsee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-schwansener-see-fp-schopfwerk1", "resource_id": "36177bf0-5231-4c8c-b646-38860a516234", "title": "Wasserstand Pegel Schwansener See (FP) Schöpfwerk" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-seedorfer-see", "resource_id": "a20b8e5c-109a-40f4-9146-1080cd0bc97b", "title": "Wasserstand Pegel Seedorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-sibbersdorfer-see-sibbersdorfer-see", "resource_id": "2a9097ee-f564-488c-ba01-e5ca4e65bd24", "title": "Wasserstand Pegel Sibbersdorfer See - Sibbersdorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-stendorfer-see-stendorfer-see1", "resource_id": "14d872ab-35b8-42f4-a392-7695a33eb0e7", "title": "Wasserstand Pegel Stendorfer See - Stendorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-stocksee-stocksee1", "resource_id": "233595ef-9a43-4891-924b-ab259a702be1", "title": "Wasserstand Pegel Stocksee - Stocksee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-stolper-see-stolper-see1", "resource_id": "42b7ff56-947a-4870-a09f-1d6fcbbd2d27", "title": "Wasserstand Pegel Stolper See - Stolper See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-sudensee-sudensee1", "resource_id": "b08d106a-3bdd-4046-b592-317dc6335b7f", "title": "Wasserstand Pegel Südensee - Südensee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-suseler-see", "resource_id": "8f4cb123-3773-421e-9c8b-371f3149fbaa", "title": "Wasserstand Pegel Süseler See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-suhrer-see1", "resource_id": "4107018b-c54e-4d25-81df-00fe3e060c30", "title": "Wasserstand Pegel Suhrer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-trammer-see1", "resource_id": "5d155970-aeb3-4868-9864-5292bb77e24e", "title": "Wasserstand Pegel Trammer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-tresdorfer-see1", "resource_id": "dc7cec9a-2d55-43af-a752-cae6a4c97edd", "title": "Wasserstand Pegel Tresdorfer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-vierer-see", "resource_id": "f9a650ca-d81d-4273-a4d8-da58a655d6ec", "title": "Wasserstand Pegel Vierer See" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-westensee-westensee1", "resource_id": "63dedd32-0858-471a-9377-dc9e1fe743ff", "title": "Wasserstand Pegel Westensee - Westensee" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-windebyer-noor1", "resource_id": "c00f6db8-ccfb-4591-b5a5-e9d9f574be3c", "title": "Wasserstand Pegel Windebyer Noor" }, + { "host": "opendata.schleswig-holstein.de", "id": "wasserstand-pegel-meldorf-kronenloch", "resource_id": "1dc05082-71a6-4408-a944-106683dff2d0", "title": "Wasserstand Pegel Meldorf-Kronenloch" } + ], + "mappings": [ + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-hemmelsdorfer-see-hemmelsdorfer-see1", "target_db_field": "hemmelsdorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-hemmelmarker-see", "target_db_field": "hemmelmarker" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-kellersee-kellersee1", "target_db_field": "kellersee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-postsee-postsee1", "target_db_field": "postsee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-arenholzer-see-arenholzer-see", "target_db_field": "Arenholzer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-barkauer-see-barkauer-see1", "target_db_field": "Barkauer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-behlendorfer-see-behlendorfer-see1", "target_db_field": "Behlendorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-behler-see-behler-see1", "target_db_field": "Behler" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-belauer-see-belauer-see1", "target_db_field": "Belauer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-bistensee-bistensee1", "target_db_field": "Bistensee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-bordesholmer-see-bordesholmer-see1", "target_db_field": "Bordesholmer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-bornhoveder-see-bornhoveder-see1", "target_db_field": "Bornhöveder" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-bottschlotter-see", "target_db_field": "Bottschloter" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-brahmsee", "target_db_field": "Brahmsee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-dieksee-dieksee1", "target_db_field": "Dieksee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-dobersdorfer-see-dobersdorfer-see1", "target_db_field": "Dobersdorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-drusensee-drusensee1", "target_db_field": "Drüsensee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-einfelder-see-einfelder-see1", "target_db_field": "Einfelder" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-grossensee-grossensee1", "target_db_field": "Großensee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-kl-ploner-see-kl-ploner-see1", "target_db_field": "Plöner" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-kl-ponitzer-see-kl-ponitzer-see", "target_db_field": "Pönitzer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-ratzeburger-see-ratzeburger-see1", "target_db_field": "Ratzeburger" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-gr-segeberger-see-segeberger-see1", "target_db_field": "Segeberger" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-gudower-see-gudower-see1", "target_db_field": "Gudower" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-hohner-see-hohner-see1", "target_db_field": "Hohner" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-langsee-suderfahrenstedt-langsee1", "target_db_field": "Süderfahrenstedt" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-mozener-see-mozener-see1", "target_db_field": "Mözener" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-neustadter-binnenwasser1", "target_db_field": "Neustadt" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-neversdorfer-see-neversdorfer-see1", "target_db_field": "Neversdorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-passader-see-passader-see1", "target_db_field": "Passader" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-rantumdammsiel-rantumbecken1", "target_db_field": "Rantumdammsiel" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-schluensee-schluensee1", "target_db_field": "Schluensee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-schohsee1", "target_db_field": "Schöhsee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-schwansener-see-fp-schopfwerk1", "target_db_field": "Schwansener" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-seedorfer-see", "target_db_field": "Seedorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-sibbersdorfer-see-sibbersdorfer-see", "target_db_field": "Sibbersdorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-stendorfer-see-stendorfer-see1", "target_db_field": "Stendorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-stocksee-stocksee1", "target_db_field": "Stocksee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-stolper-see-stolper-see1", "target_db_field": "Stolper" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-sudensee-sudensee1", "target_db_field": "Südensee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-suseler-see", "target_db_field": "Süseler" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-suhrer-see1", "target_db_field": "Suhrer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-trammer-see1", "target_db_field": "Trammer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-tresdorfer-see1", "target_db_field": "Tresdorfer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-vierer-see", "target_db_field": "Vierer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-westensee-westensee1", "target_db_field": "Westensee" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-windebyer-noor1", "target_db_field": "Windebyer" }, + { "source_db_id": "see-wasserkorper", "source_db_field": "WK_NAME", "condition": "=", "target_db_id": "wasserstand-pegel-meldorf-kronenloch", "target_db_field": "Meldorf-Kronenloch" } + ], + "options": + { "label_option": "average_depth", "legend_option": "colorVarient" } +} diff --git a/i18n/locales/de.json b/i18n/locales/de.json index 4d4e8f3..01c0b77 100644 --- a/i18n/locales/de.json +++ b/i18n/locales/de.json @@ -12,5 +12,11 @@ "selectedDate": "Gewähltes Datum", "waterLevelOfLake": "Wasserpegel des Sees", "waterLevel": "Wasserpegel", - "notAvailable": "Nicht verfügbar" + "notAvailable": "Nicht verfügbar", + "loadingText": "Laden der Daten, bitte warten...", + "chartX": "Datum", + "chartY": "Tiefe (m)", + "chartTitle": "Tiefe für", + "chartLegend": "Tiefe im Zeitverlauf", + "chartEmpty": "Es sind keine Tiefenangaben verfügbar für" } diff --git a/i18n/locales/en.json b/i18n/locales/en.json index 27a6c23..d9bfb8e 100644 --- a/i18n/locales/en.json +++ b/i18n/locales/en.json @@ -12,5 +12,11 @@ "selectedDate": "Selected Date", "waterLevelOfLake": "Water level of lake", "waterLevel": "Water level", - "notAvailable": "Not Available" + "notAvailable": "Not Available", + "loadingText": "Loading data, please wait...", + "chartX": "Date", + "chartY": "Depth (m)", + "chartTitle": "Depth for", + "chartLegend": "Depth Over Time", + "chartEmpty": "No recorded depths are available for" } diff --git a/package.json b/package.json index e60a32c..db87782 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@heroicons/vue": "^2.2.0", "@nuxt/ui": "3.1.0", "@nuxtjs/i18n": "9.5.4", + "chart.js": "^4.4.9", "chroma-js": "^3.1.2", "leaflet": "^1.9.4", "leaflet-defaulticon-compatibility": "^0.1.2", @@ -27,12 +28,14 @@ "proj4": "^2.15.0", "shpjs": "^6.1.0", "tailwindcss": "4.1.5", + "vue-chartjs": "^5.3.2", "zod": "^3.24.4" }, "devDependencies": { "@antfu/eslint-config": "4.12.0", "@cspell/dict-de-de": "4.1.0", "@types/chroma-js": "^3.1.1", + "@types/geojson": "^7946.0.16", "@types/leaflet": "^1.9.17", "@types/proj4": "^2.5.6", "@types/shpjs": "^3.4.7", diff --git a/pages/index.vue b/pages/index.vue index 49732f1..7cb0065 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -52,13 +52,6 @@ > {{ t('bathing') }} -
  • - {{ t('busStops') }} -
  • - -
    -
    -
    -
    - -
    - - {{ group.year }} - -
    -
    - {{ t('selectedDate') }}: {{ selectedDate }} -
    -
    -
    - -
    - {{ t('selectedDate') }}: {{ selectedLakeDate }} -
    +
    +
    + + + +
    -
    -

    - {{ selectedItem.bathing.BADEGEWAESSERNAME }} -

    - -
    -
      -
    • {{ t('quality') }}: {{ selectedItem.classification?.EINSTUFUNG_ODER_VORABBEWERTUNG || 'N/A' }}
    • -
    • {{ t('category') }}: {{ selectedItem.measurements?.GEWAESSERKATEGORIE || 'N/A' }}
    • -
    • {{ t('depth') }}: {{ selectedItem.measurements?.SICHTTIEFE || 'N/A' }}
    • -
    • {{ t('seasonal') }}: {{ selectedItem.seasonal?.SAISONBEGINN }} - {{ selectedItem.seasonal?.SAISONENDE }} {{ selectedItem.seasonal?.GESCHLOSSEN || 'N/A' }}
    • -
    • {{ t('infrastructure') }}: {{ selectedItem.infrastructure?.INFRASTRUKTUR || 'N/A' }}
    • -
    +
    @@ -148,13 +98,22 @@