From bb88c8670df2dd56a9009985645650894fd9776b Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 29 May 2024 14:28:48 +0200 Subject: [PATCH 001/119] Created new branch --- frontend/.env.dev | 2 +- .../LineChartComponents/LineChart.tsx | 855 ++++++++++++++++++ .../components/MapComponents/HeatLegend.tsx | 84 ++ .../MapComponents/HeatLegendEdit.tsx | 229 +++++ .../src/components/MapComponents/HeatMap.tsx | 362 ++++++++ .../components/MapComponents/LockMaxValue.tsx | 34 + .../components/MapComponents/SearchBar.tsx | 137 +++ 7 files changed, 1702 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/LineChartComponents/LineChart.tsx create mode 100644 frontend/src/components/MapComponents/HeatLegend.tsx create mode 100644 frontend/src/components/MapComponents/HeatLegendEdit.tsx create mode 100644 frontend/src/components/MapComponents/HeatMap.tsx create mode 100644 frontend/src/components/MapComponents/LockMaxValue.tsx create mode 100644 frontend/src/components/MapComponents/SearchBar.tsx diff --git a/frontend/.env.dev b/frontend/.env.dev index 764e229f..4b5de5d6 100644 --- a/frontend/.env.dev +++ b/frontend/.env.dev @@ -2,4 +2,4 @@ # SPDX-License-Identifier: CC0-1.0 # This is for development only. For production you need to replace this with the actual URL. -VITE_API_URL=http://localhost:8000 +VITE_API_URL=http://hpcagainstcorona.sc.bs.dlr.de:8000 diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx new file mode 100644 index 00000000..07dfd0e8 --- /dev/null +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -0,0 +1,855 @@ +import {useCallback, useEffect, useRef, useState} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; +import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; +import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; +import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; +import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; +import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; +import am5locales_en_US from '@amcharts/amcharts5/locales/en_US'; +import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; +import {darken, useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import {useTranslation} from 'react-i18next'; +import {dateToISOString} from '../../utils/DateFormatter'; +import { + SimulationDataByNode, + CaseDataByNode, + GroupResponse, + GroupData, + Dictionary, + SelectedScenarioPercentileData, + PercentileDataByDay, + Scenario, +} from '../../types/LineCharttypes'; + +interface ScenarioList { + scenarios: { + [key: number]: Scenario; + }; + compartments: string[]; +} +interface GroupFilter { + id: string; + name: string; + isVisible: boolean; + groups: Dictionary; +} + +interface LineChartProps { + chartId?: string; + selectedDate: string; + setSelectedDate: (date: string) => void; + setReferenceDayBottom?: (docPos: number) => void; + simulationData?: SimulationDataByNode[] | null; + simulationDataChartName: (scenario: Scenario) => string; + caseData: CaseDataByNode; + percentileData?: SelectedScenarioPercentileData[] | null; + groupFilterData?: Dictionary | null; + minDate: string; + maxDate: string; + selectedScenario?: number | null; + activeScenarios?: number[] | null; + referenceDay?: string | null; + selectedCompartment: string; + scenarioList: ScenarioList; + groupFilterList?: Dictionary | null; + exportedFileName?: string; + localization: { + numberFormatter?: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function LineChart({ + chartId = 'chartdiv', + selectedDate, + setSelectedDate, + setReferenceDayBottom = () => {}, + simulationData = null, + caseData, + simulationDataChartName, + percentileData = null, + groupFilterData = null, + minDate, + maxDate, + selectedScenario = null, + activeScenarios = null, + referenceDay = null, + selectedCompartment = '', + scenarioList, + groupFilterList = null, + exportedFileName = 'Data', + localization = { + numberFormatter: undefined, + customLang: 'en', + overrides: undefined, + }, +}: LineChartProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + const theme = useTheme(); + + const rootRef = useRef(null); + const chartRef = useRef(null); + + const [isDataSet, setIsDataSet] = useState(false); + const [isSeriesSet, setIsSeriesSet] = useState(false); + + const setReferenceDayX = useCallback(() => { + if (!chartRef.current || !rootRef.current || !referenceDay) { + return; + } + + const midday = new Date(referenceDay).setHours(12, 0, 0); + + const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); + const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); + const docPosition = rootRef.current.rootPointToDocument(globalPosition).x; + setReferenceDayBottom(docPosition); + }, [referenceDay, setReferenceDayBottom]); + + // Effect to initialize root & chart + useEffect( + () => { + // Create root and chart + const root = Root.new(chartId); + const chart = root.container.children.push( + XYChart.new(root, { + panX: false, + panY: false, + wheelX: 'panX', + wheelY: 'zoomX', + maxTooltipDistance: -1, + }) + ); + + // Set number formatter + root.numberFormatter.set('numberFormat', '#,###.'); + + // Create x-axis + const xAxis = chart.xAxes.push( + DateAxis.new(root, { + renderer: AxisRendererX.new(root, {}), + // Set base interval and aggregated intervals when the chart is zoomed out + baseInterval: {timeUnit: 'day', count: 1}, + gridIntervals: [ + {timeUnit: 'day', count: 1}, + {timeUnit: 'day', count: 3}, + {timeUnit: 'day', count: 7}, + {timeUnit: 'month', count: 1}, + {timeUnit: 'month', count: 3}, + {timeUnit: 'year', count: 1}, + ], + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + }) + ); + // Change axis renderer to have ticks/labels on day center + const xRenderer = xAxis.get('renderer'); + xRenderer.ticks.template.setAll({ + location: 0.5, + }); + + // Create y-axis + chart.yAxes.push( + ValueAxis.new(root, { + renderer: AxisRendererY.new(root, {}), + // Fix lower end to 0 + min: 0, + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + }) + ); + + // Add cursor + chart.set( + 'cursor', + XYCursor.new(root, { + // Only allow zooming along x-axis + behavior: 'zoomX', + // Snap cursor to xAxis ticks + xAxis: xAxis, + }) + ); + + // Add event on double click to select date + chart.events.on('click', (ev) => { + // Get date from axis position from cursor position + const date = xAxis.positionToDate( + xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) + ); + // Remove time information to only have a date + date.setHours(0, 0, 0, 0); + // Set date in store + setSelectedDate(dateToISOString(date)); + }); + + // Set refs to be used in other effects + rootRef.current = root; + chartRef.current = chart; + + // Clean-up before re-running this effect + return () => { + // Dispose old root and chart before creating a new instance + chartRef.current?.dispose(); + rootRef.current?.dispose(); + }; + }, + // This effect should only run once. dispatch should not change during runtime + [chartId, setSelectedDate] + ); + + // Effect to change localization of chart if language changes + useEffect( + () => { + // Skip if root or chart is not initialized + if (!rootRef.current || !chartRef.current) { + return; + } + + // Set localization + rootRef.current.locale = localization.customLang === 'de' ? am5locales_de_DE : am5locales_en_US; + + // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) + const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + xAxis.get('dateFormats', {day: ''})['day'] = + localization.overrides && localization.overrides['dayFormat'] + ? customT(localization.overrides['dayFormat']) + : defaultT('dayFormat'); + xAxis.get('tooltipDateFormats', {day: ''})['day'] = + localization.overrides && localization.overrides['dayFormat'] + ? customT(localization.overrides['dayFormat']) + : defaultT('dayFormat'); + // Fix first date of the month falling back to wrong format (also with fallback object) + xAxis.get('periodChangeDateFormats', {day: ''})['day'] = + localization.overrides && localization.overrides['dayFormat'] + ? customT(localization.overrides['dayFormat']) + : defaultT('dayFormat'); + }, + // Re-run effect if language changes + [localization.customLang, defaultT, customT, localization.overrides] + ); + + // Effect to update min/max date. + useEffect(() => { + // Skip if root or chart is not initialized + if (!rootRef.current || !chartRef.current || !minDate || !maxDate) { + return; + } + + const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + xAxis.set('min', new Date(minDate).setHours(0)); + xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); + }, [minDate, maxDate]); + + // Effect to add series to chart + useEffect( + () => { + // Skip if root or chart not initialized + if (!rootRef.current || !chartRef.current) { + return; + } + + const chart: XYChart = chartRef.current; + const root: Root = rootRef.current; + const xAxis: DateAxis = chart.xAxes.getIndex(0) as DateAxis; + const yAxis: ValueAxis = chart.yAxes.getIndex(0) as ValueAxis; + + // Add series for case data + const caseDataSeries = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + // Case Data is always scenario id 0 + id: `${chartId}_0`, + name: + localization.overrides && localization.overrides['chart.caseData'] + ? customT(localization.overrides['chart.caseData']) + : defaultT('chart.caseData'), + valueXField: 'date', + valueYField: '0', + // Prevent data points from connecting across gaps in the data + connect: false, + stroke: color('#000'), + }) + ); + caseDataSeries.strokes.template.setAll({ + strokeWidth: 2, + }); + + // Add series for percentile area + const percentileSeries = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_percentiles`, + valueXField: 'date', + valueYField: 'percentileUp', + openValueYField: 'percentileDown', + connect: false, + // Percentiles are only visible if a scenario is selected and it is not case data + visible: selectedScenario !== null && selectedScenario > 0, + // Add fill color according to selected scenario (if selected scenario is set and it's not case data) + fill: + selectedScenario !== null && selectedScenario > 0 + ? color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]) + : undefined, + }) + ); + percentileSeries.strokes.template.setAll({ + strokeWidth: 0, + }); + percentileSeries.fills.template.setAll({ + fillOpacity: 0.3, + visible: true, + }); + + // Add series for each scenario + Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { + const series = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_${scenarioId}`, + name: simulationDataChartName(scenario), + valueXField: 'date', + valueYField: scenarioId, + // Prevent data points from connecting across gaps in the data + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color + tooltip: Tooltip.new(root, { + labelText: `[bold ${ + theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0] + }]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, + }), + stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), + }) + ); + series.strokes.template.setAll({ + strokeWidth: 2, + }); + }); + + // Add series for groupFilter (if there are any) + if (groupFilterList && selectedScenario) { + // Define line style variants for groups + const groupFilterStrokes = [ + [2, 4], // dotted + [8, 4], // dashed + [8, 4, 2, 4], // dash-dotted + [8, 4, 2, 4, 2, 4], // dash-dot-dotted + ]; + // Loop through visible group filters + Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .forEach((groupFilter, i) => { + // Add series for each group filter + const series = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_group-filter-${groupFilter.name}`, + name: groupFilter.name, + valueXField: 'date', + valueYField: groupFilter.name, + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) + tooltip: Tooltip.new(root, { + labelText: `[bold ${theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]}]${ + groupFilter.name + }:[/] {${groupFilter.name}}`, + }), + stroke: color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]), + }) + ); + series.strokes.template.setAll({ + strokeWidth: 2, + // Loop through stroke list if group filters exceeds list length + strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], + }); + }); + } + setIsSeriesSet(true); + // Clean-up function + return () => { + // Remove all series + chart.series.clear(); + }; + }, + // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). + [scenarioList, groupFilterList, selectedScenario, defaultT, customT, theme, isDataSet, chartId, simulationDataChartName, localization.overrides] + ); + + // Effect to hide disabled scenarios (and show them again if not hidden anymore) + useEffect( + () => { + const allSeries = chartRef.current?.series; + // Skip effect if chart is not initialized (contains no series yet) + if (!allSeries) return; + + // Set visibility of each series + allSeries.each((series) => { + // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) + let seriesID = series.get('id'); + if (seriesID?.includes(chartId)) seriesID = seriesID.split('_')[1]; + // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list + if (seriesID === `percentiles`) { + return; + } + + if (!activeScenarios?.includes(Number(seriesID))) { + void series.hide(); + } else { + void series.show(); + } + }); + }, + // Re-run effect when the active scenario list changes + [activeScenarios, chartId] + ); + + // Effect to hide deviations if no scenario is selected + useEffect( + () => { + // Skip effect if chart is not initialized (contains no series yet) + if (!chartRef.current) return; + + // Find percentile series and only show it if there is a selected scenario + chartRef.current?.series.values + .filter((series) => { + let seriesID = series.get('id'); + if (seriesID?.includes(chartId)) seriesID = seriesID.split('_')[1]; + return seriesID === 'percentiles'; + }) + .map((percentileSeries) => { + if (selectedScenario === null || selectedScenario === 0) { + void percentileSeries.hide(); + } else { + void percentileSeries.show(); + } + }); + }, + // Re-run effect when the selected scenario changes + [chartId, selectedScenario] + ); + + // Effect to add Guide when date selected + useEffect(() => { + // Skip effect if chart (or root) is not initialized yet or no date is selected + if (!chartRef.current || !rootRef.current || !selectedDate) { + return; + } + + // Get xAxis from chart + const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + + // Create data item for range + const rangeDataItem = xAxis.makeDataItem({ + // Make sure the time of the start date object is set to first second of day + value: new Date(selectedDate).setHours(0, 0, 0), + // Make sure the time of the end date object is set to last second of day + endValue: new Date(selectedDate).setHours(23, 59, 59), + // Line and label should drawn above the other elements + above: true, + }); + + // Create the range with the data item + const range = xAxis.createAxisRange(rangeDataItem); + + // Set stroke of range (line with label) + range.get('grid')?.setAll({ + stroke: color(theme.palette.primary.main), + strokeOpacity: 1, + strokeWidth: 2, + location: 0.5, + visible: true, + }); + + // Set fill of range (rest of the day) + range.get('axisFill')?.setAll({ + fill: color(theme.palette.primary.main), + fillOpacity: 0.3, + visible: true, + }); + + // Set label for range + range.get('label')?.setAll({ + fill: color(theme.palette.primary.contrastText), + text: new Date(selectedDate).toLocaleDateString(localization.customLang, { + year: 'numeric', + month: 'short', + day: '2-digit', + }), + location: 0.5, + background: RoundedRectangle.new(rootRef.current, { + fill: color(theme.palette.primary.main), + }), + // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels + layer: Number.MAX_VALUE, + }); + + return () => { + // Discard range before re-running this effect + xAxis.axisRanges.removeValue(range); + }; + }, [selectedDate, theme, localization.customLang]); + + // Effect to add guide for the reference day + useEffect( + () => { + // Skip effect if chart (or root) is not initialized yet or no date is selected + if (!chartRef.current || !rootRef.current || !referenceDay) { + return; + } + + // Get xAxis from chart + const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + + const referenceDate = new Date(referenceDay); + const start = referenceDate.setHours(12, 0, 0); + + // Create data item for range + const rangeDataItem = xAxis.makeDataItem({ + // Make sure the time of the start date object is set to first second of day + value: start, + // Line and label should drawn above the other elements + above: true, + }); + + // Create the range with the data item + const range = xAxis.createAxisRange(rangeDataItem); + + // Set stroke of range (line with label) + range.get('grid')?.setAll({ + stroke: color(darken(theme.palette.divider, 0.25)), + strokeOpacity: 1, + strokeWidth: 2, + strokeDasharray: [6, 4], + }); + + setReferenceDayX(); + xAxis.onPrivate('selectionMin', setReferenceDayX); + xAxis.onPrivate('selectionMax', setReferenceDayX); + const resizeObserver = new ResizeObserver(setReferenceDayX); + resizeObserver.observe(rootRef.current.dom); + + return () => { + // Discard range before re-running this effect + xAxis.axisRanges.removeValue(range); + resizeObserver.disconnect(); + }; + }, + // Re-run effect when selection changes (date/scenario/compartment/district) or when the active scenarios/filters change (theme and translation do not change after initialization) + [referenceDay, theme, localization.customLang, setReferenceDayX] + ); + + // Effect to update Simulation and case data + useEffect(() => { + // Skip effect if chart is not initialized yet + if (!chartRef.current) return; + // Also skip if there is no scenario or compartment selected + if (selectedScenario === null || !selectedCompartment) return; + + // Create empty map to match dates + const dataMap = new Map(); + + // Cycle through scenarios + activeScenarios?.forEach((scenarioId) => { + if (scenarioId) { + simulationData?.[scenarioId]?.results.forEach(({day, compartments}) => { + // Add scenario data to map (upsert date entry) + dataMap.set(day, {...dataMap.get(day), [scenarioId]: compartments[selectedCompartment]}); + }); + } + + if (scenarioId === 0) { + // Add case data values (upsert date entry) + caseData?.results.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.compartments[selectedCompartment]}); + }); + } + }); + + if (percentileData) { + // Add 25th percentile data + percentileData[0].results?.forEach((entry: PercentileDataByDay) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.compartments[selectedCompartment]}); + }); + + // Add 75th percentile data + percentileData[1].results?.forEach((entry: PercentileDataByDay) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.compartments[selectedCompartment]}); + }); + } + + // Add groupFilter data of visible filters + if (groupFilterList && groupFilterData) { + Object.values(groupFilterList).forEach((groupFilter) => { + if (groupFilter?.isVisible) { + // Check if data for filter is available (else report error) + if (groupFilterData[groupFilter.name]) { + groupFilterData[groupFilter.name].results.forEach((entry: GroupData) => { + dataMap.set(entry.day, { + ...dataMap.get(entry.day), + [groupFilter.name]: entry.compartments[selectedCompartment], + }); + }); + } else { + console.error(`ERROR: missing data for "${groupFilter.name}" filter`); + } + } + }); + } + + // Sort map by date + const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); + const data = Array.from(dataMapSorted).map(([day, data]) => { + return {date: day, ...data}; + }); + + // Put data into series + chartRef.current.series.each((series, i) => { + // Set-up data processors for first series (not needed for others since all use the same data) + if (i === 0) { + series.data.processor = DataProcessor.new(rootRef.current as Root, { + // Define date fields and their format (incoming format from API) + dateFields: ['date'], + dateFormat: 'yyyy-MM-dd', + }); + } + // Link each series to data + series.data.setAll(data); + }); + + setIsDataSet(true); + + // Set up HTML tooltip + const tooltipHTML = ` + ${'' /* Current Date and selected compartment name */} + {date.formatDate("${ + localization.overrides && localization.overrides['dateFormat'] + ? customT(localization.overrides['dateFormat']) + : defaultT('dateFormat') + }")} (${ + localization.overrides && localization.overrides[`compartments.${selectedCompartment}`] + ? customT(localization.overrides[`compartments.${selectedCompartment}`]) + : defaultT(`compartments.${selectedCompartment}`) + }) + + ${ + // Table row for each series of an active scenario + chartRef.current.series.values + .filter((series) => { + if (!series.get('id')) return false; + let s = series.get('id'); + if (series.get('id')?.includes(chartId)) s = s?.split('_')[1]; + return activeScenarios?.includes(Number(s)); + }) + .map((series): string => { + /* Skip if series: + * - is hidden + * - is percentile series (which is added to the active scenario series) + * - is group filter series + */ + let seriesID = series.get('id'); + if (seriesID?.includes(chartId)) seriesID = seriesID?.split('_')[1]; + if (series.isHidden() || seriesID === 'percentiles' || seriesID?.startsWith('group-filter-')) { + return ''; + } + /* Skip with error if series does not have property: + * - id + * - name + * - valueYField + * - stroke + */ + if (!seriesID || !series.get('name') || !series.get('valueYField') || !series.get('stroke')) { + console.error( + 'ERROR: missing series property: ', + seriesID, + series.get('name'), + series.get('valueYField'), + series.get('stroke') + ); + return ''; + } + // Handle series normally + return ` + + + + ${ + // Skip percentiles if this series is not the selected scenario or case data + seriesID !== selectedScenario.toString() || selectedScenario === 0 + ? '' + : ` + + ` + } + + ${ + // Add group filters if this series is the selected scenario + seriesID !== selectedScenario.toString() + ? '' + : // Add table row for each active group filter + (chartRef.current as XYChart).series.values + .filter((series) => { + let seriesID = series.get('id'); + if (seriesID?.includes(chartId)) seriesID = seriesID.split('_')[1]; + return seriesID?.startsWith('group-filter-') && !series.isHidden(); + }) + .map((groupFilterSeries) => { + return ` + + + + + `; + }) + .join('') + } + `; + }) + .join('') + } +
+ ${series.get('name') as string} + + {${series.get('valueYField') as string}} + + [{percentileDown} - {percentileUp}] +
+ ${groupFilterSeries.get('name') as string} + + {${groupFilterSeries.get('valueYField') as string}} +
+ `; + + // Attach tooltip to series + chartRef.current.series.each((series) => { + const tooltip = Tooltip.new(rootRef.current as Root, { + labelHTML: tooltipHTML, + getFillFromSprite: false, + autoTextColor: false, + pointerOrientation: 'horizontal', + }); + + // Set tooltip default text color to theme primary text color + tooltip.label.setAll({ + fill: color(theme.palette.text.primary), + }); + + // Set tooltip background to theme paper + tooltip.get('background')?.setAll({ + fill: color(theme.palette.background.paper), + }); + + // Set tooltip + series.set('tooltip', tooltip); + }); + + // Collect data field names & order for data export + // Always export date and case data (and percentiles of selected scenario) + let dataFields = { + date: `${ + localization.overrides && localization.overrides['chart.date'] + ? customT(localization.overrides['chart.date']) + : defaultT('chart.date') + }`, + caseData: `${ + localization.overrides && localization.overrides['chart.caseData'] + ? customT(localization.overrides['chart.caseData']) + : defaultT('chart.caseData') + }`, + percentileUp: `${ + localization.overrides && localization.overrides['chart.percentileUp'] + ? customT(localization.overrides['chart.percentileUp']) + : defaultT('chart.percentileUp') + }`, + percentileDown: `${ + localization.overrides && localization.overrides['chart.percentileDown'] + ? customT(localization.overrides['chart.percentileDown']) + : defaultT('chart.percentileDown') + }`, + }; + // Always put date first, case data second + const dataFieldsOrder = ['date', 'caseData']; + // Loop through active scenarios (if there are any) + if (activeScenarios) { + activeScenarios.forEach((scenarioId) => { + // Skip case data (already added) + if (scenarioId === 0 || !scenarioId || !scenarioList.scenarios[scenarioId]) { + return; + } + + // Add scenario label to export data field names + dataFields = { + ...dataFields, + [scenarioId]: scenarioList.scenarios[scenarioId].label, + }; + // Add scenario id to export data field order (for sorted export like csv) + dataFieldsOrder.push(`${scenarioId}`); + // If this is the selected scenario also add percentiles after it + if (scenarioId == selectedScenario) { + dataFieldsOrder.push('percentileDown', 'percentileUp'); + } + }); + } + + // Let's import this lazily, since it contains a lot of code. + import('@amcharts/amcharts5/plugins/exporting') + .then((module) => { + // Update export menu + module.Exporting.new(rootRef.current as Root, { + menu: module.ExportingMenu.new(rootRef.current as Root, {}), + filePrefix: exportedFileName, + dataSource: data, + dateFields: ['date'], + dateFormat: `${ + localization.overrides && localization.overrides['dateFormat'] + ? customT(localization.overrides['dateFormat']) + : defaultT('dateFormat') + }`, + dataFields: dataFields, + dataFieldsOrder: dataFieldsOrder, + }); + }) + .catch(() => console.warn("Couldn't load exporting functionality!")); + + setReferenceDayX(); + // Re-run this effect whenever the data itself changes (or any variable the effect uses) + }, [percentileData, simulationData, caseData, groupFilterData, activeScenarios, selectedScenario, scenarioList, selectedCompartment, theme, groupFilterList, defaultT, customT, setReferenceDayX, chartId, isSeriesSet, localization.overrides, exportedFileName]); + + return ( + <> + + + ); +} \ No newline at end of file diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/MapComponents/HeatLegend.tsx new file mode 100644 index 00000000..30cd3859 --- /dev/null +++ b/frontend/src/components/MapComponents/HeatLegend.tsx @@ -0,0 +1,84 @@ +import {useEffect} from 'react'; +import * as am5 from '@amcharts/amcharts5'; +import {HeatmapLegend} from '../../types/Maptypes'; +import {Box} from '@mui/material'; + +interface HeatProps { + legend: HeatmapLegend; + exposeLegend: (legend: am5.HeatLegend | null) => void; + min: number; + max: number; + displayText: boolean; + id: string; + tooltipStartColor?: string; + tooltipEndColor?: string; + style?: React.CSSProperties; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function HeatLegend({ + legend, + exposeLegend, + min, + max, + displayText, + id, + tooltipStartColor = '#F8F8F9', + tooltipEndColor = '#F8F8F9', + style = { + width: '100%', + margin: '5px', + height: '50px', + }, + localization, +}: HeatProps) { + const unique_id = id + String(Date.now() + Math.random()); // "guarantee" unique id + + useEffect(() => { + const root = am5.Root.new(unique_id); + const heatLegend = root.container.children.push( + am5.HeatLegend.new(root, { + orientation: 'horizontal', + startValue: min, + startText: displayText ? localization.numberFormatter(min) : ' ', + endValue: max, + endText: displayText ? localization.numberFormatter(max) : ' ', + // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color + startColor: am5.color(tooltipStartColor), + endColor: am5.color(tooltipEndColor), + }) + ); + + // compile stop list + const stoplist: {color: am5.Color; opacity: number; offset: number}[] = []; + legend.steps.forEach((item) => { + stoplist.push({ + color: am5.color(item.color), + // opacity of the color between 0..1 + opacity: 1, + // offset is stop position normalized to 0..1 unless already normalized + offset: legend.isNormalized ? item.value : (item.value - min) / (max - min), + }); + }); + heatLegend.markers.template.adapters.add('fillGradient', (gradient) => { + gradient?.set('stops', stoplist); + return gradient; + }); + + // expose Legend element to District map (for tooltip on event) + exposeLegend(heatLegend); + + return () => { + root.dispose(); + exposeLegend(null); + }; + }, [id, min, max, displayText, exposeLegend, unique_id, legend, localization.numberFormatter, tooltipStartColor, tooltipEndColor, localization]); + + return ; +} diff --git a/frontend/src/components/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/MapComponents/HeatLegendEdit.tsx new file mode 100644 index 00000000..175c1024 --- /dev/null +++ b/frontend/src/components/MapComponents/HeatLegendEdit.tsx @@ -0,0 +1,229 @@ +import React, { useCallback, useEffect, useState } from "react"; +import Box from "@mui/material/Box"; +import Button from "@mui/material/Button"; +import Dialog from "@mui/material/Dialog"; +import FormControl from "@mui/material/FormControl"; +import Grid from "@mui/material/Grid"; +import IconButton from "@mui/material/IconButton"; +import MenuItem from "@mui/material/MenuItem"; +import Select, { SelectChangeEvent } from "@mui/material/Select"; +import Tooltip from "@mui/material/Tooltip"; +import Typography from "@mui/material/Typography"; +import HeatLegend from "./HeatLegend"; +import EditIcon from "@mui/icons-material/Edit"; +import legendPresets from "../../assets/heatmap_legend_presets.json?url"; +import { HeatmapLegend } from "../../types/Maptypes"; +import { useTheme } from "@mui/material"; + +interface HeatLegendEditProps { + setLegend: (legend: HeatmapLegend) => void; + legend: HeatmapLegend; + selectedScenario?: number | null; + t?: (key: string) => string; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} +/** + * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. + */ +export default function HeatLegendEdit({ + setLegend, + legend, + selectedScenario = null, + t = (key: string) => key, + localization, +}: HeatLegendEditProps) { + const theme = useTheme(); + // // This contains all legends using the default colors. + // const [defaultLegends, setDefaultLegends] = useState>([]); + const defaultLegends = useDefaultLegends(); + + // This contains all legends from the presets file. + const [heatmapLegends, setHeatmapLegends] = useState>( + [] + ); + + // This contains the default legend and the presets and is used for displaying the list to the user. + const [availablePresets, setAvailablePresets] = useState< + Array + >([]); + + // modal state + const [heatLegendEditOpen, setHeatLegendEditOpen] = React.useState(false); + + // Try to select a heatlegend using the given name. + const selectLegendByName = useCallback( + (name: string) => { + const preset = availablePresets.find((preset) => preset.name === name); + if (preset) { + setLegend(preset); + } + }, + [availablePresets, setLegend] + ); + + // This effect loads the presets file, once the modal is opened the first time. + useEffect(() => { + const fetchData = async () => { + try { + const response = await fetch(legendPresets, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, + }); + const data = await response.json(); + data.forEach((legend: HeatmapLegend) => { + if (legend.isNormalized) { + legend.steps.forEach((step) => { + //set step to normalized values + step.value = + step.value / legend.steps[legend.steps.length - 1].value; + }); + } + }); + setHeatmapLegends(data); + } catch (error) { + console.warn("Did not receive proper heatmap legend presets"); + } + }; + if (heatLegendEditOpen && heatmapLegends.length === 0) { + fetchData(); + } + }, [setHeatmapLegends, heatLegendEditOpen, heatmapLegends.length]); + + // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". + useEffect(() => { + if (selectedScenario == null || defaultLegends.length === 0) { + return; + } + const scenarioDefault = + defaultLegends[selectedScenario % defaultLegends.length]; + const legends = [...heatmapLegends]; + legends.unshift(scenarioDefault); + + if (legend.name !== "Default" && heatmapLegends.length === 0) { + legends.push(legend); + } + + setAvailablePresets(legends); + }, [selectedScenario, defaultLegends, heatmapLegends, legend]); + + // This effect updates the selected legend, if a default legend is selected and the scenario changes. + useEffect(() => { + if (legend.name !== "Default" && legend.name !== "uninitialized") { + return; + } + + selectLegendByName("Default"); + }, [legend, selectLegendByName]); + + return ( + <> + + setHeatLegendEditOpen(true)} + aria-label={t("heatlegend.edit")} + size="small" + sx={{ padding: theme.spacing(0), marginBottom: theme.spacing(1) }} + > + + + + setHeatLegendEditOpen(false)} + > + + + + + + + + + + + ); +} + +/** + * This hook generates the heatmap legends for all scenarios using the current theme. + */ +function useDefaultLegends(): Array { + const theme = useTheme(); + const [defaultLegends, setDefaultLegends] = useState>( + [] + ); + + useEffect(() => { + const legends: Array = []; + const stepCount = theme.custom.scenarios[0].length - 1; + for (const element of theme.custom.scenarios) { + const steps = []; + for (let j = 0; j < stepCount; j++) { + steps.push({ + color: element[stepCount - 1 - j], + value: j / (stepCount - 1), + }); + } + legends.push({ name: "Default", isNormalized: true, steps }); + } + setDefaultLegends(legends); + }, [theme, setDefaultLegends]); + + return defaultLegends; +} diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx new file mode 100644 index 00000000..4df31d07 --- /dev/null +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -0,0 +1,362 @@ +import {useState, useEffect, useRef, useMemo} from 'react'; +import * as am5 from '@amcharts/amcharts5'; +import * as am5map from '@amcharts/amcharts5/map'; +import {GeoJSON} from 'geojson'; +import {FeatureCollection} from '../../types/Maptypes'; +import svgZoomResetURL from '../../assets/svg/zoom_out_map_white_24dp.svg?url'; +import svgZoomInURL from '../../assets/svg/zoom_in_white_24dp.svg?url'; +import svgZoomOutURL from '../../assets/svg/zoom_out_white_24dp.svg?url'; +import {FeatureProperties} from '../../types/Maptypes'; +import {HeatmapLegend} from '../../types/Maptypes'; +import {Box} from '@mui/material'; +import {useTheme} from '@mui/material/styles'; + +interface MapProps { + mapData: undefined | FeatureCollection; + mapId?: string; + mapHeight?: string; + defaultFill?: number | string; + fillOpacity?: number; + tooltipText?: (regionData: FeatureProperties) => string; + tooltipTextWhileFetching?: (regionData: FeatureProperties) => string; + defaultSelectedValue: FeatureProperties; + selectedScenario?: number | null; + isDataFetching?: boolean; + values: {id: string | number; value: number}[] | undefined; + setSelectedArea: (area: FeatureProperties) => void; + selectedArea: FeatureProperties; + aggregatedMax: number; + setAggregatedMax: (max: number) => void; + fixedLegendMaxValue?: number | null; + legend: HeatmapLegend; + legendRef: React.MutableRefObject; + longLoad: boolean; + setLongLoad: (longLoad: boolean) => void; + idValuesToMap?: string; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function HeatMap({ + mapData, + mapId = 'map', + mapHeight = '650px', + defaultFill = '#8c8c8c', + fillOpacity = 1, + tooltipText = () => '{id}', + tooltipTextWhileFetching = () => 'Loading...', + defaultSelectedValue, + selectedScenario = 0, + isDataFetching = false, + values, + setSelectedArea, + selectedArea, + aggregatedMax, + setAggregatedMax, + fixedLegendMaxValue, + legend, + legendRef, + longLoad, + setLongLoad, + idValuesToMap = 'id', + localization, +}: MapProps) { + const theme = useTheme(); + const lastSelectedPolygon = useRef(null); + const [polygonSeries, setPolygonSeries] = useState(null); + const [longLoadTimeout, setLongLoadTimeout] = useState(); + + // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. + const isFetching = useMemo(() => { + if (selectedScenario === null) { + return true; + } + return isDataFetching; + }, [isDataFetching, selectedScenario]); + + // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This + // prevents that the indicator is showing for every little change. + useEffect(() => { + if (isFetching) { + setLongLoadTimeout( + window.setTimeout(() => { + setLongLoad(true); + }, 1000) + ); + } else { + clearTimeout(longLoadTimeout); + setLongLoad(false); + } + // eslint-disable-next-line + }, [isFetching, setLongLoad, setLongLoadTimeout]); // longLoadTimeout is deliberately ignored here. + + useEffect(() => { + if (fixedLegendMaxValue) { + setAggregatedMax(fixedLegendMaxValue); + } else if (values) { + let max = 1; + values.forEach((value) => { + if (value.value > max) { + max = value.value; + } + }); + setAggregatedMax(max); + } + }, [fixedLegendMaxValue, setAggregatedMax, values]); + + // Create Map with GeoData + useEffect(() => { + if (!mapData) return; + + // Create map instance + const root = am5.Root.new(mapId); + const chart = root.container.children.push( + am5map.MapChart.new(root, { + projection: am5map.geoMercator(), + maxZoomLevel: 4, + maxPanOut: 0.4, + zoomControl: am5map.ZoomControl.new(root, { + paddingBottom: 25, + opacity: 50, + }), + }) + ); + + // Add home button to reset pan & zoom + chart.get('zoomControl')?.homeButton.set('visible', true); + + // Settings to fix positioning of images on buttons + const fixSVGPosition = { + width: 25, + height: 25, + dx: -5, + dy: -3, + }; + + // Set svg icon for home button + chart.get('zoomControl')?.homeButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomResetURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + + // Add function to select germany when home button is pressed + chart.get('zoomControl')?.homeButton.events.on('click', () => { + if (defaultSelectedValue) { + setSelectedArea(defaultSelectedValue); + } + }); + + // Set svg icon for plus button + chart.get('zoomControl')?.plusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomInURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + + // Set svg icon for minus button + chart.get('zoomControl')?.minusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomOutURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + + // Create polygon series + const polygonSeries = chart.series.push( + am5map.MapPolygonSeries.new(root, { + geoJSON: mapData as GeoJSON, + tooltipPosition: 'fixed', + }) + ); + + // Get template for polygons to attach events etc to each + const polygonTemplate = polygonSeries.mapPolygons.template; + + // Set properties for each polygon + polygonTemplate.setAll({ + fill: am5.color(defaultFill), + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + fillOpacity: fillOpacity, + }); + + // Set hover properties for each polygon + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + + // Set click properties for each polygon + polygonTemplate.events.on('click', function (ev) { + if (ev.target.dataItem && ev.target.dataItem.dataContext) { + setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); + } + }); + + // Set heat map properties + //show tooltip on heat legend when hovering + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef.current) { + const value = (e.target.dataItem?.dataContext as {value: number}).value; + legendRef.current.showValue(value, localization.numberFormatter(value)); + } + }); + //hide tooltip on heat legend when not hovering anymore event + polygonTemplate.events.on('pointerout', () => { + if (legendRef.current) { + void legendRef.current.hideTooltip(); + } + }); + + setPolygonSeries(polygonSeries); + + return () => { + chart.dispose(); + root.dispose(); + }; + }, [defaultFill, fillOpacity, mapId, theme.palette.background.default, theme.palette.primary.main, localization.numberFormatter, mapData, setSelectedArea, defaultSelectedValue, legendRef, localization]); + + // Highlight selected district + useEffect(() => { + if (!polygonSeries) return; + // Reset last selected polygon + if (lastSelectedPolygon.current) { + lastSelectedPolygon.current.states.create('default', { + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + layer: 0, + }); + lastSelectedPolygon.current.states.apply('default'); + } + // Highlight selected polygon + polygonSeries.mapPolygons.each((mapPolygon) => { + if (mapPolygon.dataItem && mapPolygon.dataItem.dataContext) { + const {id} = mapPolygon.dataItem.dataContext as {id: string}; + if (id == selectedArea.id) { + mapPolygon.states.create('default', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + if (!mapPolygon.isHover()) { + mapPolygon.states.apply('default'); + } + lastSelectedPolygon.current = mapPolygon; + } + } + }); + }, [polygonSeries, selectedArea.id, theme.palette.background.default, theme.palette.primary.main]); + + // set Data + useEffect(() => { + if (!polygonSeries) return; + const map = new Map(); + if (!values) return; + values.forEach((value) => { + map.set(value.id, value.value); + }); + + if (selectedScenario !== null && !isFetching) { + polygonSeries.mapPolygons.each((polygon) => { + const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; + + const regionData = {...originalRegionData}; + + regionData.value = map.get(regionData[idValuesToMap]) ?? Number.NaN; + // determine fill color + let fillColor = am5.color(defaultFill); + if (Number.isFinite(regionData.value) && typeof regionData.value === 'number') { + if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { + // if legend is normalized, also pass mix & max to color function + fillColor = getColorFromLegend(regionData.value, legend, { + min: 0, + max: aggregatedMax, + }); + } else { + // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed + fillColor = getColorFromLegend(regionData.value, legend); + } + } + polygon.setAll({ + tooltipText: tooltipText(regionData), + fill: fillColor, + }); + }); + } else if (longLoad || !values) { + polygonSeries.mapPolygons.each((polygon) => { + const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; + const regionData = {...originalRegionData}; + regionData.value = Number.NaN; + polygon.setAll({ + tooltipText: tooltipTextWhileFetching(regionData), + fill: am5.color(theme.palette.text.disabled), + }); + }); + } + }, [ + aggregatedMax, + defaultFill, + idValuesToMap, + isFetching, + legend, + longLoad, + polygonSeries, + selectedScenario, + theme.palette.text.disabled, + tooltipText, + tooltipTextWhileFetching, + values, + ]); + return ; +} + +function getColorFromLegend( + value: number, + legend: HeatmapLegend, + aggregatedMinMax?: {min: number; max: number} +): am5.Color { + // assume legend stops are absolute + let normalizedValue = value; + // if aggregated values (min/max) are properly set, the legend items are already normalized => need to normalize value too + if (aggregatedMinMax && aggregatedMinMax.min < aggregatedMinMax.max) { + const {min: aggregatedMin, max: aggregatedMax} = aggregatedMinMax; + normalizedValue = (value - aggregatedMin) / (aggregatedMax - aggregatedMin); + } else if (aggregatedMinMax) { + // log error if any of the above checks fail + console.error('Error: invalid MinMax array in getColorFromLegend', [value, legend, aggregatedMinMax]); + // return completely transparent fill if errors occur + return am5.color('rgba(0,0,0,0)'); + } + if (normalizedValue <= legend.steps[0].value) { + return am5.color(legend.steps[0].color); + } else if (normalizedValue >= legend.steps[legend.steps.length - 1].value) { + return am5.color(legend.steps[legend.steps.length - 1].color); + } else { + let upperTick = legend.steps[0]; + let lowerTick = legend.steps[0]; + for (let i = 1; i < legend.steps.length; i++) { + if (normalizedValue <= legend.steps[i].value) { + upperTick = legend.steps[i]; + lowerTick = legend.steps[i - 1]; + break; + } + } + return am5.Color.interpolate( + (normalizedValue - lowerTick.value) / (upperTick.value - lowerTick.value), + am5.color(lowerTick.color), + am5.color(upperTick.color) + ); + } +} diff --git a/frontend/src/components/MapComponents/LockMaxValue.tsx b/frontend/src/components/MapComponents/LockMaxValue.tsx new file mode 100644 index 00000000..ffe0f1c4 --- /dev/null +++ b/frontend/src/components/MapComponents/LockMaxValue.tsx @@ -0,0 +1,34 @@ +import {Tooltip} from '@mui/material'; +import {LockOpen} from '@mui/icons-material'; +import {IconButton} from '@mui/material'; +import LockIcon from '@mui/icons-material/Lock'; +import { useTheme } from '@mui/material'; + +interface LockMaxValueProps { + setFixedLegendMaxValue: (value: number | null) => void; + fixedLegendMaxValue: number | null; + aggregatedMax: number; + t: (key: string) => string; +} + +export default function LockMaxValue({ + setFixedLegendMaxValue, + fixedLegendMaxValue, + aggregatedMax, + t, +}: LockMaxValueProps) { + const theme = useTheme(); + return ( + + setFixedLegendMaxValue(fixedLegendMaxValue ? null : aggregatedMax)} + size='small' + sx={{padding: theme.spacing(0)}} + > + {fixedLegendMaxValue ? : } + + + ); +} diff --git a/frontend/src/components/MapComponents/SearchBar.tsx b/frontend/src/components/MapComponents/SearchBar.tsx new file mode 100644 index 00000000..15f8f0f0 --- /dev/null +++ b/frontend/src/components/MapComponents/SearchBar.tsx @@ -0,0 +1,137 @@ +import Container from '@mui/material/Container'; +import {Box, Autocomplete} from '@mui/material'; +import SearchIcon from '@mui/icons-material/Search'; +import {SyntheticEvent, useEffect, useState} from 'react'; +import {Feature, FeatureCollection, FeatureProperties} from '../../types/Maptypes'; +import MapAdapter from '../../utils/MapAdapter'; + +interface SearchBarProps { + data: string | FeatureCollection; + defaultValue?: FeatureProperties; + sortProperty?: string; + optionLabel: (option: FeatureProperties) => string; + autoCompleteValue: FeatureProperties; + optionEqualProperty?: string; + valueEqualProperty?: string; + onChange: (event: SyntheticEvent, value: FeatureProperties | null) => void; + placeholder?: string; + background?: string; + borderColor?: string; + borderColorHover?: string; + borderColorFocus?: string; +} +export default function SearchBar({ + data, + defaultValue, + sortProperty, + optionLabel, + autoCompleteValue, + optionEqualProperty = 'id', + valueEqualProperty = 'id', + onChange, + placeholder = '', + background = '#F0F0F2', + borderColor = '#D2D1DB', + borderColorHover = '#998BF5', + borderColorFocus = '#543CF0', +}: SearchBarProps) { + const [featureproperties, setFeatureProperties] = useState([]); + + // fetch data from URL, add default value and sort by sortProperty + useEffect(() => { + const fetchData = async () => { + const geoData = await MapAdapter(data); + const properties = geoData.features.map((feature: Feature) => { + return feature.properties; + }); + if (defaultValue) properties.push(defaultValue); + if (sortProperty) { + properties.sort((a: FeatureProperties, b: FeatureProperties) => { + return a[sortProperty].toString().localeCompare(b[sortProperty].toString()); + }); + setFeatureProperties(properties); + } + }; + fetchData(); + }, [sortProperty, defaultValue, data, optionLabel]); + return ( + + + + option[optionEqualProperty] === value[valueEqualProperty]} + // onChange of input dispatch new selected district or initial value (ags: 00000, name: germany) if input is cleared + onChange={onChange} + // enable clearing/resetting the input field with escape key + clearOnEscape + // automatically highlights first option + autoHighlight + // selects highlighted option on focus loss + //autoSelect + // provide countyList as options for drop down + options={featureproperties} + // group dropdown contents by first letter (json array needs to be sorted alphabetically by name for this to work correctly) + groupBy={sortProperty ? (option) => option[sortProperty].toString()[0] : undefined} + // provide function to display options in dropdown menu + getOptionLabel={optionLabel} + sx={{ + flexGrow: 1, + //disable outline for any children + '& *:focus': {outline: 'none'}, + }} + // override default input field, placeholder is a fallback, as value should always be a selected district or germany (initial/default value) + renderInput={(params) => ( +
+ +
+ )} + /> +
+
+ ); +} From 63cc75c7cf4c44ad0609b5c8b8c3a6339f5c97f9 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 30 May 2024 13:52:14 +0200 Subject: [PATCH 002/119] Implemented Generalized map and linechart --- frontend/src/App.tsx | 37 +-- frontend/src/DataContext.tsx | 244 ++++++++++++++++++ .../LineChartComponents/LineChart.tsx | 61 +++-- .../src/components/LineChartContainer.tsx | 128 +++++++++ frontend/src/components/MainContentTabs.tsx | 3 +- .../components/MapComponents/HeatLegend.tsx | 17 +- .../MapComponents/HeatLegendEdit.tsx | 149 +++++------ .../src/components/MapComponents/HeatMap.tsx | 46 ++-- .../components/MapComponents/LockMaxValue.tsx | 5 +- .../components/MapComponents/SearchBar.tsx | 35 ++- frontend/src/components/MapContainer.tsx | 227 ++++++++++++++++ frontend/src/store/MapSlice.ts | 20 ++ frontend/src/store/index.ts | 2 + frontend/src/types/map.ts | 19 ++ 14 files changed, 828 insertions(+), 165 deletions(-) create mode 100644 frontend/src/DataContext.tsx create mode 100644 frontend/src/components/LineChartContainer.tsx create mode 100644 frontend/src/components/MapContainer.tsx create mode 100644 frontend/src/store/MapSlice.ts create mode 100644 frontend/src/types/map.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b166b83d..53fdb818 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -7,7 +7,7 @@ import {Provider} from 'react-redux'; import './App.scss'; import TopBar from './components/TopBar'; -import Sidebar from './components/Sidebar'; +import MapContainer from './components/MapContainer'; import MainContent from './components/MainContent'; import {Persistor, Store} from './store'; import Box from '@mui/material/Box'; @@ -19,6 +19,7 @@ import {selectDistrict} from './store/DataSelectionSlice'; import {I18nextProvider, useTranslation} from 'react-i18next'; import i18n from './util/i18n'; import {MUILocalization} from './components/shared/MUILocalization'; +import {DataProvider} from 'DataContext'; /** * This is the root element of the React application. It divides the main screen area into the three main components. @@ -32,23 +33,25 @@ export default function App(): JSX.Element { - - - - - - + + + + + + + + - + diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx new file mode 100644 index 00000000..d9f2a709 --- /dev/null +++ b/frontend/src/DataContext.tsx @@ -0,0 +1,244 @@ +import {createContext, useState, useEffect} from 'react'; +import React from 'react'; +import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; +import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; +import { + SelectedScenarioPercentileData, + useGetPercentileDataQuery, + useGetSimulationDataByDateQuery, +} from 'store/services/scenarioApi'; +import {CaseDataByNode} from 'types/caseData'; +import {GroupResponse} from 'types/group'; +import {SimulationDataByNode} from 'types/scenario'; +import {Dictionary} from 'util/util'; +import {useGetCaseDataByDistrictQuery} from 'store/services/caseDataApi'; +import {useGetMultipleSimulationDataByNodeQuery} from 'store/services/scenarioApi'; +// Create the context +export const DataContext = createContext<{ + mapData: {id: string; value: number}[] | undefined; + areMapValuesFetching: boolean; + caseData: CaseDataByNode | undefined; + simulationData: SimulationDataByNode[] | undefined; + percentileData: SelectedScenarioPercentileData[] | undefined; + groupFilterData: Dictionary | undefined; + isChartDataFetching: boolean; +}>({ + mapData: undefined, + areMapValuesFetching: false, + caseData: undefined, + simulationData: undefined, + percentileData: undefined, + groupFilterData: undefined, + isChartDataFetching: false, +}); + +// Create a provider component +export const DataProvider = ({children}: {children: React.ReactNode}) => { + const [mapData, setMapData] = useState<{id: string; value: number}[] | undefined>(undefined); + + const selectedScenario = 1; + const activeScenarios = [0, 1, 2]; + const selectedCompartment = 'Infected'; + const selectedDate = '2021-09-04'; + const selectedDistrict = {RS: '11000', GEN: 'Berlin', BEZ: 'Berlin'}; + const groupFilterList = { + '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87': { + id: '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87', + name: 'aaaaa', + isVisible: true, + groups: { + age: ['age_0', 'age_1', 'age_2'], + gender: ['male', 'nonbinary', 'female'], + }, + }, + 'f9b26583-78df-440f-b35d-bf22b5c3a439': { + id: 'f9b26583-78df-440f-b35d-bf22b5c3a439', + name: 'lllllllllllllll', + isVisible: true, + groups: { + age: ['age_0', 'age_1', 'age_3', 'age_2', 'age_4'], + gender: ['female', 'male', 'nonbinary'], + }, + }, + }; + const scenarioList = { + scenarios: { + '1': { + id: 1, + label: 'Summer 2021 Simulation 1', + }, + '2': { + id: 2, + label: 'Summer 2021 Simulation 2', + }, + }, + compartments: [ + 'Infected', + 'Hospitalized', + 'ICU', + 'Dead', + 'Exposed', + 'Recovered', + 'Carrier', + 'Susceptible', + 'CarrierT', + 'CarrierTV1', + 'CarrierTV2', + 'CarrierV1', + 'CarrierV2', + 'ExposedV1', + 'ExposedV2', + 'HospitalizedV1', + 'HospitalizedV2', + 'ICUV1', + 'ICUV2', + 'InfectedT', + 'InfectedTV1', + 'InfectedTV2', + 'InfectedV1', + 'InfectedV2', + 'SusceptibleV1', + ], + }; + + // useEffect(() => { + // const fetchMapValues = async () => { + // try { + // setAreMapValuesFetching(true); + // const response = await fetch( + // 'http://hpcagainstcorona.sc.bs.dlr.de:8000/api/v1/simulation/2/2021-09-04/?all&groups=total&compartments=Infected' + // ); + // const result = (await response.json()) as { + // results: Array<{name: string; day: string; compartments: {Infected: number}}>; + // }; + // console.log(result); + // let data: Array<{id: string; value: number}> = []; + // result.results.forEach((element: {name: string; day: string; compartments: {Infected: number}}) => { + // data.push({id: element.name, value: element.compartments.Infected}); + // }); + // data = data.filter((element) => { + // return element.id != '00000'; + // }); + // setMapData(data); + // setAreMapValuesFetching(false); + // } catch (error) { + // console.error('Error fetching data:', error); + // } + // }; + // fetchMapValues(); + // }, []); + + const {data: mapSimulationData, isFetching: mapIsSimulationDataFetching} = useGetSimulationDataByDateQuery( + { + id: selectedScenario ?? 0, + day: selectedDate ?? '', + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment || !selectedDate} + ); + + const {data: mapCaseData, isFetching: mapIsCaseDataFetching} = useGetCaseDataByDateQuery( + { + day: selectedDate ?? '', + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: selectedScenario === null || selectedScenario > 0 || !selectedCompartment || !selectedDate} + ); + + const {data: chartSimulationData, isFetching: chartSimulationFetching} = useGetMultipleSimulationDataByNodeQuery( + { + // Filter only scenarios (scenario id 0 is case data) + ids: activeScenarios + ? activeScenarios.filter((s: number) => { + return ( + s !== 0 && + (scenarioList.scenarios[s.toString() as keyof typeof scenarioList.scenarios] as { + id: number; + label: string; + }) + ); + }) + : [], + node: selectedDistrict.RS, + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: !selectedCompartment} + ); + + const {data: chartCaseData, isFetching: chartCaseDataFetching} = useGetCaseDataByDistrictQuery( + { + node: selectedDistrict.RS, + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: !selectedCompartment} + ); + + const {data: percentileData} = useGetPercentileDataQuery( + { + id: selectedScenario as number, + node: selectedDistrict.RS, + groups: ['total'], + compartment: selectedCompartment as string, + }, + {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment} + ); + + const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( + groupFilterList && selectedScenario && selectedDistrict && selectedCompartment + ? Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + return { + id: selectedScenario, + node: selectedDistrict.RS, + compartment: selectedCompartment, + groupFilter: groupFilter, + }; + }) + : [] + ); + + useEffect(() => { + if (mapSimulationData) { + setMapData( + mapSimulationData.results + .filter((element: {name: string}) => { + return element.name != '00000'; + }) + .map((element: {name: string; compartments: {[key: string]: number}}) => { + return {id: element.name, value: element.compartments[selectedCompartment]} as {id: string; value: number}; + }) + ); + } else if (mapCaseData) { + setMapData( + mapCaseData.results + .filter((element: {name: string}) => { + return element.name != '00000'; + }) + .map((element: {name: string; compartments: {[key: string]: number}}) => { + return {id: element.name, value: element.compartments[selectedCompartment]}; + }) + ); + } + }, [mapSimulationData, selectedCompartment, mapCaseData]); + + return ( + + {children} + + ); +}; diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 07dfd0e8..0e7b06f8 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -16,17 +16,13 @@ import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; import {darken, useTheme} from '@mui/material/styles'; import Box from '@mui/material/Box'; import {useTranslation} from 'react-i18next'; -import {dateToISOString} from '../../utils/DateFormatter'; -import { - SimulationDataByNode, - CaseDataByNode, - GroupResponse, - GroupData, - Dictionary, - SelectedScenarioPercentileData, - PercentileDataByDay, - Scenario, -} from '../../types/LineCharttypes'; +import {Dictionary, dateToISOString} from '../../util/util'; +import React from 'react'; +import {Scenario} from 'store/ScenarioSlice'; +import {SelectedScenarioPercentileData, PercentileDataByDay} from 'store/services/scenarioApi'; +import {CaseDataByNode} from 'types/caseData'; +import {GroupResponse, GroupData} from 'types/group'; +import {SimulationDataByNode} from 'types/scenario'; interface ScenarioList { scenarios: { @@ -390,7 +386,18 @@ export default function LineChart({ }; }, // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). - [scenarioList, groupFilterList, selectedScenario, defaultT, customT, theme, isDataSet, chartId, simulationDataChartName, localization.overrides] + [ + scenarioList, + groupFilterList, + selectedScenario, + defaultT, + customT, + theme, + isDataSet, + chartId, + simulationDataChartName, + localization.overrides, + ] ); // Effect to hide disabled scenarios (and show them again if not hidden anymore) @@ -644,10 +651,10 @@ export default function LineChart({ ? customT(localization.overrides['dateFormat']) : defaultT('dateFormat') }")} (${ - localization.overrides && localization.overrides[`compartments.${selectedCompartment}`] - ? customT(localization.overrides[`compartments.${selectedCompartment}`]) - : defaultT(`compartments.${selectedCompartment}`) - }) + localization.overrides && localization.overrides[`compartments.${selectedCompartment}`] + ? customT(localization.overrides[`compartments.${selectedCompartment}`]) + : defaultT(`compartments.${selectedCompartment}`) + }) ${ // Table row for each series of an active scenario @@ -834,7 +841,25 @@ export default function LineChart({ setReferenceDayX(); // Re-run this effect whenever the data itself changes (or any variable the effect uses) - }, [percentileData, simulationData, caseData, groupFilterData, activeScenarios, selectedScenario, scenarioList, selectedCompartment, theme, groupFilterList, defaultT, customT, setReferenceDayX, chartId, isSeriesSet, localization.overrides, exportedFileName]); + }, [ + percentileData, + simulationData, + caseData, + groupFilterData, + activeScenarios, + selectedScenario, + scenarioList, + selectedCompartment, + theme, + groupFilterList, + defaultT, + customT, + setReferenceDayX, + chartId, + isSeriesSet, + localization.overrides, + exportedFileName, + ]); return ( <> @@ -852,4 +877,4 @@ export default function LineChart({ /> ); -} \ No newline at end of file +} diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx new file mode 100644 index 00000000..baccb9d3 --- /dev/null +++ b/frontend/src/components/LineChartContainer.tsx @@ -0,0 +1,128 @@ +import {useCallback, useContext, useEffect, useState} from 'react'; +import LineChart from './LineChartComponents/LineChart'; + +import LoadingContainer from './shared/LoadingContainer'; +import {useTheme} from '@mui/material'; +import {useTranslation} from 'react-i18next'; +import {DataContext} from '../DataContext'; +import React from 'react'; +import {useAppDispatch} from 'store/hooks'; +import {Dictionary} from 'util/util'; +import {Scenario} from 'store/ScenarioSlice'; +import {SimulationDataByNode} from 'types/scenario'; +import {CaseDataByNode} from 'types/caseData'; +import {SelectedScenarioPercentileData} from 'store/services/scenarioApi'; +import {GroupResponse} from 'types/group'; + +export default function LineChartContainer() { + const theme = useTheme(); + const {t: tBackend} = useTranslation('backend'); + + const [groupFilterList, setGroupFilterList] = useState({ + '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87': { + id: '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87', + name: 'aaaaa', + isVisible: true, + groups: { + age: ['age_0', 'age_1', 'age_2'], + gender: ['male', 'nonbinary', 'female'], + }, + }, + 'f9b26583-78df-440f-b35d-bf22b5c3a439': { + id: 'f9b26583-78df-440f-b35d-bf22b5c3a439', + name: 'lllllllllllllll', + isVisible: true, + groups: { + age: ['age_0', 'age_1', 'age_3', 'age_2', 'age_4'], + gender: ['female', 'male', 'nonbinary'], + }, + }, + }); + + const [scenarioList, setScenarioList] = useState({ + scenarios: { + '1': { + id: 1, + label: 'Summer 2021 Simulation 1', + }, + '2': { + id: 2, + label: 'Summer 2021 Simulation 2', + }, + }, + compartments: [ + 'Infected', + 'Hospitalized', + 'ICU', + 'Dead', + 'Exposed', + 'Recovered', + 'Carrier', + 'Susceptible', + 'CarrierT', + 'CarrierTV1', + 'CarrierTV2', + 'CarrierV1', + 'CarrierV2', + 'ExposedV1', + 'ExposedV2', + 'HospitalizedV1', + 'HospitalizedV2', + 'ICUV1', + 'ICUV2', + 'InfectedT', + 'InfectedTV1', + 'InfectedTV2', + 'InfectedV1', + 'InfectedV2', + 'SusceptibleV1', + ], + }); + + const [activeScenarios, setActiveScenarios] = useState([0, 1, 2]); + + const [selectedDate, setSelectedDate] = useState('2021-09-01'); + const [referenceDayBottom, setReferenceDayBottom] = useState(null); + + const simulationDataChartName = useCallback( + (scenario: Scenario) => tBackend(`scenario-names.${scenario.label}`), + [tBackend] + ); + + const {caseData, simulationData, percentileData, groupFilterData, isChartDataFetching} = useContext(DataContext); + + const dispatch = useAppDispatch(); + + // useEffect(() => { + // dispatch(setSelectedDateInChart({chartId: 'lineChart1', date: selectedDate})); + // }, [selectedDate, dispatch]); + + return ( + + } + minDate={'2021-04-01'} + maxDate={'2021-10-27'} + selectedScenario={1} + activeScenarios={activeScenarios} + referenceDay={'2021-07-01'} + selectedCompartment={'Infected'} + groupFilterList={groupFilterList} + scenarioList={scenarioList} + localization={{}} + /> + + ); +} diff --git a/frontend/src/components/MainContentTabs.tsx b/frontend/src/components/MainContentTabs.tsx index b2b5c5d5..dc4b86cd 100644 --- a/frontend/src/components/MainContentTabs.tsx +++ b/frontend/src/components/MainContentTabs.tsx @@ -16,6 +16,7 @@ import {useTranslation} from 'react-i18next'; import {useAppDispatch, useAppSelector} from '../store/hooks'; import {selectTab} from '../store/UserPreferenceSlice'; import {useTheme} from '@mui/material/styles'; +import LineChartContainer from './LineChartContainer'; // Lazily load the tab contents to enable code splitting. const ParameterEditor = React.lazy(() => import('./ParameterEditor')); @@ -60,7 +61,7 @@ export default function MainContentTabs() { - + diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/MapComponents/HeatLegend.tsx index 30cd3859..9ef0a5c0 100644 --- a/frontend/src/components/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/MapComponents/HeatLegend.tsx @@ -1,7 +1,8 @@ import {useEffect} from 'react'; import * as am5 from '@amcharts/amcharts5'; -import {HeatmapLegend} from '../../types/Maptypes'; import {Box} from '@mui/material'; +import React from 'react'; +import {HeatmapLegend} from 'types/heatmapLegend'; interface HeatProps { legend: HeatmapLegend; @@ -78,7 +79,19 @@ export default function HeatLegend({ root.dispose(); exposeLegend(null); }; - }, [id, min, max, displayText, exposeLegend, unique_id, legend, localization.numberFormatter, tooltipStartColor, tooltipEndColor, localization]); + }, [ + id, + min, + max, + displayText, + exposeLegend, + unique_id, + legend, + localization.numberFormatter, + tooltipStartColor, + tooltipEndColor, + localization, + ]); return ; } diff --git a/frontend/src/components/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/MapComponents/HeatLegendEdit.tsx index 175c1024..0300c0b9 100644 --- a/frontend/src/components/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/MapComponents/HeatLegendEdit.tsx @@ -1,19 +1,19 @@ -import React, { useCallback, useEffect, useState } from "react"; -import Box from "@mui/material/Box"; -import Button from "@mui/material/Button"; -import Dialog from "@mui/material/Dialog"; -import FormControl from "@mui/material/FormControl"; -import Grid from "@mui/material/Grid"; -import IconButton from "@mui/material/IconButton"; -import MenuItem from "@mui/material/MenuItem"; -import Select, { SelectChangeEvent } from "@mui/material/Select"; -import Tooltip from "@mui/material/Tooltip"; -import Typography from "@mui/material/Typography"; -import HeatLegend from "./HeatLegend"; -import EditIcon from "@mui/icons-material/Edit"; -import legendPresets from "../../assets/heatmap_legend_presets.json?url"; -import { HeatmapLegend } from "../../types/Maptypes"; -import { useTheme } from "@mui/material"; +import React, {useCallback, useEffect, useState} from 'react'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import FormControl from '@mui/material/FormControl'; +import Grid from '@mui/material/Grid'; +import IconButton from '@mui/material/IconButton'; +import MenuItem from '@mui/material/MenuItem'; +import Select, {SelectChangeEvent} from '@mui/material/Select'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import HeatLegend from './HeatLegend'; +import EditIcon from '@mui/icons-material/Edit'; +import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; +import {useTheme} from '@mui/material'; +import {HeatmapLegend} from 'types/heatmapLegend'; interface HeatLegendEditProps { setLegend: (legend: HeatmapLegend) => void; @@ -44,14 +44,10 @@ export default function HeatLegendEdit({ const defaultLegends = useDefaultLegends(); // This contains all legends from the presets file. - const [heatmapLegends, setHeatmapLegends] = useState>( - [] - ); + const [heatmapLegends, setHeatmapLegends] = useState>([]); // This contains the default legend and the presets and is used for displaying the list to the user. - const [availablePresets, setAvailablePresets] = useState< - Array - >([]); + const [availablePresets, setAvailablePresets] = useState>([]); // modal state const [heatLegendEditOpen, setHeatLegendEditOpen] = React.useState(false); @@ -69,45 +65,45 @@ export default function HeatLegendEdit({ // This effect loads the presets file, once the modal is opened the first time. useEffect(() => { - const fetchData = async () => { - try { - const response = await fetch(legendPresets, { - headers: { - "Content-Type": "application/json", - Accept: "application/json", - }, - }); - const data = await response.json(); - data.forEach((legend: HeatmapLegend) => { - if (legend.isNormalized) { - legend.steps.forEach((step) => { - //set step to normalized values - step.value = - step.value / legend.steps[legend.steps.length - 1].value; + if (heatmapLegends.length === 0 && heatLegendEditOpen) { + fetch(legendPresets, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + (presetList: HeatmapLegend[]) => { + presetList.forEach((legend) => { + if (legend.isNormalized) { + legend.steps.forEach((step) => { + //set step to normalized values + step.value = step.value / legend.steps[legend.steps.length - 1].value; + }); + } }); + + setHeatmapLegends(presetList); + }, + // Reject Promise + () => { + console.warn('Did not receive proper heatmap legend presets'); } - }); - setHeatmapLegends(data); - } catch (error) { - console.warn("Did not receive proper heatmap legend presets"); - } - }; - if (heatLegendEditOpen && heatmapLegends.length === 0) { - fetchData(); + ); } - }, [setHeatmapLegends, heatLegendEditOpen, heatmapLegends.length]); + }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen]); // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". useEffect(() => { if (selectedScenario == null || defaultLegends.length === 0) { return; } - const scenarioDefault = - defaultLegends[selectedScenario % defaultLegends.length]; + const scenarioDefault = defaultLegends[selectedScenario % defaultLegends.length]; const legends = [...heatmapLegends]; legends.unshift(scenarioDefault); - if (legend.name !== "Default" && heatmapLegends.length === 0) { + if (legend.name !== 'Default' && heatmapLegends.length === 0) { legends.push(legend); } @@ -116,53 +112,43 @@ export default function HeatLegendEdit({ // This effect updates the selected legend, if a default legend is selected and the scenario changes. useEffect(() => { - if (legend.name !== "Default" && legend.name !== "uninitialized") { + if (legend.name !== 'Default' && legend.name !== 'uninitialized') { return; } - selectLegendByName("Default"); + selectLegendByName('Default'); }, [legend, selectLegendByName]); return ( <> - + setHeatLegendEditOpen(true)} - aria-label={t("heatlegend.edit")} - size="small" - sx={{ padding: theme.spacing(0), marginBottom: theme.spacing(1) }} + aria-label={t('heatlegend.edit')} + size='small' + sx={{padding: theme.spacing(0), marginBottom: theme.spacing(1)}} > - setHeatLegendEditOpen(false)} - > + setHeatLegendEditOpen(false)}> - + - - @@ -205,9 +188,7 @@ export default function HeatLegendEdit({ */ function useDefaultLegends(): Array { const theme = useTheme(); - const [defaultLegends, setDefaultLegends] = useState>( - [] - ); + const [defaultLegends, setDefaultLegends] = useState>([]); useEffect(() => { const legends: Array = []; @@ -220,7 +201,7 @@ function useDefaultLegends(): Array { value: j / (stepCount - 1), }); } - legends.push({ name: "Default", isNormalized: true, steps }); + legends.push({name: 'Default', isNormalized: true, steps}); } setDefaultLegends(legends); }, [theme, setDefaultLegends]); diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index 4df31d07..d93a3956 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -2,14 +2,15 @@ import {useState, useEffect, useRef, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import * as am5map from '@amcharts/amcharts5/map'; import {GeoJSON} from 'geojson'; -import {FeatureCollection} from '../../types/Maptypes'; -import svgZoomResetURL from '../../assets/svg/zoom_out_map_white_24dp.svg?url'; -import svgZoomInURL from '../../assets/svg/zoom_in_white_24dp.svg?url'; -import svgZoomOutURL from '../../assets/svg/zoom_out_white_24dp.svg?url'; -import {FeatureProperties} from '../../types/Maptypes'; -import {HeatmapLegend} from '../../types/Maptypes'; +import {FeatureCollection} from '../../types/map'; +import svgZoomResetURL from '../../../assets/svg/zoom_out_map_white_24dp.svg?url'; +import svgZoomInURL from '../../../assets/svg/zoom_in_white_24dp.svg?url'; +import svgZoomOutURL from '../../../assets/svg/zoom_out_white_24dp.svg?url'; +import {FeatureProperties} from '../../types/map'; +import {HeatmapLegend} from '../../types/heatmapLegend'; import {Box} from '@mui/material'; import {useTheme} from '@mui/material/styles'; +import React from 'react'; interface MapProps { mapData: undefined | FeatureCollection; @@ -32,14 +33,8 @@ interface MapProps { legendRef: React.MutableRefObject; longLoad: boolean; setLongLoad: (longLoad: boolean) => void; + formatNumber: (value: number) => string; idValuesToMap?: string; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; } export default function HeatMap({ @@ -63,8 +58,8 @@ export default function HeatMap({ legendRef, longLoad, setLongLoad, + formatNumber, idValuesToMap = 'id', - localization, }: MapProps) { const theme = useTheme(); const lastSelectedPolygon = useRef(null); @@ -210,7 +205,7 @@ export default function HeatMap({ polygonTemplate.events.on('pointerover', (e) => { if (legendRef.current) { const value = (e.target.dataItem?.dataContext as {value: number}).value; - legendRef.current.showValue(value, localization.numberFormatter(value)); + legendRef.current.showValue(value, formatNumber(value)); } }); //hide tooltip on heat legend when not hovering anymore event @@ -226,7 +221,18 @@ export default function HeatMap({ chart.dispose(); root.dispose(); }; - }, [defaultFill, fillOpacity, mapId, theme.palette.background.default, theme.palette.primary.main, localization.numberFormatter, mapData, setSelectedArea, defaultSelectedValue, legendRef, localization]); + }, [ + defaultFill, + fillOpacity, + mapId, + theme.palette.background.default, + theme.palette.primary.main, + formatNumber, + mapData, + setSelectedArea, + defaultSelectedValue, + legendRef, + ]); // Highlight selected district useEffect(() => { @@ -270,10 +276,7 @@ export default function HeatMap({ if (selectedScenario !== null && !isFetching) { polygonSeries.mapPolygons.each((polygon) => { - const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; - - const regionData = {...originalRegionData}; - + const regionData = polygon.dataItem?.dataContext as FeatureProperties; regionData.value = map.get(regionData[idValuesToMap]) ?? Number.NaN; // determine fill color let fillColor = am5.color(defaultFill); @@ -296,8 +299,7 @@ export default function HeatMap({ }); } else if (longLoad || !values) { polygonSeries.mapPolygons.each((polygon) => { - const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; - const regionData = {...originalRegionData}; + const regionData = polygon.dataItem?.dataContext as FeatureProperties; regionData.value = Number.NaN; polygon.setAll({ tooltipText: tooltipTextWhileFetching(regionData), diff --git a/frontend/src/components/MapComponents/LockMaxValue.tsx b/frontend/src/components/MapComponents/LockMaxValue.tsx index ffe0f1c4..68e39e81 100644 --- a/frontend/src/components/MapComponents/LockMaxValue.tsx +++ b/frontend/src/components/MapComponents/LockMaxValue.tsx @@ -2,7 +2,8 @@ import {Tooltip} from '@mui/material'; import {LockOpen} from '@mui/icons-material'; import {IconButton} from '@mui/material'; import LockIcon from '@mui/icons-material/Lock'; -import { useTheme } from '@mui/material'; +import {useTheme} from '@mui/material'; +import React from 'react'; interface LockMaxValueProps { setFixedLegendMaxValue: (value: number | null) => void; @@ -17,7 +18,7 @@ export default function LockMaxValue({ aggregatedMax, t, }: LockMaxValueProps) { - const theme = useTheme(); + const theme = useTheme(); return ( string; @@ -26,8 +26,8 @@ export default function SearchBar({ sortProperty, optionLabel, autoCompleteValue, - optionEqualProperty = 'id', - valueEqualProperty = 'id', + optionEqualProperty = 'id', + valueEqualProperty = 'id', onChange, placeholder = '', background = '#F0F0F2', @@ -39,21 +39,18 @@ export default function SearchBar({ // fetch data from URL, add default value and sort by sortProperty useEffect(() => { - const fetchData = async () => { - const geoData = await MapAdapter(data); - const properties = geoData.features.map((feature: Feature) => { - return feature.properties; + if (!data) return; + const properties = data.features.map((feature: Feature) => { + return feature.properties; + }); + if (defaultValue) properties.push(defaultValue); + if (sortProperty) { + properties.sort((a: FeatureProperties, b: FeatureProperties) => { + return a[sortProperty].toString().localeCompare(b[sortProperty].toString()); }); - if (defaultValue) properties.push(defaultValue); - if (sortProperty) { - properties.sort((a: FeatureProperties, b: FeatureProperties) => { - return a[sortProperty].toString().localeCompare(b[sortProperty].toString()); - }); - setFeatureProperties(properties); - } - }; - fetchData(); - }, [sortProperty, defaultValue, data, optionLabel]); + setFeatureProperties(properties); + } + }, [data, defaultValue, sortProperty]); return ( ({ + RS: '00000', + GEN: t('germany'), + BEZ: '', + id: -1, + }); + + const [aggregatedMax, setAggregatedMax] = useState(1); + const legendRef = useRef(null); + const [legend, setLegend] = useState({ + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + }); + const [longLoad, setLongLoad] = useState(false); + const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); + const selectedScenario = 0; + + const { + mapData, + areMapValuesFetching, + }: {mapData: {id: string; value: number}[] | undefined; areMapValuesFetching: boolean} = useContext(DataContext) || { + mapData: [], + areMapValuesFetching: false, + }; + + const [geodata, setGeodata] = useState(); + + const selectedCompartment = 'Infected'; + + const calculateToolTip = useCallback( + (regionData: FeatureProperties) => { + const bez = t(`BEZ.${regionData.BEZ}`); + const compartmentName = tBackend(`infection-states.${selectedCompartment}`); + return selectedScenario !== null && selectedCompartment + ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(Number(regionData.value))}` + : `${bez} {GEN}`; + }, + [formatNumber, t, tBackend] + ); + + const calculateToolTipFetching = useCallback( + (regionData: FeatureProperties) => { + const bez = t(`BEZ.${regionData.BEZ}`); + return `${bez} {GEN}`; + }, + [t] + ); + + const defaultValue = useMemo(() => { + return { + RS: '00000', + GEN: t('germany'), + BEZ: '', + id: -1, + }; + }, [t]); + + // fetch geojson + useEffect(() => { + fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + // resolve Promise + (geojson: FeatureCollection) => { + setGeodata(geojson); + }, + // reject promise + () => { + console.warn('Failed to fetch geoJSON'); + } + ); + }, []); + + const dispatch = useAppDispatch(); + + useEffect(() => { + dispatch(setSelectedDistrict(defaultValue)); + }, [defaultValue, dispatch]); + + useEffect(() => { + dispatch(setSelectedDistrict(selectedArea)); + }, [selectedArea, dispatch]); + + // const localization = useMemo(() => { + // return {numberFormatter: formatNumber}; + // }, [formatNumber]); + + return ( + + + `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} + autoCompleteValue={{ + RS: selectedArea['RS'], + GEN: selectedArea['GEN'], + BEZ: selectedArea['BEZ'], + id: selectedArea['id'], + }} + onChange={(_event, option) => { + if (option) { + setSelectedArea(option); + } + }} + placeholder={`${selectedArea.GEN}${selectedArea.BEZ ? ` (${t(`BEZ.${selectedArea.BEZ}`)})` : ''}`} + /> + + + + + + + { + // move exposed legend item (or null if disposed) into ref + legendRef.current = legend; + }} + min={0} + // use math.round to convert the numbers to integers + max={ + legend.isNormalized + ? Math.round(aggregatedMax) + : Math.round(legend.steps[legend.steps.length - 1].value) + } + displayText={true} + id={'legend'} + localization={{numberFormatter: formatNumber}} + /> + + + + + + + + + + + + + ); +} diff --git a/frontend/src/store/MapSlice.ts b/frontend/src/store/MapSlice.ts new file mode 100644 index 00000000..6fc564e6 --- /dev/null +++ b/frontend/src/store/MapSlice.ts @@ -0,0 +1,20 @@ +import {createSlice} from '@reduxjs/toolkit'; + +export interface SelectedDistrict { + [key: string]: string | number; +} + +const initialState: SelectedDistrict = {}; + +export const SelectedDistrictSlice = createSlice({ + name: 'SelectedDistrict', + initialState, + reducers: { + setSelectedDistrict: (state, action) => { + state = action.payload as SelectedDistrict; + }, + }, +}); + +export const {setSelectedDistrict} = SelectedDistrictSlice.actions; +export default SelectedDistrictSlice.reducer; diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts index 729b48fb..4f338759 100644 --- a/frontend/src/store/index.ts +++ b/frontend/src/store/index.ts @@ -11,6 +11,7 @@ import {persistReducer, persistStore} from 'redux-persist'; import storage from 'redux-persist/lib/storage'; import {groupApi} from './services/groupApi'; import LayoutReducer from './LayoutSlice'; +import MapReducer from './MapSlice'; const persistConfig = { key: 'root', @@ -23,6 +24,7 @@ const rootReducer = combineReducers({ scenarioList: ScenarioReducer, userPreference: UserPreferenceReducer, layoutSlice: LayoutReducer, + mapSlice: MapReducer, [caseDataApi.reducerPath]: caseDataApi.reducer, [scenarioApi.reducerPath]: scenarioApi.reducer, [groupApi.reducerPath]: groupApi.reducer, diff --git a/frontend/src/types/map.ts b/frontend/src/types/map.ts new file mode 100644 index 00000000..c76f76c5 --- /dev/null +++ b/frontend/src/types/map.ts @@ -0,0 +1,19 @@ +export interface Feature { + type: string; + geometry: { + type: string; + coordinates: number[]; + }; + properties: { + [key: string]: string | number; + }; + id?: string | number; +} +export interface FeatureCollection { + type: string; + features: Feature[]; +} + +export interface FeatureProperties { + [key: string]: string | number; +} From 4ffcd3dd5daacdc9e81d4d1882f8314f99c8f418 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 30 May 2024 18:18:22 +0200 Subject: [PATCH 003/119] Connected Line Chart --- frontend/src/DataContext.tsx | 147 ++++++++++-------- .../src/components/LineChartContainer.tsx | 18 ++- frontend/src/components/MainContentTabs.tsx | 5 +- .../components/MapComponents/HeatLegend.tsx | 31 +--- .../MapComponents/HeatLegendEdit.tsx | 12 +- .../src/components/MapComponents/HeatMap.tsx | 3 +- frontend/src/components/MapContainer.tsx | 84 ++++------ frontend/src/store/LineChartSlice.ts | 26 ++++ frontend/src/store/MapSlice.ts | 8 +- frontend/src/store/index.ts | 2 + 10 files changed, 169 insertions(+), 167 deletions(-) create mode 100644 frontend/src/store/LineChartSlice.ts diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index d9f2a709..05f3473d 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,4 +1,4 @@ -import {createContext, useState, useEffect} from 'react'; +import {createContext, useState, useEffect, useMemo} from 'react'; import React from 'react'; import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; @@ -13,6 +13,8 @@ import {SimulationDataByNode} from 'types/scenario'; import {Dictionary} from 'util/util'; import {useGetCaseDataByDistrictQuery} from 'store/services/caseDataApi'; import {useGetMultipleSimulationDataByNodeQuery} from 'store/services/scenarioApi'; +import {useAppSelector} from 'store/hooks'; + // Create the context export const DataContext = createContext<{ mapData: {id: string; value: number}[] | undefined; @@ -39,67 +41,71 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const selectedScenario = 1; const activeScenarios = [0, 1, 2]; const selectedCompartment = 'Infected'; - const selectedDate = '2021-09-04'; - const selectedDistrict = {RS: '11000', GEN: 'Berlin', BEZ: 'Berlin'}; - const groupFilterList = { - '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87': { - id: '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87', - name: 'aaaaa', - isVisible: true, - groups: { - age: ['age_0', 'age_1', 'age_2'], - gender: ['male', 'nonbinary', 'female'], - }, - }, - 'f9b26583-78df-440f-b35d-bf22b5c3a439': { - id: 'f9b26583-78df-440f-b35d-bf22b5c3a439', - name: 'lllllllllllllll', - isVisible: true, - groups: { - age: ['age_0', 'age_1', 'age_3', 'age_2', 'age_4'], - gender: ['female', 'male', 'nonbinary'], + const selectedDistrict = useAppSelector((state) => state.mapSlice); + const selectedDate = useAppSelector((state) => state.lineChartSlice.selectedDate); + const groupFilterList = useMemo(() => { + return { + '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87': { + id: '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87', + name: 'aaaaa', + isVisible: true, + groups: { + age: ['age_0', 'age_1', 'age_2'], + gender: ['male', 'nonbinary', 'female'], + }, }, - }, - }; - const scenarioList = { - scenarios: { - '1': { - id: 1, - label: 'Summer 2021 Simulation 1', + 'f9b26583-78df-440f-b35d-bf22b5c3a439': { + id: 'f9b26583-78df-440f-b35d-bf22b5c3a439', + name: 'lllllllllllllll', + isVisible: true, + groups: { + age: ['age_0', 'age_1', 'age_3', 'age_2', 'age_4'], + gender: ['female', 'male', 'nonbinary'], + }, }, - '2': { - id: 2, - label: 'Summer 2021 Simulation 2', + }; + }, []); + const scenarioList = useMemo(() => { + return { + scenarios: { + '1': { + id: 1, + label: 'Summer 2021 Simulation 1', + }, + '2': { + id: 2, + label: 'Summer 2021 Simulation 2', + }, }, - }, - compartments: [ - 'Infected', - 'Hospitalized', - 'ICU', - 'Dead', - 'Exposed', - 'Recovered', - 'Carrier', - 'Susceptible', - 'CarrierT', - 'CarrierTV1', - 'CarrierTV2', - 'CarrierV1', - 'CarrierV2', - 'ExposedV1', - 'ExposedV2', - 'HospitalizedV1', - 'HospitalizedV2', - 'ICUV1', - 'ICUV2', - 'InfectedT', - 'InfectedTV1', - 'InfectedTV2', - 'InfectedV1', - 'InfectedV2', - 'SusceptibleV1', - ], - }; + compartments: [ + 'Infected', + 'Hospitalized', + 'ICU', + 'Dead', + 'Exposed', + 'Recovered', + 'Carrier', + 'Susceptible', + 'CarrierT', + 'CarrierTV1', + 'CarrierTV2', + 'CarrierV1', + 'CarrierV2', + 'ExposedV1', + 'ExposedV2', + 'HospitalizedV1', + 'HospitalizedV2', + 'ICUV1', + 'ICUV2', + 'InfectedT', + 'InfectedTV1', + 'InfectedTV2', + 'InfectedV1', + 'InfectedV2', + 'SusceptibleV1', + ], + }; + }, []); // useEffect(() => { // const fetchMapValues = async () => { @@ -161,30 +167,36 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { ); }) : [], - node: selectedDistrict.RS, + node: selectedDistrict.RS as string, groups: ['total'], compartments: [selectedCompartment ?? ''], }, - {skip: !selectedCompartment} + {skip: !selectedCompartment || Object.keys(selectedDistrict).length == 0} ); const {data: chartCaseData, isFetching: chartCaseDataFetching} = useGetCaseDataByDistrictQuery( { - node: selectedDistrict.RS, + node: selectedDistrict.RS as string, groups: ['total'], compartments: [selectedCompartment ?? ''], }, - {skip: !selectedCompartment} + {skip: !selectedCompartment || Object.keys(selectedDistrict).length == 0} ); const {data: percentileData} = useGetPercentileDataQuery( { id: selectedScenario as number, - node: selectedDistrict.RS, + node: selectedDistrict.RS as string, groups: ['total'], compartment: selectedCompartment as string, }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment} + { + skip: + selectedScenario === null || + selectedScenario === 0 || + !selectedCompartment || + Object.keys(selectedDistrict).length == 0, + } ); const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( @@ -194,12 +206,13 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { .map((groupFilter) => { return { id: selectedScenario, - node: selectedDistrict.RS, + node: selectedDistrict.RS as string, compartment: selectedCompartment, groupFilter: groupFilter, }; }) - : [] + : [], + {skip: !selectedDistrict || Object.keys(selectedDistrict).length == 0} ); useEffect(() => { diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index baccb9d3..43ad3cd1 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -1,6 +1,6 @@ import {useCallback, useContext, useEffect, useState} from 'react'; import LineChart from './LineChartComponents/LineChart'; - +import {SelectedScenarioPercentileData} from 'store/services/scenarioApi'; import LoadingContainer from './shared/LoadingContainer'; import {useTheme} from '@mui/material'; import {useTranslation} from 'react-i18next'; @@ -11,8 +11,9 @@ import {Dictionary} from 'util/util'; import {Scenario} from 'store/ScenarioSlice'; import {SimulationDataByNode} from 'types/scenario'; import {CaseDataByNode} from 'types/caseData'; -import {SelectedScenarioPercentileData} from 'store/services/scenarioApi'; import {GroupResponse} from 'types/group'; +import {setSelectedDateStore} from 'store/LineChartSlice'; +import {setReferenceDayBottom} from 'store/LayoutSlice'; export default function LineChartContainer() { const theme = useTheme(); @@ -82,7 +83,7 @@ export default function LineChartContainer() { const [activeScenarios, setActiveScenarios] = useState([0, 1, 2]); const [selectedDate, setSelectedDate] = useState('2021-09-01'); - const [referenceDayBottom, setReferenceDayBottom] = useState(null); + const [referenceDayb, setReferenceDayb] = useState(0); const simulationDataChartName = useCallback( (scenario: Scenario) => tBackend(`scenario-names.${scenario.label}`), @@ -92,10 +93,13 @@ export default function LineChartContainer() { const {caseData, simulationData, percentileData, groupFilterData, isChartDataFetching} = useContext(DataContext); const dispatch = useAppDispatch(); + useEffect(() => { + dispatch(setSelectedDateStore(selectedDate)); + }, [selectedDate, dispatch]); - // useEffect(() => { - // dispatch(setSelectedDateInChart({chartId: 'lineChart1', date: selectedDate})); - // }, [selectedDate, dispatch]); + useEffect(() => { + dispatch(setReferenceDayBottom(referenceDayb)); + }, [referenceDayb, dispatch]); return ( import('./ParameterEditor')); -const SimulationChart = React.lazy(() => import('./SimulationChart')); +const SimulationChart = React.lazy(() => import('./LineChartContainer')); /** * This component manages the main content, which is a collection of tabs that the user can navigate through. By default @@ -61,7 +60,7 @@ export default function MainContentTabs() { - + diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/MapComponents/HeatLegend.tsx index 9ef0a5c0..b04ee853 100644 --- a/frontend/src/components/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/MapComponents/HeatLegend.tsx @@ -14,13 +14,7 @@ interface HeatProps { tooltipStartColor?: string; tooltipEndColor?: string; style?: React.CSSProperties; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + formatNumber: (value: number) => string; } export default function HeatLegend({ @@ -37,9 +31,9 @@ export default function HeatLegend({ margin: '5px', height: '50px', }, - localization, + formatNumber, }: HeatProps) { - const unique_id = id + String(Date.now() + Math.random()); // "guarantee" unique id + const unique_id = id + String(Date.now() + Math.random()); useEffect(() => { const root = am5.Root.new(unique_id); @@ -47,9 +41,9 @@ export default function HeatLegend({ am5.HeatLegend.new(root, { orientation: 'horizontal', startValue: min, - startText: displayText ? localization.numberFormatter(min) : ' ', + startText: displayText ? formatNumber(min) : ' ', endValue: max, - endText: displayText ? localization.numberFormatter(max) : ' ', + endText: displayText ? formatNumber(max) : ' ', // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color startColor: am5.color(tooltipStartColor), endColor: am5.color(tooltipEndColor), @@ -79,19 +73,8 @@ export default function HeatLegend({ root.dispose(); exposeLegend(null); }; - }, [ - id, - min, - max, - displayText, - exposeLegend, - unique_id, - legend, - localization.numberFormatter, - tooltipStartColor, - tooltipEndColor, - localization, - ]); + + }, [displayText, formatNumber, legend.isNormalized, legend.steps, max, min, tooltipEndColor, tooltipStartColor]); return ; } diff --git a/frontend/src/components/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/MapComponents/HeatLegendEdit.tsx index 0300c0b9..d51f5c0b 100644 --- a/frontend/src/components/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/MapComponents/HeatLegendEdit.tsx @@ -20,13 +20,7 @@ interface HeatLegendEditProps { legend: HeatmapLegend; selectedScenario?: number | null; t?: (key: string) => string; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + formatNumber: (value: number) => string; } /** * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. @@ -36,7 +30,7 @@ export default function HeatLegendEdit({ legend, selectedScenario = null, t = (key: string) => key, - localization, + formatNumber, }: HeatLegendEditProps) { const theme = useTheme(); // // This contains all legends using the default colors. @@ -159,7 +153,7 @@ export default function HeatLegendEdit({ max={preset.steps[preset.steps.length - 1].value} displayText={!preset.isNormalized} id={preset.name} - localization={localization} + formatNumber={formatNumber} /> diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index d93a3956..cfbd2067 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -276,7 +276,8 @@ export default function HeatMap({ if (selectedScenario !== null && !isFetching) { polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as FeatureProperties; + const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; + const regionData = {...originalRegionData}; regionData.value = map.get(regionData[idValuesToMap]) ?? Number.NaN; // determine fill color let fillColor = am5.color(defaultFill); diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/MapContainer.tsx index 9a315a4b..d24be01c 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/MapContainer.tsx @@ -15,7 +15,7 @@ import LoadingContainer from './shared/LoadingContainer'; import {NumberFormatter} from 'util/hooks'; import HeatMap from './MapComponents/HeatMap'; import HeatLegend from './MapComponents/HeatLegend'; -import {setSelectedDistrict} from 'store/MapSlice'; +import {setSelectedAreaStore} from 'store/MapSlice'; import {DataContext} from 'DataContext'; import SidebarTabs from './Sidebar/SidebarTabs'; import Container from '@mui/material/Container'; @@ -23,16 +23,21 @@ import Box from '@mui/material/Box'; export default function MapContainer() { const {t} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); const {formatNumber} = NumberFormatter(i18n.language, 1, 0); + const {t: tBackend} = useTranslation('backend'); const theme = useTheme(); - const [selectedArea, setSelectedArea] = useState({ - RS: '00000', - GEN: t('germany'), - BEZ: '', - id: -1, - }); + const defaultValue = useMemo(() => { + return { + RS: '00000', + GEN: t('germany'), + BEZ: '', + id: -1, + }; + }, [t]); + + const [geoData, setGeoData] = useState(); + const [selectedArea, setSelectedArea] = useState(defaultValue); const [aggregatedMax, setAggregatedMax] = useState(1); const legendRef = useRef(null); @@ -56,7 +61,20 @@ export default function MapContainer() { areMapValuesFetching: false, }; - const [geodata, setGeodata] = useState(); + // Fetch Map Coordinates and properties from GeoJSON file via URL and set GeoData + useEffect(() => { + const fetchData = async () => { + const geoData = await fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }); + const geoDataJson = await geoData.json(); + setGeoData(geoDataJson); + }; + fetchData(); + }, []); const selectedCompartment = 'Infected'; @@ -79,50 +97,12 @@ export default function MapContainer() { [t] ); - const defaultValue = useMemo(() => { - return { - RS: '00000', - GEN: t('germany'), - BEZ: '', - id: -1, - }; - }, [t]); - - // fetch geojson - useEffect(() => { - fetch(data, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - // resolve Promise - (geojson: FeatureCollection) => { - setGeodata(geojson); - }, - // reject promise - () => { - console.warn('Failed to fetch geoJSON'); - } - ); - }, []); - const dispatch = useAppDispatch(); useEffect(() => { - dispatch(setSelectedDistrict(defaultValue)); - }, [defaultValue, dispatch]); - - useEffect(() => { - dispatch(setSelectedDistrict(selectedArea)); + dispatch(setSelectedAreaStore(selectedArea)); }, [selectedArea, dispatch]); - // const localization = useMemo(() => { - // return {numberFormatter: formatNumber}; - // }, [formatNumber]); - return ( @@ -213,7 +193,7 @@ export default function MapContainer() { legend={legend} setLegend={setLegend} selectedScenario={selectedScenario} - localization={{numberFormatter: formatNumber}} + formatNumber={formatNumber} /> diff --git a/frontend/src/store/LineChartSlice.ts b/frontend/src/store/LineChartSlice.ts new file mode 100644 index 00000000..3483a757 --- /dev/null +++ b/frontend/src/store/LineChartSlice.ts @@ -0,0 +1,26 @@ +import {createSlice, PayloadAction} from '@reduxjs/toolkit'; + +interface LineChartState { + selectedDate: string; + referenceDate: number | null; +} +const initialState: LineChartState = { + selectedDate: '', + referenceDate: null, +}; + +export const LineChartSlice = createSlice({ + name: 'LineChart', + initialState, + reducers: { + setSelectedDateStore: (state, action: PayloadAction) => { + state.selectedDate = action.payload; + }, + setReferenceDateStore: (state, action: PayloadAction) => { + state.referenceDate = action.payload; + }, + }, +}); + +export const {setSelectedDateStore, setReferenceDateStore} = LineChartSlice.actions; +export default LineChartSlice.reducer; diff --git a/frontend/src/store/MapSlice.ts b/frontend/src/store/MapSlice.ts index 6fc564e6..86fef01e 100644 --- a/frontend/src/store/MapSlice.ts +++ b/frontend/src/store/MapSlice.ts @@ -7,14 +7,14 @@ export interface SelectedDistrict { const initialState: SelectedDistrict = {}; export const SelectedDistrictSlice = createSlice({ - name: 'SelectedDistrict', + name: 'SelectedArea', initialState, reducers: { - setSelectedDistrict: (state, action) => { - state = action.payload as SelectedDistrict; + setSelectedAreaStore: (_state, action) => { + return action.payload as SelectedDistrict; }, }, }); -export const {setSelectedDistrict} = SelectedDistrictSlice.actions; +export const {setSelectedAreaStore} = SelectedDistrictSlice.actions; export default SelectedDistrictSlice.reducer; diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts index 4f338759..71211135 100644 --- a/frontend/src/store/index.ts +++ b/frontend/src/store/index.ts @@ -12,6 +12,7 @@ import storage from 'redux-persist/lib/storage'; import {groupApi} from './services/groupApi'; import LayoutReducer from './LayoutSlice'; import MapReducer from './MapSlice'; +import LineChartReducer from './LineChartSlice'; const persistConfig = { key: 'root', @@ -25,6 +26,7 @@ const rootReducer = combineReducers({ userPreference: UserPreferenceReducer, layoutSlice: LayoutReducer, mapSlice: MapReducer, + lineChartSlice: LineChartReducer, [caseDataApi.reducerPath]: caseDataApi.reducer, [scenarioApi.reducerPath]: scenarioApi.reducer, [groupApi.reducerPath]: groupApi.reducer, From 57e7ccbc2a478764e892c917fbf458d68dbf22b0 Mon Sep 17 00:00:00 2001 From: Violini Date: Fri, 31 May 2024 10:30:40 +0200 Subject: [PATCH 004/119] :hammer: Generalize Map component and LineChart component. --- frontend/src/DataContext.tsx | 125 +++--------------- .../LineChartComponents/LineChart.tsx | 10 +- .../src/components/LineChartContainer.tsx | 94 ++++--------- .../components/MapComponents/HeatLegend.tsx | 3 +- .../src/components/MapComponents/HeatMap.tsx | 3 +- frontend/src/components/MapContainer.tsx | 56 +++++--- 6 files changed, 85 insertions(+), 206 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 05f3473d..fa4f1b6a 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,4 +1,4 @@ -import {createContext, useState, useEffect, useMemo} from 'react'; +import {createContext, useState, useEffect} from 'react'; import React from 'react'; import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; @@ -38,101 +38,13 @@ export const DataContext = createContext<{ export const DataProvider = ({children}: {children: React.ReactNode}) => { const [mapData, setMapData] = useState<{id: string; value: number}[] | undefined>(undefined); - const selectedScenario = 1; - const activeScenarios = [0, 1, 2]; - const selectedCompartment = 'Infected'; - const selectedDistrict = useAppSelector((state) => state.mapSlice); - const selectedDate = useAppSelector((state) => state.lineChartSlice.selectedDate); - const groupFilterList = useMemo(() => { - return { - '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87': { - id: '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87', - name: 'aaaaa', - isVisible: true, - groups: { - age: ['age_0', 'age_1', 'age_2'], - gender: ['male', 'nonbinary', 'female'], - }, - }, - 'f9b26583-78df-440f-b35d-bf22b5c3a439': { - id: 'f9b26583-78df-440f-b35d-bf22b5c3a439', - name: 'lllllllllllllll', - isVisible: true, - groups: { - age: ['age_0', 'age_1', 'age_3', 'age_2', 'age_4'], - gender: ['female', 'male', 'nonbinary'], - }, - }, - }; - }, []); - const scenarioList = useMemo(() => { - return { - scenarios: { - '1': { - id: 1, - label: 'Summer 2021 Simulation 1', - }, - '2': { - id: 2, - label: 'Summer 2021 Simulation 2', - }, - }, - compartments: [ - 'Infected', - 'Hospitalized', - 'ICU', - 'Dead', - 'Exposed', - 'Recovered', - 'Carrier', - 'Susceptible', - 'CarrierT', - 'CarrierTV1', - 'CarrierTV2', - 'CarrierV1', - 'CarrierV2', - 'ExposedV1', - 'ExposedV2', - 'HospitalizedV1', - 'HospitalizedV2', - 'ICUV1', - 'ICUV2', - 'InfectedT', - 'InfectedTV1', - 'InfectedTV2', - 'InfectedV1', - 'InfectedV2', - 'SusceptibleV1', - ], - }; - }, []); - - // useEffect(() => { - // const fetchMapValues = async () => { - // try { - // setAreMapValuesFetching(true); - // const response = await fetch( - // 'http://hpcagainstcorona.sc.bs.dlr.de:8000/api/v1/simulation/2/2021-09-04/?all&groups=total&compartments=Infected' - // ); - // const result = (await response.json()) as { - // results: Array<{name: string; day: string; compartments: {Infected: number}}>; - // }; - // console.log(result); - // let data: Array<{id: string; value: number}> = []; - // result.results.forEach((element: {name: string; day: string; compartments: {Infected: number}}) => { - // data.push({id: element.name, value: element.compartments.Infected}); - // }); - // data = data.filter((element) => { - // return element.id != '00000'; - // }); - // setMapData(data); - // setAreMapValuesFetching(false); - // } catch (error) { - // console.error('Error fetching data:', error); - // } - // }; - // fetchMapValues(); - // }, []); + const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedDate = useAppSelector((state) => state.dataSelection.date); + const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); + const scenarioList = useAppSelector((state) => state.scenarioList); const {data: mapSimulationData, isFetching: mapIsSimulationDataFetching} = useGetSimulationDataByDateQuery( { @@ -160,33 +72,33 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { ? activeScenarios.filter((s: number) => { return ( s !== 0 && - (scenarioList.scenarios[s.toString() as keyof typeof scenarioList.scenarios] as { + (scenarioList.scenarios[s] as { id: number; label: string; }) ); }) : [], - node: selectedDistrict.RS as string, + node: selectedDistrict, groups: ['total'], compartments: [selectedCompartment ?? ''], }, - {skip: !selectedCompartment || Object.keys(selectedDistrict).length == 0} + {skip: !selectedCompartment || selectedDistrict === undefined} ); const {data: chartCaseData, isFetching: chartCaseDataFetching} = useGetCaseDataByDistrictQuery( { - node: selectedDistrict.RS as string, + node: selectedDistrict, groups: ['total'], compartments: [selectedCompartment ?? ''], }, - {skip: !selectedCompartment || Object.keys(selectedDistrict).length == 0} + {skip: !selectedCompartment || selectedDistrict === undefined || Object.keys(selectedDistrict).length == 0} ); const {data: percentileData} = useGetPercentileDataQuery( { id: selectedScenario as number, - node: selectedDistrict.RS as string, + node: selectedDistrict, groups: ['total'], compartment: selectedCompartment as string, }, @@ -195,6 +107,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { selectedScenario === null || selectedScenario === 0 || !selectedCompartment || + selectedDistrict === undefined || Object.keys(selectedDistrict).length == 0, } ); @@ -206,17 +119,17 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { .map((groupFilter) => { return { id: selectedScenario, - node: selectedDistrict.RS as string, + node: selectedDistrict, compartment: selectedCompartment, groupFilter: groupFilter, }; }) : [], - {skip: !selectedDistrict || Object.keys(selectedDistrict).length == 0} + {skip: !selectedDistrict || selectedDistrict === undefined || Object.keys(selectedDistrict).length == 0} ); useEffect(() => { - if (mapSimulationData) { + if (mapSimulationData && selectedCompartment) { setMapData( mapSimulationData.results .filter((element: {name: string}) => { @@ -226,7 +139,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { return {id: element.name, value: element.compartments[selectedCompartment]} as {id: string; value: number}; }) ); - } else if (mapCaseData) { + } else if (mapCaseData && selectedCompartment) { setMapData( mapCaseData.results .filter((element: {name: string}) => { diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 0e7b06f8..27e4b6ee 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -47,8 +47,8 @@ interface LineChartProps { caseData: CaseDataByNode; percentileData?: SelectedScenarioPercentileData[] | null; groupFilterData?: Dictionary | null; - minDate: string; - maxDate: string; + minDate?: string | null; + maxDate?: string | null; selectedScenario?: number | null; activeScenarios?: number[] | null; referenceDay?: string | null; @@ -75,12 +75,12 @@ export default function LineChart({ simulationDataChartName, percentileData = null, groupFilterData = null, - minDate, - maxDate, + minDate = null, + maxDate = null, selectedScenario = null, activeScenarios = null, referenceDay = null, - selectedCompartment = '', + selectedCompartment, scenarioList, groupFilterList = null, exportedFileName = 'Data', diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index 43ad3cd1..6ac5bbfd 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -6,81 +6,27 @@ import {useTheme} from '@mui/material'; import {useTranslation} from 'react-i18next'; import {DataContext} from '../DataContext'; import React from 'react'; -import {useAppDispatch} from 'store/hooks'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; import {Dictionary} from 'util/util'; import {Scenario} from 'store/ScenarioSlice'; import {SimulationDataByNode} from 'types/scenario'; import {CaseDataByNode} from 'types/caseData'; import {GroupResponse} from 'types/group'; -import {setSelectedDateStore} from 'store/LineChartSlice'; +import {selectDate} from 'store/DataSelectionSlice'; import {setReferenceDayBottom} from 'store/LayoutSlice'; export default function LineChartContainer() { const theme = useTheme(); const {t: tBackend} = useTranslation('backend'); - - const [groupFilterList, setGroupFilterList] = useState({ - '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87': { - id: '3ce4e1be-1a8c-42a4-841d-8e93e2ab0d87', - name: 'aaaaa', - isVisible: true, - groups: { - age: ['age_0', 'age_1', 'age_2'], - gender: ['male', 'nonbinary', 'female'], - }, - }, - 'f9b26583-78df-440f-b35d-bf22b5c3a439': { - id: 'f9b26583-78df-440f-b35d-bf22b5c3a439', - name: 'lllllllllllllll', - isVisible: true, - groups: { - age: ['age_0', 'age_1', 'age_3', 'age_2', 'age_4'], - gender: ['female', 'male', 'nonbinary'], - }, - }, - }); - - const [scenarioList, setScenarioList] = useState({ - scenarios: { - '1': { - id: 1, - label: 'Summer 2021 Simulation 1', - }, - '2': { - id: 2, - label: 'Summer 2021 Simulation 2', - }, - }, - compartments: [ - 'Infected', - 'Hospitalized', - 'ICU', - 'Dead', - 'Exposed', - 'Recovered', - 'Carrier', - 'Susceptible', - 'CarrierT', - 'CarrierTV1', - 'CarrierTV2', - 'CarrierV1', - 'CarrierV2', - 'ExposedV1', - 'ExposedV2', - 'HospitalizedV1', - 'HospitalizedV2', - 'ICUV1', - 'ICUV2', - 'InfectedT', - 'InfectedTV1', - 'InfectedTV2', - 'InfectedV1', - 'InfectedV2', - 'SusceptibleV1', - ], - }); - - const [activeScenarios, setActiveScenarios] = useState([0, 1, 2]); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); + const scenarioList = useAppSelector((state) => state.scenarioList); + const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const selectedDateInStore = useAppSelector((state) => state.dataSelection.date); + const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); + const minDate = useAppSelector((state) => state.dataSelection.minDate); + const maxDate = useAppSelector((state) => state.dataSelection.maxDate); const [selectedDate, setSelectedDate] = useState('2021-09-01'); const [referenceDayb, setReferenceDayb] = useState(0); @@ -94,9 +40,15 @@ export default function LineChartContainer() { const dispatch = useAppDispatch(); useEffect(() => { - dispatch(setSelectedDateStore(selectedDate)); + dispatch(selectDate(selectedDate)); }, [selectedDate, dispatch]); + useEffect(() => { + if (selectedDateInStore) { + setSelectedDate(selectedDateInStore); + } + }, [selectedDateInStore]); + useEffect(() => { dispatch(setReferenceDayBottom(referenceDayb)); }, [referenceDayb, dispatch]); @@ -117,12 +69,12 @@ export default function LineChartContainer() { caseData={caseData as CaseDataByNode} percentileData={percentileData as SelectedScenarioPercentileData[]} groupFilterData={groupFilterData as Dictionary} - minDate={'2021-04-01'} - maxDate={'2021-10-27'} - selectedScenario={1} + minDate={minDate} + maxDate={maxDate} + selectedScenario={selectedScenario} activeScenarios={activeScenarios} - referenceDay={'2021-07-01'} - selectedCompartment={'Infected'} + referenceDay={referenceDay} + selectedCompartment={selectedCompartment ?? ''} groupFilterList={groupFilterList} scenarioList={scenarioList} localization={{}} diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/MapComponents/HeatLegend.tsx index b04ee853..3e86fbc8 100644 --- a/frontend/src/components/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/MapComponents/HeatLegend.tsx @@ -73,7 +73,8 @@ export default function HeatLegend({ root.dispose(); exposeLegend(null); }; - + + // eslint-disable-next-line react-hooks/exhaustive-deps }, [displayText, formatNumber, legend.isNormalized, legend.steps, max, min, tooltipEndColor, tooltipStartColor]); return ; diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index cfbd2067..5e06b684 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -300,7 +300,8 @@ export default function HeatMap({ }); } else if (longLoad || !values) { polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as FeatureProperties; + const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; + const regionData = {...originalRegionData}; regionData.value = Number.NaN; polygon.setAll({ tooltipText: tooltipTextWhileFetching(regionData), diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/MapContainer.tsx index d24be01c..89918d14 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/MapContainer.tsx @@ -4,7 +4,7 @@ import data from '../../assets/lk_germany_reduced.geojson?url'; import {Grid, Stack, useTheme} from '@mui/material'; import * as am5 from '@amcharts/amcharts5'; import React from 'react'; -import {useAppDispatch} from 'store/hooks'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; import {HeatmapLegend} from 'types/heatmapLegend'; import {FeatureProperties, FeatureCollection} from 'types/map'; import i18n from 'util/i18n'; @@ -15,11 +15,12 @@ import LoadingContainer from './shared/LoadingContainer'; import {NumberFormatter} from 'util/hooks'; import HeatMap from './MapComponents/HeatMap'; import HeatLegend from './MapComponents/HeatLegend'; -import {setSelectedAreaStore} from 'store/MapSlice'; import {DataContext} from 'DataContext'; import SidebarTabs from './Sidebar/SidebarTabs'; import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; +import {setSelectedAreaStore} from 'store/MapSlice'; +import {selectDistrict} from 'store/DataSelectionSlice'; export default function MapContainer() { const {t} = useTranslation(); @@ -51,7 +52,7 @@ export default function MapContainer() { }); const [longLoad, setLongLoad] = useState(false); const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); - const selectedScenario = 0; + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); const { mapData, @@ -61,22 +62,28 @@ export default function MapContainer() { areMapValuesFetching: false, }; - // Fetch Map Coordinates and properties from GeoJSON file via URL and set GeoData + // fetch geojson useEffect(() => { - const fetchData = async () => { - const geoData = await fetch(data, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', + fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + // resolve Promise + (geojson: FeatureCollection) => { + setGeoData(geojson); }, - }); - const geoDataJson = await geoData.json(); - setGeoData(geoDataJson); - }; - fetchData(); + // reject promise + () => { + console.warn('Failed to fetch geoJSON'); + } + ); }, []); - const selectedCompartment = 'Infected'; + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); const calculateToolTip = useCallback( (regionData: FeatureProperties) => { @@ -86,7 +93,7 @@ export default function MapContainer() { ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(Number(regionData.value))}` : `${bez} {GEN}`; }, - [formatNumber, t, tBackend] + [formatNumber, selectedCompartment, selectedScenario, t, tBackend] ); const calculateToolTipFetching = useCallback( @@ -99,6 +106,16 @@ export default function MapContainer() { const dispatch = useAppDispatch(); + useEffect(() => { + dispatch( + selectDistrict({ + ags: String(selectedArea['RS']), + name: String(selectedArea['GEN']), + type: String(selectedArea['BEZ']), + }) + ); + }, [selectedArea, dispatch]); + useEffect(() => { dispatch(setSelectedAreaStore(selectedArea)); }, [selectedArea, dispatch]); @@ -118,12 +135,7 @@ export default function MapContainer() { `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} autoCompleteValue={{ From c0642b909b5e0aae9a4529e3f9b858bbe76b4a19 Mon Sep 17 00:00:00 2001 From: Violini Date: Fri, 31 May 2024 11:18:03 +0200 Subject: [PATCH 005/119] :wrench: Memoize HeatMap props and delete temporary Redux Store files. --- .../LineChartComponents/LineChart.tsx | 3 +++ .../src/components/LineChartContainer.tsx | 3 +++ .../components/MapComponents/HeatLegend.tsx | 22 ++++++++++++---- .../MapComponents/HeatLegendEdit.tsx | 3 +++ .../src/components/MapComponents/HeatMap.tsx | 3 +++ .../components/MapComponents/LockMaxValue.tsx | 3 +++ .../components/MapComponents/SearchBar.tsx | 3 +++ frontend/src/components/MapContainer.tsx | 12 ++++----- frontend/src/store/LineChartSlice.ts | 26 ------------------- frontend/src/store/MapSlice.ts | 20 -------------- frontend/src/store/index.ts | 4 --- 11 files changed, 40 insertions(+), 62 deletions(-) delete mode 100644 frontend/src/store/LineChartSlice.ts delete mode 100644 frontend/src/store/MapSlice.ts diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 27e4b6ee..9c62a022 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {useCallback, useEffect, useRef, useState} from 'react'; import {Root} from '@amcharts/amcharts5/.internal/core/Root'; import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index 6ac5bbfd..14b4f53c 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {useCallback, useContext, useEffect, useState} from 'react'; import LineChart from './LineChartComponents/LineChart'; import {SelectedScenarioPercentileData} from 'store/services/scenarioApi'; diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/MapComponents/HeatLegend.tsx index 3e86fbc8..91dd5732 100644 --- a/frontend/src/components/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/MapComponents/HeatLegend.tsx @@ -1,4 +1,7 @@ -import {useEffect} from 'react'; +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import {Box} from '@mui/material'; import React from 'react'; @@ -33,7 +36,7 @@ export default function HeatLegend({ }, formatNumber, }: HeatProps) { - const unique_id = id + String(Date.now() + Math.random()); + const unique_id = useMemo(() => id + String(Date.now() + Math.random()), [id]); useEffect(() => { const root = am5.Root.new(unique_id); @@ -73,9 +76,18 @@ export default function HeatLegend({ root.dispose(); exposeLegend(null); }; - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [displayText, formatNumber, legend.isNormalized, legend.steps, max, min, tooltipEndColor, tooltipStartColor]); + }, [ + displayText, + exposeLegend, + formatNumber, + legend.isNormalized, + legend.steps, + max, + min, + tooltipEndColor, + tooltipStartColor, + unique_id, + ]); return ; } diff --git a/frontend/src/components/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/MapComponents/HeatLegendEdit.tsx index d51f5c0b..0e12e8dc 100644 --- a/frontend/src/components/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/MapComponents/HeatLegendEdit.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import React, {useCallback, useEffect, useState} from 'react'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index 5e06b684..a66725d3 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {useState, useEffect, useRef, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import * as am5map from '@amcharts/amcharts5/map'; diff --git a/frontend/src/components/MapComponents/LockMaxValue.tsx b/frontend/src/components/MapComponents/LockMaxValue.tsx index 68e39e81..7c0a3d72 100644 --- a/frontend/src/components/MapComponents/LockMaxValue.tsx +++ b/frontend/src/components/MapComponents/LockMaxValue.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Tooltip} from '@mui/material'; import {LockOpen} from '@mui/icons-material'; import {IconButton} from '@mui/material'; diff --git a/frontend/src/components/MapComponents/SearchBar.tsx b/frontend/src/components/MapComponents/SearchBar.tsx index 07e26a8f..dbdd1e95 100644 --- a/frontend/src/components/MapComponents/SearchBar.tsx +++ b/frontend/src/components/MapComponents/SearchBar.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import Container from '@mui/material/Container'; import {Box, Autocomplete} from '@mui/material'; import SearchIcon from '@mui/icons-material/Search'; diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/MapContainer.tsx index 89918d14..7b8c4227 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/MapContainer.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {useState, useEffect, useRef, useCallback, useMemo, useContext} from 'react'; import {useTranslation} from 'react-i18next'; import data from '../../assets/lk_germany_reduced.geojson?url'; @@ -19,7 +22,6 @@ import {DataContext} from 'DataContext'; import SidebarTabs from './Sidebar/SidebarTabs'; import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; -import {setSelectedAreaStore} from 'store/MapSlice'; import {selectDistrict} from 'store/DataSelectionSlice'; export default function MapContainer() { @@ -116,10 +118,6 @@ export default function MapContainer() { ); }, [selectedArea, dispatch]); - useEffect(() => { - dispatch(setSelectedAreaStore(selectedArea)); - }, [selectedArea, dispatch]); - return ( { + exposeLegend={useCallback((legend: am5.HeatLegend | null) => { // move exposed legend item (or null if disposed) into ref legendRef.current = legend; - }} + }, [])} min={0} // use math.round to convert the numbers to integers max={ diff --git a/frontend/src/store/LineChartSlice.ts b/frontend/src/store/LineChartSlice.ts deleted file mode 100644 index 3483a757..00000000 --- a/frontend/src/store/LineChartSlice.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {createSlice, PayloadAction} from '@reduxjs/toolkit'; - -interface LineChartState { - selectedDate: string; - referenceDate: number | null; -} -const initialState: LineChartState = { - selectedDate: '', - referenceDate: null, -}; - -export const LineChartSlice = createSlice({ - name: 'LineChart', - initialState, - reducers: { - setSelectedDateStore: (state, action: PayloadAction) => { - state.selectedDate = action.payload; - }, - setReferenceDateStore: (state, action: PayloadAction) => { - state.referenceDate = action.payload; - }, - }, -}); - -export const {setSelectedDateStore, setReferenceDateStore} = LineChartSlice.actions; -export default LineChartSlice.reducer; diff --git a/frontend/src/store/MapSlice.ts b/frontend/src/store/MapSlice.ts deleted file mode 100644 index 86fef01e..00000000 --- a/frontend/src/store/MapSlice.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {createSlice} from '@reduxjs/toolkit'; - -export interface SelectedDistrict { - [key: string]: string | number; -} - -const initialState: SelectedDistrict = {}; - -export const SelectedDistrictSlice = createSlice({ - name: 'SelectedArea', - initialState, - reducers: { - setSelectedAreaStore: (_state, action) => { - return action.payload as SelectedDistrict; - }, - }, -}); - -export const {setSelectedAreaStore} = SelectedDistrictSlice.actions; -export default SelectedDistrictSlice.reducer; diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts index 71211135..729b48fb 100644 --- a/frontend/src/store/index.ts +++ b/frontend/src/store/index.ts @@ -11,8 +11,6 @@ import {persistReducer, persistStore} from 'redux-persist'; import storage from 'redux-persist/lib/storage'; import {groupApi} from './services/groupApi'; import LayoutReducer from './LayoutSlice'; -import MapReducer from './MapSlice'; -import LineChartReducer from './LineChartSlice'; const persistConfig = { key: 'root', @@ -25,8 +23,6 @@ const rootReducer = combineReducers({ scenarioList: ScenarioReducer, userPreference: UserPreferenceReducer, layoutSlice: LayoutReducer, - mapSlice: MapReducer, - lineChartSlice: LineChartReducer, [caseDataApi.reducerPath]: caseDataApi.reducer, [scenarioApi.reducerPath]: scenarioApi.reducer, [groupApi.reducerPath]: groupApi.reducer, From bfcfdd6ed14300242795691c0077d29fe05c3c99 Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 3 Jun 2024 12:48:14 +0200 Subject: [PATCH 006/119] :beetle: Fix data loading on map component. --- frontend/src/DataContext.tsx | 7 +++++-- .../LineChartComponents/LineChart.tsx | 10 +--------- .../src/components/MapComponents/HeatMap.tsx | 17 +++++++---------- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index fa4f1b6a..34defba6 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {createContext, useState, useEffect} from 'react'; import React from 'react'; import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; @@ -129,7 +132,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { ); useEffect(() => { - if (mapSimulationData && selectedCompartment) { + if (mapSimulationData && selectedCompartment && selectedScenario) { setMapData( mapSimulationData.results .filter((element: {name: string}) => { @@ -150,7 +153,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { }) ); } - }, [mapSimulationData, selectedCompartment, mapCaseData]); + }, [mapSimulationData, selectedCompartment, mapCaseData, selectedScenario]); return ( (null); const chartRef = useRef(null); - const [isDataSet, setIsDataSet] = useState(false); - const [isSeriesSet, setIsSeriesSet] = useState(false); - const setReferenceDayX = useCallback(() => { if (!chartRef.current || !rootRef.current || !referenceDay) { return; @@ -381,7 +378,6 @@ export default function LineChart({ }); }); } - setIsSeriesSet(true); // Clean-up function return () => { // Remove all series @@ -396,7 +392,6 @@ export default function LineChart({ defaultT, customT, theme, - isDataSet, chartId, simulationDataChartName, localization.overrides, @@ -644,8 +639,6 @@ export default function LineChart({ series.data.setAll(data); }); - setIsDataSet(true); - // Set up HTML tooltip const tooltipHTML = ` ${'' /* Current Date and selected compartment name */} @@ -859,7 +852,6 @@ export default function LineChart({ customT, setReferenceDayX, chartId, - isSeriesSet, localization.overrides, exportedFileName, ]); diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index a66725d3..dad88701 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -99,9 +99,7 @@ export default function HeatMap({ } else if (values) { let max = 1; values.forEach((value) => { - if (value.value > max) { - max = value.value; - } + max = Math.max(value.value, max); }); setAggregatedMax(max); } @@ -271,13 +269,12 @@ export default function HeatMap({ // set Data useEffect(() => { if (!polygonSeries) return; - const map = new Map(); - if (!values) return; - values.forEach((value) => { - map.set(value.id, value.value); - }); - - if (selectedScenario !== null && !isFetching) { + if (selectedScenario !== null && !isFetching && values && Number.isFinite(aggregatedMax)) { + const map = new Map(); + if (!values) return; + values.forEach((value) => { + map.set(value.id, value.value); + }); polygonSeries.mapPolygons.each((polygon) => { const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; const regionData = {...originalRegionData}; From bb752b8d86be1de50d812f6863d59cb56bcabc0f Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 4 Jun 2024 10:53:38 +0200 Subject: [PATCH 007/119] :beetle: Fix selected items storage --- frontend/src/DataContext.tsx | 90 +++++++++++++++---- .../LineChartComponents/LineChart.tsx | 32 +++---- .../src/components/LineChartContainer.tsx | 19 ++-- .../src/components/MapComponents/HeatMap.tsx | 14 ++- .../components/MapComponents/SearchBar.tsx | 3 +- frontend/src/components/MapContainer.tsx | 10 ++- frontend/src/types/map.ts | 3 + 7 files changed, 121 insertions(+), 50 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 34defba6..3eff0b71 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -10,8 +10,6 @@ import { useGetPercentileDataQuery, useGetSimulationDataByDateQuery, } from 'store/services/scenarioApi'; -import {CaseDataByNode} from 'types/caseData'; -import {GroupResponse} from 'types/group'; import {SimulationDataByNode} from 'types/scenario'; import {Dictionary} from 'util/util'; import {useGetCaseDataByDistrictQuery} from 'store/services/caseDataApi'; @@ -22,24 +20,36 @@ import {useAppSelector} from 'store/hooks'; export const DataContext = createContext<{ mapData: {id: string; value: number}[] | undefined; areMapValuesFetching: boolean; - caseData: CaseDataByNode | undefined; - simulationData: SimulationDataByNode[] | undefined; - percentileData: SelectedScenarioPercentileData[] | undefined; - groupFilterData: Dictionary | undefined; + chartCaseData: {day: string; value: number}[] | undefined; + chartSimulationData: ({day: string; value: number}[] | null)[] | undefined; + chartPercentileData: {day: string; value: number}[][] | undefined; + chartGroupFilterData: Dictionary<{day: string; value: number}[]> | undefined; isChartDataFetching: boolean; }>({ mapData: undefined, areMapValuesFetching: false, - caseData: undefined, - simulationData: undefined, - percentileData: undefined, - groupFilterData: undefined, + chartCaseData: undefined, + chartSimulationData: undefined, + chartPercentileData: undefined, + chartGroupFilterData: undefined, isChartDataFetching: false, }); // Create a provider component export const DataProvider = ({children}: {children: React.ReactNode}) => { const [mapData, setMapData] = useState<{id: string; value: number}[] | undefined>(undefined); + const [processedChartCaseData, setProcessedChartCaseData] = useState<{day: string; value: number}[] | undefined>( + undefined + ); + const [processedChartSimulationData, setProcessedChartSimulationData] = useState< + ({day: string; value: number}[] | null)[] | undefined + >(undefined); + const [processedChartPercentileData, setProcessedChartPercentileData] = useState< + {day: string; value: number}[][] | undefined + >(undefined); + const [processedChartGroupFilterData, setProcessedChartGroupFilterData] = useState< + Dictionary<{day: string; value: number}[]> | undefined + >(undefined); const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); @@ -98,7 +108,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { {skip: !selectedCompartment || selectedDistrict === undefined || Object.keys(selectedDistrict).length == 0} ); - const {data: percentileData} = useGetPercentileDataQuery( + const {data: chartPercentileData} = useGetPercentileDataQuery( { id: selectedScenario as number, node: selectedDistrict, @@ -115,7 +125,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { } ); - const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( + const {data: chartGroupFilterData} = useGetMultipleGroupFilterDataQuery( groupFilterList && selectedScenario && selectedDistrict && selectedCompartment ? Object.values(groupFilterList) .filter((groupFilter) => groupFilter.isVisible) @@ -155,15 +165,63 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { } }, [mapSimulationData, selectedCompartment, mapCaseData, selectedScenario]); + useEffect(() => { + if (chartCaseData && chartCaseData.results && chartCaseData.results.length > 0 && selectedCompartment) { + setProcessedChartCaseData( + chartCaseData.results.map((element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + }) + ); + } + if (chartSimulationData && chartSimulationData.length > 0 && selectedCompartment) { + setProcessedChartSimulationData( + chartSimulationData.map((element: SimulationDataByNode | null) => { + if (element && element.results && element.results.length > 0) { + return element.results.map((element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as { + day: string; + value: number; + }; + }); + } + return []; + }) + ); + } + if (chartPercentileData && chartPercentileData.length > 0 && selectedCompartment) { + setProcessedChartPercentileData( + chartPercentileData.map((element: SelectedScenarioPercentileData) => { + return element.results!.map((element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + }); + }) + ); + } + if (chartGroupFilterData && Object.keys(chartGroupFilterData).length > 0 && selectedCompartment) { + const processedData: Dictionary<{day: string; value: number}[]> = {}; + Object.keys(chartGroupFilterData).forEach((key) => { + processedData[key] = chartGroupFilterData[key].results.map( + (element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as { + day: string; + value: number; + }; + } + ); + }); + setProcessedChartGroupFilterData(processedData); + } + }, [chartCaseData, chartGroupFilterData, chartPercentileData, chartSimulationData, selectedCompartment]); + return ( diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index b07d0ee7..4b6a92f4 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -22,10 +22,6 @@ import {useTranslation} from 'react-i18next'; import {Dictionary, dateToISOString} from '../../util/util'; import React from 'react'; import {Scenario} from 'store/ScenarioSlice'; -import {SelectedScenarioPercentileData, PercentileDataByDay} from 'store/services/scenarioApi'; -import {CaseDataByNode} from 'types/caseData'; -import {GroupResponse, GroupData} from 'types/group'; -import {SimulationDataByNode} from 'types/scenario'; interface ScenarioList { scenarios: { @@ -45,11 +41,11 @@ interface LineChartProps { selectedDate: string; setSelectedDate: (date: string) => void; setReferenceDayBottom?: (docPos: number) => void; - simulationData?: SimulationDataByNode[] | null; + simulationData?: ({day: string; value: number}[] | null)[] | null; simulationDataChartName: (scenario: Scenario) => string; - caseData: CaseDataByNode; - percentileData?: SelectedScenarioPercentileData[] | null; - groupFilterData?: Dictionary | null; + caseData: {day: string; value: number}[] | undefined; + percentileData?: {day: string; value: number}[][] | null; + groupFilterData?: Dictionary<{day: string; value: number}[]> | null; minDate?: string | null; maxDate?: string | null; selectedScenario?: number | null; @@ -574,29 +570,29 @@ export default function LineChart({ // Cycle through scenarios activeScenarios?.forEach((scenarioId) => { if (scenarioId) { - simulationData?.[scenarioId]?.results.forEach(({day, compartments}) => { + simulationData?.[scenarioId]?.forEach(({day, value}) => { // Add scenario data to map (upsert date entry) - dataMap.set(day, {...dataMap.get(day), [scenarioId]: compartments[selectedCompartment]}); + dataMap.set(day, {...dataMap.get(day), [scenarioId]: value}); }); } if (scenarioId === 0) { // Add case data values (upsert date entry) - caseData?.results.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.compartments[selectedCompartment]}); + caseData?.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.value}); }); } }); if (percentileData) { // Add 25th percentile data - percentileData[0].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.compartments[selectedCompartment]}); + percentileData[0].forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.value}); }); // Add 75th percentile data - percentileData[1].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.compartments[selectedCompartment]}); + percentileData[1].forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.value}); }); } @@ -606,10 +602,10 @@ export default function LineChart({ if (groupFilter?.isVisible) { // Check if data for filter is available (else report error) if (groupFilterData[groupFilter.name]) { - groupFilterData[groupFilter.name].results.forEach((entry: GroupData) => { + groupFilterData[groupFilter.name].forEach((entry) => { dataMap.set(entry.day, { ...dataMap.get(entry.day), - [groupFilter.name]: entry.compartments[selectedCompartment], + [groupFilter.name]: entry.value, }); }); } else { diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index 14b4f53c..2b7cdb07 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -3,18 +3,13 @@ import {useCallback, useContext, useEffect, useState} from 'react'; import LineChart from './LineChartComponents/LineChart'; -import {SelectedScenarioPercentileData} from 'store/services/scenarioApi'; import LoadingContainer from './shared/LoadingContainer'; import {useTheme} from '@mui/material'; import {useTranslation} from 'react-i18next'; import {DataContext} from '../DataContext'; import React from 'react'; import {useAppDispatch, useAppSelector} from 'store/hooks'; -import {Dictionary} from 'util/util'; import {Scenario} from 'store/ScenarioSlice'; -import {SimulationDataByNode} from 'types/scenario'; -import {CaseDataByNode} from 'types/caseData'; -import {GroupResponse} from 'types/group'; import {selectDate} from 'store/DataSelectionSlice'; import {setReferenceDayBottom} from 'store/LayoutSlice'; @@ -31,7 +26,7 @@ export default function LineChartContainer() { const minDate = useAppSelector((state) => state.dataSelection.minDate); const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - const [selectedDate, setSelectedDate] = useState('2021-09-01'); + const [selectedDate, setSelectedDate] = useState(selectedDateInStore ? selectedDateInStore : '2021-09-01'); const [referenceDayb, setReferenceDayb] = useState(0); const simulationDataChartName = useCallback( @@ -39,9 +34,11 @@ export default function LineChartContainer() { [tBackend] ); - const {caseData, simulationData, percentileData, groupFilterData, isChartDataFetching} = useContext(DataContext); + const {chartCaseData, chartSimulationData, chartPercentileData, chartGroupFilterData, isChartDataFetching} = + useContext(DataContext); const dispatch = useAppDispatch(); + useEffect(() => { dispatch(selectDate(selectedDate)); }, [selectedDate, dispatch]); @@ -68,10 +65,10 @@ export default function LineChartContainer() { setSelectedDate={setSelectedDate} setReferenceDayBottom={setReferenceDayb} simulationDataChartName={simulationDataChartName} - simulationData={simulationData as SimulationDataByNode[]} - caseData={caseData as CaseDataByNode} - percentileData={percentileData as SelectedScenarioPercentileData[]} - groupFilterData={groupFilterData as Dictionary} + simulationData={chartSimulationData} + caseData={chartCaseData} + percentileData={chartPercentileData} + groupFilterData={chartGroupFilterData} minDate={minDate} maxDate={maxDate} selectedScenario={selectedScenario} diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index dad88701..e568c08e 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -250,8 +250,9 @@ export default function HeatMap({ // Highlight selected polygon polygonSeries.mapPolygons.each((mapPolygon) => { if (mapPolygon.dataItem && mapPolygon.dataItem.dataContext) { - const {id} = mapPolygon.dataItem.dataContext as {id: string}; - if (id == selectedArea.id) { + const areaData = mapPolygon.dataItem.dataContext as FeatureProperties; + const id: string | number = areaData[idValuesToMap]; + if (id == selectedArea[idValuesToMap]) { mapPolygon.states.create('default', { stroke: am5.color(theme.palette.primary.main), strokeWidth: 2, @@ -264,7 +265,14 @@ export default function HeatMap({ } } }); - }, [polygonSeries, selectedArea.id, theme.palette.background.default, theme.palette.primary.main]); + }, [ + idValuesToMap, + polygonSeries, + selectedArea, + selectedArea.id, + theme.palette.background.default, + theme.palette.primary.main, + ]); // set Data useEffect(() => { diff --git a/frontend/src/components/MapComponents/SearchBar.tsx b/frontend/src/components/MapComponents/SearchBar.tsx index dbdd1e95..ef52afd0 100644 --- a/frontend/src/components/MapComponents/SearchBar.tsx +++ b/frontend/src/components/MapComponents/SearchBar.tsx @@ -53,7 +53,8 @@ export default function SearchBar({ }); setFeatureProperties(properties); } - }, [data, defaultValue, sortProperty]); + console.log(autoCompleteValue); + }, [autoCompleteValue, data, defaultValue, sortProperty]); return ( state.dataSelection.district); + const defaultValue = useMemo(() => { return { RS: '00000', @@ -40,7 +42,11 @@ export default function MapContainer() { }, [t]); const [geoData, setGeoData] = useState(); - const [selectedArea, setSelectedArea] = useState(defaultValue); + const [selectedArea, setSelectedArea] = useState( + storeSelectedArea.ags != '00000' + ? {RS: storeSelectedArea.ags, GEN: storeSelectedArea.name, BEZ: storeSelectedArea.type} + : defaultValue + ); const [aggregatedMax, setAggregatedMax] = useState(1); const legendRef = useRef(null); @@ -148,6 +154,8 @@ export default function MapContainer() { } }} placeholder={`${selectedArea.GEN}${selectedArea.BEZ ? ` (${t(`BEZ.${selectedArea.BEZ}`)})` : ''}`} + optionEqualProperty='RS' + valueEqualProperty='RS' /> diff --git a/frontend/src/types/map.ts b/frontend/src/types/map.ts index c76f76c5..80b3b706 100644 --- a/frontend/src/types/map.ts +++ b/frontend/src/types/map.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + export interface Feature { type: string; geometry: { From 84d578881456f9e0a7f6dff6572b866b4b46c035 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 4 Jun 2024 13:03:19 +0200 Subject: [PATCH 008/119] :beetle: Fix tooltip heatlegend --- .../src/components/MapComponents/HeatMap.tsx | 18 +++++++-------- .../components/MapComponents/SearchBar.tsx | 23 ++++++++----------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/MapComponents/HeatMap.tsx index e568c08e..06d90bdb 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/MapComponents/HeatMap.tsx @@ -205,7 +205,7 @@ export default function HeatMap({ //show tooltip on heat legend when hovering polygonTemplate.events.on('pointerover', (e) => { if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as {value: number}).value; + const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; legendRef.current.showValue(value, formatNumber(value)); } }); @@ -224,15 +224,15 @@ export default function HeatMap({ }; }, [ defaultFill, + defaultSelectedValue, fillOpacity, - mapId, - theme.palette.background.default, - theme.palette.primary.main, formatNumber, + legendRef, mapData, + mapId, setSelectedArea, - defaultSelectedValue, - legendRef, + theme.palette.background.default, + theme.palette.primary.main, ]); // Highlight selected district @@ -284,8 +284,7 @@ export default function HeatMap({ map.set(value.id, value.value); }); polygonSeries.mapPolygons.each((polygon) => { - const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; - const regionData = {...originalRegionData}; + const regionData = polygon.dataItem?.dataContext as FeatureProperties; regionData.value = map.get(regionData[idValuesToMap]) ?? Number.NaN; // determine fill color let fillColor = am5.color(defaultFill); @@ -308,8 +307,7 @@ export default function HeatMap({ }); } else if (longLoad || !values) { polygonSeries.mapPolygons.each((polygon) => { - const originalRegionData = polygon.dataItem?.dataContext as FeatureProperties; - const regionData = {...originalRegionData}; + const regionData = polygon.dataItem?.dataContext as FeatureProperties; regionData.value = Number.NaN; polygon.setAll({ tooltipText: tooltipTextWhileFetching(regionData), diff --git a/frontend/src/components/MapComponents/SearchBar.tsx b/frontend/src/components/MapComponents/SearchBar.tsx index ef52afd0..37672fda 100644 --- a/frontend/src/components/MapComponents/SearchBar.tsx +++ b/frontend/src/components/MapComponents/SearchBar.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import Container from '@mui/material/Container'; -import {Box, Autocomplete} from '@mui/material'; +import {Box, Autocomplete, useTheme} from '@mui/material'; import SearchIcon from '@mui/icons-material/Search'; import {SyntheticEvent, useEffect, useState} from 'react'; import React from 'react'; @@ -33,12 +33,9 @@ export default function SearchBar({ valueEqualProperty = 'id', onChange, placeholder = '', - background = '#F0F0F2', - borderColor = '#D2D1DB', - borderColorHover = '#998BF5', - borderColorFocus = '#543CF0', }: SearchBarProps) { const [featureproperties, setFeatureProperties] = useState([]); + const theme = useTheme(); // fetch data from URL, add default value and sort by sortProperty useEffect(() => { @@ -53,8 +50,7 @@ export default function SearchBar({ }); setFeatureProperties(properties); } - console.log(autoCompleteValue); - }, [autoCompleteValue, data, defaultValue, sortProperty]); + }, [data, defaultValue, sortProperty]); return ( Date: Tue, 4 Jun 2024 14:05:53 +0200 Subject: [PATCH 009/119] :beetle: Fix heatlegendedit --- .../components/MapComponents/HeatLegend.tsx | 19 +++---- .../MapComponents/HeatLegendEdit.tsx | 49 +++++++++++-------- frontend/src/components/MapContainer.tsx | 7 +-- 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/MapComponents/HeatLegend.tsx index 91dd5732..db47b9ca 100644 --- a/frontend/src/components/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/MapComponents/HeatLegend.tsx @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useEffect, useMemo} from 'react'; +import {useLayoutEffect, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import {Box} from '@mui/material'; import React from 'react'; import {HeatmapLegend} from 'types/heatmapLegend'; +import {useTheme} from '@mui/material/styles'; interface HeatProps { legend: HeatmapLegend; @@ -14,8 +15,6 @@ interface HeatProps { max: number; displayText: boolean; id: string; - tooltipStartColor?: string; - tooltipEndColor?: string; style?: React.CSSProperties; formatNumber: (value: number) => string; } @@ -27,18 +26,17 @@ export default function HeatLegend({ max, displayText, id, - tooltipStartColor = '#F8F8F9', - tooltipEndColor = '#F8F8F9', style = { width: '100%', margin: '5px', height: '50px', }, formatNumber, -}: HeatProps) { +}: Readonly) { const unique_id = useMemo(() => id + String(Date.now() + Math.random()), [id]); + const theme = useTheme(); - useEffect(() => { + useLayoutEffect(() => { const root = am5.Root.new(unique_id); const heatLegend = root.container.children.push( am5.HeatLegend.new(root, { @@ -48,8 +46,8 @@ export default function HeatLegend({ endValue: max, endText: displayText ? formatNumber(max) : ' ', // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color - startColor: am5.color(tooltipStartColor), - endColor: am5.color(tooltipEndColor), + startColor: am5.color(theme.palette.background.paper), + endColor: am5.color(theme.palette.background.paper), }) ); @@ -84,8 +82,7 @@ export default function HeatLegend({ legend.steps, max, min, - tooltipEndColor, - tooltipStartColor, + theme.palette.background.paper, unique_id, ]); diff --git a/frontend/src/components/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/MapComponents/HeatLegendEdit.tsx index 0e12e8dc..cf2882c5 100644 --- a/frontend/src/components/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/MapComponents/HeatLegendEdit.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import React, {useCallback, useEffect, useState} from 'react'; +import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; @@ -12,7 +12,6 @@ import MenuItem from '@mui/material/MenuItem'; import Select, {SelectChangeEvent} from '@mui/material/Select'; import Tooltip from '@mui/material/Tooltip'; import Typography from '@mui/material/Typography'; -import HeatLegend from './HeatLegend'; import EditIcon from '@mui/icons-material/Edit'; import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; import {useTheme} from '@mui/material'; @@ -23,7 +22,6 @@ interface HeatLegendEditProps { legend: HeatmapLegend; selectedScenario?: number | null; t?: (key: string) => string; - formatNumber: (value: number) => string; } /** * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. @@ -33,7 +31,6 @@ export default function HeatLegendEdit({ legend, selectedScenario = null, t = (key: string) => key, - formatNumber, }: HeatLegendEditProps) { const theme = useTheme(); // // This contains all legends using the default colors. @@ -145,26 +142,14 @@ export default function HeatLegendEdit({ > {availablePresets.map((preset, i) => ( - - - { - return; - }} - min={0} - max={preset.steps[preset.steps.length - 1].value} - displayText={!preset.isNormalized} - id={preset.name} - formatNumber={formatNumber} - /> - - + + + {preset.name} - - + + ))} @@ -180,6 +165,28 @@ export default function HeatLegendEdit({ ); } +function LegendGradient({legend}: Readonly<{legend: HeatmapLegend}>): JSX.Element { + const divRef = useRef(null); + + useLayoutEffect(() => { + if (!divRef.current) { + return; + } + + const gradient = legend.steps + .map(({color, value}) => { + return `${color} ${Math.round(value * 100)}%`; + }) + .join(', '); + + divRef.current.style.background = `linear-gradient(90deg, ${gradient})`; + }, [legend]); + + return ( +
+ ); +} + /** * This hook generates the heatmap legends for all scenarios using the current theme. */ diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/MapContainer.tsx index 729f7191..3f52a742 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/MapContainer.tsx @@ -207,12 +207,7 @@ export default function MapContainer() { aggregatedMax={aggregatedMax} t={t} /> - + From 894f4c6bfb876e5ce476b0b518829cfd0134aa4c Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 4 Jun 2024 15:09:29 +0200 Subject: [PATCH 010/119] :sparkles: Format containers --- .../src/components/LineChartContainer.tsx | 10 ++--- frontend/src/components/MapContainer.tsx | 44 +++++++++---------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index 2b7cdb07..f95034e2 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -15,7 +15,12 @@ import {setReferenceDayBottom} from 'store/LayoutSlice'; export default function LineChartContainer() { const theme = useTheme(); + const dispatch = useAppDispatch(); const {t: tBackend} = useTranslation('backend'); + + const {chartCaseData, chartSimulationData, chartPercentileData, chartGroupFilterData, isChartDataFetching} = + useContext(DataContext); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); @@ -34,11 +39,6 @@ export default function LineChartContainer() { [tBackend] ); - const {chartCaseData, chartSimulationData, chartPercentileData, chartGroupFilterData, isChartDataFetching} = - useContext(DataContext); - - const dispatch = useAppDispatch(); - useEffect(() => { dispatch(selectDate(selectedDate)); }, [selectedDate, dispatch]); diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/MapContainer.tsx index 3f52a742..7aeb7741 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/MapContainer.tsx @@ -29,8 +29,19 @@ export default function MapContainer() { const {formatNumber} = NumberFormatter(i18n.language, 1, 0); const {t: tBackend} = useTranslation('backend'); const theme = useTheme(); + const dispatch = useAppDispatch(); + + const { + mapData, + areMapValuesFetching, + }: {mapData: {id: string; value: number}[] | undefined; areMapValuesFetching: boolean} = useContext(DataContext) || { + mapData: [], + areMapValuesFetching: false, + }; const storeSelectedArea = useAppSelector((state) => state.dataSelection.district); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); const defaultValue = useMemo(() => { return { @@ -47,9 +58,7 @@ export default function MapContainer() { ? {RS: storeSelectedArea.ags, GEN: storeSelectedArea.name, BEZ: storeSelectedArea.type} : defaultValue ); - const [aggregatedMax, setAggregatedMax] = useState(1); - const legendRef = useRef(null); const [legend, setLegend] = useState({ name: 'uninitialized', isNormalized: true, @@ -60,15 +69,8 @@ export default function MapContainer() { }); const [longLoad, setLongLoad] = useState(false); const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const { - mapData, - areMapValuesFetching, - }: {mapData: {id: string; value: number}[] | undefined; areMapValuesFetching: boolean} = useContext(DataContext) || { - mapData: [], - areMapValuesFetching: false, - }; + const legendRef = useRef(null); // fetch geojson useEffect(() => { @@ -91,7 +93,15 @@ export default function MapContainer() { ); }, []); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + useEffect(() => { + dispatch( + selectDistrict({ + ags: String(selectedArea['RS']), + name: String(selectedArea['GEN']), + type: String(selectedArea['BEZ']), + }) + ); + }, [selectedArea, dispatch]); const calculateToolTip = useCallback( (regionData: FeatureProperties) => { @@ -112,18 +122,6 @@ export default function MapContainer() { [t] ); - const dispatch = useAppDispatch(); - - useEffect(() => { - dispatch( - selectDistrict({ - ags: String(selectedArea['RS']), - name: String(selectedArea['GEN']), - type: String(selectedArea['BEZ']), - }) - ); - }, [selectedArea, dispatch]); - return ( Date: Tue, 4 Jun 2024 16:27:43 +0200 Subject: [PATCH 011/119] :beetle: Fix heat palette as user preference --- frontend/src/DataContext.tsx | 38 ++++++++++++++---------- frontend/src/components/MapContainer.tsx | 26 +++++++++++----- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 3eff0b71..3fcf4cdf 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {createContext, useState, useEffect} from 'react'; +import {createContext, useState, useEffect, useMemo} from 'react'; import React from 'react'; import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; @@ -213,19 +213,27 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { } }, [chartCaseData, chartGroupFilterData, chartPercentileData, chartSimulationData, selectedCompartment]); - return ( - - {children} - + const value = useMemo( + () => ({ + mapData: mapData, + areMapValuesFetching: mapIsCaseDataFetching || mapIsSimulationDataFetching, + chartCaseData: processedChartCaseData, + chartSimulationData: processedChartSimulationData, + chartPercentileData: processedChartPercentileData, + chartGroupFilterData: processedChartGroupFilterData, + isChartDataFetching: chartCaseDataFetching || chartSimulationFetching, + }), + [ + mapData, + mapIsCaseDataFetching, + mapIsSimulationDataFetching, + processedChartCaseData, + processedChartSimulationData, + processedChartPercentileData, + processedChartGroupFilterData, + chartCaseDataFetching, + chartSimulationFetching, + ] ); + return {children}; }; diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/MapContainer.tsx index 7aeb7741..476ad8ff 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/MapContainer.tsx @@ -23,6 +23,7 @@ import SidebarTabs from './Sidebar/SidebarTabs'; import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; import {selectDistrict} from 'store/DataSelectionSlice'; +import {selectHeatmapLegend} from 'store/UserPreferenceSlice'; export default function MapContainer() { const {t} = useTranslation(); @@ -42,6 +43,7 @@ export default function MapContainer() { const storeSelectedArea = useAppSelector((state) => state.dataSelection.district); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const storeLegend = useAppSelector((state) => state.userPreference.selectedHeatmap); const defaultValue = useMemo(() => { return { @@ -59,14 +61,18 @@ export default function MapContainer() { : defaultValue ); const [aggregatedMax, setAggregatedMax] = useState(1); - const [legend, setLegend] = useState({ - name: 'uninitialized', - isNormalized: true, - steps: [ - {color: 'rgb(255,255,255)', value: 0}, - {color: 'rgb(255,255,255)', value: 1}, - ], - }); + const [legend, setLegend] = useState( + storeLegend + ? storeLegend + : { + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + } + ); const [longLoad, setLongLoad] = useState(false); const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); @@ -103,6 +109,10 @@ export default function MapContainer() { ); }, [selectedArea, dispatch]); + useEffect(() => { + dispatch(selectHeatmapLegend({legend: legend})); + }, [legend, dispatch]); + const calculateToolTip = useCallback( (regionData: FeatureProperties) => { const bez = t(`BEZ.${regionData.BEZ}`); From 8f47b762df828973e17716b5701ed42f4c935de7 Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 5 Jun 2024 11:23:48 +0200 Subject: [PATCH 012/119] :wrench: Remove unused components --- frontend/src/App.tsx | 2 +- .../src/components/Sidebar/DistrictMap.tsx | 448 ---------- .../src/components/Sidebar/HeatLegend.tsx | 76 -- .../src/components/Sidebar/HeatLegendEdit.tsx | 202 ----- .../MapComponents/HeatLegend.tsx | 0 .../MapComponents/HeatLegendEdit.tsx | 2 +- .../{ => Sidebar}/MapComponents/HeatMap.tsx | 12 +- .../MapComponents/LockMaxValue.tsx | 0 .../{ => Sidebar}/MapComponents/SearchBar.tsx | 0 .../components/{ => Sidebar}/MapContainer.tsx | 6 +- frontend/src/components/Sidebar/SearchBar.tsx | 169 ---- frontend/src/components/Sidebar/index.tsx | 39 - frontend/src/components/SimulationChart.tsx | 816 ------------------ 13 files changed, 11 insertions(+), 1761 deletions(-) delete mode 100644 frontend/src/components/Sidebar/DistrictMap.tsx delete mode 100644 frontend/src/components/Sidebar/HeatLegend.tsx delete mode 100644 frontend/src/components/Sidebar/HeatLegendEdit.tsx rename frontend/src/components/{ => Sidebar}/MapComponents/HeatLegend.tsx (100%) rename frontend/src/components/{ => Sidebar}/MapComponents/HeatLegendEdit.tsx (98%) rename frontend/src/components/{ => Sidebar}/MapComponents/HeatMap.tsx (96%) rename frontend/src/components/{ => Sidebar}/MapComponents/LockMaxValue.tsx (100%) rename frontend/src/components/{ => Sidebar}/MapComponents/SearchBar.tsx (100%) rename frontend/src/components/{ => Sidebar}/MapContainer.tsx (97%) delete mode 100644 frontend/src/components/Sidebar/SearchBar.tsx delete mode 100644 frontend/src/components/Sidebar/index.tsx delete mode 100644 frontend/src/components/SimulationChart.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 53fdb818..96333b64 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -7,7 +7,7 @@ import {Provider} from 'react-redux'; import './App.scss'; import TopBar from './components/TopBar'; -import MapContainer from './components/MapContainer'; +import MapContainer from './components/Sidebar/MapContainer'; import MainContent from './components/MainContent'; import {Persistor, Store} from './store'; import Box from '@mui/material/Box'; diff --git a/frontend/src/components/Sidebar/DistrictMap.tsx b/frontend/src/components/Sidebar/DistrictMap.tsx deleted file mode 100644 index bf3664c6..00000000 --- a/frontend/src/components/Sidebar/DistrictMap.tsx +++ /dev/null @@ -1,448 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useEffect, useMemo, useState, useRef} from 'react'; -import {useTheme} from '@mui/material/styles'; -import * as am5 from '@amcharts/amcharts5'; -import * as am5map from '@amcharts/amcharts5/map'; -import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {selectDistrict} from '../../store/DataSelectionSlice'; -import Box from '@mui/material/Box'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import Tooltip from '@mui/material/Tooltip'; -import LockIcon from '@mui/icons-material/Lock'; -import {useGetSimulationDataByDateQuery} from 'store/services/scenarioApi'; -import HeatLegend from './HeatLegend'; -import {NumberFormatter} from 'util/hooks'; -import HeatLegendEdit from './HeatLegendEdit'; -import {HeatmapLegend} from '../../types/heatmapLegend'; -import LockOpen from '@mui/icons-material/LockOpen'; -import LoadingContainer from '../shared/LoadingContainer'; -import {useGetCaseDataByDateQuery} from '../../store/services/caseDataApi'; -import mapData from '../../../assets/lk_germany_reduced.geojson?url'; -import svgZoomResetURL from '../../../assets/svg/zoom_out_map_white_24dp.svg?url'; -import svgZoomInURL from '../../../assets/svg/zoom_in_white_24dp.svg?url'; -import svgZoomOutURL from '../../../assets/svg/zoom_out_white_24dp.svg?url'; - -interface IRegionPolygon { - value: number; - - /** District name */ - GEN: string; - - /** District type */ - BEZ: string; - - /** AGS (district ID) */ - RS: string; -} - -export default function DistrictMap(): JSX.Element { - const [geodata, setGeodata] = useState(null); - const [longLoad, setLongLoad] = useState(false); - const [longLoadTimeout, setLongLoadTimeout] = useState(); - const selectedDistrict = useAppSelector((state) => state.dataSelection.district); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const selectedDate = useAppSelector((state) => state.dataSelection.date); - const scenarioList = useAppSelector((state) => state.scenarioList.scenarios); - const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); - const [chart, setChart] = useState(null); - - const {data: simulationData, isFetching: isSimulationDataFetching} = useGetSimulationDataByDateQuery( - { - id: selectedScenario ?? 0, - day: selectedDate ?? '', - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment || !selectedDate} - ); - - const {data: caseData, isFetching: isCaseDataFetching} = useGetCaseDataByDateQuery( - { - day: selectedDate ?? '', - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: selectedScenario === null || selectedScenario > 0 || !selectedCompartment || !selectedDate} - ); - - const legendRef = useRef(null); - const {t, i18n} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - const theme = useTheme(); - const dispatch = useAppDispatch(); - const lastSelectedPolygon = useRef(null); - const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); - - // This memo either returns the case data or simulation data, depending on which card is selected. - const data = useMemo(() => { - if (selectedScenario === null) { - return null; - } - - if (selectedScenario === 0 && caseData !== undefined && caseData.results.length > 0) { - return caseData; - } else if (selectedScenario > 0 && simulationData !== undefined && simulationData.results.length > 0) { - return simulationData; - } - - return null; - }, [caseData, simulationData, selectedScenario]); - - // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. - const isFetching = useMemo(() => { - if (selectedScenario === null) { - return true; - } - - return (selectedScenario === 0 && isCaseDataFetching) || (selectedScenario > 0 && isSimulationDataFetching); - }, [selectedScenario, isCaseDataFetching, isSimulationDataFetching]); - - // use Memoized to store aggregated max and only recalculate if parameters change - const aggregatedMax: number = useMemo(() => { - if (fixedLegendMaxValue) { - return fixedLegendMaxValue; - } - let max = 1; - - if (data && selectedCompartment !== null) { - data.results.forEach((entry) => { - if (entry.name !== '00000') { - max = Math.max(entry.compartments[selectedCompartment], max); - } - }); - } - return max; - }, [selectedCompartment, data, fixedLegendMaxValue]); - - // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This - // prevents that the indicator is showing for every little change. - useEffect(() => { - if (isFetching) { - setLongLoadTimeout( - window.setTimeout(() => { - setLongLoad(true); - }, 1000) - ); - } else { - clearTimeout(longLoadTimeout); - setLongLoad(false); - } - // eslint-disable-next-line - }, [isFetching, setLongLoad, setLongLoadTimeout]); // longLoadTimeout is deliberately ignored here. - - // fetch geojson - useEffect(() => { - fetch(mapData, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - // resolve Promise - (geojson: GeoJSON.GeoJSON) => { - setGeodata(geojson); - }, - // reject promise - () => { - console.warn('Failed to fetch geoJSON'); - } - ); - }, []); - - // Setup Map - useEffect(() => { - // Create map instance - const root = am5.Root.new('mapdiv'); - const chart = root.container.children.push( - am5map.MapChart.new(root, { - projection: am5map.geoMercator(), - maxZoomLevel: 4, - maxPanOut: 0.4, - zoomControl: am5map.ZoomControl.new(root, { - paddingBottom: 25, - opacity: 50, - }), - }) - ); - // Add home button to reset pan & zoom - chart.get('zoomControl')?.homeButton.set('visible', true); - - // settings to fix positioning of images on buttons - const fixSVGPosition = { - width: 25, - height: 25, - dx: -5, - dy: -3, - }; - - // Set svg icon for home button - chart.get('zoomControl')?.homeButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomResetURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Add function to select germany when home button is pressed - chart.get('zoomControl')?.homeButton.events.on('click', () => { - // Set district to germany - dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); - }); - - // Set svg icon for plus button - chart.get('zoomControl')?.plusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomInURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Set svg icon for minus button - chart.get('zoomControl')?.minusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomOutURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Create polygon series - const polygonSeries = chart.series.push( - am5map.MapPolygonSeries.new(root, { - geoJSON: geodata ?? undefined, - tooltipPosition: 'fixed', - layer: 0, - }) - ); - - // get template for polygons to attach events etc to each - const polygonTemplate = polygonSeries.mapPolygons.template; - polygonTemplate.setAll({ - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - }); - - // add click event - polygonTemplate.events.on('click', (e) => { - const item = e.target.dataItem?.dataContext as IRegionPolygon; - dispatch(selectDistrict({ags: item.RS, name: item.GEN, type: t(item.BEZ)})); - }); - // add hover state - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); - - //show tooltip on heat legend when hovering - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as IRegionPolygon).value; - legendRef.current.showValue(value, formatNumber(value)); - } - }); - //hide tooltip on heat legend when not hovering anymore event - polygonTemplate.events.on('pointerout', () => { - if (legendRef.current) { - void legendRef.current.hideTooltip(); - } - }); - setChart(chart); - return () => { - chart?.dispose(); - root?.dispose(); - }; - }, [geodata, theme, t, formatNumber, dispatch]); - - useEffect(() => { - // unselect previous - if (chart && lastSelectedPolygon.current) { - // reset style - lastSelectedPolygon.current.states.create('default', { - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - layer: 0, - }); - lastSelectedPolygon.current.states.apply('default'); - } - // select new - if (selectedDistrict.ags !== '00000' && chart && chart.series.length > 0) { - const series = chart.series.getIndex(0) as am5map.MapPolygonSeries; - series.mapPolygons.each((polygon) => { - const data = polygon.dataItem?.dataContext as IRegionPolygon; - if (data.RS === selectedDistrict.ags) { - polygon.states.create('default', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 2, - }); - if (!polygon.isHover()) { - polygon.states.apply('default'); - } - // save polygon - lastSelectedPolygon.current = polygon; - } - }); - } - }, [chart, selectedDistrict, theme]); - - // set Data - useEffect(() => { - if (chart && chart.series.length > 0) { - const polygonSeries = chart.series.getIndex(0) as am5map.MapPolygonSeries; - if (selectedScenario !== null && selectedCompartment && !isFetching && data) { - // Map compartment value to RS - const dataMapped = new Map(); - data?.results.forEach((entry) => { - const rs = entry.name; - dataMapped.set(rs, entry.compartments[selectedCompartment]); - }); - - if (dataMapped.size > 0) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as IRegionPolygon; - regionData.value = dataMapped.get(regionData.RS) ?? Number.NaN; - - // determine fill color - let fillColor = am5.color(theme.palette.background.default); - if (Number.isFinite(regionData.value)) { - if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { - // if legend is normalized, also pass mix & max to color function - fillColor = getColorFromLegend(regionData.value, legend, {min: 0, max: aggregatedMax}); - } else { - // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed - fillColor = getColorFromLegend(regionData.value, legend); - } - } - - const bez = t(`BEZ.${regionData.BEZ}`); - const compartmentName = tBackend(`infection-states.${selectedCompartment}`); - polygon.setAll({ - tooltipText: - selectedScenario !== null && selectedCompartment - ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(regionData.value)}` - : `${bez} {GEN}`, - fill: fillColor, - }); - }); - } - } else if (longLoad || !data) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as IRegionPolygon; - regionData.value = Number.NaN; - const bez = t(`BEZ.${regionData.BEZ}`); - polygon.setAll({ - tooltipText: `${bez} {GEN}`, - fill: am5.color(theme.palette.text.disabled), - }); - }); - } - } - }, [ - scenarioList, - selectedScenario, - selectedCompartment, - selectedDate, - aggregatedMax, - dispatch, - t, - formatNumber, - data, - theme, - isFetching, - legend, - longLoad, - tBackend, - chart, - ]); - - return ( - - - - - { - // move exposed legend item (or null if disposed) into ref - legendRef.current = legend; - }} - min={0} - // use math.round to convert the numbers to integers - max={ - legend.isNormalized ? Math.round(aggregatedMax) : Math.round(legend.steps[legend.steps.length - 1].value) - } - displayText={true} - id={'legend'} - /> - - - - setFixedLegendMaxValue(fixedLegendMaxValue ? null : aggregatedMax)} - size='small' - sx={{padding: theme.spacing(0)}} - > - {fixedLegendMaxValue ? : } - - - - - - - ); -} - -function getColorFromLegend( - value: number, - legend: HeatmapLegend, - aggregatedMinMax?: {min: number; max: number} -): am5.Color { - // assume legend stops are absolute - let normalizedValue = value; - // if aggregated values (min/max) are properly set, the legend items are already normalized => need to normalize value too - if (aggregatedMinMax && aggregatedMinMax.min < aggregatedMinMax.max) { - const {min: aggregatedMin, max: aggregatedMax} = aggregatedMinMax; - normalizedValue = (value - aggregatedMin) / (aggregatedMax - aggregatedMin); - } else if (aggregatedMinMax) { - // log error if any of the above checks fail - console.error('Error: invalid MinMax array in getColorFromLegend', [value, legend, aggregatedMinMax]); - // return completely transparent fill if errors occur - return am5.color('rgba(0,0,0,0)'); - } - if (normalizedValue <= legend.steps[0].value) { - return am5.color(legend.steps[0].color); - } else if (normalizedValue >= legend.steps[legend.steps.length - 1].value) { - return am5.color(legend.steps[legend.steps.length - 1].color); - } else { - let upperTick = legend.steps[0]; - let lowerTick = legend.steps[0]; - for (let i = 1; i < legend.steps.length; i++) { - if (normalizedValue <= legend.steps[i].value) { - upperTick = legend.steps[i]; - lowerTick = legend.steps[i - 1]; - break; - } - } - return am5.Color.interpolate( - (normalizedValue - lowerTick.value) / (upperTick.value - lowerTick.value), - am5.color(lowerTick.color), - am5.color(upperTick.color) - ); - } -} diff --git a/frontend/src/components/Sidebar/HeatLegend.tsx b/frontend/src/components/Sidebar/HeatLegend.tsx deleted file mode 100644 index c95d31f5..00000000 --- a/frontend/src/components/Sidebar/HeatLegend.tsx +++ /dev/null @@ -1,76 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useEffect} from 'react'; -import {useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import * as am5 from '@amcharts/amcharts5'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from 'util/hooks'; -import {HeatmapLegend} from '../../types/heatmapLegend'; - -export default function HeatLegend(props: { - // add is_dynamic/absolute? - legend: HeatmapLegend; - exposeLegend: (legend: am5.HeatLegend | null) => void; - min: number; - max: number; - displayText: boolean; - id: string; -}): JSX.Element { - const id = props.id + String(Date.now() + Math.random()); // "guarantee" unique id - const {i18n} = useTranslation(); - const {formatNumber} = NumberFormatter(i18n.language, 3, 8); - const theme = useTheme(); - - useEffect(() => { - const root = am5.Root.new(id); - const heatLegend = root.container.children.push( - am5.HeatLegend.new(root, { - orientation: 'horizontal', - startValue: props.min, - startText: props.displayText ? formatNumber(props.min) : ' ', - endValue: props.max, - endText: props.displayText ? formatNumber(props.max) : ' ', - // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color - startColor: am5.color(theme.palette.background.paper), - endColor: am5.color(theme.palette.background.paper), - }) - ); - - // compile stop list - const stoplist: {color: am5.Color; opacity: number; offset: number}[] = []; - props.legend.steps.forEach((item) => { - stoplist.push({ - color: am5.color(item.color), - // opacity of the color between 0..1 - opacity: 1, - // offset is stop position normalized to 0..1 unless already normalized - offset: props.legend.isNormalized ? item.value : (item.value - props.min) / (props.max - props.min), - }); - }); - heatLegend.markers.template.adapters.add('fillGradient', (gradient) => { - gradient?.set('stops', stoplist); - return gradient; - }); - - // expose Legend element to District map (for tooltip on event) - props.exposeLegend(heatLegend); - - return () => { - root.dispose(); - props.exposeLegend(null); - }; - }, [props, formatNumber, theme, id]); - - return ( - - ); -} diff --git a/frontend/src/components/Sidebar/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/HeatLegendEdit.tsx deleted file mode 100644 index a731fad4..00000000 --- a/frontend/src/components/Sidebar/HeatLegendEdit.tsx +++ /dev/null @@ -1,202 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useState} from 'react'; -import {useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import FormControl from '@mui/material/FormControl'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import MenuItem from '@mui/material/MenuItem'; -import Select, {SelectChangeEvent} from '@mui/material/Select'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; -import HeatLegend from './HeatLegend'; -import EditIcon from '@mui/icons-material/Edit'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {selectHeatmapLegend} from '../../store/UserPreferenceSlice'; -import {HeatmapLegend} from '../../types/heatmapLegend'; -import {useTranslation} from 'react-i18next'; -import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; - -/** - * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. - */ -export default function HeatLegendEdit(): JSX.Element { - const dispatch = useAppDispatch(); - const activeScenario = useAppSelector((state) => state.dataSelection.scenario); - const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); - const theme = useTheme(); - const {t} = useTranslation(); - - // This contains all legends using the default colors. - const defaultLegends = useDefaultLegends(); - - // This contains all legends from the presets file. - const [heatmapLegends, setHeatmapLegends] = useState>([]); - - // This contains the default legend and the presets and is used for displaying the list to the user. - const [availablePresets, setAvailablePresets] = useState>([]); - - // modal state - const [heatLegendEditOpen, setHeatLegendEditOpen] = React.useState(false); - - // Try to select a heatlegend using the given name. - const selectLegendByName = useCallback( - (name: string) => { - const preset = availablePresets.find((preset) => preset.name === name); - if (preset) { - dispatch(selectHeatmapLegend({legend: preset})); - } - }, - [dispatch, availablePresets] - ); - - const handleChange = (event: SelectChangeEvent) => selectLegendByName(event.target.value); - - // This effect loads the presets file, once the modal is opened the first time. - useEffect(() => { - if (heatmapLegends.length === 0 && heatLegendEditOpen) { - fetch(legendPresets, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - (presetList: HeatmapLegend[]) => { - presetList.forEach((legend) => { - if (legend.isNormalized) { - legend.steps.forEach((step) => { - //set step to normalized values - step.value = step.value / legend.steps[legend.steps.length - 1].value; - }); - } - }); - - setHeatmapLegends(presetList); - }, - // Reject Promise - () => { - console.warn('Did not receive proper heatmap legend presets'); - } - ); - } - }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen]); - - // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". - useEffect(() => { - if (activeScenario === null || defaultLegends.length === 0) { - return; - } - - const scenarioDefault = defaultLegends[activeScenario % defaultLegends.length]; - const legends = [...heatmapLegends]; - legends.unshift(scenarioDefault); - - // In the case, where a non default legend is selected, but the legends haven't been loaded from file we add the - // legend to the selection. - if (legend.name !== 'Default' && heatmapLegends.length === 0) { - legends.push(legend); - } - - setAvailablePresets(legends); - }, [defaultLegends, heatmapLegends, activeScenario, legend]); - - // This effect updates the selected legend, if a default legend is selected and the scenario changes. - useEffect(() => { - if (activeScenario === null) { - return; - } - - if (legend.name !== 'Default' && legend.name !== 'uninitialized') { - return; - } - - selectLegendByName('Default'); - }, [activeScenario, legend, selectLegendByName]); - - return ( - <> - - setHeatLegendEditOpen(true)} - aria-label={t('heatlegend.edit')} - size='small' - sx={{padding: theme.spacing(0), marginBottom: theme.spacing(1)}} - > - - - - setHeatLegendEditOpen(false)}> - - - - - - - - - - - ); -} - -/** - * This hook generates the heatmap legends for all scenarios using the current theme. - */ -function useDefaultLegends(): Array { - const theme = useTheme(); - const [defaultLegends, setDefaultLegends] = useState>([]); - - useEffect(() => { - const legends: Array = []; - const stepCount = theme.custom.scenarios[0].length - 1; - for (const element of theme.custom.scenarios) { - const steps = []; - for (let j = 0; j < stepCount; j++) { - steps.push({color: element[stepCount - 1 - j], value: j / (stepCount - 1)}); - } - legends.push({name: 'Default', isNormalized: true, steps}); - } - - setDefaultLegends(legends); - }, [theme, setDefaultLegends]); - - return defaultLegends; -} diff --git a/frontend/src/components/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx similarity index 100% rename from frontend/src/components/MapComponents/HeatLegend.tsx rename to frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx diff --git a/frontend/src/components/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx similarity index 98% rename from frontend/src/components/MapComponents/HeatLegendEdit.tsx rename to frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx index cf2882c5..4f589360 100644 --- a/frontend/src/components/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx @@ -13,7 +13,7 @@ import Select, {SelectChangeEvent} from '@mui/material/Select'; import Tooltip from '@mui/material/Tooltip'; import Typography from '@mui/material/Typography'; import EditIcon from '@mui/icons-material/Edit'; -import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; +import legendPresets from '../../../../assets/heatmap_legend_presets.json?url'; import {useTheme} from '@mui/material'; import {HeatmapLegend} from 'types/heatmapLegend'; diff --git a/frontend/src/components/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx similarity index 96% rename from frontend/src/components/MapComponents/HeatMap.tsx rename to frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 06d90bdb..82d32661 100644 --- a/frontend/src/components/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -5,12 +5,12 @@ import {useState, useEffect, useRef, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import * as am5map from '@amcharts/amcharts5/map'; import {GeoJSON} from 'geojson'; -import {FeatureCollection} from '../../types/map'; -import svgZoomResetURL from '../../../assets/svg/zoom_out_map_white_24dp.svg?url'; -import svgZoomInURL from '../../../assets/svg/zoom_in_white_24dp.svg?url'; -import svgZoomOutURL from '../../../assets/svg/zoom_out_white_24dp.svg?url'; -import {FeatureProperties} from '../../types/map'; -import {HeatmapLegend} from '../../types/heatmapLegend'; +import {FeatureCollection} from '../../../types/map'; +import svgZoomResetURL from '../../../../assets/svg/zoom_out_map_white_24dp.svg?url'; +import svgZoomInURL from '../../../../assets/svg/zoom_in_white_24dp.svg?url'; +import svgZoomOutURL from '../../../../assets/svg/zoom_out_white_24dp.svg?url'; +import {FeatureProperties} from '../../../types/map'; +import {HeatmapLegend} from '../../../types/heatmapLegend'; import {Box} from '@mui/material'; import {useTheme} from '@mui/material/styles'; import React from 'react'; diff --git a/frontend/src/components/MapComponents/LockMaxValue.tsx b/frontend/src/components/Sidebar/MapComponents/LockMaxValue.tsx similarity index 100% rename from frontend/src/components/MapComponents/LockMaxValue.tsx rename to frontend/src/components/Sidebar/MapComponents/LockMaxValue.tsx diff --git a/frontend/src/components/MapComponents/SearchBar.tsx b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx similarity index 100% rename from frontend/src/components/MapComponents/SearchBar.tsx rename to frontend/src/components/Sidebar/MapComponents/SearchBar.tsx diff --git a/frontend/src/components/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx similarity index 97% rename from frontend/src/components/MapContainer.tsx rename to frontend/src/components/Sidebar/MapContainer.tsx index 476ad8ff..33c0a15d 100644 --- a/frontend/src/components/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -3,7 +3,7 @@ import {useState, useEffect, useRef, useCallback, useMemo, useContext} from 'react'; import {useTranslation} from 'react-i18next'; -import data from '../../assets/lk_germany_reduced.geojson?url'; +import data from '../../../assets/lk_germany_reduced.geojson?url'; import {Grid, Stack, useTheme} from '@mui/material'; import * as am5 from '@amcharts/amcharts5'; import React from 'react'; @@ -14,12 +14,12 @@ import i18n from 'util/i18n'; import LockMaxValue from './MapComponents/LockMaxValue'; import HeatLegendEdit from './MapComponents/HeatLegendEdit'; import SearchBar from './MapComponents/SearchBar'; -import LoadingContainer from './shared/LoadingContainer'; +import LoadingContainer from '../shared/LoadingContainer'; import {NumberFormatter} from 'util/hooks'; import HeatMap from './MapComponents/HeatMap'; import HeatLegend from './MapComponents/HeatLegend'; import {DataContext} from 'DataContext'; -import SidebarTabs from './Sidebar/SidebarTabs'; +import SidebarTabs from './SidebarTabs'; import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; import {selectDistrict} from 'store/DataSelectionSlice'; diff --git a/frontend/src/components/Sidebar/SearchBar.tsx b/frontend/src/components/Sidebar/SearchBar.tsx deleted file mode 100644 index e7481e90..00000000 --- a/frontend/src/components/Sidebar/SearchBar.tsx +++ /dev/null @@ -1,169 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useEffect, useState} from 'react'; -import {useTheme} from '@mui/material/styles'; -import {useAppSelector, useAppDispatch} from '../../store/hooks'; -import {selectDistrict} from '../../store/DataSelectionSlice'; -import SearchIcon from '@mui/icons-material/Search'; -import Autocomplete from '@mui/material/Autocomplete'; -import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; -import {useTranslation} from 'react-i18next'; -import countyData from '../../../assets/lk_germany_reduced_list.json?url'; - -/** Type definition for the CountyItems of the Autocomplete field - * @see DataSelectionSlice - */ -interface CountyItem { - /** ID for the district (Amtlicher Gemeindeschlüssel) (same as ags in store). */ - RS: string; - /** Label/Name of the district (same as the name in the data store). */ - GEN: string; - /** Region type identifier (same as the type in the data store). */ - BEZ: string; -} - -/** - * The SearchBar component helps select a specific district of the map. - * @returns {JSX.Element} JSX Element to render the search bar container. - */ -export default function SearchBar(): JSX.Element { - const selectedDistrict = useAppSelector((state) => state.dataSelection.district); - const {t} = useTranslation('global'); - const [countyList, setCountyList] = useState>([]); - const theme = useTheme(); - const dispatch = useAppDispatch(); - - // This ensures that the displayed name of Germany is always localized. - useEffect(() => { - if (selectedDistrict.ags === '00000' && selectedDistrict.name !== t('germany')) { - dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); - } - }, [t, selectedDistrict, dispatch]); - - useEffect(() => { - // get option list from assets - fetch(countyData, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => { - // interpret content as JSON - return response.json(); - }) - .then( - // Resolve Promise - (jsonlist: CountyItem[]) => { - // append germany to list - jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''}); - // sort list to put germany at the right place (loading and sorting takes 1.5 ~ 2 sec) - jsonlist.sort((a, b) => { - return a.GEN.localeCompare(b.GEN); - }); - // fill countyList state with list - setCountyList(jsonlist); - }, - // Reject Promise - () => { - console.warn('Did not receive proper county list'); - } - ); - // this init should only run once on first render - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [t]); - - return ( - - - - option.RS === value.RS} - // onChange of input dispatch new selected district or initial value (ags: 00000, name: germany) if input is cleared - onChange={(_event, newValue: CountyItem | null) => { - if (newValue) { - dispatch( - selectDistrict({ - ags: newValue?.RS ?? '00000', - name: newValue?.GEN ?? t('germany'), - type: newValue?.BEZ ?? '', - }) - ); - } - }} - // enable clearing/resetting the input field with escape key - clearOnEscape - // automatically highlights first option - autoHighlight - // selects highlighted option on focus loss - //autoSelect - // provide countyList as options for drop down - options={countyList} - // group dropdown contents by first letter (json array needs to be sorted alphabetically by name for this to work correctly) - groupBy={(option) => option.GEN[0]} - // provide function to display options in dropdown menu - getOptionLabel={(option) => `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} - sx={{ - flexGrow: 1, - //disable outline for any children - '& *:focus': {outline: 'none'}, - }} - // override default input field, placeholder is a fallback, as value should always be a selected district or germany (initial/default value) - renderInput={(params) => ( -
- -
- )} - /> -
-
- ); -} diff --git a/frontend/src/components/Sidebar/index.tsx b/frontend/src/components/Sidebar/index.tsx deleted file mode 100644 index a0064c7d..00000000 --- a/frontend/src/components/Sidebar/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {useTheme} from '@mui/material/styles'; -import SearchBar from './SearchBar'; -import DistrictMap from './DistrictMap'; -import SidebarTabs from './SidebarTabs'; -import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; -import Stack from '@mui/material/Stack'; - -export default function Sidebar(): JSX.Element { - const theme = useTheme(); - - return ( - - - - - - - - - - - - ); -} diff --git a/frontend/src/components/SimulationChart.tsx b/frontend/src/components/SimulationChart.tsx deleted file mode 100644 index c097a321..00000000 --- a/frontend/src/components/SimulationChart.tsx +++ /dev/null @@ -1,816 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useRef} from 'react'; -import {Root} from '@amcharts/amcharts5/.internal/core/Root'; -import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; -import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; -import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; -import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; -import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; -import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; -import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; -import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; -import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; -import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; -import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; -import am5locales_en_US from '@amcharts/amcharts5/locales/en_US'; -import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; -import {useAppDispatch, useAppSelector} from '../store/hooks'; -import {darken, useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import {selectDate} from '../store/DataSelectionSlice'; -import {useGetCaseDataByDistrictQuery} from '../store/services/caseDataApi'; -import {dateToISOString} from 'util/util'; -import { - PercentileDataByDay, - useGetMultipleSimulationDataByNodeQuery, - useGetPercentileDataQuery, -} from 'store/services/scenarioApi'; -import {useTranslation} from 'react-i18next'; -import LoadingContainer from './shared/LoadingContainer'; -import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; -import {GroupData} from 'types/group'; -import {setReferenceDayBottom} from '../store/LayoutSlice'; - -/** - * React Component to render the Simulation Chart Section - * @returns {JSX.Element} JSX Element to render the scenario chart container and the scenario graph within. - */ -export default function SimulationChart(): JSX.Element { - const {t, i18n} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const scenarioList = useAppSelector((state) => state.scenarioList); - const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const selectedDate = useAppSelector((state) => state.dataSelection.date); - const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); - const minDate = useAppSelector((state) => state.dataSelection.minDate); - const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - const dispatch = useAppDispatch(); - - const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( - groupFilterList && selectedScenario && selectedDistrict && selectedCompartment - ? Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => { - return { - id: selectedScenario, - node: selectedDistrict, - compartment: selectedCompartment, - groupFilter: groupFilter, - }; - }) - : [] - ); - - const {data: caseData, isFetching: caseDataFetching} = useGetCaseDataByDistrictQuery( - { - node: selectedDistrict, - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: !selectedCompartment} - ); - - const {data: simulationData, isFetching: simulationFetching} = useGetMultipleSimulationDataByNodeQuery( - { - // Filter only scenarios (scenario id 0 is case data) - ids: activeScenarios ? activeScenarios.filter((s) => s !== 0 && scenarioList.scenarios[s]) : [], - node: selectedDistrict, - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: !selectedCompartment} - ); - - const {data: percentileData} = useGetPercentileDataQuery( - { - id: selectedScenario as number, - node: selectedDistrict, - groups: ['total'], - compartment: selectedCompartment as string, - }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment} - ); - - const rootRef = useRef(null); - const chartRef = useRef(null); - - const setReferenceDayX = useCallback(() => { - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - const midday = new Date(referenceDay).setHours(12, 0, 0); - - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); - const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); - const docPosition = rootRef.current.rootPointToDocument(globalPosition).x; - dispatch(setReferenceDayBottom(docPosition)); - }, [dispatch, referenceDay]); - - // Effect to initialize root & chart - useEffect( - () => { - // Create root and chart - const root = Root.new('chartdiv'); - const chart = root.container.children.push( - XYChart.new(root, { - panX: false, - panY: false, - wheelX: 'panX', - wheelY: 'zoomX', - maxTooltipDistance: -1, - }) - ); - - // Set number formatter - root.numberFormatter.set('numberFormat', '#,###.'); - - // Create x-axis - const xAxis = chart.xAxes.push( - DateAxis.new(root, { - renderer: AxisRendererX.new(root, {}), - // Set base interval and aggregated intervals when the chart is zoomed out - baseInterval: {timeUnit: 'day', count: 1}, - gridIntervals: [ - {timeUnit: 'day', count: 1}, - {timeUnit: 'day', count: 3}, - {timeUnit: 'day', count: 7}, - {timeUnit: 'month', count: 1}, - {timeUnit: 'month', count: 3}, - {timeUnit: 'year', count: 1}, - ], - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - // Change axis renderer to have ticks/labels on day center - const xRenderer = xAxis.get('renderer'); - xRenderer.ticks.template.setAll({ - location: 0.5, - }); - - // Create y-axis - chart.yAxes.push( - ValueAxis.new(root, { - renderer: AxisRendererY.new(root, {}), - // Fix lower end to 0 - min: 0, - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - - // Add cursor - chart.set( - 'cursor', - XYCursor.new(root, { - // Only allow zooming along x-axis - behavior: 'zoomX', - // Snap cursor to xAxis ticks - xAxis: xAxis, - }) - ); - - // Add event on double click to select date - chart.events.on('click', (ev) => { - // Get date from axis position from cursor position - const date = xAxis.positionToDate( - xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) - ); - // Remove time information to only have a date - date.setHours(0, 0, 0, 0); - // Set date in store - dispatch(selectDate(dateToISOString(date))); - }); - - // Set refs to be used in other effects - rootRef.current = root; - chartRef.current = chart; - - // Clean-up before re-running this effect - return () => { - // Dispose old root and chart before creating a new instance - chartRef.current?.dispose(); - rootRef.current?.dispose(); - }; - }, - // This effect should only run once. dispatch should not change during runtime - [dispatch] - ); - - // Effect to change localization of chart if language changes - useEffect( - () => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current) { - return; - } - - // Set localization - rootRef.current.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; - - // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - xAxis.get('dateFormats', {day: ''})['day'] = t('dayFormat'); - xAxis.get('tooltipDateFormats', {day: ''})['day'] = t('dayFormat'); - // Fix first date of the month falling back to wrong format (also with fallback object) - xAxis.get('periodChangeDateFormats', {day: ''})['day'] = t('dayFormat'); - }, - // Re-run effect if language changes - [i18n.language, t] - ); - - // Effect to update min/max date. - useEffect(() => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current || !minDate || !maxDate) { - return; - } - - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - xAxis.set('min', new Date(minDate).setHours(0)); - xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); - }, [minDate, maxDate]); - - // Effect to add series to chart - useEffect( - () => { - // Skip if root or chart not initialized - if (!rootRef.current || !chartRef.current) { - return; - } - - const chart: XYChart = chartRef.current; - const root: Root = rootRef.current; - const xAxis: DateAxis = chart.xAxes.getIndex(0) as DateAxis; - const yAxis: ValueAxis = chart.yAxes.getIndex(0) as ValueAxis; - - // Add series for case data - const caseDataSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - // Case Data is always scenario id 0 - id: '0', - name: t('chart.caseData'), - valueXField: 'date', - valueYField: '0', - // Prevent data points from connecting across gaps in the data - connect: false, - stroke: color('#000'), - }) - ); - caseDataSeries.strokes.template.setAll({ - strokeWidth: 2, - }); - - // Add series for percentile area - const percentileSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: 'percentiles', - valueXField: 'date', - valueYField: 'percentileUp', - openValueYField: 'percentileDown', - connect: false, - // Percentiles are only visible if a scenario is selected and it is not case data - visible: selectedScenario !== null && selectedScenario > 0, - // Add fill color according to selected scenario (if selected scenario is set and it's not case data) - fill: - selectedScenario !== null && selectedScenario > 0 - ? color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]) - : undefined, - }) - ); - percentileSeries.strokes.template.setAll({ - strokeWidth: 0, - }); - percentileSeries.fills.template.setAll({ - fillOpacity: 0.3, - visible: true, - }); - - // Add series for each scenario - Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: scenarioId, - name: tBackend(`scenario-names.${scenario.label}`), - valueXField: 'date', - valueYField: scenarioId, - // Prevent data points from connecting across gaps in the data - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color - tooltip: Tooltip.new(root, { - labelText: `[bold ${theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]}]${tBackend( - `scenario-names.${scenario.label}` - )}:[/] {${scenarioId}}`, - }), - stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - }); - }); - - // Add series for groupFilter (if there are any) - if (groupFilterList && selectedScenario) { - // Define line style variants for groups - const groupFilterStrokes = [ - [2, 4], // dotted - [8, 4], // dashed - [8, 4, 2, 4], // dash-dotted - [8, 4, 2, 4, 2, 4], // dash-dot-dotted - ]; - // Loop through visible group filters - Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .forEach((groupFilter, i) => { - // Add series for each group filter - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `group-filter-${groupFilter.name}`, - name: groupFilter.name, - valueXField: 'date', - valueYField: groupFilter.name, - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) - tooltip: Tooltip.new(root, { - labelText: `[bold ${theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]}]${ - groupFilter.name - }:[/] {${groupFilter.name}}`, - }), - stroke: color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - // Loop through stroke list if group filters exceeds list length - strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], - }); - }); - } - - // Clean-up function - return () => { - // Remove all series - chart.series.clear(); - }; - }, - // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). - [scenarioList, groupFilterList, selectedScenario, t, tBackend, theme] - ); - - // Effect to hide disabled scenarios (and show them again if not hidden anymore) - useEffect( - () => { - const allSeries = chartRef.current?.series; - // Skip effect if chart is not initialized (contains no series yet) - if (!allSeries) return; - - // Set visibility of each series - allSeries.each((series) => { - // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) - const seriesID = series.get('id'); - // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list - if (seriesID === 'percentiles') { - return; - } - - if (!activeScenarios?.includes(Number(seriesID))) { - void series.hide(); - } else { - void series.show(); - } - }); - }, - // Re-run effect when the active scenario list changes - [activeScenarios] - ); - - // Effect to hide deviations if no scenario is selected - useEffect( - () => { - // Skip effect if chart is not initialized (contains no series yet) - if (!chartRef.current) return; - - // Find percentile series and only show it if there is a selected scenario - chartRef.current?.series.values - .filter((series) => series.get('id') === 'percentiles') - .map((percentileSeries) => { - if (selectedScenario === null || selectedScenario === 0) { - void percentileSeries.hide(); - } else { - void percentileSeries.show(); - } - }); - }, - // Re-run effect when the selected scenario changes - [selectedScenario] - ); - - // Effect to add Guide when date selected - useEffect(() => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !selectedDate) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: new Date(selectedDate).setHours(0, 0, 0), - // Make sure the time of the end date object is set to last second of day - endValue: new Date(selectedDate).setHours(23, 59, 59), - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(theme.palette.primary.main), - strokeOpacity: 1, - strokeWidth: 2, - location: 0.5, - visible: true, - }); - - // Set fill of range (rest of the day) - range.get('axisFill')?.setAll({ - fill: color(theme.palette.primary.main), - fillOpacity: 0.3, - visible: true, - }); - - // Set label for range - range.get('label')?.setAll({ - fill: color(theme.palette.primary.contrastText), - text: new Date(selectedDate).toLocaleDateString(i18n.language, { - year: 'numeric', - month: 'short', - day: '2-digit', - }), - location: 0.5, - background: RoundedRectangle.new(rootRef.current, { - fill: color(theme.palette.primary.main), - }), - // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels - layer: Number.MAX_VALUE, - }); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - }; - }, [selectedDate, theme, i18n.language]); - - // Effect to add guide for the reference day - useEffect( - () => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - const referenceDate = new Date(referenceDay); - const start = referenceDate.setHours(12, 0, 0); - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: start, - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(darken(theme.palette.divider, 0.25)), - strokeOpacity: 1, - strokeWidth: 2, - strokeDasharray: [6, 4], - }); - - setReferenceDayX(); - xAxis.onPrivate('selectionMin', setReferenceDayX); - xAxis.onPrivate('selectionMax', setReferenceDayX); - const resizeObserver = new ResizeObserver(setReferenceDayX); - resizeObserver.observe(rootRef.current.dom); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - resizeObserver.disconnect(); - }; - }, - // Re-run effect when selection changes (date/scenario/compartment/district) or when the active scenarios/filters change (theme and translation do not change after initialization) - [referenceDay, theme, i18n.language, setReferenceDayX] - ); - - // Effect to update Simulation and case data - useEffect(() => { - // Skip effect if chart is not initialized yet - if (!chartRef.current) return; - // Also skip if there is no scenario or compartment selected - if (selectedScenario === null || !selectedCompartment) return; - - // Create empty map to match dates - const dataMap = new Map(); - - // Cycle through scenarios - activeScenarios?.forEach((scenarioId) => { - simulationData?.[scenarioId]?.results.forEach(({day, compartments}) => { - // Add scenario data to map (upsert date entry) - dataMap.set(day, {...dataMap.get(day), [scenarioId]: compartments[selectedCompartment]}); - }); - - if (scenarioId === 0) { - // Add case data values (upsert date entry) - caseData?.results.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.compartments[selectedCompartment]}); - }); - } - }); - - if (percentileData) { - // Add 25th percentile data - percentileData[0].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.compartments[selectedCompartment]}); - }); - - // Add 75th percentile data - percentileData[1].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.compartments[selectedCompartment]}); - }); - } - - // Add groupFilter data of visible filters - if (groupFilterList && groupFilterData) { - Object.values(groupFilterList).forEach((groupFilter) => { - if (groupFilter?.isVisible) { - // Check if data for filter is available (else report error) - if (groupFilterData[groupFilter.name]) { - groupFilterData[groupFilter.name].results.forEach((entry: GroupData) => { - dataMap.set(entry.day, { - ...dataMap.get(entry.day), - [groupFilter.name]: entry.compartments[selectedCompartment], - }); - }); - } else { - console.error(`ERROR: missing data for "${groupFilter.name}" filter`); - } - } - }); - } - - // Sort map by date - const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); - const data = Array.from(dataMapSorted).map(([day, data]) => { - return {date: day, ...data}; - }); - - // Put data into series - chartRef.current.series.each((series, i) => { - // Set-up data processors for first series (not needed for others since all use the same data) - if (i === 0) { - series.data.processor = DataProcessor.new(rootRef.current as Root, { - // Define date fields and their format (incoming format from API) - dateFields: ['date'], - dateFormat: 'yyyy-MM-dd', - }); - } - // Link each series to data - series.data.setAll(data); - }); - - // Set up HTML tooltip - const tooltipHTML = ` - ${'' /* Current Date and selected compartment name */} - {date.formatDate("${t('dateFormat')}")} (${tBackend( - `infection-states.${selectedCompartment}` - )}) -
- ${ - // Table row for each series of an active scenario - chartRef.current.series.values - .filter((series) => activeScenarios?.includes(Number(series.get('id')))) - .map((series): string => { - /* Skip if series: - * - is hidden - * - is percentile series (which is added to the active scenario series) - * - is group filter series - */ - if ( - series.isHidden() || - series.get('id') === 'percentiles' || - series.get('id')?.startsWith('group-filter-') - ) { - return ''; - } - /* Skip with error if series does not have property: - * - id - * - name - * - valueYField - * - stroke - */ - if (!series.get('id') || !series.get('name') || !series.get('valueYField') || !series.get('stroke')) { - console.error( - 'ERROR: missing series property: ', - series.get('id'), - series.get('name'), - series.get('valueYField'), - series.get('stroke') - ); - return ''; - } - // Handle series normally - return ` - - - - ${ - // Skip percentiles if this series is not the selected scenario or case data - series.get('id') !== selectedScenario.toString() || selectedScenario === 0 - ? '' - : ` - - ` - } - - ${ - // Add group filters if this series is the selected scenario - series.get('id') !== selectedScenario.toString() - ? '' - : // Add table row for each active group filter - (chartRef.current as XYChart).series.values - .filter((s) => s.get('id')?.startsWith('group-filter-') && !s.isHidden()) - .map((groupFilterSeries) => { - return ` - - - - - `; - }) - .join('') - } - `; - }) - .join('') - } -
- ${series.get('name') as string} - - {${series.get('valueYField') as string}} - - [{percentileDown} - {percentileUp}] -
- ${groupFilterSeries.get('name') as string} - - {${groupFilterSeries.get('valueYField') as string}} -
- `; - - // Attach tooltip to series - chartRef.current.series.each((series) => { - const tooltip = Tooltip.new(rootRef.current as Root, { - labelHTML: tooltipHTML, - getFillFromSprite: false, - autoTextColor: false, - pointerOrientation: 'horizontal', - }); - - // Set tooltip default text color to theme primary text color - tooltip.label.setAll({ - fill: color(theme.palette.text.primary), - }); - - // Set tooltip background to theme paper - tooltip.get('background')?.setAll({ - fill: color(theme.palette.background.paper), - }); - - // Set tooltip - series.set('tooltip', tooltip); - }); - - // Collect data field names & order for data export - // Always export date and case data (and percentiles of selected scenario) - let dataFields = { - date: `${t('chart.date')}`, - caseData: `${t('chart.caseData')}`, - percentileUp: `${t('chart.percentileUp')}`, - percentileDown: `${t('chart.percentileDown')}`, - }; - // Always put date first, case data second - const dataFieldsOrder = ['date', 'caseData']; - // Loop through active scenarios (if there are any) - if (activeScenarios) { - activeScenarios.forEach((scenarioId) => { - // Skip case data (already added) - if (scenarioId === 0 || !scenarioList.scenarios[scenarioId]) { - return; - } - - // Add scenario label to export data field names - dataFields = { - ...dataFields, - [scenarioId]: scenarioList.scenarios[scenarioId].label, - }; - // Add scenario id to export data field order (for sorted export like csv) - dataFieldsOrder.push(`${scenarioId}`); - // If this is the selected scenario also add percentiles after it - if (scenarioId == selectedScenario) { - dataFieldsOrder.push('percentileDown', 'percentileUp'); - } - }); - } - - // Let's import this lazily, since it contains a lot of code. - import('@amcharts/amcharts5/plugins/exporting') - .then((module) => { - // Update export menu - module.Exporting.new(rootRef.current as Root, { - menu: module.ExportingMenu.new(rootRef.current as Root, {}), - filePrefix: 'Covid Simulation Data', - dataSource: data, - dateFields: ['date'], - dateFormat: `${t('dateFormat')}`, - dataFields: dataFields, - dataFieldsOrder: dataFieldsOrder, - }); - }) - .catch(() => console.warn("Couldn't load exporting functionality!")); - - setReferenceDayX(); - // Re-run this effect whenever the data itself changes (or any variable the effect uses) - }, [ - percentileData, - simulationData, - caseData, - groupFilterData, - activeScenarios, - selectedScenario, - scenarioList, - selectedCompartment, - theme, - groupFilterList, - t, - tBackend, - setReferenceDayX, - ]); - - return ( - - - - ); -} From 92191f1c389588d6949240d4351245b3c5a0b046 Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 5 Jun 2024 11:47:43 +0200 Subject: [PATCH 013/119] Revert ":beetle: Fix heat palette as user preference" This reverts commit 3aced9a866c680f75928223447d17f8c36a43d44. --- frontend/src/DataContext.tsx | 38 ++++++++----------- .../src/components/Sidebar/MapContainer.tsx | 26 ++++--------- 2 files changed, 23 insertions(+), 41 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 3fcf4cdf..3eff0b71 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {createContext, useState, useEffect, useMemo} from 'react'; +import {createContext, useState, useEffect} from 'react'; import React from 'react'; import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; @@ -213,27 +213,19 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { } }, [chartCaseData, chartGroupFilterData, chartPercentileData, chartSimulationData, selectedCompartment]); - const value = useMemo( - () => ({ - mapData: mapData, - areMapValuesFetching: mapIsCaseDataFetching || mapIsSimulationDataFetching, - chartCaseData: processedChartCaseData, - chartSimulationData: processedChartSimulationData, - chartPercentileData: processedChartPercentileData, - chartGroupFilterData: processedChartGroupFilterData, - isChartDataFetching: chartCaseDataFetching || chartSimulationFetching, - }), - [ - mapData, - mapIsCaseDataFetching, - mapIsSimulationDataFetching, - processedChartCaseData, - processedChartSimulationData, - processedChartPercentileData, - processedChartGroupFilterData, - chartCaseDataFetching, - chartSimulationFetching, - ] + return ( + + {children} + ); - return {children}; }; diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index 33c0a15d..6e69af8e 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -23,7 +23,6 @@ import SidebarTabs from './SidebarTabs'; import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; import {selectDistrict} from 'store/DataSelectionSlice'; -import {selectHeatmapLegend} from 'store/UserPreferenceSlice'; export default function MapContainer() { const {t} = useTranslation(); @@ -43,7 +42,6 @@ export default function MapContainer() { const storeSelectedArea = useAppSelector((state) => state.dataSelection.district); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const storeLegend = useAppSelector((state) => state.userPreference.selectedHeatmap); const defaultValue = useMemo(() => { return { @@ -61,18 +59,14 @@ export default function MapContainer() { : defaultValue ); const [aggregatedMax, setAggregatedMax] = useState(1); - const [legend, setLegend] = useState( - storeLegend - ? storeLegend - : { - name: 'uninitialized', - isNormalized: true, - steps: [ - {color: 'rgb(255,255,255)', value: 0}, - {color: 'rgb(255,255,255)', value: 1}, - ], - } - ); + const [legend, setLegend] = useState({ + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + }); const [longLoad, setLongLoad] = useState(false); const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); @@ -109,10 +103,6 @@ export default function MapContainer() { ); }, [selectedArea, dispatch]); - useEffect(() => { - dispatch(selectHeatmapLegend({legend: legend})); - }, [legend, dispatch]); - const calculateToolTip = useCallback( (regionData: FeatureProperties) => { const bez = t(`BEZ.${regionData.BEZ}`); From 2008664202d82002cba00781cf15e6ff175dccc2 Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 5 Jun 2024 12:11:04 +0200 Subject: [PATCH 014/119] :wrench: Add previous removed files --- .../src/components/Sidebar/DistrictMap.tsx | 448 ++++++++++ .../src/components/Sidebar/HeatLegend.tsx | 78 ++ .../src/components/Sidebar/HeatLegendEdit.tsx | 216 +++++ frontend/src/components/Sidebar/SearchBar.tsx | 169 ++++ frontend/src/components/Sidebar/index.tsx | 39 + frontend/src/components/SimulationChart.tsx | 816 ++++++++++++++++++ 6 files changed, 1766 insertions(+) create mode 100644 frontend/src/components/Sidebar/DistrictMap.tsx create mode 100644 frontend/src/components/Sidebar/HeatLegend.tsx create mode 100644 frontend/src/components/Sidebar/HeatLegendEdit.tsx create mode 100644 frontend/src/components/Sidebar/SearchBar.tsx create mode 100644 frontend/src/components/Sidebar/index.tsx create mode 100644 frontend/src/components/SimulationChart.tsx diff --git a/frontend/src/components/Sidebar/DistrictMap.tsx b/frontend/src/components/Sidebar/DistrictMap.tsx new file mode 100644 index 00000000..bf3664c6 --- /dev/null +++ b/frontend/src/components/Sidebar/DistrictMap.tsx @@ -0,0 +1,448 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useEffect, useMemo, useState, useRef} from 'react'; +import {useTheme} from '@mui/material/styles'; +import * as am5 from '@amcharts/amcharts5'; +import * as am5map from '@amcharts/amcharts5/map'; +import {useTranslation} from 'react-i18next'; +import {useAppDispatch, useAppSelector} from '../../store/hooks'; +import {selectDistrict} from '../../store/DataSelectionSlice'; +import Box from '@mui/material/Box'; +import Grid from '@mui/material/Grid'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; +import LockIcon from '@mui/icons-material/Lock'; +import {useGetSimulationDataByDateQuery} from 'store/services/scenarioApi'; +import HeatLegend from './HeatLegend'; +import {NumberFormatter} from 'util/hooks'; +import HeatLegendEdit from './HeatLegendEdit'; +import {HeatmapLegend} from '../../types/heatmapLegend'; +import LockOpen from '@mui/icons-material/LockOpen'; +import LoadingContainer from '../shared/LoadingContainer'; +import {useGetCaseDataByDateQuery} from '../../store/services/caseDataApi'; +import mapData from '../../../assets/lk_germany_reduced.geojson?url'; +import svgZoomResetURL from '../../../assets/svg/zoom_out_map_white_24dp.svg?url'; +import svgZoomInURL from '../../../assets/svg/zoom_in_white_24dp.svg?url'; +import svgZoomOutURL from '../../../assets/svg/zoom_out_white_24dp.svg?url'; + +interface IRegionPolygon { + value: number; + + /** District name */ + GEN: string; + + /** District type */ + BEZ: string; + + /** AGS (district ID) */ + RS: string; +} + +export default function DistrictMap(): JSX.Element { + const [geodata, setGeodata] = useState(null); + const [longLoad, setLongLoad] = useState(false); + const [longLoadTimeout, setLongLoadTimeout] = useState(); + const selectedDistrict = useAppSelector((state) => state.dataSelection.district); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedDate = useAppSelector((state) => state.dataSelection.date); + const scenarioList = useAppSelector((state) => state.scenarioList.scenarios); + const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); + const [chart, setChart] = useState(null); + + const {data: simulationData, isFetching: isSimulationDataFetching} = useGetSimulationDataByDateQuery( + { + id: selectedScenario ?? 0, + day: selectedDate ?? '', + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment || !selectedDate} + ); + + const {data: caseData, isFetching: isCaseDataFetching} = useGetCaseDataByDateQuery( + { + day: selectedDate ?? '', + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: selectedScenario === null || selectedScenario > 0 || !selectedCompartment || !selectedDate} + ); + + const legendRef = useRef(null); + const {t, i18n} = useTranslation(); + const {t: tBackend} = useTranslation('backend'); + const {formatNumber} = NumberFormatter(i18n.language, 1, 0); + const theme = useTheme(); + const dispatch = useAppDispatch(); + const lastSelectedPolygon = useRef(null); + const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); + + // This memo either returns the case data or simulation data, depending on which card is selected. + const data = useMemo(() => { + if (selectedScenario === null) { + return null; + } + + if (selectedScenario === 0 && caseData !== undefined && caseData.results.length > 0) { + return caseData; + } else if (selectedScenario > 0 && simulationData !== undefined && simulationData.results.length > 0) { + return simulationData; + } + + return null; + }, [caseData, simulationData, selectedScenario]); + + // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. + const isFetching = useMemo(() => { + if (selectedScenario === null) { + return true; + } + + return (selectedScenario === 0 && isCaseDataFetching) || (selectedScenario > 0 && isSimulationDataFetching); + }, [selectedScenario, isCaseDataFetching, isSimulationDataFetching]); + + // use Memoized to store aggregated max and only recalculate if parameters change + const aggregatedMax: number = useMemo(() => { + if (fixedLegendMaxValue) { + return fixedLegendMaxValue; + } + let max = 1; + + if (data && selectedCompartment !== null) { + data.results.forEach((entry) => { + if (entry.name !== '00000') { + max = Math.max(entry.compartments[selectedCompartment], max); + } + }); + } + return max; + }, [selectedCompartment, data, fixedLegendMaxValue]); + + // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This + // prevents that the indicator is showing for every little change. + useEffect(() => { + if (isFetching) { + setLongLoadTimeout( + window.setTimeout(() => { + setLongLoad(true); + }, 1000) + ); + } else { + clearTimeout(longLoadTimeout); + setLongLoad(false); + } + // eslint-disable-next-line + }, [isFetching, setLongLoad, setLongLoadTimeout]); // longLoadTimeout is deliberately ignored here. + + // fetch geojson + useEffect(() => { + fetch(mapData, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + // resolve Promise + (geojson: GeoJSON.GeoJSON) => { + setGeodata(geojson); + }, + // reject promise + () => { + console.warn('Failed to fetch geoJSON'); + } + ); + }, []); + + // Setup Map + useEffect(() => { + // Create map instance + const root = am5.Root.new('mapdiv'); + const chart = root.container.children.push( + am5map.MapChart.new(root, { + projection: am5map.geoMercator(), + maxZoomLevel: 4, + maxPanOut: 0.4, + zoomControl: am5map.ZoomControl.new(root, { + paddingBottom: 25, + opacity: 50, + }), + }) + ); + // Add home button to reset pan & zoom + chart.get('zoomControl')?.homeButton.set('visible', true); + + // settings to fix positioning of images on buttons + const fixSVGPosition = { + width: 25, + height: 25, + dx: -5, + dy: -3, + }; + + // Set svg icon for home button + chart.get('zoomControl')?.homeButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomResetURL, + ...fixSVGPosition, + // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image + }) as unknown as am5.Graphics + ); + + // Add function to select germany when home button is pressed + chart.get('zoomControl')?.homeButton.events.on('click', () => { + // Set district to germany + dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); + }); + + // Set svg icon for plus button + chart.get('zoomControl')?.plusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomInURL, + ...fixSVGPosition, + // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image + }) as unknown as am5.Graphics + ); + + // Set svg icon for minus button + chart.get('zoomControl')?.minusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomOutURL, + ...fixSVGPosition, + // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image + }) as unknown as am5.Graphics + ); + + // Create polygon series + const polygonSeries = chart.series.push( + am5map.MapPolygonSeries.new(root, { + geoJSON: geodata ?? undefined, + tooltipPosition: 'fixed', + layer: 0, + }) + ); + + // get template for polygons to attach events etc to each + const polygonTemplate = polygonSeries.mapPolygons.template; + polygonTemplate.setAll({ + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + }); + + // add click event + polygonTemplate.events.on('click', (e) => { + const item = e.target.dataItem?.dataContext as IRegionPolygon; + dispatch(selectDistrict({ags: item.RS, name: item.GEN, type: t(item.BEZ)})); + }); + // add hover state + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + + //show tooltip on heat legend when hovering + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef.current) { + const value = (e.target.dataItem?.dataContext as IRegionPolygon).value; + legendRef.current.showValue(value, formatNumber(value)); + } + }); + //hide tooltip on heat legend when not hovering anymore event + polygonTemplate.events.on('pointerout', () => { + if (legendRef.current) { + void legendRef.current.hideTooltip(); + } + }); + setChart(chart); + return () => { + chart?.dispose(); + root?.dispose(); + }; + }, [geodata, theme, t, formatNumber, dispatch]); + + useEffect(() => { + // unselect previous + if (chart && lastSelectedPolygon.current) { + // reset style + lastSelectedPolygon.current.states.create('default', { + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + layer: 0, + }); + lastSelectedPolygon.current.states.apply('default'); + } + // select new + if (selectedDistrict.ags !== '00000' && chart && chart.series.length > 0) { + const series = chart.series.getIndex(0) as am5map.MapPolygonSeries; + series.mapPolygons.each((polygon) => { + const data = polygon.dataItem?.dataContext as IRegionPolygon; + if (data.RS === selectedDistrict.ags) { + polygon.states.create('default', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 2, + }); + if (!polygon.isHover()) { + polygon.states.apply('default'); + } + // save polygon + lastSelectedPolygon.current = polygon; + } + }); + } + }, [chart, selectedDistrict, theme]); + + // set Data + useEffect(() => { + if (chart && chart.series.length > 0) { + const polygonSeries = chart.series.getIndex(0) as am5map.MapPolygonSeries; + if (selectedScenario !== null && selectedCompartment && !isFetching && data) { + // Map compartment value to RS + const dataMapped = new Map(); + data?.results.forEach((entry) => { + const rs = entry.name; + dataMapped.set(rs, entry.compartments[selectedCompartment]); + }); + + if (dataMapped.size > 0) { + polygonSeries.mapPolygons.each((polygon) => { + const regionData = polygon.dataItem?.dataContext as IRegionPolygon; + regionData.value = dataMapped.get(regionData.RS) ?? Number.NaN; + + // determine fill color + let fillColor = am5.color(theme.palette.background.default); + if (Number.isFinite(regionData.value)) { + if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { + // if legend is normalized, also pass mix & max to color function + fillColor = getColorFromLegend(regionData.value, legend, {min: 0, max: aggregatedMax}); + } else { + // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed + fillColor = getColorFromLegend(regionData.value, legend); + } + } + + const bez = t(`BEZ.${regionData.BEZ}`); + const compartmentName = tBackend(`infection-states.${selectedCompartment}`); + polygon.setAll({ + tooltipText: + selectedScenario !== null && selectedCompartment + ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(regionData.value)}` + : `${bez} {GEN}`, + fill: fillColor, + }); + }); + } + } else if (longLoad || !data) { + polygonSeries.mapPolygons.each((polygon) => { + const regionData = polygon.dataItem?.dataContext as IRegionPolygon; + regionData.value = Number.NaN; + const bez = t(`BEZ.${regionData.BEZ}`); + polygon.setAll({ + tooltipText: `${bez} {GEN}`, + fill: am5.color(theme.palette.text.disabled), + }); + }); + } + } + }, [ + scenarioList, + selectedScenario, + selectedCompartment, + selectedDate, + aggregatedMax, + dispatch, + t, + formatNumber, + data, + theme, + isFetching, + legend, + longLoad, + tBackend, + chart, + ]); + + return ( + + + + + { + // move exposed legend item (or null if disposed) into ref + legendRef.current = legend; + }} + min={0} + // use math.round to convert the numbers to integers + max={ + legend.isNormalized ? Math.round(aggregatedMax) : Math.round(legend.steps[legend.steps.length - 1].value) + } + displayText={true} + id={'legend'} + /> + + + + setFixedLegendMaxValue(fixedLegendMaxValue ? null : aggregatedMax)} + size='small' + sx={{padding: theme.spacing(0)}} + > + {fixedLegendMaxValue ? : } + + + + + + + ); +} + +function getColorFromLegend( + value: number, + legend: HeatmapLegend, + aggregatedMinMax?: {min: number; max: number} +): am5.Color { + // assume legend stops are absolute + let normalizedValue = value; + // if aggregated values (min/max) are properly set, the legend items are already normalized => need to normalize value too + if (aggregatedMinMax && aggregatedMinMax.min < aggregatedMinMax.max) { + const {min: aggregatedMin, max: aggregatedMax} = aggregatedMinMax; + normalizedValue = (value - aggregatedMin) / (aggregatedMax - aggregatedMin); + } else if (aggregatedMinMax) { + // log error if any of the above checks fail + console.error('Error: invalid MinMax array in getColorFromLegend', [value, legend, aggregatedMinMax]); + // return completely transparent fill if errors occur + return am5.color('rgba(0,0,0,0)'); + } + if (normalizedValue <= legend.steps[0].value) { + return am5.color(legend.steps[0].color); + } else if (normalizedValue >= legend.steps[legend.steps.length - 1].value) { + return am5.color(legend.steps[legend.steps.length - 1].color); + } else { + let upperTick = legend.steps[0]; + let lowerTick = legend.steps[0]; + for (let i = 1; i < legend.steps.length; i++) { + if (normalizedValue <= legend.steps[i].value) { + upperTick = legend.steps[i]; + lowerTick = legend.steps[i - 1]; + break; + } + } + return am5.Color.interpolate( + (normalizedValue - lowerTick.value) / (upperTick.value - lowerTick.value), + am5.color(lowerTick.color), + am5.color(upperTick.color) + ); + } +} diff --git a/frontend/src/components/Sidebar/HeatLegend.tsx b/frontend/src/components/Sidebar/HeatLegend.tsx new file mode 100644 index 00000000..65f7347b --- /dev/null +++ b/frontend/src/components/Sidebar/HeatLegend.tsx @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useLayoutEffect} from 'react'; +import {useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import * as am5 from '@amcharts/amcharts5'; +import {useTranslation} from 'react-i18next'; +import {NumberFormatter} from 'util/hooks'; +import {HeatmapLegend} from '../../types/heatmapLegend'; + +export default function HeatLegend( + props: Readonly<{ + // add is_dynamic/absolute? + legend: HeatmapLegend; + exposeLegend: (legend: am5.HeatLegend | null) => void; + min: number; + max: number; + displayText: boolean; + id: string; + }> +): JSX.Element { + const id = props.id + String(Date.now() + Math.random()); // "guarantee" unique id + const {i18n} = useTranslation(); + const {formatNumber} = NumberFormatter(i18n.language, 3, 8); + const theme = useTheme(); + + useLayoutEffect(() => { + const root = am5.Root.new(id); + const heatLegend = root.container.children.push( + am5.HeatLegend.new(root, { + orientation: 'horizontal', + startValue: props.min, + startText: props.displayText ? formatNumber(props.min) : ' ', + endValue: props.max, + endText: props.displayText ? formatNumber(props.max) : ' ', + // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color + startColor: am5.color(theme.palette.background.paper), + endColor: am5.color(theme.palette.background.paper), + }) + ); + + // compile stop list + const stoplist: {color: am5.Color; opacity: number; offset: number}[] = []; + props.legend.steps.forEach((item) => { + stoplist.push({ + color: am5.color(item.color), + // opacity of the color between 0..1 + opacity: 1, + // offset is stop position normalized to 0..1 unless already normalized + offset: props.legend.isNormalized ? item.value : (item.value - props.min) / (props.max - props.min), + }); + }); + heatLegend.markers.template.adapters.add('fillGradient', (gradient) => { + gradient?.set('stops', stoplist); + return gradient; + }); + + // expose Legend element to District map (for tooltip on event) + props.exposeLegend(heatLegend); + + return () => { + root.dispose(); + props.exposeLegend(null); + }; + }, [props, formatNumber, theme, id]); + + return ( + + ); +} diff --git a/frontend/src/components/Sidebar/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/HeatLegendEdit.tsx new file mode 100644 index 00000000..4fa6d936 --- /dev/null +++ b/frontend/src/components/Sidebar/HeatLegendEdit.tsx @@ -0,0 +1,216 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react'; +import {useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import FormControl from '@mui/material/FormControl'; +import Grid from '@mui/material/Grid'; +import IconButton from '@mui/material/IconButton'; +import MenuItem from '@mui/material/MenuItem'; +import Select, {SelectChangeEvent} from '@mui/material/Select'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import EditIcon from '@mui/icons-material/Edit'; +import {useAppDispatch, useAppSelector} from '../../store/hooks'; +import {selectHeatmapLegend} from '../../store/UserPreferenceSlice'; +import {HeatmapLegend} from '../../types/heatmapLegend'; +import {useTranslation} from 'react-i18next'; +import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; + +/** + * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. + */ +export default function HeatLegendEdit(): JSX.Element { + const dispatch = useAppDispatch(); + const activeScenario = useAppSelector((state) => state.dataSelection.scenario); + const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); + const theme = useTheme(); + const {t} = useTranslation(); + + // This contains all legends using the default colors. + const defaultLegends = useDefaultLegends(); + + // This contains all legends from the presets file. + const [heatmapLegends, setHeatmapLegends] = useState>([]); + + // This contains the default legend and the presets and is used for displaying the list to the user. + const [availablePresets, setAvailablePresets] = useState>([]); + + // modal state + const [heatLegendEditOpen, setHeatLegendEditOpen] = React.useState(false); + + // Try to select a heatlegend using the given name. + const selectLegendByName = useCallback( + (name: string) => { + const preset = availablePresets.find((preset) => preset.name === name); + if (preset) { + dispatch(selectHeatmapLegend({legend: preset})); + } + }, + [dispatch, availablePresets] + ); + + const handleChange = (event: SelectChangeEvent) => selectLegendByName(event.target.value); + + // This effect loads the presets file, once the modal is opened the first time. + useEffect(() => { + if (heatmapLegends.length === 0 && heatLegendEditOpen) { + fetch(legendPresets, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + (presetList: HeatmapLegend[]) => { + presetList.forEach((legend) => { + if (legend.isNormalized) { + legend.steps.forEach((step) => { + //set step to normalized values + step.value = step.value / legend.steps[legend.steps.length - 1].value; + }); + } + }); + + setHeatmapLegends(presetList); + }, + // Reject Promise + () => { + console.warn('Did not receive proper heatmap legend presets'); + } + ); + } + }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen]); + + // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". + useEffect(() => { + if (activeScenario === null || defaultLegends.length === 0) { + return; + } + + const scenarioDefault = defaultLegends[activeScenario % defaultLegends.length]; + const legends = [...heatmapLegends]; + legends.unshift(scenarioDefault); + + // In the case, where a non default legend is selected, but the legends haven't been loaded from file we add the + // legend to the selection. + if (legend.name !== 'Default' && heatmapLegends.length === 0) { + legends.push(legend); + } + + setAvailablePresets(legends); + }, [defaultLegends, heatmapLegends, activeScenario, legend]); + + // This effect updates the selected legend, if a default legend is selected and the scenario changes. + useEffect(() => { + if (activeScenario === null) { + return; + } + + if (legend.name !== 'Default' && legend.name !== 'uninitialized') { + return; + } + + selectLegendByName('Default'); + }, [activeScenario, legend, selectLegendByName]); + + return ( + <> + + setHeatLegendEditOpen(true)} + aria-label={t('heatlegend.edit')} + size='small' + sx={{padding: theme.spacing(0), marginBottom: theme.spacing(1)}} + > + + + + setHeatLegendEditOpen(false)}> + + + + + + + + + + + ); +} + +function LegendGradient(props: Readonly<{legend: HeatmapLegend}>): JSX.Element { + const divRef = useRef(null); + + useLayoutEffect(() => { + if (!divRef.current) { + return; + } + + const gradient = props.legend.steps + .map(({color, value}) => { + return `${color} ${Math.round(value * 100)}%`; + }) + .join(', '); + + divRef.current.style.background = `linear-gradient(90deg, ${gradient})`; + }, [props.legend]); + + return ( +
+ ); +} + +/** + * This hook generates the heatmap legends for all scenarios using the current theme. + */ +function useDefaultLegends(): Array { + const theme = useTheme(); + const [defaultLegends, setDefaultLegends] = useState>([]); + + useEffect(() => { + const legends: Array = []; + const stepCount = theme.custom.scenarios[0].length - 1; + for (const element of theme.custom.scenarios) { + const steps = []; + for (let j = 0; j < stepCount; j++) { + steps.push({color: element[stepCount - 1 - j], value: j / (stepCount - 1)}); + } + legends.push({name: 'Default', isNormalized: true, steps}); + } + + setDefaultLegends(legends); + }, [theme, setDefaultLegends]); + + return defaultLegends; +} diff --git a/frontend/src/components/Sidebar/SearchBar.tsx b/frontend/src/components/Sidebar/SearchBar.tsx new file mode 100644 index 00000000..e7481e90 --- /dev/null +++ b/frontend/src/components/Sidebar/SearchBar.tsx @@ -0,0 +1,169 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useEffect, useState} from 'react'; +import {useTheme} from '@mui/material/styles'; +import {useAppSelector, useAppDispatch} from '../../store/hooks'; +import {selectDistrict} from '../../store/DataSelectionSlice'; +import SearchIcon from '@mui/icons-material/Search'; +import Autocomplete from '@mui/material/Autocomplete'; +import Box from '@mui/material/Box'; +import Container from '@mui/material/Container'; +import {useTranslation} from 'react-i18next'; +import countyData from '../../../assets/lk_germany_reduced_list.json?url'; + +/** Type definition for the CountyItems of the Autocomplete field + * @see DataSelectionSlice + */ +interface CountyItem { + /** ID for the district (Amtlicher Gemeindeschlüssel) (same as ags in store). */ + RS: string; + /** Label/Name of the district (same as the name in the data store). */ + GEN: string; + /** Region type identifier (same as the type in the data store). */ + BEZ: string; +} + +/** + * The SearchBar component helps select a specific district of the map. + * @returns {JSX.Element} JSX Element to render the search bar container. + */ +export default function SearchBar(): JSX.Element { + const selectedDistrict = useAppSelector((state) => state.dataSelection.district); + const {t} = useTranslation('global'); + const [countyList, setCountyList] = useState>([]); + const theme = useTheme(); + const dispatch = useAppDispatch(); + + // This ensures that the displayed name of Germany is always localized. + useEffect(() => { + if (selectedDistrict.ags === '00000' && selectedDistrict.name !== t('germany')) { + dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); + } + }, [t, selectedDistrict, dispatch]); + + useEffect(() => { + // get option list from assets + fetch(countyData, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => { + // interpret content as JSON + return response.json(); + }) + .then( + // Resolve Promise + (jsonlist: CountyItem[]) => { + // append germany to list + jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''}); + // sort list to put germany at the right place (loading and sorting takes 1.5 ~ 2 sec) + jsonlist.sort((a, b) => { + return a.GEN.localeCompare(b.GEN); + }); + // fill countyList state with list + setCountyList(jsonlist); + }, + // Reject Promise + () => { + console.warn('Did not receive proper county list'); + } + ); + // this init should only run once on first render + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [t]); + + return ( + + + + option.RS === value.RS} + // onChange of input dispatch new selected district or initial value (ags: 00000, name: germany) if input is cleared + onChange={(_event, newValue: CountyItem | null) => { + if (newValue) { + dispatch( + selectDistrict({ + ags: newValue?.RS ?? '00000', + name: newValue?.GEN ?? t('germany'), + type: newValue?.BEZ ?? '', + }) + ); + } + }} + // enable clearing/resetting the input field with escape key + clearOnEscape + // automatically highlights first option + autoHighlight + // selects highlighted option on focus loss + //autoSelect + // provide countyList as options for drop down + options={countyList} + // group dropdown contents by first letter (json array needs to be sorted alphabetically by name for this to work correctly) + groupBy={(option) => option.GEN[0]} + // provide function to display options in dropdown menu + getOptionLabel={(option) => `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} + sx={{ + flexGrow: 1, + //disable outline for any children + '& *:focus': {outline: 'none'}, + }} + // override default input field, placeholder is a fallback, as value should always be a selected district or germany (initial/default value) + renderInput={(params) => ( +
+ +
+ )} + /> +
+
+ ); +} diff --git a/frontend/src/components/Sidebar/index.tsx b/frontend/src/components/Sidebar/index.tsx new file mode 100644 index 00000000..a0064c7d --- /dev/null +++ b/frontend/src/components/Sidebar/index.tsx @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {useTheme} from '@mui/material/styles'; +import SearchBar from './SearchBar'; +import DistrictMap from './DistrictMap'; +import SidebarTabs from './SidebarTabs'; +import Box from '@mui/material/Box'; +import Container from '@mui/material/Container'; +import Stack from '@mui/material/Stack'; + +export default function Sidebar(): JSX.Element { + const theme = useTheme(); + + return ( + + + + + + + + + + + + ); +} diff --git a/frontend/src/components/SimulationChart.tsx b/frontend/src/components/SimulationChart.tsx new file mode 100644 index 00000000..c097a321 --- /dev/null +++ b/frontend/src/components/SimulationChart.tsx @@ -0,0 +1,816 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useCallback, useEffect, useRef} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; +import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; +import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; +import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; +import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; +import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; +import am5locales_en_US from '@amcharts/amcharts5/locales/en_US'; +import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; +import {useAppDispatch, useAppSelector} from '../store/hooks'; +import {darken, useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import {selectDate} from '../store/DataSelectionSlice'; +import {useGetCaseDataByDistrictQuery} from '../store/services/caseDataApi'; +import {dateToISOString} from 'util/util'; +import { + PercentileDataByDay, + useGetMultipleSimulationDataByNodeQuery, + useGetPercentileDataQuery, +} from 'store/services/scenarioApi'; +import {useTranslation} from 'react-i18next'; +import LoadingContainer from './shared/LoadingContainer'; +import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; +import {GroupData} from 'types/group'; +import {setReferenceDayBottom} from '../store/LayoutSlice'; + +/** + * React Component to render the Simulation Chart Section + * @returns {JSX.Element} JSX Element to render the scenario chart container and the scenario graph within. + */ +export default function SimulationChart(): JSX.Element { + const {t, i18n} = useTranslation(); + const {t: tBackend} = useTranslation('backend'); + const theme = useTheme(); + + const scenarioList = useAppSelector((state) => state.scenarioList); + const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); + const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const selectedDate = useAppSelector((state) => state.dataSelection.date); + const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); + const minDate = useAppSelector((state) => state.dataSelection.minDate); + const maxDate = useAppSelector((state) => state.dataSelection.maxDate); + const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); + const dispatch = useAppDispatch(); + + const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( + groupFilterList && selectedScenario && selectedDistrict && selectedCompartment + ? Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + return { + id: selectedScenario, + node: selectedDistrict, + compartment: selectedCompartment, + groupFilter: groupFilter, + }; + }) + : [] + ); + + const {data: caseData, isFetching: caseDataFetching} = useGetCaseDataByDistrictQuery( + { + node: selectedDistrict, + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: !selectedCompartment} + ); + + const {data: simulationData, isFetching: simulationFetching} = useGetMultipleSimulationDataByNodeQuery( + { + // Filter only scenarios (scenario id 0 is case data) + ids: activeScenarios ? activeScenarios.filter((s) => s !== 0 && scenarioList.scenarios[s]) : [], + node: selectedDistrict, + groups: ['total'], + compartments: [selectedCompartment ?? ''], + }, + {skip: !selectedCompartment} + ); + + const {data: percentileData} = useGetPercentileDataQuery( + { + id: selectedScenario as number, + node: selectedDistrict, + groups: ['total'], + compartment: selectedCompartment as string, + }, + {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment} + ); + + const rootRef = useRef(null); + const chartRef = useRef(null); + + const setReferenceDayX = useCallback(() => { + if (!chartRef.current || !rootRef.current || !referenceDay) { + return; + } + + const midday = new Date(referenceDay).setHours(12, 0, 0); + + const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); + const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); + const docPosition = rootRef.current.rootPointToDocument(globalPosition).x; + dispatch(setReferenceDayBottom(docPosition)); + }, [dispatch, referenceDay]); + + // Effect to initialize root & chart + useEffect( + () => { + // Create root and chart + const root = Root.new('chartdiv'); + const chart = root.container.children.push( + XYChart.new(root, { + panX: false, + panY: false, + wheelX: 'panX', + wheelY: 'zoomX', + maxTooltipDistance: -1, + }) + ); + + // Set number formatter + root.numberFormatter.set('numberFormat', '#,###.'); + + // Create x-axis + const xAxis = chart.xAxes.push( + DateAxis.new(root, { + renderer: AxisRendererX.new(root, {}), + // Set base interval and aggregated intervals when the chart is zoomed out + baseInterval: {timeUnit: 'day', count: 1}, + gridIntervals: [ + {timeUnit: 'day', count: 1}, + {timeUnit: 'day', count: 3}, + {timeUnit: 'day', count: 7}, + {timeUnit: 'month', count: 1}, + {timeUnit: 'month', count: 3}, + {timeUnit: 'year', count: 1}, + ], + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + }) + ); + // Change axis renderer to have ticks/labels on day center + const xRenderer = xAxis.get('renderer'); + xRenderer.ticks.template.setAll({ + location: 0.5, + }); + + // Create y-axis + chart.yAxes.push( + ValueAxis.new(root, { + renderer: AxisRendererY.new(root, {}), + // Fix lower end to 0 + min: 0, + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + }) + ); + + // Add cursor + chart.set( + 'cursor', + XYCursor.new(root, { + // Only allow zooming along x-axis + behavior: 'zoomX', + // Snap cursor to xAxis ticks + xAxis: xAxis, + }) + ); + + // Add event on double click to select date + chart.events.on('click', (ev) => { + // Get date from axis position from cursor position + const date = xAxis.positionToDate( + xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) + ); + // Remove time information to only have a date + date.setHours(0, 0, 0, 0); + // Set date in store + dispatch(selectDate(dateToISOString(date))); + }); + + // Set refs to be used in other effects + rootRef.current = root; + chartRef.current = chart; + + // Clean-up before re-running this effect + return () => { + // Dispose old root and chart before creating a new instance + chartRef.current?.dispose(); + rootRef.current?.dispose(); + }; + }, + // This effect should only run once. dispatch should not change during runtime + [dispatch] + ); + + // Effect to change localization of chart if language changes + useEffect( + () => { + // Skip if root or chart is not initialized + if (!rootRef.current || !chartRef.current) { + return; + } + + // Set localization + rootRef.current.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; + + // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) + const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + xAxis.get('dateFormats', {day: ''})['day'] = t('dayFormat'); + xAxis.get('tooltipDateFormats', {day: ''})['day'] = t('dayFormat'); + // Fix first date of the month falling back to wrong format (also with fallback object) + xAxis.get('periodChangeDateFormats', {day: ''})['day'] = t('dayFormat'); + }, + // Re-run effect if language changes + [i18n.language, t] + ); + + // Effect to update min/max date. + useEffect(() => { + // Skip if root or chart is not initialized + if (!rootRef.current || !chartRef.current || !minDate || !maxDate) { + return; + } + + const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + xAxis.set('min', new Date(minDate).setHours(0)); + xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); + }, [minDate, maxDate]); + + // Effect to add series to chart + useEffect( + () => { + // Skip if root or chart not initialized + if (!rootRef.current || !chartRef.current) { + return; + } + + const chart: XYChart = chartRef.current; + const root: Root = rootRef.current; + const xAxis: DateAxis = chart.xAxes.getIndex(0) as DateAxis; + const yAxis: ValueAxis = chart.yAxes.getIndex(0) as ValueAxis; + + // Add series for case data + const caseDataSeries = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + // Case Data is always scenario id 0 + id: '0', + name: t('chart.caseData'), + valueXField: 'date', + valueYField: '0', + // Prevent data points from connecting across gaps in the data + connect: false, + stroke: color('#000'), + }) + ); + caseDataSeries.strokes.template.setAll({ + strokeWidth: 2, + }); + + // Add series for percentile area + const percentileSeries = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: 'percentiles', + valueXField: 'date', + valueYField: 'percentileUp', + openValueYField: 'percentileDown', + connect: false, + // Percentiles are only visible if a scenario is selected and it is not case data + visible: selectedScenario !== null && selectedScenario > 0, + // Add fill color according to selected scenario (if selected scenario is set and it's not case data) + fill: + selectedScenario !== null && selectedScenario > 0 + ? color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]) + : undefined, + }) + ); + percentileSeries.strokes.template.setAll({ + strokeWidth: 0, + }); + percentileSeries.fills.template.setAll({ + fillOpacity: 0.3, + visible: true, + }); + + // Add series for each scenario + Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { + const series = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: scenarioId, + name: tBackend(`scenario-names.${scenario.label}`), + valueXField: 'date', + valueYField: scenarioId, + // Prevent data points from connecting across gaps in the data + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color + tooltip: Tooltip.new(root, { + labelText: `[bold ${theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]}]${tBackend( + `scenario-names.${scenario.label}` + )}:[/] {${scenarioId}}`, + }), + stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), + }) + ); + series.strokes.template.setAll({ + strokeWidth: 2, + }); + }); + + // Add series for groupFilter (if there are any) + if (groupFilterList && selectedScenario) { + // Define line style variants for groups + const groupFilterStrokes = [ + [2, 4], // dotted + [8, 4], // dashed + [8, 4, 2, 4], // dash-dotted + [8, 4, 2, 4, 2, 4], // dash-dot-dotted + ]; + // Loop through visible group filters + Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .forEach((groupFilter, i) => { + // Add series for each group filter + const series = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: `group-filter-${groupFilter.name}`, + name: groupFilter.name, + valueXField: 'date', + valueYField: groupFilter.name, + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) + tooltip: Tooltip.new(root, { + labelText: `[bold ${theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]}]${ + groupFilter.name + }:[/] {${groupFilter.name}}`, + }), + stroke: color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]), + }) + ); + series.strokes.template.setAll({ + strokeWidth: 2, + // Loop through stroke list if group filters exceeds list length + strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], + }); + }); + } + + // Clean-up function + return () => { + // Remove all series + chart.series.clear(); + }; + }, + // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). + [scenarioList, groupFilterList, selectedScenario, t, tBackend, theme] + ); + + // Effect to hide disabled scenarios (and show them again if not hidden anymore) + useEffect( + () => { + const allSeries = chartRef.current?.series; + // Skip effect if chart is not initialized (contains no series yet) + if (!allSeries) return; + + // Set visibility of each series + allSeries.each((series) => { + // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) + const seriesID = series.get('id'); + // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list + if (seriesID === 'percentiles') { + return; + } + + if (!activeScenarios?.includes(Number(seriesID))) { + void series.hide(); + } else { + void series.show(); + } + }); + }, + // Re-run effect when the active scenario list changes + [activeScenarios] + ); + + // Effect to hide deviations if no scenario is selected + useEffect( + () => { + // Skip effect if chart is not initialized (contains no series yet) + if (!chartRef.current) return; + + // Find percentile series and only show it if there is a selected scenario + chartRef.current?.series.values + .filter((series) => series.get('id') === 'percentiles') + .map((percentileSeries) => { + if (selectedScenario === null || selectedScenario === 0) { + void percentileSeries.hide(); + } else { + void percentileSeries.show(); + } + }); + }, + // Re-run effect when the selected scenario changes + [selectedScenario] + ); + + // Effect to add Guide when date selected + useEffect(() => { + // Skip effect if chart (or root) is not initialized yet or no date is selected + if (!chartRef.current || !rootRef.current || !selectedDate) { + return; + } + + // Get xAxis from chart + const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + + // Create data item for range + const rangeDataItem = xAxis.makeDataItem({ + // Make sure the time of the start date object is set to first second of day + value: new Date(selectedDate).setHours(0, 0, 0), + // Make sure the time of the end date object is set to last second of day + endValue: new Date(selectedDate).setHours(23, 59, 59), + // Line and label should drawn above the other elements + above: true, + }); + + // Create the range with the data item + const range = xAxis.createAxisRange(rangeDataItem); + + // Set stroke of range (line with label) + range.get('grid')?.setAll({ + stroke: color(theme.palette.primary.main), + strokeOpacity: 1, + strokeWidth: 2, + location: 0.5, + visible: true, + }); + + // Set fill of range (rest of the day) + range.get('axisFill')?.setAll({ + fill: color(theme.palette.primary.main), + fillOpacity: 0.3, + visible: true, + }); + + // Set label for range + range.get('label')?.setAll({ + fill: color(theme.palette.primary.contrastText), + text: new Date(selectedDate).toLocaleDateString(i18n.language, { + year: 'numeric', + month: 'short', + day: '2-digit', + }), + location: 0.5, + background: RoundedRectangle.new(rootRef.current, { + fill: color(theme.palette.primary.main), + }), + // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels + layer: Number.MAX_VALUE, + }); + + return () => { + // Discard range before re-running this effect + xAxis.axisRanges.removeValue(range); + }; + }, [selectedDate, theme, i18n.language]); + + // Effect to add guide for the reference day + useEffect( + () => { + // Skip effect if chart (or root) is not initialized yet or no date is selected + if (!chartRef.current || !rootRef.current || !referenceDay) { + return; + } + + // Get xAxis from chart + const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; + + const referenceDate = new Date(referenceDay); + const start = referenceDate.setHours(12, 0, 0); + + // Create data item for range + const rangeDataItem = xAxis.makeDataItem({ + // Make sure the time of the start date object is set to first second of day + value: start, + // Line and label should drawn above the other elements + above: true, + }); + + // Create the range with the data item + const range = xAxis.createAxisRange(rangeDataItem); + + // Set stroke of range (line with label) + range.get('grid')?.setAll({ + stroke: color(darken(theme.palette.divider, 0.25)), + strokeOpacity: 1, + strokeWidth: 2, + strokeDasharray: [6, 4], + }); + + setReferenceDayX(); + xAxis.onPrivate('selectionMin', setReferenceDayX); + xAxis.onPrivate('selectionMax', setReferenceDayX); + const resizeObserver = new ResizeObserver(setReferenceDayX); + resizeObserver.observe(rootRef.current.dom); + + return () => { + // Discard range before re-running this effect + xAxis.axisRanges.removeValue(range); + resizeObserver.disconnect(); + }; + }, + // Re-run effect when selection changes (date/scenario/compartment/district) or when the active scenarios/filters change (theme and translation do not change after initialization) + [referenceDay, theme, i18n.language, setReferenceDayX] + ); + + // Effect to update Simulation and case data + useEffect(() => { + // Skip effect if chart is not initialized yet + if (!chartRef.current) return; + // Also skip if there is no scenario or compartment selected + if (selectedScenario === null || !selectedCompartment) return; + + // Create empty map to match dates + const dataMap = new Map(); + + // Cycle through scenarios + activeScenarios?.forEach((scenarioId) => { + simulationData?.[scenarioId]?.results.forEach(({day, compartments}) => { + // Add scenario data to map (upsert date entry) + dataMap.set(day, {...dataMap.get(day), [scenarioId]: compartments[selectedCompartment]}); + }); + + if (scenarioId === 0) { + // Add case data values (upsert date entry) + caseData?.results.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.compartments[selectedCompartment]}); + }); + } + }); + + if (percentileData) { + // Add 25th percentile data + percentileData[0].results?.forEach((entry: PercentileDataByDay) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.compartments[selectedCompartment]}); + }); + + // Add 75th percentile data + percentileData[1].results?.forEach((entry: PercentileDataByDay) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.compartments[selectedCompartment]}); + }); + } + + // Add groupFilter data of visible filters + if (groupFilterList && groupFilterData) { + Object.values(groupFilterList).forEach((groupFilter) => { + if (groupFilter?.isVisible) { + // Check if data for filter is available (else report error) + if (groupFilterData[groupFilter.name]) { + groupFilterData[groupFilter.name].results.forEach((entry: GroupData) => { + dataMap.set(entry.day, { + ...dataMap.get(entry.day), + [groupFilter.name]: entry.compartments[selectedCompartment], + }); + }); + } else { + console.error(`ERROR: missing data for "${groupFilter.name}" filter`); + } + } + }); + } + + // Sort map by date + const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); + const data = Array.from(dataMapSorted).map(([day, data]) => { + return {date: day, ...data}; + }); + + // Put data into series + chartRef.current.series.each((series, i) => { + // Set-up data processors for first series (not needed for others since all use the same data) + if (i === 0) { + series.data.processor = DataProcessor.new(rootRef.current as Root, { + // Define date fields and their format (incoming format from API) + dateFields: ['date'], + dateFormat: 'yyyy-MM-dd', + }); + } + // Link each series to data + series.data.setAll(data); + }); + + // Set up HTML tooltip + const tooltipHTML = ` + ${'' /* Current Date and selected compartment name */} + {date.formatDate("${t('dateFormat')}")} (${tBackend( + `infection-states.${selectedCompartment}` + )}) + + ${ + // Table row for each series of an active scenario + chartRef.current.series.values + .filter((series) => activeScenarios?.includes(Number(series.get('id')))) + .map((series): string => { + /* Skip if series: + * - is hidden + * - is percentile series (which is added to the active scenario series) + * - is group filter series + */ + if ( + series.isHidden() || + series.get('id') === 'percentiles' || + series.get('id')?.startsWith('group-filter-') + ) { + return ''; + } + /* Skip with error if series does not have property: + * - id + * - name + * - valueYField + * - stroke + */ + if (!series.get('id') || !series.get('name') || !series.get('valueYField') || !series.get('stroke')) { + console.error( + 'ERROR: missing series property: ', + series.get('id'), + series.get('name'), + series.get('valueYField'), + series.get('stroke') + ); + return ''; + } + // Handle series normally + return ` + + + + ${ + // Skip percentiles if this series is not the selected scenario or case data + series.get('id') !== selectedScenario.toString() || selectedScenario === 0 + ? '' + : ` + + ` + } + + ${ + // Add group filters if this series is the selected scenario + series.get('id') !== selectedScenario.toString() + ? '' + : // Add table row for each active group filter + (chartRef.current as XYChart).series.values + .filter((s) => s.get('id')?.startsWith('group-filter-') && !s.isHidden()) + .map((groupFilterSeries) => { + return ` + + + + + `; + }) + .join('') + } + `; + }) + .join('') + } +
+ ${series.get('name') as string} + + {${series.get('valueYField') as string}} + + [{percentileDown} - {percentileUp}] +
+ ${groupFilterSeries.get('name') as string} + + {${groupFilterSeries.get('valueYField') as string}} +
+ `; + + // Attach tooltip to series + chartRef.current.series.each((series) => { + const tooltip = Tooltip.new(rootRef.current as Root, { + labelHTML: tooltipHTML, + getFillFromSprite: false, + autoTextColor: false, + pointerOrientation: 'horizontal', + }); + + // Set tooltip default text color to theme primary text color + tooltip.label.setAll({ + fill: color(theme.palette.text.primary), + }); + + // Set tooltip background to theme paper + tooltip.get('background')?.setAll({ + fill: color(theme.palette.background.paper), + }); + + // Set tooltip + series.set('tooltip', tooltip); + }); + + // Collect data field names & order for data export + // Always export date and case data (and percentiles of selected scenario) + let dataFields = { + date: `${t('chart.date')}`, + caseData: `${t('chart.caseData')}`, + percentileUp: `${t('chart.percentileUp')}`, + percentileDown: `${t('chart.percentileDown')}`, + }; + // Always put date first, case data second + const dataFieldsOrder = ['date', 'caseData']; + // Loop through active scenarios (if there are any) + if (activeScenarios) { + activeScenarios.forEach((scenarioId) => { + // Skip case data (already added) + if (scenarioId === 0 || !scenarioList.scenarios[scenarioId]) { + return; + } + + // Add scenario label to export data field names + dataFields = { + ...dataFields, + [scenarioId]: scenarioList.scenarios[scenarioId].label, + }; + // Add scenario id to export data field order (for sorted export like csv) + dataFieldsOrder.push(`${scenarioId}`); + // If this is the selected scenario also add percentiles after it + if (scenarioId == selectedScenario) { + dataFieldsOrder.push('percentileDown', 'percentileUp'); + } + }); + } + + // Let's import this lazily, since it contains a lot of code. + import('@amcharts/amcharts5/plugins/exporting') + .then((module) => { + // Update export menu + module.Exporting.new(rootRef.current as Root, { + menu: module.ExportingMenu.new(rootRef.current as Root, {}), + filePrefix: 'Covid Simulation Data', + dataSource: data, + dateFields: ['date'], + dateFormat: `${t('dateFormat')}`, + dataFields: dataFields, + dataFieldsOrder: dataFieldsOrder, + }); + }) + .catch(() => console.warn("Couldn't load exporting functionality!")); + + setReferenceDayX(); + // Re-run this effect whenever the data itself changes (or any variable the effect uses) + }, [ + percentileData, + simulationData, + caseData, + groupFilterData, + activeScenarios, + selectedScenario, + scenarioList, + selectedCompartment, + theme, + groupFilterList, + t, + tBackend, + setReferenceDayX, + ]); + + return ( + + + + ); +} From c4e94ea70970b192ed07d3dd72e8313085114d10 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 5 Jun 2024 16:30:46 +0200 Subject: [PATCH 015/119] :hammer: Generalize Scenario components --- frontend/locales/de-global.json5 | 61 ++ frontend/locales/en-global.json5 | 60 ++ frontend/package-lock.json | 559 ++++++++++++++++-- frontend/package.json | 8 +- frontend/src/DataContext.tsx | 157 ++++- .../CardsComponents/CardContainer.tsx | 109 ++++ .../components/CardsComponents/DataCard.tsx | 141 +++++ .../GroupFilter/FilterButton.tsx | 39 ++ .../GroupFilter/FilterCard.tsx | 91 +++ .../GroupFilter/FilterRows.tsx | 104 ++++ .../GroupFilter/FiltersContainer.tsx | 96 +++ .../CardsComponents/MainCard/CardRows.tsx | 160 +++++ .../CardsComponents/MainCard/CardTitle.tsx | 28 + .../CardsComponents/MainCard/CardTooltip.tsx | 104 ++++ .../CardsComponents/MainCard/MainCard.tsx | 144 +++++ .../CardsComponents/MainCard/TrendArrow.tsx | 32 + .../CompartmentsRow.tsx | 123 ++++ .../CompartmentsRows.tsx | 77 +++ .../FilterComponents/ConfirmDialog.tsx | 55 ++ .../FilterDialogContainer.tsx | 161 +++++ .../FilterComponents/GroupFilterCard.tsx | 138 +++++ .../FilterComponents/GroupFilterEditor.tsx | 205 +++++++ .../FilterComponents/ManageGroupDialog.tsx | 262 ++++++++ .../GeneralButtonComponents/GeneralButton.tsx | 46 ++ frontend/src/components/MainContent.tsx | 4 +- .../ReferenceDatePicker.tsx | 46 ++ .../ScenarioContainer/ScenarioContainer.tsx | 372 ++++++++++++ frontend/src/store/DataSelectionSlice.ts | 16 +- frontend/src/store/services/groupApi.ts | 4 +- frontend/src/types/Cardtypes.ts | 23 + frontend/src/types/Filtertypes.ts | 31 + frontend/src/util/util.ts | 12 + 32 files changed, 3389 insertions(+), 79 deletions(-) create mode 100644 frontend/src/components/CardsComponents/CardContainer.tsx create mode 100644 frontend/src/components/CardsComponents/DataCard.tsx create mode 100644 frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx create mode 100644 frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx create mode 100644 frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx create mode 100644 frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx create mode 100644 frontend/src/components/CardsComponents/MainCard/CardRows.tsx create mode 100644 frontend/src/components/CardsComponents/MainCard/CardTitle.tsx create mode 100644 frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx create mode 100644 frontend/src/components/CardsComponents/MainCard/MainCard.tsx create mode 100644 frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx create mode 100644 frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx create mode 100644 frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx create mode 100644 frontend/src/components/FilterComponents/ConfirmDialog.tsx create mode 100644 frontend/src/components/FilterComponents/FilterDialogContainer.tsx create mode 100644 frontend/src/components/FilterComponents/GroupFilterCard.tsx create mode 100644 frontend/src/components/FilterComponents/GroupFilterEditor.tsx create mode 100644 frontend/src/components/FilterComponents/ManageGroupDialog.tsx create mode 100644 frontend/src/components/GeneralButtonComponents/GeneralButton.tsx create mode 100644 frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx create mode 100644 frontend/src/components/ScenarioContainer/ScenarioContainer.tsx create mode 100644 frontend/src/types/Cardtypes.ts create mode 100644 frontend/src/types/Filtertypes.ts diff --git a/frontend/locales/de-global.json5 b/frontend/locales/de-global.json5 index 1785524c..e59ad08d 100644 --- a/frontend/locales/de-global.json5 +++ b/frontend/locales/de-global.json5 @@ -77,4 +77,65 @@ 'no-data': 'Keine Daten', 'loki-logo': 'LOKI-Logo', okay: 'Okay', + "group-filters-editor": { + categories: { + age: "Alter", + gender: "Geschlecht", + }, + groups: { + age_0: "0 - 4 Jahre", + age_1: "5 - 14 Jahre", + age_2: "15 - 34 Jahre", + age_3: "35 - 59 Jahre", + age_4: "60 - 79 Jahre", + age_5: "Über 80 Jahre", + total: "Gesamt", + female: "Weiblich", + male: "Männlich", + nonbinary: "Divers", + }, + }, + compartments: { + Infected: "Infiziert", + MildInfections: "Milde Infektion", + Hospitalized: "Hospitalisiert", + ICU: "Intensivpatient", + Dead: "Verstorben", + DeadV1: "Verstorben (💉)", + DeadV2: "Verstorben (💉💉)", + Exposed: "Kontaktperson", + Recovered: "Genesen", + Carrier: "Träger", + Susceptible: "Empfänglich", + InfectedT: "Infiziert (🧪)", + InfectedTV1: "Infiziert (🧪 + 💉)", + InfectedTV2: "Infiziert (🧪 + 💉💉)", + InfectedV1: "Infiziert (💉)", + InfectedV2: "Infiziert (💉💉)", + HospitalizedV1: "Hospitalisiert (💉)", + HospitalizedV2: "Hospitalisiert (💉💉)", + ICUV1: "Intensivpatient (💉)", + ICUV2: "Intensivpatient (💉💉)", + ExposedV1: "Kontaktperson (💉)", + ExposedV2: "Kontaktperson (💉💉)", + CarrierT: "Träger (🧪)", + CarrierTV1: "Träger (🧪 + 💉)", + CarrierTV2: "Träger (🧪 + 💉💉)", + CarrierV1: "Träger (💉)", + CarrierV2: "Träger (💉💉)", + SusceptibleV1: "Empfänglich (💉)", + SusceptibleV2: "Empfänglich (💉💉)", + tooltip: "Die hier angezeigten Zahlen zu Infizierten und Hospitalisierten basieren auf Annahmen zur Immunität,\ + Dauer und Schweregrad einer Infektion mit Sars-CoV-2. Sie berechnen sich über ein komplexes mehrstufiges\ + Verfahren aus den berichteten Fallzahlen und eine einfach Formel kann nicht angegeben werden. Ein\ + Anstieg/Rückgang der Fallzahlen bedeutet einen Anstieg/Rückgang der Anzahl Infizierter, sodass in\ + Relation zu den Werten der vergangenen Tagen bewertet werden kann, ob die Situation sich verbessert oder\ + verschlimmert. Sofern verfügbar, kommen die Zahlen zu den Intensivpatient:innen aus dem DIVI\ + Intensivregister.", + }, + "scenario-names": { + "Baseline Scenario": "Geschätzte Fälle", + "Summer 2021 Simulation 1": "Szenario ohne Maßnahmen", + "Summer 2021 Simulation 2": "Szenario mit Maßnahmen", + }, } diff --git a/frontend/locales/en-global.json5 b/frontend/locales/en-global.json5 index a61d0caf..95487f6f 100644 --- a/frontend/locales/en-global.json5 +++ b/frontend/locales/en-global.json5 @@ -92,4 +92,64 @@ sanctus est Lorem ipsum dolor sit amet.', WIP: 'This functionality is still work in progress.', okay: 'Okay', +"group-filters-editor": { + categories: { + age: "Age", + gender: "Gender", + }, + groups: { + age_0: "0 - 4 Years", + age_1: "5 - 14 Years", + age_2: "15 - 34 Years", + age_3: "35 - 59 Years", + age_4: "60 - 79 Years", + age_5: "Above 80 Years", + total: "Total", + female: "Female", + male: "Male", + nonbinary: "Non-Binary", + }, + }, + compartments: { + Infected: "Infected", + MildInfections: "Mild Infection", + Hospitalized: "Hospitalized", + ICU: "Intensive Care", + Dead: "Dead", + DeadV1: "Dead (💉)", + DeadV2: "Dead (💉💉)", + Exposed: "Exposed", + Recovered: "Recovered", + Carrier: "Carrier", + Susceptible: "Susceptible", + InfectedT: "Infected (🧪)", + InfectedTV1: "Infected (🧪 + 💉)", + InfectedTV2: "Infected (🧪 + 💉💉)", + InfectedV1: "Infected (💉)", + InfectedV2: "Infected (💉💉)", + HospitalizedV1: "Hospitalized (💉)", + HospitalizedV2: "Hospitalized (💉💉)", + ICUV1: "Intensive Care (💉)", + ICUV2: "Intensive Care (💉💉)", + ExposedV1: "Exposed (💉)", + ExposedV2: "Exposed (💉💉)", + CarrierT: "Carrier (🧪)", + CarrierTV1: "Carrier (🧪 + 💉)", + CarrierTV2: "Carrier (🧪 + 💉💉)", + CarrierV1: "Carrier (💉)", + CarrierV2: "Carrier (💉💉)", + SusceptibleV1: "Susceptible (💉)", + SusceptibleV2: "Susceptible (💉💉)", + tooltip: "The numbers of infected and hospitalised shown here are based on assumptions about immunity, duration and\ + severity of infection with Sars-CoV-2. They are calculated via a complex multi-step process from the\ + reported case numbers and a simple formula cannot be given. An increase/decrease in the number of cases\ + means an increase/decrease in the number of infected persons, so that it is possible to assess whether\ + the situation is improving or worsening in relation to the values of the previous days. If available, the\ + figures on intensive care patients come from the DIVI Intensive Care Register.", + }, + "scenario-names": { + "Baseline Scenario": "Estimated Cases", + "Summer 2021 Simulation 1": "Scenario without Interventions", + "Summer 2021 Simulation 2": "Scenario with Interventions", + }, } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5fb448fc..8540219a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -13,10 +13,10 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.15.0", - "@mui/lab": "*", + "@mui/lab": "^5.0.0-alpha.170", "@mui/material": "^5.15.0", "@mui/system": "^5.15.0", - "@mui/x-date-pickers": "^6.19.4", + "@mui/x-date-pickers": "^6.20.0", "@reduxjs/toolkit": "^2.0.1", "@types/geojson": "^7946.0.13", "country-flag-icons": "^1.5.9", @@ -25,8 +25,8 @@ "i18next-browser-languagedetector": "^7.2.0", "i18next-http-backend": "^2.4.2", "json5": "^2.2.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-i18next": "^13.5.0", "react-lazyload": "github:twobin/react-lazyload", "react-markdown": "^9.0.1", @@ -1753,15 +1753,15 @@ } }, "node_modules/@mui/lab": { - "version": "5.0.0-alpha.168", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.168.tgz", - "integrity": "sha512-VKLQP5J/SujylvW3/riMtQYTspTluUkKLW/eu48RwuKby583cFCg8p4fWl4PpC3drwq6g9AeJ7DG4w0K+zFbdA==", + "version": "5.0.0-alpha.170", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.170.tgz", + "integrity": "sha512-0bDVECGmrNjd3+bLdcLiwYZ0O4HP5j5WSQm5DV6iA/Z9kr8O6AnvZ1bv9ImQbbX7Gj3pX4o43EKwCutj3EQxQg==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.39", - "@mui/system": "^5.15.13", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", + "@mui/base": "5.0.0-beta.40", + "@mui/system": "^5.15.15", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "clsx": "^2.1.0", "prop-types": "^15.8.1" }, @@ -1792,6 +1792,37 @@ } } }, + "node_modules/@mui/lab/node_modules/@mui/base": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/material": { "version": "5.15.13", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.13.tgz", @@ -1837,12 +1868,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.13.tgz", - "integrity": "sha512-j5Z2pRi6talCunIRIzpQERSaHwLd5EPdHMwIKDVCszro1RAzRZl7WmH68IMCgQmJMeglr+FalqNuq048qptGAg==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.14.tgz", + "integrity": "sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.15.13", + "@mui/utils": "^5.15.14", "prop-types": "^15.8.1" }, "engines": { @@ -1863,9 +1894,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.11", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.11.tgz", - "integrity": "sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", + "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", "dependencies": { "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", @@ -1894,15 +1925,15 @@ } }, "node_modules/@mui/system": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.13.tgz", - "integrity": "sha512-eHaX3sniZXNWkxX0lmcLxROhQ5La0HkOuF7zxbSdAoHUOk07gboQYmF6hSJ/VBFx/GLanIw67FMTn88vc8niLg==", + "version": "5.15.15", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz", + "integrity": "sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.15.13", - "@mui/styled-engine": "^5.15.11", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", + "@mui/private-theming": "^5.15.14", + "@mui/styled-engine": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1933,9 +1964,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", - "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -1946,9 +1977,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.13.tgz", - "integrity": "sha512-qNlR9FLEhORC4zVZ3fzF48213EhP/92N71AcFbhHN73lPJjAbq9lUv+71P7uEdRHdrrOlm8+1zE8/OBy6MUqdg==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.14.tgz", + "integrity": "sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==", "dependencies": { "@babel/runtime": "^7.23.9", "@types/prop-types": "^15.7.11", @@ -1973,9 +2004,9 @@ } }, "node_modules/@mui/x-date-pickers": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.7.tgz", - "integrity": "sha512-BCTOQjAuyU29Ymd2FJrHHdRh0U6Qve7MsthdrD2jjaMaR8ou455JuxsNTQUGSpiMkGHWOMVq+B8N1EBcSYH63g==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.20.0.tgz", + "integrity": "sha512-q/x3rNmPYMXnx75+3s9pQb1YDtws9y5bwxpxeB3EW88oCp33eS7bvJpeuoCA1LzW/PpVfIRhi5RCyAvrEeTL7Q==", "dependencies": { "@babel/runtime": "^7.23.2", "@mui/base": "^5.0.0-beta.22", @@ -7793,9 +7824,9 @@ } }, "node_modules/katex": { - "version": "0.16.9", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", - "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -9555,9 +9586,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -9576,7 +9607,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -9724,9 +9755,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -9735,15 +9766,15 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-i18next": { @@ -10333,9 +10364,9 @@ } }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -10487,9 +10518,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11428,14 +11459,14 @@ } }, "node_modules/vite": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", - "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", + "integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -11523,6 +11554,412 @@ } } }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, "node_modules/vitest": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.3.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 33fc87af..8a45bb61 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,10 +38,10 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.15.0", - "@mui/lab": "*", + "@mui/lab": "^5.0.0-alpha.170", "@mui/material": "^5.15.0", "@mui/system": "^5.15.0", - "@mui/x-date-pickers": "^6.19.4", + "@mui/x-date-pickers": "^6.20.0", "@reduxjs/toolkit": "^2.0.1", "@types/geojson": "^7946.0.13", "country-flag-icons": "^1.5.9", @@ -50,8 +50,8 @@ "i18next-browser-languagedetector": "^7.2.0", "i18next-http-backend": "^2.4.2", "json5": "^2.2.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-i18next": "^13.5.0", "react-lazyload": "github:twobin/react-lazyload", "react-markdown": "^9.0.1", diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 3eff0b71..db949600 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,20 +1,36 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 - +import {useGetSimulationStartValues} from 'components/Scenario/hooks'; +import React, {useMemo} from 'react'; import {createContext, useState, useEffect} from 'react'; -import React from 'react'; -import {useGetCaseDataByDateQuery} from 'store/services/caseDataApi'; -import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; +import {useAppSelector} from 'store/hooks'; +import { + useGetCaseDataByDateQuery, + useGetCaseDataByDistrictQuery, + useGetCaseDataSingleSimulationEntryQuery, +} from 'store/services/caseDataApi'; +import { + useGetMultipleGroupFilterDataQuery, + useGetGroupCategoriesQuery, + useGetGroupSubcategoriesQuery, + GroupCategories, + GroupSubcategories, + PostFilter, +} from 'store/services/groupApi'; import { SelectedScenarioPercentileData, useGetPercentileDataQuery, useGetSimulationDataByDateQuery, + useGetMultipleSimulationDataByNodeQuery, + useGetSimulationModelQuery, + useGetSimulationModelsQuery, + useGetSimulationsQuery, + useGetSingleSimulationEntryQuery, } from 'store/services/scenarioApi'; -import {SimulationDataByNode} from 'types/scenario'; +import {CaseDataByNode} from 'types/caseData'; +import {GroupResponse} from 'types/group'; +import {Simulations, SimulationModel, SimulationDataByNode} from 'types/scenario'; import {Dictionary} from 'util/util'; -import {useGetCaseDataByDistrictQuery} from 'store/services/caseDataApi'; -import {useGetMultipleSimulationDataByNodeQuery} from 'store/services/scenarioApi'; -import {useAppSelector} from 'store/hooks'; // Create the context export const DataContext = createContext<{ @@ -25,6 +41,20 @@ export const DataContext = createContext<{ chartPercentileData: {day: string; value: number}[][] | undefined; chartGroupFilterData: Dictionary<{day: string; value: number}[]> | undefined; isChartDataFetching: boolean; + selectedScenario: number | null; + selectedCompartment: string | null; + startValues: Dictionary | null; + groupCategories: GroupCategories | undefined; + groupSubCategories: GroupSubcategories | undefined; + scenarioListData: Simulations | undefined; + referenceDay: string | null; + caseScenarioSimulationData: CaseDataByNode | undefined; + simulationModelData: SimulationModel | undefined; + caseScenarioData: SimulationDataByNode | undefined; + scenarioSimulationDataFirstCard: SimulationDataByNode | undefined; + scenarioSimulationDataSecondCard: SimulationDataByNode | undefined; + scenarioSimulationDataFirstCardFiltersValues: Dictionary | undefined; + scenarioSimulationDataSecondCardFiltersValues: Dictionary | undefined; }>({ mapData: undefined, areMapValuesFetching: false, @@ -33,6 +63,20 @@ export const DataContext = createContext<{ chartPercentileData: undefined, chartGroupFilterData: undefined, isChartDataFetching: false, + selectedScenario: 0, + selectedCompartment: '', + startValues: {}, + groupCategories: undefined, + groupSubCategories: undefined, + scenarioListData: undefined, + referenceDay: null, + caseScenarioSimulationData: undefined, + simulationModelData: undefined, + caseScenarioData: undefined, + scenarioSimulationDataFirstCard: undefined, + scenarioSimulationDataSecondCard: undefined, + scenarioSimulationDataFirstCardFiltersValues: undefined, + scenarioSimulationDataSecondCardFiltersValues: undefined, }); // Create a provider component @@ -50,6 +94,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const [processedChartGroupFilterData, setProcessedChartGroupFilterData] = useState< Dictionary<{day: string; value: number}[]> | undefined >(undefined); + const [simulationModelKey, setSimulationModelKey] = useState('unset'); const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); @@ -58,6 +103,81 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const selectedDate = useAppSelector((state) => state.dataSelection.date); const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); const scenarioList = useAppSelector((state) => state.scenarioList); + const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); + + const groupFilterParams1: PostFilter[] = useMemo(() => { + if (selectedDistrict && groupFilterList) { + return Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => ({ + id: 1, + node: selectedDistrict, + groupFilter: groupFilter, + day: selectedDate ?? '', + })); + } + return []; + }, [selectedDate, groupFilterList, selectedDistrict]); + + const groupFilterParams2: PostFilter[] = useMemo(() => { + if (selectedDistrict && groupFilterList) { + return Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => ({ + id: 2, + node: selectedDistrict, + groupFilter: groupFilter, + day: selectedDate ?? '', + })); + } + return []; + }, [selectedDate, groupFilterList, selectedDistrict]); + + const startValues = useGetSimulationStartValues(); + const caseScenarioSimulationData = useGetCaseDataByDistrictQuery({ + node: '00000', + groups: null, + compartments: null, + }); + const {data: groupCategories} = useGetGroupCategoriesQuery(); + const {data: groupSubCategories} = useGetGroupSubcategoriesQuery(); + const {data: scenarioListData} = useGetSimulationsQuery(); + const {data: simulationModelsData} = useGetSimulationModelsQuery(); + const {data: simulationModelData} = useGetSimulationModelQuery(simulationModelKey, { + skip: simulationModelKey === 'unset', + }); + + const {data: caseScenarioData} = useGetCaseDataSingleSimulationEntryQuery( + { + node: selectedDistrict, + day: selectedDate ?? '', + groups: ['total'], + }, + {skip: selectedDate === null} + ); + + const {data: scenarioSimulationDataFirstCard} = useGetSingleSimulationEntryQuery( + { + id: 1, + node: selectedDistrict, + day: selectedDate ?? '', + groups: ['total'], + }, + {skip: !selectedDate} + ); + + const {data: scenarioSimulationDataSecondCard} = useGetSingleSimulationEntryQuery( + { + id: 2, + node: selectedDistrict, + day: selectedDate ?? '', + groups: ['total'], + }, + {skip: !selectedDate} + ); + + const {data: scenarioSimulationDataFirstCardFiltersValues} = useGetMultipleGroupFilterDataQuery(groupFilterParams1); + const {data: scenarioSimulationDataSecondCardFiltersValues} = useGetMultipleGroupFilterDataQuery(groupFilterParams2); const {data: mapSimulationData, isFetching: mapIsSimulationDataFetching} = useGetSimulationDataByDateQuery( { @@ -141,6 +261,13 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { {skip: !selectedDistrict || selectedDistrict === undefined || Object.keys(selectedDistrict).length == 0} ); + useEffect(() => { + if (simulationModelsData && simulationModelsData.results.length > 0) { + const {key} = simulationModelsData.results[0]; + setSimulationModelKey(key); + } + }, [simulationModelsData]); + useEffect(() => { if (mapSimulationData && selectedCompartment && selectedScenario) { setMapData( @@ -223,6 +350,20 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { chartPercentileData: processedChartPercentileData, chartGroupFilterData: processedChartGroupFilterData, isChartDataFetching: chartCaseDataFetching || chartSimulationFetching, + selectedScenario, + selectedCompartment, + startValues, + groupCategories, + groupSubCategories, + scenarioListData, + referenceDay, + caseScenarioSimulationData: caseScenarioSimulationData.data, + simulationModelData: simulationModelData?.results, + caseScenarioData, + scenarioSimulationDataFirstCard, + scenarioSimulationDataSecondCard, + scenarioSimulationDataFirstCardFiltersValues: scenarioSimulationDataFirstCardFiltersValues, + scenarioSimulationDataSecondCardFiltersValues: scenarioSimulationDataSecondCardFiltersValues, }} > {children} diff --git a/frontend/src/components/CardsComponents/CardContainer.tsx b/frontend/src/components/CardsComponents/CardContainer.tsx new file mode 100644 index 00000000..63894c9f --- /dev/null +++ b/frontend/src/components/CardsComponents/CardContainer.tsx @@ -0,0 +1,109 @@ +import DataCard from './DataCard'; +import {useTranslation} from 'react-i18next'; +import {Scenario, cardValue, filterValue} from '../../types/Cardtypes'; +import {Dispatch, SetStateAction} from 'react'; +import React from 'react'; +import {useTheme} from '@mui/material/styles'; +import Box from '@mui/material/Box/Box'; +import {Dictionary} from 'util/util'; +import {GroupFilter} from 'types/Filtertypes'; + +interface CardContainerProps { + compartmentsExpanded: boolean; + cardValues: Dictionary | undefined; + filterValues?: Dictionary | null; + selectedCompartment: string; + scenarios: Scenario[]; + compartments: string[]; + activeScenarios: number[] | null; + setActiveScenarios: React.Dispatch>; + selectedScenario: number; + setSelectedScenario: Dispatch>; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; + groupFilters: Dictionary | undefined; +} + +export default function CardContainer({ + compartmentsExpanded, + filterValues, + selectedCompartment, + compartments, + scenarios, + activeScenarios, + cardValues, + minCompartmentsRows, + maxCompartmentsRows, + setActiveScenarios, + localization, + selectedScenario, + setSelectedScenario, + groupFilters, +}: CardContainerProps) { + const theme = useTheme(); + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + + const dataCards = scenarios.map((scenario) => { + const cardValue = cardValues ? cardValues[scenario.id.toString()] : null; + if (!cardValue) { + return null; + } + return ( + >} + numberSelectedScenario={selectedScenario ?? null} + setActiveScenarios={setActiveScenarios} + minCompartmentsRows={minCompartmentsRows} + maxCompartmentsRows={compartments.length < maxCompartmentsRows ? compartments.length : maxCompartmentsRows} + localization={localization} + groupFilters={groupFilters} + /> + ); + }); + + return ( + + {dataCards} + + ); +} diff --git a/frontend/src/components/CardsComponents/DataCard.tsx b/frontend/src/components/CardsComponents/DataCard.tsx new file mode 100644 index 00000000..1805d9ad --- /dev/null +++ b/frontend/src/components/CardsComponents/DataCard.tsx @@ -0,0 +1,141 @@ +import Box from '@mui/material/Box'; +import {useEffect, useMemo, useState} from 'react'; +import MainCard from './MainCard/MainCard'; +import FiltersContainer from './GroupFilter/FiltersContainer'; +import {Dictionary, filterValue} from '../../types/Cardtypes'; +import React from 'react'; +import {GroupFilter} from 'types/group'; + +interface DataCardProps { + index: number; + compartmentValues: Dictionary | null; + startValues: Dictionary | null; + label: string; + compartmentsExpanded: boolean; + compartments: string[]; + selectedCompartment: string; + selectedScenario: boolean; + color: string; + activeScenarios: number[] | null; + filterValues?: Dictionary | null; + setSelectedScenario: React.Dispatch>; + setActiveScenarios: React.Dispatch>; + numberSelectedScenario: number | null; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; + groupFilters: Dictionary | undefined; +} + +export default function DataCard({ + index, + compartmentValues, + startValues, + label, + compartmentsExpanded, + compartments, + selectedCompartment, + filterValues, + color, + activeScenarios, + selectedScenario, + numberSelectedScenario, + minCompartmentsRows, + maxCompartmentsRows, + setSelectedScenario, + setActiveScenarios, + localization, + groupFilters, +}: DataCardProps) { + const [hover, setHover] = useState(false); + const [folded, setFolded] = useState(false); + const [visibility, setVisibility] = useState(true); + + const filteredTitles: string[] = useMemo(() => { + const temp: string[] = []; + if (activeScenarios?.includes(index) && filterValues?.[index.toString()]) { + filterValues[index.toString()].forEach((filterValue: filterValue) => { + temp.push(filterValue.filteredTitle); + }); + } + return temp; + }, [activeScenarios, filterValues, index]); + const filteredValues: Array | null> = useMemo(() => { + const temp: Array | null> = []; + if (activeScenarios?.includes(index) && filterValues?.[index.toString()]) { + filterValues[index.toString()].forEach((filterValue: filterValue) => { + temp.push(filterValue.filteredValues); + }); + } + return temp; + }, [activeScenarios, filterValues, index]); + + useEffect(() => { + function checkVisibility(): boolean { + const check = Object.values(groupFilters || {})?.map((filter) => { + if (filter.name == filteredTitles[0]) { + return filter.isVisible; + } else return false; + }); + if (!check.includes(true)) return false; + else return true; + } + setVisibility(checkVisibility); + }, [filteredTitles, groupFilters]); + return ( + + + {activeScenarios?.includes(index) && + filterValues?.[index.toString()] && + Object.keys(groupFilters || {}).length !== 0 && + visibility ? ( + + ) : null} + + ); +} diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx new file mode 100644 index 00000000..88d9e64f --- /dev/null +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx @@ -0,0 +1,39 @@ +import ChevronLeft from '@mui/icons-material/ChevronLeft'; +import ChevronRight from '@mui/icons-material/ChevronRight'; +import Button from '@mui/material/Button/Button'; +import React from 'react'; + +interface FilterButtonProps { + folded: boolean; + setFolded: (value: boolean) => void; + borderColor: string; + backgroundColor?: string; + idNumber: number; + maxCompartmentsRows: number; +} + +export default function FilterButton({ + folded, + setFolded, + borderColor, + idNumber, + maxCompartmentsRows, +}: FilterButtonProps) { + return ( + + ); +} diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx new file mode 100644 index 00000000..f7d4cae2 --- /dev/null +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx @@ -0,0 +1,91 @@ +import {Box} from '@mui/material'; +import Divider from '@mui/material/Divider'; +import FilterRows from './FilterRows'; +import CardTitle from '../MainCard/CardTitle'; +import {Dictionary} from '../../../types/Cardtypes'; +import React from 'react'; + +interface FilterCardProps { + title: string; + color: string; + compartments: string[]; + filteredValues: Dictionary | null; + groupFilterIndex: number; + totalCardNumber: number; + compartmentExpanded?: boolean; + selectedCompartment: string; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function FilterCard({ + title, + color, + compartments, + filteredValues, + groupFilterIndex, + totalCardNumber, + compartmentExpanded, + selectedCompartment, + maxCompartmentsRows, + minCompartmentsRows, + localization, +}: FilterCardProps) { + return ( + + + + + + + + {groupFilterIndex != totalCardNumber - 1 ? : null} + + ); +} diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx new file mode 100644 index 00000000..53edbcba --- /dev/null +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx @@ -0,0 +1,104 @@ +import {Box, List, ListItem, ListItemText} from '@mui/material'; +import {ScrollSyncPane} from 'react-scroll-sync'; +import {useTranslation} from 'react-i18next'; +import {Dictionary} from '../../../types/Cardtypes'; +import React from 'react'; + +interface FilterRowsProps { + compartments: string[]; + filteredValues: Dictionary | null; + isFlipped?: boolean; + arrow?: boolean; + compartmentExpanded?: boolean; + selectedCompartment: string; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function FilterRows({ + compartments, + filteredValues, + isFlipped = true, + compartmentExpanded = true, + selectedCompartment, + minCompartmentsRows, + maxCompartmentsRows, + localization, +}: FilterRowsProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { + if (filteredValues) return localization.numberFormatter(filteredValues); + else + return localization.overrides && localization.overrides['no-data'] + ? customT(localization.overrides['no-data']) + : defaultT('no-data'); + } + + return ( + +
+ +
+ + {compartments.map((comp: string, id: number) => { + const compartmentId = `compartment-${id}`; + return ( + + + + ); + })} + +
+
+
+
+ ); +} diff --git a/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx b/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx new file mode 100644 index 00000000..208585b0 --- /dev/null +++ b/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx @@ -0,0 +1,96 @@ +import {Box, Collapse, useTheme} from '@mui/material'; +import FilterButton from './FilterButton'; +import FilterCard from './FilterCard'; +import {Dictionary} from '../../../types/Cardtypes'; +import React from 'react'; + +interface FiltersContainerProps { + filteredTitles: string[]; + index: number; + folded: boolean; + setFolded: (folded: boolean) => void; + compartmentsExpanded: boolean; + selectedCompartment: string; + compartments: string[]; + filteredValues: Array | null>; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function FiltersContainer({ + index, + folded, + setFolded, + compartmentsExpanded, + selectedCompartment, + compartments, + filteredValues, + filteredTitles, + maxCompartmentsRows, + minCompartmentsRows, + localization, +}: FiltersContainerProps) { + const theme = useTheme(); + return ( + + + + + {filteredValues.map((_, id: number) => ( + + ))} + + + + ); +} diff --git a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx b/frontend/src/components/CardsComponents/MainCard/CardRows.tsx new file mode 100644 index 00000000..9c076a0e --- /dev/null +++ b/frontend/src/components/CardsComponents/MainCard/CardRows.tsx @@ -0,0 +1,160 @@ +import {Box, List, ListItem, ListItemText} from '@mui/material'; +import TrendArrow from './TrendArrow'; +import {ScrollSyncPane} from 'react-scroll-sync'; +import {Dictionary} from '../../../types/Cardtypes'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {hexToRGB} from 'util/util'; + +interface CardRowsProps { + index: number; + compartments: string[]; + compartmentValues: Dictionary | null; + startValues: Dictionary | null; + isFlipped?: boolean; + arrow?: boolean; + compartmentExpanded?: boolean; + selectedCompartment: string; + color: string; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function CardRows({ + index, + compartments, + isFlipped = true, + arrow = true, + compartmentValues, + startValues, + compartmentExpanded, + selectedCompartment, + color, + minCompartmentsRows, + maxCompartmentsRows, + localization, +}: CardRowsProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { + if (filteredValues) return localization.numberFormatter(filteredValues); + else if ((!filteredValues && index === 0) || (compartmentValues && Object.keys(compartmentValues).length !== 0)) + return '0'; + else + return localization.overrides && localization.overrides['no-data'] + ? customT(localization.overrides['no-data']) + : defaultT('no-data'); + } + const getCompartmentRate = (compartment: string): string => { + if (!compartmentValues || !(compartment in compartmentValues) || !startValues || !(compartment in startValues)) { + // Return a Figure Dash (‒) where a rate cannot be calculated. + return '\u2012'; + } + + const value = compartmentValues[compartment]; + const startValue = startValues[compartment]; + const result = Math.round(100 * (value / startValue) - 100); + + if (!isFinite(result)) { + // Return a Figure Dash (‒) where a rate cannot be calculated. + return '\u2012'; + } + + let sign: string; + if (result > 0) { + sign = '+'; + } else if (result < 0) { + sign = '-'; + } else { + // Return a Plus Minus sign (±) where a rate cannot be calculated. + sign = '\u00B1'; + } + + return sign + Math.abs(result).toFixed() + '%'; + }; + + return ( + +
+ +
+ + {compartments.map((comp: string, id: number) => { + return ( + + + + {arrow ? ( + + ) : null} + + ); + })} + +
+
+
+
+ ); +} diff --git a/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx b/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx new file mode 100644 index 00000000..b52177a4 --- /dev/null +++ b/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx @@ -0,0 +1,28 @@ +import Typography from '@mui/material/Typography'; +import React from 'react'; + +interface CardTitleProps { + label: string; + isFlipped?: boolean; + color?: string; +} + +export default function CardTitle({label, isFlipped = true, color}: CardTitleProps) { + return ( + + {label} + + ); +} diff --git a/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx b/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx new file mode 100644 index 00000000..f2c5539a --- /dev/null +++ b/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx @@ -0,0 +1,104 @@ +import {Box, Tooltip, IconButton} from '@mui/material'; +import {CheckBox, CheckBoxOutlineBlank} from '@mui/icons-material'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; +import {hexToRGB} from 'util/util'; + +interface CardTooltipProps { + hover: boolean; + color: string; + index: number; + activeScenario: boolean; + activeScenarios: number[] | null; + numberSelectedScenario: number | null; + setSelectedScenario: React.Dispatch>; + setActiveScenarios: React.Dispatch>; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function CardTooltip({ + index, + hover, + color, + activeScenario, + activeScenarios, + numberSelectedScenario, + setActiveScenarios, + setSelectedScenario, + localization, +}: CardTooltipProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + + const manageScenario = (index: number) => { + const isActive = activeScenarios?.includes(index); + const newActiveScenarios = isActive + ? activeScenarios!.filter((id) => id !== index) + : [...(activeScenarios || []), index]; + + newActiveScenarios.sort(); + setActiveScenarios(newActiveScenarios); + + setSelectedScenario( + newActiveScenarios.length === 1 + ? newActiveScenarios[0] + : numberSelectedScenario === index + ? newActiveScenarios[newActiveScenarios.length - 1] + : numberSelectedScenario + ); + }; + + return hover ? ( + + + { + event.stopPropagation(); + manageScenario(index); + }} + aria-label={ + activeScenario + ? localization.overrides && localization.overrides['scenario.deactivate'.toString()] + ? customT(localization.overrides['scenario.deactivate'.toString()]) + : defaultT('scenario.deactivate'.toString()) + : localization.overrides && localization.overrides['scenario.activate'.toString()] + ? customT(localization.overrides['scenario.activate'.toString()]) + : defaultT('scenario.activate'.toString()) + } + > + {activeScenario ? : } + + + + ) : null; +} diff --git a/frontend/src/components/CardsComponents/MainCard/MainCard.tsx b/frontend/src/components/CardsComponents/MainCard/MainCard.tsx new file mode 100644 index 00000000..db5a0a71 --- /dev/null +++ b/frontend/src/components/CardsComponents/MainCard/MainCard.tsx @@ -0,0 +1,144 @@ +import React from 'react'; +import {Box} from '@mui/material'; +import CardTitle from './CardTitle'; +import CardTooltip from './CardTooltip'; +import CardRows from './CardRows'; +import {hexToRGB} from 'util/util'; +import {Dictionary} from 'types/Cardtypes'; + +interface MainCardProps { + index: number; + label: string; + hover: boolean; + compartmentValues: Dictionary | null; + startValues: Dictionary | null; + setHover: React.Dispatch>; + compartments: string[]; + compartmentsExpanded: boolean; + selectedCompartment: string; + color: string; + selectedScenario: boolean; + activeScenario: boolean; + setSelectedScenario: React.Dispatch>; + setActiveScenarios: React.Dispatch>; + numberSelectedScenario: number | null; + activeScenarios: number[] | null; + minCompartmentsRows: number; + maxCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +function MainCard({ + index, + label, + hover, + compartmentValues, + startValues, + setHover, + compartments, + compartmentsExpanded, + selectedCompartment, + color, + selectedScenario, + activeScenario, + numberSelectedScenario, + minCompartmentsRows, + setSelectedScenario, + setActiveScenarios, + activeScenarios, + maxCompartmentsRows, + localization, +}: MainCardProps) { + return ( + setHover(true)} + onMouseLeave={() => setHover(false)} + onClick={() => { + if (activeScenario) { + setSelectedScenario(index); + } + }} + > + + + + + + + + + ); +} + +export default MainCard; diff --git a/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx b/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx new file mode 100644 index 00000000..b46d27f6 --- /dev/null +++ b/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx @@ -0,0 +1,32 @@ +import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; +import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; +import ArrowRightIcon from '@mui/icons-material/ArrowRight'; +import React from 'react'; + +interface TrendArrowProps { + /** The value. */ + value: number; + + /** The rate of change relative to scenario start. */ + rate: string; +} + +/** + * Renders an arrow depending on value and rate. When the rate is negative a green downwards arrow is rendered, when the + * rate is between zero and three percent a grey sidewards arrow is rendered and when the rate is greater than three + * percent a red upwards arrow is being rendered. + */ +export default function TrendArrow(props: TrendArrowProps) { + // Shows downwards green arrows if getCompartmentRate < 0%. + if (parseFloat(props.rate) < 0) { + return ; + } + // Shows upwards red arrows if getCompartmentRate > 3%. If there is no RKI value for that compartment i.e., getCompartmentRate is Null, then it will check the getCompartmentValue (scenario values only) which will always be positive. + else if (parseFloat(props.rate) > 3 || (props.value > 0 && props.rate === '\u2012')) { + return ; + } + // Shows grey arrows (stagnation) if getCompartmentRate is between 0 and 3 % or if there is no RKI value. + else { + return ; + } +} diff --git a/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx new file mode 100644 index 00000000..58bccb93 --- /dev/null +++ b/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx @@ -0,0 +1,123 @@ +import {ListItemButton, ListItemText, ListItemIcon, ClickAwayListener, Tooltip, useTheme} from '@mui/material'; +import {InfoOutlined} from '@mui/icons-material'; +import {Dispatch, SetStateAction, useState} from 'react'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; + +interface CompartmentsRowProps { + id: number; + selected: boolean; + compartment: string; + value: string; + compartmentsExpanded: boolean; + setSelectedCompartment: Dispatch>; + minCompartmentsRows: number; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function CompartmentsRow({ + id, + selected, + compartment, + value, + compartmentsExpanded, + setSelectedCompartment, + minCompartmentsRows, + localization, +}: CompartmentsRowProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + const theme = useTheme(); + const [tooltipOpen, setTooltipOpen] = useState(false); + const openTooltip = (event: React.MouseEvent) => { + event.stopPropagation(); + setTooltipOpen(true); + }; + const closeTooltip = () => setTooltipOpen(false); + return ( + { + setSelectedCompartment(compartment); + }} + > + + + + + + + + + + + ); +} diff --git a/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx b/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx new file mode 100644 index 00000000..99c05ae4 --- /dev/null +++ b/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx @@ -0,0 +1,77 @@ +import {List} from '@mui/material'; +import {ScrollSyncPane} from 'react-scroll-sync'; +import {Dispatch, SetStateAction} from 'react'; +import {Dictionary} from '../../types/Cardtypes'; +import CompartmentsRow from './CompartmentsRow'; +import React from 'react'; + +interface CompartmentsRowsProps { + compartmentsExpanded: boolean; + compartments: string[]; + selectedCompartment: string; + setSelectedCompartment: Dispatch>; + minCompartmentsRows: number; + maxCompartmentsRows: number; + compartmentValues: Dictionary | null; + localization: { + numberFormatter: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function CompartmentsRows({ + compartmentsExpanded, + compartments, + selectedCompartment, + minCompartmentsRows, + maxCompartmentsRows, + setSelectedCompartment, + compartmentValues, + localization, +}: CompartmentsRowsProps) { + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { + if (filteredValues) return localization.numberFormatter(filteredValues); + else return '0'; + } + return ( +
+ +
+ + {compartments.map((comp: string, id: number) => { + const selected = comp === selectedCompartment; + return ( + + ); + })} + +
+
+
+ ); +} diff --git a/frontend/src/components/FilterComponents/ConfirmDialog.tsx b/frontend/src/components/FilterComponents/ConfirmDialog.tsx new file mode 100644 index 00000000..2ede5118 --- /dev/null +++ b/frontend/src/components/FilterComponents/ConfirmDialog.tsx @@ -0,0 +1,55 @@ +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import Divider from '@mui/material/Divider'; +import Typography from '@mui/material/Typography'; +import React from 'react'; + +export interface ConfirmDialogProps { + open: boolean; + title: string; + text: string; + onAnswer: (answer: boolean) => void; + abortButtonText?: string; + confirmButtonText?: string; +} + +export default function ConfirmDialog(props: ConfirmDialogProps) { + return ( + + + {props.title} + + + {props.text} + + + + + + + + ); +} diff --git a/frontend/src/components/FilterComponents/FilterDialogContainer.tsx b/frontend/src/components/FilterComponents/FilterDialogContainer.tsx new file mode 100644 index 00000000..2ba9abad --- /dev/null +++ b/frontend/src/components/FilterComponents/FilterDialogContainer.tsx @@ -0,0 +1,161 @@ +import {Box, Button, Dialog, useTheme} from '@mui/material'; +import ConfirmDialog from './ConfirmDialog'; +import {useState} from 'react'; +import ManageGroupDialog from './ManageGroupDialog'; +import {useTranslation} from 'react-i18next'; +import {Dictionary} from '../../types/Cardtypes'; +import {GroupFilter} from '../../types/Filtertypes'; +import React from 'react'; +import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; + +export interface FilterDialogContainerProps { + groupFilters: Dictionary | undefined; + groupCategories: GroupCategory[]; + groupSubCategories: GroupSubcategory[]; + setGroupFilters: React.Dispatch | undefined>>; + localization: { + numberFormatter?: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function FilterDialogContainer({ + groupFilters, + setGroupFilters, + groupCategories, + groupSubCategories, + localization, +}: FilterDialogContainerProps) { + const [open, setOpen] = useState(false); + const [closeDialogOpen, setCloseDialogOpen] = useState(false); + const [groupEditorUnsavedChanges, setGroupEditorUnsavedChanges] = useState(false); + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + const theme = useTheme(); + return ( + <> + + + + + { + if (groupEditorUnsavedChanges) { + setCloseDialogOpen(true); + } else { + setOpen(false); + } + }} + > + { + if (groupEditorUnsavedChanges) { + setCloseDialogOpen(true); + } else { + setOpen(false); + } + }} + unsavedChangesCallback={(unsavedChanges) => setGroupEditorUnsavedChanges(unsavedChanges)} + localization={localization} + /> + { + if (answer) { + setOpen(false); + } + setCloseDialogOpen(false); + }} + /> + + + ); +} diff --git a/frontend/src/components/FilterComponents/GroupFilterCard.tsx b/frontend/src/components/FilterComponents/GroupFilterCard.tsx new file mode 100644 index 00000000..33088f7a --- /dev/null +++ b/frontend/src/components/FilterComponents/GroupFilterCard.tsx @@ -0,0 +1,138 @@ +import {Visibility, VisibilityOffOutlined, DeleteForever} from '@mui/icons-material'; +import { + Card, + CardActionArea, + CardContent, + Typography, + Divider, + CardActions, + Checkbox, + IconButton, + useTheme, +} from '@mui/material'; +import {useState} from 'react'; +import ConfirmDialog from './ConfirmDialog'; +import {useTranslation} from 'react-i18next'; +import {GroupFilter} from '../../types/Filtertypes'; +import {Dictionary} from '../../types/Cardtypes'; +import React from 'react'; + +interface GroupFilterCardProps { + /** The GroupFilter item to be displayed. */ + item: GroupFilter; + + groupFilters: Dictionary | undefined; + + setGroupFilters: React.Dispatch | undefined>>; + + /** Whether the filter is selected or not. If it is selected, the detail view is displaying this filter's config. */ + selected: boolean; + + selectFilterCallback: (groupFilter: GroupFilter | null) => void; + + localization: { + numberFormatter?: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function GroupFilterCard(props: GroupFilterCardProps) { + const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); + const {t: defaultT} = useTranslation(); + const customLang = props.localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + const theme = useTheme(); + + const ChangeVisibility = (id: string) => { + // Find the filter with the specific id + const filterToChange = props.groupFilters![id]; + + // Check if the filter exists + if (filterToChange) { + // Create a new copy of groupFilters with the updated filter + const newGroupFilters = { + ...props.groupFilters, + [id]: { + ...filterToChange, + isVisible: !filterToChange.isVisible, + }, + }; + + // Update the state with the new copy of groupFilters + props.setGroupFilters(newGroupFilters); + } + }; + + const DeleteFilter = (id: string) => { + // Create a new copy of groupFilters without the filter with the specific id + const newGroupFilters = {...props.groupFilters}; + delete newGroupFilters[id]; + + // Update the state with the new copy of groupFilters + props.setGroupFilters(newGroupFilters); + }; + + return ( + + { + props.selectFilterCallback(props.selected ? null : props.item); + }} + > + + + {props.item.name} + + + + + + } + icon={} + checked={props.item.isVisible} + onClick={() => { + ChangeVisibility(props.item.id); + }} + /> + { + if (answer) { + DeleteFilter(props.item.id); + } + setConfirmDialogOpen(false); + }} + /> + setConfirmDialogOpen(true)}> + + + + + ); +} diff --git a/frontend/src/components/FilterComponents/GroupFilterEditor.tsx b/frontend/src/components/FilterComponents/GroupFilterEditor.tsx new file mode 100644 index 00000000..4c55a5ef --- /dev/null +++ b/frontend/src/components/FilterComponents/GroupFilterEditor.tsx @@ -0,0 +1,205 @@ +import {Box, TextField, Typography, FormGroup, FormControlLabel, Checkbox, Button, useTheme} from '@mui/material'; +import {useState, useEffect, useCallback} from 'react'; +import {useTranslation} from 'react-i18next'; +import {GroupFilter} from '../../types/Filtertypes'; +import {Dictionary} from '../../types/Cardtypes'; +import React from 'react'; +import {GroupCategory} from 'store/services/groupApi'; + +interface GroupSubcategory { + key: string; + name: string; + description: string; + category: string; +} + +interface GroupFilterEditorProps { + /** The GroupFilter item to be edited. */ + groupFilter: GroupFilter; + + groupFilters: Dictionary | undefined; + + groupCategories: GroupCategory[]; + + groupSubCategories: GroupSubcategory[]; + + setGroupFilters: React.Dispatch | undefined>>; + + selectGroupFilterCallback: (groupFilter: GroupFilter | null) => void; + + unsavedChangesCallback: (unsavedChanges: boolean) => void; + + localization: { + numberFormatter?: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function GroupFilterEditor(props: GroupFilterEditorProps) { + const {t: defaultT} = useTranslation(); + const customLang = props.localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + const theme = useTheme(); + const [name, setName] = useState(props.groupFilter.name); + const [groups, setGroups] = useState(props.groupFilter.groups); + + // Every group must have at least one element selected to be valid. + const [valid, setValid] = useState(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); + const [unsavedChanges, setUnsavedChanges] = useState(false); + + // Checks if the group filer is in a valid state. + useEffect(() => { + setValid(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); + }, [name, groups, props]); + + // Updates the parent about the current save state of the group filter. + useEffect(() => { + props.unsavedChangesCallback(unsavedChanges); + }, [props, unsavedChanges]); + + const toggleGroup = useCallback( + (subGroup: GroupSubcategory) => { + let category = [...groups[subGroup.category]]; + + if (category.includes(subGroup.key)) { + category = category.filter((key) => key !== subGroup.key); + } else { + category.push(subGroup.key); + } + + setGroups({ + ...groups, + [subGroup.category]: category, + }); + setUnsavedChanges(true); + }, + [groups, setGroups] + ); + + return ( + + e.target.select()} + onChange={(e) => { + setUnsavedChanges(true); + setName(e.target.value); + }} + /> + + {props.groupCategories.map((group) => ( + + 0 ? theme.palette.text.primary : theme.palette.error.main} + variant='h2' + > + {props.localization.overrides && + props.localization.overrides[`group-filters-editor.categories.${group.key}`] + ? customT(props.localization.overrides[`group-filters-editor.categories.${group.key}`]) + : defaultT(`group-filters-editor.categories.${group.key}`)} + + + {props.groupSubCategories + ?.filter((subCategory) => subCategory.category === group.key) + .filter((subGroup) => subGroup.key !== 'total') // TODO: We filter out the total group for now. + .map((subGroup) => ( + toggleGroup(subGroup)} + /> + } + /> + ))} + + + ))} + + + + + + + ); +} diff --git a/frontend/src/components/FilterComponents/ManageGroupDialog.tsx b/frontend/src/components/FilterComponents/ManageGroupDialog.tsx new file mode 100644 index 00000000..61020c78 --- /dev/null +++ b/frontend/src/components/FilterComponents/ManageGroupDialog.tsx @@ -0,0 +1,262 @@ +import {Close, GroupAdd} from '@mui/icons-material'; +import {Box, Typography, IconButton, Divider, Card, CardActionArea, CardContent, Button, useTheme} from '@mui/material'; +import {useState, useEffect} from 'react'; +import ConfirmDialog from './ConfirmDialog'; +import GroupFilterCard from './GroupFilterCard'; +import GroupFilterEditor from './GroupFilterEditor'; +import {useTranslation} from 'react-i18next'; +import {Dictionary} from '../../types/Cardtypes'; +import {GroupFilter} from '../../types/Filtertypes'; +import React from 'react'; +import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; + +export interface ManageGroupDialogProps { + groupFilters: Dictionary | undefined; + groupCategories: GroupCategory[]; + groupSubCategories: GroupSubcategory[]; + onCloseRequest: () => void; + unsavedChangesCallback: (unsavedChanges: boolean) => void; + setGroupFilters: React.Dispatch | undefined>>; + localization: { + numberFormatter?: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function ManageGroupDialog({ + groupFilters, + groupCategories, + groupSubCategories, + onCloseRequest, + unsavedChangesCallback, + setGroupFilters, + localization, +}: ManageGroupDialogProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + // The currently selected filter. + const [selectedGroupFilter, setSelectedGroupFilter] = useState(null); + + // A filter the user might open. It will first be checked, if unsaved changes are present. + const [nextSelectedGroupFilter, setNextSelectedGroupFilter] = useState(null); + + const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); + const [unsavedChanges, setUnsavedChanges] = useState(false); + + // This effect ensures that the user doesn't discard unsaved changes without confirming it first. + useEffect(() => { + if (nextSelectedGroupFilter && nextSelectedGroupFilter.id !== selectedGroupFilter?.id) { + // A new group filter has been selected. + + if (selectedGroupFilter && unsavedChanges) { + // There are unsaved changes. Ask for confirmation first! + setConfirmDialogOpen(true); + } else { + // Everything is saved. Change the selected filter. + setSelectedGroupFilter(nextSelectedGroupFilter); + } + } else if (!nextSelectedGroupFilter && !unsavedChanges) { + // This case is handled, when the user presses the 'abort' button. + setSelectedGroupFilter(null); + } + unsavedChangesCallback(unsavedChanges); + }, [unsavedChanges, nextSelectedGroupFilter, selectedGroupFilter, unsavedChangesCallback, onCloseRequest]); + + const theme = useTheme(); + return ( + + +
+ + {localization.overrides && localization.overrides['group-filters.title'] + ? customT(localization.overrides['group-filters.title']) + : defaultT('group-filters.title')} + + + + + + + + + {Object.values(groupFilters || {})?.map((item) => ( + setNextSelectedGroupFilter(groupFilter)} + localization={localization} + /> + ))} + + { + const groups: Dictionary> = {}; + groupCategories.forEach((group) => (groups[group.key] = [])); + setNextSelectedGroupFilter({ + id: crypto.randomUUID(), + name: '', + isVisible: false, + groups: groups, + }); + }} + > + + + {localization.overrides && localization.overrides['group-filters.add-group'] + ? customT(localization.overrides['group-filters.add-group']) + : defaultT('group-filters.add-group')} + + + + + + + + {selectedGroupFilter ? ( + setNextSelectedGroupFilter(groupFilter)} + unsavedChangesCallback={(edited) => setUnsavedChanges(edited)} + groupCategories={groupCategories} + groupSubCategories={groupSubCategories} + localization={localization} + /> + ) : ( + + + {localization.overrides && localization.overrides['group-filters.nothing-selected'] + ? customT(localization.overrides['group-filters.nothing-selected']) + : defaultT('group-filters.nothing-selected')} + + + + )} + + { + if (answer) { + setSelectedGroupFilter(nextSelectedGroupFilter); + } else { + setNextSelectedGroupFilter(null); + } + setConfirmDialogOpen(false); + }} + /> + + ); +} diff --git a/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx b/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx new file mode 100644 index 00000000..bb30f200 --- /dev/null +++ b/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx @@ -0,0 +1,46 @@ +import Button from '@mui/material/Button'; +import {useTranslation} from 'react-i18next'; +import React from 'react'; + +interface GeneralButtonProps { + buttonTexts: {expanded: string; collapsed: string}; + isDisabled: () => boolean; + handleClick: () => void; + isExpanded: boolean; + localization: { + numberFormatter?: (value: number) => string; + customLang?: string; + overrides?: { + [key: string]: string; + }; + }; +} + +export default function GeneralButton({ + buttonTexts, + isDisabled, + handleClick, + isExpanded, + localization, +}: GeneralButtonProps) { + const {t: defaultT} = useTranslation(); + const customLang = localization.customLang; + const {t: customT} = useTranslation(customLang || undefined); + return ( + + ); +} diff --git a/frontend/src/components/MainContent.tsx b/frontend/src/components/MainContent.tsx index 31c2b81a..89e3a1ca 100644 --- a/frontend/src/components/MainContent.tsx +++ b/frontend/src/components/MainContent.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import Scenario from './Scenario'; +import ScenarioContainer from './ScenarioContainer/ScenarioContainer'; import IconBar from './IconBar'; import Grid from '@mui/material/Grid'; @@ -35,7 +35,7 @@ export default function MainContent(): JSX.Element { - + diff --git a/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx new file mode 100644 index 00000000..35f35e2e --- /dev/null +++ b/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -0,0 +1,46 @@ +import Box from '@mui/material/Box'; +import {Dispatch, SetStateAction} from 'react'; +import dayjs, {Dayjs} from 'dayjs'; +import {DatePicker} from '@mui/x-date-pickers'; +import {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider'; +import {AdapterDayjs} from '@mui/x-date-pickers/AdapterDayjs'; +import React from 'react'; + +interface DatePickerProps { + referenceDay: string | null; + setReferenceDay: Dispatch>; + minDate: string | null; + maxDate: string | null; +} + +export default function ReferenceDatePicker({referenceDay, setReferenceDay, minDate, maxDate}: DatePickerProps) { + const updateDate = (newDate: Dayjs | null): void => { + if (newDate) { + setReferenceDay(newDate.toString()); + } + }; + + return ( + + + + label={'Reference-day'} + value={dayjs(referenceDay)} + minDate={dayjs(minDate)} + maxDate={dayjs(maxDate)} + onChange={updateDate} + slotProps={{textField: {size: 'small'}}} + /> + + + ); +} diff --git a/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx b/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx new file mode 100644 index 00000000..f6eab065 --- /dev/null +++ b/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx @@ -0,0 +1,372 @@ +import {Box, darken, useTheme} from '@mui/material'; +import {Dictionary, Scenario, cardValue, filterValue} from '../../types/Cardtypes'; +import CardContainer from '../CardsComponents/CardContainer'; +import FilterDialogContainer from '../FilterComponents/FilterDialogContainer'; +import {useContext, useEffect, useMemo, useState} from 'react'; +import {GroupFilter} from '../../types/Filtertypes'; +import CompartmentsRows from '../CompartmentsComponents/CompartmentsRows'; +import GeneralButton from '../GeneralButtonComponents/GeneralButton'; +import ReferenceDatePicker from '../ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; +import {NumberFormatter} from 'util/hooks'; +import {useTranslation} from 'react-i18next'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; +import { + selectCompartment, + selectScenario, + setActiveScenario, + setGroupFilters, + setMinMaxDates, + setStartDate, + toggleCompartmentExpansion, + toggleScenario, +} from 'store/DataSelectionSlice'; +import {dateToISOString} from 'util/util'; +import {DataContext} from 'DataContext'; +import {ScrollSync} from 'react-scroll-sync'; +import {setCompartments, setScenarios} from 'store/ScenarioSlice'; +import {useBoundingclientrectRef} from 'rooks'; +import {setReferenceDayTop} from 'store/LayoutSlice'; +import React from 'react'; + +interface ScenarioContainerProps { + minCompartmentsRows?: number; + maxCompartmentsRows?: number; +} + +export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartmentsRows = 6}: ScenarioContainerProps) { + const {t} = useTranslation(); + const dispatch = useAppDispatch(); + const {i18n} = useTranslation(); + const {formatNumber} = NumberFormatter(i18n.language, 1, 0); + const theme = useTheme(); + const context = useContext(DataContext); + + const storeGroupFilters = useAppSelector((state) => state.dataSelection.groupFilters); + const storeCompartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); + const storeActiveScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const storeSelectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const scenariosState = useAppSelector((state) => state.scenarioList.scenarios); + const compartments = useAppSelector((state) => state.scenarioList.compartments); + const storeSelectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const storeReferenceDay = useAppSelector((state) => state.dataSelection.simulationStart); + + const [cardValues, setCardValues] = useState | undefined>(); + const [filterValues, setFilterValues] = useState | undefined>(); + const [groupFilters, setgroupFilters] = useState | undefined>(storeGroupFilters); + const [compartmentsExpanded, setCompartmentsExpanded] = useState(storeCompartmentsExpanded ?? false); + const [activeScenarios, setActiveScenarios] = useState(storeActiveScenarios); + const [selectedScenario, setSelectedScenario] = useState(storeSelectedScenario ?? 0); + const [selectedCompartment, setSelectedCompartment] = useState(storeSelectedCompartment ?? 'Infected'); + const [referenceDay, setReferenceDay] = useState(storeReferenceDay ?? '06-07-2021'); + const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); + + const scenarios: Scenario[] = useMemo(() => { + const aux: Scenario[] = []; + aux.push({ + id: 0, + label: t(`Baseline Scenario`), + }); + for (const scenarioKey in scenariosState) { + aux.push(scenariosState[scenarioKey]); + } + return aux; + }, [scenariosState, t]); + + const compartmentsMemo = useMemo(() => { + return compartments; + }, [compartments]); + + useEffect(() => { + dispatch(setGroupFilters(groupFilters)); + }, [groupFilters, dispatch]); + + useEffect(() => { + if (context.simulationModelData) { + const {compartments} = context.simulationModelData; + dispatch(setCompartments(compartments)); + } + }, [context.simulationModelData, dispatch]); + + useEffect(() => { + dispatch(selectScenario(selectedScenario)); + }, [selectedScenario, dispatch]); + + useEffect(() => { + dispatch(setActiveScenario(activeScenarios)); + }, [activeScenarios, dispatch]); + + useEffect(() => { + dispatch(selectCompartment(selectedCompartment)); + }, [dispatch, selectedCompartment]); + + useEffect(() => { + setCardValues({ + '0': { + compartmentValues: + context.caseScenarioData && context.caseScenarioData.results.length > 0 + ? context.caseScenarioData.results[0].compartments + : null, + startValues: context.startValues, + }, + '1': { + compartmentValues: + context.scenarioSimulationDataFirstCard && context.scenarioSimulationDataFirstCard.results.length > 0 + ? context.scenarioSimulationDataFirstCard.results[0].compartments + : null, + startValues: context.startValues, + }, + '2': { + compartmentValues: + context.scenarioSimulationDataSecondCard && context.scenarioSimulationDataSecondCard.results.length > 0 + ? context.scenarioSimulationDataSecondCard.results[0].compartments + : null, + startValues: context.startValues, + }, + }); + }, [ + context.caseScenarioData, + context.scenarioSimulationDataFirstCard, + context.scenarioSimulationDataSecondCard, + context.startValues, + ]); + + useEffect(() => { + if ( + !context.scenarioSimulationDataFirstCardFiltersValues || + context.scenarioSimulationDataFirstCardFiltersValues === undefined || + Object.keys(context.scenarioSimulationDataFirstCardFiltersValues).length === 0 || + !context.scenarioSimulationDataSecondCardFiltersValues || + context.scenarioSimulationDataSecondCardFiltersValues === undefined || + Object.keys(context.scenarioSimulationDataSecondCardFiltersValues).length === 0 + ) + return; + + const filterValue1: filterValue[] = Object.values(groupFilters!) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + const groupResponse = + context.scenarioSimulationDataFirstCardFiltersValues?.[groupFilter.name]?.results?.[0]?.compartments || null; + return { + filteredTitle: groupFilter.name, + filteredValues: groupResponse, + }; + }); + + const filterValue2: filterValue[] = Object.values(groupFilters!) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + const groupResponse = + context.scenarioSimulationDataSecondCardFiltersValues?.[groupFilter.name]?.results?.[0]?.compartments || null; + return { + filteredTitle: groupFilter.name, + filteredValues: groupResponse, + }; + }); + + setFilterValues({ + '1': filterValue1, + '2': filterValue2, + }); + }, [ + context.scenarioSimulationDataFirstCardFiltersValues, + context.scenarioSimulationDataSecondCardFiltersValues, + groupFilters, + ]); + + useEffect(() => { + if (referenceDay) { + dispatch(setStartDate(dateToISOString(new Date(referenceDay)))); + } + }, [referenceDay, dispatch]); + + useEffect(() => { + let minDate: string | null = null; + let maxDate: string | null = null; + + if (context.scenarioListData) { + const scenarios = context.scenarioListData.results.map((scenario) => ({ + id: scenario.id, + label: scenario.description, + })); + dispatch(setScenarios(scenarios)); + + //activate all scenarios initially + if (!activeScenarios) { + scenarios.forEach((scenario) => { + dispatch(toggleScenario(scenario.id)); + }); + } + + if (scenarios.length > 0) { + // The simulation data (results) are only available one day after the start day onward. + const startDay = new Date(context.scenarioListData.results[0].startDay); + startDay.setUTCDate(startDay.getUTCDate() + 1); + + const endDay = new Date(startDay); + endDay.setDate(endDay.getDate() + context.scenarioListData.results[0].numberOfDays - 1); + + minDate = dateToISOString(startDay); + maxDate = dateToISOString(endDay); + + dispatch(setStartDate(minDate)); + } + } + + if (context.caseScenarioSimulationData) { + const entries = context.caseScenarioSimulationData.results + .map((entry) => entry.day) + .sort((a, b) => a.localeCompare(b)); + if (entries) { + const firstCaseDataDay = entries[0]; + if (!minDate) { + minDate = firstCaseDataDay; + dispatch(setStartDate(minDate)); + } else { + minDate = minDate.localeCompare(firstCaseDataDay) < 0 ? minDate : firstCaseDataDay; + } + + const lastCaseDataDay = entries.slice(-1)[0]; + if (!maxDate) { + maxDate = lastCaseDataDay; + } else { + maxDate = maxDate.localeCompare(lastCaseDataDay) > 0 ? maxDate : lastCaseDataDay; + } + } + } + + if (minDate && maxDate) { + dispatch(setMinMaxDates({minDate, maxDate})); + } + }, [activeScenarios, context.scenarioListData, dispatch, context.caseScenarioSimulationData]); + + useEffect(() => { + const x = resizeBoundingRect?.x ?? 0; + const w = resizeBoundingRect?.width ?? 0; + dispatch(setReferenceDayTop(x + w)); + }, [dispatch, resizeBoundingRect]); + + return ( + +
+ + + + state.dataSelection.minDate)} + maxDate={useAppSelector((state) => state.dataSelection.maxDate)} + /> + + + + + compartmentsMemo.length < 5} + handleClick={() => { + if (compartments.indexOf(selectedCompartment) >= 4) { + setSelectedCompartment('Infected'); + } + dispatch(toggleCompartmentExpansion()); + setCompartmentsExpanded(!compartmentsExpanded); + }} + isExpanded={compartmentsExpanded} + localization={{}} + /> + + + + + + {context.groupCategories && + context.groupCategories.results && + context.groupSubCategories && + context.groupSubCategories.results && ( + + )} + +
+
+ ); +} diff --git a/frontend/src/store/DataSelectionSlice.ts b/frontend/src/store/DataSelectionSlice.ts index 72ea0bbd..25ee70b5 100644 --- a/frontend/src/store/DataSelectionSlice.ts +++ b/frontend/src/store/DataSelectionSlice.ts @@ -19,7 +19,11 @@ export type AGS = string; * IMPORTANT: ALL NEW ADDITIONS MUST BE NULLABLE TO ENSURE EXISTING CACHES DOESN'T BREAK ON UPDATES! */ export interface DataSelection { - district: {ags: AGS; name: string; type: string}; + district: { + ags: AGS; + name: string; + type: string; + }; /** The current date in the store. Must be an ISO 8601 date cutoff at time (YYYY-MM-DD) */ date: string | null; scenario: number | null; @@ -30,7 +34,7 @@ export interface DataSelection { simulationStart: string | null; minDate: string | null; maxDate: string | null; - groupFilters: Dictionary | null; + groupFilters: Dictionary | undefined; } const initialState: DataSelection = { @@ -54,6 +58,12 @@ export const DataSelectionSlice = createSlice({ name: 'DataSelection', initialState, reducers: { + setActiveScenario(state, action: PayloadAction) { + state.activeScenarios = action.payload; + }, + setGroupFilters(state, action: PayloadAction | undefined>) { + state.groupFilters = action.payload; + }, selectDistrict(state, action: PayloadAction<{ags: AGS; name: string; type: string}>) { state.district = action.payload; }, @@ -141,6 +151,8 @@ export const DataSelectionSlice = createSlice({ export const { selectDistrict, + setActiveScenario, + setGroupFilters, selectDate, previousDay, nextDay, diff --git a/frontend/src/store/services/groupApi.ts b/frontend/src/store/services/groupApi.ts index 46160899..58033cba 100644 --- a/frontend/src/store/services/groupApi.ts +++ b/frontend/src/store/services/groupApi.ts @@ -76,7 +76,7 @@ export interface GroupCategory { description: string; } -interface GroupCategories { +export interface GroupCategories { count: number; next: null; previous: null; @@ -90,7 +90,7 @@ export interface GroupSubcategory { category: string; } -interface GroupSubcategories { +export interface GroupSubcategories { count: number; next: null; previous: null; diff --git a/frontend/src/types/Cardtypes.ts b/frontend/src/types/Cardtypes.ts new file mode 100644 index 00000000..8ea8bc6c --- /dev/null +++ b/frontend/src/types/Cardtypes.ts @@ -0,0 +1,23 @@ +export interface Dictionary { + [key: string]: T; +} + +export interface Scenario { + id: number; + label: string; +} + +export const initialState = { + scenarios: [] as Scenario[], + compartments: [] as string[], +}; + +export interface cardValue { + compartmentValues: Dictionary | null; + startValues: Dictionary | null; +} + +export interface filterValue { + filteredTitle: string; + filteredValues: Dictionary | null; +} diff --git a/frontend/src/types/Filtertypes.ts b/frontend/src/types/Filtertypes.ts new file mode 100644 index 00000000..9ff9c87c --- /dev/null +++ b/frontend/src/types/Filtertypes.ts @@ -0,0 +1,31 @@ +import {Dictionary} from './Cardtypes'; + +export interface GroupFilter { + id: string; + name: string; + isVisible: boolean; + groups: Dictionary; +} + +export interface GroupCategories { + count: number; + next: null; + previous: null; + results: { + key: string; + name: string; + description: string; + }[]; +} + +export interface GroupSubcategories { + count: number; + next: null; + previous: null; + results: { + key: string; + name: string; + description: string; + category: string; + }[]; +} diff --git a/frontend/src/util/util.ts b/frontend/src/util/util.ts index 9928ac11..c5cba3af 100644 --- a/frontend/src/util/util.ts +++ b/frontend/src/util/util.ts @@ -26,6 +26,18 @@ export function dateToISOString(date: Date | number): string { return `${year}-${month}-${day}`; } +export function hexToRGB(hex: string, alpha: number): string { + const r = parseInt(hex.slice(1, 3), 16), + g = parseInt(hex.slice(3, 5), 16), + b = parseInt(hex.slice(5, 7), 16); + + if (alpha) { + return 'rgba(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ', ' + alpha.toString() + ')'; + } else { + return 'rgb(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ')'; + } +} + /** * This is a type that can be used to describe object maps with a clear key/value structure. E.g: * const ages: Dictionary = {: From 6ac55d5e47189fda106432e8a98487e60ecdb6aa Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 5 Jun 2024 16:48:31 +0200 Subject: [PATCH 016/119] :sparkles: Format Translation files & add the Compliance with REUSE Specification in missing files --- frontend/locales/de-global.json5 | 96 +++++++++---------- frontend/locales/en-global.json5 | 96 +++++++++---------- frontend/src/DataContext.tsx | 1 + .../CardsComponents/CardContainer.tsx | 3 + .../components/CardsComponents/DataCard.tsx | 3 + .../GroupFilter/FilterButton.tsx | 3 + .../GroupFilter/FilterCard.tsx | 3 + .../GroupFilter/FilterRows.tsx | 3 + .../GroupFilter/FiltersContainer.tsx | 2 + .../CardsComponents/MainCard/CardRows.tsx | 2 + .../CardsComponents/MainCard/CardTitle.tsx | 2 + .../CardsComponents/MainCard/CardTooltip.tsx | 3 + .../CardsComponents/MainCard/MainCard.tsx | 3 + .../CardsComponents/MainCard/TrendArrow.tsx | 3 + .../CompartmentsRow.tsx | 3 + .../CompartmentsRows.tsx | 3 + .../FilterComponents/ConfirmDialog.tsx | 3 + .../FilterDialogContainer.tsx | 3 + .../FilterComponents/GroupFilterCard.tsx | 3 + .../FilterComponents/GroupFilterEditor.tsx | 3 + .../FilterComponents/ManageGroupDialog.tsx | 3 + .../ReferenceDatePicker.tsx | 3 + .../ScenarioContainer/ScenarioContainer.tsx | 3 + 23 files changed, 154 insertions(+), 96 deletions(-) diff --git a/frontend/locales/de-global.json5 b/frontend/locales/de-global.json5 index e59ad08d..f269281b 100644 --- a/frontend/locales/de-global.json5 +++ b/frontend/locales/de-global.json5 @@ -77,65 +77,65 @@ 'no-data': 'Keine Daten', 'loki-logo': 'LOKI-Logo', okay: 'Okay', - "group-filters-editor": { + 'group-filters-editor': { categories: { - age: "Alter", - gender: "Geschlecht", + age: 'Alter', + gender: 'Geschlecht', }, groups: { - age_0: "0 - 4 Jahre", - age_1: "5 - 14 Jahre", - age_2: "15 - 34 Jahre", - age_3: "35 - 59 Jahre", - age_4: "60 - 79 Jahre", - age_5: "Über 80 Jahre", - total: "Gesamt", - female: "Weiblich", - male: "Männlich", - nonbinary: "Divers", + age_0: '0 - 4 Jahre', + age_1: '5 - 14 Jahre', + age_2: '15 - 34 Jahre', + age_3: '35 - 59 Jahre', + age_4: '60 - 79 Jahre', + age_5: 'Über 80 Jahre', + total: 'Gesamt', + female: 'Weiblich', + male: 'Männlich', + nonbinary: 'Divers', }, }, compartments: { - Infected: "Infiziert", - MildInfections: "Milde Infektion", - Hospitalized: "Hospitalisiert", - ICU: "Intensivpatient", - Dead: "Verstorben", - DeadV1: "Verstorben (💉)", - DeadV2: "Verstorben (💉💉)", - Exposed: "Kontaktperson", - Recovered: "Genesen", - Carrier: "Träger", - Susceptible: "Empfänglich", - InfectedT: "Infiziert (🧪)", - InfectedTV1: "Infiziert (🧪 + 💉)", - InfectedTV2: "Infiziert (🧪 + 💉💉)", - InfectedV1: "Infiziert (💉)", - InfectedV2: "Infiziert (💉💉)", - HospitalizedV1: "Hospitalisiert (💉)", - HospitalizedV2: "Hospitalisiert (💉💉)", - ICUV1: "Intensivpatient (💉)", - ICUV2: "Intensivpatient (💉💉)", - ExposedV1: "Kontaktperson (💉)", - ExposedV2: "Kontaktperson (💉💉)", - CarrierT: "Träger (🧪)", - CarrierTV1: "Träger (🧪 + 💉)", - CarrierTV2: "Träger (🧪 + 💉💉)", - CarrierV1: "Träger (💉)", - CarrierV2: "Träger (💉💉)", - SusceptibleV1: "Empfänglich (💉)", - SusceptibleV2: "Empfänglich (💉💉)", - tooltip: "Die hier angezeigten Zahlen zu Infizierten und Hospitalisierten basieren auf Annahmen zur Immunität,\ + Infected: 'Infiziert', + MildInfections: 'Milde Infektion', + Hospitalized: 'Hospitalisiert', + ICU: 'Intensivpatient', + Dead: 'Verstorben', + DeadV1: 'Verstorben (💉)', + DeadV2: 'Verstorben (💉💉)', + Exposed: 'Kontaktperson', + Recovered: 'Genesen', + Carrier: 'Träger', + Susceptible: 'Empfänglich', + InfectedT: 'Infiziert (🧪)', + InfectedTV1: 'Infiziert (🧪 + 💉)', + InfectedTV2: 'Infiziert (🧪 + 💉💉)', + InfectedV1: 'Infiziert (💉)', + InfectedV2: 'Infiziert (💉💉)', + HospitalizedV1: 'Hospitalisiert (💉)', + HospitalizedV2: 'Hospitalisiert (💉💉)', + ICUV1: 'Intensivpatient (💉)', + ICUV2: 'Intensivpatient (💉💉)', + ExposedV1: 'Kontaktperson (💉)', + ExposedV2: 'Kontaktperson (💉💉)', + CarrierT: 'Träger (🧪)', + CarrierTV1: 'Träger (🧪 + 💉)', + CarrierTV2: 'Träger (🧪 + 💉💉)', + CarrierV1: 'Träger (💉)', + CarrierV2: 'Träger (💉💉)', + SusceptibleV1: 'Empfänglich (💉)', + SusceptibleV2: 'Empfänglich (💉💉)', + tooltip: 'Die hier angezeigten Zahlen zu Infizierten und Hospitalisierten basieren auf Annahmen zur Immunität,\ Dauer und Schweregrad einer Infektion mit Sars-CoV-2. Sie berechnen sich über ein komplexes mehrstufiges\ Verfahren aus den berichteten Fallzahlen und eine einfach Formel kann nicht angegeben werden. Ein\ Anstieg/Rückgang der Fallzahlen bedeutet einen Anstieg/Rückgang der Anzahl Infizierter, sodass in\ Relation zu den Werten der vergangenen Tagen bewertet werden kann, ob die Situation sich verbessert oder\ verschlimmert. Sofern verfügbar, kommen die Zahlen zu den Intensivpatient:innen aus dem DIVI\ - Intensivregister.", + Intensivregister.', }, - "scenario-names": { - "Baseline Scenario": "Geschätzte Fälle", - "Summer 2021 Simulation 1": "Szenario ohne Maßnahmen", - "Summer 2021 Simulation 2": "Szenario mit Maßnahmen", + 'scenario-names': { + 'Baseline Scenario': 'Geschätzte Fälle', + 'Summer 2021 Simulation 1': 'Szenario ohne Maßnahmen', + 'Summer 2021 Simulation 2': 'Szenario mit Maßnahmen', }, } diff --git a/frontend/locales/en-global.json5 b/frontend/locales/en-global.json5 index 95487f6f..38112512 100644 --- a/frontend/locales/en-global.json5 +++ b/frontend/locales/en-global.json5 @@ -92,64 +92,64 @@ sanctus est Lorem ipsum dolor sit amet.', WIP: 'This functionality is still work in progress.', okay: 'Okay', -"group-filters-editor": { + 'group-filters-editor': { categories: { - age: "Age", - gender: "Gender", + age: 'Age', + gender: 'Gender', }, groups: { - age_0: "0 - 4 Years", - age_1: "5 - 14 Years", - age_2: "15 - 34 Years", - age_3: "35 - 59 Years", - age_4: "60 - 79 Years", - age_5: "Above 80 Years", - total: "Total", - female: "Female", - male: "Male", - nonbinary: "Non-Binary", + age_0: '0 - 4 Years', + age_1: '5 - 14 Years', + age_2: '15 - 34 Years', + age_3: '35 - 59 Years', + age_4: '60 - 79 Years', + age_5: 'Above 80 Years', + total: 'Total', + female: 'Female', + male: 'Male', + nonbinary: 'Non-Binary', }, }, compartments: { - Infected: "Infected", - MildInfections: "Mild Infection", - Hospitalized: "Hospitalized", - ICU: "Intensive Care", - Dead: "Dead", - DeadV1: "Dead (💉)", - DeadV2: "Dead (💉💉)", - Exposed: "Exposed", - Recovered: "Recovered", - Carrier: "Carrier", - Susceptible: "Susceptible", - InfectedT: "Infected (🧪)", - InfectedTV1: "Infected (🧪 + 💉)", - InfectedTV2: "Infected (🧪 + 💉💉)", - InfectedV1: "Infected (💉)", - InfectedV2: "Infected (💉💉)", - HospitalizedV1: "Hospitalized (💉)", - HospitalizedV2: "Hospitalized (💉💉)", - ICUV1: "Intensive Care (💉)", - ICUV2: "Intensive Care (💉💉)", - ExposedV1: "Exposed (💉)", - ExposedV2: "Exposed (💉💉)", - CarrierT: "Carrier (🧪)", - CarrierTV1: "Carrier (🧪 + 💉)", - CarrierTV2: "Carrier (🧪 + 💉💉)", - CarrierV1: "Carrier (💉)", - CarrierV2: "Carrier (💉💉)", - SusceptibleV1: "Susceptible (💉)", - SusceptibleV2: "Susceptible (💉💉)", - tooltip: "The numbers of infected and hospitalised shown here are based on assumptions about immunity, duration and\ + Infected: 'Infected', + MildInfections: 'Mild Infection', + Hospitalized: 'Hospitalized', + ICU: 'Intensive Care', + Dead: 'Dead', + DeadV1: 'Dead (💉)', + DeadV2: 'Dead (💉💉)', + Exposed: 'Exposed', + Recovered: 'Recovered', + Carrier: 'Carrier', + Susceptible: 'Susceptible', + InfectedT: 'Infected (🧪)', + InfectedTV1: 'Infected (🧪 + 💉)', + InfectedTV2: 'Infected (🧪 + 💉💉)', + InfectedV1: 'Infected (💉)', + InfectedV2: 'Infected (💉💉)', + HospitalizedV1: 'Hospitalized (💉)', + HospitalizedV2: 'Hospitalized (💉💉)', + ICUV1: 'Intensive Care (💉)', + ICUV2: 'Intensive Care (💉💉)', + ExposedV1: 'Exposed (💉)', + ExposedV2: 'Exposed (💉💉)', + CarrierT: 'Carrier (🧪)', + CarrierTV1: 'Carrier (🧪 + 💉)', + CarrierTV2: 'Carrier (🧪 + 💉💉)', + CarrierV1: 'Carrier (💉)', + CarrierV2: 'Carrier (💉💉)', + SusceptibleV1: 'Susceptible (💉)', + SusceptibleV2: 'Susceptible (💉💉)', + tooltip: 'The numbers of infected and hospitalised shown here are based on assumptions about immunity, duration and\ severity of infection with Sars-CoV-2. They are calculated via a complex multi-step process from the\ reported case numbers and a simple formula cannot be given. An increase/decrease in the number of cases\ means an increase/decrease in the number of infected persons, so that it is possible to assess whether\ the situation is improving or worsening in relation to the values of the previous days. If available, the\ - figures on intensive care patients come from the DIVI Intensive Care Register.", + figures on intensive care patients come from the DIVI Intensive Care Register.', }, - "scenario-names": { - "Baseline Scenario": "Estimated Cases", - "Summer 2021 Simulation 1": "Scenario without Interventions", - "Summer 2021 Simulation 2": "Scenario with Interventions", + 'scenario-names': { + 'Baseline Scenario': 'Estimated Cases', + 'Summer 2021 Simulation 1': 'Scenario without Interventions', + 'Summer 2021 Simulation 2': 'Scenario with Interventions', }, } diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index db949600..1e36e494 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 + import {useGetSimulationStartValues} from 'components/Scenario/hooks'; import React, {useMemo} from 'react'; import {createContext, useState, useEffect} from 'react'; diff --git a/frontend/src/components/CardsComponents/CardContainer.tsx b/frontend/src/components/CardsComponents/CardContainer.tsx index 63894c9f..e73483da 100644 --- a/frontend/src/components/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/CardsComponents/CardContainer.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import DataCard from './DataCard'; import {useTranslation} from 'react-i18next'; import {Scenario, cardValue, filterValue} from '../../types/Cardtypes'; diff --git a/frontend/src/components/CardsComponents/DataCard.tsx b/frontend/src/components/CardsComponents/DataCard.tsx index 1805d9ad..33f5dd72 100644 --- a/frontend/src/components/CardsComponents/DataCard.tsx +++ b/frontend/src/components/CardsComponents/DataCard.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import Box from '@mui/material/Box'; import {useEffect, useMemo, useState} from 'react'; import MainCard from './MainCard/MainCard'; diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx index 88d9e64f..e84584bd 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import ChevronLeft from '@mui/icons-material/ChevronLeft'; import ChevronRight from '@mui/icons-material/ChevronRight'; import Button from '@mui/material/Button/Button'; diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx index f7d4cae2..79a19616 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Box} from '@mui/material'; import Divider from '@mui/material/Divider'; import FilterRows from './FilterRows'; diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx index 53edbcba..f4fb9605 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterRows.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Box, List, ListItem, ListItemText} from '@mui/material'; import {ScrollSyncPane} from 'react-scroll-sync'; import {useTranslation} from 'react-i18next'; diff --git a/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx b/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx index 208585b0..450eb4b3 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx +++ b/frontend/src/components/CardsComponents/GroupFilter/FiltersContainer.tsx @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 import {Box, Collapse, useTheme} from '@mui/material'; import FilterButton from './FilterButton'; import FilterCard from './FilterCard'; diff --git a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx b/frontend/src/components/CardsComponents/MainCard/CardRows.tsx index 9c076a0e..de4e9e33 100644 --- a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx +++ b/frontend/src/components/CardsComponents/MainCard/CardRows.tsx @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 import {Box, List, ListItem, ListItemText} from '@mui/material'; import TrendArrow from './TrendArrow'; import {ScrollSyncPane} from 'react-scroll-sync'; diff --git a/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx b/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx index b52177a4..c56fc04a 100644 --- a/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx +++ b/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 import Typography from '@mui/material/Typography'; import React from 'react'; diff --git a/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx b/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx index f2c5539a..44df7286 100644 --- a/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx +++ b/frontend/src/components/CardsComponents/MainCard/CardTooltip.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Box, Tooltip, IconButton} from '@mui/material'; import {CheckBox, CheckBoxOutlineBlank} from '@mui/icons-material'; import {useTranslation} from 'react-i18next'; diff --git a/frontend/src/components/CardsComponents/MainCard/MainCard.tsx b/frontend/src/components/CardsComponents/MainCard/MainCard.tsx index db5a0a71..f350c5eb 100644 --- a/frontend/src/components/CardsComponents/MainCard/MainCard.tsx +++ b/frontend/src/components/CardsComponents/MainCard/MainCard.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import React from 'react'; import {Box} from '@mui/material'; import CardTitle from './CardTitle'; diff --git a/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx b/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx index b46d27f6..c87a8d6e 100644 --- a/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx +++ b/frontend/src/components/CardsComponents/MainCard/TrendArrow.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; import ArrowRightIcon from '@mui/icons-material/ArrowRight'; diff --git a/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx index 58bccb93..98f25205 100644 --- a/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx +++ b/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {ListItemButton, ListItemText, ListItemIcon, ClickAwayListener, Tooltip, useTheme} from '@mui/material'; import {InfoOutlined} from '@mui/icons-material'; import {Dispatch, SetStateAction, useState} from 'react'; diff --git a/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx b/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx index 99c05ae4..c2b9ae98 100644 --- a/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx +++ b/frontend/src/components/CompartmentsComponents/CompartmentsRows.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {List} from '@mui/material'; import {ScrollSyncPane} from 'react-scroll-sync'; import {Dispatch, SetStateAction} from 'react'; diff --git a/frontend/src/components/FilterComponents/ConfirmDialog.tsx b/frontend/src/components/FilterComponents/ConfirmDialog.tsx index 2ede5118..e0a082fa 100644 --- a/frontend/src/components/FilterComponents/ConfirmDialog.tsx +++ b/frontend/src/components/FilterComponents/ConfirmDialog.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; diff --git a/frontend/src/components/FilterComponents/FilterDialogContainer.tsx b/frontend/src/components/FilterComponents/FilterDialogContainer.tsx index 2ba9abad..c5b404b9 100644 --- a/frontend/src/components/FilterComponents/FilterDialogContainer.tsx +++ b/frontend/src/components/FilterComponents/FilterDialogContainer.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Box, Button, Dialog, useTheme} from '@mui/material'; import ConfirmDialog from './ConfirmDialog'; import {useState} from 'react'; diff --git a/frontend/src/components/FilterComponents/GroupFilterCard.tsx b/frontend/src/components/FilterComponents/GroupFilterCard.tsx index 33088f7a..064d962a 100644 --- a/frontend/src/components/FilterComponents/GroupFilterCard.tsx +++ b/frontend/src/components/FilterComponents/GroupFilterCard.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Visibility, VisibilityOffOutlined, DeleteForever} from '@mui/icons-material'; import { Card, diff --git a/frontend/src/components/FilterComponents/GroupFilterEditor.tsx b/frontend/src/components/FilterComponents/GroupFilterEditor.tsx index 4c55a5ef..83c18e04 100644 --- a/frontend/src/components/FilterComponents/GroupFilterEditor.tsx +++ b/frontend/src/components/FilterComponents/GroupFilterEditor.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Box, TextField, Typography, FormGroup, FormControlLabel, Checkbox, Button, useTheme} from '@mui/material'; import {useState, useEffect, useCallback} from 'react'; import {useTranslation} from 'react-i18next'; diff --git a/frontend/src/components/FilterComponents/ManageGroupDialog.tsx b/frontend/src/components/FilterComponents/ManageGroupDialog.tsx index 61020c78..f56dfc5a 100644 --- a/frontend/src/components/FilterComponents/ManageGroupDialog.tsx +++ b/frontend/src/components/FilterComponents/ManageGroupDialog.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Close, GroupAdd} from '@mui/icons-material'; import {Box, Typography, IconButton, Divider, Card, CardActionArea, CardContent, Button, useTheme} from '@mui/material'; import {useState, useEffect} from 'react'; diff --git a/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx index 35f35e2e..4ff5db5f 100644 --- a/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx +++ b/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import Box from '@mui/material/Box'; import {Dispatch, SetStateAction} from 'react'; import dayjs, {Dayjs} from 'dayjs'; diff --git a/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx b/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx index f6eab065..342f5b3a 100644 --- a/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Box, darken, useTheme} from '@mui/material'; import {Dictionary, Scenario, cardValue, filterValue} from '../../types/Cardtypes'; import CardContainer from '../CardsComponents/CardContainer'; From f0bf4b2764bd68f117a174409b6bcb1098b6fb66 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 5 Jun 2024 16:53:40 +0200 Subject: [PATCH 017/119] :sparkles: Add the Compliance with REUSE Specification in missing files --- .../src/components/GeneralButtonComponents/GeneralButton.tsx | 3 +++ frontend/src/types/Cardtypes.ts | 3 +++ frontend/src/types/Filtertypes.ts | 3 +++ 3 files changed, 9 insertions(+) diff --git a/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx b/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx index bb30f200..42174c75 100644 --- a/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx +++ b/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import Button from '@mui/material/Button'; import {useTranslation} from 'react-i18next'; import React from 'react'; diff --git a/frontend/src/types/Cardtypes.ts b/frontend/src/types/Cardtypes.ts index 8ea8bc6c..7fd144a6 100644 --- a/frontend/src/types/Cardtypes.ts +++ b/frontend/src/types/Cardtypes.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + export interface Dictionary { [key: string]: T; } diff --git a/frontend/src/types/Filtertypes.ts b/frontend/src/types/Filtertypes.ts index 9ff9c87c..664502e5 100644 --- a/frontend/src/types/Filtertypes.ts +++ b/frontend/src/types/Filtertypes.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {Dictionary} from './Cardtypes'; export interface GroupFilter { From a39e7c63ec11ee8a2470d90c246a00387924bea5 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 6 Jun 2024 10:23:27 +0200 Subject: [PATCH 018/119] :wrench: Simplify code --- .../components/CardsComponents/DataCard.tsx | 62 +++++++++---------- .../GroupFilter/FilterCard.tsx | 2 +- .../CardsComponents/MainCard/CardRows.tsx | 5 +- .../CompartmentsRow.tsx | 15 +++-- .../FilterComponents/GroupFilterCard.tsx | 8 +-- .../Sidebar/MapComponents/HeatMap.tsx | 2 +- 6 files changed, 44 insertions(+), 50 deletions(-) diff --git a/frontend/src/components/CardsComponents/DataCard.tsx b/frontend/src/components/CardsComponents/DataCard.tsx index 33f5dd72..f9d9142b 100644 --- a/frontend/src/components/CardsComponents/DataCard.tsx +++ b/frontend/src/components/CardsComponents/DataCard.tsx @@ -61,33 +61,27 @@ export default function DataCard({ const [visibility, setVisibility] = useState(true); const filteredTitles: string[] = useMemo(() => { - const temp: string[] = []; if (activeScenarios?.includes(index) && filterValues?.[index.toString()]) { - filterValues[index.toString()].forEach((filterValue: filterValue) => { - temp.push(filterValue.filteredTitle); - }); + return filterValues[index.toString()].map((filterValue: filterValue) => filterValue.filteredTitle); } - return temp; + return []; }, [activeScenarios, filterValues, index]); + const filteredValues: Array | null> = useMemo(() => { - const temp: Array | null> = []; if (activeScenarios?.includes(index) && filterValues?.[index.toString()]) { - filterValues[index.toString()].forEach((filterValue: filterValue) => { - temp.push(filterValue.filteredValues); - }); + return filterValues[index.toString()].map((filterValue: filterValue) => filterValue.filteredValues); } - return temp; + return []; }, [activeScenarios, filterValues, index]); useEffect(() => { function checkVisibility(): boolean { - const check = Object.values(groupFilters || {})?.map((filter) => { - if (filter.name == filteredTitles[0]) { - return filter.isVisible; - } else return false; - }); - if (!check.includes(true)) return false; - else return true; + if (groupFilters) { + return Object.values(groupFilters) + .map((filter) => (filter.name == filteredTitles[0] ? filter.isVisible : false)) + .includes(true); + } + return false; } setVisibility(checkVisibility); }, [filteredTitles, groupFilters]); @@ -122,23 +116,23 @@ export default function DataCard({ localization={localization} /> {activeScenarios?.includes(index) && - filterValues?.[index.toString()] && - Object.keys(groupFilters || {}).length !== 0 && - visibility ? ( - - ) : null} + filterValues?.[index.toString()] && + Object.keys(groupFilters || {}).length !== 0 && + visibility && ( + + )} ); } diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx b/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx index 79a19616..ecaf01b6 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx +++ b/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx @@ -88,7 +88,7 @@ export default function FilterCard({ localization={localization} /> - {groupFilterIndex != totalCardNumber - 1 ? : null} + {groupFilterIndex != totalCardNumber - 1 && } ); } diff --git a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx b/frontend/src/components/CardsComponents/MainCard/CardRows.tsx index de4e9e33..71314c23 100644 --- a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx +++ b/frontend/src/components/CardsComponents/MainCard/CardRows.tsx @@ -46,6 +46,7 @@ export default function CardRows({ const {t: defaultT} = useTranslation(); const customLang = localization.customLang; const {t: customT} = useTranslation(customLang || undefined); + function GetFormattedAndTranslatedValues(filteredValues: number | null): string { if (filteredValues) return localization.numberFormatter(filteredValues); else if ((!filteredValues && index === 0) || (compartmentValues && Object.keys(compartmentValues).length !== 0)) @@ -142,14 +143,14 @@ export default function CardRows({ whiteSpace: 'nowrap', }} /> - {arrow ? ( + {arrow && ( - ) : null} + )} ); })} diff --git a/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx index 98f25205..8bdfd77b 100644 --- a/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx +++ b/frontend/src/components/CompartmentsComponents/CompartmentsRow.tsx @@ -39,11 +39,7 @@ export default function CompartmentsRow({ const {t: customT} = useTranslation(customLang || undefined); const theme = useTheme(); const [tooltipOpen, setTooltipOpen] = useState(false); - const openTooltip = (event: React.MouseEvent) => { - event.stopPropagation(); - setTooltipOpen(true); - }; - const closeTooltip = () => setTooltipOpen(false); + return ( - + setTooltipOpen(false)}> setTooltipOpen(false)} + onClick={(event: React.MouseEvent) => { + event.stopPropagation(); + setTooltipOpen(true); + }} title={ localization.overrides && localization.overrides['compartments.tooltip'] ? customT(localization.overrides['compartments.tooltip']) diff --git a/frontend/src/components/FilterComponents/GroupFilterCard.tsx b/frontend/src/components/FilterComponents/GroupFilterCard.tsx index 064d962a..a218788c 100644 --- a/frontend/src/components/FilterComponents/GroupFilterCard.tsx +++ b/frontend/src/components/FilterComponents/GroupFilterCard.tsx @@ -49,7 +49,7 @@ export default function GroupFilterCard(props: GroupFilterCardProps) { const {t: customT} = useTranslation(customLang || undefined); const theme = useTheme(); - const ChangeVisibility = (id: string) => { + const changeVisibility = (id: string) => { // Find the filter with the specific id const filterToChange = props.groupFilters![id]; @@ -69,7 +69,7 @@ export default function GroupFilterCard(props: GroupFilterCardProps) { } }; - const DeleteFilter = (id: string) => { + const deleteFilter = (id: string) => { // Create a new copy of groupFilters without the filter with the specific id const newGroupFilters = {...props.groupFilters}; delete newGroupFilters[id]; @@ -108,7 +108,7 @@ export default function GroupFilterCard(props: GroupFilterCardProps) { icon={} checked={props.item.isVisible} onClick={() => { - ChangeVisibility(props.item.id); + changeVisibility(props.item.id); }} /> { if (answer) { - DeleteFilter(props.item.id); + deleteFilter(props.item.id); } setConfirmDialogOpen(false); }} diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 82d32661..6f7d4c60 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -71,7 +71,7 @@ export default function HeatMap({ // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. const isFetching = useMemo(() => { - if (selectedScenario === null) { + if (selectedScenario == null) { return true; } return isDataFetching; From fb060f62e0077476900e7a518a512bcd922c7d5c Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 6 Jun 2024 15:21:07 +0200 Subject: [PATCH 019/119] Add localization for Map and LineChart components --- frontend/locales/de-global.json5 | 62 +------------------ frontend/locales/en-global.json5 | 61 +----------------- .../LineChartComponents/LineChart.tsx | 24 +++---- .../src/components/LineChartContainer.tsx | 1 - .../Sidebar/MapComponents/HeatLegend.tsx | 16 +++-- .../Sidebar/MapComponents/HeatLegendEdit.tsx | 38 ++++++++++-- .../Sidebar/MapComponents/HeatMap.tsx | 10 +-- .../Sidebar/MapComponents/LockMaxValue.tsx | 24 +++++-- .../src/components/Sidebar/MapContainer.tsx | 13 ++-- frontend/src/types/localization.ts | 7 +++ 10 files changed, 96 insertions(+), 160 deletions(-) create mode 100644 frontend/src/types/localization.ts diff --git a/frontend/locales/de-global.json5 b/frontend/locales/de-global.json5 index f269281b..684ba357 100644 --- a/frontend/locales/de-global.json5 +++ b/frontend/locales/de-global.json5 @@ -52,6 +52,7 @@ 'confirm-discard-title': 'Änderungen Verwerfen', 'confirm-discard-text': 'Sie haben ungespeicherte Änderungen. Wollen sie diese verwerfen?', discard: 'Verwerfen', + delete: 'Löschen', }, chart: { caseData: 'Geschätzte Fälle', @@ -77,65 +78,4 @@ 'no-data': 'Keine Daten', 'loki-logo': 'LOKI-Logo', okay: 'Okay', - 'group-filters-editor': { - categories: { - age: 'Alter', - gender: 'Geschlecht', - }, - groups: { - age_0: '0 - 4 Jahre', - age_1: '5 - 14 Jahre', - age_2: '15 - 34 Jahre', - age_3: '35 - 59 Jahre', - age_4: '60 - 79 Jahre', - age_5: 'Über 80 Jahre', - total: 'Gesamt', - female: 'Weiblich', - male: 'Männlich', - nonbinary: 'Divers', - }, - }, - compartments: { - Infected: 'Infiziert', - MildInfections: 'Milde Infektion', - Hospitalized: 'Hospitalisiert', - ICU: 'Intensivpatient', - Dead: 'Verstorben', - DeadV1: 'Verstorben (💉)', - DeadV2: 'Verstorben (💉💉)', - Exposed: 'Kontaktperson', - Recovered: 'Genesen', - Carrier: 'Träger', - Susceptible: 'Empfänglich', - InfectedT: 'Infiziert (🧪)', - InfectedTV1: 'Infiziert (🧪 + 💉)', - InfectedTV2: 'Infiziert (🧪 + 💉💉)', - InfectedV1: 'Infiziert (💉)', - InfectedV2: 'Infiziert (💉💉)', - HospitalizedV1: 'Hospitalisiert (💉)', - HospitalizedV2: 'Hospitalisiert (💉💉)', - ICUV1: 'Intensivpatient (💉)', - ICUV2: 'Intensivpatient (💉💉)', - ExposedV1: 'Kontaktperson (💉)', - ExposedV2: 'Kontaktperson (💉💉)', - CarrierT: 'Träger (🧪)', - CarrierTV1: 'Träger (🧪 + 💉)', - CarrierTV2: 'Träger (🧪 + 💉💉)', - CarrierV1: 'Träger (💉)', - CarrierV2: 'Träger (💉💉)', - SusceptibleV1: 'Empfänglich (💉)', - SusceptibleV2: 'Empfänglich (💉💉)', - tooltip: 'Die hier angezeigten Zahlen zu Infizierten und Hospitalisierten basieren auf Annahmen zur Immunität,\ - Dauer und Schweregrad einer Infektion mit Sars-CoV-2. Sie berechnen sich über ein komplexes mehrstufiges\ - Verfahren aus den berichteten Fallzahlen und eine einfach Formel kann nicht angegeben werden. Ein\ - Anstieg/Rückgang der Fallzahlen bedeutet einen Anstieg/Rückgang der Anzahl Infizierter, sodass in\ - Relation zu den Werten der vergangenen Tagen bewertet werden kann, ob die Situation sich verbessert oder\ - verschlimmert. Sofern verfügbar, kommen die Zahlen zu den Intensivpatient:innen aus dem DIVI\ - Intensivregister.', - }, - 'scenario-names': { - 'Baseline Scenario': 'Geschätzte Fälle', - 'Summer 2021 Simulation 1': 'Szenario ohne Maßnahmen', - 'Summer 2021 Simulation 2': 'Szenario mit Maßnahmen', - }, } diff --git a/frontend/locales/en-global.json5 b/frontend/locales/en-global.json5 index 38112512..9afedfbb 100644 --- a/frontend/locales/en-global.json5 +++ b/frontend/locales/en-global.json5 @@ -61,6 +61,7 @@ 'confirm-discard-title': 'Discard Changes', 'confirm-discard-text': 'You have unsaved changes. Do you want to discard them?', discard: 'Discard', + delete: 'Delete', }, chart: { caseData: 'Estimated Cases', @@ -92,64 +93,4 @@ sanctus est Lorem ipsum dolor sit amet.', WIP: 'This functionality is still work in progress.', okay: 'Okay', - 'group-filters-editor': { - categories: { - age: 'Age', - gender: 'Gender', - }, - groups: { - age_0: '0 - 4 Years', - age_1: '5 - 14 Years', - age_2: '15 - 34 Years', - age_3: '35 - 59 Years', - age_4: '60 - 79 Years', - age_5: 'Above 80 Years', - total: 'Total', - female: 'Female', - male: 'Male', - nonbinary: 'Non-Binary', - }, - }, - compartments: { - Infected: 'Infected', - MildInfections: 'Mild Infection', - Hospitalized: 'Hospitalized', - ICU: 'Intensive Care', - Dead: 'Dead', - DeadV1: 'Dead (💉)', - DeadV2: 'Dead (💉💉)', - Exposed: 'Exposed', - Recovered: 'Recovered', - Carrier: 'Carrier', - Susceptible: 'Susceptible', - InfectedT: 'Infected (🧪)', - InfectedTV1: 'Infected (🧪 + 💉)', - InfectedTV2: 'Infected (🧪 + 💉💉)', - InfectedV1: 'Infected (💉)', - InfectedV2: 'Infected (💉💉)', - HospitalizedV1: 'Hospitalized (💉)', - HospitalizedV2: 'Hospitalized (💉💉)', - ICUV1: 'Intensive Care (💉)', - ICUV2: 'Intensive Care (💉💉)', - ExposedV1: 'Exposed (💉)', - ExposedV2: 'Exposed (💉💉)', - CarrierT: 'Carrier (🧪)', - CarrierTV1: 'Carrier (🧪 + 💉)', - CarrierTV2: 'Carrier (🧪 + 💉💉)', - CarrierV1: 'Carrier (💉)', - CarrierV2: 'Carrier (💉💉)', - SusceptibleV1: 'Susceptible (💉)', - SusceptibleV2: 'Susceptible (💉💉)', - tooltip: 'The numbers of infected and hospitalised shown here are based on assumptions about immunity, duration and\ - severity of infection with Sars-CoV-2. They are calculated via a complex multi-step process from the\ - reported case numbers and a simple formula cannot be given. An increase/decrease in the number of cases\ - means an increase/decrease in the number of infected persons, so that it is possible to assess whether\ - the situation is improving or worsening in relation to the values of the previous days. If available, the\ - figures on intensive care patients come from the DIVI Intensive Care Register.', - }, - 'scenario-names': { - 'Baseline Scenario': 'Estimated Cases', - 'Summer 2021 Simulation 1': 'Scenario without Interventions', - 'Summer 2021 Simulation 2': 'Scenario with Interventions', - }, } diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 4b6a92f4..a3ca441b 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -22,6 +22,7 @@ import {useTranslation} from 'react-i18next'; import {Dictionary, dateToISOString} from '../../util/util'; import React from 'react'; import {Scenario} from 'store/ScenarioSlice'; +import {Localization} from 'types/localization'; interface ScenarioList { scenarios: { @@ -55,13 +56,7 @@ interface LineChartProps { scenarioList: ScenarioList; groupFilterList?: Dictionary | null; exportedFileName?: string; - localization: { - numberFormatter?: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + localization?: Localization; } export default function LineChart({ @@ -84,14 +79,13 @@ export default function LineChart({ groupFilterList = null, exportedFileName = 'Data', localization = { - numberFormatter: undefined, - customLang: 'en', - overrides: undefined, + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, }, }: LineChartProps) { - const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: defaultT, i18n} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); const rootRef = useRef(null); @@ -211,7 +205,7 @@ export default function LineChart({ } // Set localization - rootRef.current.locale = localization.customLang === 'de' ? am5locales_de_DE : am5locales_en_US; + rootRef.current.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; @@ -230,7 +224,7 @@ export default function LineChart({ : defaultT('dayFormat'); }, // Re-run effect if language changes - [localization.customLang, defaultT, customT, localization.overrides] + [localization.customLang, defaultT, customT, localization.overrides, i18n.language] ); // Effect to update min/max date. diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index f95034e2..d7a4938d 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -77,7 +77,6 @@ export default function LineChartContainer() { selectedCompartment={selectedCompartment ?? ''} groupFilterList={groupFilterList} scenarioList={scenarioList} - localization={{}} /> ); diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index db47b9ca..26093b18 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -7,6 +7,7 @@ import {Box} from '@mui/material'; import React from 'react'; import {HeatmapLegend} from 'types/heatmapLegend'; import {useTheme} from '@mui/material/styles'; +import {Localization} from 'types/localization'; interface HeatProps { legend: HeatmapLegend; @@ -16,7 +17,7 @@ interface HeatProps { displayText: boolean; id: string; style?: React.CSSProperties; - formatNumber: (value: number) => string; + localization?: Localization; } export default function HeatLegend({ @@ -31,7 +32,11 @@ export default function HeatLegend({ margin: '5px', height: '50px', }, - formatNumber, + localization = { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + }, }: Readonly) { const unique_id = useMemo(() => id + String(Date.now() + Math.random()), [id]); const theme = useTheme(); @@ -42,9 +47,9 @@ export default function HeatLegend({ am5.HeatLegend.new(root, { orientation: 'horizontal', startValue: min, - startText: displayText ? formatNumber(min) : ' ', + startText: displayText ? localization.formatNumber!(min) : ' ', endValue: max, - endText: displayText ? formatNumber(max) : ' ', + endText: displayText ? localization.formatNumber!(max) : ' ', // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color startColor: am5.color(theme.palette.background.paper), endColor: am5.color(theme.palette.background.paper), @@ -77,13 +82,14 @@ export default function HeatLegend({ }, [ displayText, exposeLegend, - formatNumber, + localization.formatNumber, legend.isNormalized, legend.steps, max, min, theme.palette.background.paper, unique_id, + localization, ]); return ; diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx index 4f589360..d597dcdc 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx @@ -16,12 +16,14 @@ import EditIcon from '@mui/icons-material/Edit'; import legendPresets from '../../../../assets/heatmap_legend_presets.json?url'; import {useTheme} from '@mui/material'; import {HeatmapLegend} from 'types/heatmapLegend'; +import {Localization} from 'types/localization'; +import {useTranslation} from 'react-i18next'; interface HeatLegendEditProps { setLegend: (legend: HeatmapLegend) => void; legend: HeatmapLegend; selectedScenario?: number | null; - t?: (key: string) => string; + localization?: Localization; } /** * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. @@ -30,9 +32,15 @@ export default function HeatLegendEdit({ setLegend, legend, selectedScenario = null, - t = (key: string) => key, + localization = { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + }, }: HeatLegendEditProps) { const theme = useTheme(); + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); // // This contains all legends using the default colors. // const [defaultLegends, setDefaultLegends] = useState>([]); const defaultLegends = useDefaultLegends(); @@ -115,11 +123,23 @@ export default function HeatLegendEdit({ return ( <> - + setHeatLegendEditOpen(true)} - aria-label={t('heatlegend.edit')} + aria-label={ + localization.overrides && localization.overrides['heatlegend.edit'] + ? customT(localization.overrides['heatlegend.edit']) + : defaultT('heatlegend.edit') + } size='small' sx={{padding: theme.spacing(0), marginBottom: theme.spacing(1)}} > @@ -136,7 +156,11 @@ export default function HeatLegendEdit({ -
- )} - /> -
- - ); -} diff --git a/frontend/src/types/localization.ts b/frontend/src/types/localization.ts index d8374608..83f0e196 100644 --- a/frontend/src/types/localization.ts +++ b/frontend/src/types/localization.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + export interface Localization { formatNumber?: (value: number) => string; customLang?: string; diff --git a/frontend/src/types/map.ts b/frontend/src/types/map.ts index 80b3b706..d8ca7bf0 100644 --- a/frontend/src/types/map.ts +++ b/frontend/src/types/map.ts @@ -5,7 +5,7 @@ export interface Feature { type: string; geometry: { type: string; - coordinates: number[]; + coordinates: number[][][]; }; properties: { [key: string]: string | number; From 144afc0dd0d9519c953e76bbfa797108557b029e Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 10 Jun 2024 15:04:03 +0200 Subject: [PATCH 021/119] :wrench: Modified Map components props and added HeatMap test --- .../components/Sidebar/DistrictMap.test.tsx | 33 -- .../components/Sidebar/HeatMap.test.tsx | 121 +++++ .../src/components/Sidebar/DistrictMap.tsx | 448 ------------------ .../Sidebar/MapComponents/HeatLegend.tsx | 4 +- .../Sidebar/MapComponents/HeatLegendEdit.tsx | 9 +- .../Sidebar/MapComponents/HeatMap.tsx | 28 +- .../src/components/Sidebar/MapContainer.tsx | 9 +- frontend/src/components/Sidebar/index.tsx | 39 -- 8 files changed, 154 insertions(+), 537 deletions(-) delete mode 100644 frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx create mode 100644 frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx delete mode 100644 frontend/src/components/Sidebar/DistrictMap.tsx delete mode 100644 frontend/src/components/Sidebar/index.tsx diff --git a/frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx b/frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx deleted file mode 100644 index 69780ce8..00000000 --- a/frontend/src/__tests__/components/Sidebar/DistrictMap.test.tsx +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {describe, test, vi} from 'vitest'; -import {render, screen} from '@testing-library/react'; - -import i18n from '../../../util/i18nForTests'; - -import {I18nextProvider} from 'react-i18next'; -import {Provider} from 'react-redux'; -import {Store} from '../../../store'; -import DistrictMap from '../../../components/Sidebar/DistrictMap'; -import Theme from '../../../util/Theme'; -import {ThemeProvider} from '@mui/material/styles'; - -describe('District Map', () => { - vi.stubGlobal('fetch', async () => Promise.all([])); - - test('district map load', () => { - render( - - - - - - - - ); - - screen.getByLabelText('heatlegend.lock'); - }); -}); diff --git a/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx new file mode 100644 index 00000000..c6f80e3a --- /dev/null +++ b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx @@ -0,0 +1,121 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useMemo, useRef, useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {render, screen} from '@testing-library/react'; +import * as am5 from '@amcharts/amcharts5'; +import HeatMap from 'components/Sidebar/MapComponents/HeatMap'; +import {FeatureProperties} from 'types/map'; +import {ThemeProvider} from '@mui/system'; +import Theme from 'util/Theme'; + +const HeatMapTest = () => { + const geoData = useMemo(() => { + return { + type: 'FeatureCollection', + features: [ + { + type: 'Feature', + properties: { + RS: '09771', + GEN: 'Aichach-Friedberg', + BEZ: 'LK', + }, + geometry: { + type: 'Polygon', + coordinates: [ + [ + [10.0, 50.0], + [11.0, 50.0], + [11.0, 51.0], + [10.0, 51.0], + [10.0, 50.0], + ], + ], + }, + }, + { + type: 'Feature', + properties: { + RS: '12345', + GEN: 'Test District', + BEZ: 'Test Type', + }, + geometry: { + type: 'Polygon', + coordinates: [ + [ + [12.0, 52.0], + [13.0, 52.0], + [13.0, 53.0], + [12.0, 53.0], + [12.0, 52.0], + ], + ], + }, + }, + ], + }; + }, []); + const values = useMemo(() => { + return [ + {id: '09771', value: 1}, + {id: '12345', value: 2}, + ]; + }, []); + + const defaultValue = useMemo( + () => ({ + RS: '00000', + GEN: 'germany', + BEZ: '', + id: -1, + }), + [] + ); + + const [selectedArea, setSelectedArea] = useState(defaultValue); + const [aggregatedMax, setAggregatedMax] = useState(1); + const legend = useMemo(() => { + return { + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + }; + }, []); + + const legendRef = useRef(null); + + return ( +
+ +
+ ); +}; + +describe('HeatMap', () => { + test('renders HeatMap component', () => { + render( + + + + ); + + expect(screen.getByTestId('map')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/components/Sidebar/DistrictMap.tsx b/frontend/src/components/Sidebar/DistrictMap.tsx deleted file mode 100644 index bf3664c6..00000000 --- a/frontend/src/components/Sidebar/DistrictMap.tsx +++ /dev/null @@ -1,448 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useEffect, useMemo, useState, useRef} from 'react'; -import {useTheme} from '@mui/material/styles'; -import * as am5 from '@amcharts/amcharts5'; -import * as am5map from '@amcharts/amcharts5/map'; -import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {selectDistrict} from '../../store/DataSelectionSlice'; -import Box from '@mui/material/Box'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import Tooltip from '@mui/material/Tooltip'; -import LockIcon from '@mui/icons-material/Lock'; -import {useGetSimulationDataByDateQuery} from 'store/services/scenarioApi'; -import HeatLegend from './HeatLegend'; -import {NumberFormatter} from 'util/hooks'; -import HeatLegendEdit from './HeatLegendEdit'; -import {HeatmapLegend} from '../../types/heatmapLegend'; -import LockOpen from '@mui/icons-material/LockOpen'; -import LoadingContainer from '../shared/LoadingContainer'; -import {useGetCaseDataByDateQuery} from '../../store/services/caseDataApi'; -import mapData from '../../../assets/lk_germany_reduced.geojson?url'; -import svgZoomResetURL from '../../../assets/svg/zoom_out_map_white_24dp.svg?url'; -import svgZoomInURL from '../../../assets/svg/zoom_in_white_24dp.svg?url'; -import svgZoomOutURL from '../../../assets/svg/zoom_out_white_24dp.svg?url'; - -interface IRegionPolygon { - value: number; - - /** District name */ - GEN: string; - - /** District type */ - BEZ: string; - - /** AGS (district ID) */ - RS: string; -} - -export default function DistrictMap(): JSX.Element { - const [geodata, setGeodata] = useState(null); - const [longLoad, setLongLoad] = useState(false); - const [longLoadTimeout, setLongLoadTimeout] = useState(); - const selectedDistrict = useAppSelector((state) => state.dataSelection.district); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const selectedDate = useAppSelector((state) => state.dataSelection.date); - const scenarioList = useAppSelector((state) => state.scenarioList.scenarios); - const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); - const [chart, setChart] = useState(null); - - const {data: simulationData, isFetching: isSimulationDataFetching} = useGetSimulationDataByDateQuery( - { - id: selectedScenario ?? 0, - day: selectedDate ?? '', - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment || !selectedDate} - ); - - const {data: caseData, isFetching: isCaseDataFetching} = useGetCaseDataByDateQuery( - { - day: selectedDate ?? '', - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: selectedScenario === null || selectedScenario > 0 || !selectedCompartment || !selectedDate} - ); - - const legendRef = useRef(null); - const {t, i18n} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - const theme = useTheme(); - const dispatch = useAppDispatch(); - const lastSelectedPolygon = useRef(null); - const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); - - // This memo either returns the case data or simulation data, depending on which card is selected. - const data = useMemo(() => { - if (selectedScenario === null) { - return null; - } - - if (selectedScenario === 0 && caseData !== undefined && caseData.results.length > 0) { - return caseData; - } else if (selectedScenario > 0 && simulationData !== undefined && simulationData.results.length > 0) { - return simulationData; - } - - return null; - }, [caseData, simulationData, selectedScenario]); - - // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. - const isFetching = useMemo(() => { - if (selectedScenario === null) { - return true; - } - - return (selectedScenario === 0 && isCaseDataFetching) || (selectedScenario > 0 && isSimulationDataFetching); - }, [selectedScenario, isCaseDataFetching, isSimulationDataFetching]); - - // use Memoized to store aggregated max and only recalculate if parameters change - const aggregatedMax: number = useMemo(() => { - if (fixedLegendMaxValue) { - return fixedLegendMaxValue; - } - let max = 1; - - if (data && selectedCompartment !== null) { - data.results.forEach((entry) => { - if (entry.name !== '00000') { - max = Math.max(entry.compartments[selectedCompartment], max); - } - }); - } - return max; - }, [selectedCompartment, data, fixedLegendMaxValue]); - - // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This - // prevents that the indicator is showing for every little change. - useEffect(() => { - if (isFetching) { - setLongLoadTimeout( - window.setTimeout(() => { - setLongLoad(true); - }, 1000) - ); - } else { - clearTimeout(longLoadTimeout); - setLongLoad(false); - } - // eslint-disable-next-line - }, [isFetching, setLongLoad, setLongLoadTimeout]); // longLoadTimeout is deliberately ignored here. - - // fetch geojson - useEffect(() => { - fetch(mapData, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - // resolve Promise - (geojson: GeoJSON.GeoJSON) => { - setGeodata(geojson); - }, - // reject promise - () => { - console.warn('Failed to fetch geoJSON'); - } - ); - }, []); - - // Setup Map - useEffect(() => { - // Create map instance - const root = am5.Root.new('mapdiv'); - const chart = root.container.children.push( - am5map.MapChart.new(root, { - projection: am5map.geoMercator(), - maxZoomLevel: 4, - maxPanOut: 0.4, - zoomControl: am5map.ZoomControl.new(root, { - paddingBottom: 25, - opacity: 50, - }), - }) - ); - // Add home button to reset pan & zoom - chart.get('zoomControl')?.homeButton.set('visible', true); - - // settings to fix positioning of images on buttons - const fixSVGPosition = { - width: 25, - height: 25, - dx: -5, - dy: -3, - }; - - // Set svg icon for home button - chart.get('zoomControl')?.homeButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomResetURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Add function to select germany when home button is pressed - chart.get('zoomControl')?.homeButton.events.on('click', () => { - // Set district to germany - dispatch(selectDistrict({ags: '00000', name: t('germany'), type: ''})); - }); - - // Set svg icon for plus button - chart.get('zoomControl')?.plusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomInURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Set svg icon for minus button - chart.get('zoomControl')?.minusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomOutURL, - ...fixSVGPosition, - // recast due to bug/error; am5.Picture usable according to https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/#External_image - }) as unknown as am5.Graphics - ); - - // Create polygon series - const polygonSeries = chart.series.push( - am5map.MapPolygonSeries.new(root, { - geoJSON: geodata ?? undefined, - tooltipPosition: 'fixed', - layer: 0, - }) - ); - - // get template for polygons to attach events etc to each - const polygonTemplate = polygonSeries.mapPolygons.template; - polygonTemplate.setAll({ - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - }); - - // add click event - polygonTemplate.events.on('click', (e) => { - const item = e.target.dataItem?.dataContext as IRegionPolygon; - dispatch(selectDistrict({ags: item.RS, name: item.GEN, type: t(item.BEZ)})); - }); - // add hover state - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); - - //show tooltip on heat legend when hovering - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as IRegionPolygon).value; - legendRef.current.showValue(value, formatNumber(value)); - } - }); - //hide tooltip on heat legend when not hovering anymore event - polygonTemplate.events.on('pointerout', () => { - if (legendRef.current) { - void legendRef.current.hideTooltip(); - } - }); - setChart(chart); - return () => { - chart?.dispose(); - root?.dispose(); - }; - }, [geodata, theme, t, formatNumber, dispatch]); - - useEffect(() => { - // unselect previous - if (chart && lastSelectedPolygon.current) { - // reset style - lastSelectedPolygon.current.states.create('default', { - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - layer: 0, - }); - lastSelectedPolygon.current.states.apply('default'); - } - // select new - if (selectedDistrict.ags !== '00000' && chart && chart.series.length > 0) { - const series = chart.series.getIndex(0) as am5map.MapPolygonSeries; - series.mapPolygons.each((polygon) => { - const data = polygon.dataItem?.dataContext as IRegionPolygon; - if (data.RS === selectedDistrict.ags) { - polygon.states.create('default', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 2, - }); - if (!polygon.isHover()) { - polygon.states.apply('default'); - } - // save polygon - lastSelectedPolygon.current = polygon; - } - }); - } - }, [chart, selectedDistrict, theme]); - - // set Data - useEffect(() => { - if (chart && chart.series.length > 0) { - const polygonSeries = chart.series.getIndex(0) as am5map.MapPolygonSeries; - if (selectedScenario !== null && selectedCompartment && !isFetching && data) { - // Map compartment value to RS - const dataMapped = new Map(); - data?.results.forEach((entry) => { - const rs = entry.name; - dataMapped.set(rs, entry.compartments[selectedCompartment]); - }); - - if (dataMapped.size > 0) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as IRegionPolygon; - regionData.value = dataMapped.get(regionData.RS) ?? Number.NaN; - - // determine fill color - let fillColor = am5.color(theme.palette.background.default); - if (Number.isFinite(regionData.value)) { - if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { - // if legend is normalized, also pass mix & max to color function - fillColor = getColorFromLegend(regionData.value, legend, {min: 0, max: aggregatedMax}); - } else { - // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed - fillColor = getColorFromLegend(regionData.value, legend); - } - } - - const bez = t(`BEZ.${regionData.BEZ}`); - const compartmentName = tBackend(`infection-states.${selectedCompartment}`); - polygon.setAll({ - tooltipText: - selectedScenario !== null && selectedCompartment - ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(regionData.value)}` - : `${bez} {GEN}`, - fill: fillColor, - }); - }); - } - } else if (longLoad || !data) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as IRegionPolygon; - regionData.value = Number.NaN; - const bez = t(`BEZ.${regionData.BEZ}`); - polygon.setAll({ - tooltipText: `${bez} {GEN}`, - fill: am5.color(theme.palette.text.disabled), - }); - }); - } - } - }, [ - scenarioList, - selectedScenario, - selectedCompartment, - selectedDate, - aggregatedMax, - dispatch, - t, - formatNumber, - data, - theme, - isFetching, - legend, - longLoad, - tBackend, - chart, - ]); - - return ( - - - - - { - // move exposed legend item (or null if disposed) into ref - legendRef.current = legend; - }} - min={0} - // use math.round to convert the numbers to integers - max={ - legend.isNormalized ? Math.round(aggregatedMax) : Math.round(legend.steps[legend.steps.length - 1].value) - } - displayText={true} - id={'legend'} - /> - - - - setFixedLegendMaxValue(fixedLegendMaxValue ? null : aggregatedMax)} - size='small' - sx={{padding: theme.spacing(0)}} - > - {fixedLegendMaxValue ? : } - - - - - - - ); -} - -function getColorFromLegend( - value: number, - legend: HeatmapLegend, - aggregatedMinMax?: {min: number; max: number} -): am5.Color { - // assume legend stops are absolute - let normalizedValue = value; - // if aggregated values (min/max) are properly set, the legend items are already normalized => need to normalize value too - if (aggregatedMinMax && aggregatedMinMax.min < aggregatedMinMax.max) { - const {min: aggregatedMin, max: aggregatedMax} = aggregatedMinMax; - normalizedValue = (value - aggregatedMin) / (aggregatedMax - aggregatedMin); - } else if (aggregatedMinMax) { - // log error if any of the above checks fail - console.error('Error: invalid MinMax array in getColorFromLegend', [value, legend, aggregatedMinMax]); - // return completely transparent fill if errors occur - return am5.color('rgba(0,0,0,0)'); - } - if (normalizedValue <= legend.steps[0].value) { - return am5.color(legend.steps[0].color); - } else if (normalizedValue >= legend.steps[legend.steps.length - 1].value) { - return am5.color(legend.steps[legend.steps.length - 1].color); - } else { - let upperTick = legend.steps[0]; - let lowerTick = legend.steps[0]; - for (let i = 1; i < legend.steps.length; i++) { - if (normalizedValue <= legend.steps[i].value) { - upperTick = legend.steps[i]; - lowerTick = legend.steps[i - 1]; - break; - } - } - return am5.Color.interpolate( - (normalizedValue - lowerTick.value) / (upperTick.value - lowerTick.value), - am5.color(lowerTick.color), - am5.color(upperTick.color) - ); - } -} diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 26093b18..823fa594 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -15,7 +15,7 @@ interface HeatProps { min: number; max: number; displayText: boolean; - id: string; + id?: string; style?: React.CSSProperties; localization?: Localization; } @@ -26,7 +26,7 @@ export default function HeatLegend({ min, max, displayText, - id, + id = 'legend', style = { width: '100%', margin: '5px', diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx index d597dcdc..252dfe24 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx @@ -13,7 +13,6 @@ import Select, {SelectChangeEvent} from '@mui/material/Select'; import Tooltip from '@mui/material/Tooltip'; import Typography from '@mui/material/Typography'; import EditIcon from '@mui/icons-material/Edit'; -import legendPresets from '../../../../assets/heatmap_legend_presets.json?url'; import {useTheme} from '@mui/material'; import {HeatmapLegend} from 'types/heatmapLegend'; import {Localization} from 'types/localization'; @@ -24,6 +23,7 @@ interface HeatLegendEditProps { legend: HeatmapLegend; selectedScenario?: number | null; localization?: Localization; + legendPresetsUrl?: string | null; } /** * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. @@ -37,6 +37,7 @@ export default function HeatLegendEdit({ customLang: 'global', overrides: {}, }, + legendPresetsUrl = null, }: HeatLegendEditProps) { const theme = useTheme(); const {t: defaultT} = useTranslation(); @@ -67,8 +68,8 @@ export default function HeatLegendEdit({ // This effect loads the presets file, once the modal is opened the first time. useEffect(() => { - if (heatmapLegends.length === 0 && heatLegendEditOpen) { - fetch(legendPresets, { + if (heatmapLegends.length === 0 && heatLegendEditOpen && legendPresetsUrl) { + fetch(legendPresetsUrl, { headers: { 'Content-Type': 'application/json', Accept: 'application/json', @@ -94,7 +95,7 @@ export default function HeatLegendEdit({ } ); } - }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen]); + }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen, legendPresetsUrl]); // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". useEffect(() => { diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 08a1c117..84a8b864 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -35,8 +35,8 @@ interface MapProps { fixedLegendMaxValue?: number | null; legend: HeatmapLegend; legendRef: React.MutableRefObject; - longLoad: boolean; - setLongLoad: (longLoad: boolean) => void; + longLoad?: boolean; + setLongLoad?: (longLoad: boolean) => void; localization?: Localization; idValuesToMap?: string; } @@ -60,9 +60,9 @@ export default function HeatMap({ fixedLegendMaxValue, legend, legendRef, - longLoad, - setLongLoad, - localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, + longLoad = false, + setLongLoad = () => {}, + localization, idValuesToMap = 'id', }: MapProps) { const theme = useTheme(); @@ -70,6 +70,18 @@ export default function HeatMap({ const [polygonSeries, setPolygonSeries] = useState(null); const [longLoadTimeout, setLongLoadTimeout] = useState(); + // Memoize the default localization object to avoid infinite re-renders + const defaultLocalization = useMemo(() => { + return { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }; + }, []); + + // Use the provided localization or default to the memoized one + const localizationToUse = localization || defaultLocalization; + // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. const isFetching = useMemo(() => { if (selectedScenario == null) { @@ -109,7 +121,6 @@ export default function HeatMap({ // Create Map with GeoData useEffect(() => { if (!mapData) return; - // Create map instance const root = am5.Root.new(mapId); const chart = root.container.children.push( @@ -207,7 +218,7 @@ export default function HeatMap({ polygonTemplate.events.on('pointerover', (e) => { if (legendRef.current) { const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; - legendRef.current.showValue(value, localization.formatNumber!(value)); + legendRef.current.showValue(value, localizationToUse.formatNumber!(value)); } }); //hide tooltip on heat legend when not hovering anymore event @@ -227,14 +238,13 @@ export default function HeatMap({ defaultFill, defaultSelectedValue, fillOpacity, - localization.formatNumber, legendRef, + localizationToUse.formatNumber, mapData, mapId, setSelectedArea, theme.palette.background.default, theme.palette.primary.main, - localization, ]); // Highlight selected district diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index d67a6cb7..d675dd70 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -23,6 +23,7 @@ import SidebarTabs from './SidebarTabs'; import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; import {selectDistrict} from 'store/DataSelectionSlice'; +import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; export default function MapContainer() { const {t} = useTranslation(); @@ -200,7 +201,6 @@ export default function MapContainer() { : Math.round(legend.steps[legend.steps.length - 1].value) } displayText={true} - id={'legend'} localization={localization} /> @@ -210,7 +210,12 @@ export default function MapContainer() { setFixedLegendMaxValue={setFixedLegendMaxValue} aggregatedMax={aggregatedMax} /> - + diff --git a/frontend/src/components/Sidebar/index.tsx b/frontend/src/components/Sidebar/index.tsx deleted file mode 100644 index a0064c7d..00000000 --- a/frontend/src/components/Sidebar/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {useTheme} from '@mui/material/styles'; -import SearchBar from './SearchBar'; -import DistrictMap from './DistrictMap'; -import SidebarTabs from './SidebarTabs'; -import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; -import Stack from '@mui/material/Stack'; - -export default function Sidebar(): JSX.Element { - const theme = useTheme(); - - return ( - - - - - - - - - - - - ); -} From 0c6d3b9fda1af42d8f0bdd7e5cbf01b2ee7a4047 Mon Sep 17 00:00:00 2001 From: Serloni Date: Mon, 10 Jun 2024 15:07:06 +0200 Subject: [PATCH 022/119] :hammer: & :memo: & :beetle: & :tada: refactor some part of the scenario components add also docs and fix major bug and also add the possibility to decide how many lines to show in the card when are folded and when are expanded --- .../src/components/LineChartContainer.tsx | 13 +- frontend/src/components/MainContent.tsx | 3 +- .../CardsComponents/CardContainer.tsx | 62 ++- .../CardsComponents/DataCard.tsx | 66 ++- .../GroupFilter/FilterButton.tsx | 15 + .../GroupFilter/FilterCard.tsx | 39 +- .../GroupFilter/FilterRows.tsx | 41 +- .../GroupFilter/FiltersContainer.tsx | 38 +- .../CardsComponents/MainCard/CardRows.tsx | 50 +- .../CardsComponents/MainCard/CardTitle.tsx | 8 + .../CardsComponents/MainCard/CardTooltip.tsx | 46 +- .../CardsComponents/MainCard/MainCard.tsx | 70 ++- .../CardsComponents/MainCard/TrendArrow.tsx | 0 .../CompartmentsRow.tsx | 57 ++- .../CompartmentsRows.tsx | 35 +- .../FilterComponents/ConfirmDialog.tsx | 46 ++ .../FilterDialogContainer.tsx | 30 +- .../FilterComponents/GroupFilterCard.tsx | 78 +-- .../FilterComponents/GroupFilterEditor.tsx | 104 ++-- .../FilterComponents/ManageGroupDialog.tsx | 40 +- .../GeneralButtonComponents/GeneralButton.tsx | 31 +- .../ReferenceDatePicker.tsx | 21 +- .../ScenarioComponents/ScenarioContainer.tsx | 473 ++++++++++++++++++ .../ScenarioContainer/ScenarioContainer.tsx | 375 -------------- frontend/src/store/DataSelectionSlice.ts | 8 +- 25 files changed, 1123 insertions(+), 626 deletions(-) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/CardContainer.tsx (61%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/DataCard.tsx (64%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/GroupFilter/FilterButton.tsx (71%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/GroupFilter/FilterCard.tsx (73%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/GroupFilter/FilterRows.tsx (75%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/GroupFilter/FiltersContainer.tsx (74%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/MainCard/CardRows.tsx (80%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/MainCard/CardTitle.tsx (77%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/MainCard/CardTooltip.tsx (68%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/MainCard/MainCard.tsx (69%) rename frontend/src/components/{ => ScenarioComponents}/CardsComponents/MainCard/TrendArrow.tsx (100%) rename frontend/src/components/{ => ScenarioComponents}/CompartmentsComponents/CompartmentsRow.tsx (68%) rename frontend/src/components/{ => ScenarioComponents}/CompartmentsComponents/CompartmentsRows.tsx (70%) rename frontend/src/components/{ => ScenarioComponents}/FilterComponents/ConfirmDialog.tsx (55%) rename frontend/src/components/{ => ScenarioComponents}/FilterComponents/FilterDialogContainer.tsx (87%) rename frontend/src/components/{ => ScenarioComponents}/FilterComponents/GroupFilterCard.tsx (54%) rename frontend/src/components/{ => ScenarioComponents}/FilterComponents/GroupFilterEditor.tsx (58%) rename frontend/src/components/{ => ScenarioComponents}/FilterComponents/ManageGroupDialog.tsx (88%) rename frontend/src/components/{ => ScenarioComponents}/GeneralButtonComponents/GeneralButton.tsx (52%) rename frontend/src/components/{ => ScenarioComponents}/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx (65%) create mode 100644 frontend/src/components/ScenarioComponents/ScenarioContainer.tsx delete mode 100644 frontend/src/components/ScenarioContainer/ScenarioContainer.tsx diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index d7a4938d..3d9f4868 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useCallback, useContext, useEffect, useState} from 'react'; +import {useCallback, useContext, useEffect, useMemo, useState} from 'react'; import LineChart from './LineChartComponents/LineChart'; import LoadingContainer from './shared/LoadingContainer'; import {useTheme} from '@mui/material'; @@ -39,6 +39,16 @@ export default function LineChartContainer() { [tBackend] ); + const localization = useMemo(() => { + return { + formatNumber: (value: number) => value.toLocaleString(), + customLang: 'backend', + overrides: { + [`compartments.${selectedCompartment}`]: `infection-states.${selectedCompartment}`, + }, + }; + }, [selectedCompartment]); + useEffect(() => { dispatch(selectDate(selectedDate)); }, [selectedDate, dispatch]); @@ -77,6 +87,7 @@ export default function LineChartContainer() { selectedCompartment={selectedCompartment ?? ''} groupFilterList={groupFilterList} scenarioList={scenarioList} + localization={localization} /> ); diff --git a/frontend/src/components/MainContent.tsx b/frontend/src/components/MainContent.tsx index 89e3a1ca..09e431ff 100644 --- a/frontend/src/components/MainContent.tsx +++ b/frontend/src/components/MainContent.tsx @@ -2,13 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import ScenarioContainer from './ScenarioContainer/ScenarioContainer'; import IconBar from './IconBar'; - import Grid from '@mui/material/Grid'; import {useTheme} from '@mui/material/styles'; import MainContentTabs from './MainContentTabs'; import {ReferenceDayConnector} from './ReferenceDayConnector'; +import ScenarioContainer from './ScenarioComponents/ScenarioContainer'; export default function MainContent(): JSX.Element { const theme = useTheme(); diff --git a/frontend/src/components/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx similarity index 61% rename from frontend/src/components/CardsComponents/CardContainer.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx index e73483da..09d98400 100644 --- a/frontend/src/components/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -3,37 +3,70 @@ import DataCard from './DataCard'; import {useTranslation} from 'react-i18next'; -import {Scenario, cardValue, filterValue} from '../../types/Cardtypes'; + import {Dispatch, SetStateAction} from 'react'; import React from 'react'; import {useTheme} from '@mui/material/styles'; import Box from '@mui/material/Box/Box'; import {Dictionary} from 'util/util'; import {GroupFilter} from 'types/Filtertypes'; +import {Scenario} from 'store/ScenarioSlice'; +import {cardValue, filterValue} from 'types/Cardtypes'; +import {Localization} from 'types/localization'; interface CardContainerProps { + /* A boolean indicating whether the compartments are expanded. */ compartmentsExpanded: boolean; + + /* A dictionary of card values. Each value is an object containing 'startValues', a dictionary used for rate calculation, and 'compartmentValues' for each card. + *'startValues' help determine whether the values have increased, decreased, or remained the same. */ cardValues: Dictionary | undefined; + + /* A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing + * the filtered information to be displayed, it's used a disctionary because each card has to have the same amount of filter. */ filterValues?: Dictionary | null; + + /* The compartment that is currently selected. */ selectedCompartment: string; + + /* An array of scenarios. */ scenarios: Scenario[]; + + /* An array of compartments. */ compartments: string[]; + + /* An array of active scenarios. */ activeScenarios: number[] | null; + + /* A function to set the active scenarios. */ setActiveScenarios: React.Dispatch>; - selectedScenario: number; - setSelectedScenario: Dispatch>; + + /* The selected scenario. */ + selectedScenario: number | null; + + /* A function to set the selected scenario. */ + setSelectedScenario: Dispatch>; + + /* The minimum number of compartment rows. */ minCompartmentsRows: number; + + /* The maximum number of compartment rows. */ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /* An object containing localization information (translation & number formattation). */ + localization?: Localization; + + /* A dictionary of group filters. */ groupFilters: Dictionary | undefined; + + /* Boolean to determine if the arrow is displayed */ + arrow?: boolean; } +/** + * This component renders a container for data cards. Each card represents a scenario and contains a title, a list of + * compartment values, and change rates relative to the simulation start. + */ export default function CardContainer({ compartmentsExpanded, filterValues, @@ -45,15 +78,15 @@ export default function CardContainer({ minCompartmentsRows, maxCompartmentsRows, setActiveScenarios, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, selectedScenario, setSelectedScenario, groupFilters, + arrow = true, }: CardContainerProps) { const theme = useTheme(); const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); const dataCards = scenarios.map((scenario) => { const cardValue = cardValues ? cardValues[scenario.id.toString()] : null; @@ -78,13 +111,14 @@ export default function CardContainer({ filterValues={filterValues} selectedScenario={selectedScenario == scenario.id} activeScenarios={activeScenarios} - setSelectedScenario={setSelectedScenario as Dispatch>} + setSelectedScenario={setSelectedScenario} numberSelectedScenario={selectedScenario ?? null} setActiveScenarios={setActiveScenarios} minCompartmentsRows={minCompartmentsRows} maxCompartmentsRows={compartments.length < maxCompartmentsRows ? compartments.length : maxCompartmentsRows} localization={localization} groupFilters={groupFilters} + arrow={arrow} /> ); }); diff --git a/frontend/src/components/CardsComponents/DataCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx similarity index 64% rename from frontend/src/components/CardsComponents/DataCard.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx index f9d9142b..8bb3e872 100644 --- a/frontend/src/components/CardsComponents/DataCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx @@ -5,37 +5,77 @@ import Box from '@mui/material/Box'; import {useEffect, useMemo, useState} from 'react'; import MainCard from './MainCard/MainCard'; import FiltersContainer from './GroupFilter/FiltersContainer'; -import {Dictionary, filterValue} from '../../types/Cardtypes'; import React from 'react'; import {GroupFilter} from 'types/group'; +import {filterValue} from 'types/Cardtypes'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; interface DataCardProps { + /*A unique identifier for the card.*/ index: number; + + /*A dictionary of compartment values associated with the card.*/ compartmentValues: Dictionary | null; + + /* A dictionary of start values used for calculating the rate. This determines whether the values have increased, decreased, or remained the same. */ startValues: Dictionary | null; + + /*The title of the card.*/ label: string; + + /*A boolean indicating whether the compartments are expanded.*/ compartmentsExpanded: boolean; + + /*An array of compartments.*/ compartments: string[]; + + /*The compartment that is currently selected.*/ selectedCompartment: string; + + /*A boolean indicating whether the scenario is selected.*/ selectedScenario: boolean; + + /*The color of the card.*/ color: string; + + /*An array of active scenarios.*/ activeScenarios: number[] | null; + + /* A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing + * the filtered information to be displayed, it's used a disctionary because each card has to have the same amount of filter. */ filterValues?: Dictionary | null; + + /*A function to set the selected scenario.*/ setSelectedScenario: React.Dispatch>; + + /*A function to set the active scenarios.*/ setActiveScenarios: React.Dispatch>; + + /*The number of the selected scenario.*/ numberSelectedScenario: number | null; + + /*The minimum number of compartment rows.*/ minCompartmentsRows: number; + + /*The maximum number of compartment rows.*/ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; + + /*A dictionary of group filters.*/ groupFilters: Dictionary | undefined; + + /* Boolean to determine if the arrow is displayed */ + arrow?: boolean; } +/** + * This component renders a card for either the case data or the scenario cards. Each card contains a title, a list of + * compartment values, and change rates relative to the simulation start. Additionally, the component includes a filter container. + * The filter container renders a button and generates the necessary number of cards based on the presence of any filters. + */ export default function DataCard({ index, compartmentValues, @@ -53,8 +93,9 @@ export default function DataCard({ maxCompartmentsRows, setSelectedScenario, setActiveScenarios, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, groupFilters, + arrow = true, }: DataCardProps) { const [hover, setHover] = useState(false); const [folded, setFolded] = useState(false); @@ -74,6 +115,11 @@ export default function DataCard({ return []; }, [activeScenarios, filterValues, index]); + /* + * This useEffect hook updates the visibility of the component based on groupFilters and filteredTitles. + * It checks if the first title in filteredTitles matches any filter name in groupFilters and if that filter is visible. + * If at least one matching filter is visible, the component becomes visible; otherwise, it remains hidden. + */ useEffect(() => { function checkVisibility(): boolean { if (groupFilters) { @@ -85,6 +131,7 @@ export default function DataCard({ } setVisibility(checkVisibility); }, [filteredTitles, groupFilters]); + return ( {activeScenarios?.includes(index) && filterValues?.[index.toString()] && diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx similarity index 71% rename from frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx index e84584bd..a2e9adbc 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FilterButton.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx @@ -7,14 +7,29 @@ import Button from '@mui/material/Button/Button'; import React from 'react'; interface FilterButtonProps { + /* Boolean to determine if the filter button is folded */ folded: boolean; + + /* Function to set the folded state */ setFolded: (value: boolean) => void; + + /* Color of the button border */ borderColor: string; + + /* Background color of the button */ backgroundColor?: string; + + /* ID number of the button */ idNumber: number; + + /* Maximum number of compartment rows */ maxCompartmentsRows: number; } +/** + * This component renders the filter button which open or close the container of filter cards. + * The button displays a left or right chevron icon depending on the folded state. + */ export default function FilterButton({ folded, setFolded, diff --git a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx similarity index 73% rename from frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx index ecaf01b6..2818454c 100644 --- a/frontend/src/components/CardsComponents/GroupFilter/FilterCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx @@ -5,29 +5,49 @@ import {Box} from '@mui/material'; import Divider from '@mui/material/Divider'; import FilterRows from './FilterRows'; import CardTitle from '../MainCard/CardTitle'; -import {Dictionary} from '../../../types/Cardtypes'; import React from 'react'; +import {Dictionary} from 'types/Cardtypes'; +import {Localization} from 'types/localization'; interface FilterCardProps { + /* Title of the filter card */ title: string; + + /* Color of the filter card */ color: string; + + /* Array of compartments */ compartments: string[]; + + /* Dictionary of filtered values */ filteredValues: Dictionary | null; + + /* Index of the group filter */ groupFilterIndex: number; + + /* Total number of cards */ totalCardNumber: number; + + /* Boolean to determine if the compartment is expanded */ compartmentExpanded?: boolean; + + /* Selected compartment */ selectedCompartment: string; + + /* Minimum number of compartment rows */ minCompartmentsRows: number; + + /* Maximum number of compartment rows */ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This component renders a filter card with a title, and a list of values that are the filtered values. + * It also supports localization. + */ export default function FilterCard({ title, color, @@ -39,7 +59,7 @@ export default function FilterCard({ selectedCompartment, maxCompartmentsRows, minCompartmentsRows, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: FilterCardProps) { return ( | null; + + /* Boolean to determine if the rows are flipped */ isFlipped?: boolean; - arrow?: boolean; + + /* Boolean to determine if the compartment is expanded */ compartmentExpanded?: boolean; + + /* Selected compartment */ selectedCompartment: string; + + /* Minimum number of compartment rows */ minCompartmentsRows: number; + + /* Maximum number of compartment rows */ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This component renders rows of filter values. + * It also supports localization. + */ export default function FilterRows({ compartments, filteredValues, @@ -33,20 +46,20 @@ export default function FilterRows({ selectedCompartment, minCompartmentsRows, maxCompartmentsRows, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: FilterRowsProps) { const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); + // Function to get formatted and translated values function GetFormattedAndTranslatedValues(filteredValues: number | null): string { - if (filteredValues) return localization.numberFormatter(filteredValues); + if (filteredValues) + return localization.formatNumber ? localization.formatNumber(filteredValues) : filteredValues.toString(); else return localization.overrides && localization.overrides['no-data'] ? customT(localization.overrides['no-data']) : defaultT('no-data'); } - return ( void; + + /* Boolean to determine if the compartments are expanded */ compartmentsExpanded: boolean; + + /* Selected compartment */ selectedCompartment: string; + + /* Array of compartments */ compartments: string[]; + + /* Array of filtered values */ filteredValues: Array | null>; + + /* Minimum number of compartment rows */ minCompartmentsRows: number; + + /* Maximum number of compartment rows */ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This component renders a container for filter cards. The container can be opened by clicking a button, which triggers a collapsing animation. + * It also supports localization. + */ export default function FiltersContainer({ index, folded, @@ -37,7 +57,7 @@ export default function FiltersContainer({ filteredTitles, maxCompartmentsRows, minCompartmentsRows, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: FiltersContainerProps) { const theme = useTheme(); return ( diff --git a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx similarity index 80% rename from frontend/src/components/CardsComponents/MainCard/CardRows.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx index 71314c23..32e4ebf1 100644 --- a/frontend/src/components/CardsComponents/MainCard/CardRows.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx @@ -3,32 +3,53 @@ import {Box, List, ListItem, ListItemText} from '@mui/material'; import TrendArrow from './TrendArrow'; import {ScrollSyncPane} from 'react-scroll-sync'; -import {Dictionary} from '../../../types/Cardtypes'; import {useTranslation} from 'react-i18next'; import React from 'react'; -import {hexToRGB} from 'util/util'; +import {Dictionary, hexToRGB} from 'util/util'; +import {Localization} from 'types/localization'; interface CardRowsProps { + /* Index of the card*/ index: number; + + /* Array of compartments */ compartments: string[]; + + /* Dictionary of compartment values */ compartmentValues: Dictionary | null; + + /* Dictionary of start values */ startValues: Dictionary | null; + + /* Boolean to determine if the card is flipped */ isFlipped?: boolean; + + /* Boolean to determine if the arrow is displayed */ arrow?: boolean; + + /* Boolean to determine if the compartment is expanded */ compartmentExpanded?: boolean; + + /* Selected compartment */ selectedCompartment: string; + + /* Color of the card row */ color: string; + + /* Minimum number of compartment rows */ minCompartmentsRows: number; + + /* Maximum number of compartment rows */ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /* Localization object for custom language and overrides */ + localization?: Localization; } +/** + * This component renders the rows which containing the compartment values, and change rates relative to the simulation start. + * It also supports localization. + */ export default function CardRows({ index, compartments, @@ -41,14 +62,15 @@ export default function CardRows({ color, minCompartmentsRows, maxCompartmentsRows, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: CardRowsProps) { const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); + // Function to get formatted and translated values function GetFormattedAndTranslatedValues(filteredValues: number | null): string { - if (filteredValues) return localization.numberFormatter(filteredValues); + if (filteredValues) + return localization.formatNumber ? localization.formatNumber(filteredValues) : filteredValues.toString(); else if ((!filteredValues && index === 0) || (compartmentValues && Object.keys(compartmentValues).length !== 0)) return '0'; else @@ -56,6 +78,8 @@ export default function CardRows({ ? customT(localization.overrides['no-data']) : defaultT('no-data'); } + + // Function to get compartment rate const getCompartmentRate = (compartment: string): string => { if (!compartmentValues || !(compartment in compartmentValues) || !startValues || !(compartment in startValues)) { // Return a Figure Dash (‒) where a rate cannot be calculated. diff --git a/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx similarity index 77% rename from frontend/src/components/CardsComponents/MainCard/CardTitle.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx index c56fc04a..5bf81d2e 100644 --- a/frontend/src/components/CardsComponents/MainCard/CardTitle.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx @@ -4,11 +4,19 @@ import Typography from '@mui/material/Typography'; import React from 'react'; interface CardTitleProps { + /* Label for the card title */ label: string; + + /* Boolean to determine if the card is flipped */ isFlipped?: boolean; + + /* Color of the card title */ color?: string; } +/** + * This component renders the title of a card with optional flipping and color customization. + */ export default function CardTitle({label, isFlipped = true, color}: CardTitleProps) { return ( >; + + /* A function to set the active scenarios. */ setActiveScenarios: React.Dispatch>; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This component renders a tooltip which is used to set whether the card is active or not. + */ export default function CardTooltip({ index, hover, @@ -34,14 +49,23 @@ export default function CardTooltip({ numberSelectedScenario, setActiveScenarios, setSelectedScenario, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: CardTooltipProps) { const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); + /** + * Manages the scenario based on the given index. + * If the scenario is active and there are no other active scenarios, it clears the active scenarios and selected scenario. + * Otherwise, it adds or removes the index from the active scenarios list and updates the selected scenario accordingly. + * @param index - The index of the scenario to manage. + */ const manageScenario = (index: number) => { const isActive = activeScenarios?.includes(index); + if (isActive && activeScenarios?.length === 0) { + setActiveScenarios(null); + setSelectedScenario(null); + } const newActiveScenarios = isActive ? activeScenarios!.filter((id) => id !== index) : [...(activeScenarios || []), index]; @@ -86,7 +110,7 @@ export default function CardTooltip({ { - event.stopPropagation(); + event.stopPropagation(); // Used in order to avoid triggering the click event on the card and only allow triggering the event that handles adding the card to the active scenarios. manageScenario(index); }} aria-label={ diff --git a/frontend/src/components/CardsComponents/MainCard/MainCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx similarity index 69% rename from frontend/src/components/CardsComponents/MainCard/MainCard.tsx rename to frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx index f350c5eb..b3fbdfcb 100644 --- a/frontend/src/components/CardsComponents/MainCard/MainCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx @@ -8,35 +8,75 @@ import CardTooltip from './CardTooltip'; import CardRows from './CardRows'; import {hexToRGB} from 'util/util'; import {Dictionary} from 'types/Cardtypes'; +import {Localization} from 'types/localization'; interface MainCardProps { + /* A unique identifier for the card. */ index: number; + + /* The title of the card. */ label: string; - hover: boolean; + + /* The color of the card. */ + color: string; + + /* A dictionary of compartment values associated with the card. */ compartmentValues: Dictionary | null; + + /* A dictionary of start values used for calculating the rate. This determines whether the values have increased, decreased, or remained the same. */ startValues: Dictionary | null; - setHover: React.Dispatch>; + + /* An array of compartment names. */ compartments: string[]; + + /* A boolean indicating whether the compartments are expanded. */ compartmentsExpanded: boolean; + + /* The compartment that is currently selected. */ selectedCompartment: string; - color: string; + + /* A boolean indicating whether the user is hovering over the card. */ + hover: boolean; + + /* A function to set the hover state of the card. */ + setHover: React.Dispatch>; + + /* A boolean indicating whether the scenario is selected. */ selectedScenario: boolean; - activeScenario: boolean; + + /* A function to set the selected scenario. */ setSelectedScenario: React.Dispatch>; - setActiveScenarios: React.Dispatch>; + + /* The number of the selected scenario. */ numberSelectedScenario: number | null; + + /* A boolean indicating whether the scenario is active. */ + activeScenario: boolean; + + /* A function to set the active scenarios. */ + setActiveScenarios: React.Dispatch>; + + /* An array of active scenarios. */ activeScenarios: number[] | null; + + /* The minimum number of compartment rows. */ minCompartmentsRows: number; + + /* The maximum number of compartment rows. */ maxCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + //*An object containing localization information (translation & number formattation).*/ + localization?: Localization; + + /* Boolean to determine if the arrow is displayed */ + arrow?: boolean; } +/** + * This component renders a card for either the case data or the scenario cards. Each card contains a title, + * a list of compartment values, and change rates relative to the simulation start. Additionally, a tooltip is used to set whether the card is active or not. + * Furthermore, the card is clickable, and if clicked, it will become the selected scenario. + */ function MainCard({ index, label, @@ -56,7 +96,8 @@ function MainCard({ setActiveScenarios, activeScenarios, maxCompartmentsRows, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, + arrow = true, }: MainCardProps) { return ( - + >; + + /* Minimum number of compartment rows */ minCompartmentsRows: number; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /* Localization object for custom language and overrides */ + localization?: Localization; } +/** + * This component renders a single row from the compartment List offering also localization support. + */ export default function CompartmentsRow({ id, selected, @@ -32,14 +45,17 @@ export default function CompartmentsRow({ compartmentsExpanded, setSelectedCompartment, minCompartmentsRows, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'backend', overrides: {}}, }: CompartmentsRowProps) { const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); const [tooltipOpen, setTooltipOpen] = useState(false); - + const openTooltip = (event: React.MouseEvent) => { + event.stopPropagation(); + setTooltipOpen(true); + }; + const closeTooltip = () => setTooltipOpen(false); return ( - setTooltipOpen(false)}> + setTooltipOpen(false)} - onClick={(event: React.MouseEvent) => { - event.stopPropagation(); - setTooltipOpen(true); - }} + onClose={closeTooltip} + onClick={openTooltip} title={ - localization.overrides && localization.overrides['compartments.tooltip'] - ? customT(localization.overrides['compartments.tooltip']) - : defaultT('compartments.tooltip') + localization?.overrides && localization?.overrides[`compartments.${compartment}`] + ? customT(localization?.overrides[`compartments.${compartment}`]) + : defaultT(`compartments.${compartment}`) } > >; + + /* Minimum number of compartment rows */ minCompartmentsRows: number; + + /* Maximum number of compartment rows */ maxCompartmentsRows: number; + + /* Values for each compartment */ compartmentValues: Dictionary | null; - localization: { - numberFormatter: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /* An object containing localization information (translation & number formattation). */ + localization?: Localization; } +/** + * This component renders a list of compartments with synchronized scrolling, + * expand/collapse functionality, and localization support. + */ export default function CompartmentsRows({ compartmentsExpanded, compartments, @@ -33,10 +47,11 @@ export default function CompartmentsRows({ maxCompartmentsRows, setSelectedCompartment, compartmentValues, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: CompartmentsRowsProps) { function GetFormattedAndTranslatedValues(filteredValues: number | null): string { - if (filteredValues) return localization.numberFormatter(filteredValues); + if (filteredValues) + return localization.formatNumber ? localization.formatNumber(filteredValues) : filteredValues.toString(); else return '0'; } return ( diff --git a/frontend/src/components/FilterComponents/ConfirmDialog.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/ConfirmDialog.tsx similarity index 55% rename from frontend/src/components/FilterComponents/ConfirmDialog.tsx rename to frontend/src/components/ScenarioComponents/FilterComponents/ConfirmDialog.tsx index e0a082fa..73329540 100644 --- a/frontend/src/components/FilterComponents/ConfirmDialog.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/ConfirmDialog.tsx @@ -9,14 +9,60 @@ import Typography from '@mui/material/Typography'; import React from 'react'; export interface ConfirmDialogProps { + /** Whether the dialog should be open or not. */ open: boolean; + + /** The title of the dialog. */ title: string; + + /** The text to be displayed in the dialog. */ text: string; + + /** + * A callback function that is called when the user provides an answer. + * @param answer `true` for confirming, `false` for aborting. + */ onAnswer: (answer: boolean) => void; + + /** The text to be displayed on the abort button. */ abortButtonText?: string; + + /** The text to be displayed on the confirm button. */ confirmButtonText?: string; } +/** + * A component that displays a confirmation dialog. + * @param props The properties for the component. + * + * @example + * ```js + * function ExampleComponent() { + * // State to keep track of whether the dialog should be open or not. + * const [open, setOpen] = useState(false); + * + * // Function to handle the user's answer. + * const handleAnswer = (answer: boolean) => { + * console.log(`The user answered ${answer ? 'yes' : 'no'}.`); + * setOpen(false); + * }; + * + * return ( + *
+ * + * + *
+ * ); + * } + * ``` + */ export default function ConfirmDialog(props: ConfirmDialogProps) { return ( diff --git a/frontend/src/components/FilterComponents/FilterDialogContainer.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx similarity index 87% rename from frontend/src/components/FilterComponents/FilterDialogContainer.tsx rename to frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx index c5b404b9..aba93001 100644 --- a/frontend/src/components/FilterComponents/FilterDialogContainer.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx @@ -6,38 +6,44 @@ import ConfirmDialog from './ConfirmDialog'; import {useState} from 'react'; import ManageGroupDialog from './ManageGroupDialog'; import {useTranslation} from 'react-i18next'; -import {Dictionary} from '../../types/Cardtypes'; -import {GroupFilter} from '../../types/Filtertypes'; import React from 'react'; import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; export interface FilterDialogContainerProps { + /* A dictionary of group filters.*/ groupFilters: Dictionary | undefined; + + /* An array of group category.*/ groupCategories: GroupCategory[]; + + /* An array of group subcategory.*/ groupSubCategories: GroupSubcategory[]; + + /* A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible */ setGroupFilters: React.Dispatch | undefined>>; - localization: { - numberFormatter?: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This component renders a the container for the filters dialog. + */ export default function FilterDialogContainer({ groupFilters, setGroupFilters, groupCategories, groupSubCategories, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: FilterDialogContainerProps) { const [open, setOpen] = useState(false); const [closeDialogOpen, setCloseDialogOpen] = useState(false); const [groupEditorUnsavedChanges, setGroupEditorUnsavedChanges] = useState(false); const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); return ( <> diff --git a/frontend/src/components/FilterComponents/GroupFilterCard.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx similarity index 54% rename from frontend/src/components/FilterComponents/GroupFilterCard.tsx rename to frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx index a218788c..9ed1ccc4 100644 --- a/frontend/src/components/FilterComponents/GroupFilterCard.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx @@ -16,48 +16,61 @@ import { import {useState} from 'react'; import ConfirmDialog from './ConfirmDialog'; import {useTranslation} from 'react-i18next'; -import {GroupFilter} from '../../types/Filtertypes'; -import {Dictionary} from '../../types/Cardtypes'; import React from 'react'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; interface GroupFilterCardProps { /** The GroupFilter item to be displayed. */ item: GroupFilter; + /* A dictionary of group filters.*/ groupFilters: Dictionary | undefined; + /* A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible */ setGroupFilters: React.Dispatch | undefined>>; /** Whether the filter is selected or not. If it is selected, the detail view is displaying this filter's config. */ selected: boolean; + /** + * Callback function that is called when the filter is selected or unselected. + * @param groupFilter - Either this filter, if it was selected or null, if it was unselected. + */ selectFilterCallback: (groupFilter: GroupFilter | null) => void; - localization: { - numberFormatter?: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + /* An object containing localization information (translation & number formattation).*/ + localization?: Localization; } -export default function GroupFilterCard(props: GroupFilterCardProps) { +/** + * GroupFilterCard component displays a card that represents a single filter for the group filter list. The card shows + * the filter name, a toggle switch to turn on or off the filter, and a delete button to remove the filter. + */ +export default function GroupFilterCard({ + item, + groupFilters, + setGroupFilters, + selected, + selectFilterCallback, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: GroupFilterCardProps) { const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); const {t: defaultT} = useTranslation(); - const customLang = props.localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); - const changeVisibility = (id: string) => { + //Function used to change the visibility of the filter + const ChangeVisibility = (id: string) => { // Find the filter with the specific id - const filterToChange = props.groupFilters![id]; + const filterToChange = groupFilters![id]; // Check if the filter exists if (filterToChange) { // Create a new copy of groupFilters with the updated filter const newGroupFilters = { - ...props.groupFilters, + ...groupFilters, [id]: { ...filterToChange, isVisible: !filterToChange.isVisible, @@ -65,17 +78,18 @@ export default function GroupFilterCard(props: GroupFilterCardProps) { }; // Update the state with the new copy of groupFilters - props.setGroupFilters(newGroupFilters); + setGroupFilters(newGroupFilters); } }; - const deleteFilter = (id: string) => { + // Function used to delete filters + const DeleteFilter = (id: string) => { // Create a new copy of groupFilters without the filter with the specific id - const newGroupFilters = {...props.groupFilters}; + const newGroupFilters = {...groupFilters}; delete newGroupFilters[id]; // Update the state with the new copy of groupFilters - props.setGroupFilters(newGroupFilters); + setGroupFilters(newGroupFilters); }; return ( @@ -89,15 +103,15 @@ export default function GroupFilterCard(props: GroupFilterCardProps) { > { - props.selectFilterCallback(props.selected ? null : props.item); + selectFilterCallback(selected ? null : item); }} > - + - {props.item.name} + {item.name} @@ -106,28 +120,28 @@ export default function GroupFilterCard(props: GroupFilterCardProps) { } icon={} - checked={props.item.isVisible} + checked={item.isVisible} onClick={() => { - changeVisibility(props.item.id); + ChangeVisibility(item.id); }} /> { if (answer) { - deleteFilter(props.item.id); + DeleteFilter(item.id); } setConfirmDialogOpen(false); }} diff --git a/frontend/src/components/FilterComponents/GroupFilterEditor.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx similarity index 58% rename from frontend/src/components/FilterComponents/GroupFilterEditor.tsx rename to frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx index 83c18e04..729ea391 100644 --- a/frontend/src/components/FilterComponents/GroupFilterEditor.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterEditor.tsx @@ -4,50 +4,66 @@ import {Box, TextField, Typography, FormGroup, FormControlLabel, Checkbox, Button, useTheme} from '@mui/material'; import {useState, useEffect, useCallback} from 'react'; import {useTranslation} from 'react-i18next'; -import {GroupFilter} from '../../types/Filtertypes'; -import {Dictionary} from '../../types/Cardtypes'; import React from 'react'; -import {GroupCategory} from 'store/services/groupApi'; - -interface GroupSubcategory { - key: string; - name: string; - description: string; - category: string; -} +import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; interface GroupFilterEditorProps { /** The GroupFilter item to be edited. */ groupFilter: GroupFilter; + /* A dictionary of group filters.*/ groupFilters: Dictionary | undefined; + /* An array of group category.*/ groupCategories: GroupCategory[]; + /* An array of group subcategory.*/ groupSubCategories: GroupSubcategory[]; + /* A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible */ setGroupFilters: React.Dispatch | undefined>>; + /** + * Callback function that is called, when a new filter is created, so it will be selected immediately or when the user + * wants to close the editor. + * @param groupFilter - Either the current filter or null when the user wants to close the current filter's editor. + */ selectGroupFilterCallback: (groupFilter: GroupFilter | null) => void; + /** + * A callback that notifies the parent, if there are currently unsaved changes for this group filter. + * @param unsavedChanges - If the group filter has been modified without saving. + */ unsavedChangesCallback: (unsavedChanges: boolean) => void; - localization: { - numberFormatter?: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + /* An object containing localization information (translation & number formattation).*/ + localization?: Localization; } -export default function GroupFilterEditor(props: GroupFilterEditorProps) { +/** + * This is the detail view of the GroupFilter dialog. It allows to edit and create groups. It has a text field for the + * name at the top and columns of checkboxes for groups in the center. It requires that at least one checkbox of each + * group is selected before the apply button becomes available. It is also possible to discard changes by clicking the + * abort button before applying the changes. + */ +export default function GroupFilterEditor({ + groupFilter, + groupFilters, + groupCategories, + groupSubCategories, + setGroupFilters, + selectGroupFilterCallback, + unsavedChangesCallback, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, +}: GroupFilterEditorProps) { const {t: defaultT} = useTranslation(); - const customLang = props.localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); - const [name, setName] = useState(props.groupFilter.name); - const [groups, setGroups] = useState(props.groupFilter.groups); + const [name, setName] = useState(groupFilter.name); + const [groups, setGroups] = useState(groupFilter.groups); // Every group must have at least one element selected to be valid. const [valid, setValid] = useState(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); @@ -56,12 +72,12 @@ export default function GroupFilterEditor(props: GroupFilterEditorProps) { // Checks if the group filer is in a valid state. useEffect(() => { setValid(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); - }, [name, groups, props]); + }, [name, groups]); // Updates the parent about the current save state of the group filter. useEffect(() => { - props.unsavedChangesCallback(unsavedChanges); - }, [props, unsavedChanges]); + unsavedChangesCallback(unsavedChanges); + }, [unsavedChanges, unsavedChangesCallback]); const toggleGroup = useCallback( (subGroup: GroupSubcategory) => { @@ -93,8 +109,8 @@ export default function GroupFilterEditor(props: GroupFilterEditorProps) { > - {props.groupCategories.map((group) => ( + {groupCategories.map((group) => ( 0 ? theme.palette.text.primary : theme.palette.error.main} variant='h2' > - {props.localization.overrides && - props.localization.overrides[`group-filters-editor.categories.${group.key}`] - ? customT(props.localization.overrides[`group-filters-editor.categories.${group.key}`]) - : defaultT(`group-filters-editor.categories.${group.key}`)} + {localization.overrides && localization.overrides[`group-filters.categories.${group.key}`] + ? customT(localization.overrides[`group-filters.categories.${group.key}`]) + : defaultT(`group-filters.categories.${group.key}`)} - {props.groupSubCategories + {groupSubCategories ?.filter((subCategory) => subCategory.category === group.key) .filter((subGroup) => subGroup.key !== 'total') // TODO: We filter out the total group for now. .map((subGroup) => ( { setUnsavedChanges(false); - props.selectGroupFilterCallback(null); + selectGroupFilterCallback(null); }} > - {props.localization.overrides && props.localization.overrides['group-filters.close'] - ? customT(props.localization.overrides['group-filters.close']) + {localization.overrides && localization.overrides['group-filters.close'] + ? customT(localization.overrides['group-filters.close']) : defaultT('group-filters.close')} diff --git a/frontend/src/components/FilterComponents/ManageGroupDialog.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx similarity index 88% rename from frontend/src/components/FilterComponents/ManageGroupDialog.tsx rename to frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx index f56dfc5a..bc740136 100644 --- a/frontend/src/components/FilterComponents/ManageGroupDialog.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx @@ -8,27 +8,42 @@ import ConfirmDialog from './ConfirmDialog'; import GroupFilterCard from './GroupFilterCard'; import GroupFilterEditor from './GroupFilterEditor'; import {useTranslation} from 'react-i18next'; -import {Dictionary} from '../../types/Cardtypes'; -import {GroupFilter} from '../../types/Filtertypes'; import React from 'react'; import {GroupCategory, GroupSubcategory} from 'store/services/groupApi'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {Localization} from 'types/localization'; export interface ManageGroupDialogProps { + /* A dictionary of group filters.*/ groupFilters: Dictionary | undefined; + + /* An array of group category.*/ groupCategories: GroupCategory[]; + + /* An array of group subcategory.*/ groupSubCategories: GroupSubcategory[]; + + /* Callback function, which is called, when the close button is called.*/ onCloseRequest: () => void; + + /** + * A callback that notifies the parent, if there are currently unsaved changes for this group filter. + * @param unsavedChanges - If the group filter has been modified without saving. + */ unsavedChangesCallback: (unsavedChanges: boolean) => void; + + /* A function that allows setting the groupFilter state so that if the user adds a filter, the new filter will be visible.*/ setGroupFilters: React.Dispatch | undefined>>; - localization: { - numberFormatter?: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /* An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This dialog provides an editor to create, edit, toggle and delete group filters. It uses a classic master detail view + * with the available filters on the left and the filter configuration on the right. + */ export default function ManageGroupDialog({ groupFilters, groupCategories, @@ -36,11 +51,10 @@ export default function ManageGroupDialog({ onCloseRequest, unsavedChangesCallback, setGroupFilters, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: ManageGroupDialogProps) { const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); // The currently selected filter. const [selectedGroupFilter, setSelectedGroupFilter] = useState(null); @@ -184,7 +198,7 @@ export default function ManageGroupDialog({ groupFilter={selectedGroupFilter} groupFilters={groupFilters} setGroupFilters={setGroupFilters} - selectGroupFilterCallback={(groupFilter) => setNextSelectedGroupFilter(groupFilter)} + selectGroupFilterCallback={(groupFilter: GroupFilter | null) => setNextSelectedGroupFilter(groupFilter)} unsavedChangesCallback={(edited) => setUnsavedChanges(edited)} groupCategories={groupCategories} groupSubCategories={groupSubCategories} diff --git a/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx b/frontend/src/components/ScenarioComponents/GeneralButtonComponents/GeneralButton.tsx similarity index 52% rename from frontend/src/components/GeneralButtonComponents/GeneralButton.tsx rename to frontend/src/components/ScenarioComponents/GeneralButtonComponents/GeneralButton.tsx index 42174c75..052e963f 100644 --- a/frontend/src/components/GeneralButtonComponents/GeneralButton.tsx +++ b/frontend/src/components/ScenarioComponents/GeneralButtonComponents/GeneralButton.tsx @@ -4,31 +4,38 @@ import Button from '@mui/material/Button'; import {useTranslation} from 'react-i18next'; import React from 'react'; +import {Localization} from 'types/localization'; interface GeneralButtonProps { - buttonTexts: {expanded: string; collapsed: string}; + /* Texts for the button in both states: clicked and unclicked */ + buttonTexts: {clicked: string; unclicked: string}; + + /* Function to determine if the button is disabled */ isDisabled: () => boolean; + + /* Function to handle the button click event */ handleClick: () => void; + + /* Boolean to determine if the button is in expanded state */ isExpanded: boolean; - localization: { - numberFormatter?: (value: number) => string; - customLang?: string; - overrides?: { - [key: string]: string; - }; - }; + + /*An object containing localization information (translation & number formattation).*/ + localization?: Localization; } +/** + * This component renders a general button with clicked/unclicked texts, + * disabled state, click handler, and localization support. + */ export default function GeneralButton({ buttonTexts, isDisabled, handleClick, isExpanded, - localization, + localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: GeneralButtonProps) { const {t: defaultT} = useTranslation(); - const customLang = localization.customLang; - const {t: customT} = useTranslation(customLang || undefined); + const {t: customT} = useTranslation(localization.customLang); return ( ); } diff --git a/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx similarity index 65% rename from frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx rename to frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx index 4ff5db5f..7d946587 100644 --- a/frontend/src/components/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx +++ b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -10,16 +10,27 @@ import {AdapterDayjs} from '@mui/x-date-pickers/AdapterDayjs'; import React from 'react'; interface DatePickerProps { - referenceDay: string | null; - setReferenceDay: Dispatch>; + /* Start day, the one displayed with a dashed line in the line chart */ + startDay: string | null; + + /* Function used to set the new start date */ + setStartDay: Dispatch>; + + /* Minimum date pickable for which some data are provided */ minDate: string | null; + + /* Maximum date pickable for which some data are provided */ maxDate: string | null; } -export default function ReferenceDatePicker({referenceDay, setReferenceDay, minDate, maxDate}: DatePickerProps) { +/** + * This component renders the MUI date picker + */ +export default function ReferenceDatePicker({startDay, setStartDay, minDate, maxDate}: DatePickerProps) { + // Function used to update the starting date const updateDate = (newDate: Dayjs | null): void => { if (newDate) { - setReferenceDay(newDate.toString()); + setStartDay(newDate.toString()); } }; @@ -37,7 +48,7 @@ export default function ReferenceDatePicker({referenceDay, setReferenceDay, minD > label={'Reference-day'} - value={dayjs(referenceDay)} + value={dayjs(startDay)} minDate={dayjs(minDate)} maxDate={dayjs(maxDate)} onChange={updateDate} diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx new file mode 100644 index 00000000..2360b1e2 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -0,0 +1,473 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Box, darken, useTheme} from '@mui/material'; +import {Dictionary, Scenario, cardValue, filterValue} from '../../types/Cardtypes'; +import {useContext, useEffect, useMemo, useState} from 'react'; +import {GroupFilter} from '../../types/Filtertypes'; +import {GroupCategories, GroupSubcategories} from 'store/services/groupApi'; +import {NumberFormatter} from 'util/hooks'; +import {useTranslation} from 'react-i18next'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; +import { + selectCompartment, + selectScenario, + setActiveScenario, + setGroupFilters, + setMinMaxDates, + setStartDate, + toggleCompartmentExpansion, +} from 'store/DataSelectionSlice'; +import {dateToISOString} from 'util/util'; +import {DataContext} from 'DataContext'; +import {ScrollSync} from 'react-scroll-sync'; +import {setCompartments, setScenarios} from 'store/ScenarioSlice'; +import {useBoundingclientrectRef} from 'rooks'; +import {setReferenceDayTop} from 'store/LayoutSlice'; +import React from 'react'; +import CardContainer from './CardsComponents/CardContainer'; +import CompartmentsRows from './CompartmentsComponents/CompartmentsRows'; +import FilterDialogContainer from './FilterComponents/FilterDialogContainer'; +import GeneralButton from './GeneralButtonComponents/GeneralButton'; +import ReferenceDatePicker from './ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; +import {GroupResponse} from 'types/group'; +import {SimulationModel, SimulationDataByNode, Simulations} from 'types/scenario'; +import {CaseDataByNode} from 'types/caseData'; + +interface ScenarioContainerProps { + /*The minimum number of compartment rows.*/ + minCompartmentsRows?: number; + + /*The maximum number of compartment rows.*/ + maxCompartmentsRows?: number; +} + +/** + * Renders the ScenarioContainer component. + */ +export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartmentsRows = 6}: ScenarioContainerProps) { + const {t} = useTranslation(); + const dispatch = useAppDispatch(); + const {i18n} = useTranslation(); + const {formatNumber} = NumberFormatter(i18n.language, 1, 0); + const theme = useTheme(); + + const { + simulationModelData, + caseScenarioData, + startValues, + scenarioListData, + scenarioSimulationDataFirstCard, + scenarioSimulationDataFirstCardFiltersValues, + scenarioSimulationDataSecondCard, + scenarioSimulationDataSecondCardFiltersValues, + caseScenarioSimulationData, + groupCategories, + groupSubCategories, + }: { + simulationModelData: SimulationModel | undefined; + caseScenarioData: SimulationDataByNode | undefined; + startValues: Dictionary | null; + scenarioSimulationDataFirstCard: SimulationDataByNode | undefined; + scenarioSimulationDataSecondCard: SimulationDataByNode | undefined; + scenarioSimulationDataFirstCardFiltersValues: Dictionary | undefined; + scenarioSimulationDataSecondCardFiltersValues: Dictionary | undefined; + scenarioListData: Simulations | undefined; + caseScenarioSimulationData: CaseDataByNode | undefined; + groupCategories: GroupCategories | undefined; + groupSubCategories: GroupSubcategories | undefined; + } = useContext(DataContext) || { + simulationModelData: undefined, + caseScenarioData: undefined, + startValues: null, + scenarioListData: [], + scenarioSimulationDataFirstCard: undefined, + scenarioSimulationDataFirstCardFiltersValues: undefined, + scenarioSimulationDataSecondCard: undefined, + scenarioSimulationDataSecondCardFiltersValues: undefined, + caseScenarioSimulationData: undefined, + groupCategories: undefined, + groupSubCategories: undefined, + }; + + const storeGroupFilters = useAppSelector((state) => state.dataSelection.groupFilters); + const storeCompartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); + const storeActiveScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); + const storeSelectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const scenariosState = useAppSelector((state) => state.scenarioList.scenarios); + const compartments = useAppSelector((state) => state.scenarioList.compartments); + const storeSelectedCompartment = useAppSelector((state) => state.dataSelection.compartment); + const storeStartDay = useAppSelector((state) => state.dataSelection.simulationStart); + + const [cardValues, setCardValues] = useState | undefined>(); + const [filterValues, setFilterValues] = useState | undefined>(); + const [groupFilters, setgroupFilters] = useState | undefined>(storeGroupFilters); + const [compartmentsExpanded, setCompartmentsExpanded] = useState(storeCompartmentsExpanded ?? false); + const [activeScenarios, setActiveScenarios] = useState(storeActiveScenarios); + const [selectedScenario, setSelectedScenario] = useState(storeSelectedScenario); + const [selectedCompartment, setSelectedCompartment] = useState(storeSelectedCompartment ?? 'Infected'); + const [startDay, setStartDay] = useState(storeStartDay ?? '06-07-2021'); + const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); + + const scenarios: Scenario[] = useMemo(() => { + const aux: Scenario[] = []; + aux.push({ + id: 0, + label: `Baseline Scenario`, + }); + for (const scenarioKey in scenariosState) { + aux.push(scenariosState[scenarioKey]); + } + return aux; + }, [scenariosState]); + + const compartmentsMemo = useMemo(() => { + return compartments; + }, [compartments]); + + const localization = useMemo(() => { + return { + formatNumber: formatNumber, + customLang: 'backend', + overrides: { + ['compartments.Infected']: 'infection-states.Infected', + ['compartments.MildInfections']: 'infection-states.MildInfections', + ['compartments.Hospitalized']: 'infection-states.Hospitalized', + ['compartments.ICU']: 'infection-states.ICU', + ['compartments.Dead']: 'infection-states.Dead', + ['compartments.DeadV1']: 'infection-states.DeadV1', + ['compartments.DeadV2']: 'infection-states.DeadV2', + ['compartments.Exposed']: 'infection-states.Exposed', + ['compartments.Recovered']: 'infection-states.Recovered', + ['compartments.Carrier']: 'infection-states.Carrier', + ['compartments.Susceptible']: 'infection-states.Susceptible', + ['compartments.InfectedT']: 'infection-states.InfectedT', + ['compartments.InfectedTV1']: 'infection-states.InfectedTV1', + ['compartments.InfectedTV2']: 'infection-states.InfectedTV2', + ['compartments.InfectedV1']: 'infection-states.InfectedV1', + ['compartments.InfectedV2']: 'infection-states.InfectedV2', + ['compartments.HospitalizedV1']: 'infection-states.HospitalizedV1', + ['compartments.HospitalizedV2']: 'infection-states.HospitalizedV2', + ['compartments.ICUV1']: 'infection-states.ICUV1', + ['compartments.ICUV2']: 'infection-states.ICUV2', + ['compartments.ExposedV1']: 'infection-states.ExposedV1', + ['compartments.ExposedV2']: 'infection-states.ExposedV2', + ['compartments.CarrierT']: 'infection-states.CarrierT', + ['compartments.CarrierTV1']: 'infection-states.CarrierTV1', + ['compartments.CarrierTV2']: 'infection-states.CarrierTV2', + ['compartments.CarrierV1']: 'infection-states.CarrierV1', + ['compartments.CarrierV2']: 'infection-states.CarrierV2', + ['compartments.SusceptibleV1']: 'infection-states.SusceptibleV1', + ['compartments.SusceptibleV2']: 'infection-states.SusceptibleV2', + ['tooltip']: 'infection-states.tooltip', + ['scenario-names.Baseline Scenario']: 'scenario-names.Baseline Scenario', + ['scenario-names.Summer 2021 Simulation 1']: 'scenario-names.Summer 2021 Simulation 1', + ['scenario-names.Summer 2021 Simulation 2']: 'scenario-names.Summer 2021 Simulation 2', + ['group-filters.categories.age']: 'group-filters.categories.age', + ['group-filters.categories.gender']: 'group-filters.categories.gender', + ['group-filters.groups.age_0']: 'group-filters.groups.age_0', + ['group-filters.groups.age_1']: 'group-filters.groups.age_1', + ['group-filters.groups.age_2']: 'group-filters.groups.age_2', + ['group-filters.groups.age_3']: 'group-filters.groups.age_3', + ['group-filters.groups.age_4']: 'group-filters.groups.age_4', + ['group-filters.groups.age_5']: 'group-filters.groups.age_5', + ['group-filters.groups.total']: 'group-filters.groups.total', + ['group-filters.groups.female']: 'group-filters.groups.female', + ['group-filters.groups.male']: 'group-filters.groups.male', + ['group-filters.groups.nonbinary']: 'group-filters.groups.nonbinary', + }, + }; + }, [formatNumber]); + + // This effect updates the group filters in the state whenever they change. + useEffect(() => { + dispatch(setGroupFilters(groupFilters)); + }, [groupFilters, dispatch]); + + // This effect updates the compartments in the state whenever the simulation model data changes. + useEffect(() => { + if (simulationModelData) { + const {compartments} = simulationModelData; + dispatch(setCompartments(compartments)); + } + }, [simulationModelData, dispatch]); + + // This effect updates the selected scenario in the state whenever it changes. + useEffect(() => { + dispatch(selectScenario(selectedScenario)); + }, [selectedScenario, dispatch]); + + // This effect updates the active scenario in the state whenever the active scenarios change. + useEffect(() => { + if (activeScenarios?.length == 0) dispatch(setActiveScenario(null)); + else dispatch(setActiveScenario(activeScenarios)); + }, [activeScenarios, dispatch]); + + // This effect updates the selected compartment in the state whenever it changes. + useEffect(() => { + dispatch(selectCompartment(selectedCompartment)); + }, [dispatch, selectedCompartment]); + + // This effect updates the start date in the state whenever the reference day changes. + useEffect(() => { + if (startDay) { + dispatch(setStartDate(dateToISOString(new Date(startDay)))); + } + }, [startDay, dispatch]); + + /* + * This useEffect hook is utilized to adapt the format of the scenario simulation & case data. + * This effect takes the original data, provided by the ESID API through the context and transforms it, + * ensuring it conforms to the new format required by the generalized Scenario cards. + */ + useEffect(() => { + setCardValues({ + '0': { + compartmentValues: + caseScenarioData && caseScenarioData.results.length > 0 ? caseScenarioData.results[0].compartments : null, + startValues: startValues, + }, + '1': { + compartmentValues: + scenarioSimulationDataFirstCard && scenarioSimulationDataFirstCard.results.length > 0 + ? scenarioSimulationDataFirstCard.results[0].compartments + : null, + startValues: startValues, + }, + '2': { + compartmentValues: + scenarioSimulationDataSecondCard && scenarioSimulationDataSecondCard.results.length > 0 + ? scenarioSimulationDataSecondCard.results[0].compartments + : null, + startValues: startValues, + }, + }); + }, [caseScenarioData, scenarioSimulationDataFirstCard, scenarioSimulationDataSecondCard, startValues]); + + /* + * This useEffect hook is used to adapting the data format for display in the filter appendage cards. + * This effect takes the original data, provided by the ESID API through the context and transforms it, + * ensuring it conforms to the new format required by the generalized Scenario cards. + */ + useEffect(() => { + if ( + !scenarioSimulationDataFirstCardFiltersValues || + scenarioSimulationDataFirstCardFiltersValues === undefined || + Object.keys(scenarioSimulationDataFirstCardFiltersValues).length === 0 || + !scenarioSimulationDataSecondCardFiltersValues || + scenarioSimulationDataSecondCardFiltersValues === undefined || + Object.keys(scenarioSimulationDataSecondCardFiltersValues).length === 0 + ) + return; + + const filterValue1: filterValue[] = Object.values(groupFilters!) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + const groupResponse = + scenarioSimulationDataFirstCardFiltersValues?.[groupFilter.name]?.results?.[0]?.compartments || null; + return { + filteredTitle: groupFilter.name, + filteredValues: groupResponse, + }; + }); + + const filterValue2: filterValue[] = Object.values(groupFilters!) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => { + const groupResponse = + scenarioSimulationDataSecondCardFiltersValues?.[groupFilter.name]?.results?.[0]?.compartments || null; + return { + filteredTitle: groupFilter.name, + filteredValues: groupResponse, + }; + }); + + setFilterValues({ + '1': filterValue1, + '2': filterValue2, + }); + }, [scenarioSimulationDataFirstCardFiltersValues, scenarioSimulationDataSecondCardFiltersValues, groupFilters]); + + // This effect calculates the start and end days from the case and scenario data. + useEffect(() => { + let minDate: string | null = null; + let maxDate: string | null = null; + + if (scenarioListData) { + const scenarios = scenarioListData.results.map((scenario) => ({ + id: scenario.id, + label: scenario.description, + })); + dispatch(setScenarios(scenarios)); + + if (scenarios.length > 0) { + // The simulation data (results) are only available one day after the start day onward. + const startDay = new Date(scenarioListData.results[0].startDay); + startDay.setUTCDate(startDay.getUTCDate() + 1); + + const endDay = new Date(startDay); + endDay.setDate(endDay.getDate() + scenarioListData.results[0].numberOfDays - 1); + + minDate = dateToISOString(startDay); + maxDate = dateToISOString(endDay); + + dispatch(setStartDate(minDate)); + } + } + + if (caseScenarioSimulationData) { + const entries = caseScenarioSimulationData.results.map((entry) => entry.day).sort((a, b) => a.localeCompare(b)); + if (entries) { + const firstCaseDataDay = entries[0]; + if (!minDate) { + minDate = firstCaseDataDay; + dispatch(setStartDate(minDate)); + } else { + minDate = minDate.localeCompare(firstCaseDataDay) < 0 ? minDate : firstCaseDataDay; + } + + const lastCaseDataDay = entries.slice(-1)[0]; + if (!maxDate) { + maxDate = lastCaseDataDay; + } else { + maxDate = maxDate.localeCompare(lastCaseDataDay) > 0 ? maxDate : lastCaseDataDay; + } + } + } + + if (minDate && maxDate) { + dispatch(setMinMaxDates({minDate, maxDate})); + } + }, [activeScenarios, scenarioListData, dispatch, caseScenarioSimulationData]); + + /* + * This useEffect hook is utilized to enable the connection between the dashed border line of the box + * which contains the reference day and the compartments and the line in the line chart. + */ + useEffect(() => { + const x = resizeBoundingRect?.x ?? 0; + const w = resizeBoundingRect?.width ?? 0; + dispatch(setReferenceDayTop(x + w)); + }, [dispatch, resizeBoundingRect]); + + return ( + +
+ + + + state.dataSelection.minDate)} + maxDate={useAppSelector((state) => state.dataSelection.maxDate)} + /> + + + + + compartmentsMemo.length < 5} + handleClick={() => { + if (compartments.indexOf(selectedCompartment) >= 4) { + setSelectedCompartment('Infected'); + } + dispatch(toggleCompartmentExpansion()); + setCompartmentsExpanded(!compartmentsExpanded); + }} + isExpanded={compartmentsExpanded} + /> + + + + + + {groupCategories && groupCategories.results && groupSubCategories && groupSubCategories.results && ( + + )} + +
+
+ ); +} diff --git a/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx b/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx deleted file mode 100644 index 342f5b3a..00000000 --- a/frontend/src/components/ScenarioContainer/ScenarioContainer.tsx +++ /dev/null @@ -1,375 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {Box, darken, useTheme} from '@mui/material'; -import {Dictionary, Scenario, cardValue, filterValue} from '../../types/Cardtypes'; -import CardContainer from '../CardsComponents/CardContainer'; -import FilterDialogContainer from '../FilterComponents/FilterDialogContainer'; -import {useContext, useEffect, useMemo, useState} from 'react'; -import {GroupFilter} from '../../types/Filtertypes'; -import CompartmentsRows from '../CompartmentsComponents/CompartmentsRows'; -import GeneralButton from '../GeneralButtonComponents/GeneralButton'; -import ReferenceDatePicker from '../ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; -import {NumberFormatter} from 'util/hooks'; -import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from 'store/hooks'; -import { - selectCompartment, - selectScenario, - setActiveScenario, - setGroupFilters, - setMinMaxDates, - setStartDate, - toggleCompartmentExpansion, - toggleScenario, -} from 'store/DataSelectionSlice'; -import {dateToISOString} from 'util/util'; -import {DataContext} from 'DataContext'; -import {ScrollSync} from 'react-scroll-sync'; -import {setCompartments, setScenarios} from 'store/ScenarioSlice'; -import {useBoundingclientrectRef} from 'rooks'; -import {setReferenceDayTop} from 'store/LayoutSlice'; -import React from 'react'; - -interface ScenarioContainerProps { - minCompartmentsRows?: number; - maxCompartmentsRows?: number; -} - -export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartmentsRows = 6}: ScenarioContainerProps) { - const {t} = useTranslation(); - const dispatch = useAppDispatch(); - const {i18n} = useTranslation(); - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - const theme = useTheme(); - const context = useContext(DataContext); - - const storeGroupFilters = useAppSelector((state) => state.dataSelection.groupFilters); - const storeCompartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const storeActiveScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); - const storeSelectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const scenariosState = useAppSelector((state) => state.scenarioList.scenarios); - const compartments = useAppSelector((state) => state.scenarioList.compartments); - const storeSelectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const storeReferenceDay = useAppSelector((state) => state.dataSelection.simulationStart); - - const [cardValues, setCardValues] = useState | undefined>(); - const [filterValues, setFilterValues] = useState | undefined>(); - const [groupFilters, setgroupFilters] = useState | undefined>(storeGroupFilters); - const [compartmentsExpanded, setCompartmentsExpanded] = useState(storeCompartmentsExpanded ?? false); - const [activeScenarios, setActiveScenarios] = useState(storeActiveScenarios); - const [selectedScenario, setSelectedScenario] = useState(storeSelectedScenario ?? 0); - const [selectedCompartment, setSelectedCompartment] = useState(storeSelectedCompartment ?? 'Infected'); - const [referenceDay, setReferenceDay] = useState(storeReferenceDay ?? '06-07-2021'); - const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); - - const scenarios: Scenario[] = useMemo(() => { - const aux: Scenario[] = []; - aux.push({ - id: 0, - label: t(`Baseline Scenario`), - }); - for (const scenarioKey in scenariosState) { - aux.push(scenariosState[scenarioKey]); - } - return aux; - }, [scenariosState, t]); - - const compartmentsMemo = useMemo(() => { - return compartments; - }, [compartments]); - - useEffect(() => { - dispatch(setGroupFilters(groupFilters)); - }, [groupFilters, dispatch]); - - useEffect(() => { - if (context.simulationModelData) { - const {compartments} = context.simulationModelData; - dispatch(setCompartments(compartments)); - } - }, [context.simulationModelData, dispatch]); - - useEffect(() => { - dispatch(selectScenario(selectedScenario)); - }, [selectedScenario, dispatch]); - - useEffect(() => { - dispatch(setActiveScenario(activeScenarios)); - }, [activeScenarios, dispatch]); - - useEffect(() => { - dispatch(selectCompartment(selectedCompartment)); - }, [dispatch, selectedCompartment]); - - useEffect(() => { - setCardValues({ - '0': { - compartmentValues: - context.caseScenarioData && context.caseScenarioData.results.length > 0 - ? context.caseScenarioData.results[0].compartments - : null, - startValues: context.startValues, - }, - '1': { - compartmentValues: - context.scenarioSimulationDataFirstCard && context.scenarioSimulationDataFirstCard.results.length > 0 - ? context.scenarioSimulationDataFirstCard.results[0].compartments - : null, - startValues: context.startValues, - }, - '2': { - compartmentValues: - context.scenarioSimulationDataSecondCard && context.scenarioSimulationDataSecondCard.results.length > 0 - ? context.scenarioSimulationDataSecondCard.results[0].compartments - : null, - startValues: context.startValues, - }, - }); - }, [ - context.caseScenarioData, - context.scenarioSimulationDataFirstCard, - context.scenarioSimulationDataSecondCard, - context.startValues, - ]); - - useEffect(() => { - if ( - !context.scenarioSimulationDataFirstCardFiltersValues || - context.scenarioSimulationDataFirstCardFiltersValues === undefined || - Object.keys(context.scenarioSimulationDataFirstCardFiltersValues).length === 0 || - !context.scenarioSimulationDataSecondCardFiltersValues || - context.scenarioSimulationDataSecondCardFiltersValues === undefined || - Object.keys(context.scenarioSimulationDataSecondCardFiltersValues).length === 0 - ) - return; - - const filterValue1: filterValue[] = Object.values(groupFilters!) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => { - const groupResponse = - context.scenarioSimulationDataFirstCardFiltersValues?.[groupFilter.name]?.results?.[0]?.compartments || null; - return { - filteredTitle: groupFilter.name, - filteredValues: groupResponse, - }; - }); - - const filterValue2: filterValue[] = Object.values(groupFilters!) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => { - const groupResponse = - context.scenarioSimulationDataSecondCardFiltersValues?.[groupFilter.name]?.results?.[0]?.compartments || null; - return { - filteredTitle: groupFilter.name, - filteredValues: groupResponse, - }; - }); - - setFilterValues({ - '1': filterValue1, - '2': filterValue2, - }); - }, [ - context.scenarioSimulationDataFirstCardFiltersValues, - context.scenarioSimulationDataSecondCardFiltersValues, - groupFilters, - ]); - - useEffect(() => { - if (referenceDay) { - dispatch(setStartDate(dateToISOString(new Date(referenceDay)))); - } - }, [referenceDay, dispatch]); - - useEffect(() => { - let minDate: string | null = null; - let maxDate: string | null = null; - - if (context.scenarioListData) { - const scenarios = context.scenarioListData.results.map((scenario) => ({ - id: scenario.id, - label: scenario.description, - })); - dispatch(setScenarios(scenarios)); - - //activate all scenarios initially - if (!activeScenarios) { - scenarios.forEach((scenario) => { - dispatch(toggleScenario(scenario.id)); - }); - } - - if (scenarios.length > 0) { - // The simulation data (results) are only available one day after the start day onward. - const startDay = new Date(context.scenarioListData.results[0].startDay); - startDay.setUTCDate(startDay.getUTCDate() + 1); - - const endDay = new Date(startDay); - endDay.setDate(endDay.getDate() + context.scenarioListData.results[0].numberOfDays - 1); - - minDate = dateToISOString(startDay); - maxDate = dateToISOString(endDay); - - dispatch(setStartDate(minDate)); - } - } - - if (context.caseScenarioSimulationData) { - const entries = context.caseScenarioSimulationData.results - .map((entry) => entry.day) - .sort((a, b) => a.localeCompare(b)); - if (entries) { - const firstCaseDataDay = entries[0]; - if (!minDate) { - minDate = firstCaseDataDay; - dispatch(setStartDate(minDate)); - } else { - minDate = minDate.localeCompare(firstCaseDataDay) < 0 ? minDate : firstCaseDataDay; - } - - const lastCaseDataDay = entries.slice(-1)[0]; - if (!maxDate) { - maxDate = lastCaseDataDay; - } else { - maxDate = maxDate.localeCompare(lastCaseDataDay) > 0 ? maxDate : lastCaseDataDay; - } - } - } - - if (minDate && maxDate) { - dispatch(setMinMaxDates({minDate, maxDate})); - } - }, [activeScenarios, context.scenarioListData, dispatch, context.caseScenarioSimulationData]); - - useEffect(() => { - const x = resizeBoundingRect?.x ?? 0; - const w = resizeBoundingRect?.width ?? 0; - dispatch(setReferenceDayTop(x + w)); - }, [dispatch, resizeBoundingRect]); - - return ( - -
- - - - state.dataSelection.minDate)} - maxDate={useAppSelector((state) => state.dataSelection.maxDate)} - /> - - - - - compartmentsMemo.length < 5} - handleClick={() => { - if (compartments.indexOf(selectedCompartment) >= 4) { - setSelectedCompartment('Infected'); - } - dispatch(toggleCompartmentExpansion()); - setCompartmentsExpanded(!compartmentsExpanded); - }} - isExpanded={compartmentsExpanded} - localization={{}} - /> - - - - - - {context.groupCategories && - context.groupCategories.results && - context.groupSubCategories && - context.groupSubCategories.results && ( - - )} - -
-
- ); -} diff --git a/frontend/src/store/DataSelectionSlice.ts b/frontend/src/store/DataSelectionSlice.ts index 25ee70b5..3b17fa01 100644 --- a/frontend/src/store/DataSelectionSlice.ts +++ b/frontend/src/store/DataSelectionSlice.ts @@ -40,7 +40,7 @@ export interface DataSelection { const initialState: DataSelection = { district: {ags: '00000', name: '', type: ''}, date: null, - scenario: null, + scenario: 0, compartment: null, compartmentsExpanded: null, activeScenarios: [0], @@ -59,7 +59,8 @@ export const DataSelectionSlice = createSlice({ initialState, reducers: { setActiveScenario(state, action: PayloadAction) { - state.activeScenarios = action.payload; + if (action.payload) state.activeScenarios = action.payload; + else state.activeScenarios = null; }, setGroupFilters(state, action: PayloadAction | undefined>) { state.groupFilters = action.payload; @@ -104,7 +105,8 @@ export const DataSelectionSlice = createSlice({ } }, selectScenario(state, action: PayloadAction) { - state.scenario = action.payload; + if (action.payload != null) state.scenario = action.payload; + else state.scenario = null; }, toggleScenario(state, action: PayloadAction) { if (!state.activeScenarios) { From 82a2353c1761acf8d88bd16b60f082f631a6ea40 Mon Sep 17 00:00:00 2001 From: Serloni Date: Mon, 10 Jun 2024 15:13:46 +0200 Subject: [PATCH 023/119] :memo: refactor some part of the scenario components add also docs and fix major bug and also add the possibility to decide how many lines to show in the card when are folded and when are expanded --- frontend/src/components/LineChartContainer.tsx | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index f2948181..9919e64b 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -48,16 +48,6 @@ export default function LineChartContainer() { [tBackend] ); - const localization = useMemo(() => { - return { - formatNumber: (value: number) => value.toLocaleString(), - customLang: 'backend', - overrides: { - [`compartments.${selectedCompartment}`]: `infection-states.${selectedCompartment}`, - }, - }; - }, [selectedCompartment]); - useEffect(() => { dispatch(selectDate(selectedDate)); }, [selectedDate, dispatch]); From f473590e02927950c019b62b8904e9e99d36a928 Mon Sep 17 00:00:00 2001 From: Serloni Date: Mon, 10 Jun 2024 15:21:26 +0200 Subject: [PATCH 024/119] :green_heart: fix the test according to the new version in order to make the CI build --- frontend/src/__tests__/store/DataSelectionSlice.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/__tests__/store/DataSelectionSlice.test.ts b/frontend/src/__tests__/store/DataSelectionSlice.test.ts index 31446be4..6481c9f6 100644 --- a/frontend/src/__tests__/store/DataSelectionSlice.test.ts +++ b/frontend/src/__tests__/store/DataSelectionSlice.test.ts @@ -16,7 +16,7 @@ describe('DataSelectionSlice', () => { const initialState = { district: {ags: '00000', name: '', type: ''}, date: null, - scenario: null, + scenario: 0, compartment: null, compartmentsExpanded: null, activeScenarios: [0], From 508a6ca9f4fd2005e67cedea01fa766ae60045c0 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 11 Jun 2024 16:11:45 +0200 Subject: [PATCH 025/119] :wrench: Add tests for new components, removed old components and refactored new components props --- .../__tests__/components/LineChart.test.tsx | 16 + .../components/Sidebar/HeatLegend.test.tsx | 36 + .../components/Sidebar/HeatMap.test.tsx | 2 + .../components/Sidebar/LockMaxValue.test.tsx | 44 + .../LineChartComponents/LineChart.tsx | 60 +- .../src/components/Sidebar/HeatLegend.tsx | 78 -- .../src/components/Sidebar/HeatLegendEdit.tsx | 216 ----- .../Sidebar/MapComponents/HeatLegend.tsx | 4 +- frontend/src/components/SimulationChart.tsx | 816 ------------------ 9 files changed, 131 insertions(+), 1141 deletions(-) create mode 100644 frontend/src/__tests__/components/LineChart.test.tsx create mode 100644 frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx create mode 100644 frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx delete mode 100644 frontend/src/components/Sidebar/HeatLegend.tsx delete mode 100644 frontend/src/components/Sidebar/HeatLegendEdit.tsx delete mode 100644 frontend/src/components/SimulationChart.tsx diff --git a/frontend/src/__tests__/components/LineChart.test.tsx b/frontend/src/__tests__/components/LineChart.test.tsx new file mode 100644 index 00000000..b67ba81b --- /dev/null +++ b/frontend/src/__tests__/components/LineChart.test.tsx @@ -0,0 +1,16 @@ +import LineChart from 'components/LineChartComponents/LineChart'; +import React from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; + +describe('LineChart', () => { + test('renders LineChart', () => { + render( +
+ {}} caseData={undefined} selectedCompartment={''} /> +
+ ); + + expect(screen.getByTestId('chartdiv')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx new file mode 100644 index 00000000..f1a7a047 --- /dev/null +++ b/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useMemo} from 'react'; +import {describe, test, expect} from 'vitest'; +import {render} from '@testing-library/react'; +import {ThemeProvider} from '@mui/system'; +import Theme from 'util/Theme'; +import HeatLegend from 'components/Sidebar/MapComponents/HeatLegend'; + +const HeatLegendTest = () => { + const legend = useMemo(() => { + return { + name: 'uninitialized', + isNormalized: true, + steps: [ + {color: 'rgb(255,255,255)', value: 0}, + {color: 'rgb(255,255,255)', value: 1}, + ], + }; + }, []); + return ; +}; + +describe('HeatLegend', () => { + test('renders HeatLegend component', () => { + render( + + + + ); + + const canvasElement = document.querySelector('canvas'); + expect(canvasElement).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx index c6f80e3a..b35b7278 100644 --- a/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx @@ -116,6 +116,8 @@ describe('HeatMap', () => { ); + screen.debug(); + expect(screen.getByTestId('map')).toBeInTheDocument(); }); }); diff --git a/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx new file mode 100644 index 00000000..f8e26b29 --- /dev/null +++ b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx @@ -0,0 +1,44 @@ +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/system'; +import LockMaxValue from 'components/Sidebar/MapComponents/LockMaxValue'; +import {fireEvent, render, screen} from '@testing-library/react'; +import React from 'react'; +import {describe, test, vi, expect} from 'vitest'; + +describe('LockMaxValue', () => { + test('renders LockMaxValue component', () => { + render( + + {}} fixedLegendMaxValue={null} aggregatedMax={0} /> + + ); + + screen.getByLabelText('heatlegend.lock'); + }); + + test('calls setFixedLegendMaxValue when lock is clicked', () => { + const setFixedLegendMaxValueMock = vi.fn(); + render( + + + + ); + + const lock = screen.getByRole('button'); + + const openLock = screen.getByTestId('LockOpenIcon'); + const closedLock = screen.queryByTestId('LockIcon'); + + screen.debug(); + expect(openLock).toBeInTheDocument(); + expect(closedLock).not.toBeInTheDocument(); + + fireEvent.click(lock); + + expect(setFixedLegendMaxValueMock).toHaveBeenCalledWith(10); + }); +}); diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 7e92d4c9..177d544a 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -43,7 +43,7 @@ interface LineChartProps { setSelectedDate: (date: string) => void; setReferenceDayBottom?: (docPos: number) => void; simulationData?: ({day: string; value: number}[] | null)[] | null; - simulationDataChartName: (scenario: Scenario) => string; + simulationDataChartName?: (scenario: Scenario) => string; caseData: {day: string; value: number}[] | undefined; percentileData?: {day: string; value: number}[][] | null; groupFilterData?: Dictionary<{day: string; value: number}[]> | null; @@ -53,7 +53,7 @@ interface LineChartProps { activeScenarios?: number[] | null; referenceDay?: string | null; selectedCompartment: string; - scenarioList: ScenarioList; + scenarioList?: ScenarioList | null; groupFilterList?: Dictionary | null; exportedFileName?: string; localization?: Localization; @@ -66,7 +66,7 @@ export default function LineChart({ setReferenceDayBottom = () => {}, simulationData = null, caseData, - simulationDataChartName, + simulationDataChartName = () => '', percentileData = null, groupFilterData = null, minDate = null, @@ -75,7 +75,7 @@ export default function LineChart({ activeScenarios = null, referenceDay = null, selectedCompartment, - scenarioList, + scenarioList = null, groupFilterList = null, exportedFileName = 'Data', localization = { @@ -302,31 +302,33 @@ export default function LineChart({ }); // Add series for each scenario - Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `${chartId}_${scenarioId}`, - name: simulationDataChartName(scenario), - valueXField: 'date', - valueYField: scenarioId, - // Prevent data points from connecting across gaps in the data - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color - tooltip: Tooltip.new(root, { - labelText: `[bold ${ - theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0] - }]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, - }), - stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, + if (scenarioList) { + Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { + const series = chart.series.push( + LineSeries.new(root, { + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_${scenarioId}`, + name: simulationDataChartName(scenario), + valueXField: 'date', + valueYField: scenarioId, + // Prevent data points from connecting across gaps in the data + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color + tooltip: Tooltip.new(root, { + labelText: `[bold ${ + theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0] + }]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, + }), + stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), + }) + ); + series.strokes.template.setAll({ + strokeWidth: 2, + }); }); - }); + } // Add series for groupFilter (if there are any) if (groupFilterList && selectedScenario) { @@ -787,7 +789,7 @@ export default function LineChart({ if (activeScenarios) { activeScenarios.forEach((scenarioId) => { // Skip case data (already added) - if (scenarioId === 0 || !scenarioId || !scenarioList.scenarios[scenarioId]) { + if (scenarioId === 0 || !scenarioId || !scenarioList || !scenarioList.scenarios[scenarioId]) { return; } diff --git a/frontend/src/components/Sidebar/HeatLegend.tsx b/frontend/src/components/Sidebar/HeatLegend.tsx deleted file mode 100644 index 65f7347b..00000000 --- a/frontend/src/components/Sidebar/HeatLegend.tsx +++ /dev/null @@ -1,78 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useLayoutEffect} from 'react'; -import {useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import * as am5 from '@amcharts/amcharts5'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from 'util/hooks'; -import {HeatmapLegend} from '../../types/heatmapLegend'; - -export default function HeatLegend( - props: Readonly<{ - // add is_dynamic/absolute? - legend: HeatmapLegend; - exposeLegend: (legend: am5.HeatLegend | null) => void; - min: number; - max: number; - displayText: boolean; - id: string; - }> -): JSX.Element { - const id = props.id + String(Date.now() + Math.random()); // "guarantee" unique id - const {i18n} = useTranslation(); - const {formatNumber} = NumberFormatter(i18n.language, 3, 8); - const theme = useTheme(); - - useLayoutEffect(() => { - const root = am5.Root.new(id); - const heatLegend = root.container.children.push( - am5.HeatLegend.new(root, { - orientation: 'horizontal', - startValue: props.min, - startText: props.displayText ? formatNumber(props.min) : ' ', - endValue: props.max, - endText: props.displayText ? formatNumber(props.max) : ' ', - // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color - startColor: am5.color(theme.palette.background.paper), - endColor: am5.color(theme.palette.background.paper), - }) - ); - - // compile stop list - const stoplist: {color: am5.Color; opacity: number; offset: number}[] = []; - props.legend.steps.forEach((item) => { - stoplist.push({ - color: am5.color(item.color), - // opacity of the color between 0..1 - opacity: 1, - // offset is stop position normalized to 0..1 unless already normalized - offset: props.legend.isNormalized ? item.value : (item.value - props.min) / (props.max - props.min), - }); - }); - heatLegend.markers.template.adapters.add('fillGradient', (gradient) => { - gradient?.set('stops', stoplist); - return gradient; - }); - - // expose Legend element to District map (for tooltip on event) - props.exposeLegend(heatLegend); - - return () => { - root.dispose(); - props.exposeLegend(null); - }; - }, [props, formatNumber, theme, id]); - - return ( - - ); -} diff --git a/frontend/src/components/Sidebar/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/HeatLegendEdit.tsx deleted file mode 100644 index 4fa6d936..00000000 --- a/frontend/src/components/Sidebar/HeatLegendEdit.tsx +++ /dev/null @@ -1,216 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react'; -import {useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import FormControl from '@mui/material/FormControl'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import MenuItem from '@mui/material/MenuItem'; -import Select, {SelectChangeEvent} from '@mui/material/Select'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; -import EditIcon from '@mui/icons-material/Edit'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {selectHeatmapLegend} from '../../store/UserPreferenceSlice'; -import {HeatmapLegend} from '../../types/heatmapLegend'; -import {useTranslation} from 'react-i18next'; -import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; - -/** - * This component displays an edit button to access a modal. In the modal you can edit the heatmap legend. - */ -export default function HeatLegendEdit(): JSX.Element { - const dispatch = useAppDispatch(); - const activeScenario = useAppSelector((state) => state.dataSelection.scenario); - const legend = useAppSelector((state) => state.userPreference.selectedHeatmap); - const theme = useTheme(); - const {t} = useTranslation(); - - // This contains all legends using the default colors. - const defaultLegends = useDefaultLegends(); - - // This contains all legends from the presets file. - const [heatmapLegends, setHeatmapLegends] = useState>([]); - - // This contains the default legend and the presets and is used for displaying the list to the user. - const [availablePresets, setAvailablePresets] = useState>([]); - - // modal state - const [heatLegendEditOpen, setHeatLegendEditOpen] = React.useState(false); - - // Try to select a heatlegend using the given name. - const selectLegendByName = useCallback( - (name: string) => { - const preset = availablePresets.find((preset) => preset.name === name); - if (preset) { - dispatch(selectHeatmapLegend({legend: preset})); - } - }, - [dispatch, availablePresets] - ); - - const handleChange = (event: SelectChangeEvent) => selectLegendByName(event.target.value); - - // This effect loads the presets file, once the modal is opened the first time. - useEffect(() => { - if (heatmapLegends.length === 0 && heatLegendEditOpen) { - fetch(legendPresets, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - (presetList: HeatmapLegend[]) => { - presetList.forEach((legend) => { - if (legend.isNormalized) { - legend.steps.forEach((step) => { - //set step to normalized values - step.value = step.value / legend.steps[legend.steps.length - 1].value; - }); - } - }); - - setHeatmapLegends(presetList); - }, - // Reject Promise - () => { - console.warn('Did not receive proper heatmap legend presets'); - } - ); - } - }, [setHeatmapLegends, heatmapLegends, heatLegendEditOpen]); - - // This effect builds the list of available presets from the "defaultLegends" and "heatmapLegends". - useEffect(() => { - if (activeScenario === null || defaultLegends.length === 0) { - return; - } - - const scenarioDefault = defaultLegends[activeScenario % defaultLegends.length]; - const legends = [...heatmapLegends]; - legends.unshift(scenarioDefault); - - // In the case, where a non default legend is selected, but the legends haven't been loaded from file we add the - // legend to the selection. - if (legend.name !== 'Default' && heatmapLegends.length === 0) { - legends.push(legend); - } - - setAvailablePresets(legends); - }, [defaultLegends, heatmapLegends, activeScenario, legend]); - - // This effect updates the selected legend, if a default legend is selected and the scenario changes. - useEffect(() => { - if (activeScenario === null) { - return; - } - - if (legend.name !== 'Default' && legend.name !== 'uninitialized') { - return; - } - - selectLegendByName('Default'); - }, [activeScenario, legend, selectLegendByName]); - - return ( - <> - - setHeatLegendEditOpen(true)} - aria-label={t('heatlegend.edit')} - size='small' - sx={{padding: theme.spacing(0), marginBottom: theme.spacing(1)}} - > - - - - setHeatLegendEditOpen(false)}> - - - - - - - - - - - ); -} - -function LegendGradient(props: Readonly<{legend: HeatmapLegend}>): JSX.Element { - const divRef = useRef(null); - - useLayoutEffect(() => { - if (!divRef.current) { - return; - } - - const gradient = props.legend.steps - .map(({color, value}) => { - return `${color} ${Math.round(value * 100)}%`; - }) - .join(', '); - - divRef.current.style.background = `linear-gradient(90deg, ${gradient})`; - }, [props.legend]); - - return ( -
- ); -} - -/** - * This hook generates the heatmap legends for all scenarios using the current theme. - */ -function useDefaultLegends(): Array { - const theme = useTheme(); - const [defaultLegends, setDefaultLegends] = useState>([]); - - useEffect(() => { - const legends: Array = []; - const stepCount = theme.custom.scenarios[0].length - 1; - for (const element of theme.custom.scenarios) { - const steps = []; - for (let j = 0; j < stepCount; j++) { - steps.push({color: element[stepCount - 1 - j], value: j / (stepCount - 1)}); - } - legends.push({name: 'Default', isNormalized: true, steps}); - } - - setDefaultLegends(legends); - }, [theme, setDefaultLegends]); - - return defaultLegends; -} diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 823fa594..03b3b2dd 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -11,7 +11,7 @@ import {Localization} from 'types/localization'; interface HeatProps { legend: HeatmapLegend; - exposeLegend: (legend: am5.HeatLegend | null) => void; + exposeLegend?: (legend: am5.HeatLegend | null) => void; min: number; max: number; displayText: boolean; @@ -22,7 +22,7 @@ interface HeatProps { export default function HeatLegend({ legend, - exposeLegend, + exposeLegend = () => {}, min, max, displayText, diff --git a/frontend/src/components/SimulationChart.tsx b/frontend/src/components/SimulationChart.tsx deleted file mode 100644 index c097a321..00000000 --- a/frontend/src/components/SimulationChart.tsx +++ /dev/null @@ -1,816 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useRef} from 'react'; -import {Root} from '@amcharts/amcharts5/.internal/core/Root'; -import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; -import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; -import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; -import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; -import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; -import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; -import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; -import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; -import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; -import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; -import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; -import am5locales_en_US from '@amcharts/amcharts5/locales/en_US'; -import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; -import {useAppDispatch, useAppSelector} from '../store/hooks'; -import {darken, useTheme} from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import {selectDate} from '../store/DataSelectionSlice'; -import {useGetCaseDataByDistrictQuery} from '../store/services/caseDataApi'; -import {dateToISOString} from 'util/util'; -import { - PercentileDataByDay, - useGetMultipleSimulationDataByNodeQuery, - useGetPercentileDataQuery, -} from 'store/services/scenarioApi'; -import {useTranslation} from 'react-i18next'; -import LoadingContainer from './shared/LoadingContainer'; -import {useGetMultipleGroupFilterDataQuery} from 'store/services/groupApi'; -import {GroupData} from 'types/group'; -import {setReferenceDayBottom} from '../store/LayoutSlice'; - -/** - * React Component to render the Simulation Chart Section - * @returns {JSX.Element} JSX Element to render the scenario chart container and the scenario graph within. - */ -export default function SimulationChart(): JSX.Element { - const {t, i18n} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const scenarioList = useAppSelector((state) => state.scenarioList); - const selectedDistrict = useAppSelector((state) => state.dataSelection.district.ags); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const selectedDate = useAppSelector((state) => state.dataSelection.date); - const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); - const minDate = useAppSelector((state) => state.dataSelection.minDate); - const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - const dispatch = useAppDispatch(); - - const {data: groupFilterData} = useGetMultipleGroupFilterDataQuery( - groupFilterList && selectedScenario && selectedDistrict && selectedCompartment - ? Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => { - return { - id: selectedScenario, - node: selectedDistrict, - compartment: selectedCompartment, - groupFilter: groupFilter, - }; - }) - : [] - ); - - const {data: caseData, isFetching: caseDataFetching} = useGetCaseDataByDistrictQuery( - { - node: selectedDistrict, - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: !selectedCompartment} - ); - - const {data: simulationData, isFetching: simulationFetching} = useGetMultipleSimulationDataByNodeQuery( - { - // Filter only scenarios (scenario id 0 is case data) - ids: activeScenarios ? activeScenarios.filter((s) => s !== 0 && scenarioList.scenarios[s]) : [], - node: selectedDistrict, - groups: ['total'], - compartments: [selectedCompartment ?? ''], - }, - {skip: !selectedCompartment} - ); - - const {data: percentileData} = useGetPercentileDataQuery( - { - id: selectedScenario as number, - node: selectedDistrict, - groups: ['total'], - compartment: selectedCompartment as string, - }, - {skip: selectedScenario === null || selectedScenario === 0 || !selectedCompartment} - ); - - const rootRef = useRef(null); - const chartRef = useRef(null); - - const setReferenceDayX = useCallback(() => { - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - const midday = new Date(referenceDay).setHours(12, 0, 0); - - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); - const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); - const docPosition = rootRef.current.rootPointToDocument(globalPosition).x; - dispatch(setReferenceDayBottom(docPosition)); - }, [dispatch, referenceDay]); - - // Effect to initialize root & chart - useEffect( - () => { - // Create root and chart - const root = Root.new('chartdiv'); - const chart = root.container.children.push( - XYChart.new(root, { - panX: false, - panY: false, - wheelX: 'panX', - wheelY: 'zoomX', - maxTooltipDistance: -1, - }) - ); - - // Set number formatter - root.numberFormatter.set('numberFormat', '#,###.'); - - // Create x-axis - const xAxis = chart.xAxes.push( - DateAxis.new(root, { - renderer: AxisRendererX.new(root, {}), - // Set base interval and aggregated intervals when the chart is zoomed out - baseInterval: {timeUnit: 'day', count: 1}, - gridIntervals: [ - {timeUnit: 'day', count: 1}, - {timeUnit: 'day', count: 3}, - {timeUnit: 'day', count: 7}, - {timeUnit: 'month', count: 1}, - {timeUnit: 'month', count: 3}, - {timeUnit: 'year', count: 1}, - ], - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - // Change axis renderer to have ticks/labels on day center - const xRenderer = xAxis.get('renderer'); - xRenderer.ticks.template.setAll({ - location: 0.5, - }); - - // Create y-axis - chart.yAxes.push( - ValueAxis.new(root, { - renderer: AxisRendererY.new(root, {}), - // Fix lower end to 0 - min: 0, - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - - // Add cursor - chart.set( - 'cursor', - XYCursor.new(root, { - // Only allow zooming along x-axis - behavior: 'zoomX', - // Snap cursor to xAxis ticks - xAxis: xAxis, - }) - ); - - // Add event on double click to select date - chart.events.on('click', (ev) => { - // Get date from axis position from cursor position - const date = xAxis.positionToDate( - xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) - ); - // Remove time information to only have a date - date.setHours(0, 0, 0, 0); - // Set date in store - dispatch(selectDate(dateToISOString(date))); - }); - - // Set refs to be used in other effects - rootRef.current = root; - chartRef.current = chart; - - // Clean-up before re-running this effect - return () => { - // Dispose old root and chart before creating a new instance - chartRef.current?.dispose(); - rootRef.current?.dispose(); - }; - }, - // This effect should only run once. dispatch should not change during runtime - [dispatch] - ); - - // Effect to change localization of chart if language changes - useEffect( - () => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current) { - return; - } - - // Set localization - rootRef.current.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; - - // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - xAxis.get('dateFormats', {day: ''})['day'] = t('dayFormat'); - xAxis.get('tooltipDateFormats', {day: ''})['day'] = t('dayFormat'); - // Fix first date of the month falling back to wrong format (also with fallback object) - xAxis.get('periodChangeDateFormats', {day: ''})['day'] = t('dayFormat'); - }, - // Re-run effect if language changes - [i18n.language, t] - ); - - // Effect to update min/max date. - useEffect(() => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current || !minDate || !maxDate) { - return; - } - - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - xAxis.set('min', new Date(minDate).setHours(0)); - xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); - }, [minDate, maxDate]); - - // Effect to add series to chart - useEffect( - () => { - // Skip if root or chart not initialized - if (!rootRef.current || !chartRef.current) { - return; - } - - const chart: XYChart = chartRef.current; - const root: Root = rootRef.current; - const xAxis: DateAxis = chart.xAxes.getIndex(0) as DateAxis; - const yAxis: ValueAxis = chart.yAxes.getIndex(0) as ValueAxis; - - // Add series for case data - const caseDataSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - // Case Data is always scenario id 0 - id: '0', - name: t('chart.caseData'), - valueXField: 'date', - valueYField: '0', - // Prevent data points from connecting across gaps in the data - connect: false, - stroke: color('#000'), - }) - ); - caseDataSeries.strokes.template.setAll({ - strokeWidth: 2, - }); - - // Add series for percentile area - const percentileSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: 'percentiles', - valueXField: 'date', - valueYField: 'percentileUp', - openValueYField: 'percentileDown', - connect: false, - // Percentiles are only visible if a scenario is selected and it is not case data - visible: selectedScenario !== null && selectedScenario > 0, - // Add fill color according to selected scenario (if selected scenario is set and it's not case data) - fill: - selectedScenario !== null && selectedScenario > 0 - ? color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]) - : undefined, - }) - ); - percentileSeries.strokes.template.setAll({ - strokeWidth: 0, - }); - percentileSeries.fills.template.setAll({ - fillOpacity: 0.3, - visible: true, - }); - - // Add series for each scenario - Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: scenarioId, - name: tBackend(`scenario-names.${scenario.label}`), - valueXField: 'date', - valueYField: scenarioId, - // Prevent data points from connecting across gaps in the data - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color - tooltip: Tooltip.new(root, { - labelText: `[bold ${theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]}]${tBackend( - `scenario-names.${scenario.label}` - )}:[/] {${scenarioId}}`, - }), - stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - }); - }); - - // Add series for groupFilter (if there are any) - if (groupFilterList && selectedScenario) { - // Define line style variants for groups - const groupFilterStrokes = [ - [2, 4], // dotted - [8, 4], // dashed - [8, 4, 2, 4], // dash-dotted - [8, 4, 2, 4, 2, 4], // dash-dot-dotted - ]; - // Loop through visible group filters - Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .forEach((groupFilter, i) => { - // Add series for each group filter - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `group-filter-${groupFilter.name}`, - name: groupFilter.name, - valueXField: 'date', - valueYField: groupFilter.name, - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) - tooltip: Tooltip.new(root, { - labelText: `[bold ${theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]}]${ - groupFilter.name - }:[/] {${groupFilter.name}}`, - }), - stroke: color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - // Loop through stroke list if group filters exceeds list length - strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], - }); - }); - } - - // Clean-up function - return () => { - // Remove all series - chart.series.clear(); - }; - }, - // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). - [scenarioList, groupFilterList, selectedScenario, t, tBackend, theme] - ); - - // Effect to hide disabled scenarios (and show them again if not hidden anymore) - useEffect( - () => { - const allSeries = chartRef.current?.series; - // Skip effect if chart is not initialized (contains no series yet) - if (!allSeries) return; - - // Set visibility of each series - allSeries.each((series) => { - // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) - const seriesID = series.get('id'); - // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list - if (seriesID === 'percentiles') { - return; - } - - if (!activeScenarios?.includes(Number(seriesID))) { - void series.hide(); - } else { - void series.show(); - } - }); - }, - // Re-run effect when the active scenario list changes - [activeScenarios] - ); - - // Effect to hide deviations if no scenario is selected - useEffect( - () => { - // Skip effect if chart is not initialized (contains no series yet) - if (!chartRef.current) return; - - // Find percentile series and only show it if there is a selected scenario - chartRef.current?.series.values - .filter((series) => series.get('id') === 'percentiles') - .map((percentileSeries) => { - if (selectedScenario === null || selectedScenario === 0) { - void percentileSeries.hide(); - } else { - void percentileSeries.show(); - } - }); - }, - // Re-run effect when the selected scenario changes - [selectedScenario] - ); - - // Effect to add Guide when date selected - useEffect(() => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !selectedDate) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: new Date(selectedDate).setHours(0, 0, 0), - // Make sure the time of the end date object is set to last second of day - endValue: new Date(selectedDate).setHours(23, 59, 59), - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(theme.palette.primary.main), - strokeOpacity: 1, - strokeWidth: 2, - location: 0.5, - visible: true, - }); - - // Set fill of range (rest of the day) - range.get('axisFill')?.setAll({ - fill: color(theme.palette.primary.main), - fillOpacity: 0.3, - visible: true, - }); - - // Set label for range - range.get('label')?.setAll({ - fill: color(theme.palette.primary.contrastText), - text: new Date(selectedDate).toLocaleDateString(i18n.language, { - year: 'numeric', - month: 'short', - day: '2-digit', - }), - location: 0.5, - background: RoundedRectangle.new(rootRef.current, { - fill: color(theme.palette.primary.main), - }), - // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels - layer: Number.MAX_VALUE, - }); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - }; - }, [selectedDate, theme, i18n.language]); - - // Effect to add guide for the reference day - useEffect( - () => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - const referenceDate = new Date(referenceDay); - const start = referenceDate.setHours(12, 0, 0); - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: start, - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(darken(theme.palette.divider, 0.25)), - strokeOpacity: 1, - strokeWidth: 2, - strokeDasharray: [6, 4], - }); - - setReferenceDayX(); - xAxis.onPrivate('selectionMin', setReferenceDayX); - xAxis.onPrivate('selectionMax', setReferenceDayX); - const resizeObserver = new ResizeObserver(setReferenceDayX); - resizeObserver.observe(rootRef.current.dom); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - resizeObserver.disconnect(); - }; - }, - // Re-run effect when selection changes (date/scenario/compartment/district) or when the active scenarios/filters change (theme and translation do not change after initialization) - [referenceDay, theme, i18n.language, setReferenceDayX] - ); - - // Effect to update Simulation and case data - useEffect(() => { - // Skip effect if chart is not initialized yet - if (!chartRef.current) return; - // Also skip if there is no scenario or compartment selected - if (selectedScenario === null || !selectedCompartment) return; - - // Create empty map to match dates - const dataMap = new Map(); - - // Cycle through scenarios - activeScenarios?.forEach((scenarioId) => { - simulationData?.[scenarioId]?.results.forEach(({day, compartments}) => { - // Add scenario data to map (upsert date entry) - dataMap.set(day, {...dataMap.get(day), [scenarioId]: compartments[selectedCompartment]}); - }); - - if (scenarioId === 0) { - // Add case data values (upsert date entry) - caseData?.results.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [0]: entry.compartments[selectedCompartment]}); - }); - } - }); - - if (percentileData) { - // Add 25th percentile data - percentileData[0].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileDown: entry.compartments[selectedCompartment]}); - }); - - // Add 75th percentile data - percentileData[1].results?.forEach((entry: PercentileDataByDay) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), percentileUp: entry.compartments[selectedCompartment]}); - }); - } - - // Add groupFilter data of visible filters - if (groupFilterList && groupFilterData) { - Object.values(groupFilterList).forEach((groupFilter) => { - if (groupFilter?.isVisible) { - // Check if data for filter is available (else report error) - if (groupFilterData[groupFilter.name]) { - groupFilterData[groupFilter.name].results.forEach((entry: GroupData) => { - dataMap.set(entry.day, { - ...dataMap.get(entry.day), - [groupFilter.name]: entry.compartments[selectedCompartment], - }); - }); - } else { - console.error(`ERROR: missing data for "${groupFilter.name}" filter`); - } - } - }); - } - - // Sort map by date - const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); - const data = Array.from(dataMapSorted).map(([day, data]) => { - return {date: day, ...data}; - }); - - // Put data into series - chartRef.current.series.each((series, i) => { - // Set-up data processors for first series (not needed for others since all use the same data) - if (i === 0) { - series.data.processor = DataProcessor.new(rootRef.current as Root, { - // Define date fields and their format (incoming format from API) - dateFields: ['date'], - dateFormat: 'yyyy-MM-dd', - }); - } - // Link each series to data - series.data.setAll(data); - }); - - // Set up HTML tooltip - const tooltipHTML = ` - ${'' /* Current Date and selected compartment name */} - {date.formatDate("${t('dateFormat')}")} (${tBackend( - `infection-states.${selectedCompartment}` - )}) - - ${ - // Table row for each series of an active scenario - chartRef.current.series.values - .filter((series) => activeScenarios?.includes(Number(series.get('id')))) - .map((series): string => { - /* Skip if series: - * - is hidden - * - is percentile series (which is added to the active scenario series) - * - is group filter series - */ - if ( - series.isHidden() || - series.get('id') === 'percentiles' || - series.get('id')?.startsWith('group-filter-') - ) { - return ''; - } - /* Skip with error if series does not have property: - * - id - * - name - * - valueYField - * - stroke - */ - if (!series.get('id') || !series.get('name') || !series.get('valueYField') || !series.get('stroke')) { - console.error( - 'ERROR: missing series property: ', - series.get('id'), - series.get('name'), - series.get('valueYField'), - series.get('stroke') - ); - return ''; - } - // Handle series normally - return ` - - - - ${ - // Skip percentiles if this series is not the selected scenario or case data - series.get('id') !== selectedScenario.toString() || selectedScenario === 0 - ? '' - : ` - - ` - } - - ${ - // Add group filters if this series is the selected scenario - series.get('id') !== selectedScenario.toString() - ? '' - : // Add table row for each active group filter - (chartRef.current as XYChart).series.values - .filter((s) => s.get('id')?.startsWith('group-filter-') && !s.isHidden()) - .map((groupFilterSeries) => { - return ` - - - - - `; - }) - .join('') - } - `; - }) - .join('') - } -
- ${series.get('name') as string} - - {${series.get('valueYField') as string}} - - [{percentileDown} - {percentileUp}] -
- ${groupFilterSeries.get('name') as string} - - {${groupFilterSeries.get('valueYField') as string}} -
- `; - - // Attach tooltip to series - chartRef.current.series.each((series) => { - const tooltip = Tooltip.new(rootRef.current as Root, { - labelHTML: tooltipHTML, - getFillFromSprite: false, - autoTextColor: false, - pointerOrientation: 'horizontal', - }); - - // Set tooltip default text color to theme primary text color - tooltip.label.setAll({ - fill: color(theme.palette.text.primary), - }); - - // Set tooltip background to theme paper - tooltip.get('background')?.setAll({ - fill: color(theme.palette.background.paper), - }); - - // Set tooltip - series.set('tooltip', tooltip); - }); - - // Collect data field names & order for data export - // Always export date and case data (and percentiles of selected scenario) - let dataFields = { - date: `${t('chart.date')}`, - caseData: `${t('chart.caseData')}`, - percentileUp: `${t('chart.percentileUp')}`, - percentileDown: `${t('chart.percentileDown')}`, - }; - // Always put date first, case data second - const dataFieldsOrder = ['date', 'caseData']; - // Loop through active scenarios (if there are any) - if (activeScenarios) { - activeScenarios.forEach((scenarioId) => { - // Skip case data (already added) - if (scenarioId === 0 || !scenarioList.scenarios[scenarioId]) { - return; - } - - // Add scenario label to export data field names - dataFields = { - ...dataFields, - [scenarioId]: scenarioList.scenarios[scenarioId].label, - }; - // Add scenario id to export data field order (for sorted export like csv) - dataFieldsOrder.push(`${scenarioId}`); - // If this is the selected scenario also add percentiles after it - if (scenarioId == selectedScenario) { - dataFieldsOrder.push('percentileDown', 'percentileUp'); - } - }); - } - - // Let's import this lazily, since it contains a lot of code. - import('@amcharts/amcharts5/plugins/exporting') - .then((module) => { - // Update export menu - module.Exporting.new(rootRef.current as Root, { - menu: module.ExportingMenu.new(rootRef.current as Root, {}), - filePrefix: 'Covid Simulation Data', - dataSource: data, - dateFields: ['date'], - dateFormat: `${t('dateFormat')}`, - dataFields: dataFields, - dataFieldsOrder: dataFieldsOrder, - }); - }) - .catch(() => console.warn("Couldn't load exporting functionality!")); - - setReferenceDayX(); - // Re-run this effect whenever the data itself changes (or any variable the effect uses) - }, [ - percentileData, - simulationData, - caseData, - groupFilterData, - activeScenarios, - selectedScenario, - scenarioList, - selectedCompartment, - theme, - groupFilterList, - t, - tBackend, - setReferenceDayX, - ]); - - return ( - - - - ); -} From ce1cd53adff136eb2ed054e5f744640dfa96bf5a Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 11 Jun 2024 16:31:32 +0200 Subject: [PATCH 026/119] Add Compliance information in missing files --- frontend/src/__tests__/components/LineChart.test.tsx | 3 +++ .../src/__tests__/components/Sidebar/LockMaxValue.test.tsx | 3 +++ 2 files changed, 6 insertions(+) diff --git a/frontend/src/__tests__/components/LineChart.test.tsx b/frontend/src/__tests__/components/LineChart.test.tsx index b67ba81b..946177db 100644 --- a/frontend/src/__tests__/components/LineChart.test.tsx +++ b/frontend/src/__tests__/components/LineChart.test.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import LineChart from 'components/LineChartComponents/LineChart'; import React from 'react'; import {render, screen} from '@testing-library/react'; diff --git a/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx index f8e26b29..b8f9e1c3 100644 --- a/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import Theme from 'util/Theme'; import {ThemeProvider} from '@mui/system'; import LockMaxValue from 'components/Sidebar/MapComponents/LockMaxValue'; From 73d468b57d0d186cd6623e7f3b231f7d6a6f6715 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 11 Jun 2024 16:44:11 +0200 Subject: [PATCH 027/119] :wrench: Remove debugs inside tests --- frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx | 2 -- frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx | 1 - 2 files changed, 3 deletions(-) diff --git a/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx index b35b7278..c6f80e3a 100644 --- a/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/HeatMap.test.tsx @@ -116,8 +116,6 @@ describe('HeatMap', () => { ); - screen.debug(); - expect(screen.getByTestId('map')).toBeInTheDocument(); }); }); diff --git a/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx index b8f9e1c3..4f3800a8 100644 --- a/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/LockMaxValue.test.tsx @@ -36,7 +36,6 @@ describe('LockMaxValue', () => { const openLock = screen.getByTestId('LockOpenIcon'); const closedLock = screen.queryByTestId('LockIcon'); - screen.debug(); expect(openLock).toBeInTheDocument(); expect(closedLock).not.toBeInTheDocument(); From e7089dd30759cf1f5d87eb327e6d9cd42047aa2c Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 12 Jun 2024 09:39:53 +0200 Subject: [PATCH 028/119] :memo: Add documentation for Linechart components --- .../LineChartComponents/LineChart.tsx | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 177d544a..3bca34ec 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -38,27 +38,68 @@ interface GroupFilter { } interface LineChartProps { + /** Optional unique identifier for the chart. */ chartId?: string; + + /** The currently selected date in the chart. */ selectedDate: string; + + /** Callback function to update the selected date. */ setSelectedDate: (date: string) => void; + + /** Optional callback function to get the top position of the reference date in the graph. */ setReferenceDayBottom?: (docPos: number) => void; + + /** Optional array of arrays containing simulation data points, where each data point includes a day and its corresponding value. The first element in the array should be null. */ simulationData?: ({day: string; value: number}[] | null)[] | null; + + /** Optional function to determine the chart name for a given simulation scenario. */ simulationDataChartName?: (scenario: Scenario) => string; + + /** Array of data points representing case data, where each data point includes a day and its corresponding value. */ caseData: {day: string; value: number}[] | undefined; + + /** Optional array of arrays containing percentile data points, where each data point includes a day and its corresponding value. */ percentileData?: {day: string; value: number}[][] | null; + + /** Optional dictionary of filtered group data points, where each entry includes a day and its corresponding value. */ groupFilterData?: Dictionary<{day: string; value: number}[]> | null; + + /** Optional minimum date for the chart. */ minDate?: string | null; + + /** Optional maximum date for the chart. */ maxDate?: string | null; + + /** Optional currently selected scenario identifier. */ selectedScenario?: number | null; + + /** Optional array of active scenario identifiers. */ activeScenarios?: number[] | null; + + /** Optional reference day for the chart. */ referenceDay?: string | null; + + /** The currently selected compartment in the chart. */ selectedCompartment: string; + + /** Optional list of scenarios available for selection. */ scenarioList?: ScenarioList | null; + + /** Optional dictionary of group filter configurations. */ groupFilterList?: Dictionary | null; + + /** Optional name for the exported file. */ exportedFileName?: string; + + /** Optional localization settings for the chart. */ localization?: Localization; } +/** + * React Component to render the Linechart Section + * @returns {JSX.Element} JSX Element to render the linechart container and the graphs within. + */ export default function LineChart({ chartId = 'chartdiv', selectedDate, From 88fd251a7ca55acbe82bf44e674d9fc4c4f2c510 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 12 Jun 2024 11:12:13 +0200 Subject: [PATCH 029/119] :heavy_check_mark: added tests for the new scenarios components --- frontend/src/App.scss | 2 +- .../CardsComponents/CardContainer.test.tsx | 138 ++++++ .../CardsComponents/DataCard.test.tsx | 179 ++++++++ .../Scenario/CompartmentList.test.tsx | 93 ---- .../CompartmentsRow.test.tsx | 73 ++++ .../CompartmentsRows.test.tsx | 56 +++ .../ExpandedButton.test.tsx | 45 ++ .../Scenario/ReferenceDatePicker.test.tsx | 73 ++++ .../components/shared/ConfirmDialog.test.tsx | 3 +- .../src/components/Scenario/CaseDataCard.tsx | 67 --- .../components/Scenario/CompartmentList.tsx | 293 ------------- frontend/src/components/Scenario/DataCard.tsx | 398 ------------------ .../src/components/Scenario/DataCardList.tsx | 161 ------- .../Scenario/GroupFilterAppendage.tsx | 93 ---- .../components/Scenario/GroupFilterCard.tsx | 161 ------- .../src/components/Scenario/ScenarioCard.tsx | 87 ---- frontend/src/components/Scenario/hooks.ts | 31 -- frontend/src/components/Scenario/index.tsx | 144 ------- .../CompartmentsRows.tsx | 1 + .../ExpandedButton.tsx} | 0 .../ReferenceDatePicker.tsx | 30 +- .../ScenarioComponents/ScenarioContainer.tsx | 3 +- frontend/src/store/DataSelectionSlice.ts | 1 - 23 files changed, 594 insertions(+), 1538 deletions(-) create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx delete mode 100644 frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx delete mode 100644 frontend/src/components/Scenario/CaseDataCard.tsx delete mode 100644 frontend/src/components/Scenario/CompartmentList.tsx delete mode 100644 frontend/src/components/Scenario/DataCard.tsx delete mode 100644 frontend/src/components/Scenario/DataCardList.tsx delete mode 100644 frontend/src/components/Scenario/GroupFilterAppendage.tsx delete mode 100644 frontend/src/components/Scenario/GroupFilterCard.tsx delete mode 100644 frontend/src/components/Scenario/ScenarioCard.tsx delete mode 100644 frontend/src/components/Scenario/hooks.ts delete mode 100644 frontend/src/components/Scenario/index.tsx rename frontend/src/components/ScenarioComponents/{GeneralButtonComponents/GeneralButton.tsx => ExpandedButtonComponents/ExpandedButton.tsx} (100%) diff --git a/frontend/src/App.scss b/frontend/src/App.scss index 70ebea8c..9b73b1fd 100644 --- a/frontend/src/App.scss +++ b/frontend/src/App.scss @@ -47,4 +47,4 @@ body { background-color: #543cf0; border-radius: 13px; border: 3px solid transparent; -} +} \ No newline at end of file diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx new file mode 100644 index 00000000..1ad15d37 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx @@ -0,0 +1,138 @@ +import CardContainer from 'components/ScenarioComponents/CardsComponents/CardContainer'; +import React, {useState} from 'react'; +import {filterValue, cardValue} from 'types/Cardtypes'; +import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; +import {describe, test, expect} from 'vitest'; + +import {render, screen} from '@testing-library/react'; +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/system'; + +export default function CardContainerTest() { + // Mock data for the props + const compartmentsExpanded = true; + const selectedCompartment = 'Compartment 1'; + const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const minCompartmentsRows = 1; + const maxCompartmentsRows = 3; + const filterValues: Dictionary = { + 'Compartment 1': [ + {filteredTitle: 'Title 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 2': [ + {filteredTitle: 'Title 2', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 3': [ + {filteredTitle: 'Title 3', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + }; + const scenarios = [ + {id: 0, label: 'Scenario 1'}, + {id: 1, label: 'Scenario 2'}, + {id: 2, label: 'Scenario 3'}, + ]; + const cardValues: Dictionary = { + '0': { + compartmentValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}, + startValues: {'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307}, + }, + '1': { + compartmentValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}, + startValues: {'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307}, + }, + '2': { + compartmentValues: {'Compartment 1': 70, 'Compartment 2': 80, 'Compartment 3': 90}, + startValues: {'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307}, + }, + }; + const groupFilters: Dictionary = { + '0': { + id: 'group1', + name: 'Group 1', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '1': { + id: 'group2', + name: 'Group 2', + isVisible: false, + groups: { + 'Subgroup 3': ['Item 5', 'Item 6'], + 'Subgroup 4': ['Item 7', 'Item 8'], + }, + }, + }; + + const [activeScenarios, setActiveScenarios] = useState([0, 1, 2, 3]); + const [selectedScenario, setSelectedScenario] = useState(0); + + return ( +
+ + + +
+ ); +} + +describe('CardContainer', () => { + test('renders data cards correctly', () => { + render(); + expect(screen.getByTestId('card-container')).toBeInTheDocument(); + }); + test('renders filter values correctly', () => { + render(); + + // Check if filter values are rendered correctly for each compartment + expect(screen.getByText('scenario-names.Scenario 1')).toBeInTheDocument(); + expect(screen.getByText('scenario-names.Scenario 2')).toBeInTheDocument(); + expect(screen.getByText('scenario-names.Scenario 3')).toBeInTheDocument(); + screen.debug(); + }); + const compartments: string[] = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + + const filterValues: Dictionary = { + 'Compartment 1': [ + {filteredTitle: 'Title 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 2': [ + {filteredTitle: 'Title 2', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + 'Compartment 3': [ + {filteredTitle: 'Title 3', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + ], + }; + + test('renders compartments correctly', async () => { + render(); + + // Check if compartment values are rendered correctly + for (const compartment of compartments) { + for (const {filteredValues} of filterValues[compartment]) { + if (filteredValues) { + for (const value of Object.values(filteredValues)) { + expect(await screen.findByText(value.toString())).toBeInTheDocument(); + } + } + } + } + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx new file mode 100644 index 00000000..d0663f77 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx @@ -0,0 +1,179 @@ +import React, {useState} from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import {Dictionary} from 'util/util'; +import {GroupFilter} from 'types/group'; +import {filterValue} from 'types/Cardtypes'; +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/system'; +import DataCard from 'components/ScenarioComponents/CardsComponents/DataCard'; + +// Wrapper component to provide mock data to DataCard +function DataCardTest() { + const mockIndex = 0; + const mockCompartmentValues: Dictionary = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + const mockStartValues: Dictionary = { + 'Compartment 1': 100, + 'Compartment 2': 200, + 'Compartment 3': 307, + }; + const mockLabel = 'Scenario 1'; + const mockCompartmentsExpanded = true; + const mockCompartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const mockSelectedCompartment = 'Compartment 1'; + const mockSelectedScenario = true; + const mockColor = 'primary'; + const mockActiveScenarios = [0, 1, 2]; + const mockFilterValues: Dictionary = { + '0': [ + {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + ], + '1': [ + {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + ], + '2': [ + {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, + {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, + ], + }; + const mockMinCompartmentsRows = 1; + const mockMaxCompartmentsRows = 3; + const mockGroupFilters: Dictionary = { + '0': { + id: 'group1', + name: 'Group 1', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '1': { + id: 'group2', + name: 'Group 2', + isVisible: false, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '2': { + id: 'group3', + name: 'Group 3', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + }; + + const [activeScenarios, setActiveScenarios] = useState(mockActiveScenarios); + const [selectedScenario, setSelectedScenario] = useState(mockIndex); + + return ( + + + + ); +} + +describe('DataCard', () => { + test('renders DataCard correctly', () => { + render(); + expect(screen.getByText('Scenario 1')).toBeInTheDocument(); + }); + + test('renders compartment values correctly', () => { + render(); + // Verify if compartment values are rendered correctly + const compartments1 = screen.getAllByText('10'); + expect(compartments1).toHaveLength(2); + const compartments2 = screen.getAllByText('20'); + expect(compartments2).toHaveLength(2); + const compartments3 = screen.getAllByText('30'); + expect(compartments3).toHaveLength(2); + }); + + test('renders filter titles correctly', () => { + render(); + // Verify if filter titles are rendered correctly + expect(screen.getByText('Group 1')).toBeInTheDocument(); + // That's works because the element is actually in the dom but the visibility is set to false so it's not render + expect(screen.getByText('Group 2')).toBeInTheDocument(); + expect(screen.getByText('Group 3')).toBeInTheDocument(); + }); + const mockGroupFilters: Dictionary = { + '0': { + id: 'group1', + name: 'Group 1', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '1': { + id: 'group2', + name: 'Group 2', + isVisible: false, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + '2': { + id: 'group3', + name: 'Group 3', + isVisible: true, + groups: { + 'Subgroup 1': ['Item 1', 'Item 2'], + 'Subgroup 2': ['Item 3', 'Item 4'], + }, + }, + }; + test('checks visibility based on group filters', () => { + render(); + // Verify visibility based on group filters + const group1 = screen.getByText('Group 1'); + const group2Element = screen.getByText('Group 2'); + if (mockGroupFilters['0'].isVisible) { + expect(group1).toBeInTheDocument(); + } else { + expect(group1).not.toBeInTheDocument(); + } + + if (mockGroupFilters['1'].isVisible) { + expect(group2Element).toBeVisible(); + } else { + expect(group2Element).not.toBeVisible(); + } + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx deleted file mode 100644 index c16ed03c..00000000 --- a/frontend/src/__tests__/components/Scenario/CompartmentList.test.tsx +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import {describe, test, vi, afterEach, beforeEach, expect} from 'vitest'; -import {act, cleanup, render, screen} from '@testing-library/react'; - -import i18n from '../../../util/i18nForTests'; - -import {I18nextProvider} from 'react-i18next'; -import {Provider} from 'react-redux'; -import {Store} from '../../../store'; -import {setStartDate} from '../../../store/DataSelectionSlice'; -import CompartmentList from '../../../components/Scenario/CompartmentList'; -import {MUILocalization} from '../../../components/shared/MUILocalization'; -import userEvent from '@testing-library/user-event'; - -describe('CompartmentList', () => { - vi.stubGlobal('fetch', async () => Promise.all([])); - - // Mock the ResizeObserver - const ResizeObserverMock = vi.fn(() => ({ - observe: vi.fn(), - unobserve: vi.fn(), - disconnect: vi.fn(), - })); - - vi.stubGlobal('ResizeObserver', ResizeObserverMock); - - beforeEach(() => { - Store.dispatch(setStartDate('2020-02-20')); - }); - - test('Date Loaded Correctly', () => { - render( - - - - - - - - ); - - screen.getAllByText('scenario.reference-day'); - screen.getByPlaceholderText('MM/DD/YYYY'); - screen.getByDisplayValue('02/20/2020'); - }); - - test('Set Reference Date', async () => { - render( - - - - - - - - ); - - const el = screen.getByPlaceholderText('MM/DD/YYYY'); - await userEvent.click(el); - await userEvent.keyboard('03/23/2023[Enter]'); - - screen.getByDisplayValue('03/23/2023'); - expect(Store.getState().dataSelection.simulationStart).toBe('2023-03-23'); - }); - - test('Update Reference Date', () => { - render( - - - - - - - - ); - - screen.getByDisplayValue('02/20/2020'); - - act(() => { - Store.dispatch(setStartDate('2023-03-23')); - }); - - expect(Store.getState().dataSelection.simulationStart).toBe('2023-03-23'); - screen.getByDisplayValue('03/23/2023'); - }); - - afterEach(() => { - cleanup(); - }); -}); diff --git a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx new file mode 100644 index 00000000..25fb8021 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@emotion/react'; +import {render, screen} from '@testing-library/react'; +import Theme from 'util/Theme'; +import CompartmentsRow from 'components/ScenarioComponents/CompartmentsComponents/CompartmentsRow'; +import userEvent from '@testing-library/user-event'; + +export default function CompartmentsRowTest() { + const compartmentsExpanded = true; + const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const [selectedCompartment, setSelectedCompartment] = useState('Compartment 1'); + const minCompartmentsRows = 1; + const compartmentValues = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + + return ( +
+ + {compartments.map((compartment, index) => ( + + ))} + +
+ ); +} + +describe('CompartmentsRows', () => { + test('renders the correct compartment names', async () => { + render(); + + expect(await screen.findByText((content) => content.includes('Compartment 1'))).toBeInTheDocument(); + expect(await screen.findByText((content) => content.includes('Compartment 2'))).toBeInTheDocument(); + expect(await screen.findByText((content) => content.includes('Compartment 3'))).toBeInTheDocument(); + }); + + test('renders the correct compartment values', async () => { + render(); + + expect(await screen.findByText('10')).toBeInTheDocument(); + expect(await screen.findByText('20')).toBeInTheDocument(); + expect(await screen.findByText('30')).toBeInTheDocument(); + }); + + test('selects the correct compartment on click', async () => { + render(); + + const compartment1 = screen.getByText('compartments.Compartment 1').closest('div[role="button"]'); + const compartment2 = screen.getByText('compartments.Compartment 2').closest('div[role="button"]'); + expect(compartment1).toHaveClass('Mui-selected'); + expect(compartment2).not.toHaveClass('Mui-selected'); + if (compartment2) { + await userEvent.click(compartment2); + } + expect(compartment1).not.toHaveClass('Mui-selected'); + expect(compartment2).toHaveClass('Mui-selected'); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx new file mode 100644 index 00000000..2eb84442 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import CompartmentsRows from 'components/ScenarioComponents/CompartmentsComponents/CompartmentsRows'; +import React, {useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@emotion/react'; +import {render, screen, waitFor} from '@testing-library/react'; +import Theme from 'util/Theme'; + +export default function CompartmentsRowsTest() { + const compartmentsExpanded = true; + const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const [selectedCompartment, setSelectedCompartment] = useState('Compartment 1'); + const minCompartmentsRows = 1; + const maxCompartmentsRows = 3; + const compartmentValues = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + + return ( +
+ + + +
+ ); +} + +describe('CompartmentsRows', () => { + test('renders the correct number of compartments', async () => { + render(); + await waitFor(() => { + const compartmentsList = screen.getByTestId('compartments-rows'); + expect(compartmentsList).toBeInTheDocument(); + expect(compartmentsList.querySelectorAll('.MuiListItemButton-root').length).toBe(3); + }); + }); + + test('renders the correct compartment names', async () => { + render(); + expect(await screen.findByText('compartments.Compartment 1')).toBeInTheDocument(); + expect(await screen.findByText('compartments.Compartment 2')).toBeInTheDocument(); + expect(await screen.findByText('compartments.Compartment 3')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx new file mode 100644 index 00000000..0b3285b6 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {render, screen, fireEvent} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import GeneralButton from 'components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton'; +import {ThemeProvider} from '@emotion/react'; + +import Theme from 'util/Theme'; + +export default function GeneralButtonTest() { + const buttonTexts = {clicked: 'Clicked', unclicked: 'Unclicked'}; + const isDisabled = () => true; + const handleClick = () => {}; + + return ( +
+ + + +
+ ); +} + +describe('GeneralButtonTest', () => { + test('renders the button with the correct initial text', async () => { + render(); + const button = await screen.findByRole('button'); + expect(button).toHaveTextContent('Unclicked'); + }); + + test('button is not disabled initially', async () => { + render(); + const button = await screen.findByRole('button'); + expect(button).toBeDisabled(); + }); + + test('button does change state when clicked', async () => { + render(); + const button = await screen.findByRole('button'); + fireEvent.click(button); + expect(button).toHaveTextContent('clicked'); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx b/frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx new file mode 100644 index 00000000..790c58aa --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/ReferenceDatePicker.test.tsx @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {describe, test, expect} from 'vitest'; +import {render, screen, waitFor} from '@testing-library/react'; +import {I18nextProvider} from 'react-i18next'; +import ReferenceDatePicker from 'components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; +import {MUILocalization} from '../../../components/shared/MUILocalization'; +import {ThemeProvider} from '@mui/system'; +import Theme from 'util/Theme'; +import i18n from 'util/i18n'; +import userEvent from '@testing-library/user-event'; + +const ReferenceDatePickerTest = () => { + const [startDate, setStartDate] = useState('2020-02-20'); + const minDate = '2019-02-20'; + const maxDate = '2021-02-20'; + + return ( +
+ +
+ ); +}; + +describe('ReferenceDatePicker', () => { + test('renders ReferenceDatePicker component', async () => { + render( + + + + + + + + ); + + await waitFor(() => { + expect(screen.getByLabelText('scenario.reference-day')).toBeInTheDocument(); + }); + }); + + test('displays the correct initial date', () => { + render( + + + + + + + + ); + + expect(screen.getByDisplayValue('02/20/2020')).toBeInTheDocument(); + }); + + test('updates the date when a new date is selected', async () => { + render( + + + + + + + + ); + + const el = screen.getByPlaceholderText('MM/DD/YYYY'); + await userEvent.type(el, '03/23/2020{enter}'); + expect(screen.getByDisplayValue('03/23/2020')).toBeInTheDocument(); + }); +}); diff --git a/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx b/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx index e936ea1c..33af4097 100644 --- a/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx +++ b/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx @@ -4,8 +4,7 @@ import React from 'react'; import {describe, expect, it, vi} from 'vitest'; import {render, fireEvent, screen} from '@testing-library/react'; - -import ConfirmDialog from '../../../components/shared/ConfirmDialog'; +import ConfirmDialog from 'components/ScenarioComponents/FilterComponents/ConfirmDialog'; describe('ConfirmDialog', () => { it('renders the correct title and text', () => { diff --git a/frontend/src/components/Scenario/CaseDataCard.tsx b/frontend/src/components/Scenario/CaseDataCard.tsx deleted file mode 100644 index 032e6c8a..00000000 --- a/frontend/src/components/Scenario/CaseDataCard.tsx +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {Dictionary} from '../../util/util'; -import {useTranslation} from 'react-i18next'; -import React, {useMemo} from 'react'; -import {useAppSelector} from '../../store/hooks'; -import {useGetCaseDataSingleSimulationEntryQuery} from '../../store/services/caseDataApi'; -import {DataCard} from './DataCard'; - -interface CaseDataCardProps { - /** If the card is currently selected. */ - selected: boolean; - - /** If the card is active or flipped over. */ - active: boolean; - - /** The simulation start values for all compartments. */ - startValues: Dictionary | null; - - /** A callback for when the card is being selected. */ - onClick: () => void; - - /** A callback for when the card is being activated or deactivated. */ - onToggle: () => void; -} - -/** - * This component renders a list of values and rates for each compartment for case data inside a black card. - */ -export function CaseDataCard(props: CaseDataCardProps): JSX.Element { - const {t} = useTranslation(); - - const node = useAppSelector((state) => state.dataSelection.district?.ags); - const day = useAppSelector((state) => state.dataSelection.date); - - const {data} = useGetCaseDataSingleSimulationEntryQuery( - { - node: node, - day: day ?? '', - groups: ['total'], - }, - {skip: !day} - ); - - const compartmentValues = useMemo(() => { - if (data && data.results.length > 0) { - return data.results[0].compartments; - } - - return null; - }, [data]); - - return ( - - ); -} diff --git a/frontend/src/components/Scenario/CompartmentList.tsx b/frontend/src/components/Scenario/CompartmentList.tsx deleted file mode 100644 index 3906430a..00000000 --- a/frontend/src/components/Scenario/CompartmentList.tsx +++ /dev/null @@ -1,293 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import Box from '@mui/material/Box'; -import {ScrollSyncPane} from 'react-scroll-sync'; -import List from '@mui/material/List'; -import ListItemButton from '@mui/material/ListItemButton'; -import {selectCompartment, setStartDate, toggleCompartmentExpansion} from '../../store/DataSelectionSlice'; -import ListItemText from '@mui/material/ListItemText'; -import Button from '@mui/material/Button'; -import React, {MouseEvent, useEffect, useMemo, useState} from 'react'; -import {darken, useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {NumberFormatter} from '../../util/hooks'; -import {useGetSimulationStartValues} from './hooks'; -import ListItemIcon from '@mui/material/ListItemIcon'; -import ClickAwayListener from '@mui/material/ClickAwayListener'; -import InfoOutlined from '@mui/icons-material/InfoOutlined'; -import Tooltip from '@mui/material/Tooltip'; -import {DatePicker} from '@mui/x-date-pickers/DatePicker'; -import dayjs, {Dayjs} from 'dayjs'; -import {dateToISOString} from '../../util/util'; -import {setReferenceDayTop} from '../../store/LayoutSlice'; -import {useBoundingclientrectRef} from 'rooks'; - -/** - * The component renders a list of compartments with their name on the left and the case data values at simulation start - * at the right. The user can select a compartment by clicking on one in the list. The list shows by default four - * compartments, but can be expanded by clicking on the more button. The extended list can be scrolled and is - * synchronized with the compartment lists of the data cards to the right. - */ -export default function CompartmentList(): JSX.Element { - const theme = useTheme(); - const {t, i18n} = useTranslation(); - const dispatch = useAppDispatch(); - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - - const compartments = useAppSelector((state) => state.scenarioList.compartments); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const compartmentValues = useGetSimulationStartValues(); - - const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); - - useEffect(() => { - const x = resizeBoundingRect?.x ?? 0; - const w = resizeBoundingRect?.width ?? 0; - dispatch(setReferenceDayTop(x + w)); - }, [dispatch, resizeBoundingRect]); - - /** This function either returns the value at simulation start of a compartment or 'no data'. */ - const getCompartmentValue = (compartment: string): string => { - if (compartmentValues && compartment in compartmentValues) { - return formatNumber(compartmentValues[compartment]); - } - return t('no-data'); - }; - - // This effect sets the selected compartment to the first one if no compartment is initially selected. - useEffect(() => { - if (!selectedCompartment && compartments.length > 0) { - dispatch(selectCompartment(compartments[0])); - } - }, [dispatch, compartments, selectedCompartment]); - - return ( - - - - - {compartments.map((compartment, i) => ( - - ))} - - - - - ); -} - -/** This component renders the simulation start date together with a descriptive label. */ -function SimulationStartTitle(): JSX.Element { - const theme = useTheme(); - const {t} = useTranslation(); - const dispatch = useAppDispatch(); - - const startDay = useAppSelector((state) => state.dataSelection.simulationStart); - const minDate = useAppSelector((state) => state.dataSelection.minDate); - const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - - function updateDate(newDate: Dayjs | null) { - if (newDate) { - dispatch(setStartDate(dateToISOString(newDate.toDate()))); - } - } - - return ( - - - label={t('scenario.reference-day')} - value={dayjs(startDay)} - minDate={dayjs(minDate)} - maxDate={dayjs(maxDate)} - onChange={updateDate} - slotProps={{textField: {size: 'small'}}} - /> - - ); -} - -interface CompartmentRowProps { - /** The name of the compartment. */ - compartment: string; - - /** The value of the compartment at simulation start. */ - value: string; - - /** The index of the compartment. */ - index: number; -} - -/** - * This component renders a single row of the compartment list. To the left the name will be displayed and to the right - * the value at simulation start. If the index of the compartment is greater than three and the compartment list is not - * in the expanded mode this component will be hidden. - */ -function CompartmentRow(props: CompartmentRowProps): JSX.Element { - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const dispatch = useAppDispatch(); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - - const selected = useMemo(() => props.compartment === selectedCompartment, [props.compartment, selectedCompartment]); - - const [tooltipOpen, setTooltipOpen] = useState(false); - - const openTooltip = (e: MouseEvent) => { - e.stopPropagation(); - setTooltipOpen(true); - }; - - const closeTooltip = () => setTooltipOpen(false); - - return ( - { - // dispatch new compartment name - dispatch(selectCompartment(props.compartment)); - }} - > - - - - - - - - - - - ); -} diff --git a/frontend/src/components/Scenario/DataCard.tsx b/frontend/src/components/Scenario/DataCard.tsx deleted file mode 100644 index 40700c9c..00000000 --- a/frontend/src/components/Scenario/DataCard.tsx +++ /dev/null @@ -1,398 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {Dictionary} from '../../util/util'; -import {useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from '../../util/hooks'; -import {useAppSelector} from '../../store/hooks'; -import React, {useState} from 'react'; -import Box from '@mui/material/Box'; -import Tooltip from '@mui/material/Tooltip'; -import IconButton from '@mui/material/IconButton'; -import CheckBox from '@mui/icons-material/CheckBox'; -import CheckBoxOutlineBlank from '@mui/icons-material/CheckBoxOutlineBlank'; -import Typography from '@mui/material/Typography'; -import {ScrollSyncPane} from 'react-scroll-sync'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemText from '@mui/material/ListItemText'; -import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; -import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; -import ArrowRightIcon from '@mui/icons-material/ArrowRight'; -import {GroupFilterAppendage} from './GroupFilterAppendage'; - -interface DataCardProps { - /** The scenario id of the card. Note that id 0 is reserved for case data. */ - id: number; - - /** This is the title of the card. */ - label: string; - - /** The color of the scenario that the card should be highlighted in. */ - color: string; - - /** If the card is the selected one. Only one card can be selected at the same time. */ - selected: boolean; - - /** If this card is active. If not the card is flipped and only the title is shown. */ - active: boolean; - - /** All the values that correspond to this card. */ - compartmentValues: Dictionary | null; - - /** The simulation start values. They are used for calculating the rate. */ - startValues: Dictionary | null; - - /** Callback for when the card is selected. */ - onClick: () => void; - - /** Callback for when the card is activated or deactivated. */ - onToggle: () => void; -} - -/** - * This component renders a card for either the case data card or the scenario cards. It contains a title and a list of - * compartment values and change rates relative to the simulation start. - */ -export function DataCard(props: DataCardProps): JSX.Element { - const theme = useTheme(); - const {t, i18n} = useTranslation(); - - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - - const compartments = useAppSelector((state) => state.scenarioList.compartments); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - - const [hover, setHover] = useState(false); - - /** This function either returns the value at simulation start of a compartment or 'no data'. */ - const getCompartmentValue = (compartment: string): string => { - if (props.compartmentValues && compartment in props.compartmentValues) { - return formatNumber(props.compartmentValues[compartment]); - } - return t('no-data'); - }; - - /** - * This function returns one of the following things: - * - The relative increase of a compartment value preceded by a plus sign - * - The relative decrease of a compartment value preceded by a minus sign - * - A zero preceded by a plus-minus sign - * - A dash, when no rate of change can be calculated - */ - const getCompartmentRate = (compartment: string): string => { - if ( - !props.compartmentValues || - !(compartment in props.compartmentValues) || - !props.startValues || - !(compartment in props.startValues) - ) { - // Return a Figure Dash (‒) where a rate cannot be calculated. - return '\u2012'; - } - - const value = props.compartmentValues[compartment]; - const startValue = props.startValues[compartment]; - const result = Math.round(100 * (value / startValue) - 100); - - if (!isFinite(result)) { - // Return a Figure Dash (‒) where a rate cannot be calculated. - return '\u2012'; - } - - let sign: string; - if (result > 0) { - sign = '+'; - } else if (result < 0) { - sign = '-'; - } else { - // Return a Plus Minus sign (±) where a rate cannot be calculated. - sign = '\u00B1'; - } - - return sign + Math.abs(result).toFixed() + '%'; - }; - - return ( - - setHover(false)} - > - {/*hover-state*/} - - - props.onToggle()} - aria-label={props.active ? t('scenario.deactivate') : t('scenario.activate')} - > - {props.active ? : } - - - - props.onClick() : () => true} - onMouseEnter={() => setHover(true)} - > - - - - - - - - {compartments.map((compartment, i) => ( - - ))} - - - - - - {props.active && props.id !== 0 ? : null} - - ); -} - -interface CardTitleProps { - /** The id of the card. Either zero for the case data or the scenario id. */ - id: number; - - /** The title of the card. */ - title: string; - - /** If the card is front facing or flipped. */ - isFront: boolean; -} - -/** Renders the card title. Depending, if the card is flipped or not the title will be left or right aligned. */ -function CardTitle(props: CardTitleProps): JSX.Element { - const theme = useTheme(); - - return ( - - - {props.title} - - - ); -} - -interface CompartmentRowProps { - /** The name of the compartment. */ - compartment: string; - - /** The compartment value to display. */ - value: string; - - /** The rate of change to display. */ - rate: string; - - /** The corresponding scenario color. */ - color: string; - - /** The index of the compartment. */ - index: number; -} - -/** - * This component renders a single row of the data card. To the left the value will be displayed and to the right the - * rate is displayed. If the index of the compartment is greater than three and the compartment list is not in the - * expanded mode this component will be hidden. - */ -function CompartmentRow(props: CompartmentRowProps): JSX.Element { - const theme = useTheme(); - - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - - return ( - 4 - // highlight compartment if selectedCompartment === compartment - display: compartmentsExpanded || props.index < 4 ? 'flex' : 'none', - color: selectedCompartment === props.compartment ? theme.palette.text.primary : theme.palette.text.disabled, - backgroundColor: selectedCompartment === props.compartment ? hexToRGB(props.color, 0.1) : 'transparent', - padding: theme.spacing(1), - margin: theme.spacing(0), - marginTop: theme.spacing(1), - paddingLeft: theme.spacing(3), - paddingRight: theme.spacing(3), - borderTop: '2px solid transparent', - borderBottom: '2px solid transparent', - }} - > - - - - - ); -} - -interface TrendArrowProps { - /** The value. */ - value: number; - - /** The rate of change relative to scenario start. */ - rate: string; -} - -/** - * Renders an arrow depending on value and rate. When the rate is negative a green downwards arrow is rendered, when the - * rate is between zero and three percent a grey sidewards arrow is rendered and when the rate is greater than three - * percent a red upwards arrow is being rendered. - */ -function TrendArrow(props: TrendArrowProps): JSX.Element { - // Shows downwards green arrows if getCompartmentRate < 0%. - if (parseFloat(props.rate) < 0) { - return ; - } - // Shows upwards red arrows if getCompartmentRate > 3%. If there is no RKI value for that compartment i.e., getCompartmentRate is Null, then it will check the getCompartmentValue (scenario values only) which will always be positive. - else if (parseFloat(props.rate) > 3 || (props.value > 0 && props.rate === '\u2012')) { - return ; - } - // Shows grey arrows (stagnation) if getCompartmentRate is between 0 and 3 % or if there is no RKI value. - else { - return ; - } -} - -/** Takes a three component hex string and an alpha value and transforms it into an rgba css string. */ -function hexToRGB(hex: string, alpha: number): string { - const r = parseInt(hex.slice(1, 3), 16), - g = parseInt(hex.slice(3, 5), 16), - b = parseInt(hex.slice(5, 7), 16); - - if (alpha) { - return 'rgba(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ', ' + alpha.toString() + ')'; - } else { - return 'rgb(' + r.toString() + ', ' + g.toString() + ', ' + b.toString() + ')'; - } -} diff --git a/frontend/src/components/Scenario/DataCardList.tsx b/frontend/src/components/Scenario/DataCardList.tsx deleted file mode 100644 index 67b02076..00000000 --- a/frontend/src/components/Scenario/DataCardList.tsx +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import Box from '@mui/material/Box'; -import {CaseDataCard} from './CaseDataCard'; -import {selectScenario, setMinMaxDates, setStartDate, toggleScenario} from '../../store/DataSelectionSlice'; -import {ScenarioCard} from './ScenarioCard'; -import React, {useEffect, useState} from 'react'; -import {dateToISOString} from '../../util/util'; -import {useAppDispatch, useAppSelector} from '../../store/hooks'; -import {useTheme} from '@mui/material/styles'; -import { - useGetSimulationModelQuery, - useGetSimulationModelsQuery, - useGetSimulationsQuery, -} from '../../store/services/scenarioApi'; -import {setCompartments, setScenarios} from '../../store/ScenarioSlice'; -import {useGetSimulationStartValues} from './hooks'; -import {useGetCaseDataByDistrictQuery} from '../../store/services/caseDataApi'; - -export default function DataCardList(): JSX.Element { - const theme = useTheme(); - const dispatch = useAppDispatch(); - - const scenarioList = useAppSelector((state) => state.scenarioList); - const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); - - const [simulationModelKey, setSimulationModelKey] = useState('unset'); - - const {data: scenarioListData} = useGetSimulationsQuery(); - const {data: simulationModelsData} = useGetSimulationModelsQuery(); - const {data: simulationModelData} = useGetSimulationModelQuery(simulationModelKey, { - skip: simulationModelKey === 'unset', - }); - - // This is a temporary solution to get the start and end day of the case data. - const caseData = useGetCaseDataByDistrictQuery({node: '00000', groups: null, compartments: null}); - - const startValues = useGetSimulationStartValues(); - - useEffect(() => { - if (simulationModelsData && simulationModelsData.results.length > 0) { - const {key} = simulationModelsData.results[0]; - setSimulationModelKey(key); - } - }, [simulationModelsData]); - - useEffect(() => { - if (simulationModelData) { - const {compartments} = simulationModelData.results; - dispatch(setCompartments(compartments)); - } - }, [simulationModelData, dispatch]); - - // This effect calculates the start and end days from the case and scenario data. - useEffect(() => { - let minDate: string | null = null; - let maxDate: string | null = null; - - if (scenarioListData) { - const scenarios = scenarioListData.results.map((scenario) => ({id: scenario.id, label: scenario.description})); - dispatch(setScenarios(scenarios)); - - //activate all scenarios initially - if (!activeScenarios) { - scenarios.forEach((scenario) => { - dispatch(toggleScenario(scenario.id)); - }); - } - - if (scenarios.length > 0) { - // The simulation data (results) are only available one day after the start day onward. - const startDay = new Date(scenarioListData.results[0].startDay); - startDay.setUTCDate(startDay.getUTCDate() + 1); - - const endDay = new Date(startDay); - endDay.setDate(endDay.getDate() + scenarioListData.results[0].numberOfDays - 1); - - minDate = dateToISOString(startDay); - maxDate = dateToISOString(endDay); - - dispatch(setStartDate(minDate)); - } - } - - if (caseData?.data) { - const entries = caseData.data.results.map((entry) => entry.day).sort((a, b) => a.localeCompare(b)); - - const firstCaseDataDay = entries[0]; - if (!minDate) { - minDate = firstCaseDataDay; - dispatch(setStartDate(minDate)); - } else { - minDate = minDate.localeCompare(firstCaseDataDay) < 0 ? minDate : firstCaseDataDay; - } - - const lastCaseDataDay = entries.slice(-1)[0]; - if (!maxDate) { - maxDate = lastCaseDataDay; - } else { - maxDate = maxDate.localeCompare(lastCaseDataDay) > 0 ? maxDate : lastCaseDataDay; - } - } - - if (minDate && maxDate) { - dispatch(setMinMaxDates({minDate, maxDate})); - } - }, [activeScenarios, scenarioListData, dispatch, caseData]); - - //effect to switch active scenario - useEffect(() => { - if (activeScenarios) { - if (activeScenarios.length == 0) { - dispatch(selectScenario(null)); - } else if (selectedScenario === null || !activeScenarios.includes(selectedScenario)) { - dispatch(selectScenario(activeScenarios[0])); - } - } - }, [activeScenarios, selectedScenario, dispatch]); - - return ( - - dispatch(selectScenario(0))} - onToggle={() => dispatch(toggleScenario(0))} - /> - {Object.entries(scenarioList.scenarios).map(([, scenario], i) => ( - { - // set active scenario to this one and send dispatches - dispatch(selectScenario(scenario.id)); - }} - onToggle={() => { - dispatch(toggleScenario(scenario.id)); - }} - /> - ))} - - ); -} diff --git a/frontend/src/components/Scenario/GroupFilterAppendage.tsx b/frontend/src/components/Scenario/GroupFilterAppendage.tsx deleted file mode 100644 index dcda66c2..00000000 --- a/frontend/src/components/Scenario/GroupFilterAppendage.tsx +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {useTheme} from '@mui/material/styles'; -import {useAppSelector} from '../../store/hooks'; -import React, {useState} from 'react'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import ChevronLeft from '@mui/icons-material/ChevronLeft'; -import ChevronRight from '@mui/icons-material/ChevronRight'; -import Collapse from '@mui/material/Collapse'; -import {GroupFilterCard} from './GroupFilterCard'; - -interface GroupFilterAppendageProps { - /** The scenario id. */ - scenarioId: number; - - /** The scenario color. */ - color: string; -} - -/** - * This component is placed on the right side of the scenario cards, if at least one group filter is active. It contains - * a button to open and close the card appendage for the active group filters. - */ -export function GroupFilterAppendage(props: GroupFilterAppendageProps): JSX.Element | null { - const theme = useTheme(); - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - - const [folded, setFolded] = useState(true); - - if (!groupFilterList) { - return null; - } - - const groupFilterArray = Object.values(groupFilterList); - - // If no group filter is visible this will be hidden. - if (!groupFilterArray.some((groupFilter) => groupFilter.isVisible)) { - return null; - } - - return ( - - - - - {groupFilterArray - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter, i) => { - return ( - - ); - })} - - - - ); -} diff --git a/frontend/src/components/Scenario/GroupFilterCard.tsx b/frontend/src/components/Scenario/GroupFilterCard.tsx deleted file mode 100644 index 43a940cc..00000000 --- a/frontend/src/components/Scenario/GroupFilterCard.tsx +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {useTheme} from '@mui/material/styles'; -import {useAppSelector} from '../../store/hooks'; -import React from 'react'; -import Box from '@mui/material/Box'; -import {useGetSingleGroupFilterDataQuery} from '../../store/services/groupApi'; -import Typography from '@mui/material/Typography'; -import {useTranslation} from 'react-i18next'; -import {NumberFormatter} from '../../util/hooks'; -import {ScrollSyncPane} from 'react-scroll-sync'; -import List from '@mui/material/List'; -import ListItem from '@mui/material/ListItem'; -import ListItemText from '@mui/material/ListItemText'; -import {GroupFilter} from '../../types/group'; - -/** - * This is responsible for displaying an active group filter. - */ -export function GroupFilterCard(props: GroupFilterCardProps): JSX.Element | null { - const theme = useTheme(); - - return ( - - - - {props.groupFilter.name} - - - - - ); -} - -/** - * This component renders all compartment values of a group filter in one column. - */ -function GroupFilterCardCompartmentValues(props: GroupFilterCardProps): JSX.Element | null { - const {t, i18n} = useTranslation(); - const theme = useTheme(); - - const {formatNumber} = NumberFormatter(i18n.language, 1, 0); - - const day = useAppSelector((state) => state.dataSelection.date); - const node = useAppSelector((state) => state.dataSelection.district?.ags); - const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - const compartments = useAppSelector((state) => state.scenarioList.compartments); - - const {data: groupFilterData} = useGetSingleGroupFilterDataQuery( - { - id: props.scenarioId, - node: node, - day: day ?? '', - groupFilter: props.groupFilter, - }, - {skip: !day || props.scenarioId === 0} - ); - - const getGroupValue = (compartment: string): string => { - if (!groupFilterData) { - return t('no-data'); - } - - const groupFilterResults = groupFilterData.results; - if (groupFilterResults.length === 0 || !(compartment in groupFilterResults[0].compartments)) { - return t('no-data'); - } - - return formatNumber(groupFilterResults[0].compartments[compartment]); - }; - - return ( - - - {compartments.map((compartment, i) => { - return ( - 4 - display: compartmentsExpanded || i < 4 ? 'flex' : 'none', - // highlight compartment if selectedCompartment === compartment - color: selectedCompartment === compartment ? theme.palette.text.primary : theme.palette.text.disabled, - alignContent: 'center', - padding: theme.spacing(1), - margin: theme.spacing(0), - marginTop: theme.spacing(1), - borderTop: '2px solid transparent', - borderBottom: '2px solid transparent', - }} - > - - - ); - })} - - - ); -} - -interface GroupFilterCardProps { - /** The group filter the cards belongs to. */ - groupFilter: GroupFilter; - - /** The index in the list of group filters. */ - groupFilterIndex: number; - - /** The scenario id. */ - scenarioId: number; -} diff --git a/frontend/src/components/Scenario/ScenarioCard.tsx b/frontend/src/components/Scenario/ScenarioCard.tsx deleted file mode 100644 index bddb7282..00000000 --- a/frontend/src/components/Scenario/ScenarioCard.tsx +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useMemo} from 'react'; -import {useTheme} from '@mui/material/styles'; -import {useAppSelector} from 'store/hooks'; -import {useGetSingleSimulationEntryQuery} from 'store/services/scenarioApi'; -import {Dictionary} from '../../util/util'; -import {useTranslation} from 'react-i18next'; -import {DataCard} from './DataCard'; - -/** Type definition for the ScenarioCard props */ -interface ScenarioCardProps { - /** The scenario this card is displaying. */ - scenario: { - /** The identifier for the scenario. */ - id: number; - - /** The label for the scenario displayed to the user. */ - label: string; - }; - - /** The key for this scenario (index from the map function for the scenario list). */ - key: number; - - /** Boolean value whether the scenario is the selected scenario. */ - selected: boolean; - - /** Boolean value whether the scenario is active (not flipped). */ - active: boolean; - - /** The color of the card. */ - color: string; - - startValues: Dictionary | null; - - /** The function that is executed when the scenario card is clicked. */ - onClick: () => void; - - /** The function that is executed when the disable toggle is clicked. */ - onToggle: () => void; -} - -/** - * React Component to render an individual Scenario Card. - * @prop {ScenarioCardProps} props - The props for the component. - * @returns {JSX.Element} JSX Element to render the scenario card. - */ -export function ScenarioCard(props: ScenarioCardProps): JSX.Element { - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - - const node = useAppSelector((state) => state.dataSelection.district?.ags); - const day = useAppSelector((state) => state.dataSelection.date); - - const {data} = useGetSingleSimulationEntryQuery( - { - id: props.scenario.id, - node: node, - day: day ?? '', - groups: ['total'], - }, - {skip: !day} - ); - - const compartmentValues = useMemo(() => { - if (data && data.results.length > 0) { - return data.results[0].compartments; - } - - return null; - }, [data]); - - return ( - - ); -} diff --git a/frontend/src/components/Scenario/hooks.ts b/frontend/src/components/Scenario/hooks.ts deleted file mode 100644 index f6da5837..00000000 --- a/frontend/src/components/Scenario/hooks.ts +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {useEffect, useState} from 'react'; -import {Dictionary} from '../../util/util'; -import {useGetCaseDataSingleSimulationEntryQuery} from '../../store/services/caseDataApi'; -import {useAppSelector} from '../../store/hooks'; - -export function useGetSimulationStartValues() { - const startDay = useAppSelector((state) => state.dataSelection.simulationStart); - const node = useAppSelector((state) => state.dataSelection.district.ags); - - const [compartmentValues, setCompartmentValues] = useState | null>(null); - - const {data: caseData} = useGetCaseDataSingleSimulationEntryQuery( - { - node: node, - day: startDay ?? '', - groups: ['total'], - }, - {skip: !startDay} - ); - - useEffect(() => { - if (caseData?.results && caseData.results.length > 0) { - setCompartmentValues(caseData.results[0].compartments); - } - }, [caseData]); - - return compartmentValues; -} diff --git a/frontend/src/components/Scenario/index.tsx b/frontend/src/components/Scenario/index.tsx deleted file mode 100644 index 5d11a977..00000000 --- a/frontend/src/components/Scenario/index.tsx +++ /dev/null @@ -1,144 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useState} from 'react'; -import {useAppSelector} from '../../store/hooks'; -import {useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import {ScrollSync} from 'react-scroll-sync'; -import ConfirmDialog from '../shared/ConfirmDialog'; -import CompartmentList from './CompartmentList'; -import DataCardList from './DataCardList'; - -// Let's import pop-ups only once they are opened. -const ManageGroupDialog = React.lazy(() => import('../ManageGroupDialog')); - -/** - * React Component to render the Scenario Cards Section - * @returns {JSX.Element} JSX Element to render the scenario card container and the scenario cards within. - * @see ScenarioCard - */ -export default function Scenario(): JSX.Element { - // State for the groups management dialog - const [open, setOpen] = React.useState(false); - - const {t} = useTranslation(); - const theme = useTheme(); - - const compartmentsExpanded = useAppSelector((state) => state.dataSelection.compartmentsExpanded); - - const [groupEditorUnsavedChanges, setGroupEditorUnsavedChanges] = useState(false); - const [closeDialogOpen, setCloseDialogOpen] = useState(false); - - return ( - - - - - - - - - - { - if (groupEditorUnsavedChanges) { - setCloseDialogOpen(true); - } else { - setOpen(false); - } - }} - > - { - if (groupEditorUnsavedChanges) { - setCloseDialogOpen(true); - } else { - setOpen(false); - } - }} - unsavedChangesCallback={(unsavedChanges) => setGroupEditorUnsavedChanges(unsavedChanges)} - /> - { - if (answer) { - setOpen(false); - } - setCloseDialogOpen(false); - }} - /> - - - - ); -} diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx index 3aa84419..2a4208ff 100644 --- a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx @@ -64,6 +64,7 @@ export default function CompartmentsRows({ }} > value.toString(), customLang: 'global', overrides: {}}, +}: DatePickerProps) { // Function used to update the starting date + const {t: defaultT} = useTranslation(); + const {t: customT} = useTranslation(localization.customLang); const updateDate = (newDate: Dayjs | null): void => { - if (newDate) { + if ( + (newDate && minDate && maxDate && newDate.isAfter(dayjs(minDate)) && newDate.isBefore(dayjs(maxDate))) || + (newDate && minDate && newDate.isSame(dayjs(minDate))) || + (newDate && maxDate && newDate.isSame(dayjs(maxDate))) + ) setStartDay(newDate.toString()); - } + else return; }; - return ( - label={'Reference-day'} + label={ + localization.overrides && localization.overrides['scenario.reference-day'] + ? customT(localization.overrides['scenario.reference-day']) + : defaultT('scenario.reference-day') + } value={dayjs(startDay)} minDate={dayjs(minDate)} maxDate={dayjs(maxDate)} diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index 2360b1e2..6b0173c6 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -28,7 +28,7 @@ import React from 'react'; import CardContainer from './CardsComponents/CardContainer'; import CompartmentsRows from './CompartmentsComponents/CompartmentsRows'; import FilterDialogContainer from './FilterComponents/FilterDialogContainer'; -import GeneralButton from './GeneralButtonComponents/GeneralButton'; +import GeneralButton from './ExpandedButtonComponents/ExpandedButton'; import ReferenceDatePicker from './ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; import {GroupResponse} from 'types/group'; import {SimulationModel, SimulationDataByNode, Simulations} from 'types/scenario'; @@ -396,6 +396,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme setStartDay={setStartDay} minDate={useAppSelector((state) => state.dataSelection.minDate)} maxDate={useAppSelector((state) => state.dataSelection.maxDate)} + localization={localization} /> Date: Wed, 12 Jun 2024 11:25:31 +0200 Subject: [PATCH 030/119] Add Compliance information in missing files --- frontend/src/DataContext.tsx | 2 +- .../CardsComponents/CardContainer.test.tsx | 4 +- .../CardsComponents/DataCard.test.tsx | 70 ++++++++++--------- .../ScenarioComponents/ScenarioContainer.tsx | 2 +- .../components/ScenarioComponents/hooks.ts | 31 ++++++++ 5 files changed, 72 insertions(+), 37 deletions(-) create mode 100644 frontend/src/components/ScenarioComponents/hooks.ts diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 1e36e494..04b67b26 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useGetSimulationStartValues} from 'components/Scenario/hooks'; +import {useGetSimulationStartValues} from 'components/ScenarioComponents/hooks'; import React, {useMemo} from 'react'; import {createContext, useState, useEffect} from 'react'; import {useAppSelector} from 'store/hooks'; diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx index 1ad15d37..c5be6262 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import CardContainer from 'components/ScenarioComponents/CardsComponents/CardContainer'; import React, {useState} from 'react'; import {filterValue, cardValue} from 'types/Cardtypes'; @@ -105,7 +108,6 @@ describe('CardContainer', () => { expect(screen.getByText('scenario-names.Scenario 1')).toBeInTheDocument(); expect(screen.getByText('scenario-names.Scenario 2')).toBeInTheDocument(); expect(screen.getByText('scenario-names.Scenario 3')).toBeInTheDocument(); - screen.debug(); }); const compartments: string[] = ['Compartment 1', 'Compartment 2', 'Compartment 3']; diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx index d0663f77..36158012 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import React, {useState} from 'react'; import {render, screen} from '@testing-library/react'; import {describe, test, expect} from 'vitest'; @@ -8,27 +11,26 @@ import Theme from 'util/Theme'; import {ThemeProvider} from '@mui/system'; import DataCard from 'components/ScenarioComponents/CardsComponents/DataCard'; -// Wrapper component to provide mock data to DataCard function DataCardTest() { - const mockIndex = 0; - const mockCompartmentValues: Dictionary = { + const Index = 0; + const CompartmentValues: Dictionary = { 'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30, }; - const mockStartValues: Dictionary = { + const StartValues: Dictionary = { 'Compartment 1': 100, 'Compartment 2': 200, 'Compartment 3': 307, }; - const mockLabel = 'Scenario 1'; - const mockCompartmentsExpanded = true; - const mockCompartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; - const mockSelectedCompartment = 'Compartment 1'; - const mockSelectedScenario = true; - const mockColor = 'primary'; - const mockActiveScenarios = [0, 1, 2]; - const mockFilterValues: Dictionary = { + const Label = 'Scenario 1'; + const CompartmentsExpanded = true; + const Compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const SelectedCompartment = 'Compartment 1'; + const SelectedScenario = true; + const Color = 'primary'; + const ActiveScenarios = [0, 1, 2]; + const FilterValues: Dictionary = { '0': [ {filteredTitle: 'Group 1', filteredValues: {'Compartment 1': 10, 'Compartment 2': 20, 'Compartment 3': 30}}, {filteredTitle: 'Group 2', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, @@ -45,9 +47,9 @@ function DataCardTest() { {filteredTitle: 'Group 3', filteredValues: {'Compartment 1': 40, 'Compartment 2': 50, 'Compartment 3': 60}}, ], }; - const mockMinCompartmentsRows = 1; - const mockMaxCompartmentsRows = 3; - const mockGroupFilters: Dictionary = { + const MinCompartmentsRows = 1; + const MaxCompartmentsRows = 3; + const GroupFilters: Dictionary = { '0': { id: 'group1', name: 'Group 1', @@ -77,29 +79,29 @@ function DataCardTest() { }, }; - const [activeScenarios, setActiveScenarios] = useState(mockActiveScenarios); - const [selectedScenario, setSelectedScenario] = useState(mockIndex); + const [activeScenarios, setActiveScenarios] = useState(ActiveScenarios); + const [, setSelectedScenario] = useState(Index); return ( ); @@ -130,7 +132,7 @@ describe('DataCard', () => { expect(screen.getByText('Group 2')).toBeInTheDocument(); expect(screen.getByText('Group 3')).toBeInTheDocument(); }); - const mockGroupFilters: Dictionary = { + const GroupFilters: Dictionary = { '0': { id: 'group1', name: 'Group 1', @@ -164,13 +166,13 @@ describe('DataCard', () => { // Verify visibility based on group filters const group1 = screen.getByText('Group 1'); const group2Element = screen.getByText('Group 2'); - if (mockGroupFilters['0'].isVisible) { + if (GroupFilters['0'].isVisible) { expect(group1).toBeInTheDocument(); } else { expect(group1).not.toBeInTheDocument(); } - if (mockGroupFilters['1'].isVisible) { + if (GroupFilters['1'].isVisible) { expect(group2Element).toBeVisible(); } else { expect(group2Element).not.toBeVisible(); diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index 6b0173c6..5f99d65a 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -8,7 +8,7 @@ import {GroupFilter} from '../../types/Filtertypes'; import {GroupCategories, GroupSubcategories} from 'store/services/groupApi'; import {NumberFormatter} from 'util/hooks'; import {useTranslation} from 'react-i18next'; -import {useAppDispatch, useAppSelector} from 'store/hooks'; + import { selectCompartment, selectScenario, diff --git a/frontend/src/components/ScenarioComponents/hooks.ts b/frontend/src/components/ScenarioComponents/hooks.ts new file mode 100644 index 00000000..f6da5837 --- /dev/null +++ b/frontend/src/components/ScenarioComponents/hooks.ts @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect, useState} from 'react'; +import {Dictionary} from '../../util/util'; +import {useGetCaseDataSingleSimulationEntryQuery} from '../../store/services/caseDataApi'; +import {useAppSelector} from '../../store/hooks'; + +export function useGetSimulationStartValues() { + const startDay = useAppSelector((state) => state.dataSelection.simulationStart); + const node = useAppSelector((state) => state.dataSelection.district.ags); + + const [compartmentValues, setCompartmentValues] = useState | null>(null); + + const {data: caseData} = useGetCaseDataSingleSimulationEntryQuery( + { + node: node, + day: startDay ?? '', + groups: ['total'], + }, + {skip: !startDay} + ); + + useEffect(() => { + if (caseData?.results && caseData.results.length > 0) { + setCompartmentValues(caseData.results[0].compartments); + } + }, [caseData]); + + return compartmentValues; +} From 55353b7b2732fdf3304eeaa0c3fa4498fe2110b2 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 12 Jun 2024 12:23:16 +0200 Subject: [PATCH 031/119] :sparkles: fix formatting --- frontend/src/App.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/App.scss b/frontend/src/App.scss index 9b73b1fd..70ebea8c 100644 --- a/frontend/src/App.scss +++ b/frontend/src/App.scss @@ -47,4 +47,4 @@ body { background-color: #543cf0; border-radius: 13px; border: 3px solid transparent; -} \ No newline at end of file +} From a42182e19fa1dca2f70aae1773bbae3729d0b105 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 12 Jun 2024 12:26:09 +0200 Subject: [PATCH 032/119] :sparkles: fix formatting --- .../src/components/ScenarioComponents/ScenarioContainer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index 5f99d65a..5688e0f3 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -8,7 +8,6 @@ import {GroupFilter} from '../../types/Filtertypes'; import {GroupCategories, GroupSubcategories} from 'store/services/groupApi'; import {NumberFormatter} from 'util/hooks'; import {useTranslation} from 'react-i18next'; - import { selectCompartment, selectScenario, @@ -33,6 +32,7 @@ import ReferenceDatePicker from './ReferenceDatePickerComponents.tsx/ReferenceDa import {GroupResponse} from 'types/group'; import {SimulationModel, SimulationDataByNode, Simulations} from 'types/scenario'; import {CaseDataByNode} from 'types/caseData'; +import {useAppDispatch, useAppSelector} from 'store/hooks'; interface ScenarioContainerProps { /*The minimum number of compartment rows.*/ From 3ac03e4bb8a22dbee0c1351fb441d6153639d93e Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 12 Jun 2024 14:18:43 +0200 Subject: [PATCH 033/119] :sparkles: Format Linechart component --- frontend/src/components/LineChartComponents/LineChart.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index a02ecbb5..ea8c59b7 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -149,7 +149,7 @@ export default function LineChart({ customLang: 'global', overrides: {}, }, -}: LineChartProps) { +}: LineChartProps): JSX.Element { const {t: defaultT, i18n} = useTranslation(); const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); From ac0d7195d40bbc6ece843abadc03c4142bdee52b Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 12 Jun 2024 14:50:13 +0200 Subject: [PATCH 034/119] :wrench: adjusting ui responsivness across multiple browser --- frontend/src/App.scss | 25 + .../components/shared/ConfirmDialog.test.tsx | 2 +- frontend/src/components/ManageGroupDialog.tsx | 474 ------------------ .../CardsComponents/CardContainer.tsx | 4 +- .../GroupFilter/FilterButton.tsx | 5 +- .../GroupFilter/FilterCard.tsx | 7 +- .../GroupFilter/FilterRows.tsx | 5 +- .../GroupFilter/FiltersContainer.tsx | 4 +- .../CardsComponents/MainCard/CardRows.tsx | 6 +- .../CardsComponents/MainCard/MainCard.tsx | 7 +- .../CompartmentsRow.tsx | 2 +- .../FilterComponents/ConfirmDialog.tsx | 104 ---- .../FilterDialogContainer.tsx | 6 +- .../FilterComponents/GroupFilterCard.tsx | 12 +- .../FilterComponents/ManageGroupDialog.tsx | 2 +- .../ScenarioComponents/ScenarioContainer.tsx | 7 +- .../src/components/shared/ConfirmDialog.tsx | 24 +- 17 files changed, 76 insertions(+), 620 deletions(-) delete mode 100644 frontend/src/components/ManageGroupDialog.tsx delete mode 100644 frontend/src/components/ScenarioComponents/FilterComponents/ConfirmDialog.tsx diff --git a/frontend/src/App.scss b/frontend/src/App.scss index 70ebea8c..cba144aa 100644 --- a/frontend/src/App.scss +++ b/frontend/src/App.scss @@ -48,3 +48,28 @@ body { border-radius: 13px; border: 3px solid transparent; } + +/* New CSS class for different heights in Firefox and Edge for the CmpartmentsRow listItem */ +/* Firefox */ +@-moz-document url-prefix() { + .row { + height: 45px; + } +} + +/* Chrome, Edge, and Safari */ +.row { + height: 40px; +} + +/* New CSS class for different PaddingTop in Firefox and Edge for aligning the sync scroling row in all the components */ +/* Firefox */ +@-moz-document url-prefix() { + .datepicker-paddingTop { + padding-top: 24px; + } +} + +.datepicker-paddingTop { + padding-top: 19px; +} diff --git a/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx b/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx index 33af4097..7302338d 100644 --- a/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx +++ b/frontend/src/__tests__/components/shared/ConfirmDialog.test.tsx @@ -4,7 +4,7 @@ import React from 'react'; import {describe, expect, it, vi} from 'vitest'; import {render, fireEvent, screen} from '@testing-library/react'; -import ConfirmDialog from 'components/ScenarioComponents/FilterComponents/ConfirmDialog'; +import ConfirmDialog from 'components/shared/ConfirmDialog'; describe('ConfirmDialog', () => { it('renders the correct title and text', () => { diff --git a/frontend/src/components/ManageGroupDialog.tsx b/frontend/src/components/ManageGroupDialog.tsx deleted file mode 100644 index 2b9617c6..00000000 --- a/frontend/src/components/ManageGroupDialog.tsx +++ /dev/null @@ -1,474 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import React, {useCallback, useEffect, useState} from 'react'; -import {useAppDispatch, useAppSelector} from '../store/hooks'; -import {useTranslation} from 'react-i18next'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Card from '@mui/material/Card'; -import CardActionArea from '@mui/material/CardActionArea'; -import CardActions from '@mui/material/CardActions'; -import CardContent from '@mui/material/CardContent'; -import Checkbox from '@mui/material/Checkbox'; -import Divider from '@mui/material/Divider'; -import FormControlLabel from '@mui/material/FormControlLabel'; -import FormGroup from '@mui/material/FormGroup'; -import IconButton from '@mui/material/IconButton'; -import TextField from '@mui/material/TextField'; -import Typography from '@mui/material/Typography'; -import Close from '@mui/icons-material/Close'; -import DeleteForever from '@mui/icons-material/DeleteForever'; -import GroupAdd from '@mui/icons-material/GroupAdd'; -import Visibility from '@mui/icons-material/Visibility'; -import VisibilityOffOutlined from '@mui/icons-material/VisibilityOffOutlined'; -import {useTheme} from '@mui/material/styles'; -import {GroupFilter} from '../types/group'; -import {GroupSubcategory, useGetGroupCategoriesQuery, useGetGroupSubcategoriesQuery} from '../store/services/groupApi'; -import {setGroupFilter, deleteGroupFilter, toggleGroupFilter} from '../store/DataSelectionSlice'; -import {Dictionary} from '../util/util'; -import ConfirmDialog from './shared/ConfirmDialog'; - -/** - * This dialog provides an editor to create, edit, toggle and delete group filters. It uses a classic master detail view - * with the available filters on the left and the filter configuration on the right. - * - * @param props Contains an onCloseRequest function, which is called, when the close button is called. So please handle - * it and allow the dialog to close. Additionally, an unsavedChangesCallback gives info, if the dialog currently contains - * changes that weren't saved. - */ -export default function ManageGroupDialog(props: { - onCloseRequest: () => void; - unsavedChangesCallback: (unsavedChanges: boolean) => void; -}): JSX.Element { - const {t} = useTranslation(); - const theme = useTheme(); - - const {data: groupCategories} = useGetGroupCategoriesQuery(); - - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); - - // The currently selected filter. - const [selectedGroupFilter, setSelectedGroupFilter] = useState(null); - - // A filter the user might open. It will first be checked, if unsaved changes are present. - const [nextSelectedGroupFilter, setNextSelectedGroupFilter] = useState(null); - - const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); - const [unsavedChanges, setUnsavedChanges] = useState(false); - - // This effect ensures that the user doesn't discard unsaved changes without confirming it first. - useEffect(() => { - if (nextSelectedGroupFilter && nextSelectedGroupFilter.id !== selectedGroupFilter?.id) { - // A new group filter has been selected. - - if (selectedGroupFilter && unsavedChanges) { - // There are unsaved changes. Ask for confirmation first! - setConfirmDialogOpen(true); - } else { - // Everything is saved. Change the selected filter. - setSelectedGroupFilter(nextSelectedGroupFilter); - } - } else if (!nextSelectedGroupFilter && !unsavedChanges) { - // This case is handled, when the user presses the 'abort' button. - setSelectedGroupFilter(null); - } - props.unsavedChangesCallback(unsavedChanges); - }, [unsavedChanges, nextSelectedGroupFilter, selectedGroupFilter, props]); - - return ( - - -
- {t('group-filters.title')} - - - - - - - - {Object.values(groupFilterList || {})?.map((item) => ( - setNextSelectedGroupFilter(groupFilter)} - /> - ))} - - { - const groups: Dictionary> = {}; - groupCategories?.results?.forEach((group) => (groups[group.key] = [])); - setNextSelectedGroupFilter({id: crypto.randomUUID(), name: '', isVisible: false, groups: groups}); - }} - > - - - {t('group-filters.add-group')} - - - - - - - - {selectedGroupFilter ? ( - setNextSelectedGroupFilter(groupFilter)} - unsavedChangesCallback={(edited) => setUnsavedChanges(edited)} - /> - ) : ( - - {t('group-filters.nothing-selected')} - - - )} - - { - if (answer) { - setSelectedGroupFilter(nextSelectedGroupFilter); - } else { - setNextSelectedGroupFilter(null); - } - setConfirmDialogOpen(false); - }} - /> - - ); -} - -interface GroupFilterCardProps { - /** The GroupFilter item to be displayed. */ - item: GroupFilter; - - /** Whether the filter is selected or not. If it is selected, the detail view is displaying this filter's config. */ - selected: boolean; - - /** - * Callback function that is called when the filter is selected or unselected. - * - * @param groupFilter - Either this filter, if it was selected or null, if it was unselected. - */ - selectFilterCallback: (groupFilter: GroupFilter | null) => void; -} - -/** - * GroupFilterCard component displays a card that represents a single filter for the group filter list. The card shows - * the filter name, a toggle switch to turn on or off the filter, and a delete button to remove the filter. - */ -function GroupFilterCard(props: GroupFilterCardProps) { - const theme = useTheme(); - const {t} = useTranslation(); - const dispatch = useAppDispatch(); - - const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); - - return ( - - { - props.selectFilterCallback(props.selected ? null : props.item); - }} - > - - - {props.item.name} - - - - - - } - icon={} - checked={props.item.isVisible} - onClick={() => { - dispatch(toggleGroupFilter(props.item.id)); - }} - /> - { - if (answer) { - dispatch(deleteGroupFilter(props.item.id)); - props.selectFilterCallback(null); - } - setConfirmDialogOpen(false); - }} - /> - setConfirmDialogOpen(true)}> - - - - - ); -} - -interface GroupFilterEditorProps { - /** The GroupFilter item to be edited. */ - groupFilter: GroupFilter; - - /** - * Callback function that is called, when a new filter is created, so it will be selected immediately or when the user - * wants to close the editor. - * - * @param groupFilter - Either the current filter or null when the user wants to close the current filter's editor. - */ - selectGroupFilterCallback: (groupFilter: GroupFilter | null) => void; - - /** - * A callback that notifies the parent, if there are currently unsaved changes for this group filter. - * - * @param unsavedChanges - If the group filter has been modified without saving. - */ - unsavedChangesCallback: (unsavedChanges: boolean) => void; -} - -/** - * This is the detail view of the GroupFilter dialog. It allows to edit and create groups. It has a text field for the - * name at the top and columns of checkboxes for groups in the center. It requires that at least one checkbox of each - * group is selected before the apply button becomes available. It is also possible to discard changes by clicking the - * abort button before applying the changes. - * - * @param props - */ -function GroupFilterEditor(props: GroupFilterEditorProps): JSX.Element { - const {t} = useTranslation(); - const {t: tBackend} = useTranslation('backend'); - const theme = useTheme(); - const dispatch = useAppDispatch(); - - const {data: groupCategories} = useGetGroupCategoriesQuery(); - const {data: groupSubCategories} = useGetGroupSubcategoriesQuery(); - - const [name, setName] = useState(props.groupFilter.name); - const [groups, setGroups] = useState(props.groupFilter.groups); - - // Every group must have at least one element selected to be valid. - const [valid, setValid] = useState(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); - const [unsavedChanges, setUnsavedChanges] = useState(false); - - // Checks if the group filer is in a valid state. - useEffect(() => { - setValid(name.length > 0 && Object.values(groups).every((group) => group.length > 0)); - }, [name, groups, props]); - - // Updates the parent about the current save state of the group filter. - useEffect(() => { - props.unsavedChangesCallback(unsavedChanges); - }, [props, unsavedChanges]); - - const toggleGroup = useCallback( - (subGroup: GroupSubcategory) => { - // We need to make a copy before we modify the entry. - let category = [...groups[subGroup.category]]; - - if (category.includes(subGroup.key)) { - category = category.filter((key) => key !== subGroup.key); - } else { - category.push(subGroup.key); - } - - setGroups({ - ...groups, - [subGroup.category]: category, - }); - setUnsavedChanges(true); - }, - [groups, setGroups] - ); - - return ( - - e.target.select()} - onChange={(e) => { - setUnsavedChanges(true); - setName(e.target.value); - }} - /> - - {groupCategories?.results?.map((group) => ( - - 0 ? theme.palette.text.primary : theme.palette.error.main} - variant='h2' - > - {tBackend(`group-filters.categories.${group.key}`)} - - - {groupSubCategories?.results - ?.filter((subCategory) => subCategory.category === group.key) - .filter((subGroup) => subGroup.key !== 'total') // TODO: We filter out the total group for now. - .map((subGroup) => ( - toggleGroup(subGroup)} - /> - } - /> - ))} - - - ))} - - - - - - - ); -} diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx index 09d98400..1bfd73a4 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -131,8 +131,8 @@ export default function CardContainer({ flexDirection: 'row', gap: 4, minHeight: compartmentsExpanded - ? `${(410 / 6) * maxCompartmentsRows}px` - : `${(335 / 4) * minCompartmentsRows}px`, + ? `${(400 / 6) * maxCompartmentsRows}px` + : `${(325 / 4) * minCompartmentsRows}px`, overflowX: 'auto', minWidth: 400, paddingLeft: 4, diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx index a2e9adbc..dd312763 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx @@ -17,7 +17,7 @@ interface FilterButtonProps { borderColor: string; /* Background color of the button */ - backgroundColor?: string; + backgroundColor: string; /* ID number of the button */ idNumber: number; @@ -35,6 +35,7 @@ export default function FilterButton({ setFolded, borderColor, idNumber, + backgroundColor, maxCompartmentsRows, }: FilterButtonProps) { return ( @@ -47,7 +48,7 @@ export default function FilterButton({ boxSizing: 'border-box', borderRight: `1px solid ${borderColor}`, marginRight: '1px', - bgcolor: 'white', + bgcolor: backgroundColor, }} onClick={() => setFolded(!folded)} > diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx index 2818454c..2043da67 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterCard.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {Box} from '@mui/material'; +import {Box, useTheme} from '@mui/material'; import Divider from '@mui/material/Divider'; import FilterRows from './FilterRows'; import CardTitle from '../MainCard/CardTitle'; @@ -61,6 +61,7 @@ export default function FilterCard({ minCompartmentsRows, localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, }: FilterCardProps) { + const theme = useTheme(); return ( @@ -79,7 +79,7 @@ export default function FiltersContainer({ folded={folded} setFolded={setFolded} borderColor={theme.palette.divider} - backgroundColor='white' + backgroundColor={theme.palette.background.paper} idNumber={1} maxCompartmentsRows={maxCompartmentsRows} /> diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx index 32e4ebf1..89df9ca0 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardRows.tsx @@ -1,6 +1,6 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {Box, List, ListItem, ListItemText} from '@mui/material'; +import {Box, List, ListItem, ListItemText, useTheme} from '@mui/material'; import TrendArrow from './TrendArrow'; import {ScrollSyncPane} from 'react-scroll-sync'; import {useTranslation} from 'react-i18next'; @@ -66,7 +66,7 @@ export default function CardRows({ }: CardRowsProps) { const {t: defaultT} = useTranslation(); const {t: customT} = useTranslation(localization.customLang); - + const theme = useTheme(); // Function to get formatted and translated values function GetFormattedAndTranslatedValues(filteredValues: number | null): string { if (filteredValues) @@ -114,7 +114,7 @@ export default function CardRows({ className='hide-scrollbar' sx={{ width: 'full', - bgcolor: 'white', + bgcolor: theme.palette.background.paper, pd: 2, overflowX: 'auto', visibility: isFlipped ? 'visible' : 'hidden', diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx index b3fbdfcb..10fb461f 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import React from 'react'; -import {Box} from '@mui/material'; +import {Box, useTheme} from '@mui/material'; import CardTitle from './CardTitle'; import CardTooltip from './CardTooltip'; import CardRows from './CardRows'; @@ -99,6 +99,7 @@ function MainCard({ localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, arrow = true, }: MainCardProps) { + const theme = useTheme(); return ( void; - - /** The text to be displayed on the abort button. */ - abortButtonText?: string; - - /** The text to be displayed on the confirm button. */ - confirmButtonText?: string; -} - -/** - * A component that displays a confirmation dialog. - * @param props The properties for the component. - * - * @example - * ```js - * function ExampleComponent() { - * // State to keep track of whether the dialog should be open or not. - * const [open, setOpen] = useState(false); - * - * // Function to handle the user's answer. - * const handleAnswer = (answer: boolean) => { - * console.log(`The user answered ${answer ? 'yes' : 'no'}.`); - * setOpen(false); - * }; - * - * return ( - *
- * - * - *
- * ); - * } - * ``` - */ -export default function ConfirmDialog(props: ConfirmDialogProps) { - return ( - - - {props.title} - - - {props.text} - - - - - - - - ); -} diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx index aba93001..ed9553ca 100644 --- a/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/FilterDialogContainer.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import {Box, Button, Dialog, useTheme} from '@mui/material'; -import ConfirmDialog from './ConfirmDialog'; +import ConfirmDialog from '../../shared/ConfirmDialog'; import {useState} from 'react'; import ManageGroupDialog from './ManageGroupDialog'; import {useTranslation} from 'react-i18next'; @@ -52,9 +52,8 @@ export default function FilterDialogContainer({ sx={{ minHeight: '20vh', paddingLeft: 4, - paddingRight: 2, + paddingRight: 4, paddingTop: 2, - gap: '20px', display: 'flex', flexDirection: 'column', }} @@ -92,6 +91,7 @@ export default function FilterDialogContainer({ sx={{ width: '200px', alignSelf: 'center', + marginTop: '20px', }} onClick={() => { setOpen(true); diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx index 9ed1ccc4..4e3f857a 100644 --- a/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/GroupFilterCard.tsx @@ -14,7 +14,7 @@ import { useTheme, } from '@mui/material'; import {useState} from 'react'; -import ConfirmDialog from './ConfirmDialog'; +import ConfirmDialog from '../../shared/ConfirmDialog'; import {useTranslation} from 'react-i18next'; import React from 'react'; import {GroupFilter} from 'types/group'; @@ -139,6 +139,16 @@ export default function GroupFilterCard({ }) : defaultT('group-filters.confirm-deletion-text', {groupName: item.name}) } + abortButtonText={ + localization.overrides && localization.overrides['group-filters.close'] + ? customT(localization.overrides['group-filters.close']) + : defaultT('group-filters.close') + } + confirmButtonText={ + localization.overrides && localization.overrides['group-filters.discard'] + ? customT(localization.overrides['group-filters.discard']) + : defaultT('group-filters.discard') + } onAnswer={(answer) => { if (answer) { DeleteFilter(item.id); diff --git a/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx b/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx index bc740136..783c0887 100644 --- a/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx +++ b/frontend/src/components/ScenarioComponents/FilterComponents/ManageGroupDialog.tsx @@ -4,7 +4,7 @@ import {Close, GroupAdd} from '@mui/icons-material'; import {Box, Typography, IconButton, Divider, Card, CardActionArea, CardContent, Button, useTheme} from '@mui/material'; import {useState, useEffect} from 'react'; -import ConfirmDialog from './ConfirmDialog'; +import ConfirmDialog from '../../shared/ConfirmDialog'; import GroupFilterCard from './GroupFilterCard'; import GroupFilterEditor from './GroupFilterEditor'; import {useTranslation} from 'react-i18next'; diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index 5688e0f3..dddb297a 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -357,7 +357,6 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme sx={{ display: 'flex', flexDirection: 'row', - paddingTop: 1, alignItems: 'flex-start', justifyContent: 'space-between', height: '100%', @@ -379,6 +378,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme > @@ -400,7 +399,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme /> - {props.title} - + {props.text} + - From 70e6645612513f6a854d3def95df268442a812aa Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 12 Jun 2024 15:55:47 +0200 Subject: [PATCH 035/119] :wrench: small ui responsive adjustment --- .../ScenarioComponents/CardsComponents/CardContainer.tsx | 2 +- .../CardsComponents/MainCard/CardTooltip.tsx | 8 ++++++-- .../CardsComponents/MainCard/MainCard.tsx | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx index 1bfd73a4..6261f213 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -131,7 +131,7 @@ export default function CardContainer({ flexDirection: 'row', gap: 4, minHeight: compartmentsExpanded - ? `${(400 / 6) * maxCompartmentsRows}px` + ? `${(390 / 6) * maxCompartmentsRows}px` : `${(325 / 4) * minCompartmentsRows}px`, overflowX: 'auto', minWidth: 400, diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx index ad7d9a22..07346024 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx @@ -27,6 +27,9 @@ interface CardTooltipProps { /* The number of the selected scenario. */ numberSelectedScenario: number | null; + /* A boolean indicating whether the compartments are expanded. */ + compartmentsExpanded: boolean; + /* The number of the selected scenario. */ setSelectedScenario: React.Dispatch>; @@ -47,6 +50,7 @@ export default function CardTooltip({ activeScenario, activeScenarios, numberSelectedScenario, + compartmentsExpanded, setActiveScenarios, setSelectedScenario, localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, @@ -88,11 +92,11 @@ export default function CardTooltip({ sx={{ zIndex: 2, width: 'full', - height: '50px', - borderRadius: '0 0 4px 4px', + height: compartmentsExpanded ? '40px' : '50px', boxShadow: hover || activeScenarios?.includes(index) ? 'none' : `0px 0px 0px 6px ${hexToRGB(color, 0.4)}`, display: hover ? 'flex' : 'none', alignItems: 'flex-end', + alignContent: 'flex-start', }} > Date: Wed, 12 Jun 2024 17:13:27 +0200 Subject: [PATCH 036/119] :heavy_check_mark: add some tests for the cards --- .../MainCard/CardRows.test.tsx | 86 +++++++++++++++++ .../MainCard/CardTitle.test.tsx | 31 +++++++ .../MainCard/MainCard.test.tsx | 92 +++++++++++++++++++ 3 files changed, 209 insertions(+) create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx new file mode 100644 index 00000000..fa2f2e04 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardRows.test.tsx @@ -0,0 +1,86 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@mui/material/styles'; +import CardRows from 'components/ScenarioComponents/CardsComponents/MainCard/CardRows'; +import Theme from 'util/Theme'; + +describe('CardRows Component', () => { + const compartments = ['Compartment 1', 'Compartment 2']; + const compartmentValues = { + 'Compartment 1': 100, + 'Compartment 2': 200, + }; + const startValues = { + 'Compartment 1': 50, + 'Compartment 2': 100, + }; + const selectedCompartment = 'Compartment 1'; + const color = '#000000'; + const minCompartmentsRows = 1; + const maxCompartmentsRows = 2; + + test('renders compartment values and rates correctly', () => { + render( + + + + ); + + expect(screen.getByText('100')).toBeInTheDocument(); + expect(screen.getByText('200')).toBeInTheDocument(); + expect(screen.getAllByText('+100%')).toHaveLength(2); + }); + + test('applies the correct styles to selected compartment', () => { + render( + + + + ); + + const selectedElement = screen.getByText('100'); + expect(selectedElement.parentElement).toHaveStyle(`background-color: rgba(0, 0, 0, 0.1)`); + }); + + test('renders with arrows when arrow prop is true', () => { + render( + + + + ); + + expect(screen.getAllByTestId('ArrowDropUpIcon').length).toBe(2); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx new file mode 100644 index 00000000..15539692 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React from 'react'; +import {render, screen} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import CardTitle from 'components/ScenarioComponents/CardsComponents/MainCard/CardTitle'; + +describe('CardTitle Component', () => { + test('renders the card title with the correct label', () => { + render(); + expect(screen.getByText('Test Label')).toBeInTheDocument(); + }); + + test('applies the correct styles when isFlipped is false', () => { + render(); + const titleElement = screen.getByText('Test Label'); + expect(titleElement).toHaveStyle({ + transform: 'rotateY(-180deg)', + textAlign: 'right', + }); + }); + + test('applies the correct color when the color prop is provided', () => { + render(); + const titleElement = screen.getByText('Test Label'); + expect(titleElement).toHaveStyle({ + color: '#00000', + }); + }); +}); diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx new file mode 100644 index 00000000..e474e715 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx @@ -0,0 +1,92 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {render, screen, fireEvent} from '@testing-library/react'; +import {describe, test, expect} from 'vitest'; +import {ThemeProvider} from '@mui/material'; +import Theme from 'util/Theme'; +import {Dictionary} from 'types/Cardtypes'; +import MainCard from 'components/ScenarioComponents/CardsComponents/MainCard/MainCard'; + +function MainCardTest() { + const Index = 0; + const CompartmentValues: Dictionary = { + 'Compartment 1': 10, + 'Compartment 2': 20, + 'Compartment 3': 30, + }; + const StartValues: Dictionary = { + 'Compartment 1': 100, + 'Compartment 2': 200, + 'Compartment 3': 307, + }; + const Label = 'Scenario 1'; + const CompartmentsExpanded = true; + const Compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; + const SelectedCompartment = 'Compartment 1'; + const SelectedScenario = false; + const Hover = false; + const Color = 'primary'; + const ActiveScenarios = [1, 2]; + const MinCompartmentsRows = 1; + const MaxCompartmentsRows = 3; + + const [hover, setHover] = useState(Hover); + const [activeScenarios, setActiveScenarios] = useState(ActiveScenarios); + const [, setSelectedScenario] = useState(Index); + + return ( + + + + ); +} + +describe('MainCard', () => { + test('renders MainCard correctly', () => { + render(); + expect(screen.getByText('Scenario 1')).toBeInTheDocument(); + }); + + test('renders compartment values correctly', () => { + render(); + // Verify if compartment values are rendered correctly + const compartments1 = screen.getAllByText('10'); + expect(compartments1).toHaveLength(1); + const compartments2 = screen.getAllByText('20'); + expect(compartments2).toHaveLength(1); + const compartments3 = screen.getAllByText('30'); + expect(compartments3).toHaveLength(1); + }); + + test('handles click event to activate and renders tooltip correctly on hover scenario', () => { + render(); + // Verify click event to select scenario + const card = screen.getByText('Scenario 1'); + fireEvent.mouseOver(card); + const tooltip = screen.getByLabelText('scenario.activate'); + fireEvent.click(tooltip); + expect(screen.getByLabelText('scenario.deactivate')).toBeVisible(); + }); +}); From 6a554c8b4415f512bf1212ec462000383ec35b19 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 13 Jun 2024 10:00:36 +0200 Subject: [PATCH 037/119] :beetle: fix the first render bug on firefox --- frontend/locales/de-backend.json5 | 2 +- frontend/locales/en-backend.json5 | 2 +- .../ReferenceDatePicker.tsx | 26 ++++++++++--------- .../ScenarioComponents/ScenarioContainer.tsx | 2 +- frontend/src/store/DataSelectionSlice.ts | 1 - 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/frontend/locales/de-backend.json5 b/frontend/locales/de-backend.json5 index d9108ebc..4b2a41db 100644 --- a/frontend/locales/de-backend.json5 +++ b/frontend/locales/de-backend.json5 @@ -276,7 +276,7 @@ }, }, 'scenario-names': { - 'Baseline Scenario': 'Basisszenario', + 'Baseline Scenario': 'Geschätzte Fälle', baseline: 'Basisszenario', closed_schools: 'Geschlossene Schulen', remote_work: 'Homeoffice', diff --git a/frontend/locales/en-backend.json5 b/frontend/locales/en-backend.json5 index e68b8bef..5b0f3bb3 100644 --- a/frontend/locales/en-backend.json5 +++ b/frontend/locales/en-backend.json5 @@ -274,7 +274,7 @@ }, }, 'scenario-names': { - 'Baseline Scenario': 'Baseline Scenario', + 'Baseline Scenario': 'Estimated Cases', baseline: 'Baseline Scenario', closed_schools: 'Schools Closed', remote_work: 'Home Office', diff --git a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx index 5763dea5..425cc002 100644 --- a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx +++ b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -62,18 +62,20 @@ export default function ReferenceDatePicker({ marginBottom: 1, }} > - - label={ - localization.overrides && localization.overrides['scenario.reference-day'] - ? customT(localization.overrides['scenario.reference-day']) - : defaultT('scenario.reference-day') - } - value={dayjs(startDay)} - minDate={dayjs(minDate)} - maxDate={dayjs(maxDate)} - onChange={updateDate} - slotProps={{textField: {size: 'small'}}} - /> + {startDay && ( + + label={ + localization.overrides && localization.overrides['scenario.reference-day'] + ? customT(localization.overrides['scenario.reference-day']) + : defaultT('scenario.reference-day') + } + value={dayjs(startDay)} + minDate={dayjs(minDate)} + maxDate={dayjs(maxDate)} + onChange={updateDate} + slotProps={{textField: {size: 'small'}}} + /> + )} ); diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index dddb297a..0c6d2ed0 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -106,7 +106,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme const [activeScenarios, setActiveScenarios] = useState(storeActiveScenarios); const [selectedScenario, setSelectedScenario] = useState(storeSelectedScenario); const [selectedCompartment, setSelectedCompartment] = useState(storeSelectedCompartment ?? 'Infected'); - const [startDay, setStartDay] = useState(storeStartDay ?? '06-07-2021'); + const [startDay, setStartDay] = useState(storeStartDay ?? '2021-06-07'); const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); const scenarios: Scenario[] = useMemo(() => { diff --git a/frontend/src/store/DataSelectionSlice.ts b/frontend/src/store/DataSelectionSlice.ts index e3c80049..56dbe798 100644 --- a/frontend/src/store/DataSelectionSlice.ts +++ b/frontend/src/store/DataSelectionSlice.ts @@ -30,7 +30,6 @@ export interface DataSelection { compartment: string | null; compartmentsExpanded: boolean | null; activeScenarios: number[] | null; - simulationStart: string | null; minDate: string | null; maxDate: string | null; From 5c2145c43730d2568772e7c42ba9c5e8c2290e60 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 13 Jun 2024 10:02:02 +0200 Subject: [PATCH 038/119] :wrench: Simplify Scenario components --- .../ReferenceDatePicker.tsx | 9 +++++---- .../components/ScenarioComponents/ScenarioContainer.tsx | 6 ++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx index 5763dea5..440a0429 100644 --- a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx +++ b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -43,12 +43,13 @@ export default function ReferenceDatePicker({ const {t: customT} = useTranslation(localization.customLang); const updateDate = (newDate: Dayjs | null): void => { if ( - (newDate && minDate && maxDate && newDate.isAfter(dayjs(minDate)) && newDate.isBefore(dayjs(maxDate))) || - (newDate && minDate && newDate.isSame(dayjs(minDate))) || - (newDate && maxDate && newDate.isSame(dayjs(maxDate))) + newDate && + minDate && + maxDate && + (newDate.isAfter(dayjs(minDate)) || newDate.isSame(dayjs(minDate))) && + (newDate.isBefore(dayjs(maxDate)) || newDate.isSame(dayjs(maxDate))) ) setStartDay(newDate.toString()); - else return; }; return ( diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index dddb297a..3aacdda6 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -106,7 +106,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme const [activeScenarios, setActiveScenarios] = useState(storeActiveScenarios); const [selectedScenario, setSelectedScenario] = useState(storeSelectedScenario); const [selectedCompartment, setSelectedCompartment] = useState(storeSelectedCompartment ?? 'Infected'); - const [startDay, setStartDay] = useState(storeStartDay ?? '06-07-2021'); + const [startDay, setStartDay] = useState(storeStartDay ?? '2021-06-07'); const [resizeRef, resizeBoundingRect] = useBoundingclientrectRef(); const scenarios: Scenario[] = useMemo(() => { @@ -210,9 +210,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme // This effect updates the start date in the state whenever the reference day changes. useEffect(() => { - if (startDay) { - dispatch(setStartDate(dateToISOString(new Date(startDay)))); - } + dispatch(setStartDate(startDay!)); }, [startDay, dispatch]); /* From d7b84956082f90541ed22fc948627f7346ca3885 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 13 Jun 2024 10:17:39 +0200 Subject: [PATCH 039/119] :beetle: Fix Scenario styling --- .../ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx | 4 ++-- .../CompartmentsComponents/CompartmentsRow.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx index 5bf81d2e..07750af8 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx @@ -26,10 +26,10 @@ export default function CardTitle({label, isFlipped = true, color}: CardTitlePro color: color, fontSize: '13pt', fontFamily: ['Inter', 'Arial', 'sans-serif'].join(','), - marginLeft: isFlipped ? 2 : 4, + paddingLeft: 3, marginTop: 4, transform: isFlipped ? 'none' : 'rotateY(-180deg)', - textAlign: isFlipped ? 'left' : 'right', + textAlign: 'left', }} > {label} diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx index ee88e9a0..d9e288c4 100644 --- a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx @@ -71,7 +71,7 @@ export default function CompartmentsRow({ borderTop: `2px ${selected ? theme.palette.background.paper : 'transparent'} solid`, borderBottom: `2px ${selected ? theme.palette.background.paper : 'transparent'} solid`, '&.MuiListItemButton-root.Mui-selected': { - backgroundColor: `${selected ? 'white' : theme.palette.background.paper}`, + backgroundColor: theme.palette.background.paper, }, alignItems: 'center', }} From 247f76a3c22ee73f939e52fe8f0fc0fa7cc103d6 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 13 Jun 2024 10:21:00 +0200 Subject: [PATCH 040/119] :heavy_check_mark: fix the cardTitle test --- .../Scenario/CardsComponents/MainCard/CardTitle.test.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx index 15539692..7f0345bd 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx @@ -17,7 +17,6 @@ describe('CardTitle Component', () => { const titleElement = screen.getByText('Test Label'); expect(titleElement).toHaveStyle({ transform: 'rotateY(-180deg)', - textAlign: 'right', }); }); From 7565616a66c2e90596245014aefbe071129f89a2 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 13 Jun 2024 11:00:12 +0200 Subject: [PATCH 041/119] :wrench: Add new color feature in Scenario components --- .../CardsComponents/CardContainer.tsx | 3 ++- frontend/src/util/Theme.ts | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx index 6261f213..00c4d2cc 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -13,6 +13,7 @@ import {GroupFilter} from 'types/Filtertypes'; import {Scenario} from 'store/ScenarioSlice'; import {cardValue, filterValue} from 'types/Cardtypes'; import {Localization} from 'types/localization'; +import {getScenarioPrimaryColor} from 'util/Theme'; interface CardContainerProps { /* A boolean indicating whether the compartments are expanded. */ @@ -97,7 +98,7 @@ export default function CardContainer({ { + return theme.custom.scenarios[(scenarioId % (theme.custom.scenarios.length - 1)) + 1]; +} + +/** + * This function assigns a primary color to a scenario and consistently returns the same color for the same id. + */ +export function getScenarioPrimaryColor(scenarioId: number, theme: Theme): string { + return getScenarioColorPalette(scenarioId, theme)[0]; +} From 38798d8bc1cf852f35d1b1a1608c229b2c75ab2c Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 13 Jun 2024 11:01:09 +0200 Subject: [PATCH 042/119] :wrench: Fix the filter color --- .../CardsComponents/GroupFilter/FiltersContainer.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx index 778fc1d6..2d80b1dd 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FiltersContainer.tsx @@ -6,6 +6,7 @@ import FilterCard from './FilterCard'; import React from 'react'; import {Dictionary} from 'types/Cardtypes'; import {Localization} from 'types/localization'; +import {getScenarioPrimaryColor} from 'util/Theme'; interface FiltersContainerProps { /* Array of filtered titles */ @@ -69,7 +70,7 @@ export default function FiltersContainer({ maxHeight: `${(340 / 6) * maxCompartmentsRows}px`, boxSizing: 'border-box', border: 1, - borderColor: theme.custom.scenarios[index % theme.custom.scenarios.length][0], + borderColor: getScenarioPrimaryColor(index, theme), borderRadius: 1, bgcolor: theme.palette.background.paper, zIndex: 2, @@ -98,7 +99,7 @@ export default function FiltersContainer({ {filteredValues.map((_, id: number) => ( Date: Thu, 13 Jun 2024 14:30:38 +0200 Subject: [PATCH 043/119] :hammer: Add cologne districts and change color on LineChart and Map components. Refactor map components and container to move data handling in the Data Socket --- frontend/assets/stadtteile_cologne.geojson | 166649 +++++++++++++++ .../assets/stadtteile_cologne.geojson.license | 3 + frontend/assets/stadtteile_cologne_list.json | 604 + .../stadtteile_cologne_list.json.license | 3 + frontend/locales/de-global.json5 | 3 + frontend/locales/en-global.json5 | 3 + frontend/src/DataContext.tsx | 120 + .../LineChartComponents/LineChart.tsx | 13 +- .../Sidebar/MapComponents/HeatLegendEdit.tsx | 3 +- .../Sidebar/MapComponents/HeatMap.tsx | 7 +- .../Sidebar/MapComponents/SearchBar.tsx | 24 +- .../src/components/Sidebar/MapContainer.tsx | 37 +- frontend/src/store/services/caseDataApi.ts | 131 +- frontend/src/store/services/scenarioApi.ts | 166 +- frontend/src/types/cologneDistricts.ts | 11 + 15 files changed, 167704 insertions(+), 73 deletions(-) create mode 100644 frontend/assets/stadtteile_cologne.geojson create mode 100644 frontend/assets/stadtteile_cologne.geojson.license create mode 100644 frontend/assets/stadtteile_cologne_list.json create mode 100644 frontend/assets/stadtteile_cologne_list.json.license create mode 100644 frontend/src/types/cologneDistricts.ts diff --git a/frontend/assets/stadtteile_cologne.geojson b/frontend/assets/stadtteile_cologne.geojson new file mode 100644 index 00000000..f516d246 --- /dev/null +++ b/frontend/assets/stadtteile_cologne.geojson @@ -0,0 +1,166649 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.890423336101029, + 50.94649114299174 + ], + [ + 6.890224547160523, + 50.94570924468355 + ], + [ + 6.890185166154141, + 50.945554659210046 + ], + [ + 6.891060984261878, + 50.94541868294491 + ], + [ + 6.891066175017862, + 50.94541798795858 + ], + [ + 6.891067639415793, + 50.9454208618619 + ], + [ + 6.891068769478924, + 50.945425051819164 + ], + [ + 6.891070833836801, + 50.94543118333566 + ], + [ + 6.891088373510789, + 50.94548574471598 + ], + [ + 6.891092577940823, + 50.94549941755048 + ], + [ + 6.8910967523383, + 50.94551309343979 + ], + [ + 6.891308141278002, + 50.945487747700156 + ], + [ + 6.891303814673017, + 50.94547353303677 + ], + [ + 6.8912994866480615, + 50.945459318347496 + ], + [ + 6.891278534880889, + 50.94539062001296 + ], + [ + 6.8912223498352505, + 50.94520569014909 + ], + [ + 6.891210210995542, + 50.94516614082695 + ], + [ + 6.891205731891053, + 50.945151522279 + ], + [ + 6.891201255634204, + 50.94513690378229 + ], + [ + 6.8911443155977175, + 50.94494973245843 + ], + [ + 6.89108282389913, + 50.9447477640554 + ], + [ + 6.891051103284005, + 50.94464418009789 + ], + [ + 6.891028630915127, + 50.944570280080555 + ], + [ + 6.891012086068915, + 50.94451611079738 + ], + [ + 6.89130269614787, + 50.94451901589192 + ], + [ + 6.891543351940924, + 50.94452131212694 + ], + [ + 6.891729929225926, + 50.94452312499229 + ], + [ + 6.891754621585263, + 50.944523383857046 + ], + [ + 6.891779313579068, + 50.94452365080444 + ], + [ + 6.891998496740495, + 50.944526643871924 + ], + [ + 6.892530944414776, + 50.94453407902356 + ], + [ + 6.892811468035951, + 50.94453777679713 + ], + [ + 6.892849540713218, + 50.944538294039404 + ], + [ + 6.892887613351057, + 50.94453881216791 + ], + [ + 6.893109984958548, + 50.94427021900649 + ], + [ + 6.893426061793549, + 50.943842696405206 + ], + [ + 6.893522880652033, + 50.943711609947115 + ], + [ + 6.8936750153481166, + 50.94350585906243 + ], + [ + 6.893717884997008, + 50.94350161400287 + ], + [ + 6.893745914646126, + 50.94349882889126 + ], + [ + 6.893753787034179, + 50.94349804276601 + ], + [ + 6.893757314971959, + 50.94349769000451 + ], + [ + 6.893758543377703, + 50.94349756736734 + ], + [ + 6.893759088247543, + 50.94349751244255 + ], + [ + 6.893759674570884, + 50.943497453768785 + ], + [ + 6.893760621295934, + 50.94349735842717 + ], + [ + 6.893764010608165, + 50.94349701755446 + ], + [ + 6.893770696287186, + 50.943496344924384 + ], + [ + 6.893793030177263, + 50.943494094698835 + ], + [ + 6.893813530804419, + 50.94349202634584 + ], + [ + 6.893834427554644, + 50.943489918368115 + ], + [ + 6.893844193795511, + 50.94348893256574 + ], + [ + 6.893849224990105, + 50.94348842344872 + ], + [ + 6.8938504005218535, + 50.943488305252956 + ], + [ + 6.893856869014634, + 50.943487650284716 + ], + [ + 6.893885221211942, + 50.94348478371887 + ], + [ + 6.893894455586212, + 50.94348384857533 + ], + [ + 6.893903690000751, + 50.94348291253242 + ], + [ + 6.895090563468051, + 50.943362719422005 + ], + [ + 6.895095066868986, + 50.943362044241965 + ], + [ + 6.895095437586423, + 50.94336190522632 + ], + [ + 6.895099508091403, + 50.94335975174867 + ], + [ + 6.895179431790841, + 50.94331324940158 + ], + [ + 6.89521104737101, + 50.94329454655222 + ], + [ + 6.895236632374729, + 50.94327947370052 + ], + [ + 6.895332252421024, + 50.94322275485105 + ], + [ + 6.895378267162178, + 50.94319548411206 + ], + [ + 6.8954286924958454, + 50.94316555694642 + ], + [ + 6.8954774456981385, + 50.943137128565986 + ], + [ + 6.895918006971836, + 50.94314308876895 + ], + [ + 6.896173171008506, + 50.94314654087338 + ], + [ + 6.896628738051813, + 50.94315275982887 + ], + [ + 6.8967029159222015, + 50.943153715902 + ], + [ + 6.896782798883519, + 50.94315481158955 + ], + [ + 6.896787058420711, + 50.94315487034444 + ], + [ + 6.89679022675884, + 50.94315491393643 + ], + [ + 6.896791221233339, + 50.94315492735656 + ], + [ + 6.896792493079788, + 50.94315494577396 + ], + [ + 6.896798556489159, + 50.943155031631775 + ], + [ + 6.896820716040512, + 50.94315534362771 + ], + [ + 6.896825817731724, + 50.943155415754966 + ], + [ + 6.896831101005989, + 50.94315550194605 + ], + [ + 6.89697721895093, + 50.94315791760068 + ], + [ + 6.896983112444334, + 50.943158014777964 + ], + [ + 6.896986075467761, + 50.94315806545852 + ], + [ + 6.896987497969306, + 50.94315808928599 + ], + [ + 6.8969889076690745, + 50.94315811288282 + ], + [ + 6.896995060124183, + 50.94315821292589 + ], + [ + 6.897289027123448, + 50.94316304424344 + ], + [ + 6.897325701429622, + 50.942954300547264 + ], + [ + 6.897356605639292, + 50.94277858708162 + ], + [ + 6.897607510663045, + 50.9427962505466 + ], + [ + 6.897589580708811, + 50.94252933786749 + ], + [ + 6.897683870924161, + 50.942526478805675 + ], + [ + 6.897703845572527, + 50.94252589507491 + ], + [ + 6.89771097701254, + 50.942525687134456 + ], + [ + 6.897718108047072, + 50.94252548818007 + ], + [ + 6.897831603379979, + 50.94252244152293 + ], + [ + 6.898021019792967, + 50.94251737654714 + ], + [ + 6.89800830205252, + 50.942318530469684 + ], + [ + 6.898009272319267, + 50.9423144728354 + ], + [ + 6.898012276476102, + 50.94231178021277 + ], + [ + 6.898012998938252, + 50.94231113307433 + ], + [ + 6.898013409846515, + 50.942310765430456 + ], + [ + 6.898014537656256, + 50.94230583463367 + ], + [ + 6.8980252371255615, + 50.94230573858815 + ], + [ + 6.898248312501859, + 50.942303071782014 + ], + [ + 6.898360697391993, + 50.942312165180326 + ], + [ + 6.898439909770223, + 50.942318628678485 + ], + [ + 6.898443003168351, + 50.942301394626384 + ], + [ + 6.898458320044492, + 50.94221593217428 + ], + [ + 6.898459027632625, + 50.942212016407034 + ], + [ + 6.898459114352523, + 50.9422116402273 + ], + [ + 6.898460240998583, + 50.94220723914214 + ], + [ + 6.898460370901779, + 50.942206726134174 + ], + [ + 6.8984694325147515, + 50.94217426234258 + ], + [ + 6.898470576880879, + 50.94217221436262 + ], + [ + 6.898470813924442, + 50.94217181930382 + ], + [ + 6.898471019638699, + 50.942171456058844 + ], + [ + 6.898471439570772, + 50.94217047789467 + ], + [ + 6.898472734550371, + 50.94216745769477 + ], + [ + 6.898475037366973, + 50.94216289161091 + ], + [ + 6.898481300418874, + 50.94216315635576 + ], + [ + 6.898631011354771, + 50.94216875639863 + ], + [ + 6.8986929047689, + 50.942171681880126 + ], + [ + 6.898775573893158, + 50.9421743445241 + ], + [ + 6.898802618972399, + 50.94217515330371 + ], + [ + 6.898808807403341, + 50.94217533664272 + ], + [ + 6.8988151000336675, + 50.942175513762486 + ], + [ + 6.898828217269165, + 50.942175877576155 + ], + [ + 6.898829407527717, + 50.9421759052956 + ], + [ + 6.898831735416338, + 50.942175959787185 + ], + [ + 6.898832196230869, + 50.94217596898087 + ], + [ + 6.898835444078948, + 50.942176015747584 + ], + [ + 6.898854351350124, + 50.94217621126109 + ], + [ + 6.898857216858422, + 50.942176244849776 + ], + [ + 6.89885870906938, + 50.94217626900994 + ], + [ + 6.898860081799398, + 50.94217629101953 + ], + [ + 6.898890360144793, + 50.942176870171686 + ], + [ + 6.898920214787484, + 50.94217841662121 + ], + [ + 6.899063155413822, + 50.94218629020999 + ], + [ + 6.899065061104358, + 50.942186394659025 + ], + [ + 6.899067015115732, + 50.94218650087706 + ], + [ + 6.899070874655596, + 50.94218671513862 + ], + [ + 6.899092330669148, + 50.942187939509346 + ], + [ + 6.899122372703565, + 50.94218968714382 + ], + [ + 6.899104162889949, + 50.94230776680199 + ], + [ + 6.899086190633808, + 50.94242341700061 + ], + [ + 6.899073521284004, + 50.94251898137651 + ], + [ + 6.899065731045969, + 50.94257778134127 + ], + [ + 6.8990652923371965, + 50.94258110206231 + ], + [ + 6.899064755729315, + 50.942585046992 + ], + [ + 6.899061120280202, + 50.942612255354 + ], + [ + 6.8990609740828095, + 50.94261335086953 + ], + [ + 6.8990608279259416, + 50.94261444548637 + ], + [ + 6.899060538416468, + 50.94261663566996 + ], + [ + 6.899060058296874, + 50.942620274926625 + ], + [ + 6.899059291552934, + 50.942626103519395 + ], + [ + 6.898765316318463, + 50.94260126072452 + ], + [ + 6.898748351103225, + 50.94271037339542 + ], + [ + 6.898747439889017, + 50.94271656363601 + ], + [ + 6.8987471314717945, + 50.94271847826732 + ], + [ + 6.898742740718827, + 50.94274273294155 + ], + [ + 6.898739732923055, + 50.942757249705934 + ], + [ + 6.898738879988084, + 50.94276060074381 + ], + [ + 6.898738176936862, + 50.94276397426606 + ], + [ + 6.8987347827843575, + 50.942782733660685 + ], + [ + 6.8987342722329545, + 50.94278537405316 + ], + [ + 6.898733798542595, + 50.942788017807295 + ], + [ + 6.898731661652851, + 50.942799921351124 + ], + [ + 6.898731540084996, + 50.94280173321844 + ], + [ + 6.8987313588877575, + 50.94280474109126 + ], + [ + 6.898728917096797, + 50.94284682873668 + ], + [ + 6.898723159849955, + 50.9428479095934 + ], + [ + 6.898722741575607, + 50.942847872384796 + ], + [ + 6.898721633492396, + 50.94285277746063 + ], + [ + 6.89872121834259, + 50.9428552594801 + ], + [ + 6.89872052650666, + 50.94285800543471 + ], + [ + 6.898719377457158, + 50.942862587794 + ], + [ + 6.898717975462971, + 50.9428684544161 + ], + [ + 6.898717910116506, + 50.942868798602944 + ], + [ + 6.898697396777204, + 50.94298792588267 + ], + [ + 6.898783747346909, + 50.942994469961256 + ], + [ + 6.898849078069861, + 50.94299939089605 + ], + [ + 6.8989029028670945, + 50.94300344185999 + ], + [ + 6.899020617606684, + 50.94301115465223 + ], + [ + 6.899133850562333, + 50.943018560923896 + ], + [ + 6.8991413307012515, + 50.94301905079642 + ], + [ + 6.899142334203426, + 50.9430191165232 + ], + [ + 6.8991434228481054, + 50.943019188279145 + ], + [ + 6.899149416916326, + 50.94301958035591 + ], + [ + 6.8991535956015095, + 50.94301985342135 + ], + [ + 6.899178346895491, + 50.94302147164718 + ], + [ + 6.899210557481771, + 50.943023568568094 + ], + [ + 6.899242146713108, + 50.943025617423714 + ], + [ + 6.899243676838891, + 50.94302571690987 + ], + [ + 6.899244916017163, + 50.94302579677011 + ], + [ + 6.899246150887675, + 50.943025877452186 + ], + [ + 6.899249182812487, + 50.943026073216494 + ], + [ + 6.899244997864946, + 50.943047820533494 + ], + [ + 6.899242800032345, + 50.94306136256389 + ], + [ + 6.899246150991233, + 50.943073048290046 + ], + [ + 6.89923827657068, + 50.943107731591496 + ], + [ + 6.899236356047192, + 50.94312203769118 + ], + [ + 6.899228694694486, + 50.943185653477656 + ], + [ + 6.899225014528726, + 50.94321249678726 + ], + [ + 6.899222855565111, + 50.94322833384227 + ], + [ + 6.899222349613889, + 50.943231756782495 + ], + [ + 6.899222123385784, + 50.94323336440552 + ], + [ + 6.899222054080454, + 50.94323385961767 + ], + [ + 6.899221931873285, + 50.94323473881372 + ], + [ + 6.899221771331476, + 50.94323583676933 + ], + [ + 6.899221650335471, + 50.94323665752729 + ], + [ + 6.899221345732022, + 50.94323870893444 + ], + [ + 6.899428861106993, + 50.94325856548125 + ], + [ + 6.899469028046967, + 50.94326123540073 + ], + [ + 6.899494005899711, + 50.94326291519578 + ], + [ + 6.89949942318648, + 50.94326328158658 + ], + [ + 6.899502586724878, + 50.94326349500182 + ], + [ + 6.899503874029409, + 50.94326358112152 + ], + [ + 6.899505020797347, + 50.94326365841682 + ], + [ + 6.899511769605601, + 50.94326410902414 + ], + [ + 6.899602808566487, + 50.9432701810331 + ], + [ + 6.899542032302366, + 50.94363115025415 + ], + [ + 6.899486317568885, + 50.94396505184226 + ], + [ + 6.900165823536785, + 50.94400229909427 + ], + [ + 6.900500691314251, + 50.94402410892646 + ], + [ + 6.900584027187627, + 50.943535977441215 + ], + [ + 6.900791041869645, + 50.94355002063039 + ], + [ + 6.901828162409768, + 50.94362318454571 + ], + [ + 6.902328868760387, + 50.943656676620535 + ], + [ + 6.902357159067196, + 50.94365855832398 + ], + [ + 6.902209566442635, + 50.943797312479056 + ], + [ + 6.902108368994845, + 50.943878595954345 + ], + [ + 6.901935114425162, + 50.94398649486398 + ], + [ + 6.90174241774368, + 50.94407901088989 + ], + [ + 6.901598886138648, + 50.94413656277726 + ], + [ + 6.901861404423523, + 50.944363305563314 + ], + [ + 6.9019906254600425, + 50.94433903143887 + ], + [ + 6.902190438854049, + 50.94429174152371 + ], + [ + 6.902446263265305, + 50.94422001775527 + ], + [ + 6.902668429966344, + 50.944123404514386 + ], + [ + 6.902710637177087, + 50.944141997557054 + ], + [ + 6.902895477699122, + 50.94446064344544 + ], + [ + 6.903734670066903, + 50.94439642261108 + ], + [ + 6.903885065919904, + 50.94382391874788 + ], + [ + 6.903912497597407, + 50.943722772107414 + ], + [ + 6.903912661384952, + 50.94372210590786 + ], + [ + 6.903913114581345, + 50.94372111393209 + ], + [ + 6.90391383805726, + 50.94372104417926 + ], + [ + 6.904997607603931, + 50.94360950639597 + ], + [ + 6.904819736365373, + 50.94300461754225 + ], + [ + 6.904819640771672, + 50.943004274061316 + ], + [ + 6.905664404925651, + 50.942904534767784 + ], + [ + 6.9057049463576154, + 50.94289985501053 + ], + [ + 6.90570635730601, + 50.94289969235234 + ], + [ + 6.905707399088789, + 50.94289957163788 + ], + [ + 6.905710428569433, + 50.942899220365916 + ], + [ + 6.905711978381201, + 50.942899040412485 + ], + [ + 6.905713435129758, + 50.94289887228019 + ], + [ + 6.905717543416362, + 50.94289840005833 + ], + [ + 6.905718364773038, + 50.94289830596828 + ], + [ + 6.905719548223595, + 50.942898168908236 + ], + [ + 6.905828415519129, + 50.94288553126799 + ], + [ + 6.905908207275314, + 50.94287626358629 + ], + [ + 6.906132977421185, + 50.9428500887517 + ], + [ + 6.90642112707467, + 50.94281663103935 + ], + [ + 6.906505162895924, + 50.942806873352666 + ], + [ + 6.906676487286426, + 50.942786945749454 + ], + [ + 6.906682689430594, + 50.94278622413762 + ], + [ + 6.906685977929404, + 50.94278584240916 + ], + [ + 6.906687025477756, + 50.94278571999061 + ], + [ + 6.906687829721299, + 50.942785626486284 + ], + [ + 6.906689023204092, + 50.94278548779753 + ], + [ + 6.906694837490682, + 50.942784812293624 + ], + [ + 6.906695993748332, + 50.94278467833362 + ], + [ + 6.906696796569424, + 50.94278458480372 + ], + [ + 6.907253635310267, + 50.94272001067603 + ], + [ + 6.907881259440145, + 50.94264819705124 + ], + [ + 6.9078798225934195, + 50.9425379988078 + ], + [ + 6.907817574669125, + 50.942373928681235 + ], + [ + 6.908476560690522, + 50.942277196261095 + ], + [ + 6.908530575661198, + 50.94226923854259 + ], + [ + 6.908532369821665, + 50.94226897389082 + ], + [ + 6.9085332181771335, + 50.94226884878642 + ], + [ + 6.908534686991407, + 50.94226863316799 + ], + [ + 6.908535377712704, + 50.942268531321474 + ], + [ + 6.908541059251026, + 50.94226770315094 + ], + [ + 6.908541921870825, + 50.94226757740263 + ], + [ + 6.908547740685719, + 50.94226673550237 + ], + [ + 6.908555764552652, + 50.94226557695194 + ], + [ + 6.90849013173893, + 50.94209565092918 + ], + [ + 6.908398177851294, + 50.94185285391212 + ], + [ + 6.908717800118057, + 50.941801210448574 + ], + [ + 6.90877462607394, + 50.941791886450915 + ], + [ + 6.908899458078217, + 50.94177184853476 + ], + [ + 6.908901914230025, + 50.94177145543206 + ], + [ + 6.908902535125137, + 50.94177135503076 + ], + [ + 6.9089044053256865, + 50.94177104496762 + ], + [ + 6.908957283783313, + 50.94176219609494 + ], + [ + 6.9089185782666505, + 50.94165027441027 + ], + [ + 6.908911430882203, + 50.94163437841543 + ], + [ + 6.908911190676618, + 50.94163383088592 + ], + [ + 6.908910821027383, + 50.94163302741202 + ], + [ + 6.90890970691449, + 50.94163060520576 + ], + [ + 6.909003909514467, + 50.94161495162511 + ], + [ + 6.909045375098925, + 50.941608582939715 + ], + [ + 6.9090173009130575, + 50.94153709635659 + ], + [ + 6.909001162850096, + 50.94149600502822 + ], + [ + 6.908975446156846, + 50.941430260044406 + ], + [ + 6.9089753222196535, + 50.941429944839456 + ], + [ + 6.908975135804327, + 50.941429467526014 + ], + [ + 6.908974927668456, + 50.9414289349612 + ], + [ + 6.908974673488733, + 50.94142828645071 + ], + [ + 6.908974558500041, + 50.941427993890606 + ], + [ + 6.90897431973549, + 50.941427382530925 + ], + [ + 6.9089740324049345, + 50.94142664798535 + ], + [ + 6.90896434647168, + 50.941401879087294 + ], + [ + 6.90884673333404, + 50.94141806571807 + ], + [ + 6.908819139019796, + 50.94142223829841 + ], + [ + 6.908814817761678, + 50.941422892086194 + ], + [ + 6.90881397503122, + 50.9414230190921 + ], + [ + 6.908812811187619, + 50.94142319610735 + ], + [ + 6.9088089284841, + 50.94142378400174 + ], + [ + 6.908590070184715, + 50.94145696812131 + ], + [ + 6.90841116196, + 50.94147789674381 + ], + [ + 6.908379975730549, + 50.94140066654809 + ], + [ + 6.908379654211062, + 50.941399869331065 + ], + [ + 6.908405414696522, + 50.94139408738059 + ], + [ + 6.908410623966863, + 50.94139296385231 + ], + [ + 6.908414666902428, + 50.94139210453053 + ], + [ + 6.908415051831614, + 50.941392091640964 + ], + [ + 6.908422834810129, + 50.94139058791859 + ], + [ + 6.908424053842616, + 50.94139029137886 + ], + [ + 6.908430108014552, + 50.94138921446626 + ], + [ + 6.9084362023652135, + 50.941388098700436 + ], + [ + 6.908438761242678, + 50.94138760491856 + ], + [ + 6.90844051099347, + 50.941387345768355 + ], + [ + 6.908441147500768, + 50.94138727802701 + ], + [ + 6.908441536272486, + 50.941387211243274 + ], + [ + 6.908450196042683, + 50.9413859633635 + ], + [ + 6.908430812342066, + 50.94133949305587 + ], + [ + 6.908421005189075, + 50.94133956826792 + ], + [ + 6.908420545483503, + 50.94133981995274 + ], + [ + 6.908419763639923, + 50.94133973219501 + ], + [ + 6.908416224234485, + 50.94134025157854 + ], + [ + 6.9084123426905, + 50.94134065510721 + ], + [ + 6.908377048932672, + 50.94134440722428 + ], + [ + 6.90837273497722, + 50.9413448983384 + ], + [ + 6.908372195191942, + 50.941344967812384 + ], + [ + 6.90837168449958, + 50.94134502341756 + ], + [ + 6.9083676960557705, + 50.94134549338237 + ], + [ + 6.908365709253512, + 50.941345737491496 + ], + [ + 6.908362561361524, + 50.94134612898108 + ], + [ + 6.908357831297007, + 50.9413467250617 + ], + [ + 6.908280413830806, + 50.941139534087135 + ], + [ + 6.908258211193648, + 50.94108023481539 + ], + [ + 6.908257865335114, + 50.94107931394649 + ], + [ + 6.908257733060679, + 50.94107896261604 + ], + [ + 6.908257048950038, + 50.94107714170031 + ], + [ + 6.90825676138031, + 50.94107638106647 + ], + [ + 6.9080939648775255, + 50.94109292200572 + ], + [ + 6.908008626605453, + 50.941101677151075 + ], + [ + 6.907980291034073, + 50.9410275567231 + ], + [ + 6.908098980276175, + 50.940855471561036 + ], + [ + 6.9083591482333935, + 50.94092128335862 + ], + [ + 6.908362969586905, + 50.940916606688276 + ], + [ + 6.908366770128587, + 50.940911917952945 + ], + [ + 6.908402251527341, + 50.94086747485903 + ], + [ + 6.9084216279313395, + 50.940843157375305 + ], + [ + 6.908434083964599, + 50.940827513651904 + ], + [ + 6.908520475718364, + 50.94071252586549 + ], + [ + 6.9085471282690945, + 50.94067705867202 + ], + [ + 6.908667084217206, + 50.94051937405829 + ], + [ + 6.908668161056885, + 50.940517963332375 + ], + [ + 6.90866846956693, + 50.94051755964046 + ], + [ + 6.9086429771777755, + 50.94050922794851 + ], + [ + 6.908597206326641, + 50.94049412665011 + ], + [ + 6.908565677992259, + 50.94048494661104 + ], + [ + 6.908430878653766, + 50.94044575213318 + ], + [ + 6.908424908728081, + 50.94044393994029 + ], + [ + 6.908418915934905, + 50.940442161513886 + ], + [ + 6.908399599570559, + 50.94043666555348 + ], + [ + 6.908355966847592, + 50.9404247062371 + ], + [ + 6.90860496086019, + 50.94009078743522 + ], + [ + 6.908742691690268, + 50.93990556372381 + ], + [ + 6.90884198582887, + 50.93977205651768 + ], + [ + 6.908913327192087, + 50.93967613105194 + ], + [ + 6.909139446000931, + 50.93974257776659 + ], + [ + 6.909219676459855, + 50.93976597407659 + ], + [ + 6.909390149254293, + 50.93981707399679 + ], + [ + 6.910271591450414, + 50.94008121808183 + ], + [ + 6.910272203530188, + 50.94008140891533 + ], + [ + 6.910272917373573, + 50.94008161596067 + ], + [ + 6.9102740269969525, + 50.94008194880942 + ], + [ + 6.910274520031733, + 50.940082096140266 + ], + [ + 6.910279453478056, + 50.94008359558615 + ], + [ + 6.910280442352064, + 50.94008389119738 + ], + [ + 6.91028112840541, + 50.94008411483344 + ], + [ + 6.910284982984294, + 50.94008526219454 + ], + [ + 6.910285795787027, + 50.94008548450203 + ], + [ + 6.910304312912631, + 50.94009093346492 + ], + [ + 6.910525838999933, + 50.93979407262807 + ], + [ + 6.910545086084966, + 50.939768286489816 + ], + [ + 6.9105708934565, + 50.9397333991046 + ], + [ + 6.910703745414424, + 50.93955199091238 + ], + [ + 6.910714889119891, + 50.93953676415867 + ], + [ + 6.910723474739754, + 50.93952503248738 + ], + [ + 6.910723755274532, + 50.939524648975244 + ], + [ + 6.910799033771263, + 50.93942167783261 + ], + [ + 6.910935535558387, + 50.93924289434116 + ], + [ + 6.911076009522567, + 50.939056258216404 + ], + [ + 6.910912154497631, + 50.93900755731532 + ], + [ + 6.910690704419938, + 50.93881448723159 + ], + [ + 6.9107969581055855, + 50.93863135542455 + ], + [ + 6.910974225320925, + 50.93832550464756 + ], + [ + 6.910630941710749, + 50.93824629145469 + ], + [ + 6.9106682868231415, + 50.938191614589044 + ], + [ + 6.910327156889005, + 50.93809871986119 + ], + [ + 6.910381058246673, + 50.93803222837875 + ], + [ + 6.909910560640955, + 50.93789323733166 + ], + [ + 6.909818636464444, + 50.937863121461184 + ], + [ + 6.909611517781787, + 50.93779884468322 + ], + [ + 6.90978513007745, + 50.937735554792575 + ], + [ + 6.909810577828865, + 50.93771270296 + ], + [ + 6.90954347859462, + 50.93760026218032 + ], + [ + 6.9096355920968096, + 50.93751621315696 + ], + [ + 6.909680741134259, + 50.93747504926197 + ], + [ + 6.909676240311815, + 50.9374047880548 + ], + [ + 6.90942879579706, + 50.93741004318091 + ], + [ + 6.90925633621791, + 50.9373865762647 + ], + [ + 6.909181502790624, + 50.937313627100885 + ], + [ + 6.909170067371305, + 50.93720153009744 + ], + [ + 6.9089564994626995, + 50.937207508802366 + ], + [ + 6.908822268404782, + 50.937014115841286 + ], + [ + 6.908808499820094, + 50.93699384892947 + ], + [ + 6.908678725975477, + 50.93680281647224 + ], + [ + 6.907988460514255, + 50.93656226196864 + ], + [ + 6.9078598090594, + 50.93639217641377 + ], + [ + 6.907788559212285, + 50.9362979814722 + ], + [ + 6.9077867575077665, + 50.93629559729374 + ], + [ + 6.9077847101810965, + 50.93629288223694 + ], + [ + 6.907721369203876, + 50.93620879326622 + ], + [ + 6.907691381377137, + 50.93616650731355 + ], + [ + 6.907571793068039, + 50.935997881675554 + ], + [ + 6.907568066424879, + 50.935992625435674 + ], + [ + 6.907564338360336, + 50.93598736917018 + ], + [ + 6.9074735694706115, + 50.935859419258335 + ], + [ + 6.907444704833255, + 50.935816315146695 + ], + [ + 6.907407923619474, + 50.93576122693544 + ], + [ + 6.907382515784066, + 50.9357170272697 + ], + [ + 6.907372453385943, + 50.935707026520376 + ], + [ + 6.907369290810483, + 50.93570388584111 + ], + [ + 6.907368676289578, + 50.93570333879241 + ], + [ + 6.9073680489788565, + 50.935702822992816 + ], + [ + 6.9073644494738105, + 50.93570009359309 + ], + [ + 6.907322033881178, + 50.935668136306816 + ], + [ + 6.907338184992403, + 50.935661058106305 + ], + [ + 6.907341748135382, + 50.93565714760997 + ], + [ + 6.907342322837485, + 50.935656679440996 + ], + [ + 6.907342925006155, + 50.9356559482452 + ], + [ + 6.907345950475245, + 50.93565215672157 + ], + [ + 6.9073464172338, + 50.93564534326937 + ], + [ + 6.9073440910419315, + 50.935641454007126 + ], + [ + 6.907341061357258, + 50.93563706556704 + ], + [ + 6.907331278895422, + 50.93563240137462 + ], + [ + 6.907325320576358, + 50.935631296243216 + ], + [ + 6.907272129948355, + 50.93556739485277 + ], + [ + 6.907247857872731, + 50.93553369422787 + ], + [ + 6.907113190536491, + 50.935346505195106 + ], + [ + 6.907078680791589, + 50.93529841072732 + ], + [ + 6.906956537098651, + 50.93533274104389 + ], + [ + 6.906816602251529, + 50.935230870716076 + ], + [ + 6.9067215942103655, + 50.93515897556721 + ], + [ + 6.9066772681486235, + 50.93512543054405 + ], + [ + 6.9065084510951325, + 50.93500349829419 + ], + [ + 6.906400191542454, + 50.93492307650167 + ], + [ + 6.906521387596297, + 50.93485678278478 + ], + [ + 6.906314067382661, + 50.934788546309015 + ], + [ + 6.906107345225403, + 50.934721743012545 + ], + [ + 6.90593926109999, + 50.93466659507358 + ], + [ + 6.905892441045932, + 50.93465113746916 + ], + [ + 6.9056912805066055, + 50.934585009704975 + ], + [ + 6.905508166534056, + 50.93448844739011 + ], + [ + 6.905509808921307, + 50.93446317450792 + ], + [ + 6.9055132490415625, + 50.93441325750137 + ], + [ + 6.905515251185115, + 50.934384476283796 + ], + [ + 6.905470265131774, + 50.93433888969363 + ], + [ + 6.905308135249574, + 50.93423490862007 + ], + [ + 6.905321521223725, + 50.93404168965724 + ], + [ + 6.905329889008301, + 50.9339232354231 + ], + [ + 6.9053359080213665, + 50.93381837459132 + ], + [ + 6.905328759167645, + 50.93381786047241 + ], + [ + 6.905321371183484, + 50.93381731508045 + ], + [ + 6.905283963210284, + 50.933814551833464 + ], + [ + 6.905215924986573, + 50.93380981697469 + ], + [ + 6.905181683819869, + 50.93380743430313 + ], + [ + 6.904777559908179, + 50.93377955567141 + ], + [ + 6.904771091231266, + 50.933779108589405 + ], + [ + 6.904764598095309, + 50.933778667363676 + ], + [ + 6.904739517879237, + 50.93391567896084 + ], + [ + 6.904628677976329, + 50.933907278561485 + ], + [ + 6.904451266709918, + 50.93389912558733 + ], + [ + 6.904428232571192, + 50.93392168772468 + ], + [ + 6.904399008187007, + 50.93394052140612 + ], + [ + 6.904361036577848, + 50.93395573811387 + ], + [ + 6.904325063449363, + 50.933964017767956 + ], + [ + 6.904293480012245, + 50.93397118363883 + ], + [ + 6.904261678855015, + 50.93396720582756 + ], + [ + 6.90423743797502, + 50.93396424693954 + ], + [ + 6.904163222594725, + 50.93395178728092 + ], + [ + 6.904076305208965, + 50.93403255535328 + ], + [ + 6.904065257226715, + 50.93406437323867 + ], + [ + 6.903817099245414, + 50.934207967418665 + ], + [ + 6.903756387190926, + 50.93420960589281 + ], + [ + 6.903612247811863, + 50.934222678305055 + ], + [ + 6.902118380778658, + 50.93426605840867 + ], + [ + 6.900798065693657, + 50.934294775955344 + ], + [ + 6.900609390097774, + 50.93430000786103 + ], + [ + 6.900621111241111, + 50.93411887318079 + ], + [ + 6.900627458892492, + 50.93396151150427 + ], + [ + 6.900633052131921, + 50.93382393169796 + ], + [ + 6.900649009261172, + 50.93369274493069 + ], + [ + 6.900516507428057, + 50.93368954249954 + ], + [ + 6.900378339599718, + 50.933680271489244 + ], + [ + 6.90019616429908, + 50.93366846208344 + ], + [ + 6.900090863079103, + 50.9336594761633 + ], + [ + 6.900006936264853, + 50.93365230290367 + ], + [ + 6.899807097559732, + 50.933631820738555 + ], + [ + 6.899701273337944, + 50.93361789373262 + ], + [ + 6.8995655012693575, + 50.93360006315379 + ], + [ + 6.89928487718541, + 50.93355826890019 + ], + [ + 6.898965443339708, + 50.93351047985382 + ], + [ + 6.898844399952529, + 50.933489208072906 + ], + [ + 6.898709653838137, + 50.93346552557901 + ], + [ + 6.898290554772154, + 50.93335577170282 + ], + [ + 6.898472357568374, + 50.932850390012604 + ], + [ + 6.897294544227702, + 50.93258502330439 + ], + [ + 6.896314659513499, + 50.934414767583434 + ], + [ + 6.895160148337483, + 50.93444648309289 + ], + [ + 6.893968452451265, + 50.934476473919915 + ], + [ + 6.893850142272715, + 50.93447899812494 + ], + [ + 6.892820121397172, + 50.9344755572713 + ], + [ + 6.892143358028095, + 50.93446617066704 + ], + [ + 6.891439469759005, + 50.9344517734519 + ], + [ + 6.891309321475431, + 50.93444530684023 + ], + [ + 6.889616872794723, + 50.934348642131404 + ], + [ + 6.889059613292915, + 50.93430218940375 + ], + [ + 6.888570901629755, + 50.934262044673915 + ], + [ + 6.888360221424017, + 50.93423991675932 + ], + [ + 6.888175092440636, + 50.93421480788269 + ], + [ + 6.8870666441991215, + 50.93411159174018 + ], + [ + 6.8868757718893825, + 50.934076186793575 + ], + [ + 6.8863934766201185, + 50.9340533606124 + ], + [ + 6.886325007964009, + 50.9341361738189 + ], + [ + 6.886321381533859, + 50.93414056460904 + ], + [ + 6.886315365125141, + 50.9341477856594 + ], + [ + 6.886258133486074, + 50.934212043815656 + ], + [ + 6.8862126772279755, + 50.93426288948654 + ], + [ + 6.885879918182493, + 50.93463488493689 + ], + [ + 6.885809418482943, + 50.934696916729784 + ], + [ + 6.885776100050255, + 50.934726284392454 + ], + [ + 6.885520778786637, + 50.934979379549354 + ], + [ + 6.885507598129054, + 50.93499278986633 + ], + [ + 6.885505222175304, + 50.93499496381284 + ], + [ + 6.885502841995623, + 50.93499713678335 + ], + [ + 6.884580115251545, + 50.935722649958116 + ], + [ + 6.884104408540622, + 50.936106142261146 + ], + [ + 6.883786941543606, + 50.93648465884195 + ], + [ + 6.883617413705736, + 50.93681000591108 + ], + [ + 6.883572518050057, + 50.93690320560455 + ], + [ + 6.883498110759876, + 50.93702314676381 + ], + [ + 6.883417820321666, + 50.9370158071776 + ], + [ + 6.8832301849528745, + 50.93699865589744 + ], + [ + 6.8831796519696935, + 50.93695966584378 + ], + [ + 6.883139154482749, + 50.93692464417018 + ], + [ + 6.8830235759511735, + 50.936891539135814 + ], + [ + 6.88290903744835, + 50.9368833271585 + ], + [ + 6.88282770307644, + 50.936893021483016 + ], + [ + 6.8828058670170575, + 50.936896872336106 + ], + [ + 6.882697097525024, + 50.936945337945446 + ], + [ + 6.882541977025577, + 50.93709294648599 + ], + [ + 6.88251087698725, + 50.937148466234326 + ], + [ + 6.882366753300285, + 50.93741083237904 + ], + [ + 6.882365128308645, + 50.937414078462666 + ], + [ + 6.882346109947155, + 50.9375079351048 + ], + [ + 6.882301073334126, + 50.93768410548621 + ], + [ + 6.882263755073876, + 50.93790589420763 + ], + [ + 6.882202171242812, + 50.938020872342214 + ], + [ + 6.882444974926582, + 50.938085049392136 + ], + [ + 6.883057114437876, + 50.93803892247033 + ], + [ + 6.883055933633475, + 50.938024744728196 + ], + [ + 6.883054161740486, + 50.938003461913524 + ], + [ + 6.883053903955829, + 50.93800045688847 + ], + [ + 6.883053669154604, + 50.93799772929094 + ], + [ + 6.883045847932571, + 50.93790759763343 + ], + [ + 6.883044128852438, + 50.937888191894196 + ], + [ + 6.8830434038645505, + 50.93787441454999 + ], + [ + 6.883286274405103, + 50.93787040684555 + ], + [ + 6.883299770360825, + 50.93787017579335 + ], + [ + 6.8835684578017355, + 50.937865061711705 + ], + [ + 6.88358193007315, + 50.937864787926316 + ], + [ + 6.883924560024016, + 50.937858507033674 + ], + [ + 6.883938031517402, + 50.93785825028142 + ], + [ + 6.884439255143618, + 50.937847057598795 + ], + [ + 6.884453440379938, + 50.937840672718984 + ], + [ + 6.884490523424665, + 50.93782304587765 + ], + [ + 6.884525425781048, + 50.93826552663593 + ], + [ + 6.884525636618835, + 50.93826821961892 + ], + [ + 6.884719023070945, + 50.938262810281174 + ], + [ + 6.885221251861313, + 50.93824862938067 + ], + [ + 6.885234701580137, + 50.93824825876106 + ], + [ + 6.8852249579837626, + 50.93812385915194 + ], + [ + 6.885224694261616, + 50.93812051135923 + ], + [ + 6.8853450718185725, + 50.9381128591316 + ], + [ + 6.885362713090317, + 50.93811177566823 + ], + [ + 6.885368334230653, + 50.93811149255966 + ], + [ + 6.885373999043273, + 50.93811128219275 + ], + [ + 6.885412174120934, + 50.93810999058989 + ], + [ + 6.8854842705098, + 50.93810757672479 + ], + [ + 6.885496204877465, + 50.93810716063814 + ], + [ + 6.8855014742156655, + 50.93810697637861 + ], + [ + 6.885508667472686, + 50.938106741527186 + ], + [ + 6.885520373418001, + 50.93810637166599 + ], + [ + 6.885582109928436, + 50.93810427553655 + ], + [ + 6.885603477577339, + 50.93810357162074 + ], + [ + 6.885608409147109, + 50.938103396527886 + ], + [ + 6.885618136316039, + 50.9381030627658 + ], + [ + 6.885623650322233, + 50.9381028820331 + ], + [ + 6.8856278636839745, + 50.938102755988055 + ], + [ + 6.88565148284422, + 50.93810209104626 + ], + [ + 6.885740121709235, + 50.938099186992154 + ], + [ + 6.885752855222584, + 50.93809875747246 + ], + [ + 6.885757693611013, + 50.93809859687457 + ], + [ + 6.885763231631594, + 50.938098420167755 + ], + [ + 6.885831551814877, + 50.93809625337837 + ], + [ + 6.885844986915862, + 50.93809576460442 + ], + [ + 6.886025508750833, + 50.93809095654085 + ], + [ + 6.886030659002106, + 50.93809120090636 + ], + [ + 6.886065246175209, + 50.93808964535054 + ], + [ + 6.886130111836169, + 50.938088604814794 + ], + [ + 6.886151836137802, + 50.938087004274465 + ], + [ + 6.886352740220972, + 50.938081122181316 + ], + [ + 6.8863581960240365, + 50.93808100061884 + ], + [ + 6.8863783999557535, + 50.93808034474275 + ], + [ + 6.886416459901158, + 50.93807911098573 + ], + [ + 6.886422088412402, + 50.938078947578134 + ], + [ + 6.886428761148878, + 50.93807876530294 + ], + [ + 6.886445937189311, + 50.93807827224294 + ], + [ + 6.886450575846931, + 50.93807812149077 + ], + [ + 6.886764939671726, + 50.93806859442439 + ], + [ + 6.886851120038942, + 50.93806597509444 + ], + [ + 6.88693673259021, + 50.93806303873208 + ], + [ + 6.887190490473913, + 50.93805525278796 + ], + [ + 6.887203988755401, + 50.93805534780273 + ], + [ + 6.887323865340894, + 50.93805182703626 + ], + [ + 6.887336576057809, + 50.93805155432367 + ], + [ + 6.887342714305324, + 50.9380513560272 + ], + [ + 6.887348214356577, + 50.93805123162174 + ], + [ + 6.887434678597263, + 50.93804931941836 + ], + [ + 6.8874509311516565, + 50.93804897588397 + ], + [ + 6.887494121513225, + 50.93804804597808 + ], + [ + 6.887559285941855, + 50.938046661093644 + ], + [ + 6.8875756693831836, + 50.93804631901107 + ], + [ + 6.887581013592997, + 50.93804620976219 + ], + [ + 6.88763557497145, + 50.93804507545665 + ], + [ + 6.887844474012977, + 50.938040732216365 + ], + [ + 6.8878506139895785, + 50.93804068412174 + ], + [ + 6.887856490876586, + 50.93804075628102 + ], + [ + 6.887902882981587, + 50.93804135465021 + ], + [ + 6.887939014967426, + 50.938041829420804 + ], + [ + 6.887957298968438, + 50.93804210897019 + ], + [ + 6.887966947146515, + 50.938042292528365 + ], + [ + 6.887972170767381, + 50.938042394234024 + ], + [ + 6.88797659365808, + 50.938042481451916 + ], + [ + 6.888109908547002, + 50.93804502563281 + ], + [ + 6.888114473163053, + 50.93804525211606 + ], + [ + 6.888118943894938, + 50.938045634292955 + ], + [ + 6.888154334840485, + 50.9380495834049 + ], + [ + 6.888351173247228, + 50.93807121834697 + ], + [ + 6.888354223179186, + 50.93810427644759 + ], + [ + 6.8885136556747355, + 50.93809660073301 + ], + [ + 6.888517771090584, + 50.9380965627505 + ], + [ + 6.888527016014731, + 50.93809625330028 + ], + [ + 6.888611060968574, + 50.938109347669986 + ], + [ + 6.888616760743436, + 50.938110250317145 + ], + [ + 6.888623322885031, + 50.938111283683185 + ], + [ + 6.8886282824859535, + 50.938112060518925 + ], + [ + 6.8887812284824275, + 50.93813624384396 + ], + [ + 6.888794191702925, + 50.93813778150397 + ], + [ + 6.888869830736017, + 50.93796088330645 + ], + [ + 6.88895289278393, + 50.937969717256706 + ], + [ + 6.888966075569103, + 50.93797115184187 + ], + [ + 6.889198083735989, + 50.9379954611777 + ], + [ + 6.889173826574284, + 50.93803994412028 + ], + [ + 6.889145936054497, + 50.93809581951874 + ], + [ + 6.889116439271879, + 50.93815239886295 + ], + [ + 6.889114728158655, + 50.93815573341865 + ], + [ + 6.889087062934524, + 50.93820908290758 + ], + [ + 6.889057370323118, + 50.938266431267046 + ], + [ + 6.889415608326001, + 50.9383271049606 + ], + [ + 6.889428519032746, + 50.93832873513619 + ], + [ + 6.889393559963065, + 50.938405320633116 + ], + [ + 6.889356892417716, + 50.93848483420425 + ], + [ + 6.889467333709315, + 50.93850398050452 + ], + [ + 6.889480198701363, + 50.93850574115766 + ], + [ + 6.8896802879598145, + 50.93853913091147 + ], + [ + 6.889693207675791, + 50.93854075222629 + ], + [ + 6.889666887327821, + 50.93860037238623 + ], + [ + 6.889632651760902, + 50.93867758171245 + ], + [ + 6.889603229949849, + 50.93867303944814 + ], + [ + 6.889598850357461, + 50.938672277637195 + ], + [ + 6.889584411673477, + 50.93866977893223 + ], + [ + 6.889579578461031, + 50.9386689441639 + ], + [ + 6.889569423062588, + 50.93866719653377 + ], + [ + 6.889409600815363, + 50.93864135468179 + ], + [ + 6.889393448440833, + 50.938677983278644 + ], + [ + 6.889356942368665, + 50.9387413863915 + ], + [ + 6.889339650920391, + 50.93876824595474 + ], + [ + 6.889325647349934, + 50.93879866267126 + ], + [ + 6.88931690400919, + 50.9387970089042 + ], + [ + 6.889312355934468, + 50.93879619546942 + ], + [ + 6.8893082016052976, + 50.93879570843547 + ], + [ + 6.8892860754437875, + 50.93879294567917 + ], + [ + 6.889273091273225, + 50.9387912062342 + ], + [ + 6.889257653080779, + 50.938789152599334 + ], + [ + 6.889197546687981, + 50.938780793328945 + ], + [ + 6.889155604318737, + 50.938773986545186 + ], + [ + 6.889132265382336, + 50.938827287459276 + ], + [ + 6.889109513904508, + 50.9388791509823 + ], + [ + 6.889086753800031, + 50.9389310152442 + ], + [ + 6.888735791788679, + 50.93887265137698 + ], + [ + 6.888639585181288, + 50.93905550644144 + ], + [ + 6.888600023242873, + 50.93913122059034 + ], + [ + 6.88857716659579, + 50.939173230249345 + ], + [ + 6.888151129142927, + 50.93910477904657 + ], + [ + 6.888133541949036, + 50.939148825723656 + ], + [ + 6.8881306408692895, + 50.939155989003154 + ], + [ + 6.887929854635273, + 50.93965842664345 + ], + [ + 6.887939486586503, + 50.93973039609859 + ], + [ + 6.887944288745531, + 50.93976627759596 + ], + [ + 6.8879558161773735, + 50.93978138176967 + ], + [ + 6.887980734480019, + 50.93978489141634 + ], + [ + 6.888012800809072, + 50.93978869856713 + ], + [ + 6.888021800712535, + 50.93993137249759 + ], + [ + 6.887999278797932, + 50.939932400442004 + ], + [ + 6.887876191850105, + 50.93993802326715 + ], + [ + 6.887849286907797, + 50.93993877131562 + ], + [ + 6.887669805758772, + 50.93994295261809 + ], + [ + 6.887642847612729, + 50.93994336688391 + ], + [ + 6.887357000930983, + 50.939947143782724 + ], + [ + 6.887340203991772, + 50.93994670128668 + ], + [ + 6.887330051039174, + 50.93994643389472 + ], + [ + 6.887200978815417, + 50.93994165152872 + ], + [ + 6.887186685770106, + 50.93994152324519 + ], + [ + 6.887173993479305, + 50.93994140954259 + ], + [ + 6.8866427734414195, + 50.93994068484191 + ], + [ + 6.8862763835463445, + 50.9399357626584 + ], + [ + 6.88618757396815, + 50.939771451306314 + ], + [ + 6.8857484935186655, + 50.93978558942011 + ], + [ + 6.885782471542791, + 50.94025845295824 + ], + [ + 6.885665442337708, + 50.94031172016104 + ], + [ + 6.885692497202121, + 50.94065899590848 + ], + [ + 6.885684703054405, + 50.94067472438578 + ], + [ + 6.8859275909317015, + 50.94071278912867 + ], + [ + 6.885853458344208, + 50.940854593547 + ], + [ + 6.885829601857518, + 50.940909435879185 + ], + [ + 6.885827660236435, + 50.94091407841511 + ], + [ + 6.8858252760075995, + 50.940919910915525 + ], + [ + 6.885790533942128, + 50.94100772630232 + ], + [ + 6.885788799154747, + 50.94101160630774 + ], + [ + 6.885865839675068, + 50.94102023533175 + ], + [ + 6.885873325057007, + 50.94102129006721 + ], + [ + 6.885881439644923, + 50.94102262691218 + ], + [ + 6.885955931303051, + 50.94103494486049 + ], + [ + 6.886252163873106, + 50.94102655040342 + ], + [ + 6.886257598772113, + 50.94102639518782 + ], + [ + 6.886262972999404, + 50.94102622808075 + ], + [ + 6.886271829965742, + 50.94102594865571 + ], + [ + 6.886279043910316, + 50.941025706933615 + ], + [ + 6.886286347797425, + 50.941025396687664 + ], + [ + 6.886413217272294, + 50.94102005626274 + ], + [ + 6.886440645512783, + 50.94132467441238 + ], + [ + 6.8864585352625705, + 50.94152308059322 + ], + [ + 6.886458966369962, + 50.94152782455818 + ], + [ + 6.886459337791085, + 50.941531875815684 + ], + [ + 6.886460249036382, + 50.9415418206213 + ], + [ + 6.886462056388097, + 50.94156157325192 + ], + [ + 6.886464640335193, + 50.941589280609996 + ], + [ + 6.886467717108258, + 50.9416212500806 + ], + [ + 6.886483358092828, + 50.94172424119055 + ], + [ + 6.8864912777459235, + 50.94172382156212 + ], + [ + 6.886495418824451, + 50.941723601538534 + ], + [ + 6.886503520744129, + 50.94172318071233 + ], + [ + 6.8865416698382935, + 50.94172120831733 + ], + [ + 6.886782819398613, + 50.94171257879235 + ], + [ + 6.886901401270691, + 50.94170840359804 + ], + [ + 6.887019294284246, + 50.94170428776536 + ], + [ + 6.887212473356216, + 50.94169754296555 + ], + [ + 6.887719951629598, + 50.941679554464834 + ], + [ + 6.887701311880417, + 50.941336036340324 + ], + [ + 6.888879878692523, + 50.94129762097294 + ], + [ + 6.888928895435987, + 50.94189693707499 + ], + [ + 6.889332906020607, + 50.941886094797184 + ], + [ + 6.889353896919716, + 50.94212391986071 + ], + [ + 6.889359496695773, + 50.94218194504891 + ], + [ + 6.889359678487917, + 50.94218456284572 + ], + [ + 6.8893713844794595, + 50.94227849662523 + ], + [ + 6.889372629724539, + 50.9422884357499 + ], + [ + 6.8893732128974765, + 50.942292971995165 + ], + [ + 6.88937356716599, + 50.9422972504754 + ], + [ + 6.889377665682747, + 50.942384554052275 + ], + [ + 6.889377547358282, + 50.942387637700094 + ], + [ + 6.88938447112847, + 50.94247658696483 + ], + [ + 6.889397899746088, + 50.94262027073797 + ], + [ + 6.889014626562961, + 50.942622292078674 + ], + [ + 6.888993950121438, + 50.94261536166683 + ], + [ + 6.888981314462875, + 50.942598993719336 + ], + [ + 6.88874395108014, + 50.94259720677064 + ], + [ + 6.888461577849373, + 50.942600345075945 + ], + [ + 6.888479468081815, + 50.9429137560233 + ], + [ + 6.888479833408303, + 50.94292064741754 + ], + [ + 6.888480120391219, + 50.942930492771275 + ], + [ + 6.888434844640176, + 50.943040826917304 + ], + [ + 6.888465234114857, + 50.9433917083324 + ], + [ + 6.887669577576695, + 50.943422172412276 + ], + [ + 6.887733966805643, + 50.94418502507901 + ], + [ + 6.888677566327496, + 50.94421164631349 + ], + [ + 6.888737979456927, + 50.94495432958271 + ], + [ + 6.8881809863961845, + 50.94497322217038 + ], + [ + 6.887800178873581, + 50.94498627741543 + ], + [ + 6.887957800492693, + 50.946126446079525 + ], + [ + 6.888089061549687, + 50.946122391076315 + ], + [ + 6.888119316688184, + 50.946239020984 + ], + [ + 6.888134439847546, + 50.946300842101834 + ], + [ + 6.888259435899307, + 50.946296564742106 + ], + [ + 6.8884027786698185, + 50.94629178807655 + ], + [ + 6.888689745925707, + 50.94628214217918 + ], + [ + 6.888923246161945, + 50.94627443102225 + ], + [ + 6.889157026306632, + 50.94626644744952 + ], + [ + 6.889260592808075, + 50.94660805953461 + ], + [ + 6.889329387516861, + 50.94683505405424 + ], + [ + 6.889720665979546, + 50.94678838327806 + ], + [ + 6.8900133796869225, + 50.946751722471326 + ], + [ + 6.889988922274229, + 50.946740968987896 + ], + [ + 6.8899723316842625, + 50.946733338246005 + ], + [ + 6.889966971262264, + 50.946668745665306 + ], + [ + 6.8901054566879845, + 50.94665546447493 + ], + [ + 6.890285746407653, + 50.94663314432465 + ], + [ + 6.8903363267768265, + 50.94651814315153 + ], + [ + 6.890338486918051, + 50.94651322928341 + ], + [ + 6.890340634296843, + 50.94650831428519 + ], + [ + 6.890344929134438, + 50.94649848249138 + ], + [ + 6.890423336101029, + 50.94649114299174 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Braunsfeld", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "304", + "Population_rel": 0.011246829160692622, + "Population_abs": 12237 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.009698154969715, + 50.98762355280711 + ], + [ + 7.010711221993768, + 50.98689813267842 + ], + [ + 7.011481147337786, + 50.986939492529174 + ], + [ + 7.01210352954188, + 50.98694645159811 + ], + [ + 7.012863814843615, + 50.98695501019731 + ], + [ + 7.012908537877271, + 50.986942037004994 + ], + [ + 7.013318789484165, + 50.98682808756028 + ], + [ + 7.013495943393358, + 50.98678160378075 + ], + [ + 7.013678615534669, + 50.986824963804715 + ], + [ + 7.014040443667157, + 50.98622762915487 + ], + [ + 7.014248834716124, + 50.985888902850256 + ], + [ + 7.014708890072793, + 50.985218358924804 + ], + [ + 7.014949291808999, + 50.985003900153295 + ], + [ + 7.015716691645319, + 50.98413581102502 + ], + [ + 7.01605988277057, + 50.9837802640415 + ], + [ + 7.016171710771209, + 50.98366440830367 + ], + [ + 7.016254774044598, + 50.98357850729925 + ], + [ + 7.016374554362891, + 50.98345466070378 + ], + [ + 7.016582535994702, + 50.983239682083365 + ], + [ + 7.017337155617503, + 50.982529604841424 + ], + [ + 7.017811181099366, + 50.982169406471854 + ], + [ + 7.0186100000952445, + 50.98158056092299 + ], + [ + 7.02045402561606, + 50.98034865194655 + ], + [ + 7.020993124959708, + 50.98001645736393 + ], + [ + 7.021517869950399, + 50.979692676194745 + ], + [ + 7.021641195756506, + 50.97961538594013 + ], + [ + 7.02319519214392, + 50.97863107060769 + ], + [ + 7.023819274182415, + 50.97823474258106 + ], + [ + 7.025026267840942, + 50.9774426196506 + ], + [ + 7.025541088898798, + 50.97709074999244 + ], + [ + 7.025811346057404, + 50.97687119337136 + ], + [ + 7.026357066127287, + 50.976373065467534 + ], + [ + 7.026512591430463, + 50.97623110237332 + ], + [ + 7.026957396322382, + 50.975727205529154 + ], + [ + 7.027022686579889, + 50.97565336740097 + ], + [ + 7.0273847063227874, + 50.97522462762505 + ], + [ + 7.027732525424696, + 50.97477857246604 + ], + [ + 7.028201478148973, + 50.97401551336889 + ], + [ + 7.028011521705279, + 50.97397539479935 + ], + [ + 7.026960872122003, + 50.97377493129586 + ], + [ + 7.025189905013771, + 50.97348207771419 + ], + [ + 7.023715520391531, + 50.973227412587576 + ], + [ + 7.023194750703199, + 50.973107413645415 + ], + [ + 7.022634962449395, + 50.97299839840351 + ], + [ + 7.022244305927866, + 50.9728959272127 + ], + [ + 7.021764579065411, + 50.972744163407654 + ], + [ + 7.021113769459279, + 50.97243244499832 + ], + [ + 7.020803540302783, + 50.97225105908649 + ], + [ + 7.020531595679691, + 50.972036435962636 + ], + [ + 7.020300563634894, + 50.971804553598986 + ], + [ + 7.020007957694659, + 50.9714784623498 + ], + [ + 7.019880496285868, + 50.971301318672914 + ], + [ + 7.019829855047684, + 50.9711526528234 + ], + [ + 7.019804872611476, + 50.97107931312654 + ], + [ + 7.019879417941674, + 50.970855816902315 + ], + [ + 7.020024219415761, + 50.97060941346026 + ], + [ + 7.020299784472075, + 50.97023628490898 + ], + [ + 7.020901439622391, + 50.96925631336319 + ], + [ + 7.021038999919895, + 50.969024263913546 + ], + [ + 7.021156559107421, + 50.968750140289956 + ], + [ + 7.021319158282755, + 50.9677128794311 + ], + [ + 7.021267386676982, + 50.96753012970374 + ], + [ + 7.021180884690976, + 50.967295725392795 + ], + [ + 7.021169198060324, + 50.967262658222516 + ], + [ + 7.021113803930418, + 50.9671710912583 + ], + [ + 7.021017726822402, + 50.967003023626326 + ], + [ + 7.020951551785979, + 50.966887190642254 + ], + [ + 7.02089781330226, + 50.966793182868145 + ], + [ + 7.020690535184106, + 50.96640342148824 + ], + [ + 7.020557974860515, + 50.96620097189876 + ], + [ + 7.020330661817965, + 50.96591664998641 + ], + [ + 7.020079478779256, + 50.96564718868553 + ], + [ + 7.020043609131042, + 50.96561487150133 + ], + [ + 7.019727207972206, + 50.965298964641384 + ], + [ + 7.0193834075679895, + 50.96501871515917 + ], + [ + 7.018868065332949, + 50.964471270894855 + ], + [ + 7.018708937639982, + 50.964231551828966 + ], + [ + 7.018644987558199, + 50.96411566525001 + ], + [ + 7.018622965984729, + 50.964072606732884 + ], + [ + 7.018571884533421, + 50.96397270257503 + ], + [ + 7.018428958942298, + 50.96369258419192 + ], + [ + 7.018222061917815, + 50.963286194326294 + ], + [ + 7.018022005234768, + 50.96286897666867 + ], + [ + 7.017863330879413, + 50.96256282691783 + ], + [ + 7.017515648812408, + 50.961838896693486 + ], + [ + 7.017437831594111, + 50.96167566508792 + ], + [ + 7.017376126994807, + 50.96156167844678 + ], + [ + 7.01741255350739, + 50.96152872091802 + ], + [ + 7.01735317532763, + 50.961395888858696 + ], + [ + 7.017175349371171, + 50.96099808482827 + ], + [ + 7.016952770074433, + 50.960537343555956 + ], + [ + 7.016719002738195, + 50.9600854423039 + ], + [ + 7.016569010232578, + 50.96012591382197 + ], + [ + 7.016121886516144, + 50.96025457964785 + ], + [ + 7.016033481764707, + 50.96028007020345 + ], + [ + 7.015982699906332, + 50.96029462515222 + ], + [ + 7.0158550259922, + 50.960327468840006 + ], + [ + 7.015469352679932, + 50.959893135581396 + ], + [ + 7.015416671911779, + 50.95991202173745 + ], + [ + 7.015329874813577, + 50.959815422996655 + ], + [ + 7.015241775956286, + 50.95984189846185 + ], + [ + 7.0149104165609755, + 50.959397921669066 + ], + [ + 7.014577658128946, + 50.958948292736146 + ], + [ + 7.014264274882287, + 50.95852429601858 + ], + [ + 7.0141743546413675, + 50.95840263723514 + ], + [ + 7.014142798236645, + 50.95836533616099 + ], + [ + 7.014025681400437, + 50.95820958012636 + ], + [ + 7.013731260726079, + 50.95780716906777 + ], + [ + 7.013685122193169, + 50.95774077886245 + ], + [ + 7.013577977125653, + 50.95758520548142 + ], + [ + 7.013452753060885, + 50.95743599140234 + ], + [ + 7.0132152950097915, + 50.95717853152646 + ], + [ + 7.0131039496610414, + 50.9570849308996 + ], + [ + 7.0130387472027556, + 50.95702511235068 + ], + [ + 7.012608644923307, + 50.95667409941016 + ], + [ + 7.012573492320247, + 50.956659561734625 + ], + [ + 7.012430488556745, + 50.95653020138891 + ], + [ + 7.01299659352825, + 50.95612682031239 + ], + [ + 7.013010640624096, + 50.956094982513555 + ], + [ + 7.012999084602251, + 50.95606205424502 + ], + [ + 7.012877482485867, + 50.955945330535016 + ], + [ + 7.0127200434987635, + 50.95576735951786 + ], + [ + 7.012500984975462, + 50.955517741639405 + ], + [ + 7.012488678820112, + 50.955423018446446 + ], + [ + 7.012430951314143, + 50.955300454637154 + ], + [ + 7.012328158196212, + 50.95509728036708 + ], + [ + 7.012286455580154, + 50.955079268345074 + ], + [ + 7.012234336947109, + 50.95507950882693 + ], + [ + 7.012182569091973, + 50.95498821935175 + ], + [ + 7.011130118238783, + 50.95535044081948 + ], + [ + 7.011049947327158, + 50.955378037458345 + ], + [ + 7.010723929216225, + 50.95549161167472 + ], + [ + 7.010679703404901, + 50.955506377637526 + ], + [ + 7.010622818074339, + 50.955515059498744 + ], + [ + 7.010567977810924, + 50.955506365306405 + ], + [ + 7.010378515406887, + 50.95532794971452 + ], + [ + 7.010183461674407, + 50.955186888213646 + ], + [ + 7.010122157791193, + 50.955142652127876 + ], + [ + 7.009917081110507, + 50.95501192396727 + ], + [ + 7.009671051348706, + 50.954882718743434 + ], + [ + 7.009633552905076, + 50.95482712986577 + ], + [ + 7.009581020148981, + 50.95478695256987 + ], + [ + 7.009095518099912, + 50.95460111769659 + ], + [ + 7.008852598726613, + 50.95451766787309 + ], + [ + 7.008018791283753, + 50.95436132923821 + ], + [ + 7.007433463086631, + 50.95429060317043 + ], + [ + 7.006155112217735, + 50.95413775717901 + ], + [ + 7.005287580052124, + 50.95406091361083 + ], + [ + 7.004881432150785, + 50.954082193367086 + ], + [ + 7.004613200867569, + 50.95409728489004 + ], + [ + 7.004307961922513, + 50.954114083374954 + ], + [ + 7.004241226376985, + 50.95411868239267 + ], + [ + 7.00406865378366, + 50.95413592045533 + ], + [ + 7.0040095766209305, + 50.95414438984189 + ], + [ + 7.002798623221742, + 50.95437399724192 + ], + [ + 7.002412979082626, + 50.95444818281876 + ], + [ + 7.0014565118318455, + 50.95461371790336 + ], + [ + 7.001369514471367, + 50.95462651335513 + ], + [ + 7.001198910542592, + 50.954652355479695 + ], + [ + 7.000407933727477, + 50.95474630574036 + ], + [ + 6.999862652463358, + 50.95477010643795 + ], + [ + 6.999649654653616, + 50.954779397417525 + ], + [ + 6.999543971794538, + 50.9546634260772 + ], + [ + 6.999162737048524, + 50.95399553629163 + ], + [ + 6.998890685250696, + 50.95363352701387 + ], + [ + 6.998658942713066, + 50.953359178925695 + ], + [ + 6.998891971667153, + 50.95322243444172 + ], + [ + 6.9989801289489435, + 50.953185543219185 + ], + [ + 6.999510824887985, + 50.95302620280701 + ], + [ + 6.99912412564561, + 50.95246777128994 + ], + [ + 6.998783450480313, + 50.95232299218284 + ], + [ + 6.998462353617914, + 50.95216204426943 + ], + [ + 6.998174913457171, + 50.9520042231609 + ], + [ + 6.997640058714837, + 50.95165021189455 + ], + [ + 6.997408570356547, + 50.95145999890663 + ], + [ + 6.997084060507096, + 50.951152370495336 + ], + [ + 6.996944543883605, + 50.95100362053662 + ], + [ + 6.996786984681214, + 50.95082311163292 + ], + [ + 6.995810870650061, + 50.949624447362936 + ], + [ + 6.995605120643643, + 50.94937527532582 + ], + [ + 6.99538895271274, + 50.94941782836119 + ], + [ + 6.9952028504001715, + 50.94946043231579 + ], + [ + 6.995100003386176, + 50.949485529487035 + ], + [ + 6.994991592629743, + 50.949511841400906 + ], + [ + 6.994886793866091, + 50.94953676276566 + ], + [ + 6.994786301170092, + 50.94956040983918 + ], + [ + 6.994694414486889, + 50.949579669119345 + ], + [ + 6.994559564229132, + 50.94951836665113 + ], + [ + 6.994523991637523, + 50.949502196476274 + ], + [ + 6.994273724953586, + 50.94938696962991 + ], + [ + 6.994269378694795, + 50.949384445973514 + ], + [ + 6.994099442819794, + 50.94919676223633 + ], + [ + 6.994071511726806, + 50.94916588089121 + ], + [ + 6.993901661280076, + 50.94899757527021 + ], + [ + 6.993874197523159, + 50.948970361447145 + ], + [ + 6.993422564279541, + 50.948626513883184 + ], + [ + 6.9927441379136095, + 50.948133742674436 + ], + [ + 6.991854261481903, + 50.947619297139745 + ], + [ + 6.991844007789857, + 50.947613786592605 + ], + [ + 6.9918019183856766, + 50.94758833707731 + ], + [ + 6.99179361841635, + 50.94758321358554 + ], + [ + 6.991773860716022, + 50.947571018204755 + ], + [ + 6.991759720905802, + 50.94756229120278 + ], + [ + 6.991531781821204, + 50.947414339241334 + ], + [ + 6.991493002689097, + 50.947397908799644 + ], + [ + 6.991240290090265, + 50.94726178218643 + ], + [ + 6.9911516917889465, + 50.94721069152845 + ], + [ + 6.991101808234004, + 50.94718227551827 + ], + [ + 6.99109074723111, + 50.94717601172812 + ], + [ + 6.990732274666293, + 50.94698657323625 + ], + [ + 6.990616372549955, + 50.94692574961169 + ], + [ + 6.989881976376402, + 50.94653925706344 + ], + [ + 6.989843459751242, + 50.94651941207066 + ], + [ + 6.98954483855676, + 50.946526062480615 + ], + [ + 6.989530157586819, + 50.94652639605011 + ], + [ + 6.9894534678518925, + 50.94657142538184 + ], + [ + 6.989442384796175, + 50.946573268891534 + ], + [ + 6.989391787439987, + 50.9465873630527 + ], + [ + 6.989349128007406, + 50.946596452194264 + ], + [ + 6.989234255993103, + 50.94662526734075 + ], + [ + 6.988842497644093, + 50.94669834386459 + ], + [ + 6.988802178124322, + 50.94672277773111 + ], + [ + 6.988715677209756, + 50.94676489627624 + ], + [ + 6.988337538752503, + 50.946949019191464 + ], + [ + 6.988278588294162, + 50.946980711751365 + ], + [ + 6.988149188620078, + 50.94702522586379 + ], + [ + 6.988088861425, + 50.947045342169126 + ], + [ + 6.988079453507751, + 50.947048479835026 + ], + [ + 6.988065313226107, + 50.947052871512334 + ], + [ + 6.987827301355103, + 50.94712548502113 + ], + [ + 6.987679060688471, + 50.9471472354439 + ], + [ + 6.987654897282908, + 50.94712164011801 + ], + [ + 6.987537420827812, + 50.94712213335156 + ], + [ + 6.987147791572512, + 50.94712375612177 + ], + [ + 6.987142017326937, + 50.94712378427632 + ], + [ + 6.987134001863053, + 50.94712398514107 + ], + [ + 6.986909266641658, + 50.94713050778759 + ], + [ + 6.986790813429364, + 50.947134000820746 + ], + [ + 6.986785273448088, + 50.94713440623689 + ], + [ + 6.986778479934769, + 50.94713499239492 + ], + [ + 6.986544466797555, + 50.94715811054986 + ], + [ + 6.986537825547575, + 50.947158764074715 + ], + [ + 6.986531192383767, + 50.947159922286495 + ], + [ + 6.986373540016006, + 50.94718995024175 + ], + [ + 6.986368275455983, + 50.94719093328878 + ], + [ + 6.986360993120751, + 50.94719222239477 + ], + [ + 6.986280315692594, + 50.94720615793304 + ], + [ + 6.986269552025514, + 50.947208642508095 + ], + [ + 6.986263285957544, + 50.947210167685014 + ], + [ + 6.986098934665058, + 50.94725264844902 + ], + [ + 6.985926220237023, + 50.94729763425446 + ], + [ + 6.985840272283797, + 50.947331980654866 + ], + [ + 6.985788422027026, + 50.947352715996104 + ], + [ + 6.985621868882943, + 50.94742775945159 + ], + [ + 6.985617875105951, + 50.947423519252226 + ], + [ + 6.985615891345045, + 50.9474211943221 + ], + [ + 6.985611039523823, + 50.94741542927124 + ], + [ + 6.98549542987759, + 50.94728136159202 + ], + [ + 6.9854700086930945, + 50.94725409555433 + ], + [ + 6.985433934813375, + 50.947217231956735 + ], + [ + 6.9853270152243665, + 50.94710738755816 + ], + [ + 6.985260270039792, + 50.94703157161671 + ], + [ + 6.985221502047061, + 50.946987023985585 + ], + [ + 6.984630245286649, + 50.94630931330257 + ], + [ + 6.98434713299508, + 50.94598364991985 + ], + [ + 6.983458388222803, + 50.94495761183727 + ], + [ + 6.983330026050496, + 50.945002813962844 + ], + [ + 6.983263898991215, + 50.945026298267166 + ], + [ + 6.98276663130148, + 50.9452105855447 + ], + [ + 6.981729203720897, + 50.945595403235714 + ], + [ + 6.980825087240276, + 50.94593072537746 + ], + [ + 6.980688742631721, + 50.945981291621436 + ], + [ + 6.980622982093632, + 50.94600568285246 + ], + [ + 6.980211313753695, + 50.94615836550988 + ], + [ + 6.979984867193477, + 50.946242366657636 + ], + [ + 6.979520295438402, + 50.946414620120876 + ], + [ + 6.979209766842773, + 50.94653031364414 + ], + [ + 6.979158188723745, + 50.94654955150912 + ], + [ + 6.978685206533484, + 50.94672611068633 + ], + [ + 6.978274745594471, + 50.946882824075225 + ], + [ + 6.978234557625713, + 50.94689831952916 + ], + [ + 6.978180769800973, + 50.94692557978075 + ], + [ + 6.9783150838303545, + 50.9471097347757 + ], + [ + 6.978352292169043, + 50.94714411010318 + ], + [ + 6.97838004928948, + 50.94716964640225 + ], + [ + 6.978494527983627, + 50.94727467170648 + ], + [ + 6.978653792956947, + 50.947402289333894 + ], + [ + 6.978933001803229, + 50.94762571590113 + ], + [ + 6.978960199614299, + 50.94764745421485 + ], + [ + 6.97948107867262, + 50.948063076784855 + ], + [ + 6.979540972952675, + 50.94811096979082 + ], + [ + 6.979578737554574, + 50.948141059833226 + ], + [ + 6.979662788732184, + 50.94820831072946 + ], + [ + 6.979690172965135, + 50.94823019779163 + ], + [ + 6.979924122672948, + 50.94841718303856 + ], + [ + 6.979953494228304, + 50.9484408204271 + ], + [ + 6.980021437226699, + 50.94849493220421 + ], + [ + 6.980056676229394, + 50.948522965591415 + ], + [ + 6.980133776312078, + 50.94858424904571 + ], + [ + 6.98019115220267, + 50.948627242421054 + ], + [ + 6.980222501843967, + 50.94865008563977 + ], + [ + 6.980417031167964, + 50.94879352015844 + ], + [ + 6.980452323685045, + 50.94881986982277 + ], + [ + 6.9807192997430265, + 50.949042174688074 + ], + [ + 6.98109493415446, + 50.949175193099116 + ], + [ + 6.981253303755192, + 50.94925692177775 + ], + [ + 6.981311120458189, + 50.949292544656295 + ], + [ + 6.981736745062858, + 50.9494352580887 + ], + [ + 6.981838741559781, + 50.949457830989154 + ], + [ + 6.981881927576898, + 50.94947411597982 + ], + [ + 6.9819119888074, + 50.94949587160463 + ], + [ + 6.982107787511327, + 50.949565793386704 + ], + [ + 6.982177134186298, + 50.94958677097342 + ], + [ + 6.982290483061128, + 50.949620581280854 + ], + [ + 6.982343381529773, + 50.94963428637308 + ], + [ + 6.9824802267829105, + 50.949669875904576 + ], + [ + 6.982519270290836, + 50.9496799751358 + ], + [ + 6.982557700158292, + 50.949689943233984 + ], + [ + 6.982639953084586, + 50.9497240513598 + ], + [ + 6.982675369033338, + 50.94973904699409 + ], + [ + 6.9828414122548645, + 50.94980774106598 + ], + [ + 6.982750063962851, + 50.949868624123816 + ], + [ + 6.982705855562407, + 50.949897995517595 + ], + [ + 6.982432260165453, + 50.95008015278054 + ], + [ + 6.982392250326074, + 50.95010678967303 + ], + [ + 6.982363460296478, + 50.95012588675102 + ], + [ + 6.982322855740223, + 50.95015277505942 + ], + [ + 6.982251838882104, + 50.95019722591868 + ], + [ + 6.982197898509626, + 50.950230636188074 + ], + [ + 6.982166954959025, + 50.95024968160793 + ], + [ + 6.982021071108649, + 50.95034024783859 + ], + [ + 6.981771083469175, + 50.95049474311455 + ], + [ + 6.981528622655347, + 50.95064455095525 + ], + [ + 6.980910424103743, + 50.95104285169912 + ], + [ + 6.980098751295107, + 50.951564348206915 + ], + [ + 6.979904671737999, + 50.95168911751395 + ], + [ + 6.97926671744097, + 50.95209871738828 + ], + [ + 6.979196123449156, + 50.952144409466186 + ], + [ + 6.979049074769255, + 50.95224277820107 + ], + [ + 6.978131844384365, + 50.952856526262515 + ], + [ + 6.9779696645003515, + 50.95298089508474 + ], + [ + 6.977701904823003, + 50.95318726902305 + ], + [ + 6.9776604920431335, + 50.95321857833271 + ], + [ + 6.977620922031844, + 50.953247977803755 + ], + [ + 6.97594421753768, + 50.95438768211211 + ], + [ + 6.9755544743115445, + 50.95465236069026 + ], + [ + 6.975785896766818, + 50.95478176019551 + ], + [ + 6.976005430692517, + 50.95490074075993 + ], + [ + 6.976060697860926, + 50.95493012261963 + ], + [ + 6.976101642982229, + 50.954951941583836 + ], + [ + 6.976466943923584, + 50.955143367062256 + ], + [ + 6.976825351259695, + 50.95532159234505 + ], + [ + 6.977726572486742, + 50.95575011761814 + ], + [ + 6.978788891182463, + 50.95619058941915 + ], + [ + 6.979369351607968, + 50.95641656523052 + ], + [ + 6.979962902239429, + 50.95662849516623 + ], + [ + 6.980031416555086, + 50.956651383304276 + ], + [ + 6.980083300618468, + 50.956668716067114 + ], + [ + 6.980162570166968, + 50.95669531843544 + ], + [ + 6.980212691340569, + 50.95671216106301 + ], + [ + 6.980952616308613, + 50.956964921370655 + ], + [ + 6.9816719749766865, + 50.957222981144895 + ], + [ + 6.981712173428674, + 50.957237556949416 + ], + [ + 6.981794897330517, + 50.957267790212946 + ], + [ + 6.981872939952182, + 50.95729636410292 + ], + [ + 6.983591816436568, + 50.95790177903035 + ], + [ + 6.985312569101908, + 50.958502304518746 + ], + [ + 6.985362396626701, + 50.95851960301618 + ], + [ + 6.985425346604223, + 50.95854154382769 + ], + [ + 6.98610128322848, + 50.95877665901404 + ], + [ + 6.986777782116531, + 50.95901104604511 + ], + [ + 6.986859961910564, + 50.95904037501348 + ], + [ + 6.987143788552275, + 50.95914162167101 + ], + [ + 6.98833076011595, + 50.95959947060215 + ], + [ + 6.98945892823867, + 50.960122348955835 + ], + [ + 6.9896653340953625, + 50.960223526097344 + ], + [ + 6.989777695362318, + 50.960279745776184 + ], + [ + 6.990631636699784, + 50.960728043963925 + ], + [ + 6.990822460046702, + 50.960828218758905 + ], + [ + 6.991792079985001, + 50.961429458958236 + ], + [ + 6.992577768001359, + 50.961955036827966 + ], + [ + 6.9933120086379885, + 50.96252064277825 + ], + [ + 6.993381604061434, + 50.96257646116596 + ], + [ + 6.993431090742269, + 50.96261664375385 + ], + [ + 6.993576611152492, + 50.96273624869724 + ], + [ + 6.993793593423799, + 50.962918502888826 + ], + [ + 6.994013485212048, + 50.963111904865436 + ], + [ + 6.9941309234129, + 50.963217041430156 + ], + [ + 6.994675735564738, + 50.9637189473388 + ], + [ + 6.995155248099924, + 50.96420544110875 + ], + [ + 6.995230691038044, + 50.96428198128663 + ], + [ + 6.99537666053063, + 50.96443617054403 + ], + [ + 6.995399253998119, + 50.964460092227164 + ], + [ + 6.995459098611732, + 50.96452455123943 + ], + [ + 6.995533131814267, + 50.96460491361053 + ], + [ + 6.995771513603906, + 50.964868424174085 + ], + [ + 6.996000851369766, + 50.96513497805489 + ], + [ + 6.996635754449234, + 50.9659132460796 + ], + [ + 6.997198215558097, + 50.966717929751596 + ], + [ + 6.997789153527222, + 50.96764812628295 + ], + [ + 6.9981159410191935, + 50.96829281052124 + ], + [ + 6.998298581171416, + 50.968653091519265 + ], + [ + 6.99876428499383, + 50.969795692401064 + ], + [ + 6.998966411114068, + 50.970968584472224 + ], + [ + 6.998970388888372, + 50.971003391612655 + ], + [ + 6.998976142016689, + 50.9710574054929 + ], + [ + 6.998979101428602, + 50.97108760480869 + ], + [ + 6.998984521195141, + 50.97114291256106 + ], + [ + 6.99898743297402, + 50.97117703679938 + ], + [ + 6.999025113256061, + 50.97199826543981 + ], + [ + 6.998935265692748, + 50.97280708276787 + ], + [ + 6.998893368291077, + 50.97306399573475 + ], + [ + 6.998838779071577, + 50.973320028336104 + ], + [ + 6.998824065890045, + 50.97338406745487 + ], + [ + 6.99869637858931, + 50.97386968330874 + ], + [ + 6.998549427679174, + 50.97428705490721 + ], + [ + 6.9984306734576345, + 50.974591908648456 + ], + [ + 6.998283135529964, + 50.97491579590569 + ], + [ + 6.998089536703873, + 50.97530282212746 + ], + [ + 6.997920172460476, + 50.97559840038463 + ], + [ + 6.99759521083259, + 50.97612129734038 + ], + [ + 6.9972012192851984, + 50.97664594768302 + ], + [ + 6.997177300459696, + 50.976676140200624 + ], + [ + 6.997137151157073, + 50.97672649604311 + ], + [ + 6.997117599165564, + 50.97675071700376 + ], + [ + 6.999103178064833, + 50.97746577372897 + ], + [ + 6.999208772758469, + 50.97749291551119 + ], + [ + 6.99941087465559, + 50.97754485223932 + ], + [ + 6.999551250439049, + 50.97752396353017 + ], + [ + 6.999585309131015, + 50.97754390315984 + ], + [ + 6.99967065267183, + 50.97759386618307 + ], + [ + 6.999749672728008, + 50.97788516118419 + ], + [ + 6.99975859951827, + 50.977950290631775 + ], + [ + 6.999767644574059, + 50.978016281898114 + ], + [ + 6.999801616981933, + 50.97826154907423 + ], + [ + 6.999865694361523, + 50.97825799601007 + ], + [ + 6.999969648425133, + 50.978381641589564 + ], + [ + 7.000086578284898, + 50.97853705457969 + ], + [ + 7.0000960204680585, + 50.97857253441106 + ], + [ + 7.000149920915704, + 50.978692566011226 + ], + [ + 7.000178494964031, + 50.97876324911427 + ], + [ + 7.000193605412458, + 50.97881697522251 + ], + [ + 7.000206637716997, + 50.9789065639487 + ], + [ + 7.000212969446927, + 50.978948489321404 + ], + [ + 7.000566959845992, + 50.97899674295898 + ], + [ + 7.000684522032719, + 50.97901276706126 + ], + [ + 7.000673350462892, + 50.979044123760985 + ], + [ + 7.00062718145437, + 50.97917371710814 + ], + [ + 7.000586546349082, + 50.979277262408544 + ], + [ + 7.000377448302279, + 50.979314202976425 + ], + [ + 7.000220302494855, + 50.979774092889706 + ], + [ + 7.001130356835924, + 50.97987937604612 + ], + [ + 7.001084896434034, + 50.98001012657789 + ], + [ + 7.001308981431912, + 50.98004086492505 + ], + [ + 7.001533066737415, + 50.980071602845385 + ], + [ + 7.001859064330306, + 50.98011608264885 + ], + [ + 7.001847869576652, + 50.98022838559622 + ], + [ + 7.001797595024487, + 50.9803404641177 + ], + [ + 7.001701916114508, + 50.980552713188 + ], + [ + 7.001531858671948, + 50.98080926647328 + ], + [ + 7.001435131506015, + 50.981019299332544 + ], + [ + 7.0013464389354, + 50.98121228094304 + ], + [ + 7.001174627244264, + 50.98147351546144 + ], + [ + 7.000961816806868, + 50.981762009182354 + ], + [ + 7.000468760951053, + 50.98249652583517 + ], + [ + 7.000275071133199, + 50.9828202725792 + ], + [ + 7.000168167122137, + 50.98299926477466 + ], + [ + 6.99993793496158, + 50.9834384132432 + ], + [ + 6.999784996385098, + 50.983750365823205 + ], + [ + 6.999759964668432, + 50.98381150135346 + ], + [ + 6.999625422225965, + 50.98414456395331 + ], + [ + 6.999554601994256, + 50.98436136245388 + ], + [ + 6.999464290125778, + 50.984519358334246 + ], + [ + 6.999428584919767, + 50.98476651022021 + ], + [ + 6.9994246194561045, + 50.98479405101426 + ], + [ + 6.999387160651906, + 50.985054305375535 + ], + [ + 6.999301078375128, + 50.985340207615366 + ], + [ + 6.999298570972685, + 50.985372870987725 + ], + [ + 6.999291036346515, + 50.98546372712293 + ], + [ + 6.99925888640803, + 50.98586314936855 + ], + [ + 6.999253908528586, + 50.985928641323305 + ], + [ + 6.999211897946793, + 50.98619936806751 + ], + [ + 6.999212096834606, + 50.98639980406995 + ], + [ + 6.9992118236872, + 50.986977930384924 + ], + [ + 6.999257079727628, + 50.987145822221386 + ], + [ + 6.999289255136183, + 50.98739503089433 + ], + [ + 6.99981661985354, + 50.98736535771449 + ], + [ + 7.0000303624030815, + 50.98732743447276 + ], + [ + 7.000162165180024, + 50.98730383217914 + ], + [ + 7.000207671908818, + 50.987292608530176 + ], + [ + 7.000338967150824, + 50.987260156586366 + ], + [ + 7.000641678612039, + 50.98717309348505 + ], + [ + 7.000874125457584, + 50.98710088855551 + ], + [ + 7.001126120446124, + 50.98701490492475 + ], + [ + 7.00128469350413, + 50.986947339035176 + ], + [ + 7.001368238843245, + 50.98691186524231 + ], + [ + 7.001577503911865, + 50.986803051039224 + ], + [ + 7.00166387187518, + 50.98675254028749 + ], + [ + 7.001828086573775, + 50.98665678966868 + ], + [ + 7.001992047362194, + 50.98655263530611 + ], + [ + 7.002047894772392, + 50.98651377140001 + ], + [ + 7.0021557954590845, + 50.98643868389011 + ], + [ + 7.002301589776402, + 50.98631778510969 + ], + [ + 7.002352596017726, + 50.986272490524925 + ], + [ + 7.002428036529152, + 50.98620554435756 + ], + [ + 7.002580461863456, + 50.98605425129398 + ], + [ + 7.00299427892365, + 50.98539151195502 + ], + [ + 7.003105096857335, + 50.9851876367029 + ], + [ + 7.003115461681867, + 50.98514659153386 + ], + [ + 7.003456791146204, + 50.98456375984234 + ], + [ + 7.00348380805208, + 50.98440342782443 + ], + [ + 7.003507327019881, + 50.98424591396427 + ], + [ + 7.003540937705321, + 50.9842604080581 + ], + [ + 7.003992364671376, + 50.984455074984474 + ], + [ + 7.004459993926322, + 50.98465672537047 + ], + [ + 7.004493884994117, + 50.984671339994826 + ], + [ + 7.004808756610955, + 50.984816234072916 + ], + [ + 7.004409650649072, + 50.98524863751556 + ], + [ + 7.005835683439297, + 50.98540157983021 + ], + [ + 7.005856943184976, + 50.98552362873043 + ], + [ + 7.00584765456989, + 50.98563250191546 + ], + [ + 7.005841740495721, + 50.98568172389177 + ], + [ + 7.0058398007873, + 50.985710956100405 + ], + [ + 7.005835294175463, + 50.98577876769803 + ], + [ + 7.005843227091666, + 50.985882171827335 + ], + [ + 7.005860737640722, + 50.985941170580986 + ], + [ + 7.005877325948065, + 50.985992565642455 + ], + [ + 7.005912805034116, + 50.98605048079589 + ], + [ + 7.005938104619849, + 50.98608765814417 + ], + [ + 7.005955844905972, + 50.98611114758724 + ], + [ + 7.005998659268149, + 50.986167902771136 + ], + [ + 7.0060783480001625, + 50.98625531373247 + ], + [ + 7.006203971100832, + 50.98636951761224 + ], + [ + 7.006340022252794, + 50.98648049258445 + ], + [ + 7.006663648880768, + 50.986721203584885 + ], + [ + 7.006820861567608, + 50.986846152864615 + ], + [ + 7.007121471155093, + 50.987089056276076 + ], + [ + 7.007433935142901, + 50.98730297407693 + ], + [ + 7.007826252186858, + 50.987554273698265 + ], + [ + 7.008134165698186, + 50.987749850353936 + ], + [ + 7.008517356266506, + 50.987936609140874 + ], + [ + 7.008689895435841, + 50.988008904894926 + ], + [ + 7.009159431344069, + 50.988167927875516 + ], + [ + 7.009516332483446, + 50.98826858781758 + ], + [ + 7.009836040534992, + 50.98831753794965 + ], + [ + 7.009698154969715, + 50.98762355280711 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Muelheim", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "901", + "Population_rel": 0.039184221168339396, + "Population_abs": 42634 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.022458425972705, + 50.87199335720961 + ], + [ + 7.022687770742833, + 50.87182550853561 + ], + [ + 7.022693833112255, + 50.871821071207066 + ], + [ + 7.023172385371007, + 50.87147083059747 + ], + [ + 7.0246725800193195, + 50.87036157442167 + ], + [ + 7.024830562695155, + 50.87025177349164 + ], + [ + 7.024853583445191, + 50.87023450568796 + ], + [ + 7.024922247639449, + 50.87018085268554 + ], + [ + 7.024963463974701, + 50.870151451758 + ], + [ + 7.025036133866566, + 50.87009660646404 + ], + [ + 7.02507933245411, + 50.87005884155149 + ], + [ + 7.026647426300296, + 50.86868789672068 + ], + [ + 7.025501561290739, + 50.86810494284585 + ], + [ + 7.024498396897074, + 50.86752422909271 + ], + [ + 7.024352550477536, + 50.8674356153355 + ], + [ + 7.023292840142583, + 50.866762436974426 + ], + [ + 7.022324594785955, + 50.866048084889655 + ], + [ + 7.022225475775637, + 50.865971733807385 + ], + [ + 7.022088474776166, + 50.86586497100869 + ], + [ + 7.021953300547918, + 50.86575720292842 + ], + [ + 7.021813466998944, + 50.865644261604835 + ], + [ + 7.021457697212084, + 50.86535495071632 + ], + [ + 7.021342920013409, + 50.8652615751947 + ], + [ + 7.017229403990059, + 50.861914776839264 + ], + [ + 7.014430206336463, + 50.859636683097634 + ], + [ + 7.01432787630507, + 50.859555049522186 + ], + [ + 7.01430503938959, + 50.859536819825735 + ], + [ + 7.014282202491866, + 50.85951859012495 + ], + [ + 7.013322545262167, + 50.85874817304551 + ], + [ + 7.012331058434835, + 50.8579362243092 + ], + [ + 7.012296794628096, + 50.85790809700003 + ], + [ + 7.012287389446493, + 50.85790037566233 + ], + [ + 7.012006559157246, + 50.85766881620619 + ], + [ + 7.01172699691799, + 50.85743670655238 + ], + [ + 7.010946649417074, + 50.85681681629558 + ], + [ + 7.010805852420997, + 50.856713325271556 + ], + [ + 7.0101296724273485, + 50.85621629635362 + ], + [ + 7.010039219169023, + 50.856151276975034 + ], + [ + 7.009823575558211, + 50.855997536719855 + ], + [ + 7.009782381817794, + 50.855968748104594 + ], + [ + 7.009605547659622, + 50.855845164708924 + ], + [ + 7.009308104300076, + 50.85564309275083 + ], + [ + 7.00890130569482, + 50.85536672559999 + ], + [ + 7.008163788105567, + 50.85489103003588 + ], + [ + 7.008035152118779, + 50.85480805844078 + ], + [ + 7.007317571521189, + 50.854368110075804 + ], + [ + 7.006889596744204, + 50.85411389816381 + ], + [ + 7.006348817872675, + 50.85380465297996 + ], + [ + 7.005437113780009, + 50.8533042510153 + ], + [ + 7.003990017253618, + 50.85256447777004 + ], + [ + 7.0028355407617076, + 50.852018411766764 + ], + [ + 7.002125449793656, + 50.85169828757943 + ], + [ + 7.0014021372797615, + 50.85139031790555 + ], + [ + 6.998497713075231, + 50.850209192519856 + ], + [ + 6.997234515305176, + 50.84969294680242 + ], + [ + 6.99530242500237, + 50.85161953765561 + ], + [ + 6.995288104720215, + 50.85163349465622 + ], + [ + 6.995273766583446, + 50.85164747023537 + ], + [ + 6.995151899575942, + 50.85176645203105 + ], + [ + 6.994105704756657, + 50.85255261077456 + ], + [ + 6.9940509394823325, + 50.852568983184966 + ], + [ + 6.994563505968116, + 50.85290495525936 + ], + [ + 6.9935142249078215, + 50.85357498568667 + ], + [ + 6.993188711488518, + 50.853440488857615 + ], + [ + 6.992893512078234, + 50.8533223633846 + ], + [ + 6.992424029537203, + 50.85315573923774 + ], + [ + 6.991641434998333, + 50.853619151108845 + ], + [ + 6.99125126833698, + 50.85388442115184 + ], + [ + 6.991238526479954, + 50.85389297975209 + ], + [ + 6.990738133952853, + 50.85422959601786 + ], + [ + 6.990626330190696, + 50.85434597994974 + ], + [ + 6.992504501780114, + 50.855079162061905 + ], + [ + 6.99249552564288, + 50.855094458126715 + ], + [ + 6.992400786477917, + 50.85521093140661 + ], + [ + 6.992715957782294, + 50.85547316909483 + ], + [ + 6.992825894310076, + 50.8555472954663 + ], + [ + 6.992847075959709, + 50.8555616785805 + ], + [ + 6.9929220001744925, + 50.85561219085484 + ], + [ + 6.992948897926178, + 50.85563488456238 + ], + [ + 6.992995757153646, + 50.85567466909005 + ], + [ + 6.9930420365809445, + 50.85571382844548 + ], + [ + 6.993154605050067, + 50.855838273537096 + ], + [ + 6.993254818736712, + 50.85596273354843 + ], + [ + 6.9932660461504295, + 50.85597648128168 + ], + [ + 6.993427046020798, + 50.85628803412191 + ], + [ + 6.993489399181701, + 50.856408500628575 + ], + [ + 6.993502928842432, + 50.856430320329295 + ], + [ + 6.993507199875084, + 50.856437475532594 + ], + [ + 6.993518967276937, + 50.85645652270193 + ], + [ + 6.9935558746018405, + 50.85653585532173 + ], + [ + 6.99357946310333, + 50.85660990703572 + ], + [ + 6.993601371679355, + 50.85671184132866 + ], + [ + 6.993610674481355, + 50.85675527066671 + ], + [ + 6.993687995074239, + 50.85711203321205 + ], + [ + 6.993828088913321, + 50.85742187591315 + ], + [ + 6.993839112131934, + 50.85744605382348 + ], + [ + 6.993868174513637, + 50.85751035043936 + ], + [ + 6.994008536615451, + 50.85781263908451 + ], + [ + 6.9941382416330065, + 50.85818144978725 + ], + [ + 6.99420886297326, + 50.85835659211912 + ], + [ + 6.994257056811482, + 50.858338742270774 + ], + [ + 6.994297086371133, + 50.8583242875237 + ], + [ + 6.994405808435618, + 50.858287582004785 + ], + [ + 6.994420388661454, + 50.858318651818074 + ], + [ + 6.994423362408377, + 50.85832491857686 + ], + [ + 6.994429308042759, + 50.85833736302331 + ], + [ + 6.9943830127650966, + 50.85835097260926 + ], + [ + 6.994368616073224, + 50.858355230130975 + ], + [ + 6.994359341598065, + 50.85835989408827 + ], + [ + 6.9943329112679, + 50.85837261479248 + ], + [ + 6.994311675288304, + 50.858382504490415 + ], + [ + 6.994304942308029, + 50.85842652058809 + ], + [ + 6.9943718945164255, + 50.8584892352635 + ], + [ + 6.9944100086512195, + 50.85856505104185 + ], + [ + 6.994455949353464, + 50.85858812209804 + ], + [ + 6.994453035977178, + 50.85860468812544 + ], + [ + 6.994448719575693, + 50.8586288163336 + ], + [ + 6.994452970343996, + 50.85865502908384 + ], + [ + 6.994454421215346, + 50.85866310800273 + ], + [ + 6.9944581032147095, + 50.858682673526 + ], + [ + 6.99448353684773, + 50.85874987735278 + ], + [ + 6.994488312428652, + 50.85876071427036 + ], + [ + 6.994490853854911, + 50.85876662553398 + ], + [ + 6.994510715966551, + 50.858812302174144 + ], + [ + 6.994515482846281, + 50.85882277918751 + ], + [ + 6.994572963146779, + 50.8589542542649 + ], + [ + 6.994659810235895, + 50.85907747857949 + ], + [ + 6.994711802118121, + 50.85915128881856 + ], + [ + 6.994913175972594, + 50.85978368851098 + ], + [ + 6.994938123892662, + 50.859861413851036 + ], + [ + 6.994963215829542, + 50.85993922889953 + ], + [ + 6.99501646184432, + 50.86010516996328 + ], + [ + 6.995179680696179, + 50.86058633235288 + ], + [ + 6.995203387209775, + 50.86066568665779 + ], + [ + 6.995207290451287, + 50.86067891260182 + ], + [ + 6.99526257164316, + 50.86086366941182 + ], + [ + 6.995340784783063, + 50.861161361799624 + ], + [ + 6.995381691634347, + 50.86128138219708 + ], + [ + 6.9954317923191285, + 50.8612862587488 + ], + [ + 6.995660678911046, + 50.861295991219286 + ], + [ + 6.99578564553988, + 50.861301396463226 + ], + [ + 6.996278675106495, + 50.86132226641393 + ], + [ + 6.99715353274279, + 50.86139120058246 + ], + [ + 6.997161643321915, + 50.86139185066216 + ], + [ + 6.997220152102472, + 50.86139800220416 + ], + [ + 6.997316581062776, + 50.861404010473194 + ], + [ + 6.997192343042415, + 50.861658934911354 + ], + [ + 6.996756966398868, + 50.86260960778172 + ], + [ + 6.996590169548004, + 50.86332012236299 + ], + [ + 6.996528106182295, + 50.863786666297365 + ], + [ + 6.996541036251767, + 50.863918744091116 + ], + [ + 6.996566427325003, + 50.864178099701164 + ], + [ + 6.99670968685965, + 50.86468998231656 + ], + [ + 6.9967218887757525, + 50.864733578924664 + ], + [ + 6.996963354393782, + 50.865172179293225 + ], + [ + 6.997203550735243, + 50.865464530371106 + ], + [ + 6.997687330932573, + 50.86610772463471 + ], + [ + 6.998892179135026, + 50.86744133798395 + ], + [ + 6.999165635415733, + 50.86775335717993 + ], + [ + 6.999623659063792, + 50.86837222172961 + ], + [ + 6.999757887895492, + 50.86861037133544 + ], + [ + 6.99982563461074, + 50.868755689171714 + ], + [ + 6.999985686186975, + 50.8691249522759 + ], + [ + 7.000061231762759, + 50.869422035730736 + ], + [ + 7.000099533580599, + 50.869704785878895 + ], + [ + 7.000087944294654, + 50.87009299132074 + ], + [ + 7.000083642212536, + 50.87009285192699 + ], + [ + 6.9999918746394085, + 50.870089884026 + ], + [ + 6.999932294861138, + 50.87008152919343 + ], + [ + 6.999280803145826, + 50.869989128535515 + ], + [ + 6.999214959633426, + 50.870026877041035 + ], + [ + 6.999137553985041, + 50.87007125174337 + ], + [ + 6.998385491490543, + 50.870502397002056 + ], + [ + 6.9978654174247215, + 50.87080053995725 + ], + [ + 6.997018285546654, + 50.87128616113715 + ], + [ + 6.996698435444786, + 50.871423287617354 + ], + [ + 6.9967985257900525, + 50.8714534453825 + ], + [ + 6.996754955742071, + 50.87148213500266 + ], + [ + 6.9984122327364995, + 50.871903320061435 + ], + [ + 6.998270488669191, + 50.87212983400636 + ], + [ + 6.9982687617066786, + 50.872132155361555 + ], + [ + 6.9982545307987625, + 50.872150431277134 + ], + [ + 6.998002603231655, + 50.8724729818842 + ], + [ + 6.998249606200572, + 50.8725352387387 + ], + [ + 6.998339982385208, + 50.87255801726481 + ], + [ + 6.998361203594606, + 50.872563366581026 + ], + [ + 6.998488975476629, + 50.872595570754214 + ], + [ + 6.998247325800655, + 50.872861752290675 + ], + [ + 6.998208593196508, + 50.87290442087707 + ], + [ + 6.998199813632674, + 50.87291445934206 + ], + [ + 6.998193944002018, + 50.87292107432012 + ], + [ + 6.9981870006684606, + 50.872928895834185 + ], + [ + 6.998148119626806, + 50.872973168148626 + ], + [ + 6.9979604750266855, + 50.8731874648697 + ], + [ + 6.997668085835187, + 50.873546487417016 + ], + [ + 6.997893064896499, + 50.87362313037994 + ], + [ + 6.998177385320544, + 50.873717424142335 + ], + [ + 6.999959359960442, + 50.87431146602735 + ], + [ + 7.000026923304011, + 50.87436149734403 + ], + [ + 7.00011988893294, + 50.874407330395385 + ], + [ + 7.000812193246274, + 50.874335614622055 + ], + [ + 7.001246954631969, + 50.874289542470414 + ], + [ + 7.0016732102653245, + 50.87424444096202 + ], + [ + 7.002211641068895, + 50.87418965475922 + ], + [ + 7.002355623264112, + 50.87417259611723 + ], + [ + 7.002791519597108, + 50.874124574307 + ], + [ + 7.00278106049866, + 50.87408504649202 + ], + [ + 7.002719244829776, + 50.873849997499065 + ], + [ + 7.002716608695952, + 50.87384020848834 + ], + [ + 7.002713293301435, + 50.873826758164704 + ], + [ + 7.0027539521287006, + 50.87382220624155 + ], + [ + 7.003154753730913, + 50.87378016763573 + ], + [ + 7.003301895887265, + 50.87376469805326 + ], + [ + 7.0032649082756135, + 50.87370873882379 + ], + [ + 7.00316473615551, + 50.87355705289835 + ], + [ + 7.003109853890672, + 50.87333973712109 + ], + [ + 7.0031319779473815, + 50.873337486859796 + ], + [ + 7.003511788574779, + 50.87330008297219 + ], + [ + 7.003777011137553, + 50.87327397077742 + ], + [ + 7.003830272844024, + 50.8732687275188 + ], + [ + 7.004133800945628, + 50.873238757639605 + ], + [ + 7.004295395495393, + 50.87322245656616 + ], + [ + 7.004294133663481, + 50.873163523773904 + ], + [ + 7.004287538263158, + 50.872978635074396 + ], + [ + 7.004287273971314, + 50.87297151285784 + ], + [ + 7.004287023975829, + 50.87296748295546 + ], + [ + 7.004286637862983, + 50.8729622806311 + ], + [ + 7.004283600015917, + 50.8729367681134 + ], + [ + 7.004169085891975, + 50.87294772901516 + ], + [ + 7.0041422836036284, + 50.87295049214196 + ], + [ + 7.003976648941482, + 50.87296635873798 + ], + [ + 7.003731279114354, + 50.87298972525841 + ], + [ + 7.003516814665371, + 50.873010137673184 + ], + [ + 7.003507903069247, + 50.873010986201464 + ], + [ + 7.003220413825731, + 50.87303889592809 + ], + [ + 7.003195615141791, + 50.873041304593244 + ], + [ + 7.003172874857484, + 50.8730436423526 + ], + [ + 7.003038864787841, + 50.87305684612752 + ], + [ + 7.002929968607925, + 50.87306761506196 + ], + [ + 7.0029175370802985, + 50.873068873675734 + ], + [ + 7.0027742362547825, + 50.87308258097332 + ], + [ + 7.0025896118842255, + 50.873100508414076 + ], + [ + 7.002516016889156, + 50.873107744108275 + ], + [ + 7.002213670492161, + 50.87313749707158 + ], + [ + 7.002097397753759, + 50.87314894027961 + ], + [ + 7.0020106414210685, + 50.87315751072328 + ], + [ + 7.001948267271795, + 50.873163675468184 + ], + [ + 7.001917594909813, + 50.8731667207738 + ], + [ + 7.00186517353903, + 50.87317192178833 + ], + [ + 7.001777499358347, + 50.873180613946424 + ], + [ + 7.001225262810459, + 50.87323518228137 + ], + [ + 7.000953912424003, + 50.873261830350046 + ], + [ + 7.000804303594495, + 50.873276499223394 + ], + [ + 7.000846963616888, + 50.873206280695165 + ], + [ + 7.00096028676127, + 50.87301987034194 + ], + [ + 7.001076346066889, + 50.8728285898385 + ], + [ + 7.001116534240539, + 50.87276336809551 + ], + [ + 7.001232853450926, + 50.87257295889177 + ], + [ + 7.0012985619992, + 50.87246555619457 + ], + [ + 7.001386795208455, + 50.8723209415704 + ], + [ + 7.001532331018509, + 50.87208240389224 + ], + [ + 7.00155226808006, + 50.87204972729783 + ], + [ + 7.001633023370736, + 50.871918466127326 + ], + [ + 7.001663557787065, + 50.871868684913146 + ], + [ + 7.001779515046717, + 50.87167792450229 + ], + [ + 7.00188391713878, + 50.87151746859859 + ], + [ + 7.001885378516894, + 50.871512013696886 + ], + [ + 7.002148463713293, + 50.87107510613807 + ], + [ + 7.0021868103188725, + 50.87101209375116 + ], + [ + 7.002270521673055, + 50.87087447286595 + ], + [ + 7.002355223155081, + 50.87073475892482 + ], + [ + 7.002527098296035, + 50.870452158792574 + ], + [ + 7.0026687199534265, + 50.870218390458085 + ], + [ + 7.0026981686089265, + 50.87016984952008 + ], + [ + 7.002852786099796, + 50.87020364439875 + ], + [ + 7.002961217252498, + 50.870034019856774 + ], + [ + 7.0029644029792895, + 50.8700289200305 + ], + [ + 7.002983731109206, + 50.86999797487063 + ], + [ + 7.003030607629227, + 50.86997896021489 + ], + [ + 7.003107807914327, + 50.86994764564111 + ], + [ + 7.003313834893675, + 50.8699625036837 + ], + [ + 7.004409351069007, + 50.87021092594062 + ], + [ + 7.004490358172237, + 50.87025232843762 + ], + [ + 7.004664322390617, + 50.870283907432494 + ], + [ + 7.004761922814362, + 50.870300442319014 + ], + [ + 7.004787761962322, + 50.870304719128754 + ], + [ + 7.005315722434832, + 50.870392039801104 + ], + [ + 7.005320114358564, + 50.87039260594451 + ], + [ + 7.005996889442283, + 50.87054510211918 + ], + [ + 7.006883503406271, + 50.870725323739926 + ], + [ + 7.007020152183446, + 50.87075873147249 + ], + [ + 7.007883798036982, + 50.87097064750597 + ], + [ + 7.007890241134539, + 50.870941912587874 + ], + [ + 7.007890879234536, + 50.87093371483892 + ], + [ + 7.007959264262963, + 50.870941494616076 + ], + [ + 7.009360528819191, + 50.87127969515093 + ], + [ + 7.00932758608818, + 50.87183023630803 + ], + [ + 7.009301877172233, + 50.872260233728674 + ], + [ + 7.009352855494263, + 50.872259098739256 + ], + [ + 7.009602389962481, + 50.872253587497866 + ], + [ + 7.010476605259092, + 50.87234987280656 + ], + [ + 7.010581632502179, + 50.87234606132978 + ], + [ + 7.010606723847094, + 50.87162021207182 + ], + [ + 7.010708047247846, + 50.8716523053383 + ], + [ + 7.011183417879394, + 50.87185115301144 + ], + [ + 7.011207922539204, + 50.87186140180781 + ], + [ + 7.011494513138551, + 50.87196804931197 + ], + [ + 7.012065857072523, + 50.8722078758529 + ], + [ + 7.012387233406012, + 50.872372380875376 + ], + [ + 7.012694955734176, + 50.872503292659246 + ], + [ + 7.01318664042903, + 50.8727313995957 + ], + [ + 7.013857456369917, + 50.87301062642114 + ], + [ + 7.014242316869827, + 50.87314733586679 + ], + [ + 7.014534653645223, + 50.87320394398758 + ], + [ + 7.014652885279534, + 50.87325091931559 + ], + [ + 7.014969715978695, + 50.87338201596289 + ], + [ + 7.015049685461883, + 50.873413861747515 + ], + [ + 7.015186557300941, + 50.87351443104151 + ], + [ + 7.015307454587457, + 50.873579361273464 + ], + [ + 7.015581718665412, + 50.87368673507191 + ], + [ + 7.015742696761235, + 50.87373701927272 + ], + [ + 7.016354745830064, + 50.87392820014964 + ], + [ + 7.016969058879366, + 50.874181652369415 + ], + [ + 7.017290635242868, + 50.8743147686276 + ], + [ + 7.01786284169656, + 50.874552311870154 + ], + [ + 7.018416393050322, + 50.87478120541086 + ], + [ + 7.018438208908729, + 50.87482863947573 + ], + [ + 7.018440429849366, + 50.87483224412763 + ], + [ + 7.018467337823064, + 50.87479596506709 + ], + [ + 7.018518302660551, + 50.87472440089088 + ], + [ + 7.018695023759233, + 50.874410654132596 + ], + [ + 7.019919229376804, + 50.87274859059567 + ], + [ + 7.0212011623849975, + 50.872561000196015 + ], + [ + 7.021639954761452, + 50.87246708263367 + ], + [ + 7.021767737931568, + 50.87242443221222 + ], + [ + 7.021932018537537, + 50.87236159506219 + ], + [ + 7.022116228534621, + 50.87224869074093 + ], + [ + 7.022458425972705, + 50.87199335720961 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Suerth", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "210", + "Population_rel": 0.01003639572074556, + "Population_abs": 10920 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.891770754911909, + 51.007030203986346 + ], + [ + 6.893232872619753, + 51.00539783027691 + ], + [ + 6.893864614422579, + 51.00464968035905 + ], + [ + 6.894180980751861, + 51.00429802819799 + ], + [ + 6.894251149222033, + 51.00432400909655 + ], + [ + 6.894447974211215, + 51.00410550194227 + ], + [ + 6.894517578146303, + 51.004028111797005 + ], + [ + 6.894518552030157, + 51.00402684594546 + ], + [ + 6.894566393693913, + 51.003973532746876 + ], + [ + 6.894578809663672, + 51.0039524027062 + ], + [ + 6.894662823473475, + 51.00380946045684 + ], + [ + 6.894791249029243, + 51.003590488664415 + ], + [ + 6.895227417026055, + 51.003475499855774 + ], + [ + 6.896389280433384, + 51.002176098855706 + ], + [ + 6.897149472532145, + 51.00147067460185 + ], + [ + 6.897268981427777, + 51.001359773096596 + ], + [ + 6.898538149566683, + 51.00018197449848 + ], + [ + 6.898774843981576, + 50.99991239151432 + ], + [ + 6.898524878446451, + 50.99979493233495 + ], + [ + 6.898505434216947, + 50.99978578925882 + ], + [ + 6.898482863778095, + 50.99977517520754 + ], + [ + 6.898436285586938, + 50.999753330337725 + ], + [ + 6.898396031699436, + 50.999702215761516 + ], + [ + 6.8983337646342875, + 50.99962314726594 + ], + [ + 6.897633105360485, + 50.99928110400179 + ], + [ + 6.8972271278281445, + 50.999075675106965 + ], + [ + 6.897050516030469, + 50.998996219871714 + ], + [ + 6.897045272230153, + 50.99899389139817 + ], + [ + 6.897040169584964, + 50.99899162482496 + ], + [ + 6.896810955096214, + 50.998888479483334 + ], + [ + 6.896622998977352, + 50.9988038988059 + ], + [ + 6.896615512144463, + 50.99880055499119 + ], + [ + 6.896610929803042, + 50.99879850822377 + ], + [ + 6.896173217494323, + 50.998616511065414 + ], + [ + 6.8950475700357625, + 50.998203822823925 + ], + [ + 6.892571897327629, + 50.99731495713415 + ], + [ + 6.892347315541503, + 50.99725150132335 + ], + [ + 6.89147905852789, + 50.997006251660956 + ], + [ + 6.891468895794555, + 50.99700322164687 + ], + [ + 6.888661790171529, + 50.99921723281233 + ], + [ + 6.887656649702255, + 51.00006231101806 + ], + [ + 6.88751717556908, + 51.00015155523961 + ], + [ + 6.886876386849936, + 51.00077865592413 + ], + [ + 6.886414419027358, + 51.00110181910858 + ], + [ + 6.886050856350274, + 51.00135609591417 + ], + [ + 6.885515756201704, + 51.00176709602012 + ], + [ + 6.885178034685973, + 51.00204724269692 + ], + [ + 6.884633407815828, + 51.00244509638985 + ], + [ + 6.883920378447091, + 51.002947957455284 + ], + [ + 6.883289541661826, + 51.00343607916697 + ], + [ + 6.883206180524171, + 51.003502690679255 + ], + [ + 6.883036516141805, + 51.003631170847825 + ], + [ + 6.882683398609572, + 51.003919786765294 + ], + [ + 6.882366805490699, + 51.00417387667812 + ], + [ + 6.882141819652622, + 51.004352842683204 + ], + [ + 6.881532112878277, + 51.00483773888906 + ], + [ + 6.881418091583182, + 51.00486556768062 + ], + [ + 6.88126205606176, + 51.0049844137775 + ], + [ + 6.881224193903524, + 51.00503890456674 + ], + [ + 6.88083757033282, + 51.005327407171535 + ], + [ + 6.8803714950868695, + 51.00570163598035 + ], + [ + 6.880199524818391, + 51.00582950002774 + ], + [ + 6.879545283900615, + 51.00640254583358 + ], + [ + 6.879411033376467, + 51.006393130060104 + ], + [ + 6.879247481780867, + 51.006341145201425 + ], + [ + 6.878667448667128, + 51.00678571127756 + ], + [ + 6.8787367713725045, + 51.006880295124276 + ], + [ + 6.878523319965981, + 51.00706033614232 + ], + [ + 6.877995048012629, + 51.00746261957612 + ], + [ + 6.877200458021125, + 51.00803059487622 + ], + [ + 6.877401985650581, + 51.008139287737116 + ], + [ + 6.87757761330701, + 51.008234421848165 + ], + [ + 6.877778238196828, + 51.00835552612747 + ], + [ + 6.8778455087897905, + 51.00840176406782 + ], + [ + 6.87820549402691, + 51.0085863909696 + ], + [ + 6.878607510937702, + 51.00875568854426 + ], + [ + 6.878808454638171, + 51.008825550326804 + ], + [ + 6.879232017519217, + 51.00895854786478 + ], + [ + 6.88174202807593, + 51.009888156933116 + ], + [ + 6.886153113391996, + 51.01154175930331 + ], + [ + 6.887863655565452, + 51.01228960768206 + ], + [ + 6.887966006325415, + 51.012186068860366 + ], + [ + 6.88805265825137, + 51.0120984087508 + ], + [ + 6.888417101299164, + 51.01172986788892 + ], + [ + 6.8891157771570946, + 51.01102339475553 + ], + [ + 6.889213629218916, + 51.01092448807293 + ], + [ + 6.889303791999927, + 51.01083328040543 + ], + [ + 6.889822958085456, + 51.0103082231095 + ], + [ + 6.889873839286634, + 51.01025677626925 + ], + [ + 6.89041241049328, + 51.0097115225505 + ], + [ + 6.890467044581385, + 51.009655193979896 + ], + [ + 6.891425430000963, + 51.00866734162112 + ], + [ + 6.8920288309094815, + 51.008027379362225 + ], + [ + 6.8923730662729525, + 51.00724781411238 + ], + [ + 6.892062253002139, + 51.0071778266509 + ], + [ + 6.891959689100211, + 51.00710471888626 + ], + [ + 6.891770754911909, + 51.007030203986346 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Lindweiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "605", + "Population_rel": 0.0032020881585235837, + "Population_abs": 3484 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.855099738442905, + 50.94081521294605 + ], + [ + 6.855343658413381, + 50.94081045964931 + ], + [ + 6.855364707511092, + 50.940810035119206 + ], + [ + 6.855430304120064, + 50.940808835284315 + ], + [ + 6.8555402173106454, + 50.94080668134583 + ], + [ + 6.855808031478925, + 50.94080148102897 + ], + [ + 6.855815516346155, + 50.94095334533866 + ], + [ + 6.855820213490886, + 50.941053990434696 + ], + [ + 6.855822824878952, + 50.941103412125344 + ], + [ + 6.855898207136156, + 50.94110202751642 + ], + [ + 6.8560719469277425, + 50.94109846144764 + ], + [ + 6.856084828886406, + 50.94109801720012 + ], + [ + 6.8563149355682205, + 50.94109386888444 + ], + [ + 6.85631480898053, + 50.94106335660957 + ], + [ + 6.856313200302478, + 50.94105240489602 + ], + [ + 6.856305659496276, + 50.94090633166447 + ], + [ + 6.85630519095028, + 50.94089680573253 + ], + [ + 6.856303651012522, + 50.94086696992418 + ], + [ + 6.85648087292338, + 50.94086387462064 + ], + [ + 6.85651813537066, + 50.94086315130496 + ], + [ + 6.856544447382992, + 50.94086259925288 + ], + [ + 6.8565969001727805, + 50.940861999241775 + ], + [ + 6.856622320607358, + 50.940865139878795 + ], + [ + 6.856638009044527, + 50.94086721592218 + ], + [ + 6.856691419859387, + 50.94087410557713 + ], + [ + 6.856721724493637, + 50.94087801760611 + ], + [ + 6.856805297345808, + 50.940888763547754 + ], + [ + 6.856873564483268, + 50.94089762392144 + ], + [ + 6.856888956761471, + 50.9408996090518 + ], + [ + 6.856972503417514, + 50.94091049289799 + ], + [ + 6.857031048965936, + 50.940918125120646 + ], + [ + 6.857051364132707, + 50.94092062871164 + ], + [ + 6.857066474797949, + 50.94092251601171 + ], + [ + 6.857099854072854, + 50.940926835146165 + ], + [ + 6.857141782179655, + 50.94093219350092 + ], + [ + 6.857151912097788, + 50.94093352077762 + ], + [ + 6.857228469019412, + 50.94094314380075 + ], + [ + 6.8573108681044115, + 50.94095369515028 + ], + [ + 6.85739458218667, + 50.94096431644653 + ], + [ + 6.857407277173478, + 50.94096611079631 + ], + [ + 6.857478441955875, + 50.94097520657531 + ], + [ + 6.8575854037143165, + 50.940988983162576 + ], + [ + 6.857616923417947, + 50.940993066556665 + ], + [ + 6.857623509605541, + 50.941010817238414 + ], + [ + 6.857700997113283, + 50.94100782062491 + ], + [ + 6.8577255942043465, + 50.94100692024904 + ], + [ + 6.857762988208676, + 50.94100556667959 + ], + [ + 6.8579392941319774, + 50.94099905715783 + ], + [ + 6.8580564511461946, + 50.94099468996514 + ], + [ + 6.858216546926962, + 50.94098874779506 + ], + [ + 6.858295031287874, + 50.94098583383333 + ], + [ + 6.8583664059351666, + 50.940983150935736 + ], + [ + 6.858486121666347, + 50.94097867466096 + ], + [ + 6.858583784546002, + 50.94097499709853 + ], + [ + 6.858728517572722, + 50.94096951979528 + ], + [ + 6.8588733951334175, + 50.94096402517719 + ], + [ + 6.858940666731562, + 50.94096150590766 + ], + [ + 6.858962298854596, + 50.94096072357202 + ], + [ + 6.858972724128831, + 50.94080898745945 + ], + [ + 6.858977914655553, + 50.94073226772537 + ], + [ + 6.858988816238106, + 50.940570998734856 + ], + [ + 6.858992277289745, + 50.94051946432031 + ], + [ + 6.859018001233761, + 50.940139838521084 + ], + [ + 6.859024943673349, + 50.94010733605003 + ], + [ + 6.859069087208444, + 50.93935317135554 + ], + [ + 6.859082793908646, + 50.93915716363849 + ], + [ + 6.859088590448121, + 50.93905677050707 + ], + [ + 6.859469379842786, + 50.939064519102956 + ], + [ + 6.85947164408704, + 50.939032796029664 + ], + [ + 6.859472264499645, + 50.939023937639625 + ], + [ + 6.859473173177473, + 50.939015435296966 + ], + [ + 6.859473494446609, + 50.939009680606524 + ], + [ + 6.859477286401457, + 50.93896075057016 + ], + [ + 6.8594846219268995, + 50.93887251209379 + ], + [ + 6.859485666697895, + 50.93885082001969 + ], + [ + 6.859485264027602, + 50.9388383893861 + ], + [ + 6.85948563226379, + 50.938825909931474 + ], + [ + 6.859485781657742, + 50.938816304506275 + ], + [ + 6.859489284473506, + 50.93877196414089 + ], + [ + 6.859489757847133, + 50.938766027864816 + ], + [ + 6.85949207497784, + 50.93874170592627 + ], + [ + 6.859494609823635, + 50.938715402130576 + ], + [ + 6.859500219902383, + 50.93864827123278 + ], + [ + 6.859533089844509, + 50.938276076617825 + ], + [ + 6.8595392665775, + 50.93820986988359 + ], + [ + 6.859550518881665, + 50.93808717389851 + ], + [ + 6.859556342967274, + 50.93799418140747 + ], + [ + 6.859557200264154, + 50.93797889403461 + ], + [ + 6.859588099670908, + 50.937980605540446 + ], + [ + 6.861119116531057, + 50.937944904729 + ], + [ + 6.861125185631676, + 50.938065496172726 + ], + [ + 6.86112721754344, + 50.938129215480586 + ], + [ + 6.861420151616856, + 50.938121569317225 + ], + [ + 6.861425858551611, + 50.93823784873128 + ], + [ + 6.861544108629542, + 50.93826223535278 + ], + [ + 6.861552500387788, + 50.93845445430441 + ], + [ + 6.861802388978827, + 50.93845009192317 + ], + [ + 6.861803527422321, + 50.938465455436464 + ], + [ + 6.861956561048371, + 50.93846279650388 + ], + [ + 6.861824312327565, + 50.938704685726975 + ], + [ + 6.862188844713609, + 50.93869102624079 + ], + [ + 6.862381032567347, + 50.938293944010354 + ], + [ + 6.862390693513129, + 50.93827405018214 + ], + [ + 6.862569292612072, + 50.93830751933946 + ], + [ + 6.862625398604477, + 50.93831798124422 + ], + [ + 6.862655322549197, + 50.93826288132398 + ], + [ + 6.86266158565611, + 50.93825155308825 + ], + [ + 6.862727898238102, + 50.93812934783642 + ], + [ + 6.862762707785542, + 50.938065356952016 + ], + [ + 6.862780592286124, + 50.93803241334045 + ], + [ + 6.862795171475124, + 50.938005337975284 + ], + [ + 6.862825860257054, + 50.937949287870616 + ], + [ + 6.862838504648793, + 50.93794838524192 + ], + [ + 6.862838982652694, + 50.937920424826615 + ], + [ + 6.8628392896395365, + 50.93790621921783 + ], + [ + 6.862839046986541, + 50.937892017936235 + ], + [ + 6.862860361274213, + 50.937891770499206 + ], + [ + 6.862881174426846, + 50.93784810042645 + ], + [ + 6.862892134534602, + 50.93782510496928 + ], + [ + 6.865136185503959, + 50.93783509805752 + ], + [ + 6.865820858960032, + 50.93783261607186 + ], + [ + 6.8677442263923565, + 50.937825621375666 + ], + [ + 6.867699830273928, + 50.937702978494784 + ], + [ + 6.867698739146443, + 50.93769786263434 + ], + [ + 6.867688343951211, + 50.93764382462398 + ], + [ + 6.867673390195117, + 50.937566627757704 + ], + [ + 6.867663610307514, + 50.93751510217999 + ], + [ + 6.867653924495956, + 50.93708360240299 + ], + [ + 6.86759823124394, + 50.93623488707037 + ], + [ + 6.867594967188565, + 50.936059530498795 + ], + [ + 6.867605139664291, + 50.93589531096399 + ], + [ + 6.867748547189158, + 50.93413845924459 + ], + [ + 6.867910724492102, + 50.93220608615045 + ], + [ + 6.868032416330346, + 50.93046054124199 + ], + [ + 6.868163968093049, + 50.92886306594843 + ], + [ + 6.86827740328899, + 50.92882860181286 + ], + [ + 6.8683663791277425, + 50.92879440949856 + ], + [ + 6.868442907459034, + 50.928779278092115 + ], + [ + 6.868615985090255, + 50.92878527081439 + ], + [ + 6.868632475942376, + 50.92884582557025 + ], + [ + 6.868794212466882, + 50.92885388009453 + ], + [ + 6.868802618112329, + 50.92881651198233 + ], + [ + 6.868841469575571, + 50.92878700818962 + ], + [ + 6.868903990495186, + 50.92877584515838 + ], + [ + 6.870793170670413, + 50.92881785513238 + ], + [ + 6.871021355991262, + 50.928849861499714 + ], + [ + 6.871201792295218, + 50.928853817973675 + ], + [ + 6.871441066775096, + 50.92883225494049 + ], + [ + 6.873985115088439, + 50.92888846757582 + ], + [ + 6.874157914133441, + 50.92889472400548 + ], + [ + 6.874156590515335, + 50.92899865024193 + ], + [ + 6.874310557878302, + 50.929001901279776 + ], + [ + 6.875121885154737, + 50.929021441406704 + ], + [ + 6.875152122975348, + 50.929020313603885 + ], + [ + 6.875156253117706, + 50.928853890543245 + ], + [ + 6.875157658518, + 50.928830237947246 + ], + [ + 6.8751700536783416, + 50.928604064316865 + ], + [ + 6.875173224742395, + 50.928545700513816 + ], + [ + 6.8752176922412, + 50.928277665902186 + ], + [ + 6.87526827979034, + 50.927972009754946 + ], + [ + 6.875297422761042, + 50.927796950066224 + ], + [ + 6.8752985184178295, + 50.92779064551525 + ], + [ + 6.875306389767821, + 50.92774271112132 + ], + [ + 6.875307384823335, + 50.927736646674326 + ], + [ + 6.875402938596236, + 50.92774269405748 + ], + [ + 6.8760481017933435, + 50.92778366387946 + ], + [ + 6.876077385823528, + 50.927785523340425 + ], + [ + 6.876087631589588, + 50.927725217855304 + ], + [ + 6.876124442900749, + 50.92751180551083 + ], + [ + 6.876169699716701, + 50.92724825935167 + ], + [ + 6.876299453455849, + 50.926493442699766 + ], + [ + 6.8763096986009895, + 50.92643313717579 + ], + [ + 6.876214152146663, + 50.92642748548284 + ], + [ + 6.8761480476198376, + 50.92642358271057 + ], + [ + 6.875795658971016, + 50.926402772762124 + ], + [ + 6.875739015840364, + 50.92635381532121 + ], + [ + 6.8756338391541085, + 50.92626285182056 + ], + [ + 6.875611537420881, + 50.9262435704647 + ], + [ + 6.875561686026569, + 50.926200535800675 + ], + [ + 6.87557295188829, + 50.926131684039234 + ], + [ + 6.875604756909528, + 50.92593943412117 + ], + [ + 6.8756396406077585, + 50.92572936218771 + ], + [ + 6.875671474123069, + 50.92553675480551 + ], + [ + 6.87567756517252, + 50.92549970384674 + ], + [ + 6.875687568793716, + 50.925439245570104 + ], + [ + 6.875706012163348, + 50.925327758516225 + ], + [ + 6.875727505281341, + 50.92519752525389 + ], + [ + 6.875734271855234, + 50.92515648340861 + ], + [ + 6.8758050308592304, + 50.924728691076275 + ], + [ + 6.875808868651426, + 50.924705829220066 + ], + [ + 6.875825217588609, + 50.92460700428273 + ], + [ + 6.875840037366631, + 50.924517629266084 + ], + [ + 6.875866216190641, + 50.924356804008646 + ], + [ + 6.875884605475454, + 50.92424779554294 + ], + [ + 6.8758696303387214, + 50.924139676475676 + ], + [ + 6.875861739868018, + 50.924083013524076 + ], + [ + 6.875866111696941, + 50.92399776272513 + ], + [ + 6.875870229611692, + 50.92395197605904 + ], + [ + 6.8758783779948125, + 50.92382552555482 + ], + [ + 6.8759161517336, + 50.92301998058809 + ], + [ + 6.875919181578342, + 50.9229541564259 + ], + [ + 6.875923107528059, + 50.92287547022806 + ], + [ + 6.87592670953088, + 50.92280227069904 + ], + [ + 6.875943063835027, + 50.922476645238795 + ], + [ + 6.875945923059006, + 50.92241756337955 + ], + [ + 6.875946072998091, + 50.9224097423279 + ], + [ + 6.875946227243319, + 50.92240192045522 + ], + [ + 6.87594763017625, + 50.92233763521349 + ], + [ + 6.875949514099423, + 50.92224467272858 + ], + [ + 6.875929918210828, + 50.922121952514786 + ], + [ + 6.875907344553544, + 50.92203589743906 + ], + [ + 6.875893551172195, + 50.92198359430836 + ], + [ + 6.8758668706393555, + 50.92188830241142 + ], + [ + 6.8758412426978035, + 50.92180339151818 + ], + [ + 6.8757945821031194, + 50.9216589243625 + ], + [ + 6.875773312720576, + 50.921593100452114 + ], + [ + 6.8757545661968535, + 50.921534992438666 + ], + [ + 6.87579044947928, + 50.92148210849907 + ], + [ + 6.875826092703349, + 50.92143602315507 + ], + [ + 6.875843906074737, + 50.92140766314358 + ], + [ + 6.8758679183429, + 50.92135748435162 + ], + [ + 6.875871069750281, + 50.92135118212698 + ], + [ + 6.875874688506513, + 50.921344990937776 + ], + [ + 6.875887733341991, + 50.921322166215695 + ], + [ + 6.875892601795184, + 50.92131228059576 + ], + [ + 6.875938605694608, + 50.92122500829437 + ], + [ + 6.87604277150565, + 50.92102394515933 + ], + [ + 6.876095198941152, + 50.920922870749436 + ], + [ + 6.876112902408035, + 50.92088866806713 + ], + [ + 6.87617985692297, + 50.92075835981713 + ], + [ + 6.876302013232047, + 50.92052336159857 + ], + [ + 6.876368297952682, + 50.92039539565226 + ], + [ + 6.876480701053434, + 50.92017880745368 + ], + [ + 6.8765377900501665, + 50.920068529668406 + ], + [ + 6.876595103228035, + 50.91995510357618 + ], + [ + 6.876640261399983, + 50.91986837682912 + ], + [ + 6.8770708186589165, + 50.919040731694565 + ], + [ + 6.877098412153989, + 50.91898802754629 + ], + [ + 6.877126470866338, + 50.918937386057095 + ], + [ + 6.8771674751263205, + 50.91890210953541 + ], + [ + 6.8772061351687075, + 50.91884806328999 + ], + [ + 6.877241741371656, + 50.91879799434951 + ], + [ + 6.8774336302940124, + 50.91852578193675 + ], + [ + 6.877844128537009, + 50.91794343451733 + ], + [ + 6.877876970668887, + 50.917897702345805 + ], + [ + 6.877898029910667, + 50.91786814819011 + ], + [ + 6.878299677853903, + 50.91730719391778 + ], + [ + 6.878304900240965, + 50.91729948395699 + ], + [ + 6.878386590715866, + 50.91718514924603 + ], + [ + 6.87850794303265, + 50.91701424793999 + ], + [ + 6.878703825253424, + 50.91670830520861 + ], + [ + 6.87906214882871, + 50.91605783617417 + ], + [ + 6.87912264896036, + 50.915948070606326 + ], + [ + 6.879508028847444, + 50.915202199005826 + ], + [ + 6.879552197967961, + 50.915116377734236 + ], + [ + 6.879735454354066, + 50.91476000808431 + ], + [ + 6.879842996989879, + 50.91455109457014 + ], + [ + 6.880059592804974, + 50.914126292036784 + ], + [ + 6.88006241049877, + 50.91412060961188 + ], + [ + 6.880066045597283, + 50.91411146679475 + ], + [ + 6.880068941769656, + 50.91409983183942 + ], + [ + 6.880081130498674, + 50.91405477618824 + ], + [ + 6.880093219892347, + 50.91402126508851 + ], + [ + 6.8800897072252365, + 50.91401503687258 + ], + [ + 6.880088617354659, + 50.91392808032732 + ], + [ + 6.8800861802118085, + 50.91391947387532 + ], + [ + 6.880083751027958, + 50.91391103665301 + ], + [ + 6.880066826534672, + 50.9138508470121 + ], + [ + 6.88004072276648, + 50.91377112858508 + ], + [ + 6.88002911972287, + 50.91369130119992 + ], + [ + 6.880032745998154, + 50.91359733593296 + ], + [ + 6.880032978530008, + 50.9135905920399 + ], + [ + 6.8800332096402625, + 50.91358384812101 + ], + [ + 6.880034527984579, + 50.913548330906316 + ], + [ + 6.880051781705819, + 50.913481073198305 + ], + [ + 6.880056528278317, + 50.9134708569126 + ], + [ + 6.880061455983747, + 50.91346066190462 + ], + [ + 6.880101693003917, + 50.91337765603543 + ], + [ + 6.880138098939511, + 50.91330250058784 + ], + [ + 6.88018977910585, + 50.91320044121527 + ], + [ + 6.880221572103838, + 50.91313913079701 + ], + [ + 6.880224121704382, + 50.91313408656182 + ], + [ + 6.8805313262241645, + 50.91255488206442 + ], + [ + 6.880641211399385, + 50.91234772457584 + ], + [ + 6.880696935364019, + 50.91224149958802 + ], + [ + 6.88074247462655, + 50.912153150272 + ], + [ + 6.880768660661207, + 50.91196615436659 + ], + [ + 6.880529747997261, + 50.911881480648354 + ], + [ + 6.8804569040537, + 50.91185668100177 + ], + [ + 6.8804458889869355, + 50.91184934790118 + ], + [ + 6.880434854873098, + 50.911842027045026 + ], + [ + 6.880272526483468, + 50.911746165657995 + ], + [ + 6.880113612878738, + 50.911650808564836 + ], + [ + 6.879989914784525, + 50.911585012608015 + ], + [ + 6.879891825258785, + 50.91155371551542 + ], + [ + 6.879851101637368, + 50.911541066917 + ], + [ + 6.87984283820905, + 50.91153848845081 + ], + [ + 6.879834629221078, + 50.91153583902186 + ], + [ + 6.879818199394429, + 50.91153051926095 + ], + [ + 6.879731866139883, + 50.91150239279327 + ], + [ + 6.878437192930932, + 50.91108095802239 + ], + [ + 6.878029445270701, + 50.910928383645704 + ], + [ + 6.877523500335683, + 50.9106829138413 + ], + [ + 6.877184487514172, + 50.91050181666184 + ], + [ + 6.87711296586958, + 50.9104635507983 + ], + [ + 6.876762443776554, + 50.91020408602453 + ], + [ + 6.876230260826404, + 50.90982907066787 + ], + [ + 6.875434444596228, + 50.90926823717312 + ], + [ + 6.875397063487603, + 50.909241893467836 + ], + [ + 6.874018250288235, + 50.908294468557365 + ], + [ + 6.873939059846888, + 50.90824696815959 + ], + [ + 6.873838173613676, + 50.90819755877753 + ], + [ + 6.873623844924416, + 50.9081011821633 + ], + [ + 6.873616765756856, + 50.90809804651785 + ], + [ + 6.873504672309091, + 50.90804919712761 + ], + [ + 6.873264363335426, + 50.907944448002596 + ], + [ + 6.872696245801014, + 50.90769683986528 + ], + [ + 6.872584937722834, + 50.907648403221515 + ], + [ + 6.870977903136502, + 50.90694482319217 + ], + [ + 6.870817694492736, + 50.9068771424612 + ], + [ + 6.870591197876268, + 50.906784680779744 + ], + [ + 6.870310462636031, + 50.9066772163702 + ], + [ + 6.869772665359115, + 50.90648329388457 + ], + [ + 6.869655952730104, + 50.906441229568344 + ], + [ + 6.867892610830928, + 50.90580532824146 + ], + [ + 6.867784875055846, + 50.90576660897653 + ], + [ + 6.867575834538755, + 50.90569443757013 + ], + [ + 6.867535285600942, + 50.90568001689778 + ], + [ + 6.867527376937099, + 50.90567746291584 + ], + [ + 6.867156535893035, + 50.90556270782046 + ], + [ + 6.86699200270222, + 50.905511778436995 + ], + [ + 6.866575422797499, + 50.905386548502364 + ], + [ + 6.866313241151191, + 50.90532327145952 + ], + [ + 6.866304348725509, + 50.90532105017037 + ], + [ + 6.866302357364826, + 50.90532661697355 + ], + [ + 6.866299008744097, + 50.90533144304576 + ], + [ + 6.866290558327823, + 50.905341609067 + ], + [ + 6.866286062356727, + 50.905346640808276 + ], + [ + 6.866281987396935, + 50.90535182864652 + ], + [ + 6.8662638916228245, + 50.905374868492686 + ], + [ + 6.86626014353692, + 50.90537962700089 + ], + [ + 6.866235704092597, + 50.90541058962281 + ], + [ + 6.866230818152598, + 50.905416745666905 + ], + [ + 6.866226660323859, + 50.90542181686593 + ], + [ + 6.866109244211295, + 50.905388946767765 + ], + [ + 6.866035565479737, + 50.905370654100416 + ], + [ + 6.865830425297872, + 50.90531621041395 + ], + [ + 6.865654344118387, + 50.90528335078635 + ], + [ + 6.865521457407115, + 50.90525069001942 + ], + [ + 6.86545732229118, + 50.90523450882501 + ], + [ + 6.8653459685214235, + 50.905207381726115 + ], + [ + 6.865255350398569, + 50.905185583175836 + ], + [ + 6.865239948005534, + 50.90518192331541 + ], + [ + 6.865208231744418, + 50.905174845940095 + ], + [ + 6.8651086519226885, + 50.90516319397279 + ], + [ + 6.864967055539098, + 50.90512570359539 + ], + [ + 6.8648750874293025, + 50.90510444306926 + ], + [ + 6.864813970940313, + 50.905089539918364 + ], + [ + 6.864751829382255, + 50.90507341459337 + ], + [ + 6.86461688323429, + 50.90504798579267 + ], + [ + 6.864595584776397, + 50.90504395803788 + ], + [ + 6.864586694916013, + 50.90504224302154 + ], + [ + 6.864523842413471, + 50.905030061890756 + ], + [ + 6.864078843308782, + 50.90494513533745 + ], + [ + 6.863838657478114, + 50.904891002751754 + ], + [ + 6.863757537389218, + 50.90487068010278 + ], + [ + 6.863067173130066, + 50.904697719728055 + ], + [ + 6.862780619209691, + 50.9046238378579 + ], + [ + 6.8624528503679, + 50.90452962420433 + ], + [ + 6.862337904442129, + 50.90449460459908 + ], + [ + 6.862180305380855, + 50.904446571802225 + ], + [ + 6.862059133713461, + 50.90440876487741 + ], + [ + 6.861972598560431, + 50.904381771710604 + ], + [ + 6.861929926451225, + 50.904368023389665 + ], + [ + 6.86192096487773, + 50.904365146638334 + ], + [ + 6.861912010287847, + 50.90436227271244 + ], + [ + 6.861845114480676, + 50.904340677656585 + ], + [ + 6.86154278337424, + 50.904232062311664 + ], + [ + 6.861248121917075, + 50.90412300932173 + ], + [ + 6.860575660458043, + 50.90386944468235 + ], + [ + 6.860473239750766, + 50.90383080523216 + ], + [ + 6.860457108091712, + 50.90382600622396 + ], + [ + 6.860446248553142, + 50.90382683603557 + ], + [ + 6.860333327402698, + 50.903872361599134 + ], + [ + 6.85710643934264, + 50.90520493726163 + ], + [ + 6.857097099267438, + 50.9052087869446 + ], + [ + 6.857084697052456, + 50.905213898909324 + ], + [ + 6.856999734678196, + 50.90524894407622 + ], + [ + 6.856988204036257, + 50.905253723070956 + ], + [ + 6.856979888438495, + 50.90525716254668 + ], + [ + 6.856952323516074, + 50.905268490578926 + ], + [ + 6.855293617204788, + 50.90595295959823 + ], + [ + 6.8551766837438, + 50.90600119100287 + ], + [ + 6.855158056231816, + 50.90600884516039 + ], + [ + 6.855111050925259, + 50.906028378594435 + ], + [ + 6.853991963088208, + 50.906490338932834 + ], + [ + 6.852757270306839, + 50.906999902616114 + ], + [ + 6.851458772922678, + 50.90753577407739 + ], + [ + 6.851231401444929, + 50.90762962089187 + ], + [ + 6.848589968210778, + 50.90871964565329 + ], + [ + 6.848520035989799, + 50.90874846455892 + ], + [ + 6.848474226369054, + 50.908767366226456 + ], + [ + 6.848394265072982, + 50.90880041169058 + ], + [ + 6.847855077684763, + 50.909023177148725 + ], + [ + 6.847702941318357, + 50.90908785662507 + ], + [ + 6.847706315474974, + 50.90917521039922 + ], + [ + 6.847710074574497, + 50.90927469419761 + ], + [ + 6.847711240440689, + 50.90930634287459 + ], + [ + 6.8477134085953315, + 50.90935773823411 + ], + [ + 6.847716246255774, + 50.90943208497352 + ], + [ + 6.8473024607450785, + 50.90960356654674 + ], + [ + 6.846955260207856, + 50.90974794327842 + ], + [ + 6.846924053297592, + 50.91023600899781 + ], + [ + 6.846693611374056, + 50.91130696079576 + ], + [ + 6.846692148537486, + 50.91131273219528 + ], + [ + 6.846689439393421, + 50.91132223466796 + ], + [ + 6.846505958492881, + 50.911807896184335 + ], + [ + 6.846700713856536, + 50.91187075788352 + ], + [ + 6.846697775121373, + 50.91187654252454 + ], + [ + 6.846676676483775, + 50.91193228258625 + ], + [ + 6.846658453772573, + 50.911926709197694 + ], + [ + 6.846530748231492, + 50.911888315073206 + ], + [ + 6.846491179059691, + 50.91187651520879 + ], + [ + 6.84641426553274, + 50.91185338280592 + ], + [ + 6.846345573391227, + 50.91183357962178 + ], + [ + 6.846382035491853, + 50.91189726846668 + ], + [ + 6.846343508965334, + 50.91198028295851 + ], + [ + 6.846153409495129, + 50.91236167742039 + ], + [ + 6.845929640879201, + 50.91277831795514 + ], + [ + 6.845919343576862, + 50.91279631093417 + ], + [ + 6.84591179062285, + 50.91280946636192 + ], + [ + 6.845665173888718, + 50.91323823931105 + ], + [ + 6.845519329543199, + 50.913471807801876 + ], + [ + 6.845480059486042, + 50.91353534361126 + ], + [ + 6.845473929427577, + 50.91354500865044 + ], + [ + 6.845470209699128, + 50.913550878675686 + ], + [ + 6.845466905179077, + 50.91355604494577 + ], + [ + 6.8454523647368335, + 50.91357841874418 + ], + [ + 6.845415444474593, + 50.913631489399755 + ], + [ + 6.845225804088031, + 50.91390691351247 + ], + [ + 6.845171727573979, + 50.91398516244034 + ], + [ + 6.844912086577413, + 50.91432944896641 + ], + [ + 6.844907975958649, + 50.914334230685235 + ], + [ + 6.844897709894625, + 50.91434583486159 + ], + [ + 6.844778837314778, + 50.91448077834623 + ], + [ + 6.844757744539504, + 50.91450601794503 + ], + [ + 6.844703510112658, + 50.91456979430326 + ], + [ + 6.844691934592353, + 50.91458368661989 + ], + [ + 6.844643245056536, + 50.91466222455979 + ], + [ + 6.8446278956323905, + 50.91468718705987 + ], + [ + 6.8446183074308555, + 50.9147037306068 + ], + [ + 6.84461455668859, + 50.91471014416518 + ], + [ + 6.844612206878346, + 50.91471644418975 + ], + [ + 6.844573168688493, + 50.914806036702686 + ], + [ + 6.844561516507132, + 50.91483156034293 + ], + [ + 6.844886003269976, + 50.91489379796827 + ], + [ + 6.844721167396782, + 50.9150835264124 + ], + [ + 6.84458069596188, + 50.9150636009468 + ], + [ + 6.844435995134574, + 50.91504505511352 + ], + [ + 6.8444313298320765, + 50.91504992280614 + ], + [ + 6.844423668573612, + 50.91505789293459 + ], + [ + 6.844381215178372, + 50.91510201823751 + ], + [ + 6.8443769847809195, + 50.91510640289191 + ], + [ + 6.844372732053722, + 50.915110778139834 + ], + [ + 6.844364133478909, + 50.915119634842455 + ], + [ + 6.844326215461651, + 50.91516074728294 + ], + [ + 6.844168165126702, + 50.915331802970336 + ], + [ + 6.844048780676375, + 50.91546106649026 + ], + [ + 6.8440094484995795, + 50.915503643000484 + ], + [ + 6.843794855344967, + 50.91575949265046 + ], + [ + 6.843788970396479, + 50.91576676524735 + ], + [ + 6.843552341795484, + 50.91614634789932 + ], + [ + 6.843503155666297, + 50.91622548508112 + ], + [ + 6.843238225132304, + 50.91658853675708 + ], + [ + 6.843095021986033, + 50.91673806768296 + ], + [ + 6.843041552765642, + 50.916842134043954 + ], + [ + 6.842976772214329, + 50.91693518601979 + ], + [ + 6.842911225343688, + 50.9169989044794 + ], + [ + 6.842833322387614, + 50.91707265930194 + ], + [ + 6.842748553567249, + 50.91711354655877 + ], + [ + 6.842642383745766, + 50.91711455481058 + ], + [ + 6.842680733160206, + 50.91718623208889 + ], + [ + 6.842690366796456, + 50.91721231717764 + ], + [ + 6.8427044049172645, + 50.91724776361613 + ], + [ + 6.842727324799108, + 50.917265602212396 + ], + [ + 6.842754636007014, + 50.917276907833944 + ], + [ + 6.8428759115370905, + 50.917304671443 + ], + [ + 6.843056098607077, + 50.91734128543961 + ], + [ + 6.843155506301027, + 50.9173614755544 + ], + [ + 6.843143143107536, + 50.91739886509638 + ], + [ + 6.843125726318987, + 50.91743271207283 + ], + [ + 6.843122595233735, + 50.91743879256719 + ], + [ + 6.843081223109353, + 50.917520221724516 + ], + [ + 6.843052909340911, + 50.91757621002881 + ], + [ + 6.843050279761257, + 50.91758138330798 + ], + [ + 6.843047638932968, + 50.917586553680984 + ], + [ + 6.843039901582161, + 50.917601753433566 + ], + [ + 6.8430216042986, + 50.91763709959928 + ], + [ + 6.842224929524143, + 50.917474070681976 + ], + [ + 6.842170491042493, + 50.91746292175405 + ], + [ + 6.841756740773618, + 50.91737765197826 + ], + [ + 6.841698411405965, + 50.9173651141663 + ], + [ + 6.8416862793575755, + 50.91736249742739 + ], + [ + 6.841666589763593, + 50.917358243437555 + ], + [ + 6.841658938891745, + 50.91735659366877 + ], + [ + 6.841651284886173, + 50.9173549501373 + ], + [ + 6.8414843755251145, + 50.917319031022906 + ], + [ + 6.8414741891265685, + 50.91731689184745 + ], + [ + 6.841310392245127, + 50.91728010007307 + ], + [ + 6.841202902002934, + 50.91725884689364 + ], + [ + 6.8412620654738, + 50.91728219130411 + ], + [ + 6.841311261192727, + 50.917303346574826 + ], + [ + 6.841319347642514, + 50.91730695880455 + ], + [ + 6.841333201299149, + 50.91731440029106 + ], + [ + 6.841343445250298, + 50.91732012192748 + ], + [ + 6.841374355349076, + 50.91733810857583 + ], + [ + 6.841380367210765, + 50.91734181644069 + ], + [ + 6.841385773208819, + 50.91734594930539 + ], + [ + 6.84139342052049, + 50.91735176411666 + ], + [ + 6.8413995279296405, + 50.91735635875069 + ], + [ + 6.841420786514043, + 50.91737220890118 + ], + [ + 6.841441362885874, + 50.9173935767996 + ], + [ + 6.8414502510314135, + 50.91740347711531 + ], + [ + 6.841454226892628, + 50.91740829134935 + ], + [ + 6.8414575600565, + 50.91741371158002 + ], + [ + 6.841469997793758, + 50.91743659103091 + ], + [ + 6.841448471971163, + 50.91743714987461 + ], + [ + 6.8414080882696835, + 50.91743817119206 + ], + [ + 6.841369482739327, + 50.917439138142285 + ], + [ + 6.841354965073151, + 50.91743946323186 + ], + [ + 6.8413823492421235, + 50.917538516232554 + ], + [ + 6.841338746209363, + 50.917624087506546 + ], + [ + 6.841020897633357, + 50.9182497199569 + ], + [ + 6.84098463103528, + 50.918406094830836 + ], + [ + 6.8409906753887935, + 50.918552443477985 + ], + [ + 6.840995516659091, + 50.9185672093317 + ], + [ + 6.841033689896397, + 50.918686734299875 + ], + [ + 6.84111222531878, + 50.91882380471772 + ], + [ + 6.841120039266184, + 50.91883751929829 + ], + [ + 6.84123906610753, + 50.91896239813002 + ], + [ + 6.841249806823019, + 50.91897365572991 + ], + [ + 6.841264252703503, + 50.91898608001859 + ], + [ + 6.841387423402169, + 50.919088801440296 + ], + [ + 6.841755536262495, + 50.91935886321903 + ], + [ + 6.841782885166094, + 50.91937912141375 + ], + [ + 6.8418471979663105, + 50.91942648007603 + ], + [ + 6.8419289584685234, + 50.91950011779585 + ], + [ + 6.841964927513025, + 50.91953236145236 + ], + [ + 6.84201186713461, + 50.91959322605683 + ], + [ + 6.842015685552947, + 50.91959818845561 + ], + [ + 6.842019486621177, + 50.91960315682918 + ], + [ + 6.842027846284126, + 50.91961406543567 + ], + [ + 6.842055651259434, + 50.91964990228645 + ], + [ + 6.842101176811138, + 50.91973146002149 + ], + [ + 6.8421286081904, + 50.91978020073094 + ], + [ + 6.842140091890973, + 50.91984530334327 + ], + [ + 6.84215191277687, + 50.91991388204528 + ], + [ + 6.842157409133335, + 50.91997550843035 + ], + [ + 6.8421599175733245, + 50.92000499912997 + ], + [ + 6.84222734132463, + 50.92084763209871 + ], + [ + 6.842230943466255, + 50.920872492252485 + ], + [ + 6.842281891775451, + 50.92123833844786 + ], + [ + 6.842299517911246, + 50.92132129420247 + ], + [ + 6.842362452692952, + 50.92161776062723 + ], + [ + 6.842446070315942, + 50.92195233615369 + ], + [ + 6.842450568102513, + 50.92197060591413 + ], + [ + 6.842473903612813, + 50.92206441760885 + ], + [ + 6.842530119102878, + 50.92224360392386 + ], + [ + 6.842614819321337, + 50.92251260210664 + ], + [ + 6.84266364202275, + 50.9226027539437 + ], + [ + 6.843274721977614, + 50.92319618883029 + ], + [ + 6.8433863391924925, + 50.923304507263595 + ], + [ + 6.8463216892752214, + 50.92747571037565 + ], + [ + 6.8469633273000134, + 50.928387383293256 + ], + [ + 6.847842129975972, + 50.92973327771544 + ], + [ + 6.848556373584907, + 50.93099577586847 + ], + [ + 6.849029035222126, + 50.93253152690051 + ], + [ + 6.849054018711313, + 50.933020541496454 + ], + [ + 6.849244923291713, + 50.93556204628063 + ], + [ + 6.849247238812714, + 50.93559348214978 + ], + [ + 6.849289228882518, + 50.93654450975875 + ], + [ + 6.849355948299579, + 50.93802734231512 + ], + [ + 6.849509552353188, + 50.940381409950454 + ], + [ + 6.849501526802686, + 50.94220412958467 + ], + [ + 6.84959672404316, + 50.94438925943335 + ], + [ + 6.849963641095894, + 50.94442681652914 + ], + [ + 6.850000384758153, + 50.94443082909798 + ], + [ + 6.851504366018796, + 50.94456487452439 + ], + [ + 6.852149223462364, + 50.94463730775883 + ], + [ + 6.852296554494517, + 50.94465306945703 + ], + [ + 6.852581770072816, + 50.94433345021661 + ], + [ + 6.852647272736239, + 50.944237623741124 + ], + [ + 6.852709541208679, + 50.94413622538695 + ], + [ + 6.852754120549495, + 50.944047224373946 + ], + [ + 6.85279485063748, + 50.94395145029969 + ], + [ + 6.852827625025588, + 50.94384620142212 + ], + [ + 6.852847330605912, + 50.943759456310374 + ], + [ + 6.852855387542614, + 50.94366036868636 + ], + [ + 6.85284590441306, + 50.94356316284261 + ], + [ + 6.852853886647535, + 50.94336452323435 + ], + [ + 6.852855577058855, + 50.942364890296204 + ], + [ + 6.8528551936053335, + 50.94234812673462 + ], + [ + 6.852854223277347, + 50.94234175110915 + ], + [ + 6.852853395435412, + 50.94233546534512 + ], + [ + 6.852851572123742, + 50.942329095615584 + ], + [ + 6.852848899010178, + 50.942323002556506 + ], + [ + 6.852846083370139, + 50.94231682053451 + ], + [ + 6.852842384371866, + 50.942310901974174 + ], + [ + 6.852838610128415, + 50.94230500991074 + ], + [ + 6.852834094843449, + 50.94229928949081 + ], + [ + 6.852828873622352, + 50.94229384389027 + ], + [ + 6.8528233661367866, + 50.94228840111854 + ], + [ + 6.852932125920251, + 50.942221178322 + ], + [ + 6.853002794338027, + 50.94213346290305 + ], + [ + 6.853002999283062, + 50.94211789285966 + ], + [ + 6.853002774680636, + 50.94210935892734 + ], + [ + 6.85300234475009, + 50.9420700918085 + ], + [ + 6.853002113599519, + 50.942050423324844 + ], + [ + 6.853001916126944, + 50.942038767214186 + ], + [ + 6.853001577539415, + 50.94201265623267 + ], + [ + 6.8530014516514415, + 50.941978314360966 + ], + [ + 6.853000829284891, + 50.94190182430293 + ], + [ + 6.853000709121754, + 50.94188753260648 + ], + [ + 6.853000200464303, + 50.94182865646692 + ], + [ + 6.852999713915084, + 50.94175539771034 + ], + [ + 6.852998416147834, + 50.941685502136586 + ], + [ + 6.852998036728045, + 50.94160942396657 + ], + [ + 6.852989331188045, + 50.941536524893834 + ], + [ + 6.852982834832904, + 50.941463474882035 + ], + [ + 6.8529757828352205, + 50.941390435335215 + ], + [ + 6.852968609197396, + 50.94131790440257 + ], + [ + 6.852967750633796, + 50.94130947393066 + ], + [ + 6.852961474799916, + 50.9412443677743 + ], + [ + 6.852928916476918, + 50.94091928476915 + ], + [ + 6.852971571902333, + 50.94091771472217 + ], + [ + 6.853612876959234, + 50.94089365410812 + ], + [ + 6.853663280722435, + 50.94089180176642 + ], + [ + 6.853709631094312, + 50.9408900250741 + ], + [ + 6.853900154983402, + 50.94088296642577 + ], + [ + 6.854150392641888, + 50.940873584796385 + ], + [ + 6.854160562080493, + 50.94079970798235 + ], + [ + 6.854165957351468, + 50.94076022956394 + ], + [ + 6.855064761238334, + 50.940778722428725 + ], + [ + 6.855099738442905, + 50.94081521294605 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Junkersdorf", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "306", + "Population_rel": 0.01415297231719422, + "Population_abs": 15399 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.851763526592514, + 50.97718504868292 + ], + [ + 6.850919739054679, + 50.97615780340959 + ], + [ + 6.85066662660859, + 50.97576331445091 + ], + [ + 6.850654902362784, + 50.97572956688688 + ], + [ + 6.850604061995496, + 50.9755831088254 + ], + [ + 6.850602218922195, + 50.97557761113746 + ], + [ + 6.8506012940785945, + 50.97557481051799 + ], + [ + 6.850601128011791, + 50.97557430380572 + ], + [ + 6.850601048121784, + 50.9755740595013 + ], + [ + 6.850601016770799, + 50.97557396718695 + ], + [ + 6.850600957496575, + 50.975573770030024 + ], + [ + 6.85060040155294, + 50.97557211212385 + ], + [ + 6.850594761927434, + 50.97555412314979 + ], + [ + 6.850992451803525, + 50.9754616475463 + ], + [ + 6.851908209750049, + 50.9753980277117 + ], + [ + 6.851912488362296, + 50.975397674720725 + ], + [ + 6.8519130220972695, + 50.97539762338169 + ], + [ + 6.851913511002871, + 50.97539758650748 + ], + [ + 6.851916767389245, + 50.97539731274343 + ], + [ + 6.85195043873893, + 50.97539456219469 + ], + [ + 6.851965067234785, + 50.9753929974642 + ], + [ + 6.851979518237272, + 50.975391451051905 + ], + [ + 6.851979695729721, + 50.9753914327319 + ], + [ + 6.852091369526936, + 50.975376643403294 + ], + [ + 6.85217676996376, + 50.97535746915187 + ], + [ + 6.852217121017615, + 50.97534715705824 + ], + [ + 6.852219499161777, + 50.975346528063206 + ], + [ + 6.852221800623566, + 50.97534592463914 + ], + [ + 6.85222189585105, + 50.975345898509865 + ], + [ + 6.852227904883745, + 50.97534422736148 + ], + [ + 6.852249790788066, + 50.97533792502478 + ], + [ + 6.852259660284543, + 50.97533502167658 + ], + [ + 6.85226620343306, + 50.97533245736897 + ], + [ + 6.852271095485818, + 50.97533054172607 + ], + [ + 6.852294997069952, + 50.97532075266962 + ], + [ + 6.852299279242295, + 50.97531899489183 + ], + [ + 6.8523053596281, + 50.97531642566771 + ], + [ + 6.85231066304715, + 50.97531417762241 + ], + [ + 6.852313508100593, + 50.97531290785817 + ], + [ + 6.852316355876195, + 50.97531164084207 + ], + [ + 6.85234113069224, + 50.97530086412523 + ], + [ + 6.852342975654849, + 50.97530002745619 + ], + [ + 6.852344384361784, + 50.97529938332565 + ], + [ + 6.852344641853367, + 50.975299267544294 + ], + [ + 6.852344702961488, + 50.975299239887974 + ], + [ + 6.852344963341258, + 50.97529912326033 + ], + [ + 6.852345313959852, + 50.97529896512202 + ], + [ + 6.852345780893922, + 50.97529875605947 + ], + [ + 6.852346336601978, + 50.975298506358705 + ], + [ + 6.852347133439675, + 50.975298155865126 + ], + [ + 6.8523478257634585, + 50.97529784751904 + ], + [ + 6.85235311286012, + 50.97529542828859 + ], + [ + 6.8523911671541615, + 50.97528005892398 + ], + [ + 6.852500188921219, + 50.97521779769583 + ], + [ + 6.852572660691806, + 50.97517933281745 + ], + [ + 6.852578524932507, + 50.97517626044578 + ], + [ + 6.852581526085389, + 50.97517472552945 + ], + [ + 6.852584440012278, + 50.97517322858174 + ], + [ + 6.852612009908542, + 50.975159483080674 + ], + [ + 6.852725945380409, + 50.97512659506302 + ], + [ + 6.852839498810273, + 50.97511300788989 + ], + [ + 6.852874441112217, + 50.97492182527653 + ], + [ + 6.852901609606812, + 50.97484041165055 + ], + [ + 6.852927865722169, + 50.97468502307469 + ], + [ + 6.853026460105628, + 50.97412039750247 + ], + [ + 6.8530322520104905, + 50.974087452526895 + ], + [ + 6.853145837980614, + 50.97343706646782 + ], + [ + 6.8531462070313065, + 50.97343496419701 + ], + [ + 6.853146230204062, + 50.97343483241357 + ], + [ + 6.853146341341996, + 50.97343418330272 + ], + [ + 6.853146442544811, + 50.97343359516732 + ], + [ + 6.853146844578948, + 50.97343130283348 + ], + [ + 6.853188885199523, + 50.973184037283204 + ], + [ + 6.853187410271171, + 50.973183246587325 + ], + [ + 6.853187264306665, + 50.97318316835527 + ], + [ + 6.85318691258513, + 50.97318298021276 + ], + [ + 6.853184627231207, + 50.973181754603544 + ], + [ + 6.853189389879477, + 50.973151600369725 + ], + [ + 6.8531901156009996, + 50.973146984581405 + ], + [ + 6.8531908413638005, + 50.97314236789443 + ], + [ + 6.853192585714775, + 50.97313314799893 + ], + [ + 6.853205021104413, + 50.97306740679053 + ], + [ + 6.853297017893315, + 50.97258284871378 + ], + [ + 6.853427512118156, + 50.971895504450764 + ], + [ + 6.8534284718366, + 50.97189044686752 + ], + [ + 6.853428983702914, + 50.97188774913035 + ], + [ + 6.853429431554821, + 50.97188538928426 + ], + [ + 6.853538451494807, + 50.9713111200182 + ], + [ + 6.853552644531369, + 50.971246563184714 + ], + [ + 6.853593406274264, + 50.97106270572606 + ], + [ + 6.853637217946808, + 50.97082384938241 + ], + [ + 6.853650022222763, + 50.97074998625422 + ], + [ + 6.853686732665815, + 50.97053902237353 + ], + [ + 6.853727189101568, + 50.97030086968259 + ], + [ + 6.853727925424514, + 50.97029818416413 + ], + [ + 6.853727961098189, + 50.97029802832694 + ], + [ + 6.8537281359302025, + 50.97029729494462 + ], + [ + 6.853728211132818, + 50.97029699233495 + ], + [ + 6.8537283370554345, + 50.97029648559789 + ], + [ + 6.853728376031291, + 50.97029631992819 + ], + [ + 6.853729074343719, + 50.970293717353776 + ], + [ + 6.85373270955561, + 50.97027564268673 + ], + [ + 6.853743743497867, + 50.970206618069625 + ], + [ + 6.853743751428099, + 50.970206569648624 + ], + [ + 6.853743881794136, + 50.97020581206488 + ], + [ + 6.8537439282153665, + 50.97020554670031 + ], + [ + 6.853745376790529, + 50.970197175772476 + ], + [ + 6.853745970981256, + 50.97019374205125 + ], + [ + 6.853746351897033, + 50.97019153566731 + ], + [ + 6.853749141669983, + 50.97017548526341 + ], + [ + 6.853750110264492, + 50.970169708332016 + ], + [ + 6.853750326215823, + 50.97016829936818 + ], + [ + 6.853750536863681, + 50.97016700542808 + ], + [ + 6.853751410107066, + 50.97016141201719 + ], + [ + 6.853755021809789, + 50.97013510394896 + ], + [ + 6.853752179424551, + 50.97013453185613 + ], + [ + 6.853750495711922, + 50.970134193316674 + ], + [ + 6.853749128145352, + 50.97013391814921 + ], + [ + 6.853748987026486, + 50.970133889473004 + ], + [ + 6.853745969655672, + 50.97013328178561 + ], + [ + 6.853751018131394, + 50.97010701451824 + ], + [ + 6.853758091786671, + 50.97006030278772 + ], + [ + 6.853788950471414, + 50.96988787695857 + ], + [ + 6.853789734927408, + 50.9698835293619 + ], + [ + 6.853790425491745, + 50.969879704380666 + ], + [ + 6.8537905193832325, + 50.969879181765215 + ], + [ + 6.853826126913193, + 50.96977923110029 + ], + [ + 6.853809013700487, + 50.96969153230722 + ], + [ + 6.853856792275444, + 50.9696317497308 + ], + [ + 6.853888782109433, + 50.9695917233145 + ], + [ + 6.854501344826276, + 50.96882669600552 + ], + [ + 6.854572056993674, + 50.96873838246001 + ], + [ + 6.854974824071142, + 50.96823529270507 + ], + [ + 6.855565294387548, + 50.96749772683937 + ], + [ + 6.855604922606106, + 50.96744821053619 + ], + [ + 6.855751566343271, + 50.96726506835738 + ], + [ + 6.855752664939803, + 50.96726369808422 + ], + [ + 6.855752855345323, + 50.96726346054589 + ], + [ + 6.855754316557822, + 50.96726163914527 + ], + [ + 6.855755004059659, + 50.96726078296553 + ], + [ + 6.855757066771962, + 50.96725820993311 + ], + [ + 6.85671077075872, + 50.96606873653294 + ], + [ + 6.857600737476703, + 50.96495866899183 + ], + [ + 6.857603034200705, + 50.96495580342416 + ], + [ + 6.857605072448427, + 50.964953262288425 + ], + [ + 6.857605221972723, + 50.964953077060684 + ], + [ + 6.857605265804928, + 50.9649530221031 + ], + [ + 6.857605527209727, + 50.9649526959261 + ], + [ + 6.8576058641088515, + 50.964952276698966 + ], + [ + 6.857610980033927, + 50.964945900398355 + ], + [ + 6.857632593847558, + 50.964919016854466 + ], + [ + 6.857659299072346, + 50.96488607223824 + ], + [ + 6.859048876130701, + 50.96507568393491 + ], + [ + 6.859097337350574, + 50.965005416840235 + ], + [ + 6.85910123851615, + 50.964999745803084 + ], + [ + 6.8591042988848026, + 50.96499529330427 + ], + [ + 6.859105752018837, + 50.96499317851479 + ], + [ + 6.85910579626255, + 50.96499311457035 + ], + [ + 6.859106297114515, + 50.964992381761896 + ], + [ + 6.8591066697111005, + 50.9649918363718 + ], + [ + 6.859108026067114, + 50.96498984392279 + ], + [ + 6.859108282660468, + 50.96498946728873 + ], + [ + 6.859108568316602, + 50.96498904711771 + ], + [ + 6.859962396791977, + 50.9637297415138 + ], + [ + 6.863130201413025, + 50.96226749719347 + ], + [ + 6.863133518859346, + 50.96226791946393 + ], + [ + 6.863136834924014, + 50.96226834080962 + ], + [ + 6.86313889200822, + 50.96226870043918 + ], + [ + 6.863140533707787, + 50.96226898771044 + ], + [ + 6.863143456847078, + 50.962269498997976 + ], + [ + 6.86314880582731, + 50.962270434224564 + ], + [ + 6.863253287517712, + 50.96228870355571 + ], + [ + 6.863254579568437, + 50.96228761016648 + ], + [ + 6.863255581169617, + 50.96228676328925 + ], + [ + 6.863256455364, + 50.96228602380522 + ], + [ + 6.863257409285577, + 50.96228522282338 + ], + [ + 6.863259648307705, + 50.96228332472749 + ], + [ + 6.863383301424369, + 50.96218519478467 + ], + [ + 6.863383604390625, + 50.962184954797074 + ], + [ + 6.863399655348387, + 50.96217221645173 + ], + [ + 6.863399693747612, + 50.96217218657536 + ], + [ + 6.863400082503535, + 50.962171877106336 + ], + [ + 6.863593439446001, + 50.96201842964346 + ], + [ + 6.863593491187661, + 50.9620183883192 + ], + [ + 6.863593526658227, + 50.96201836018796 + ], + [ + 6.863593562128809, + 50.96201833205671 + ], + [ + 6.863593597640611, + 50.962018303026824 + ], + [ + 6.8635972747839755, + 50.962015386155265 + ], + [ + 6.863600274005867, + 50.96201299740875 + ], + [ + 6.863603273227446, + 50.962010608662155 + ], + [ + 6.863654336872361, + 50.9619422805312 + ], + [ + 6.863660480527867, + 50.961934058350884 + ], + [ + 6.863806820095294, + 50.961738236404514 + ], + [ + 6.863837948887526, + 50.961696583447115 + ], + [ + 6.863995984842525, + 50.961484928448385 + ], + [ + 6.864498689391959, + 50.96081191153831 + ], + [ + 6.864552232153184, + 50.960740145946694 + ], + [ + 6.864667828684382, + 50.960585288808915 + ], + [ + 6.864715096330574, + 50.960522000195844 + ], + [ + 6.864718672880933, + 50.960517204433785 + ], + [ + 6.864718709338652, + 50.96051715473503 + ], + [ + 6.864718735094182, + 50.96051712102943 + ], + [ + 6.86471879279142, + 50.96051704293882 + ], + [ + 6.864718817041619, + 50.9605170110045 + ], + [ + 6.864722935693471, + 50.96051148046637 + ], + [ + 6.864767438921468, + 50.96045480841228 + ], + [ + 6.864776284458239, + 50.96044352641504 + ], + [ + 6.864776345083543, + 50.96044344657918 + ], + [ + 6.864776390531904, + 50.9604433871516 + ], + [ + 6.8647764073377795, + 50.960443362276166 + ], + [ + 6.864788925355411, + 50.96042376337853 + ], + [ + 6.864789559047479, + 50.96042277035516 + ], + [ + 6.864791466765535, + 50.96041983277815 + ], + [ + 6.864794693647049, + 50.960414866930805 + ], + [ + 6.864799870930831, + 50.96040789604944 + ], + [ + 6.864803399220359, + 50.96040387287307 + ], + [ + 6.864804037625175, + 50.96040314975121 + ], + [ + 6.864804118954118, + 50.96040305320565 + ], + [ + 6.864804318833149, + 50.96040282481988 + ], + [ + 6.8648053132590485, + 50.960401698089676 + ], + [ + 6.864805699263113, + 50.96040126175244 + ], + [ + 6.864806878410329, + 50.960399895566624 + ], + [ + 6.8648086765856124, + 50.960397514503875 + ], + [ + 6.864810469192664, + 50.96039513064113 + ], + [ + 6.86485632923397, + 50.96033439296579 + ], + [ + 6.8648788496089495, + 50.96030455581103 + ], + [ + 6.86488865067442, + 50.960291565360656 + ], + [ + 6.864906835343319, + 50.960267458035965 + ], + [ + 6.8649086651611535, + 50.96026503887682 + ], + [ + 6.864909117001527, + 50.960264440055234 + ], + [ + 6.8649097918132345, + 50.960263544017344 + ], + [ + 6.864910481678117, + 50.96026263026705 + ], + [ + 6.864911394473095, + 50.960261420199096 + ], + [ + 6.864934454853026, + 50.960230892288436 + ], + [ + 6.864935343438048, + 50.96022971325604 + ], + [ + 6.864941595349577, + 50.960221418339785 + ], + [ + 6.864945687824821, + 50.96021599164381 + ], + [ + 6.864946001732749, + 50.96021557467351 + ], + [ + 6.864946032045103, + 50.96021553475553 + ], + [ + 6.86494609112328, + 50.960215457589435 + ], + [ + 6.864947819503906, + 50.96021316968362 + ], + [ + 6.864949690331766, + 50.96021069461259 + ], + [ + 6.864970588620656, + 50.960183247121705 + ], + [ + 6.864971440417042, + 50.96018212497688 + ], + [ + 6.864971458604423, + 50.9601821010261 + ], + [ + 6.864972350156969, + 50.96018091934954 + ], + [ + 6.865033206838372, + 50.960100212497736 + ], + [ + 6.8652365741294625, + 50.95983185024211 + ], + [ + 6.8654421111573525, + 50.959557731670195 + ], + [ + 6.865443923304869, + 50.959555261814174 + ], + [ + 6.865445735534587, + 50.959552790160814 + ], + [ + 6.86546072791015, + 50.959550592757836 + ], + [ + 6.86546951465723, + 50.95954928471014 + ], + [ + 6.865470686221977, + 50.95954910826512 + ], + [ + 6.865470980221533, + 50.95954906327473 + ], + [ + 6.865471378833617, + 50.959549004008025 + ], + [ + 6.865472044204359, + 50.959548903749855 + ], + [ + 6.865473426911375, + 50.95954868799458 + ], + [ + 6.865476847593462, + 50.959548190217745 + ], + [ + 6.865478295794646, + 50.959547974760476 + ], + [ + 6.865515740840867, + 50.959542285416305 + ], + [ + 6.865524524572394, + 50.95953989355074 + ], + [ + 6.865524768089166, + 50.95953983144833 + ], + [ + 6.865525120940208, + 50.959539745262695 + ], + [ + 6.865525211694527, + 50.959539722638496 + ], + [ + 6.865525433703157, + 50.959539663740436 + ], + [ + 6.865525528849715, + 50.959539638498384 + ], + [ + 6.865525675961799, + 50.9595395980175 + ], + [ + 6.865529293343235, + 50.959538599280414 + ], + [ + 6.865532909301627, + 50.959537600517216 + ], + [ + 6.8662186664754055, + 50.959348185230894 + ], + [ + 6.866220279086038, + 50.95934773802989 + ], + [ + 6.8662204247740375, + 50.959347697522105 + ], + [ + 6.866220703138197, + 50.9593476207656 + ], + [ + 6.866220785354486, + 50.959347597984845 + ], + [ + 6.866220935393503, + 50.959347555757795 + ], + [ + 6.866223202971009, + 50.95934692446139 + ], + [ + 6.866346125095509, + 50.95931273600694 + ], + [ + 6.866538556034217, + 50.95925974516653 + ], + [ + 6.866582053677825, + 50.959246861283596 + ], + [ + 6.866902372372303, + 50.9591584730401 + ], + [ + 6.866905451675066, + 50.95915762362067 + ], + [ + 6.86690559878479, + 50.95915758313801 + ], + [ + 6.866908512150965, + 50.95915678105228 + ], + [ + 6.8669087457861195, + 50.95915671696772 + ], + [ + 6.86691104611276, + 50.959156085356994 + ], + [ + 6.866914136715942, + 50.95915523794257 + ], + [ + 6.866918959415132, + 50.95915391492148 + ], + [ + 6.867302395961784, + 50.95904845273823 + ], + [ + 6.867596592319442, + 50.9589671096678 + ], + [ + 6.867736641032258, + 50.95893665382964 + ], + [ + 6.867739707084321, + 50.95893596873373 + ], + [ + 6.8677401243265725, + 50.95893587562296 + ], + [ + 6.8677401646196925, + 50.95893586646562 + ], + [ + 6.867743686784121, + 50.95893507907554 + ], + [ + 6.867743754399901, + 50.95893506412151 + ], + [ + 6.867745449186312, + 50.95893468765302 + ], + [ + 6.867750737856703, + 50.958933512512665 + ], + [ + 6.867752871886679, + 50.95893302894492 + ], + [ + 6.867773269585158, + 50.95892840809174 + ], + [ + 6.867788427877164, + 50.95892497496903 + ], + [ + 6.868116342656303, + 50.95885069947959 + ], + [ + 6.86821186204115, + 50.958743647806074 + ], + [ + 6.868240860677958, + 50.95871115909831 + ], + [ + 6.868350418304611, + 50.95838943591487 + ], + [ + 6.868352198359024, + 50.95838411617817 + ], + [ + 6.868353810657643, + 50.95837928804005 + ], + [ + 6.868353945719019, + 50.95837888848113 + ], + [ + 6.868357226326436, + 50.95836909742036 + ], + [ + 6.868357570966879, + 50.95836807032006 + ], + [ + 6.8683608976651085, + 50.95835814339426 + ], + [ + 6.868364366348482, + 50.958347790054326 + ], + [ + 6.868364841328724, + 50.95834637320208 + ], + [ + 6.868366080106754, + 50.95834267416665 + ], + [ + 6.868367485957191, + 50.95833846733123 + ], + [ + 6.868369996017241, + 50.95833095023557 + ], + [ + 6.868465172289441, + 50.95804698764083 + ], + [ + 6.868645427552861, + 50.9575090612179 + ], + [ + 6.868646416930165, + 50.957506267803524 + ], + [ + 6.86867120060197, + 50.95743672474063 + ], + [ + 6.868776032374919, + 50.95710866323662 + ], + [ + 6.868776087626621, + 50.957108576105526 + ], + [ + 6.868776122999957, + 50.9571084877122 + ], + [ + 6.868776185464524, + 50.95710836743555 + ], + [ + 6.868777064165711, + 50.957105502746984 + ], + [ + 6.8687859473537225, + 50.95707771023339 + ], + [ + 6.868788304578066, + 50.95707035582499 + ], + [ + 6.869166627071194, + 50.956358932751165 + ], + [ + 6.869212237942377, + 50.95627326688851 + ], + [ + 6.869224972632816, + 50.956249052235925 + ], + [ + 6.869225448998797, + 50.956248164243576 + ], + [ + 6.869225384726348, + 50.95624816846685 + ], + [ + 6.869225313298824, + 50.9562481734589 + ], + [ + 6.869225248944162, + 50.956248179479424 + ], + [ + 6.869220457044323, + 50.956248899669106 + ], + [ + 6.86921969549664, + 50.9562490179795 + ], + [ + 6.869216992996699, + 50.95624944892704 + ], + [ + 6.869216554044622, + 50.95624951916209 + ], + [ + 6.869210833085763, + 50.95625040856752 + ], + [ + 6.867562962447901, + 50.95649440153068 + ], + [ + 6.86755123326975, + 50.956496138058064 + ], + [ + 6.867550976654562, + 50.95649617564197 + ], + [ + 6.8675505221704585, + 50.95649624288891 + ], + [ + 6.867282064714005, + 50.956536099664035 + ], + [ + 6.867146678100337, + 50.956556199136 + ], + [ + 6.867079886619921, + 50.95656612948212 + ], + [ + 6.865623531303242, + 50.95678262088488 + ], + [ + 6.865619435536244, + 50.956783218746196 + ], + [ + 6.86561557776731, + 50.956783781385504 + ], + [ + 6.863689783783377, + 50.956179667112984 + ], + [ + 6.863624219605715, + 50.95615911258549 + ], + [ + 6.863623777528803, + 50.9561589713868 + ], + [ + 6.863623595163548, + 50.95615891138837 + ], + [ + 6.863623355288481, + 50.95615883234986 + ], + [ + 6.8633516777834895, + 50.956073641663565 + ], + [ + 6.86329613291765, + 50.95605622389992 + ], + [ + 6.8632924100777855, + 50.95605505671529 + ], + [ + 6.863288687238122, + 50.95605388953056 + ], + [ + 6.863281237373458, + 50.95605155328537 + ], + [ + 6.863155212970389, + 50.956012034624486 + ], + [ + 6.862600841400097, + 50.95583819563816 + ], + [ + 6.862400984282466, + 50.955775523292424 + ], + [ + 6.862071496025072, + 50.95567220073751 + ], + [ + 6.861711261550178, + 50.95555923300984 + ], + [ + 6.861262073652698, + 50.95541836624341 + ], + [ + 6.8608768795681305, + 50.95529755739894 + ], + [ + 6.859326643027008, + 50.95481136378498 + ], + [ + 6.859040051682511, + 50.954993950624534 + ], + [ + 6.858979789391133, + 50.95503309211025 + ], + [ + 6.858973747837018, + 50.95503702045621 + ], + [ + 6.858867667665586, + 50.955044245121755 + ], + [ + 6.858863818197783, + 50.95504450459667 + ], + [ + 6.858863706727683, + 50.95504451334496 + ], + [ + 6.858863463910317, + 50.95504452957752 + ], + [ + 6.858863115355149, + 50.955044553764075 + ], + [ + 6.858821008387272, + 50.955047483381136 + ], + [ + 6.858820842522223, + 50.955047498326834 + ], + [ + 6.858816457886563, + 50.955048093349184 + ], + [ + 6.858814294953216, + 50.95504837116308 + ], + [ + 6.858814130180401, + 50.95504839332387 + ], + [ + 6.85881379352103, + 50.955048437514954 + ], + [ + 6.858813518246397, + 50.95504847833496 + ], + [ + 6.858813205856368, + 50.9550485211724 + ], + [ + 6.857626971629095, + 50.95522039137201 + ], + [ + 6.857433909731685, + 50.955248361080805 + ], + [ + 6.85718186212392, + 50.95528486316955 + ], + [ + 6.856948855840655, + 50.95531862935523 + ], + [ + 6.856947054861696, + 50.95531908646106 + ], + [ + 6.856944879459359, + 50.95531963472682 + ], + [ + 6.856620431283388, + 50.955413472632905 + ], + [ + 6.85661996080618, + 50.955413608796476 + ], + [ + 6.856619486019335, + 50.95541374578028 + ], + [ + 6.855846103663556, + 50.955637401556345 + ], + [ + 6.855845558205292, + 50.95563755792498 + ], + [ + 6.855845497456311, + 50.95563757839452 + ], + [ + 6.855845109313301, + 50.95563768908552 + ], + [ + 6.855844697098321, + 50.95563785869394 + ], + [ + 6.854617448482578, + 50.95614126669752 + ], + [ + 6.854559928488257, + 50.95616444274266 + ], + [ + 6.854377835915778, + 50.95629439887876 + ], + [ + 6.854308404761423, + 50.956344477792484 + ], + [ + 6.8542277903528195, + 50.956354389578095 + ], + [ + 6.854223899392949, + 50.95635486668905 + ], + [ + 6.854223800558398, + 50.95635487926266 + ], + [ + 6.854220274768337, + 50.9563553118202 + ], + [ + 6.854219815239274, + 50.95635536453243 + ], + [ + 6.853659417179786, + 50.95618802218466 + ], + [ + 6.851324219833492, + 50.95548971617159 + ], + [ + 6.850751651138464, + 50.95533963688016 + ], + [ + 6.850506515672522, + 50.95527607089942 + ], + [ + 6.850350609747953, + 50.95524151308102 + ], + [ + 6.849866304141048, + 50.95515650363921 + ], + [ + 6.848968805431632, + 50.95492150051111 + ], + [ + 6.848257194186955, + 50.954735154972205 + ], + [ + 6.848249041349588, + 50.95473301436134 + ], + [ + 6.848240882572968, + 50.954730879036745 + ], + [ + 6.848093629338935, + 50.95469234047482 + ], + [ + 6.84686572669938, + 50.95439212081547 + ], + [ + 6.846484377901195, + 50.95429887881616 + ], + [ + 6.8413349006166175, + 50.95304165255376 + ], + [ + 6.841017650562157, + 50.95301954118187 + ], + [ + 6.840879113324929, + 50.953121887352594 + ], + [ + 6.840711682324818, + 50.953150845769 + ], + [ + 6.840441604156819, + 50.95310505200808 + ], + [ + 6.840192549957248, + 50.95310335956272 + ], + [ + 6.8401127011754586, + 50.95313393740444 + ], + [ + 6.838829947713742, + 50.95419153030819 + ], + [ + 6.837963482020989, + 50.954889402053055 + ], + [ + 6.836493482072279, + 50.95607330967411 + ], + [ + 6.836093576269028, + 50.95633892815524 + ], + [ + 6.835933262397028, + 50.95645270085347 + ], + [ + 6.835659406435316, + 50.95657190082547 + ], + [ + 6.835375300991585, + 50.95671915362923 + ], + [ + 6.834704316018109, + 50.95698267473583 + ], + [ + 6.834704034669394, + 50.95698247794783 + ], + [ + 6.834703382290297, + 50.95698202244944 + ], + [ + 6.834484641225302, + 50.9568590372562 + ], + [ + 6.834396377180857, + 50.95680942301803 + ], + [ + 6.833507676671135, + 50.9564767363082 + ], + [ + 6.832478630009329, + 50.956091498531094 + ], + [ + 6.832163560171595, + 50.95597354496789 + ], + [ + 6.832117885826771, + 50.95599805151752 + ], + [ + 6.830867755923358, + 50.95552997740535 + ], + [ + 6.8290611715681315, + 50.95485434587543 + ], + [ + 6.828830094207103, + 50.954801331349636 + ], + [ + 6.827471083778414, + 50.95428132687762 + ], + [ + 6.827343525864709, + 50.95427908523922 + ], + [ + 6.827308102837622, + 50.95428796582385 + ], + [ + 6.827148977911672, + 50.954455483665505 + ], + [ + 6.826930712561647, + 50.9546508374451 + ], + [ + 6.8268097556018885, + 50.954760184012365 + ], + [ + 6.826785817699448, + 50.95478181933162 + ], + [ + 6.826725480803657, + 50.95483690081732 + ], + [ + 6.826644565501834, + 50.954910765180834 + ], + [ + 6.825797432576806, + 50.95571122765651 + ], + [ + 6.825069079296766, + 50.95656594826329 + ], + [ + 6.824719615686032, + 50.956929065080836 + ], + [ + 6.8246428577049265, + 50.95692304796205 + ], + [ + 6.824642179502671, + 50.956923909532065 + ], + [ + 6.8246415027651395, + 50.95692477022999 + ], + [ + 6.8246401464444695, + 50.956926491572744 + ], + [ + 6.824612791440178, + 50.956961238845345 + ], + [ + 6.824612677890047, + 50.9569613833301 + ], + [ + 6.824548091629028, + 50.95704341929175 + ], + [ + 6.824469232008251, + 50.957025079027936 + ], + [ + 6.8243597470933715, + 50.95699961683254 + ], + [ + 6.824248633505448, + 50.957046203103104 + ], + [ + 6.8241998852033685, + 50.957104417794966 + ], + [ + 6.824136946666789, + 50.95717954274909 + ], + [ + 6.823753250805667, + 50.957636683109754 + ], + [ + 6.823527199379397, + 50.95791530210872 + ], + [ + 6.823428387224117, + 50.95803670156354 + ], + [ + 6.821078372549011, + 50.9610257725975 + ], + [ + 6.82101831321728, + 50.96110174558712 + ], + [ + 6.820976966018029, + 50.96115448758745 + ], + [ + 6.820989343955577, + 50.96117909207843 + ], + [ + 6.821013426167687, + 50.96119707875198 + ], + [ + 6.821216266414754, + 50.96134862781886 + ], + [ + 6.821217818239735, + 50.961349703668965 + ], + [ + 6.821219370106849, + 50.961350778620464 + ], + [ + 6.821236160140991, + 50.96136330207289 + ], + [ + 6.821238362822328, + 50.96136495578518 + ], + [ + 6.821239631264613, + 50.96136590942586 + ], + [ + 6.821240788319933, + 50.961366778243935 + ], + [ + 6.821244286893067, + 50.96136940769437 + ], + [ + 6.8212454136957925, + 50.96137025346311 + ], + [ + 6.821246537778895, + 50.96137109648289 + ], + [ + 6.821256326143106, + 50.961378427501955 + ], + [ + 6.821315478887851, + 50.9614227281759 + ], + [ + 6.821215307188, + 50.9615111395664 + ], + [ + 6.821193318542253, + 50.96151317285347 + ], + [ + 6.821191848312519, + 50.961513274927825 + ], + [ + 6.821186212764791, + 50.96151367431341 + ], + [ + 6.821185075376647, + 50.96151375471818 + ], + [ + 6.821184803888359, + 50.96151377393511 + ], + [ + 6.821184563830256, + 50.961513791040446 + ], + [ + 6.821179009346267, + 50.96151419283791 + ], + [ + 6.821138215647224, + 50.96151772880901 + ], + [ + 6.821103923981939, + 50.96156014262317 + ], + [ + 6.82102869817469, + 50.9616560481503 + ], + [ + 6.8208720214198095, + 50.96185551000022 + ], + [ + 6.820558751915317, + 50.962253737617985 + ], + [ + 6.820537598924732, + 50.96228065811094 + ], + [ + 6.820091918053268, + 50.96284716715834 + ], + [ + 6.819759561564854, + 50.96327015982995 + ], + [ + 6.819708735424111, + 50.96333498125728 + ], + [ + 6.819704026343588, + 50.96334095610334 + ], + [ + 6.819699317261839, + 50.963346930949186 + ], + [ + 6.819624892154643, + 50.963441396222336 + ], + [ + 6.819497578378171, + 50.96360322371529 + ], + [ + 6.819160432392287, + 50.964031753632646 + ], + [ + 6.819038235187696, + 50.96418723207677 + ], + [ + 6.8190368737521, + 50.96418896225356 + ], + [ + 6.819035512316402, + 50.96419069243037 + ], + [ + 6.819022088649944, + 50.96420778460424 + ], + [ + 6.8189055160481, + 50.96435557566803 + ], + [ + 6.818819516447713, + 50.96446495104214 + ], + [ + 6.818814502867214, + 50.96447137075835 + ], + [ + 6.818810036119649, + 50.96447709287064 + ], + [ + 6.818809512145856, + 50.96447775852336 + ], + [ + 6.8188081475523274, + 50.96447949493427 + ], + [ + 6.8188062574776165, + 50.96448189876848 + ], + [ + 6.8188049975540075, + 50.9644834986288 + ], + [ + 6.818701302515059, + 50.964615645050394 + ], + [ + 6.818697206293, + 50.964620814660556 + ], + [ + 6.818632301991471, + 50.96474334636524 + ], + [ + 6.8186180336649835, + 50.96480156169964 + ], + [ + 6.818601065938613, + 50.96487009026478 + ], + [ + 6.818605136619817, + 50.96499717904261 + ], + [ + 6.818613312045479, + 50.96502006476676 + ], + [ + 6.818622150145322, + 50.96504461415105 + ], + [ + 6.818622891346184, + 50.96504666871482 + ], + [ + 6.818622916564549, + 50.965046738439 + ], + [ + 6.81862343586072, + 50.965048179070486 + ], + [ + 6.818624169702489, + 50.96505020831385 + ], + [ + 6.818632400172433, + 50.9650729835405 + ], + [ + 6.818633010019667, + 50.9650746498118 + ], + [ + 6.818633353545541, + 50.96507558619914 + ], + [ + 6.818634638858536, + 50.96507909894632 + ], + [ + 6.818634908775366, + 50.96507984328772 + ], + [ + 6.818650434378422, + 50.96512304504487 + ], + [ + 6.818699001264233, + 50.96520686537511 + ], + [ + 6.8187203808360906, + 50.96524404535203 + ], + [ + 6.818727528773758, + 50.965251411788145 + ], + [ + 6.818734676713666, + 50.965258778223834 + ], + [ + 6.818825981507029, + 50.965353978272375 + ], + [ + 6.818957803559598, + 50.96545223668789 + ], + [ + 6.8189690896931365, + 50.965458130765136 + ], + [ + 6.818974295094324, + 50.96546084343093 + ], + [ + 6.818996090918778, + 50.965472241131785 + ], + [ + 6.819116269752526, + 50.965535057266024 + ], + [ + 6.8191239456342, + 50.96553845284012 + ], + [ + 6.819457590261248, + 50.965688080623764 + ], + [ + 6.82010162126781, + 50.9659767862912 + ], + [ + 6.820643729118038, + 50.966219755917706 + ], + [ + 6.821440186281155, + 50.96657655798574 + ], + [ + 6.821845251135988, + 50.966759965916296 + ], + [ + 6.82192044375589, + 50.966793934659364 + ], + [ + 6.821948791406335, + 50.966806731156176 + ], + [ + 6.822645993573766, + 50.96712204071893 + ], + [ + 6.823087991726641, + 50.967321783288064 + ], + [ + 6.823199518802742, + 50.96737218324402 + ], + [ + 6.823345854614681, + 50.96743795323102 + ], + [ + 6.823720571203907, + 50.967607964363054 + ], + [ + 6.823730715650393, + 50.96760734849928 + ], + [ + 6.823740860138658, + 50.96760673173602 + ], + [ + 6.823827755529985, + 50.96760184071899 + ], + [ + 6.823788436630791, + 50.96762752650081 + ], + [ + 6.823786635410493, + 50.967628702605516 + ], + [ + 6.823784832809013, + 50.96762987778502 + ], + [ + 6.823738161032812, + 50.96766038572806 + ], + [ + 6.8238352896223455, + 50.967681898131914 + ], + [ + 6.823863623800194, + 50.96769908831732 + ], + [ + 6.823865886215529, + 50.96770102639676 + ], + [ + 6.823868148631051, + 50.96770296447615 + ], + [ + 6.824412336356562, + 50.96805182207944 + ], + [ + 6.824414632076638, + 50.96805329218699 + ], + [ + 6.8244155116010345, + 50.96805385630347 + ], + [ + 6.824419753031092, + 50.968056575042546 + ], + [ + 6.82442063669897, + 50.96805714193434 + ], + [ + 6.824449016037811, + 50.968075325740394 + ], + [ + 6.8244760118855705, + 50.96809263563705 + ], + [ + 6.824506818032048, + 50.96811238101696 + ], + [ + 6.82460031437177, + 50.96817229824069 + ], + [ + 6.824603211606723, + 50.96817415549633 + ], + [ + 6.824604970706668, + 50.96817528282792 + ], + [ + 6.824607020220806, + 50.96817659634759 + ], + [ + 6.824607630094612, + 50.96817698725277 + ], + [ + 6.824819807624934, + 50.96831297779377 + ], + [ + 6.82523883517169, + 50.96858166112724 + ], + [ + 6.825408225946273, + 50.96869019661578 + ], + [ + 6.8257654798418415, + 50.96891915897484 + ], + [ + 6.825865199612068, + 50.96898313306881 + ], + [ + 6.826268667425696, + 50.96924187692108 + ], + [ + 6.826362615062567, + 50.96930201694904 + ], + [ + 6.8263648306672895, + 50.96930346663849 + ], + [ + 6.826365215016571, + 50.9693037157293 + ], + [ + 6.82636590205692, + 50.96930416292431 + ], + [ + 6.826368559979303, + 50.96930590145737 + ], + [ + 6.826699363743562, + 50.96951728727782 + ], + [ + 6.826725297973341, + 50.969534001270446 + ], + [ + 6.826952587929792, + 50.969679874588685 + ], + [ + 6.827021195317515, + 50.969723851718484 + ], + [ + 6.8275814874947915, + 50.97008298515693 + ], + [ + 6.827649702419029, + 50.97012666769996 + ], + [ + 6.827675535984721, + 50.97014344705669 + ], + [ + 6.8276775959720135, + 50.97014521130917 + ], + [ + 6.827677653606838, + 50.97014525825026 + ], + [ + 6.827677846726728, + 50.97014542373317 + ], + [ + 6.827680899896659, + 50.970148034800495 + ], + [ + 6.827733480533774, + 50.97017905173093 + ], + [ + 6.827819853287675, + 50.97009809304916 + ], + [ + 6.8278920582157765, + 50.97021937152205 + ], + [ + 6.827897828054943, + 50.97022298377634 + ], + [ + 6.827991867848542, + 50.970283646716574 + ], + [ + 6.828945058290502, + 50.970898265125136 + ], + [ + 6.828946810356783, + 50.970899394956845 + ], + [ + 6.828948562423152, + 50.97090052478853 + ], + [ + 6.82909759071703, + 50.97099662614881 + ], + [ + 6.829105766556642, + 50.97100243890905 + ], + [ + 6.829113940975072, + 50.97100825164232 + ], + [ + 6.829322465157912, + 50.971141670045284 + ], + [ + 6.829562878141012, + 50.97129662759092 + ], + [ + 6.829588609201403, + 50.97131322023276 + ], + [ + 6.829683211412596, + 50.97137422589952 + ], + [ + 6.829751109135752, + 50.9714180110102 + ], + [ + 6.829813323370619, + 50.97145813066592 + ], + [ + 6.829978866133466, + 50.971564986006506 + ], + [ + 6.830034883665901, + 50.971601270505126 + ], + [ + 6.830078567341451, + 50.97162917280904 + ], + [ + 6.830131145965945, + 50.971662929926964 + ], + [ + 6.830133566407009, + 50.97166448228225 + ], + [ + 6.830133697801676, + 50.97166456656836 + ], + [ + 6.830134563608338, + 50.97166512229115 + ], + [ + 6.830135315852076, + 50.97166560844936 + ], + [ + 6.830137693053038, + 50.97166714111383 + ], + [ + 6.830201151956206, + 50.97170807604847 + ], + [ + 6.830224157285897, + 50.97172295222685 + ], + [ + 6.830314167561041, + 50.97178092564081 + ], + [ + 6.830321935622836, + 50.97178595816197 + ], + [ + 6.8303297022630645, + 50.97179099065619 + ], + [ + 6.830344095225996, + 50.97180030774825 + ], + [ + 6.830346238951323, + 50.97180168497274 + ], + [ + 6.830346563986536, + 50.971801893374824 + ], + [ + 6.8303471642866205, + 50.97180227777557 + ], + [ + 6.830349795209411, + 50.97180395995172 + ], + [ + 6.830365684016057, + 50.971814129575506 + ], + [ + 6.830367818282656, + 50.97181549583118 + ], + [ + 6.8303688791580575, + 50.97181617569487 + ], + [ + 6.830373342796814, + 50.97181903145006 + ], + [ + 6.830374221083225, + 50.97181959459802 + ], + [ + 6.830387907525009, + 50.97182845335911 + ], + [ + 6.830396006289402, + 50.971833695281866 + ], + [ + 6.830404103632402, + 50.97183893717763 + ], + [ + 6.830434113878704, + 50.97185829111606 + ], + [ + 6.830464132104701, + 50.97187759662793 + ], + [ + 6.830560394482637, + 50.97193823937958 + ], + [ + 6.8306481873384985, + 50.97193408482086 + ], + [ + 6.830717270744764, + 50.97194873684449 + ], + [ + 6.830638506733249, + 50.97202482492346 + ], + [ + 6.830601567089722, + 50.97206003763227 + ], + [ + 6.830524871250516, + 50.972133278827904 + ], + [ + 6.830508817683062, + 50.97214861458952 + ], + [ + 6.830503152811535, + 50.97215401807846 + ], + [ + 6.830502990348079, + 50.972154172452505 + ], + [ + 6.830502927681783, + 50.972154233345854 + ], + [ + 6.830498428808852, + 50.97215864219223 + ], + [ + 6.830270640633144, + 50.97239537510032 + ], + [ + 6.830243122612328, + 50.97242391214466 + ], + [ + 6.830241576320169, + 50.97242551669711 + ], + [ + 6.830241544881929, + 50.9724255493902 + ], + [ + 6.830240040451444, + 50.97242711154996 + ], + [ + 6.830238513541041, + 50.97242869757541 + ], + [ + 6.8302354791856885, + 50.97243184930205 + ], + [ + 6.830111391558299, + 50.97256050308221 + ], + [ + 6.830110094548419, + 50.972561771397864 + ], + [ + 6.830108762960299, + 50.97256307864392 + ], + [ + 6.830062776156573, + 50.972608727725564 + ], + [ + 6.83005816325507, + 50.97261307507645 + ], + [ + 6.830053546166721, + 50.97261742055061 + ], + [ + 6.830025322806949, + 50.97264412317646 + ], + [ + 6.830004654735383, + 50.972663619116815 + ], + [ + 6.829997368297888, + 50.972670497119545 + ], + [ + 6.8299900819001165, + 50.97267737422316 + ], + [ + 6.829930814743628, + 50.9727334017959 + ], + [ + 6.829474661177589, + 50.973163350894765 + ], + [ + 6.829053466694773, + 50.97356059266418 + ], + [ + 6.829045698208988, + 50.973567873564924 + ], + [ + 6.82903792972074, + 50.97357515446513 + ], + [ + 6.82901439943291, + 50.97359720523786 + ], + [ + 6.828659624402767, + 50.97393169814345 + ], + [ + 6.828295950181411, + 50.97427447690768 + ], + [ + 6.828130039786144, + 50.97443076686178 + ], + [ + 6.8279609106514005, + 50.97459000785602 + ], + [ + 6.827953682718824, + 50.97459684005321 + ], + [ + 6.82792571220307, + 50.97465637991588 + ], + [ + 6.8279156498675, + 50.97467818904472 + ], + [ + 6.8279005950531575, + 50.97471231684323 + ], + [ + 6.827864152793768, + 50.974751095927225 + ], + [ + 6.8278618343133415, + 50.97475416377678 + ], + [ + 6.827859515832619, + 50.97475723162628 + ], + [ + 6.827888745784163, + 50.97477500765525 + ], + [ + 6.827915571379678, + 50.97479137367919 + ], + [ + 6.8279231534157985, + 50.97479600176894 + ], + [ + 6.827930735453439, + 50.97480062985822 + ], + [ + 6.827952007839319, + 50.97481361430243 + ], + [ + 6.8279578128261615, + 50.97481715704928 + ], + [ + 6.827960714587277, + 50.97481892885867 + ], + [ + 6.827963616390552, + 50.97482069976936 + ], + [ + 6.828059464261349, + 50.97487923316229 + ], + [ + 6.8289676219613735, + 50.97543380333339 + ], + [ + 6.829204342764842, + 50.975578352482216 + ], + [ + 6.831944924785514, + 50.977251914776986 + ], + [ + 6.832022818889572, + 50.9772994789184 + ], + [ + 6.832119893113468, + 50.97735875386686 + ], + [ + 6.832411034713387, + 50.97753669902669 + ], + [ + 6.83241742151327, + 50.977577620052124 + ], + [ + 6.832418916206888, + 50.977576238460806 + ], + [ + 6.832420412365696, + 50.97757485599729 + ], + [ + 6.832421038870171, + 50.977574282127 + ], + [ + 6.832486440159082, + 50.97751435771407 + ], + [ + 6.832499342753938, + 50.97752250193355 + ], + [ + 6.83250176876533, + 50.977524034552836 + ], + [ + 6.832503572239488, + 50.97752516887974 + ], + [ + 6.832506038107014, + 50.97752673281793 + ], + [ + 6.83254968976009, + 50.977553880746676 + ], + [ + 6.832550022045512, + 50.977554087477934 + ], + [ + 6.8325582122949395, + 50.977546624405896 + ], + [ + 6.83256626715193, + 50.97753928473418 + ], + [ + 6.832566404006981, + 50.97753916046108 + ], + [ + 6.832628740874095, + 50.97748164790175 + ], + [ + 6.8332205095545335, + 50.976939820288095 + ], + [ + 6.8332228277922775, + 50.97693803755322 + ], + [ + 6.833224612604164, + 50.97693666583238 + ], + [ + 6.833224862362227, + 50.976936472602134 + ], + [ + 6.833224923022511, + 50.976936424261545 + ], + [ + 6.833227976886749, + 50.97693407957026 + ], + [ + 6.8332289691699355, + 50.97693299263814 + ], + [ + 6.833229232489028, + 50.97693269173316 + ], + [ + 6.833229278831694, + 50.97693264492564 + ], + [ + 6.833229358120731, + 50.97693256365348 + ], + [ + 6.833229509539989, + 50.97693240187563 + ], + [ + 6.83323090869137, + 50.97693086830357 + ], + [ + 6.833238690415496, + 50.976924861804534 + ], + [ + 6.833238856529717, + 50.97692472098528 + ], + [ + 6.833239554855169, + 50.97692416463239 + ], + [ + 6.833358075368031, + 50.976813843506605 + ], + [ + 6.833617995538645, + 50.97657550905275 + ], + [ + 6.833620501484719, + 50.97657321264561 + ], + [ + 6.833621214239875, + 50.976572560323866 + ], + [ + 6.833622834830425, + 50.97657107402621 + ], + [ + 6.833623141349448, + 50.976570793708355 + ], + [ + 6.833624431517304, + 50.97656961156844 + ], + [ + 6.833628397258199, + 50.976565977876426 + ], + [ + 6.833633610047225, + 50.97656120081723 + ], + [ + 6.834241081912285, + 50.9760053942846 + ], + [ + 6.834792016165843, + 50.97550130323084 + ], + [ + 6.8348547775197614, + 50.97544428393939 + ], + [ + 6.834895906327261, + 50.975443246019296 + ], + [ + 6.83490056878645, + 50.97544312741426 + ], + [ + 6.834902340264663, + 50.97544308111639 + ], + [ + 6.8349056192744415, + 50.97544299711704 + ], + [ + 6.834908772820492, + 50.9754429152881 + ], + [ + 6.834928072203724, + 50.97544241153729 + ], + [ + 6.834963941290736, + 50.97546425268762 + ], + [ + 6.837010573365089, + 50.976708817227006 + ], + [ + 6.837022898414175, + 50.97671631168087 + ], + [ + 6.837024533283171, + 50.97671730520818 + ], + [ + 6.837027978947099, + 50.97671939985041 + ], + [ + 6.837031513244122, + 50.97672154919817 + ], + [ + 6.837038491782962, + 50.9767257931614 + ], + [ + 6.837117413980724, + 50.976664182975306 + ], + [ + 6.837230914320062, + 50.976575930348346 + ], + [ + 6.8376435941145, + 50.97625504136395 + ], + [ + 6.839494919753659, + 50.9748055157805 + ], + [ + 6.840570463331513, + 50.97397366858525 + ], + [ + 6.8405888174273874, + 50.973971663332485 + ], + [ + 6.840588987509975, + 50.97397165118849 + ], + [ + 6.840591949198069, + 50.97397143434803 + ], + [ + 6.840597452328463, + 50.9739710315684 + ], + [ + 6.840606082959389, + 50.973970399724706 + ], + [ + 6.84064683459772, + 50.97394546602208 + ], + [ + 6.840652559014379, + 50.973942013017925 + ], + [ + 6.840652676256061, + 50.973941942335905 + ], + [ + 6.84065475529365, + 50.97394066948036 + ], + [ + 6.840654899911724, + 50.97394059210953 + ], + [ + 6.840656909510514, + 50.97393937283232 + ], + [ + 6.840658557421025, + 50.9739383654169 + ], + [ + 6.840658756786069, + 50.97393824408925 + ], + [ + 6.8406623150085615, + 50.97393606952347 + ], + [ + 6.840686454307352, + 50.973950763114736 + ], + [ + 6.840693467249877, + 50.97395444807986 + ], + [ + 6.840697338103859, + 50.97395692642128 + ], + [ + 6.84070862234825, + 50.973964376059065 + ], + [ + 6.840709252908361, + 50.97396478614806 + ], + [ + 6.840810433479282, + 50.974026465514115 + ], + [ + 6.840965611871696, + 50.974121051684364 + ], + [ + 6.840967883661829, + 50.97412244097189 + ], + [ + 6.840968548510977, + 50.97412284899532 + ], + [ + 6.840968937707378, + 50.97412308823345 + ], + [ + 6.840970149633794, + 50.97412383284991 + ], + [ + 6.840971486240312, + 50.97412465352142 + ], + [ + 6.840983123830648, + 50.974131827258475 + ], + [ + 6.841116638184435, + 50.974214013928965 + ], + [ + 6.84132071466652, + 50.974338341618655 + ], + [ + 6.841421717740966, + 50.97439985886755 + ], + [ + 6.841750713846773, + 50.97460013681048 + ], + [ + 6.8419995194352135, + 50.97475145947811 + ], + [ + 6.842001514578471, + 50.974752671849316 + ], + [ + 6.842002646484417, + 50.97475336101271 + ], + [ + 6.842003540118514, + 50.97475390456877 + ], + [ + 6.842005551841995, + 50.97475512803901 + ], + [ + 6.842007559420583, + 50.97475634873443 + ], + [ + 6.8421465273844895, + 50.97484093831567 + ], + [ + 6.842179089693736, + 50.974860760855535 + ], + [ + 6.842213029707753, + 50.974881410198826 + ], + [ + 6.842801785062992, + 50.97523956241919 + ], + [ + 6.842981414416408, + 50.97534895985618 + ], + [ + 6.843020114906274, + 50.97537224665892 + ], + [ + 6.843233726446858, + 50.97550216225873 + ], + [ + 6.843345568022833, + 50.97557014401825 + ], + [ + 6.843654612707967, + 50.97575586463723 + ], + [ + 6.844220541211908, + 50.97609921577789 + ], + [ + 6.844233281180088, + 50.9761069698523 + ], + [ + 6.844233443303004, + 50.97610706818035 + ], + [ + 6.844239894308553, + 50.976110995279676 + ], + [ + 6.844243251536128, + 50.97611303680955 + ], + [ + 6.844246346863444, + 50.97611491970908 + ], + [ + 6.84428280884051, + 50.976137013540686 + ], + [ + 6.844487332363806, + 50.9762609687598 + ], + [ + 6.844538873399408, + 50.97629214855319 + ], + [ + 6.844649803218812, + 50.97636334908636 + ], + [ + 6.844736240404596, + 50.97641885554266 + ], + [ + 6.844736991830226, + 50.976419333495386 + ], + [ + 6.844765184920503, + 50.97643652578931 + ], + [ + 6.844771835075182, + 50.97644058424705 + ], + [ + 6.844775160111345, + 50.976442614374406 + ], + [ + 6.8447784851478, + 50.976444644501676 + ], + [ + 6.844791787643902, + 50.976452775845715 + ], + [ + 6.8447939634459365, + 50.976454120114596 + ], + [ + 6.844795007800308, + 50.976454763564334 + ], + [ + 6.844796319969157, + 50.9764555918343 + ], + [ + 6.8447986083193655, + 50.976456997539884 + ], + [ + 6.844800886239753, + 50.97645838236708 + ], + [ + 6.844811979421918, + 50.97646552407854 + ], + [ + 6.844813587965445, + 50.976466566476034 + ], + [ + 6.84481959126774, + 50.97647041152934 + ], + [ + 6.844830832213863, + 50.97647762342024 + ], + [ + 6.844956299554561, + 50.976553532243535 + ], + [ + 6.845006330550857, + 50.97658380165845 + ], + [ + 6.845467857984268, + 50.97686531168755 + ], + [ + 6.845471028402853, + 50.97686723641167 + ], + [ + 6.845471290311808, + 50.976867395039235 + ], + [ + 6.8454717490603425, + 50.97686767152072 + ], + [ + 6.845472184193499, + 50.97686793497511 + ], + [ + 6.845474213055713, + 50.976869161398376 + ], + [ + 6.8454825971156605, + 50.97687423483614 + ], + [ + 6.845484688325847, + 50.97687549928445 + ], + [ + 6.845485250917566, + 50.97687584063893 + ], + [ + 6.845487850704627, + 50.97687741306714 + ], + [ + 6.845488312175354, + 50.97687769229695 + ], + [ + 6.845493104294295, + 50.9768805912979 + ], + [ + 6.845603644439117, + 50.976947468461326 + ], + [ + 6.845667905932959, + 50.97698646605838 + ], + [ + 6.845670580954912, + 50.97698545953541 + ], + [ + 6.845673258781959, + 50.97698445396355 + ], + [ + 6.845676115015768, + 50.97698337973246 + ], + [ + 6.845678612970696, + 50.976982443691945 + ], + [ + 6.8456788404805655, + 50.97698236064922 + ], + [ + 6.845692719121649, + 50.976977283359616 + ], + [ + 6.846196058547392, + 50.97679510158375 + ], + [ + 6.8467912144984675, + 50.97657966345933 + ], + [ + 6.84679548121266, + 50.97657818530541 + ], + [ + 6.846796026522054, + 50.97657800738984 + ], + [ + 6.846796649599692, + 50.97657778054284 + ], + [ + 6.846796850819288, + 50.976577711403294 + ], + [ + 6.846799749183657, + 50.97657671077204 + ], + [ + 6.84841411613378, + 50.97756776944037 + ], + [ + 6.848415559708342, + 50.977568654053314 + ], + [ + 6.848417112659173, + 50.97756960723615 + ], + [ + 6.848417747180361, + 50.97756999577031 + ], + [ + 6.848418552088216, + 50.977570489074544 + ], + [ + 6.848421379692258, + 50.977572221227746 + ], + [ + 6.848434682021305, + 50.97758034585033 + ], + [ + 6.848441338273432, + 50.97758440600635 + ], + [ + 6.848444889547465, + 50.97758657060674 + ], + [ + 6.8484479960332525, + 50.97758846439096 + ], + [ + 6.849068136560718, + 50.97796600024349 + ], + [ + 6.849418609102367, + 50.97817936270591 + ], + [ + 6.849471058020885, + 50.97820522454998 + ], + [ + 6.849571352565875, + 50.97825489103939 + ], + [ + 6.849629910700936, + 50.97828543689147 + ], + [ + 6.849654970377365, + 50.97829826492327 + ], + [ + 6.849661452981878, + 50.97830158611377 + ], + [ + 6.851042793195536, + 50.97784323511473 + ], + [ + 6.851090527233603, + 50.977827381464486 + ], + [ + 6.851255695838345, + 50.97777269139178 + ], + [ + 6.851881404803883, + 50.977565061166445 + ], + [ + 6.8517948417150345, + 50.97728558865369 + ], + [ + 6.851763526592514, + 50.97718504868292 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Widdersdorf", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "309", + "Population_rel": 0.011445351273850227, + "Population_abs": 12453 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.109707071076077, + 50.92098109199395 + ], + [ + 7.114453321377654, + 50.92013435442127 + ], + [ + 7.115760323946486, + 50.91990116775961 + ], + [ + 7.116780853657464, + 50.91971908031116 + ], + [ + 7.120913453691379, + 50.919521775326984 + ], + [ + 7.121942221332052, + 50.919485637495306 + ], + [ + 7.121977321378393, + 50.91948449073943 + ], + [ + 7.121987978996213, + 50.919484118994745 + ], + [ + 7.123781506105859, + 50.91942730408073 + ], + [ + 7.1241536465526885, + 50.919414009981054 + ], + [ + 7.12443179066623, + 50.91939514918834 + ], + [ + 7.124461489607862, + 50.919394143338764 + ], + [ + 7.126030158132001, + 50.91933685366436 + ], + [ + 7.126895991853835, + 50.9193052394952 + ], + [ + 7.126987414682878, + 50.919301901220045 + ], + [ + 7.12724630153714, + 50.9192924782897 + ], + [ + 7.1274181891957245, + 50.919308076968186 + ], + [ + 7.127909909086855, + 50.919376229523905 + ], + [ + 7.131572855023482, + 50.91988264452944 + ], + [ + 7.1316876981647495, + 50.91989159846442 + ], + [ + 7.131769766715316, + 50.91988612812356 + ], + [ + 7.132864020251542, + 50.9197180130582 + ], + [ + 7.132964051551782, + 50.91970265923968 + ], + [ + 7.134498524252003, + 50.919467327095006 + ], + [ + 7.134850470512183, + 50.919413293095396 + ], + [ + 7.134999716254935, + 50.91940411017213 + ], + [ + 7.135079702856593, + 50.91940665891237 + ], + [ + 7.137073256273838, + 50.91966843683837 + ], + [ + 7.137444536274211, + 50.919719023895 + ], + [ + 7.137898293734762, + 50.91978094167788 + ], + [ + 7.139587930906015, + 50.91997741069879 + ], + [ + 7.139708128252254, + 50.91998601127093 + ], + [ + 7.139732836252908, + 50.91998777925812 + ], + [ + 7.139793781446061, + 50.919992384817284 + ], + [ + 7.139792198451383, + 50.91990008532577 + ], + [ + 7.139663299017359, + 50.91955744370435 + ], + [ + 7.13907305680007, + 50.919041875816596 + ], + [ + 7.138987929471561, + 50.91898592752459 + ], + [ + 7.138920269849254, + 50.91894149966555 + ], + [ + 7.13872284299909, + 50.918811721943044 + ], + [ + 7.138555227233629, + 50.91870148570075 + ], + [ + 7.138518484235495, + 50.91865602171225 + ], + [ + 7.138221153159441, + 50.91828811828409 + ], + [ + 7.138192331578957, + 50.91817254053806 + ], + [ + 7.138188714269323, + 50.91775347113552 + ], + [ + 7.138324294975901, + 50.91708354200953 + ], + [ + 7.138296445639784, + 50.916954309501456 + ], + [ + 7.1382594838606535, + 50.91678248185576 + ], + [ + 7.138233905820946, + 50.916664077870365 + ], + [ + 7.138183758015968, + 50.916373504230734 + ], + [ + 7.138168828438074, + 50.91628773696354 + ], + [ + 7.13825030487581, + 50.91597875732943 + ], + [ + 7.1386437075493845, + 50.91495490439067 + ], + [ + 7.138795597346544, + 50.91463886300066 + ], + [ + 7.138845279195356, + 50.914260125194815 + ], + [ + 7.138838243666239, + 50.91412268071049 + ], + [ + 7.138834191495668, + 50.914042393166994 + ], + [ + 7.138595693244116, + 50.91314552525888 + ], + [ + 7.138444024608112, + 50.91242226907266 + ], + [ + 7.138294138207095, + 50.9119325150185 + ], + [ + 7.138253242272455, + 50.91179875735575 + ], + [ + 7.138211590408145, + 50.911662559343384 + ], + [ + 7.138130044545744, + 50.91139603714632 + ], + [ + 7.137982157417351, + 50.91089911958358 + ], + [ + 7.137972757800335, + 50.91086731213489 + ], + [ + 7.1376850401064, + 50.90989995607201 + ], + [ + 7.137424361920477, + 50.909260398008726 + ], + [ + 7.13674337420076, + 50.90820698951579 + ], + [ + 7.136719820301866, + 50.90811290006269 + ], + [ + 7.1367159066252235, + 50.90809691889057 + ], + [ + 7.1366878217187475, + 50.90798450006178 + ], + [ + 7.136679377625331, + 50.90793948712981 + ], + [ + 7.136645048563713, + 50.90775546937851 + ], + [ + 7.136635547700241, + 50.90770486353013 + ], + [ + 7.13663181355454, + 50.90768438841335 + ], + [ + 7.1366006877739006, + 50.907551955185134 + ], + [ + 7.136599478011754, + 50.907546629639285 + ], + [ + 7.1365870853283715, + 50.9074936392773 + ], + [ + 7.136591418062579, + 50.90744637596044 + ], + [ + 7.136731135248219, + 50.90589894281892 + ], + [ + 7.136644289159838, + 50.90586176177724 + ], + [ + 7.13659639139109, + 50.90585371225858 + ], + [ + 7.1365925250893465, + 50.90587925625589 + ], + [ + 7.13658994176836, + 50.90589632356791 + ], + [ + 7.136589628718037, + 50.90589839249778 + ], + [ + 7.136122995811341, + 50.90588275743964 + ], + [ + 7.1359394685908155, + 50.905876588791834 + ], + [ + 7.135620637502481, + 50.90589263134409 + ], + [ + 7.135405282948857, + 50.905903401071235 + ], + [ + 7.13519391925445, + 50.905913964355925 + ], + [ + 7.1351257862536785, + 50.9059068500335 + ], + [ + 7.135035755659466, + 50.90590667061002 + ], + [ + 7.135015275430338, + 50.90590661317095 + ], + [ + 7.1348706308972325, + 50.90590628043169 + ], + [ + 7.134802319031247, + 50.90577909826404 + ], + [ + 7.134756516447348, + 50.90569373635523 + ], + [ + 7.134592883169639, + 50.905389205439576 + ], + [ + 7.1345497266545825, + 50.9053088322214 + ], + [ + 7.134543370702111, + 50.90529703893048 + ], + [ + 7.134184069663762, + 50.90462136096982 + ], + [ + 7.134060895723316, + 50.90439365196426 + ], + [ + 7.133966728284444, + 50.90421955887336 + ], + [ + 7.133868847500097, + 50.904038751046144 + ], + [ + 7.133860247977878, + 50.90402260490349 + ], + [ + 7.133846599267458, + 50.903997564279635 + ], + [ + 7.133737204894449, + 50.903795257355185 + ], + [ + 7.133730179810522, + 50.903778866568445 + ], + [ + 7.133527028587053, + 50.903484764248105 + ], + [ + 7.133531361693225, + 50.90348360861101 + ], + [ + 7.133647267967092, + 50.903451432035986 + ], + [ + 7.133914439665662, + 50.90337880855446 + ], + [ + 7.134103383823281, + 50.90332750786468 + ], + [ + 7.13435946437746, + 50.90326900591511 + ], + [ + 7.134513322866301, + 50.90322721658141 + ], + [ + 7.134752347061006, + 50.9031648437054 + ], + [ + 7.135496880642396, + 50.902970246462445 + ], + [ + 7.135702377293602, + 50.90291039387469 + ], + [ + 7.135964142953282, + 50.90283408192636 + ], + [ + 7.136137546435436, + 50.90278360899457 + ], + [ + 7.136467237466007, + 50.902694530466015 + ], + [ + 7.137022127758146, + 50.90254716974902 + ], + [ + 7.137056428209623, + 50.90248602101372 + ], + [ + 7.137122358818523, + 50.90234866154588 + ], + [ + 7.137170535425943, + 50.902249871113945 + ], + [ + 7.137978295360124, + 50.90126491861499 + ], + [ + 7.138436884239541, + 50.90064322916865 + ], + [ + 7.138491059747179, + 50.90056978346452 + ], + [ + 7.138534041326593, + 50.900511512211885 + ], + [ + 7.138597007585417, + 50.90042614981573 + ], + [ + 7.138661654068074, + 50.90042421293234 + ], + [ + 7.138870779707795, + 50.90014101114464 + ], + [ + 7.138735101866194, + 50.90009459887129 + ], + [ + 7.138676834004298, + 50.900086384791216 + ], + [ + 7.138695958036913, + 50.90003479658389 + ], + [ + 7.138781135976576, + 50.89980331009467 + ], + [ + 7.1388355128505605, + 50.89965587241448 + ], + [ + 7.138878099422209, + 50.899540174053996 + ], + [ + 7.138943323158878, + 50.899363230335204 + ], + [ + 7.139300712879179, + 50.89839312061475 + ], + [ + 7.139610476194746, + 50.89747576262559 + ], + [ + 7.139622251928783, + 50.89744078526341 + ], + [ + 7.139804545319056, + 50.89689543957497 + ], + [ + 7.139788220298877, + 50.89676980823875 + ], + [ + 7.139716958738795, + 50.89622419828615 + ], + [ + 7.139708048753085, + 50.89615516508823 + ], + [ + 7.139671330750006, + 50.89587365309648 + ], + [ + 7.1393371719820635, + 50.89331158317043 + ], + [ + 7.139392430706133, + 50.89331927143859 + ], + [ + 7.139395899673354, + 50.893319753940865 + ], + [ + 7.1395525503439945, + 50.89334154800685 + ], + [ + 7.140390490820554, + 50.89089397566975 + ], + [ + 7.140419646777238, + 50.890836701129075 + ], + [ + 7.141017527640707, + 50.889659336631624 + ], + [ + 7.141055804954151, + 50.88865868503361 + ], + [ + 7.141054086660134, + 50.888630417648486 + ], + [ + 7.1410526377966175, + 50.88859181187449 + ], + [ + 7.141052245347058, + 50.88857309886185 + ], + [ + 7.141048438383439, + 50.8884830119309 + ], + [ + 7.141042990381816, + 50.8883555752707 + ], + [ + 7.141016066180974, + 50.88769618267442 + ], + [ + 7.141012620139921, + 50.88761131778794 + ], + [ + 7.141012397829429, + 50.88760618787377 + ], + [ + 7.141001130080824, + 50.88759278773734 + ], + [ + 7.140870828967029, + 50.88743719063369 + ], + [ + 7.140181333647541, + 50.88661380905652 + ], + [ + 7.140152560071613, + 50.886579444476155 + ], + [ + 7.139060337951399, + 50.88533053332871 + ], + [ + 7.1388629617516814, + 50.88487122815467 + ], + [ + 7.138789581995033, + 50.88470043774598 + ], + [ + 7.138783462859446, + 50.884686310069085 + ], + [ + 7.138759916461692, + 50.8846314330485 + ], + [ + 7.138583902255813, + 50.88407506686258 + ], + [ + 7.138172477118898, + 50.883853375607075 + ], + [ + 7.137626009986921, + 50.88339596282717 + ], + [ + 7.137391714636247, + 50.88319984936026 + ], + [ + 7.137372312286155, + 50.88318371085788 + ], + [ + 7.137381392615165, + 50.883102193480156 + ], + [ + 7.137548084911012, + 50.881367628396205 + ], + [ + 7.1375506171826215, + 50.88134145412341 + ], + [ + 7.137556343554339, + 50.88128206332056 + ], + [ + 7.135664510011123, + 50.88258669200791 + ], + [ + 7.133643180926058, + 50.88409593387874 + ], + [ + 7.133443121288119, + 50.88423164193728 + ], + [ + 7.133023283185515, + 50.88451646317767 + ], + [ + 7.132442656301882, + 50.88491017806267 + ], + [ + 7.131997643662677, + 50.88521223021468 + ], + [ + 7.131909280187069, + 50.88527205889111 + ], + [ + 7.131877267894193, + 50.88529394422238 + ], + [ + 7.131480942196992, + 50.88559390392689 + ], + [ + 7.131070515240239, + 50.885904426148834 + ], + [ + 7.130709386542541, + 50.886177724954905 + ], + [ + 7.130447596766009, + 50.886375982844534 + ], + [ + 7.130445728756443, + 50.88637739729859 + ], + [ + 7.1303160201035825, + 50.886448779384494 + ], + [ + 7.130314038511529, + 50.88644987004405 + ], + [ + 7.13029031671483, + 50.88646798902237 + ], + [ + 7.1301136560777465, + 50.88660247623812 + ], + [ + 7.130105741866097, + 50.886608841943016 + ], + [ + 7.129834574176508, + 50.886826950082614 + ], + [ + 7.129647326497403, + 50.88697628183396 + ], + [ + 7.129533695112552, + 50.887066917115206 + ], + [ + 7.129347292197464, + 50.88721012646211 + ], + [ + 7.129259390456667, + 50.88727758986569 + ], + [ + 7.129096429214038, + 50.88739702034786 + ], + [ + 7.129052838946573, + 50.88742809607499 + ], + [ + 7.128589691087413, + 50.88775781755729 + ], + [ + 7.12848913001694, + 50.88782942850761 + ], + [ + 7.128480229894283, + 50.88783576210382 + ], + [ + 7.128480016025275, + 50.88783591876097 + ], + [ + 7.128320186665471, + 50.887949834024774 + ], + [ + 7.128291211718412, + 50.887968183126496 + ], + [ + 7.127851560350258, + 50.88825326623985 + ], + [ + 7.127749969774719, + 50.88831897280084 + ], + [ + 7.12723910581528, + 50.88864510573681 + ], + [ + 7.126924149976634, + 50.88884474741865 + ], + [ + 7.12661837315969, + 50.88904178624912 + ], + [ + 7.126179593028646, + 50.889322539472126 + ], + [ + 7.125964327653205, + 50.88946017973506 + ], + [ + 7.125899950220871, + 50.88949576986235 + ], + [ + 7.125898106384234, + 50.88949678801256 + ], + [ + 7.125720704322497, + 50.88959476590192 + ], + [ + 7.1254338350579856, + 50.889774896870456 + ], + [ + 7.125409082110642, + 50.88979158629994 + ], + [ + 7.125276723721379, + 50.889881674732855 + ], + [ + 7.125274704919762, + 50.88988304800988 + ], + [ + 7.125226113998106, + 50.88991318129746 + ], + [ + 7.125045044856198, + 50.89002513924578 + ], + [ + 7.124818256376775, + 50.89014490896746 + ], + [ + 7.124590859390795, + 50.890274842090506 + ], + [ + 7.124553942346664, + 50.89028814311651 + ], + [ + 7.124228458390442, + 50.890405536846124 + ], + [ + 7.124039925220439, + 50.890473336769304 + ], + [ + 7.123847681889594, + 50.89052867629892 + ], + [ + 7.123664892255105, + 50.890581227485626 + ], + [ + 7.123567688500746, + 50.890599423659744 + ], + [ + 7.123289939256801, + 50.890651181271735 + ], + [ + 7.123211977985375, + 50.89066577615092 + ], + [ + 7.122893582699177, + 50.890705878119896 + ], + [ + 7.122812673214534, + 50.89071609576882 + ], + [ + 7.122455304463826, + 50.89074308735235 + ], + [ + 7.122403807310812, + 50.89074708933014 + ], + [ + 7.122038155149051, + 50.89074880911079 + ], + [ + 7.121991396787122, + 50.89074889937732 + ], + [ + 7.1218425940425485, + 50.89074907149713 + ], + [ + 7.121694407559883, + 50.89073943947221 + ], + [ + 7.121307487863467, + 50.89071376445355 + ], + [ + 7.121120325756918, + 50.89069093202894 + ], + [ + 7.120948700251801, + 50.890669927848336 + ], + [ + 7.120741513047286, + 50.89063587027674 + ], + [ + 7.1204719694406675, + 50.890591444789436 + ], + [ + 7.120457394898213, + 50.89058825924307 + ], + [ + 7.120114471418654, + 50.890512445000056 + ], + [ + 7.119470343145032, + 50.89035205318257 + ], + [ + 7.119231565857464, + 50.89029258673198 + ], + [ + 7.1187126899466655, + 50.890163261401064 + ], + [ + 7.118660900374373, + 50.8901500386559 + ], + [ + 7.117995564432704, + 50.889980997394964 + ], + [ + 7.117953666389629, + 50.88997034235122 + ], + [ + 7.1178933227739165, + 50.889955009002165 + ], + [ + 7.1178365263383725, + 50.88995132835333 + ], + [ + 7.117524632602821, + 50.88987116379902 + ], + [ + 7.117366281936713, + 50.889846431926685 + ], + [ + 7.117229823107481, + 50.88982787192296 + ], + [ + 7.117187229554524, + 50.88981832239351 + ], + [ + 7.116507237746587, + 50.88966641727297 + ], + [ + 7.116429284870672, + 50.88965763503696 + ], + [ + 7.116357673518926, + 50.889640610788234 + ], + [ + 7.116309413766491, + 50.88962916445195 + ], + [ + 7.116208307113758, + 50.889605183188635 + ], + [ + 7.115898157788806, + 50.889556191953396 + ], + [ + 7.115743984334299, + 50.88953172676454 + ], + [ + 7.115514531461486, + 50.88949531634945 + ], + [ + 7.11525374067733, + 50.889430118804654 + ], + [ + 7.114988140473456, + 50.88935400023 + ], + [ + 7.114936339192455, + 50.889339213430695 + ], + [ + 7.1144897167683325, + 50.88921124580941 + ], + [ + 7.114146274355149, + 50.88911285570169 + ], + [ + 7.114079310494642, + 50.88909398769689 + ], + [ + 7.113641179599688, + 50.88897025153468 + ], + [ + 7.113063118002954, + 50.888807216238895 + ], + [ + 7.112895840260619, + 50.88875945943212 + ], + [ + 7.112399452303314, + 50.88861811573917 + ], + [ + 7.112296424770863, + 50.888588713682374 + ], + [ + 7.112108686708126, + 50.88853521778375 + ], + [ + 7.112087939029493, + 50.88852930337022 + ], + [ + 7.111512182338199, + 50.88834322525329 + ], + [ + 7.110605880158012, + 50.88805043989275 + ], + [ + 7.110368848492702, + 50.887973768634225 + ], + [ + 7.110331469323965, + 50.887961718932104 + ], + [ + 7.109647038828994, + 50.887747090404545 + ], + [ + 7.109343054549169, + 50.887651727381986 + ], + [ + 7.109301940925023, + 50.8876499604637 + ], + [ + 7.10898299732597, + 50.88749909342282 + ], + [ + 7.108948770707353, + 50.88747020244557 + ], + [ + 7.108924990620046, + 50.88745029273967 + ], + [ + 7.108199904219517, + 50.88722867065342 + ], + [ + 7.108002478930965, + 50.88716770997652 + ], + [ + 7.107864753931944, + 50.88712523931942 + ], + [ + 7.107423529877163, + 50.88698946244071 + ], + [ + 7.107326459869126, + 50.88697123636895 + ], + [ + 7.107238705069228, + 50.88697431711846 + ], + [ + 7.107155364321813, + 50.88698976105049 + ], + [ + 7.106860115488485, + 50.886752902608485 + ], + [ + 7.106849812706768, + 50.88672594241824 + ], + [ + 7.10674466048324, + 50.88669053273718 + ], + [ + 7.106099025251171, + 50.8864743468684 + ], + [ + 7.10600249386184, + 50.88644281059219 + ], + [ + 7.1057520520056, + 50.886363290543336 + ], + [ + 7.105674585406523, + 50.886338674702536 + ], + [ + 7.105494289976654, + 50.886281531304355 + ], + [ + 7.105484286848405, + 50.886278360525964 + ], + [ + 7.105482508697688, + 50.88627803216942 + ], + [ + 7.105450458014971, + 50.8862721192345 + ], + [ + 7.10542333713856, + 50.88626707237283 + ], + [ + 7.105318501525785, + 50.88623291665304 + ], + [ + 7.105015738626143, + 50.8861342937561 + ], + [ + 7.104759377555034, + 50.886050693035 + ], + [ + 7.104535677493643, + 50.885978018936854 + ], + [ + 7.1045298124200595, + 50.8858862915936 + ], + [ + 7.104525513927947, + 50.885854778979926 + ], + [ + 7.104519139853228, + 50.88576557418752 + ], + [ + 7.104520450884295, + 50.88573688496583 + ], + [ + 7.104578518192549, + 50.88537414898024 + ], + [ + 7.104620418552154, + 50.88525192372458 + ], + [ + 7.104620426677822, + 50.88525189867425 + ], + [ + 7.104843720398347, + 50.884600519186 + ], + [ + 7.104887608728158, + 50.88441214252916 + ], + [ + 7.104895838311005, + 50.88437681679708 + ], + [ + 7.10489931799458, + 50.884361771120176 + ], + [ + 7.104925513872433, + 50.884249693698294 + ], + [ + 7.105012718804078, + 50.88387535390315 + ], + [ + 7.104979394961118, + 50.8838843901323 + ], + [ + 7.104881118571931, + 50.883911030739924 + ], + [ + 7.104063969395712, + 50.88413181895767 + ], + [ + 7.103737368246863, + 50.88422031007072 + ], + [ + 7.1036607266683145, + 50.88424243023371 + ], + [ + 7.10317743944971, + 50.88438166465242 + ], + [ + 7.102921539078469, + 50.884455371264146 + ], + [ + 7.102270393907264, + 50.884599604902874 + ], + [ + 7.100936140432759, + 50.884949311592294 + ], + [ + 7.100598990319247, + 50.885036904605286 + ], + [ + 7.100101614265431, + 50.88516394263828 + ], + [ + 7.100098223227198, + 50.885164784100134 + ], + [ + 7.100094828135915, + 50.88516544562224 + ], + [ + 7.0996805680780035, + 50.88524953754129 + ], + [ + 7.09951423962596, + 50.885283198445315 + ], + [ + 7.099306176766262, + 50.885318869384484 + ], + [ + 7.098713407871697, + 50.88542046235853 + ], + [ + 7.098261470383553, + 50.88549798247454 + ], + [ + 7.097958323701127, + 50.88553931169459 + ], + [ + 7.097301596735263, + 50.88562873436177 + ], + [ + 7.097110076679869, + 50.88565489678464 + ], + [ + 7.096020231549173, + 50.88569768479782 + ], + [ + 7.095001514433826, + 50.88572550079233 + ], + [ + 7.094201369266412, + 50.88574739289319 + ], + [ + 7.094184074085201, + 50.885747858716186 + ], + [ + 7.094180917080014, + 50.88574794386213 + ], + [ + 7.094135560879989, + 50.88591674314338 + ], + [ + 7.094046278416632, + 50.886248752938485 + ], + [ + 7.094008239235967, + 50.88639024451723 + ], + [ + 7.093824192411096, + 50.88726925378619 + ], + [ + 7.093756204610524, + 50.88744878143357 + ], + [ + 7.093592380853119, + 50.88788109392624 + ], + [ + 7.093294976684992, + 50.88866596616659 + ], + [ + 7.093246979135201, + 50.88889134884344 + ], + [ + 7.093232748633209, + 50.88895816784976 + ], + [ + 7.09323071427055, + 50.88896289406818 + ], + [ + 7.093223853793045, + 50.88897883660087 + ], + [ + 7.093149269988366, + 50.88915573157332 + ], + [ + 7.093114532213333, + 50.8892382629093 + ], + [ + 7.093113448844796, + 50.889240836287534 + ], + [ + 7.092836169533747, + 50.88922878107454 + ], + [ + 7.092803077754975, + 50.88922972062931 + ], + [ + 7.092485763647393, + 50.889213455093284 + ], + [ + 7.0919486573620665, + 50.88921848440786 + ], + [ + 7.090043402304816, + 50.88926282339023 + ], + [ + 7.089582598091281, + 50.889267129056286 + ], + [ + 7.089408620117161, + 50.889278462093216 + ], + [ + 7.086891762349609, + 50.88933313444279 + ], + [ + 7.086806239732411, + 50.88933465085579 + ], + [ + 7.086165268193872, + 50.88934700287117 + ], + [ + 7.085519113347155, + 50.88936254723209 + ], + [ + 7.08468032895461, + 50.889382036179946 + ], + [ + 7.084481339193408, + 50.8893812793549 + ], + [ + 7.084466670237931, + 50.889379977320594 + ], + [ + 7.084452010689394, + 50.889379035186614 + ], + [ + 7.083883236961408, + 50.889336317657545 + ], + [ + 7.083796958344881, + 50.88932974761094 + ], + [ + 7.083221745199754, + 50.8892851097838 + ], + [ + 7.082655353832046, + 50.88924083619789 + ], + [ + 7.082354537730893, + 50.88922492925747 + ], + [ + 7.082178852852689, + 50.88921172734023 + ], + [ + 7.080710011461036, + 50.888935254866176 + ], + [ + 7.080514765868697, + 50.888924298226264 + ], + [ + 7.080367082886516, + 50.88889887752821 + ], + [ + 7.080322972962143, + 50.88889047671427 + ], + [ + 7.080104139702537, + 50.88884899348473 + ], + [ + 7.080095712657389, + 50.888847183816 + ], + [ + 7.080087425865388, + 50.888845282919604 + ], + [ + 7.079854480536066, + 50.88879575062449 + ], + [ + 7.0797029444430395, + 50.888763532998674 + ], + [ + 7.079832202336954, + 50.88842253404957 + ], + [ + 7.079860552284827, + 50.888345591742244 + ], + [ + 7.079853033923538, + 50.88817423158199 + ], + [ + 7.079934384669477, + 50.88795557428854 + ], + [ + 7.079937112144995, + 50.887955980711105 + ], + [ + 7.079997988508536, + 50.887965053254796 + ], + [ + 7.079999066696457, + 50.887962173223634 + ], + [ + 7.0802500124026055, + 50.88729156548616 + ], + [ + 7.078627835041218, + 50.88722102856061 + ], + [ + 7.078623842558738, + 50.88722085490168 + ], + [ + 7.078625939216448, + 50.887249650384796 + ], + [ + 7.0786261317451205, + 50.88725229680401 + ], + [ + 7.077983979035076, + 50.88722461265338 + ], + [ + 7.07792722084441, + 50.88722226042061 + ], + [ + 7.077851596148366, + 50.88721531820339 + ], + [ + 7.07729263983119, + 50.88718398476753 + ], + [ + 7.0772243366628524, + 50.88718021073844 + ], + [ + 7.076546959130144, + 50.88714097764675 + ], + [ + 7.076307743439029, + 50.8871271837466 + ], + [ + 7.075830462315981, + 50.88710012338121 + ], + [ + 7.075729437819514, + 50.88709485291245 + ], + [ + 7.0756662650966105, + 50.88709165991936 + ], + [ + 7.0755975236402495, + 50.88708734887877 + ], + [ + 7.075587847567756, + 50.887086808880845 + ], + [ + 7.075534198770883, + 50.887083708116606 + ], + [ + 7.075274782147144, + 50.88706901954866 + ], + [ + 7.075217149070776, + 50.88706568564134 + ], + [ + 7.0751904658518905, + 50.887060987010024 + ], + [ + 7.075046628491071, + 50.887035614854604 + ], + [ + 7.074907428889606, + 50.887020356904195 + ], + [ + 7.07472563872266, + 50.88740201692063 + ], + [ + 7.074553399773086, + 50.88768632267231 + ], + [ + 7.074452338483377, + 50.88784609670615 + ], + [ + 7.074344605271388, + 50.88783962791102 + ], + [ + 7.073909835460329, + 50.88781360656211 + ], + [ + 7.073372763779539, + 50.88778241231383 + ], + [ + 7.073107066912505, + 50.8877666088639 + ], + [ + 7.072547169071074, + 50.8877315749235 + ], + [ + 7.072399856594027, + 50.88772196294626 + ], + [ + 7.072264587442253, + 50.88760562351941 + ], + [ + 7.072259644020219, + 50.8876007248279 + ], + [ + 7.072253829902798, + 50.88759511563991 + ], + [ + 7.072255485347484, + 50.88754961323258 + ], + [ + 7.07229928208203, + 50.88742695380941 + ], + [ + 7.07215135265878, + 50.887421391980894 + ], + [ + 7.071328547433351, + 50.88737411573704 + ], + [ + 7.071318108225001, + 50.88746419689018 + ], + [ + 7.071311482049887, + 50.88752223980999 + ], + [ + 7.071300805472945, + 50.887558655164995 + ], + [ + 7.0711928572154195, + 50.88798242100495 + ], + [ + 7.071150195144938, + 50.88812988004352 + ], + [ + 7.070631242729724, + 50.88838679927122 + ], + [ + 7.070607075093681, + 50.88849804132435 + ], + [ + 7.070600123550527, + 50.888523365101165 + ], + [ + 7.070602121395683, + 50.88852370661622 + ], + [ + 7.070780731757242, + 50.888553170240264 + ], + [ + 7.071227828441965, + 50.88862071146655 + ], + [ + 7.071157910421552, + 50.8887943108111 + ], + [ + 7.070991974210369, + 50.88923056534073 + ], + [ + 7.071050569993971, + 50.88923856698154 + ], + [ + 7.071130103113663, + 50.889248534426294 + ], + [ + 7.071301292322496, + 50.88927033424634 + ], + [ + 7.071378092735513, + 50.88927888841456 + ], + [ + 7.071367125927911, + 50.88930263133377 + ], + [ + 7.07103183392363, + 50.89002621581045 + ], + [ + 7.070557160435071, + 50.89088852795715 + ], + [ + 7.070332363038574, + 50.89083485645013 + ], + [ + 7.0698550445790245, + 50.890720843443155 + ], + [ + 7.0698206576595535, + 50.89078938864504 + ], + [ + 7.06980399363019, + 50.89079403708169 + ], + [ + 7.069744367199472, + 50.89090236757419 + ], + [ + 7.06959139597841, + 50.89117965670657 + ], + [ + 7.069764799987759, + 50.89121717050779 + ], + [ + 7.070263300215618, + 50.89132496600347 + ], + [ + 7.0701411159514835, + 50.891506775085425 + ], + [ + 7.070056140998673, + 50.89163151916062 + ], + [ + 7.069755739404302, + 50.891553548962285 + ], + [ + 7.069753595215109, + 50.89155302963576 + ], + [ + 7.069747902973814, + 50.8915527223344 + ], + [ + 7.069680871002068, + 50.891548842634045 + ], + [ + 7.069609571877189, + 50.89154482126038 + ], + [ + 7.06960413709768, + 50.89154334273332 + ], + [ + 7.069454723695236, + 50.89150462019608 + ], + [ + 7.069381324621161, + 50.89162575364545 + ], + [ + 7.069380634799421, + 50.89162692670471 + ], + [ + 7.069310001187358, + 50.891738773988806 + ], + [ + 7.069212649081111, + 50.89192520828132 + ], + [ + 7.069182150632493, + 50.891983650240896 + ], + [ + 7.069104399877318, + 50.892132329390584 + ], + [ + 7.068928075292412, + 50.89247006107851 + ], + [ + 7.068892264528677, + 50.8925386193169 + ], + [ + 7.068855155508052, + 50.89264979881866 + ], + [ + 7.068657160912622, + 50.89274896870442 + ], + [ + 7.06853534680044, + 50.89281696689682 + ], + [ + 7.068438076819044, + 50.89297616176465 + ], + [ + 7.068147195638123, + 50.893500753366666 + ], + [ + 7.067900433002025, + 50.89394727181532 + ], + [ + 7.0676556316983, + 50.894411391415616 + ], + [ + 7.067461950758107, + 50.89479278842584 + ], + [ + 7.0674423846653704, + 50.89483225077202 + ], + [ + 7.067030544780901, + 50.89569361313348 + ], + [ + 7.0669202422405455, + 50.89594848443547 + ], + [ + 7.066910400342224, + 50.8959718570378 + ], + [ + 7.066719448602685, + 50.896398534528934 + ], + [ + 7.0665616721134406, + 50.896784276060615 + ], + [ + 7.066547656432319, + 50.89683654280513 + ], + [ + 7.0665500152248955, + 50.896877513123385 + ], + [ + 7.066565008341606, + 50.89691782935694 + ], + [ + 7.066473211952731, + 50.89713054933468 + ], + [ + 7.066678924946708, + 50.89715042298678 + ], + [ + 7.06672604344829, + 50.89715340788933 + ], + [ + 7.067464797937907, + 50.89723501712285 + ], + [ + 7.067263813387396, + 50.89793776270963 + ], + [ + 7.067627810606686, + 50.89797920018144 + ], + [ + 7.067971284935671, + 50.89801830646109 + ], + [ + 7.068335139817371, + 50.89805974205984 + ], + [ + 7.068836825547482, + 50.89811735347642 + ], + [ + 7.0690434734000185, + 50.898140539981306 + ], + [ + 7.0672914336055594, + 50.89910802612485 + ], + [ + 7.066482393955201, + 50.899553661089705 + ], + [ + 7.066093365561522, + 50.899767210212396 + ], + [ + 7.065832367900119, + 50.89991028009923 + ], + [ + 7.065700799166088, + 50.899981689618706 + ], + [ + 7.06552372790779, + 50.89993422512845 + ], + [ + 7.065160503133404, + 50.899840006361075 + ], + [ + 7.065034590248008, + 50.900022203359974 + ], + [ + 7.064916091400433, + 50.900186712928566 + ], + [ + 7.0647952931095315, + 50.9003501652628 + ], + [ + 7.0646389453343605, + 50.90055682098712 + ], + [ + 7.064309666650091, + 50.900984936505864 + ], + [ + 7.064294321712108, + 50.90101024658978 + ], + [ + 7.064285344055135, + 50.90102794838264 + ], + [ + 7.064283299891019, + 50.90103183213388 + ], + [ + 7.064279683090919, + 50.90104777643413 + ], + [ + 7.064250867402225, + 50.90108705334596 + ], + [ + 7.064146081477588, + 50.90122977300379 + ], + [ + 7.064102511866669, + 50.90128905087112 + ], + [ + 7.0640550844353855, + 50.901353758081065 + ], + [ + 7.06402654114227, + 50.90139249353865 + ], + [ + 7.063980979197126, + 50.90142679878413 + ], + [ + 7.063941466579977, + 50.90146455541522 + ], + [ + 7.063839610798216, + 50.901592415451304 + ], + [ + 7.0637404084005535, + 50.90171198046219 + ], + [ + 7.063637468364086, + 50.90182978176922 + ], + [ + 7.063413805540257, + 50.90205862437116 + ], + [ + 7.063291934638836, + 50.902169226574664 + ], + [ + 7.063219372934066, + 50.90222903839844 + ], + [ + 7.063163598068101, + 50.90227683077778 + ], + [ + 7.062892150501456, + 50.9024801287183 + ], + [ + 7.062594837171028, + 50.90267763821585 + ], + [ + 7.062439279788916, + 50.9027699384633 + ], + [ + 7.0622780821066815, + 50.90285806441934 + ], + [ + 7.062110520396054, + 50.90294139427098 + ], + [ + 7.061939626838252, + 50.9030220567863 + ], + [ + 7.061040137906437, + 50.90342775470009 + ], + [ + 7.061006259040491, + 50.903444602755826 + ], + [ + 7.060801557550229, + 50.90348907429811 + ], + [ + 7.060926003586115, + 50.903616401705484 + ], + [ + 7.061107463134731, + 50.90376883051747 + ], + [ + 7.061300861649979, + 50.903914856881265 + ], + [ + 7.061520660380914, + 50.9040652282659 + ], + [ + 7.062339659280041, + 50.90463210793551 + ], + [ + 7.062296462656882, + 50.90465812093892 + ], + [ + 7.062526272299521, + 50.90481073592154 + ], + [ + 7.062893513696273, + 50.9050610726123 + ], + [ + 7.063153598870941, + 50.90516954231444 + ], + [ + 7.063257643359833, + 50.90511231971791 + ], + [ + 7.06362651318057, + 50.905371449028785 + ], + [ + 7.064200705559526, + 50.90577487170241 + ], + [ + 7.0645606310389315, + 50.90602787691252 + ], + [ + 7.064857134198094, + 50.90623651222029 + ], + [ + 7.064785569871334, + 50.90626548148813 + ], + [ + 7.06458212606504, + 50.90634680521945 + ], + [ + 7.064821637595527, + 50.90648152789459 + ], + [ + 7.0658511107225905, + 50.90704709077203 + ], + [ + 7.066078495656278, + 50.90716726941571 + ], + [ + 7.066160660311033, + 50.907210207756435 + ], + [ + 7.06618957876959, + 50.907225135264156 + ], + [ + 7.066208854933077, + 50.907234937590154 + ], + [ + 7.0663733042130605, + 50.907319822210354 + ], + [ + 7.066420060329921, + 50.907343846401595 + ], + [ + 7.06672104472078, + 50.90749903863281 + ], + [ + 7.066805357402052, + 50.907542585888166 + ], + [ + 7.067067500764253, + 50.90767790625567 + ], + [ + 7.067356265301556, + 50.90782700627356 + ], + [ + 7.067679272408892, + 50.90799368134354 + ], + [ + 7.067727043718664, + 50.90801850425899 + ], + [ + 7.0679559475881755, + 50.908136238249575 + ], + [ + 7.068034804827812, + 50.9081774071982 + ], + [ + 7.0681211482158695, + 50.908222641936284 + ], + [ + 7.0681313640718875, + 50.90822794192694 + ], + [ + 7.068201152583779, + 50.908264249762716 + ], + [ + 7.06844491904698, + 50.908391375348685 + ], + [ + 7.068622176073312, + 50.90848261318123 + ], + [ + 7.06876821126026, + 50.90855777505816 + ], + [ + 7.0688302241716965, + 50.908589748404445 + ], + [ + 7.0690509360119815, + 50.90870341981617 + ], + [ + 7.069182434390053, + 50.90877700690264 + ], + [ + 7.069596202656018, + 50.9089886912191 + ], + [ + 7.069839203229557, + 50.909113123748384 + ], + [ + 7.07006747318537, + 50.909239938343255 + ], + [ + 7.070174340223595, + 50.90929954733321 + ], + [ + 7.070269803040105, + 50.90933921394988 + ], + [ + 7.070784237609244, + 50.90956282458672 + ], + [ + 7.0707859561960325, + 50.909563026571384 + ], + [ + 7.071054975527597, + 50.90959458884422 + ], + [ + 7.071550598120919, + 50.90968604500671 + ], + [ + 7.071873264313883, + 50.909743849430775 + ], + [ + 7.073349383468377, + 50.90989640214909 + ], + [ + 7.074840374297375, + 50.910041723873626 + ], + [ + 7.0753078384863874, + 50.910087281485445 + ], + [ + 7.07554562458606, + 50.910109884050556 + ], + [ + 7.075825108460364, + 50.91013644905384 + ], + [ + 7.076136429726342, + 50.91016441145502 + ], + [ + 7.077181031961334, + 50.91025500264887 + ], + [ + 7.077619420355804, + 50.91029311536373 + ], + [ + 7.078002532726171, + 50.9103265217746 + ], + [ + 7.078046131779115, + 50.910330434268246 + ], + [ + 7.078129620295465, + 50.910337663001016 + ], + [ + 7.078587100964639, + 50.91037739322242 + ], + [ + 7.078932045363689, + 50.91039013124355 + ], + [ + 7.079079630365804, + 50.91039558124242 + ], + [ + 7.079891478104151, + 50.910424566183586 + ], + [ + 7.080491550468044, + 50.910438697560274 + ], + [ + 7.080575555842298, + 50.91041059151797 + ], + [ + 7.080611480219076, + 50.91039857226637 + ], + [ + 7.080611645823777, + 50.910397313177945 + ], + [ + 7.080623827478498, + 50.910304983037385 + ], + [ + 7.080625752349393, + 50.91029038738781 + ], + [ + 7.080629233745969, + 50.91029034211013 + ], + [ + 7.080630526092356, + 50.91029032558879 + ], + [ + 7.080639935537227, + 50.91029020331762 + ], + [ + 7.0807235471904715, + 50.91028912116764 + ], + [ + 7.080727522059412, + 50.910286762735595 + ], + [ + 7.080833790941975, + 50.910223735942296 + ], + [ + 7.080931154470821, + 50.91022012140487 + ], + [ + 7.081130705520851, + 50.910212714175486 + ], + [ + 7.08126649783244, + 50.910176127189295 + ], + [ + 7.081745026272633, + 50.910166927310684 + ], + [ + 7.08175813441429, + 50.910511459916414 + ], + [ + 7.081764320077475, + 50.91055742928096 + ], + [ + 7.081730248567082, + 50.9108908032831 + ], + [ + 7.081692957801024, + 50.9110915235284 + ], + [ + 7.081733455940656, + 50.91146438931231 + ], + [ + 7.081779141683496, + 50.91164402416482 + ], + [ + 7.081809157100958, + 50.911865335328606 + ], + [ + 7.08185567950628, + 50.91217908393136 + ], + [ + 7.081891429127648, + 50.91242065847912 + ], + [ + 7.081877221849341, + 50.91271546396772 + ], + [ + 7.081876475871624, + 50.91272616765973 + ], + [ + 7.081852957180389, + 50.913108196255656 + ], + [ + 7.08184177290032, + 50.913289857141294 + ], + [ + 7.081818406771133, + 50.913533058425 + ], + [ + 7.082005144449445, + 50.91356293722879 + ], + [ + 7.0827785300399, + 50.91368667988015 + ], + [ + 7.083441702984106, + 50.91380152163062 + ], + [ + 7.084009250949031, + 50.913901065605806 + ], + [ + 7.085058201720365, + 50.91407649692725 + ], + [ + 7.085112472412713, + 50.9142455327338 + ], + [ + 7.085113703862751, + 50.91424956680645 + ], + [ + 7.085139934646769, + 50.91425237955653 + ], + [ + 7.085292852534193, + 50.9142852965968 + ], + [ + 7.085444138665894, + 50.91430303595307 + ], + [ + 7.085941975996969, + 50.914296875719344 + ], + [ + 7.086338761972795, + 50.91432347538199 + ], + [ + 7.086710896266206, + 50.91433565119323 + ], + [ + 7.0869328706306725, + 50.91433574157419 + ], + [ + 7.087033677816069, + 50.91435349960402 + ], + [ + 7.087167316394279, + 50.91436448015222 + ], + [ + 7.087298110361897, + 50.91438762282107 + ], + [ + 7.087422244806612, + 50.91440570341443 + ], + [ + 7.087755069440286, + 50.914476133910654 + ], + [ + 7.087934264027161, + 50.914544131413834 + ], + [ + 7.088426616385952, + 50.914863428418485 + ], + [ + 7.088436352881807, + 50.914959217400394 + ], + [ + 7.088453197439152, + 50.91512495221617 + ], + [ + 7.088723935440294, + 50.91508781708436 + ], + [ + 7.088761639356223, + 50.91508261107352 + ], + [ + 7.088799915954022, + 50.91511037257075 + ], + [ + 7.088808505521897, + 50.91511660281833 + ], + [ + 7.088822403367528, + 50.915114945309035 + ], + [ + 7.088916560453441, + 50.91510363864115 + ], + [ + 7.089383384759767, + 50.915047861345826 + ], + [ + 7.089688145571482, + 50.91500317401625 + ], + [ + 7.089750712416294, + 50.91499400008621 + ], + [ + 7.090130256713908, + 50.9149396639457 + ], + [ + 7.0903953351028575, + 50.914891700216366 + ], + [ + 7.090394971679239, + 50.9148899782818 + ], + [ + 7.090389897537297, + 50.91486595146691 + ], + [ + 7.090394103167928, + 50.91486539071668 + ], + [ + 7.091124491727228, + 50.91476801996607 + ], + [ + 7.091119694584396, + 50.914781818717714 + ], + [ + 7.091115027668091, + 50.9147950772817 + ], + [ + 7.091428612898231, + 50.91478432338216 + ], + [ + 7.091491546310532, + 50.91477636236295 + ], + [ + 7.091906697223879, + 50.91472384557965 + ], + [ + 7.092570178135583, + 50.91463780754379 + ], + [ + 7.092612095009074, + 50.91462429065465 + ], + [ + 7.092728112128082, + 50.9145870667883 + ], + [ + 7.093578202075806, + 50.91447899514745 + ], + [ + 7.093586147674802, + 50.91447798542759 + ], + [ + 7.093597913831248, + 50.914476436432786 + ], + [ + 7.093901161234223, + 50.914437848885676 + ], + [ + 7.094402493883281, + 50.914374053143014 + ], + [ + 7.095172480566219, + 50.91427621447204 + ], + [ + 7.0952752717829, + 50.914263293428164 + ], + [ + 7.095376356514724, + 50.91425038851704 + ], + [ + 7.095454048030485, + 50.91424048972127 + ], + [ + 7.095485665615834, + 50.91423650699813 + ], + [ + 7.098430921621456, + 50.91386362053676 + ], + [ + 7.098497861974008, + 50.91385442774325 + ], + [ + 7.098501192542483, + 50.91385397026289 + ], + [ + 7.098519938018141, + 50.91385154517159 + ], + [ + 7.09866857430554, + 50.9138291107369 + ], + [ + 7.098810857769508, + 50.91382669142052 + ], + [ + 7.098762961307176, + 50.91396209482711 + ], + [ + 7.098758597463163, + 50.913974430478596 + ], + [ + 7.098665566365863, + 50.91452833737561 + ], + [ + 7.098662155437001, + 50.91457673237178 + ], + [ + 7.098661375914849, + 50.914585909379035 + ], + [ + 7.098660736724537, + 50.914594994238975 + ], + [ + 7.098638702056976, + 50.91485481691837 + ], + [ + 7.098627458903841, + 50.91490876920929 + ], + [ + 7.098618287177038, + 50.91505664168285 + ], + [ + 7.098606951132283, + 50.91525757286771 + ], + [ + 7.098590261429578, + 50.9155571679305 + ], + [ + 7.098585501216019, + 50.91620625057536 + ], + [ + 7.0985949433978055, + 50.916226747105235 + ], + [ + 7.098599436377409, + 50.91623641381248 + ], + [ + 7.098585936347705, + 50.91652880741914 + ], + [ + 7.0985856678711405, + 50.91653462552901 + ], + [ + 7.098574671966685, + 50.916772776096174 + ], + [ + 7.098572943058523, + 50.916795572893584 + ], + [ + 7.098572460396093, + 50.916801933428125 + ], + [ + 7.098509563012986, + 50.917631294328714 + ], + [ + 7.098460416298026, + 50.91827931283256 + ], + [ + 7.098393676277107, + 50.91861627396802 + ], + [ + 7.098381518385376, + 50.91867765894048 + ], + [ + 7.098235060465239, + 50.919417069023034 + ], + [ + 7.098073624804934, + 50.92001350850117 + ], + [ + 7.098358090502325, + 50.919985979246654 + ], + [ + 7.099033671648384, + 50.91992059779898 + ], + [ + 7.099066063849849, + 50.91992035276786 + ], + [ + 7.0997568547379135, + 50.919915132234735 + ], + [ + 7.099879222984473, + 50.91994141606188 + ], + [ + 7.0999957984667486, + 50.91996645608254 + ], + [ + 7.101354510635362, + 50.920258289765826 + ], + [ + 7.102515014895777, + 50.92030683935682 + ], + [ + 7.103530316549111, + 50.92025320436116 + ], + [ + 7.103928594053837, + 50.92023216478604 + ], + [ + 7.104666170291031, + 50.92014967246611 + ], + [ + 7.105419437377991, + 50.920135346462246 + ], + [ + 7.109707071076077, + 50.92098109199395 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Eil", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "705", + "Population_rel": 0.008521745524061616, + "Population_abs": 9272 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.91383407523268, + 51.02372733976206 + ], + [ + 6.914540988046387, + 51.02299368422525 + ], + [ + 6.914841038347675, + 51.022640217251656 + ], + [ + 6.914927535972962, + 51.02253805130658 + ], + [ + 6.915336785525795, + 51.02205590142715 + ], + [ + 6.915664649078826, + 51.0216679657175 + ], + [ + 6.916327415144976, + 51.02088853061563 + ], + [ + 6.9163719870375155, + 51.02083604340761 + ], + [ + 6.916459592441488, + 51.02073252006524 + ], + [ + 6.917181715490627, + 51.019871261953014 + ], + [ + 6.91776138252113, + 51.019180473708204 + ], + [ + 6.918450113221987, + 51.0183627078031 + ], + [ + 6.918459997946309, + 51.01835085397629 + ], + [ + 6.918489799953134, + 51.0183156521755 + ], + [ + 6.918597433820391, + 51.01818760847361 + ], + [ + 6.918632726156708, + 51.01814894746154 + ], + [ + 6.918685185374702, + 51.018091992451915 + ], + [ + 6.918689788461109, + 51.018086921979666 + ], + [ + 6.919060991703821, + 51.017695399744404 + ], + [ + 6.919326733644565, + 51.01746255519392 + ], + [ + 6.920183598280295, + 51.016883465859955 + ], + [ + 6.9205843695091165, + 51.01659004613961 + ], + [ + 6.92079473535197, + 51.01639691884066 + ], + [ + 6.92108230849131, + 51.01612308701937 + ], + [ + 6.92141596846503, + 51.01580924953162 + ], + [ + 6.921988873345298, + 51.0152716692062 + ], + [ + 6.922159557273889, + 51.01511175235696 + ], + [ + 6.922284784753018, + 51.01499444918079 + ], + [ + 6.922417960894913, + 51.014869700167715 + ], + [ + 6.919829993817322, + 51.01339000166997 + ], + [ + 6.919691471275822, + 51.013310190434126 + ], + [ + 6.919526429478788, + 51.01321521633673 + ], + [ + 6.919137401952672, + 51.01298447050584 + ], + [ + 6.918988324900666, + 51.0128752570042 + ], + [ + 6.918943209568526, + 51.012842082109465 + ], + [ + 6.918626103834004, + 51.01260906074536 + ], + [ + 6.91775348839801, + 51.012135001545815 + ], + [ + 6.9174247869582315, + 51.0119564527906 + ], + [ + 6.916815130298389, + 51.011541806042054 + ], + [ + 6.916757503652105, + 51.01150270601206 + ], + [ + 6.916602963306912, + 51.01139766754455 + ], + [ + 6.916567432839262, + 51.01137349630442 + ], + [ + 6.91647253974978, + 51.011308889822736 + ], + [ + 6.915759049260095, + 51.010823228798785 + ], + [ + 6.9155309917611225, + 51.010667796418915 + ], + [ + 6.9134706886042325, + 51.009239012026754 + ], + [ + 6.913026479188833, + 51.0089305618967 + ], + [ + 6.912956588273078, + 51.00886153181918 + ], + [ + 6.912932175386149, + 51.00883736203813 + ], + [ + 6.9116471612473855, + 51.00796196800453 + ], + [ + 6.91136054863749, + 51.00778361287701 + ], + [ + 6.911268564305653, + 51.0079703082412 + ], + [ + 6.911216939888379, + 51.008075083777705 + ], + [ + 6.910734438766405, + 51.009083389717944 + ], + [ + 6.910368450854191, + 51.00960303107912 + ], + [ + 6.909581273861728, + 51.01032767160269 + ], + [ + 6.9085446454916974, + 51.01128230226965 + ], + [ + 6.907824958012066, + 51.01194141244739 + ], + [ + 6.906152475005907, + 51.013410020682514 + ], + [ + 6.904964007035571, + 51.01436067293456 + ], + [ + 6.903964387534469, + 51.015168721581304 + ], + [ + 6.903112250957092, + 51.015845817655986 + ], + [ + 6.901711377514391, + 51.016850935549684 + ], + [ + 6.901443241031226, + 51.01701606918614 + ], + [ + 6.901439577750476, + 51.01701825449885 + ], + [ + 6.901105357780501, + 51.01720780878296 + ], + [ + 6.900648857283896, + 51.017448644680805 + ], + [ + 6.899802222243, + 51.017774197003085 + ], + [ + 6.899552622651311, + 51.01787428154234 + ], + [ + 6.898672097611271, + 51.01822426743473 + ], + [ + 6.897447120612249, + 51.018644586198086 + ], + [ + 6.897655767036074, + 51.01878312903459 + ], + [ + 6.897657110057698, + 51.01878436196485 + ], + [ + 6.898035194255312, + 51.019131050277224 + ], + [ + 6.898536436324303, + 51.01958833835872 + ], + [ + 6.898871709169084, + 51.02024007807371 + ], + [ + 6.898925874605675, + 51.020365689261986 + ], + [ + 6.898955394361035, + 51.02038874414258 + ], + [ + 6.899171341113915, + 51.02059625884351 + ], + [ + 6.899232409792897, + 51.02065143196495 + ], + [ + 6.899288509766066, + 51.02068542810524 + ], + [ + 6.89940349357381, + 51.0207500734372 + ], + [ + 6.900029071251881, + 51.021259972688576 + ], + [ + 6.900065293224917, + 51.02129052622333 + ], + [ + 6.900102704256352, + 51.02132323083656 + ], + [ + 6.901221676241861, + 51.02223518273812 + ], + [ + 6.901395307980016, + 51.02238377583948 + ], + [ + 6.901404433075314, + 51.0223912561759 + ], + [ + 6.901611176248364, + 51.02256422952233 + ], + [ + 6.90175338872463, + 51.02265805698156 + ], + [ + 6.90175901982314, + 51.022661787999795 + ], + [ + 6.901828029133918, + 51.02270719037178 + ], + [ + 6.9019119724933065, + 51.022758230197695 + ], + [ + 6.90203510140257, + 51.02281615785645 + ], + [ + 6.902094222441027, + 51.02284401739212 + ], + [ + 6.902103859756306, + 51.02284852725269 + ], + [ + 6.902034700874786, + 51.0228835792716 + ], + [ + 6.901948433629665, + 51.02294042782054 + ], + [ + 6.9020991141487045, + 51.02307392354192 + ], + [ + 6.902661272388887, + 51.02352236171836 + ], + [ + 6.9030221821732365, + 51.02334742918131 + ], + [ + 6.903213143773505, + 51.02325057729072 + ], + [ + 6.903589919438826, + 51.02345189574976 + ], + [ + 6.903615860741243, + 51.02346661726722 + ], + [ + 6.9036405358990285, + 51.02348215696771 + ], + [ + 6.9036639448716235, + 51.02349851575067 + ], + [ + 6.903679457747207, + 51.02351196995066 + ], + [ + 6.903710606291738, + 51.02354589204889 + ], + [ + 6.903710651164002, + 51.02354594052086 + ], + [ + 6.903710863187896, + 51.023546171866954 + ], + [ + 6.903718628303361, + 51.023554634906866 + ], + [ + 6.903880700335381, + 51.02379707572243 + ], + [ + 6.903898725530168, + 51.02382966503534 + ], + [ + 6.9039145302342115, + 51.023858306730006 + ], + [ + 6.903926809611651, + 51.023903420107516 + ], + [ + 6.90393525643527, + 51.023934547835395 + ], + [ + 6.9039545889051475, + 51.02400514285445 + ], + [ + 6.904064568972828, + 51.024265965319195 + ], + [ + 6.9041937164042215, + 51.02467666825179 + ], + [ + 6.9046573480050375, + 51.024741438508244 + ], + [ + 6.904658440378851, + 51.02474159660659 + ], + [ + 6.904658671344307, + 51.02474162952955 + ], + [ + 6.904668207325593, + 51.02474296167529 + ], + [ + 6.904669209193436, + 51.02474310286073 + ], + [ + 6.904670087545236, + 51.0247432634154 + ], + [ + 6.905603348164282, + 51.024914787728406 + ], + [ + 6.905603471201326, + 51.02491481062003 + ], + [ + 6.905605472567404, + 51.02491517747312 + ], + [ + 6.9060044527615005, + 51.02504790879811 + ], + [ + 6.9062070244550124, + 51.02511510398828 + ], + [ + 6.906213918806864, + 51.02511774760586 + ], + [ + 6.906481005296235, + 51.02522597142588 + ], + [ + 6.908753763664688, + 51.026144526972566 + ], + [ + 6.908834220427953, + 51.02617698124785 + ], + [ + 6.908866562148322, + 51.02619056872695 + ], + [ + 6.910438025902732, + 51.026850720154854 + ], + [ + 6.9104568885432105, + 51.02683276258281 + ], + [ + 6.911235757296038, + 51.02609120707257 + ], + [ + 6.911363294860316, + 51.02597317341028 + ], + [ + 6.911499669873645, + 51.02585516001523 + ], + [ + 6.9121299514642915, + 51.02530945090853 + ], + [ + 6.912180266956359, + 51.02526590965161 + ], + [ + 6.912185311076389, + 51.02526146608223 + ], + [ + 6.912289167214849, + 51.0251716620878 + ], + [ + 6.912461697332219, + 51.02502235262981 + ], + [ + 6.912848372474374, + 51.024687360425474 + ], + [ + 6.912864211348034, + 51.0246737535572 + ], + [ + 6.912894709551492, + 51.024644479866055 + ], + [ + 6.9128979285237895, + 51.02464148851576 + ], + [ + 6.913518228411535, + 51.02404649883837 + ], + [ + 6.913580330478976, + 51.02398695007492 + ], + [ + 6.9135804183823515, + 51.02398686620484 + ], + [ + 6.913626785273228, + 51.02394227438954 + ], + [ + 6.9136293006343035, + 51.02393973812446 + ], + [ + 6.91383407523268, + 51.02372733976206 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Seeberg", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "603", + "Population_rel": 0.010228484246902687, + "Population_abs": 11129 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.129095871164857, + 50.88739671820841 + ], + [ + 7.129259390456667, + 50.88727758986569 + ], + [ + 7.129347292197464, + 50.88721012646211 + ], + [ + 7.129533695112552, + 50.887066917115206 + ], + [ + 7.129647326497403, + 50.88697628183396 + ], + [ + 7.129834204764429, + 50.88682676608835 + ], + [ + 7.130105608195308, + 50.88660877144947 + ], + [ + 7.130111126454346, + 50.88660447006913 + ], + [ + 7.1301136769593105, + 50.886602487365096 + ], + [ + 7.130290569295503, + 50.88646782398849 + ], + [ + 7.130315226786448, + 50.8864492397404 + ], + [ + 7.130446862372037, + 50.88637653408182 + ], + [ + 7.130709623850223, + 50.88617755068186 + ], + [ + 7.131070769200011, + 50.88590426203475 + ], + [ + 7.131480942196992, + 50.88559390392689 + ], + [ + 7.131877267894193, + 50.88529394422238 + ], + [ + 7.131909280187069, + 50.88527205889111 + ], + [ + 7.131997903190969, + 50.885212068885814 + ], + [ + 7.132442908866511, + 50.884910013023934 + ], + [ + 7.133023535745944, + 50.88451629813763 + ], + [ + 7.133443373845536, + 50.88423147689629 + ], + [ + 7.133643427942414, + 50.88409576515125 + ], + [ + 7.134701702663173, + 50.883305894947995 + ], + [ + 7.135664510011123, + 50.88258669200791 + ], + [ + 7.137556343554339, + 50.88128206332056 + ], + [ + 7.137587081639698, + 50.88126033598338 + ], + [ + 7.1376193081946795, + 50.881238072988296 + ], + [ + 7.1376487562626565, + 50.88121760664214 + ], + [ + 7.137670013201057, + 50.88120297685314 + ], + [ + 7.137675793082578, + 50.881198925719765 + ], + [ + 7.137888637573275, + 50.88105191250647 + ], + [ + 7.138117492004214, + 50.88089364517823 + ], + [ + 7.1385347211423165, + 50.880606142519795 + ], + [ + 7.138598027520914, + 50.88056244850997 + ], + [ + 7.138633225603684, + 50.88053815510364 + ], + [ + 7.139038984706731, + 50.88025810151215 + ], + [ + 7.139170948999431, + 50.88016515293995 + ], + [ + 7.139179137860418, + 50.880161361390655 + ], + [ + 7.1391993132558715, + 50.88014744886041 + ], + [ + 7.139263335102566, + 50.88010332071631 + ], + [ + 7.140293846832714, + 50.87939186336814 + ], + [ + 7.140435368476034, + 50.87929764559444 + ], + [ + 7.140708194281988, + 50.87911593047954 + ], + [ + 7.141268679014482, + 50.87874253852328 + ], + [ + 7.141538974896585, + 50.878581475572204 + ], + [ + 7.141927262252756, + 50.878350201322945 + ], + [ + 7.1420315197421775, + 50.87828800644126 + ], + [ + 7.142682585546238, + 50.87796309571818 + ], + [ + 7.1430497980691925, + 50.877779795309735 + ], + [ + 7.143591506498257, + 50.87756319814794 + ], + [ + 7.143634266497714, + 50.877546093453155 + ], + [ + 7.144238912613012, + 50.87730428523012 + ], + [ + 7.1449025621631925, + 50.87708320693166 + ], + [ + 7.145489671050693, + 50.87688726707347 + ], + [ + 7.145976936075142, + 50.87673436085638 + ], + [ + 7.146339349892893, + 50.87662068548645 + ], + [ + 7.1474803965878895, + 50.8762446491915 + ], + [ + 7.14760757683799, + 50.876203048079546 + ], + [ + 7.148786265841528, + 50.87567609059073 + ], + [ + 7.14888862589872, + 50.87561282256627 + ], + [ + 7.14893968802483, + 50.87558100452907 + ], + [ + 7.1493733547552285, + 50.87531258569616 + ], + [ + 7.1494746382696865, + 50.87524972009235 + ], + [ + 7.149480737526704, + 50.87524552774746 + ], + [ + 7.149498873496147, + 50.875232872598346 + ], + [ + 7.149983322235511, + 50.874893170956916 + ], + [ + 7.150247031191684, + 50.87470926653222 + ], + [ + 7.150336221490833, + 50.874645716534644 + ], + [ + 7.1503517016146745, + 50.87463450040946 + ], + [ + 7.150376498555307, + 50.87461648167239 + ], + [ + 7.15055222239627, + 50.87448828255273 + ], + [ + 7.151434909821244, + 50.87397486296471 + ], + [ + 7.152103920980901, + 50.8736832477273 + ], + [ + 7.152131088202634, + 50.873678007452895 + ], + [ + 7.15217649246506, + 50.87366930921278 + ], + [ + 7.1528221802459235, + 50.873546084483 + ], + [ + 7.152889287350615, + 50.873533585247536 + ], + [ + 7.152893448351504, + 50.87353306832522 + ], + [ + 7.152897714180443, + 50.873532776104476 + ], + [ + 7.152903299425816, + 50.87353240314074 + ], + [ + 7.1529519391988305, + 50.873529547722256 + ], + [ + 7.153434259143749, + 50.87350061941202 + ], + [ + 7.154904345991672, + 50.87367902758828 + ], + [ + 7.156238199454873, + 50.87398860169075 + ], + [ + 7.156263678988762, + 50.873994386073036 + ], + [ + 7.156972408677496, + 50.87413568227488 + ], + [ + 7.157400596261439, + 50.87415986057139 + ], + [ + 7.157817840127047, + 50.87414732337453 + ], + [ + 7.158283055983932, + 50.87406014008042 + ], + [ + 7.15829186472722, + 50.874056782382354 + ], + [ + 7.15830399161321, + 50.87405200479491 + ], + [ + 7.158312345903096, + 50.87404881709738 + ], + [ + 7.158812881532982, + 50.8738537789342 + ], + [ + 7.158870082873763, + 50.87382310571021 + ], + [ + 7.158986444178628, + 50.87376428041827 + ], + [ + 7.159200295253316, + 50.87365182420268 + ], + [ + 7.159254572961821, + 50.87362365796451 + ], + [ + 7.159277645836887, + 50.87361033271559 + ], + [ + 7.159295720008709, + 50.8735975743539 + ], + [ + 7.159452440620682, + 50.87349460142116 + ], + [ + 7.1597038873597745, + 50.87332934295862 + ], + [ + 7.159997134724266, + 50.87298940134634 + ], + [ + 7.160470497244951, + 50.87235830913196 + ], + [ + 7.160510142251507, + 50.87230563780997 + ], + [ + 7.160531469694786, + 50.87227726902277 + ], + [ + 7.160534993062428, + 50.87227258132032 + ], + [ + 7.16054648112343, + 50.87225729695698 + ], + [ + 7.160664549790588, + 50.872100111921185 + ], + [ + 7.161140840323085, + 50.871465229161124 + ], + [ + 7.161203491440926, + 50.87138293536086 + ], + [ + 7.161755442516904, + 50.870655682435206 + ], + [ + 7.1617890493256136, + 50.8706052592985 + ], + [ + 7.161920981954466, + 50.870407454881324 + ], + [ + 7.162007265211511, + 50.870146464156356 + ], + [ + 7.162027995259818, + 50.8698687972897 + ], + [ + 7.161968767447062, + 50.86960497396516 + ], + [ + 7.161910450411391, + 50.869468235188975 + ], + [ + 7.161876068183717, + 50.869387706840136 + ], + [ + 7.161862772603469, + 50.86935662492771 + ], + [ + 7.161792772276879, + 50.869259433244764 + ], + [ + 7.161722722311457, + 50.86916181263747 + ], + [ + 7.161699544776579, + 50.86913022517019 + ], + [ + 7.161695658504036, + 50.86912510861902 + ], + [ + 7.161686220740413, + 50.86911164754558 + ], + [ + 7.161683671140195, + 50.86910835617687 + ], + [ + 7.161649159415071, + 50.86907426617783 + ], + [ + 7.161603037709915, + 50.86902933129027 + ], + [ + 7.161598331065476, + 50.86902458404039 + ], + [ + 7.161593493009345, + 50.86901988958109 + ], + [ + 7.161534178572046, + 50.8689607751883 + ], + [ + 7.1608171261926, + 50.868314609571314 + ], + [ + 7.160494149189488, + 50.86801865045117 + ], + [ + 7.160106211971356, + 50.86766291603473 + ], + [ + 7.16005901743863, + 50.867619166944664 + ], + [ + 7.1600565261088756, + 50.867616854965995 + ], + [ + 7.160054040212989, + 50.86761454936847 + ], + [ + 7.1600107393641075, + 50.867574460013174 + ], + [ + 7.159906818092204, + 50.867478096569535 + ], + [ + 7.1598907446350335, + 50.86746288845911 + ], + [ + 7.159888374461962, + 50.867460459671214 + ], + [ + 7.1598089528997235, + 50.867372137885546 + ], + [ + 7.159803610444918, + 50.86736604137917 + ], + [ + 7.159782659351398, + 50.867342787959224 + ], + [ + 7.159716171377491, + 50.86726943854638 + ], + [ + 7.159713946151194, + 50.86726628895169 + ], + [ + 7.159711976045585, + 50.8672630849219 + ], + [ + 7.159612788866511, + 50.86706149646338 + ], + [ + 7.159602321022331, + 50.86703138251826 + ], + [ + 7.159537366352716, + 50.867003627985476 + ], + [ + 7.159346051547815, + 50.866921879823366 + ], + [ + 7.1588085488285405, + 50.866693020190716 + ], + [ + 7.158689600191578, + 50.866642742982094 + ], + [ + 7.158659329570799, + 50.86662984506849 + ], + [ + 7.1586306313215715, + 50.866617655477576 + ], + [ + 7.158570229855632, + 50.86659228182055 + ], + [ + 7.155941325073842, + 50.86548071767926 + ], + [ + 7.155829200151117, + 50.86543327762509 + ], + [ + 7.155036701208108, + 50.86509804546337 + ], + [ + 7.1530991507922, + 50.864278914683425 + ], + [ + 7.15222513281828, + 50.86390939124025 + ], + [ + 7.148809689840092, + 50.86246527239022 + ], + [ + 7.1483119007175615, + 50.86225478321759 + ], + [ + 7.144081257367756, + 50.8604656933401 + ], + [ + 7.143957836551435, + 50.86042032663595 + ], + [ + 7.138928267113965, + 50.85857305076011 + ], + [ + 7.1383084431518995, + 50.85834538135288 + ], + [ + 7.138144170274799, + 50.8582850206452 + ], + [ + 7.1379389297452835, + 50.85820623977688 + ], + [ + 7.137823921420335, + 50.858162903821736 + ], + [ + 7.137820380702415, + 50.85816136335328 + ], + [ + 7.137816922085172, + 50.85815975944058 + ], + [ + 7.134904431183431, + 50.8566642389844 + ], + [ + 7.134804760834824, + 50.85661306976039 + ], + [ + 7.134699775889475, + 50.856559139861936 + ], + [ + 7.131685138665203, + 50.85501049831057 + ], + [ + 7.13157432537398, + 50.85495358344095 + ], + [ + 7.1309819033864095, + 50.85464920861036 + ], + [ + 7.130877631724957, + 50.85459563828692 + ], + [ + 7.1307758716760965, + 50.85454336362723 + ], + [ + 7.1304792157242325, + 50.85439087825217 + ], + [ + 7.1304056513446845, + 50.854353101411775 + ], + [ + 7.129884005501406, + 50.85408513009013 + ], + [ + 7.12984680563641, + 50.85406602118935 + ], + [ + 7.129800717098166, + 50.85404233230558 + ], + [ + 7.129758434151922, + 50.854020617365876 + ], + [ + 7.129734603378804, + 50.85400838526365 + ], + [ + 7.129693862053298, + 50.85398745228168 + ], + [ + 7.1296085984588125, + 50.85394363968308 + ], + [ + 7.129604843791184, + 50.85394167282746 + ], + [ + 7.129189373994554, + 50.85372823659522 + ], + [ + 7.127404866910058, + 50.852811192094364 + ], + [ + 7.127248103334277, + 50.85273065014425 + ], + [ + 7.12698208296138, + 50.852593925053085 + ], + [ + 7.126550390054015, + 50.8523720579141 + ], + [ + 7.126494741742271, + 50.85234347361141 + ], + [ + 7.126450542889315, + 50.852320788641 + ], + [ + 7.126194191674011, + 50.85218901333215 + ], + [ + 7.125560089763805, + 50.85186306574606 + ], + [ + 7.124706309280494, + 50.85142417811561 + ], + [ + 7.124638545436694, + 50.85138936699151 + ], + [ + 7.12441367470028, + 50.8512737841315 + ], + [ + 7.122988290386968, + 50.85053913025872 + ], + [ + 7.122889128904537, + 50.85048799572231 + ], + [ + 7.12220417369429, + 50.85013500727569 + ], + [ + 7.1220109570858945, + 50.85003564837591 + ], + [ + 7.121968109419118, + 50.850013598594565 + ], + [ + 7.121862597922173, + 50.84995946497654 + ], + [ + 7.119642951265372, + 50.848821356743336 + ], + [ + 7.119639079556503, + 50.84881938857376 + ], + [ + 7.119581260903103, + 50.84891290684272 + ], + [ + 7.119523437816635, + 50.84897692833272 + ], + [ + 7.119497988732442, + 50.84900530970342 + ], + [ + 7.119454704724212, + 50.84904788616451 + ], + [ + 7.119425574958166, + 50.84907675320965 + ], + [ + 7.119149421096461, + 50.84935709010372 + ], + [ + 7.119090432354914, + 50.84941986404753 + ], + [ + 7.119049790546093, + 50.84946016797578 + ], + [ + 7.119002626368874, + 50.84950682691487 + ], + [ + 7.118842730721543, + 50.84969066871078 + ], + [ + 7.118833183678578, + 50.84970154466113 + ], + [ + 7.118828423140849, + 50.84970694237364 + ], + [ + 7.1188238310937395, + 50.84971238957008 + ], + [ + 7.118685779342437, + 50.84990270988439 + ], + [ + 7.118634949667417, + 50.849944549196294 + ], + [ + 7.11852678410393, + 50.85003530251033 + ], + [ + 7.118480463389481, + 50.85007566035721 + ], + [ + 7.11853330975678, + 50.850088637932046 + ], + [ + 7.1185888774854496, + 50.85010212794058 + ], + [ + 7.118536724739516, + 50.85015989172499 + ], + [ + 7.118501597420805, + 50.850163644911284 + ], + [ + 7.118484740561538, + 50.850165415531215 + ], + [ + 7.118476951191091, + 50.85016621896097 + ], + [ + 7.118469159378699, + 50.85016701245774 + ], + [ + 7.118434995071054, + 50.850175430903846 + ], + [ + 7.117709253221868, + 50.85106201524675 + ], + [ + 7.117579341366895, + 50.85120556517793 + ], + [ + 7.116207431533945, + 50.851218434133784 + ], + [ + 7.1162099640765515, + 50.851318553463805 + ], + [ + 7.11622910338417, + 50.8520902127145 + ], + [ + 7.115789105308947, + 50.85212975254029 + ], + [ + 7.1157889701559185, + 50.85219546651155 + ], + [ + 7.115768553186906, + 50.85223845229018 + ], + [ + 7.115721207253218, + 50.85227180707858 + ], + [ + 7.115667897206361, + 50.852299196224905 + ], + [ + 7.115579646634742, + 50.852308490455805 + ], + [ + 7.115502434018003, + 50.85230428437435 + ], + [ + 7.115426860268183, + 50.85227947763567 + ], + [ + 7.1153700439973, + 50.85223732009248 + ], + [ + 7.115335563183188, + 50.85217261904097 + ], + [ + 7.115324656303934, + 50.852189280879855 + ], + [ + 7.115216987680351, + 50.85236309521719 + ], + [ + 7.1152145598274394, + 50.852369044908386 + ], + [ + 7.115211481394287, + 50.85237633044815 + ], + [ + 7.115179632710581, + 50.852428820372424 + ], + [ + 7.115068884007737, + 50.85257356660095 + ], + [ + 7.115063180124101, + 50.85257926190165 + ], + [ + 7.11505806179583, + 50.85258396566231 + ], + [ + 7.115001973904805, + 50.85263438659333 + ], + [ + 7.114997933330068, + 50.85263727304707 + ], + [ + 7.114993658531946, + 50.852640048691185 + ], + [ + 7.114918276390535, + 50.852688423859526 + ], + [ + 7.11488431890184, + 50.8527114881794 + ], + [ + 7.114726230303224, + 50.85281745814521 + ], + [ + 7.114340557414411, + 50.85306898518418 + ], + [ + 7.114226430042145, + 50.85315449019226 + ], + [ + 7.114159379984753, + 50.85321922420574 + ], + [ + 7.114132306282463, + 50.853245192125115 + ], + [ + 7.114092518618422, + 50.85329780165481 + ], + [ + 7.114054531658737, + 50.853348634341614 + ], + [ + 7.11405229834973, + 50.8533530672162 + ], + [ + 7.114050504674936, + 50.85335762591432 + ], + [ + 7.114024008163632, + 50.85342436444092 + ], + [ + 7.114023675991255, + 50.853427280229006 + ], + [ + 7.114023674257079, + 50.85343024632723 + ], + [ + 7.11402362435187, + 50.8534698007654 + ], + [ + 7.114025981046106, + 50.853521018478745 + ], + [ + 7.1140406845466195, + 50.853607807146076 + ], + [ + 7.114041663042775, + 50.85361345302689 + ], + [ + 7.114042730756896, + 50.853619000519714 + ], + [ + 7.114075764093327, + 50.85372685285791 + ], + [ + 7.114095011184917, + 50.85378829153616 + ], + [ + 7.114095982692923, + 50.85379411088202 + ], + [ + 7.114096685864029, + 50.853800277544465 + ], + [ + 7.114101769235075, + 50.85384670430887 + ], + [ + 7.114155675413364, + 50.85385014515634 + ], + [ + 7.114214425017704, + 50.85385425874925 + ], + [ + 7.114240114236731, + 50.85391316367174 + ], + [ + 7.114259506862337, + 50.853946240305774 + ], + [ + 7.114307502854102, + 50.854029384055636 + ], + [ + 7.114434662142327, + 50.85431160947635 + ], + [ + 7.114517214844166, + 50.854486026668496 + ], + [ + 7.1147692293544775, + 50.85501912440071 + ], + [ + 7.114866542465924, + 50.855222796219586 + ], + [ + 7.114901375506638, + 50.855295817745365 + ], + [ + 7.115167751960478, + 50.855865005361906 + ], + [ + 7.11502534868402, + 50.85588470606625 + ], + [ + 7.11497589366346, + 50.85593695823605 + ], + [ + 7.11440582887186, + 50.856008840117475 + ], + [ + 7.114143239506572, + 50.856039036502736 + ], + [ + 7.114108089969743, + 50.85611946928533 + ], + [ + 7.114248929738575, + 50.85613538289298 + ], + [ + 7.114394112715131, + 50.85615476164768 + ], + [ + 7.1145737429941915, + 50.856195296082255 + ], + [ + 7.115635736369124, + 50.85644305167871 + ], + [ + 7.115991585152095, + 50.85655938770072 + ], + [ + 7.116329435999082, + 50.856713021242754 + ], + [ + 7.117236438705189, + 50.857225459962144 + ], + [ + 7.117490229202822, + 50.85743886646091 + ], + [ + 7.117698818437155, + 50.85754968678556 + ], + [ + 7.117722146933187, + 50.85757499368573 + ], + [ + 7.117804888982562, + 50.85767905548624 + ], + [ + 7.117808713396218, + 50.8576848254848 + ], + [ + 7.117812121926845, + 50.85769072547846 + ], + [ + 7.117868419405419, + 50.85778808121964 + ], + [ + 7.1179387199235915, + 50.85794741806696 + ], + [ + 7.117941399756292, + 50.85795341872311 + ], + [ + 7.117944068120943, + 50.85795942189231 + ], + [ + 7.117972635625234, + 50.85802422634714 + ], + [ + 7.118011296017846, + 50.85812633668297 + ], + [ + 7.1180698016659, + 50.85828021647127 + ], + [ + 7.1181167877797105, + 50.85840382109699 + ], + [ + 7.118144208976647, + 50.85847547460331 + ], + [ + 7.118323592260395, + 50.85894426661142 + ], + [ + 7.11833859754479, + 50.85898376700761 + ], + [ + 7.118441005344865, + 50.85925094222165 + ], + [ + 7.118550987831987, + 50.85953782235413 + ], + [ + 7.118617493525134, + 50.859711312069685 + ], + [ + 7.118663250802378, + 50.85983088272988 + ], + [ + 7.1186976673935245, + 50.859921255940336 + ], + [ + 7.118698639230629, + 50.85992376556292 + ], + [ + 7.1186996139441625, + 50.8599262743325 + ], + [ + 7.11872432060515, + 50.85999084993507 + ], + [ + 7.118898423169208, + 50.86044629813156 + ], + [ + 7.118953545929618, + 50.86049431200377 + ], + [ + 7.118996248702768, + 50.860509993838846 + ], + [ + 7.119028639550844, + 50.86057548649196 + ], + [ + 7.119016229207276, + 50.86060886708653 + ], + [ + 7.1190726730411935, + 50.86075350619164 + ], + [ + 7.119111622026597, + 50.860891211501844 + ], + [ + 7.11913147957824, + 50.860961229163316 + ], + [ + 7.11916623955476, + 50.86108414244154 + ], + [ + 7.119223630218085, + 50.86128603619781 + ], + [ + 7.11924204716225, + 50.86153900464972 + ], + [ + 7.119248389316422, + 50.861625871757624 + ], + [ + 7.119247309950906, + 50.861646019123185 + ], + [ + 7.119242798505699, + 50.86174233992747 + ], + [ + 7.1192366320920115, + 50.86187032063938 + ], + [ + 7.119233768705853, + 50.86192868943126 + ], + [ + 7.119273156982211, + 50.86195420179687 + ], + [ + 7.11924277143345, + 50.86209697706824 + ], + [ + 7.119192728111864, + 50.86233226387155 + ], + [ + 7.11918584229369, + 50.86235318552798 + ], + [ + 7.119146540406298, + 50.86247357293565 + ], + [ + 7.119130917122679, + 50.862521098288475 + ], + [ + 7.119119446975591, + 50.86254628909543 + ], + [ + 7.119051442261943, + 50.86269589745656 + ], + [ + 7.119044154013714, + 50.862711879575464 + ], + [ + 7.119018513131248, + 50.862768130088625 + ], + [ + 7.119007456964921, + 50.862792777143994 + ], + [ + 7.118969841974316, + 50.862865054735856 + ], + [ + 7.118958956908189, + 50.86288502602538 + ], + [ + 7.118928780508883, + 50.8629416800644 + ], + [ + 7.11891421988815, + 50.86296833826266 + ], + [ + 7.118732215799365, + 50.863298561751584 + ], + [ + 7.118538815241416, + 50.86360381366702 + ], + [ + 7.118433960487675, + 50.86376887759115 + ], + [ + 7.1184228783110814, + 50.863786603523984 + ], + [ + 7.118309571290706, + 50.864019889396275 + ], + [ + 7.118205206746764, + 50.864235200686494 + ], + [ + 7.11815133872583, + 50.86434664782945 + ], + [ + 7.11813075755645, + 50.864388826374565 + ], + [ + 7.1180862473704405, + 50.86451735324153 + ], + [ + 7.118081201459142, + 50.86453205478888 + ], + [ + 7.1179202724729205, + 50.86482341970339 + ], + [ + 7.117799232373324, + 50.86507215111232 + ], + [ + 7.117696199968196, + 50.865283942610304 + ], + [ + 7.117615154385003, + 50.86544769726919 + ], + [ + 7.117555685201331, + 50.86556782981319 + ], + [ + 7.117449041632432, + 50.86578316210394 + ], + [ + 7.117331152532088, + 50.866015322615475 + ], + [ + 7.1172447093474505, + 50.86619036783967 + ], + [ + 7.117227224226195, + 50.866225503754976 + ], + [ + 7.116884489229617, + 50.86702328033627 + ], + [ + 7.116788006610207, + 50.86724795405565 + ], + [ + 7.116788659238241, + 50.867275275727394 + ], + [ + 7.116804961022694, + 50.86729741238521 + ], + [ + 7.116830797666567, + 50.86733249465219 + ], + [ + 7.116808615964937, + 50.867355361058195 + ], + [ + 7.116832957368331, + 50.867422818959255 + ], + [ + 7.116833792452989, + 50.86745778011653 + ], + [ + 7.116828338903394, + 50.86750296003846 + ], + [ + 7.116735219387644, + 50.867707913557446 + ], + [ + 7.116673947048212, + 50.867842714022075 + ], + [ + 7.116598957660997, + 50.86795040641053 + ], + [ + 7.1165492427045605, + 50.868048525527996 + ], + [ + 7.116349358314087, + 50.86844362399096 + ], + [ + 7.116353208341126, + 50.868479904627364 + ], + [ + 7.116370784630801, + 50.868496097300884 + ], + [ + 7.116397252937141, + 50.868515800751865 + ], + [ + 7.116428857587344, + 50.86852457793647 + ], + [ + 7.116410090832263, + 50.868577435784765 + ], + [ + 7.116352440617833, + 50.86857259378122 + ], + [ + 7.116326720031285, + 50.86857823401477 + ], + [ + 7.116292614117941, + 50.868589617147094 + ], + [ + 7.116267217599669, + 50.86860882867938 + ], + [ + 7.115916260327081, + 50.869289816936146 + ], + [ + 7.115983591186377, + 50.8693311535548 + ], + [ + 7.116028106365063, + 50.86933917787614 + ], + [ + 7.116002616993515, + 50.86938418894416 + ], + [ + 7.115922669692015, + 50.86937371731749 + ], + [ + 7.115869198803372, + 50.86937144190953 + ], + [ + 7.115810634605041, + 50.86950082197528 + ], + [ + 7.115794021194763, + 50.86954871580242 + ], + [ + 7.115803968929213, + 50.86959051181606 + ], + [ + 7.1158423653514, + 50.86961676473884 + ], + [ + 7.115863183544652, + 50.869631026725166 + ], + [ + 7.115992486943125, + 50.8697035036542 + ], + [ + 7.115944773902057, + 50.86974594163231 + ], + [ + 7.115813780326468, + 50.86982279642827 + ], + [ + 7.1157167188476524, + 50.8698214772906 + ], + [ + 7.115660317094918, + 50.86983325386465 + ], + [ + 7.115604575991563, + 50.86986677882388 + ], + [ + 7.115473668374579, + 50.870006738838974 + ], + [ + 7.115409520602058, + 50.87007495328987 + ], + [ + 7.115242846797011, + 50.870186668995245 + ], + [ + 7.115105678966066, + 50.8702786846619 + ], + [ + 7.114837239774275, + 50.870412318418445 + ], + [ + 7.1147448558571975, + 50.870458238746906 + ], + [ + 7.114664030698961, + 50.8705360512117 + ], + [ + 7.11469154171269, + 50.870593501307894 + ], + [ + 7.114601197988086, + 50.87063562587505 + ], + [ + 7.114496169038717, + 50.87059815457406 + ], + [ + 7.114422300286827, + 50.87060434382811 + ], + [ + 7.114306196568747, + 50.87065642431518 + ], + [ + 7.113744236395541, + 50.87090891289983 + ], + [ + 7.11361530417348, + 50.87095443128619 + ], + [ + 7.113578981696521, + 50.87096721499123 + ], + [ + 7.113478131354105, + 50.87099775314837 + ], + [ + 7.1133409931413505, + 50.87103169409346 + ], + [ + 7.113316357834537, + 50.87105314503428 + ], + [ + 7.113324053005065, + 50.87108390555748 + ], + [ + 7.113425856585116, + 50.871266229367535 + ], + [ + 7.113111259858593, + 50.871329372246834 + ], + [ + 7.11299476627128, + 50.8711267816511 + ], + [ + 7.112958251466689, + 50.87111472508308 + ], + [ + 7.11291590822947, + 50.87111440993818 + ], + [ + 7.112285894451199, + 50.87125993701604 + ], + [ + 7.111306147012939, + 50.87146704529328 + ], + [ + 7.110587989719383, + 50.871461120845055 + ], + [ + 7.110055855794473, + 50.87144551053266 + ], + [ + 7.109580868188835, + 50.87144931106469 + ], + [ + 7.109395078111316, + 50.87145080857069 + ], + [ + 7.109277927864076, + 50.871429269050154 + ], + [ + 7.1083712470776765, + 50.87139941336562 + ], + [ + 7.107973141416778, + 50.87138620637996 + ], + [ + 7.107871060265792, + 50.87138897330978 + ], + [ + 7.107814166546291, + 50.87140416652608 + ], + [ + 7.107777868954997, + 50.871419164883775 + ], + [ + 7.1077451916718735, + 50.87143107144901 + ], + [ + 7.107740862345832, + 50.8715480658566 + ], + [ + 7.107734318713719, + 50.87172737852893 + ], + [ + 7.107705765830861, + 50.87249427535246 + ], + [ + 7.1077041306751765, + 50.87254517112107 + ], + [ + 7.107347402972189, + 50.872551795033125 + ], + [ + 7.10712630718539, + 50.87255047775422 + ], + [ + 7.106944870697401, + 50.87255004270659 + ], + [ + 7.106478510902966, + 50.87254664707378 + ], + [ + 7.106072839088059, + 50.87254429217482 + ], + [ + 7.105685772503205, + 50.87254886086495 + ], + [ + 7.104545319619492, + 50.87256398178427 + ], + [ + 7.104119239137846, + 50.87256972375655 + ], + [ + 7.103887985027546, + 50.87257137318927 + ], + [ + 7.103805498983357, + 50.87257386230367 + ], + [ + 7.103405408685133, + 50.87257917591127 + ], + [ + 7.103029011757281, + 50.87258318521663 + ], + [ + 7.102934115318698, + 50.87258354370928 + ], + [ + 7.10280867737562, + 50.872584010832085 + ], + [ + 7.101682526658468, + 50.872568467232384 + ], + [ + 7.101676492115575, + 50.87256841582587 + ], + [ + 7.101670453778325, + 50.87256842281638 + ], + [ + 7.101640619574265, + 50.87256844019647 + ], + [ + 7.100010195350633, + 50.87256827661444 + ], + [ + 7.099938023115858, + 50.87256823821942 + ], + [ + 7.099449687238958, + 50.87257284235405 + ], + [ + 7.0993866978944835, + 50.87259483126319 + ], + [ + 7.099318795307695, + 50.872595111155874 + ], + [ + 7.099258851979453, + 50.87246883448619 + ], + [ + 7.099252030102438, + 50.872378194562536 + ], + [ + 7.099208360964294, + 50.87192922092189 + ], + [ + 7.099198114516917, + 50.87149386583662 + ], + [ + 7.09920672237763, + 50.87129215049296 + ], + [ + 7.09920858078588, + 50.87125042120462 + ], + [ + 7.099210678649685, + 50.8711946665393 + ], + [ + 7.099223255017709, + 50.87090805231634 + ], + [ + 7.0992481173104665, + 50.87037087486009 + ], + [ + 7.099492815230541, + 50.86995702846066 + ], + [ + 7.099533777801307, + 50.86994702370956 + ], + [ + 7.099659635685598, + 50.86991635173768 + ], + [ + 7.099849765871836, + 50.86990637844293 + ], + [ + 7.099843572504284, + 50.86984845436328 + ], + [ + 7.099532680812759, + 50.86980382786433 + ], + [ + 7.099502578813988, + 50.869798452197635 + ], + [ + 7.099449265385674, + 50.869790773802784 + ], + [ + 7.0994224689289105, + 50.86978698088604 + ], + [ + 7.098905515372486, + 50.86969061088975 + ], + [ + 7.098823455159283, + 50.869675312944054 + ], + [ + 7.098451332084641, + 50.86960609357172 + ], + [ + 7.097870241460011, + 50.8694951507851 + ], + [ + 7.0976795926089435, + 50.869458828975056 + ], + [ + 7.0972206583172985, + 50.8693710950723 + ], + [ + 7.096642750291863, + 50.8692622737808 + ], + [ + 7.096515754992865, + 50.869238386996514 + ], + [ + 7.096445352444993, + 50.86980988227592 + ], + [ + 7.0964383939154745, + 50.86980994773012 + ], + [ + 7.09643143715693, + 50.86981007437 + ], + [ + 7.096417094997204, + 50.86981041778761 + ], + [ + 7.096335323577882, + 50.869818917452946 + ], + [ + 7.096137797047103, + 50.869816459146726 + ], + [ + 7.096017435738945, + 50.869814983569405 + ], + [ + 7.095791096220413, + 50.8698197171555 + ], + [ + 7.09550824485441, + 50.86981958689318 + ], + [ + 7.0954655042647, + 50.870383810195655 + ], + [ + 7.095241361524474, + 50.87258456840254 + ], + [ + 7.095155510156514, + 50.875206262465085 + ], + [ + 7.09505454086833, + 50.87629296174316 + ], + [ + 7.094679506273855, + 50.88026570291895 + ], + [ + 7.094629350698631, + 50.88133259653021 + ], + [ + 7.094618819078156, + 50.88154403809073 + ], + [ + 7.094615270872942, + 50.881586682212735 + ], + [ + 7.094603975824125, + 50.88170490965409 + ], + [ + 7.094567032225852, + 50.88209297337641 + ], + [ + 7.094563281744871, + 50.882133011416165 + ], + [ + 7.094502571011343, + 50.88320315084623 + ], + [ + 7.09447837565376, + 50.88363325408147 + ], + [ + 7.09431027627235, + 50.88482800543166 + ], + [ + 7.09420102037127, + 50.885587023434674 + ], + [ + 7.094182867082873, + 50.885747891167625 + ], + [ + 7.094195718305517, + 50.88574748137937 + ], + [ + 7.094201356023969, + 50.88574719481578 + ], + [ + 7.095002489168756, + 50.88572523700054 + ], + [ + 7.096021219468719, + 50.88569741131956 + ], + [ + 7.0971111434864085, + 50.88565453644545 + ], + [ + 7.097302642732421, + 50.88562839616576 + ], + [ + 7.097959369691665, + 50.88553897349262 + ], + [ + 7.098262534812043, + 50.88549761039436 + ], + [ + 7.098714467703052, + 50.88542009829365 + ], + [ + 7.099307589908818, + 50.8853184876852 + ], + [ + 7.09951423962596, + 50.885283198445315 + ], + [ + 7.099681985300782, + 50.885249125325416 + ], + [ + 7.100094761049163, + 50.88516531232288 + ], + [ + 7.1000995251113075, + 50.88516430614629 + ], + [ + 7.100600064126402, + 50.88503647599636 + ], + [ + 7.10093721430797, + 50.88494888118265 + ], + [ + 7.1022714633136115, + 50.884599213980536 + ], + [ + 7.102921798883764, + 50.88445520550712 + ], + [ + 7.103177692113142, + 50.88438149967813 + ], + [ + 7.103660979329301, + 50.88424226525829 + ], + [ + 7.103737614168424, + 50.88422013599197 + ], + [ + 7.1040650434063295, + 50.884131384024776 + ], + [ + 7.104882192606479, + 50.883910594900584 + ], + [ + 7.104980214557474, + 50.883884058084384 + ], + [ + 7.105012941915066, + 50.883875146174724 + ], + [ + 7.104925990057052, + 50.88424903050278 + ], + [ + 7.104899795601559, + 50.88436110794789 + ], + [ + 7.104896300106912, + 50.88437615786488 + ], + [ + 7.104885748751017, + 50.884411905469086 + ], + [ + 7.104843720398347, + 50.884600519186 + ], + [ + 7.104618795275583, + 50.88525170399541 + ], + [ + 7.104579035618091, + 50.885373135702594 + ], + [ + 7.104520911242093, + 50.885736226911135 + ], + [ + 7.104519552484089, + 50.88576493604309 + ], + [ + 7.104526868851643, + 50.88585460492527 + ], + [ + 7.104530793221842, + 50.8858861222546 + ], + [ + 7.104535855175863, + 50.88597735449201 + ], + [ + 7.104760328253714, + 50.88605007442068 + ], + [ + 7.105016689323214, + 50.88613367513973 + ], + [ + 7.105319452220941, + 50.88623229803417 + ], + [ + 7.10542333713856, + 50.88626707237283 + ], + [ + 7.105451408709233, + 50.88627150061451 + ], + [ + 7.1054662102976005, + 50.886275445406994 + ], + [ + 7.105483397754803, + 50.8862781967971 + ], + [ + 7.105494289976654, + 50.886281531304355 + ], + [ + 7.105584159696878, + 50.88631047041428 + ], + [ + 7.105675534678378, + 50.88633805605767 + ], + [ + 7.105753002697821, + 50.88636267192091 + ], + [ + 7.106003444552433, + 50.8864421919677 + ], + [ + 7.106099975941161, + 50.88647372824311 + ], + [ + 7.106745611169293, + 50.88668991410661 + ], + [ + 7.106850763392184, + 50.886725323786834 + ], + [ + 7.106861064753458, + 50.88675228395396 + ], + [ + 7.107156587491332, + 50.88698943553317 + ], + [ + 7.107239658632817, + 50.88697408345977 + ], + [ + 7.10732739823886, + 50.8869705006162 + ], + [ + 7.107424480560575, + 50.88698884380462 + ], + [ + 7.107553125584519, + 50.88702793181828 + ], + [ + 7.107865004759921, + 50.887124102089324 + ], + [ + 7.108003429610525, + 50.887167091335705 + ], + [ + 7.1082008548977695, + 50.88722805201098 + ], + [ + 7.108925941293438, + 50.887449674091286 + ], + [ + 7.1089497213808475, + 50.88746958379701 + ], + [ + 7.1089839465787135, + 50.88749847475095 + ], + [ + 7.109302891597638, + 50.887649341812256 + ], + [ + 7.109344005221285, + 50.8876511087302 + ], + [ + 7.109647989499127, + 50.887746471750276 + ], + [ + 7.110332419989625, + 50.88796110027223 + ], + [ + 7.110369799158126, + 50.88797314997404 + ], + [ + 7.110606830821932, + 50.88804982123063 + ], + [ + 7.111513131575441, + 50.888342606560755 + ], + [ + 7.112088889684005, + 50.888528684695956 + ], + [ + 7.112109637362503, + 50.88853459910932 + ], + [ + 7.112297374002947, + 50.888588094983426 + ], + [ + 7.112400402955605, + 50.88861749706235 + ], + [ + 7.112896789488426, + 50.88875884072827 + ], + [ + 7.1130640686505275, + 50.88880659755663 + ], + [ + 7.113642130243105, + 50.888969632847704 + ], + [ + 7.114080261134911, + 50.88909336900631 + ], + [ + 7.114147224994935, + 50.88911223701056 + ], + [ + 7.114490665984719, + 50.88921062709251 + ], + [ + 7.1149372898266305, + 50.8893385947331 + ], + [ + 7.114989091107266, + 50.88935338153195 + ], + [ + 7.11525374067733, + 50.889430118804654 + ], + [ + 7.115515482091359, + 50.8894946976471 + ], + [ + 7.115652955112721, + 50.889517823237036 + ], + [ + 7.1157421559486265, + 50.889531546149954 + ], + [ + 7.115898186340529, + 50.88955611866634 + ], + [ + 7.116208307113758, + 50.889605183188635 + ], + [ + 7.11630902761948, + 50.88962988940362 + ], + [ + 7.116333113437351, + 50.88963520669886 + ], + [ + 7.116358467209843, + 50.889639969759905 + ], + [ + 7.116429284870672, + 50.88965763503696 + ], + [ + 7.116508186946089, + 50.88966579853953 + ], + [ + 7.1171881878179, + 50.88981769031034 + ], + [ + 7.117230773721874, + 50.889827253206505 + ], + [ + 7.117367232549723, + 50.88984581320912 + ], + [ + 7.11752558321428, + 50.88987054508015 + ], + [ + 7.1178365263383725, + 50.88995132835333 + ], + [ + 7.117894273382294, + 50.88995439028027 + ], + [ + 7.117954616997537, + 50.889969723628816 + ], + [ + 7.117996515040298, + 50.889980378672206 + ], + [ + 7.118661864671201, + 50.890149397664295 + ], + [ + 7.118713640548674, + 50.890162642672436 + ], + [ + 7.119232516455402, + 50.8902919679991 + ], + [ + 7.119471293741078, + 50.890351434447695 + ], + [ + 7.120115422009637, + 50.89051182625992 + ], + [ + 7.120457394898213, + 50.89058825924307 + ], + [ + 7.1204719694406675, + 50.890591444789436 + ], + [ + 7.120742463632637, + 50.890635251531435 + ], + [ + 7.120948700251801, + 50.890669927848336 + ], + [ + 7.12112127633847, + 50.89069031328051 + ], + [ + 7.1213084384430525, + 50.890713145703586 + ], + [ + 7.121695358134955, + 50.89073882071904 + ], + [ + 7.121843650429798, + 50.89074893290794 + ], + [ + 7.121992348130276, + 50.8907486502732 + ], + [ + 7.1220391108273295, + 50.89074855827734 + ], + [ + 7.122404839410353, + 50.890746776767664 + ], + [ + 7.122456638853514, + 50.890742824621015 + ], + [ + 7.122812673214534, + 50.89071609576882 + ], + [ + 7.122894972409499, + 50.89070554792161 + ], + [ + 7.123211977985375, + 50.89066577615092 + ], + [ + 7.123291006958313, + 50.89065079642542 + ], + [ + 7.123569108008083, + 50.89059898870686 + ], + [ + 7.123664892255105, + 50.890581227485626 + ], + [ + 7.123847942824397, + 50.890528516809376 + ], + [ + 7.124039925220439, + 50.890473336769304 + ], + [ + 7.1242287098095245, + 50.8904053664104 + ], + [ + 7.124554194968325, + 50.8902879780956 + ], + [ + 7.124591095826666, + 50.89027465522467 + ], + [ + 7.124818513115339, + 50.890144747609604 + ], + [ + 7.125045044856198, + 50.89002513924578 + ], + [ + 7.12522636249674, + 50.889913012611395 + ], + [ + 7.125276070433291, + 50.889882150794776 + ], + [ + 7.1254091460327595, + 50.88979162330133 + ], + [ + 7.1254338350579856, + 50.889774896870456 + ], + [ + 7.125720704322497, + 50.88959476590192 + ], + [ + 7.125899075321268, + 50.88949627654475 + ], + [ + 7.125964327653205, + 50.88946017973506 + ], + [ + 7.126179844290505, + 50.88932237262717 + ], + [ + 7.126618625767296, + 50.88904162122356 + ], + [ + 7.126925152500408, + 50.88884410697293 + ], + [ + 7.126927990624493, + 50.88884229803478 + ], + [ + 7.12723910581528, + 50.88864510573681 + ], + [ + 7.127749632701461, + 50.8883187623379 + ], + [ + 7.127851560350258, + 50.88825326623985 + ], + [ + 7.128291407350835, + 50.887968304080964 + ], + [ + 7.128320186665471, + 50.887949834024774 + ], + [ + 7.128480077149717, + 50.88783581271679 + ], + [ + 7.128485149813748, + 50.88783220667062 + ], + [ + 7.128489028378232, + 50.88782937471447 + ], + [ + 7.1285896994328874, + 50.887757822187936 + ], + [ + 7.129052838946573, + 50.88742809607499 + ], + [ + 7.129095871164857, + 50.88739671820841 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Grengel", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "709", + "Population_rel": 0.005118378000808794, + "Population_abs": 5569 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.01216666816255, + 50.95418200575477 + ], + [ + 7.012165946754857, + 50.9541357173697 + ], + [ + 7.012163997202086, + 50.95398705095279 + ], + [ + 7.012182263143344, + 50.95332141196641 + ], + [ + 7.01232134713369, + 50.95294350802568 + ], + [ + 7.012346782193853, + 50.95288956792631 + ], + [ + 7.01236890107645, + 50.952800389865274 + ], + [ + 7.012402437560907, + 50.952727866419295 + ], + [ + 7.012419193210786, + 50.95269163190898 + ], + [ + 7.0127488905303625, + 50.951890967473716 + ], + [ + 7.012991533336643, + 50.95130203743698 + ], + [ + 7.0133490737274595, + 50.95087940102354 + ], + [ + 7.013603831700203, + 50.95054044854645 + ], + [ + 7.013620998750293, + 50.95056421055517 + ], + [ + 7.013888496226735, + 50.95026802514646 + ], + [ + 7.013934963503424, + 50.95023544005386 + ], + [ + 7.014139790193798, + 50.95003166922944 + ], + [ + 7.01429047758136, + 50.949913318439705 + ], + [ + 7.0144291112759785, + 50.94977080147632 + ], + [ + 7.014463436059777, + 50.949745961883885 + ], + [ + 7.014966245072074, + 50.94936907137287 + ], + [ + 7.015444639608652, + 50.949027989385314 + ], + [ + 7.015908873209185, + 50.9486969167042 + ], + [ + 7.016072940812352, + 50.948572603374366 + ], + [ + 7.016219858177671, + 50.94845796880243 + ], + [ + 7.016369210368317, + 50.94833755919962 + ], + [ + 7.01643905376228, + 50.94829956577132 + ], + [ + 7.016295464918013, + 50.94828563035393 + ], + [ + 7.016233612928678, + 50.94827978485115 + ], + [ + 7.016125097134429, + 50.948269331251176 + ], + [ + 7.014441879458977, + 50.94810735619782 + ], + [ + 7.014168667818947, + 50.94808048857351 + ], + [ + 7.01308122412734, + 50.94795816958626 + ], + [ + 7.012933595413797, + 50.947941229321025 + ], + [ + 7.012486676613228, + 50.94789037382378 + ], + [ + 7.012295766266303, + 50.94786859838381 + ], + [ + 7.012242091267156, + 50.94786326141717 + ], + [ + 7.012134560777612, + 50.9478585201736 + ], + [ + 7.011843179055187, + 50.94784738244982 + ], + [ + 7.011757751788644, + 50.94784580531073 + ], + [ + 7.01144464998663, + 50.94784124521579 + ], + [ + 7.011401067810229, + 50.947840608996565 + ], + [ + 7.011342855420369, + 50.947839812589855 + ], + [ + 7.011286662163166, + 50.947839675610496 + ], + [ + 7.01124252150204, + 50.94783944892472 + ], + [ + 7.011194122583206, + 50.94783802097353 + ], + [ + 7.011077070281444, + 50.947836053888665 + ], + [ + 7.010637565617838, + 50.947849094584626 + ], + [ + 7.010591504545183, + 50.94785246478398 + ], + [ + 7.010507565001544, + 50.94785875728048 + ], + [ + 7.010464878491951, + 50.947861951099966 + ], + [ + 7.0103959369293865, + 50.947867159041905 + ], + [ + 7.010245622464063, + 50.947878230824905 + ], + [ + 7.010189412797973, + 50.94788224362792 + ], + [ + 7.009706171197099, + 50.94786539309685 + ], + [ + 7.009470317909903, + 50.94785866764292 + ], + [ + 7.009421172153439, + 50.947857326052606 + ], + [ + 7.008901727477917, + 50.94785377444881 + ], + [ + 7.00879167642999, + 50.94784788900431 + ], + [ + 7.008643967639426, + 50.94783922692799 + ], + [ + 7.008414929983535, + 50.94782627054019 + ], + [ + 7.008094164002619, + 50.94779592068351 + ], + [ + 7.008044590006738, + 50.94779091167077 + ], + [ + 7.007998254557191, + 50.9477853454241 + ], + [ + 7.007853459094156, + 50.94776382879578 + ], + [ + 7.007798747552394, + 50.94775527843194 + ], + [ + 7.007741178365146, + 50.94774640227133 + ], + [ + 7.00747663374595, + 50.94770020537847 + ], + [ + 7.00740889077232, + 50.94768843752033 + ], + [ + 7.007182634540285, + 50.94764902264897 + ], + [ + 7.00687954339583, + 50.94759702831486 + ], + [ + 7.006789873108449, + 50.94758342786719 + ], + [ + 7.006706431824102, + 50.947571384386166 + ], + [ + 7.005488118764089, + 50.94739566133186 + ], + [ + 7.005124585009448, + 50.94736582724335 + ], + [ + 7.003583711739742, + 50.94724178734625 + ], + [ + 7.002970375946703, + 50.94720905235881 + ], + [ + 7.002902200630362, + 50.94720542007463 + ], + [ + 7.002601828302769, + 50.947189507856805 + ], + [ + 7.002463062366506, + 50.947182163717564 + ], + [ + 7.002358805959968, + 50.94717659168375 + ], + [ + 7.001664025185552, + 50.94712382572358 + ], + [ + 7.001598663940802, + 50.947118783864454 + ], + [ + 7.001523976173687, + 50.94711304539176 + ], + [ + 7.001521201882473, + 50.94714157809883 + ], + [ + 7.001517440699073, + 50.94720931456265 + ], + [ + 7.001515112994037, + 50.94726049297012 + ], + [ + 7.001510148453805, + 50.94731628857607 + ], + [ + 7.001462559958032, + 50.94792816649433 + ], + [ + 7.001458918515192, + 50.947974953264655 + ], + [ + 7.0014494141444965, + 50.948020414726486 + ], + [ + 7.00141583678568, + 50.94805378396084 + ], + [ + 7.001370966352432, + 50.94808161489739 + ], + [ + 7.001312636813322, + 50.948095657390056 + ], + [ + 7.001092498847129, + 50.94813401226691 + ], + [ + 7.000981454203113, + 50.948153511457356 + ], + [ + 7.000898983915216, + 50.948170376322345 + ], + [ + 7.0007351887972655, + 50.94820381790934 + ], + [ + 7.000636787245554, + 50.94822644904228 + ], + [ + 7.000590166322274, + 50.94823726419162 + ], + [ + 7.000462967120929, + 50.948267194131965 + ], + [ + 7.000380548998907, + 50.94828867239745 + ], + [ + 7.000226253744867, + 50.94832854369896 + ], + [ + 7.000169954436199, + 50.94834296845616 + ], + [ + 6.999971481239566, + 50.948394371662424 + ], + [ + 6.9999262427664055, + 50.94840726799116 + ], + [ + 6.999838290274401, + 50.94843378377062 + ], + [ + 6.999771601950846, + 50.948453842979156 + ], + [ + 6.999705999198799, + 50.94847282351746 + ], + [ + 6.999666477607202, + 50.9484858671621 + ], + [ + 6.999606675682136, + 50.948506357248824 + ], + [ + 6.999394722111995, + 50.94857567869957 + ], + [ + 6.999314266323953, + 50.94860186297364 + ], + [ + 6.99927672931881, + 50.9486141409565 + ], + [ + 6.999237351711179, + 50.94862747292424 + ], + [ + 6.999188190450372, + 50.94864384975883 + ], + [ + 6.999128521181472, + 50.948664191680976 + ], + [ + 6.999077970014428, + 50.948682563735645 + ], + [ + 6.9990031824981225, + 50.948711514276965 + ], + [ + 6.998930428047298, + 50.948739634423376 + ], + [ + 6.9988250949473665, + 50.948781295529244 + ], + [ + 6.998770189063214, + 50.94880286561678 + ], + [ + 6.998711096262541, + 50.948824494315126 + ], + [ + 6.998645651166837, + 50.948842665731995 + ], + [ + 6.99860461704966, + 50.94885279071508 + ], + [ + 6.998545430905646, + 50.948863531747485 + ], + [ + 6.998472266735647, + 50.94887145101683 + ], + [ + 6.998430650401253, + 50.948873453633944 + ], + [ + 6.998363328035592, + 50.948874109841825 + ], + [ + 6.998261409116252, + 50.9488676712757 + ], + [ + 6.998216669694697, + 50.94886429239624 + ], + [ + 6.998036611082555, + 50.94885091971477 + ], + [ + 6.997962200582666, + 50.948849673390555 + ], + [ + 6.997872888819932, + 50.948848570795 + ], + [ + 6.997811226370771, + 50.94884782269756 + ], + [ + 6.997700781819487, + 50.94884884790332 + ], + [ + 6.99764798547622, + 50.948853487016656 + ], + [ + 6.997594015131132, + 50.94885834430339 + ], + [ + 6.997400879619847, + 50.948878260502006 + ], + [ + 6.997293843544553, + 50.9488933910622 + ], + [ + 6.997161537484584, + 50.948912331243655 + ], + [ + 6.997118676768871, + 50.94891797518293 + ], + [ + 6.99698713779319, + 50.94893579332126 + ], + [ + 6.99694716082112, + 50.948942215164 + ], + [ + 6.996882277877935, + 50.94895252394783 + ], + [ + 6.996750875615591, + 50.94897977317055 + ], + [ + 6.9959064443901475, + 50.949163028930066 + ], + [ + 6.995721368641966, + 50.94918726728525 + ], + [ + 6.995584776352096, + 50.94920420475005 + ], + [ + 6.995525053423365, + 50.94920419834997 + ], + [ + 6.995459595846385, + 50.94919462487861 + ], + [ + 6.995486625496598, + 50.94922619461588 + ], + [ + 6.995509956174155, + 50.94925485522749 + ], + [ + 6.995540654973534, + 50.94929290855794 + ], + [ + 6.995604704796191, + 50.949372531400556 + ], + [ + 6.995810870650061, + 50.949624447362936 + ], + [ + 6.996786984681214, + 50.95082311163292 + ], + [ + 6.996944543883605, + 50.95100362053662 + ], + [ + 6.997084060507096, + 50.951152370495336 + ], + [ + 6.997408570356547, + 50.95145999890663 + ], + [ + 6.997640058714837, + 50.95165021189455 + ], + [ + 6.998174913457171, + 50.9520042231609 + ], + [ + 6.998462353617914, + 50.95216204426943 + ], + [ + 6.998783450480313, + 50.95232299218284 + ], + [ + 6.99912412564561, + 50.95246777128994 + ], + [ + 6.999510824887985, + 50.95302620280701 + ], + [ + 6.9989801289489435, + 50.953185543219185 + ], + [ + 6.998891971667153, + 50.95322243444172 + ], + [ + 6.998658942713066, + 50.953359178925695 + ], + [ + 6.998890685250696, + 50.95363352701387 + ], + [ + 6.999162737048524, + 50.95399553629163 + ], + [ + 6.999543970487459, + 50.95466342335669 + ], + [ + 6.999649654923794, + 50.95477939112653 + ], + [ + 6.999862650080727, + 50.95477009560469 + ], + [ + 7.000407932999088, + 50.95474628953921 + ], + [ + 7.00119778561513, + 50.954652489113776 + ], + [ + 7.001369528005866, + 50.954626529775474 + ], + [ + 7.001457052878622, + 50.95461361924055 + ], + [ + 7.002412972662103, + 50.95444816652026 + ], + [ + 7.002800757432834, + 50.95437357057512 + ], + [ + 7.004009576582418, + 50.9541443907406 + ], + [ + 7.004068753168237, + 50.95413629269454 + ], + [ + 7.004250978900983, + 50.954117512638945 + ], + [ + 7.004307906032068, + 50.95411365971603 + ], + [ + 7.004613200407221, + 50.95409726239793 + ], + [ + 7.0048814315363135, + 50.95408217446984 + ], + [ + 7.00528757959145, + 50.954060891118736 + ], + [ + 7.006155111756644, + 50.95413773468692 + ], + [ + 7.00743346262492, + 50.9542905806783 + ], + [ + 7.008018790821763, + 50.95436130674611 + ], + [ + 7.008859870278848, + 50.95451900783137 + ], + [ + 7.009095517637399, + 50.95460109520449 + ], + [ + 7.009581019686236, + 50.95478693007779 + ], + [ + 7.009633552442307, + 50.954827107373674 + ], + [ + 7.009671050885917, + 50.954882696251325 + ], + [ + 7.0099170806476, + 50.95501190147516 + ], + [ + 7.010122157328187, + 50.955142629635795 + ], + [ + 7.01018346121137, + 50.95518686572155 + ], + [ + 7.01037851494376, + 50.955327927222434 + ], + [ + 7.010567977347691, + 50.9555063428143 + ], + [ + 7.010622817611093, + 50.95551503700665 + ], + [ + 7.01067970271132, + 50.9555063605377 + ], + [ + 7.010723928522611, + 50.955491594574916 + ], + [ + 7.011049946595061, + 50.95537802125724 + ], + [ + 7.011130103316092, + 50.95535042347729 + ], + [ + 7.012185390966122, + 50.954986792432344 + ], + [ + 7.012218551524717, + 50.95496920056466 + ], + [ + 7.012243506738856, + 50.95494084834943 + ], + [ + 7.012248618845292, + 50.95490107088447 + ], + [ + 7.012142436478751, + 50.95442259063632 + ], + [ + 7.01216981576465, + 50.95437920449585 + ], + [ + 7.012167473800246, + 50.95423215926024 + ], + [ + 7.01216666816255, + 50.95418200575477 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Buchforst", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "902", + "Population_rel": 0.0068526892393662, + "Population_abs": 7456 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.052965301366475, + 50.97678795266153 + ], + [ + 7.053149232844552, + 50.97656614492703 + ], + [ + 7.053184447092246, + 50.97657897770828 + ], + [ + 7.053271268956213, + 50.97661061937847 + ], + [ + 7.0534642001113745, + 50.97643421522222 + ], + [ + 7.053532148748052, + 50.9763721947427 + ], + [ + 7.053587244175102, + 50.97632190709318 + ], + [ + 7.053752672590978, + 50.976169842115176 + ], + [ + 7.053813398995012, + 50.976116347556406 + ], + [ + 7.05381732098814, + 50.97611273183782 + ], + [ + 7.053849587271866, + 50.976082988114754 + ], + [ + 7.053933348746485, + 50.97600577452569 + ], + [ + 7.053953961572147, + 50.97598694457017 + ], + [ + 7.053956218860501, + 50.97598488128138 + ], + [ + 7.054376399128808, + 50.97560102877879 + ], + [ + 7.0544372205479124, + 50.97554546425433 + ], + [ + 7.055076249596829, + 50.97579049178318 + ], + [ + 7.055334140606349, + 50.975496636153274 + ], + [ + 7.0554464090970415, + 50.975537332046464 + ], + [ + 7.055418154562943, + 50.97557228645546 + ], + [ + 7.0555333330860925, + 50.975609449468585 + ], + [ + 7.055786804689457, + 50.97529675500077 + ], + [ + 7.05586070412369, + 50.9752340606082 + ], + [ + 7.055945895955705, + 50.97514195800624 + ], + [ + 7.055968634913466, + 50.97512754927749 + ], + [ + 7.056187047792791, + 50.97498929486937 + ], + [ + 7.055824670890779, + 50.974844519560634 + ], + [ + 7.056014641771708, + 50.97463254079951 + ], + [ + 7.056354568564087, + 50.97475432653212 + ], + [ + 7.0563751463708115, + 50.974607074957916 + ], + [ + 7.056599240335287, + 50.974374289909164 + ], + [ + 7.056754071168249, + 50.97425162252991 + ], + [ + 7.056792818501404, + 50.97420857279023 + ], + [ + 7.05700406146693, + 50.97397437516965 + ], + [ + 7.057139181067545, + 50.973899169534 + ], + [ + 7.057336381772294, + 50.97378939897015 + ], + [ + 7.057413495752435, + 50.97374647286946 + ], + [ + 7.057450908084161, + 50.97370340430251 + ], + [ + 7.057585971520022, + 50.97354792388096 + ], + [ + 7.057731788409786, + 50.97338006079671 + ], + [ + 7.057727726222352, + 50.97337861720807 + ], + [ + 7.057669505322248, + 50.973357926717554 + ], + [ + 7.057587245499944, + 50.97332869261758 + ], + [ + 7.057586527140291, + 50.97332842974648 + ], + [ + 7.057329740517902, + 50.97323726714955 + ], + [ + 7.057312369148087, + 50.973230952431535 + ], + [ + 7.057314022317413, + 50.97322851029003 + ], + [ + 7.057387236378458, + 50.97311080582776 + ], + [ + 7.057399724646692, + 50.97311527745219 + ], + [ + 7.057447251910961, + 50.973038886758715 + ], + [ + 7.0574924639684085, + 50.97296089893974 + ], + [ + 7.0575175173407905, + 50.972954379833745 + ], + [ + 7.057637502310204, + 50.972971450802945 + ], + [ + 7.057673040214455, + 50.97293139622098 + ], + [ + 7.057908876478239, + 50.97266461299817 + ], + [ + 7.058154183659699, + 50.97238875396293 + ], + [ + 7.05819544492115, + 50.972243472053 + ], + [ + 7.05838065207532, + 50.972154775586255 + ], + [ + 7.058504476285932, + 50.97195885453262 + ], + [ + 7.058508875216372, + 50.97195198280755 + ], + [ + 7.0583620593754555, + 50.971913221879625 + ], + [ + 7.058454073107191, + 50.97175219685579 + ], + [ + 7.058673394521706, + 50.97141077115102 + ], + [ + 7.058700785137946, + 50.97137564420925 + ], + [ + 7.059199379754312, + 50.970600105094555 + ], + [ + 7.0593024296076345, + 50.970626386566124 + ], + [ + 7.0598154354895835, + 50.970757219253585 + ], + [ + 7.059850570710275, + 50.9707121460858 + ], + [ + 7.059851064256273, + 50.970711513941254 + ], + [ + 7.059940209654627, + 50.970597154703036 + ], + [ + 7.05994301555581, + 50.97059791001798 + ], + [ + 7.0601841620336465, + 50.97066280841355 + ], + [ + 7.060400324181936, + 50.97072093192585 + ], + [ + 7.060451607460625, + 50.97073472106213 + ], + [ + 7.060467153931713, + 50.970711457407305 + ], + [ + 7.0605393064147135, + 50.970603488724066 + ], + [ + 7.060732047312113, + 50.970289807284615 + ], + [ + 7.060678683472224, + 50.970276016990304 + ], + [ + 7.060483715796211, + 50.97022563247013 + ], + [ + 7.0604500350283805, + 50.97012645361598 + ], + [ + 7.060448983137613, + 50.97012335943034 + ], + [ + 7.060441747716161, + 50.970102051205494 + ], + [ + 7.060509688995728, + 50.97001838706492 + ], + [ + 7.06067307469652, + 50.96981718864342 + ], + [ + 7.06076149089158, + 50.96970830996899 + ], + [ + 7.060768080452057, + 50.96970019474993 + ], + [ + 7.060833172495989, + 50.969620036478716 + ], + [ + 7.060918957554183, + 50.96951439665804 + ], + [ + 7.0612692976846745, + 50.96907621747576 + ], + [ + 7.061475943481808, + 50.96907937218896 + ], + [ + 7.0614785817492525, + 50.96902028840463 + ], + [ + 7.061484746521692, + 50.96892854081711 + ], + [ + 7.061370621366008, + 50.96892454520975 + ], + [ + 7.06119260873933, + 50.96892189181521 + ], + [ + 7.061119688176293, + 50.96892080423431 + ], + [ + 7.061030187893452, + 50.968921882162505 + ], + [ + 7.06090633966277, + 50.96892337263226 + ], + [ + 7.060892025263553, + 50.96890120939886 + ], + [ + 7.06089771907338, + 50.968901157357365 + ], + [ + 7.061028074479001, + 50.96889889357762 + ], + [ + 7.06103292028281, + 50.968880421126286 + ], + [ + 7.061234443305637, + 50.96811566444202 + ], + [ + 7.061317360633851, + 50.96778751884664 + ], + [ + 7.061320796754456, + 50.967713415479366 + ], + [ + 7.061326665543245, + 50.96770854214999 + ], + [ + 7.061341949722579, + 50.9676958514073 + ], + [ + 7.061354551814691, + 50.967685387019486 + ], + [ + 7.061370162543874, + 50.96767241299984 + ], + [ + 7.061389537212746, + 50.96765633751639 + ], + [ + 7.061513984154553, + 50.96764486728851 + ], + [ + 7.061771805292292, + 50.96762634118988 + ], + [ + 7.061870852459968, + 50.96762465941072 + ], + [ + 7.062004762363759, + 50.967622423879874 + ], + [ + 7.0620034296341885, + 50.96749406833388 + ], + [ + 7.062003344211623, + 50.96748753215861 + ], + [ + 7.062002975107472, + 50.96746296987796 + ], + [ + 7.062200001137144, + 50.96745668228258 + ], + [ + 7.062210186230817, + 50.9672853422558 + ], + [ + 7.062124835371312, + 50.967094826125425 + ], + [ + 7.062814427300313, + 50.967057445082865 + ], + [ + 7.062842417043012, + 50.96705731226196 + ], + [ + 7.063227937239307, + 50.96705547647562 + ], + [ + 7.063382934015266, + 50.967425764479984 + ], + [ + 7.0634581719898595, + 50.96760550396749 + ], + [ + 7.0641238460485605, + 50.96764869782763 + ], + [ + 7.064234529914542, + 50.96765793724061 + ], + [ + 7.064306850624689, + 50.96734669551094 + ], + [ + 7.064377467461406, + 50.967353153480424 + ], + [ + 7.064592933905887, + 50.967373052035526 + ], + [ + 7.06503656602225, + 50.96741402070727 + ], + [ + 7.065315614253684, + 50.96743979120834 + ], + [ + 7.065433596174658, + 50.967450669425986 + ], + [ + 7.065437573503785, + 50.96744407105878 + ], + [ + 7.065505416610318, + 50.96732937717623 + ], + [ + 7.065514848312363, + 50.96731346995121 + ], + [ + 7.0655398198878, + 50.967271351089224 + ], + [ + 7.065552841679483, + 50.96724938858435 + ], + [ + 7.065411076717669, + 50.967163395760394 + ], + [ + 7.065375665863663, + 50.96714636965194 + ], + [ + 7.065326609459783, + 50.96711778190064 + ], + [ + 7.064849743140415, + 50.966851914378935 + ], + [ + 7.064393359390577, + 50.96659754457457 + ], + [ + 7.064217611856447, + 50.96649975572093 + ], + [ + 7.064064011252188, + 50.96641428809414 + ], + [ + 7.063921273317223, + 50.966334865107406 + ], + [ + 7.063924129516915, + 50.966332727917816 + ], + [ + 7.063944507876352, + 50.966317483478214 + ], + [ + 7.06356515335936, + 50.96609441000445 + ], + [ + 7.063480682202259, + 50.966042232976704 + ], + [ + 7.063472301809984, + 50.96603682553266 + ], + [ + 7.063498003752018, + 50.966015286694855 + ], + [ + 7.0630143736141555, + 50.96575774343256 + ], + [ + 7.063031556270209, + 50.96574338327239 + ], + [ + 7.062595400423539, + 50.96547623723438 + ], + [ + 7.062612436682523, + 50.9654616993306 + ], + [ + 7.062416156842222, + 50.96533817445558 + ], + [ + 7.062414128895477, + 50.965336664952055 + ], + [ + 7.062312753251239, + 50.96527340341603 + ], + [ + 7.0623114513857415, + 50.96527251662619 + ], + [ + 7.06218553101831, + 50.965194197062615 + ], + [ + 7.0622025692505765, + 50.96517974918678 + ], + [ + 7.062180171770069, + 50.965165209841516 + ], + [ + 7.061960275512606, + 50.965023471394225 + ], + [ + 7.061872364829125, + 50.964951368290464 + ], + [ + 7.061830201067855, + 50.964912737853474 + ], + [ + 7.061811915267933, + 50.96490364486669 + ], + [ + 7.0617925564959325, + 50.96489743900386 + ], + [ + 7.061696267987193, + 50.96483251300213 + ], + [ + 7.061664793025939, + 50.964813112911315 + ], + [ + 7.06157069861263, + 50.96474448098292 + ], + [ + 7.061539543904894, + 50.96472669603114 + ], + [ + 7.061240004019461, + 50.96446935838362 + ], + [ + 7.061216066272619, + 50.964473937083646 + ], + [ + 7.0611753775418356, + 50.96448171996345 + ], + [ + 7.061147735851731, + 50.96448700700021 + ], + [ + 7.061063676255461, + 50.964477613145995 + ], + [ + 7.061017905234108, + 50.964455556198224 + ], + [ + 7.060988083956554, + 50.964421218904285 + ], + [ + 7.0609850672230134, + 50.964370096760284 + ], + [ + 7.060983316106227, + 50.964343234327785 + ], + [ + 7.060432292325226, + 50.96403783999787 + ], + [ + 7.060199124596587, + 50.96390044465175 + ], + [ + 7.06016276480835, + 50.96387902037231 + ], + [ + 7.0600153157235415, + 50.9637926233172 + ], + [ + 7.059933239683234, + 50.96373128208067 + ], + [ + 7.059828505809309, + 50.96365300794531 + ], + [ + 7.059557426058114, + 50.96345078217381 + ], + [ + 7.059555835464871, + 50.96344971787664 + ], + [ + 7.059421452132888, + 50.96334935784643 + ], + [ + 7.059420148428941, + 50.963348381056704 + ], + [ + 7.058811847597308, + 50.96293949248537 + ], + [ + 7.058308537432879, + 50.96266336841934 + ], + [ + 7.058268379555021, + 50.962641336260845 + ], + [ + 7.058212061352485, + 50.962610439234986 + ], + [ + 7.058162894520166, + 50.962582838560536 + ], + [ + 7.057955116998445, + 50.96246597331303 + ], + [ + 7.0574858585186915, + 50.9622240076607 + ], + [ + 7.0573264258279735, + 50.96214221125572 + ], + [ + 7.057325130011835, + 50.962141593418764 + ], + [ + 7.057261338392542, + 50.962115563042964 + ], + [ + 7.057123820299688, + 50.962059585632375 + ], + [ + 7.056903594352744, + 50.96196994009041 + ], + [ + 7.056603981672358, + 50.96187053410977 + ], + [ + 7.05640768686185, + 50.96180767772178 + ], + [ + 7.056191491194956, + 50.96174084817902 + ], + [ + 7.055921938145026, + 50.961657525001776 + ], + [ + 7.055919331488979, + 50.961656718941356 + ], + [ + 7.055823683408229, + 50.96162715258256 + ], + [ + 7.055735311580553, + 50.96159675937825 + ], + [ + 7.0553362479551325, + 50.9614740679696 + ], + [ + 7.053902982093862, + 50.960995392811405 + ], + [ + 7.053908773291128, + 50.96098716033635 + ], + [ + 7.053474538261912, + 50.9608256776307 + ], + [ + 7.05347267630062, + 50.960824978363085 + ], + [ + 7.053471667181129, + 50.960824624278786 + ], + [ + 7.0534699435233215, + 50.96082392102124 + ], + [ + 7.053278483472222, + 50.960754183339176 + ], + [ + 7.053044519677441, + 50.960668019336566 + ], + [ + 7.052828013207203, + 50.960598508102066 + ], + [ + 7.052573510336716, + 50.960516662916035 + ], + [ + 7.05221723226775, + 50.960402202898145 + ], + [ + 7.052215921972876, + 50.960401763735376 + ], + [ + 7.052214634592371, + 50.9604013555332 + ], + [ + 7.052092271844446, + 50.96036602608895 + ], + [ + 7.051728066848384, + 50.96025442539681 + ], + [ + 7.051663792875024, + 50.96023199211768 + ], + [ + 7.0516250902971835, + 50.9602200251082 + ], + [ + 7.051623381638354, + 50.96021995162756 + ], + [ + 7.051404928032949, + 50.96015225162484 + ], + [ + 7.05126807825672, + 50.96011011148374 + ], + [ + 7.051163110454737, + 50.960077301798755 + ], + [ + 7.051003283563425, + 50.96002768185363 + ], + [ + 7.050029283695171, + 50.95972568712783 + ], + [ + 7.049836883374374, + 50.959670605641186 + ], + [ + 7.049803648361612, + 50.95966119629691 + ], + [ + 7.049802071154617, + 50.95966067080649 + ], + [ + 7.049801223047172, + 50.95966048576171 + ], + [ + 7.049799936183947, + 50.95966013420114 + ], + [ + 7.049571140776145, + 50.95959487873778 + ], + [ + 7.049561970656973, + 50.959592174058706 + ], + [ + 7.049482187664089, + 50.95955811703002 + ], + [ + 7.049481349242105, + 50.959557836812145 + ], + [ + 7.049479332466947, + 50.95955696041725 + ], + [ + 7.049478474362773, + 50.959556606122746 + ], + [ + 7.0494712851245955, + 50.95955352711644 + ], + [ + 7.049461945458643, + 50.959549566783636 + ], + [ + 7.049461224080922, + 50.959549212075025 + ], + [ + 7.049449296996833, + 50.95954419583321 + ], + [ + 7.049728463665043, + 50.95933142547675 + ], + [ + 7.0497427257851655, + 50.95932006011379 + ], + [ + 7.0497675903929276, + 50.959299161415835 + ], + [ + 7.049816483666566, + 50.95925817925491 + ], + [ + 7.050067748570613, + 50.959045478079325 + ], + [ + 7.049789611937666, + 50.95893447667546 + ], + [ + 7.049692166364522, + 50.95889558747357 + ], + [ + 7.049623223596133, + 50.95886807280257 + ], + [ + 7.04948262900783, + 50.958811396313706 + ], + [ + 7.049047375782203, + 50.958635933435275 + ], + [ + 7.048873418754136, + 50.95856495735446 + ], + [ + 7.048840515078157, + 50.958551673410454 + ], + [ + 7.048812941230125, + 50.958540503893 + ], + [ + 7.048812071727822, + 50.958540150302305 + ], + [ + 7.048716254575399, + 50.95850100958352 + ], + [ + 7.048378439148002, + 50.95836578941385 + ], + [ + 7.048458131334623, + 50.95827586840088 + ], + [ + 7.048705355009095, + 50.95799673851825 + ], + [ + 7.0484125203317545, + 50.9579067472833 + ], + [ + 7.048337681697129, + 50.95788371464678 + ], + [ + 7.048229097640376, + 50.95785034177717 + ], + [ + 7.048205252306066, + 50.95784301356633 + ], + [ + 7.047969623368362, + 50.95776731415046 + ], + [ + 7.0479542278960245, + 50.95776236927242 + ], + [ + 7.047470204454494, + 50.95761539617529 + ], + [ + 7.047396741796019, + 50.95759308924206 + ], + [ + 7.047105117750958, + 50.957504535933275 + ], + [ + 7.045953412832511, + 50.95738014538928 + ], + [ + 7.045724009469633, + 50.95735528952029 + ], + [ + 7.04557759525828, + 50.95733917470732 + ], + [ + 7.04556933300478, + 50.95733826564794 + ], + [ + 7.045315814717242, + 50.95731036027356 + ], + [ + 7.045241140000149, + 50.957302140909164 + ], + [ + 7.045213488712687, + 50.957299096788695 + ], + [ + 7.0452003162290255, + 50.95733521056727 + ], + [ + 7.045128256784194, + 50.9575327645004 + ], + [ + 7.045103810468517, + 50.957599783229746 + ], + [ + 7.045102203421014, + 50.957599157345875 + ], + [ + 7.045089105645541, + 50.95759406618898 + ], + [ + 7.045088280367417, + 50.95759374568778 + ], + [ + 7.04501422162444, + 50.95756507505741 + ], + [ + 7.045012677482184, + 50.95756447720652 + ], + [ + 7.045011803154965, + 50.95756413789621 + ], + [ + 7.044945305488726, + 50.957538360269034 + ], + [ + 7.045010626670974, + 50.957322234165744 + ], + [ + 7.045072370905946, + 50.95711796470898 + ], + [ + 7.0450740917807675, + 50.95711224838316 + ], + [ + 7.045074822892131, + 50.95710982514592 + ], + [ + 7.045077773656624, + 50.95710014972556 + ], + [ + 7.045081453925075, + 50.957088157165934 + ], + [ + 7.045086290335414, + 50.95707175729264 + ], + [ + 7.04508700157823, + 50.95706940027564 + ], + [ + 7.045088805696738, + 50.95706343082326 + ], + [ + 7.045098306527652, + 50.957031912488446 + ], + [ + 7.045102888174919, + 50.957016730585025 + ], + [ + 7.045114893762644, + 50.95697693416706 + ], + [ + 7.0451317582390125, + 50.956921015253 + ], + [ + 7.045178177502574, + 50.956766971367045 + ], + [ + 7.04519280110262, + 50.95671873956553 + ], + [ + 7.045191111192567, + 50.95671879940968 + ], + [ + 7.044926501574782, + 50.956726667654614 + ], + [ + 7.044754272945535, + 50.95673179061678 + ], + [ + 7.044582029753883, + 50.95673692027599 + ], + [ + 7.044409685953621, + 50.95674203720369 + ], + [ + 7.0442374019625325, + 50.95674715308018 + ], + [ + 7.044079200510311, + 50.956751906539 + ], + [ + 7.044079242209718, + 50.95675491471248 + ], + [ + 7.044079374507071, + 50.95676447987154 + ], + [ + 7.044027443135742, + 50.956758021246124 + ], + [ + 7.0439952167265085, + 50.95675406917626 + ], + [ + 7.043991919165498, + 50.95675375581495 + ], + [ + 7.043985166788959, + 50.956752838660904 + ], + [ + 7.043947507847416, + 50.95674878747236 + ], + [ + 7.043844848809584, + 50.956737760026456 + ], + [ + 7.043831026066134, + 50.95673627562216 + ], + [ + 7.0438298423828725, + 50.956736148766005 + ], + [ + 7.043656482308526, + 50.95671755649358 + ], + [ + 7.043581989580551, + 50.9567094407372 + ], + [ + 7.04358244698356, + 50.956703839964185 + ], + [ + 7.0435855715925575, + 50.95666538782602 + ], + [ + 7.043586561659149, + 50.95665320813298 + ], + [ + 7.043582705630711, + 50.95665256253025 + ], + [ + 7.043548244090371, + 50.956646804732635 + ], + [ + 7.043410678290616, + 50.95662381321343 + ], + [ + 7.043390682423025, + 50.95662047154687 + ], + [ + 7.043307868483782, + 50.95660685955073 + ], + [ + 7.043301686289876, + 50.95660565782024 + ], + [ + 7.043298470327673, + 50.95660516503444 + ], + [ + 7.043295310210308, + 50.95660452928609 + ], + [ + 7.043160940202723, + 50.956582075786386 + ], + [ + 7.043120241785063, + 50.956575268098916 + ], + [ + 7.043119279244979, + 50.956575097275625 + ], + [ + 7.043097987920207, + 50.956571544979646 + ], + [ + 7.043093849051001, + 50.956570853249325 + ], + [ + 7.043090220622509, + 50.95657024741953 + ], + [ + 7.04299757104923, + 50.956554749865276 + ], + [ + 7.042979432472042, + 50.956551737847796 + ], + [ + 7.04280281771149, + 50.95652221283049 + ], + [ + 7.042703174582575, + 50.95650554555044 + ], + [ + 7.042333419101613, + 50.95644369369664 + ], + [ + 7.042064377502843, + 50.95639862276787 + ], + [ + 7.042056536837737, + 50.95639731041776 + ], + [ + 7.041918950028949, + 50.95637427720635 + ], + [ + 7.041798515383867, + 50.95635411088343 + ], + [ + 7.0417973200941075, + 50.956353921755735 + ], + [ + 7.041779497684018, + 50.956351115411806 + ], + [ + 7.041778279929481, + 50.9563509187122 + ], + [ + 7.041736309542841, + 50.956344400386335 + ], + [ + 7.041735456491555, + 50.95634426736253 + ], + [ + 7.041725218415776, + 50.95634267195144 + ], + [ + 7.041714749457848, + 50.95634104748474 + ], + [ + 7.04171355066979, + 50.9563407045061 + ], + [ + 7.041706962054443, + 50.95633857042755 + ], + [ + 7.041620952410756, + 50.95631066488369 + ], + [ + 7.041580348082144, + 50.95629749882557 + ], + [ + 7.041565378121126, + 50.956292587215195 + ], + [ + 7.041558850127861, + 50.956290400183136 + ], + [ + 7.041543863271918, + 50.95628551796565 + ], + [ + 7.040933517729819, + 50.95608790746726 + ], + [ + 7.040842343126305, + 50.95605837226813 + ], + [ + 7.040715703118567, + 50.95601734604762 + ], + [ + 7.040708097733221, + 50.95601487737367 + ], + [ + 7.040710427944733, + 50.95601249268867 + ], + [ + 7.040785284600852, + 50.95593619390405 + ], + [ + 7.040824053176449, + 50.95589668061241 + ], + [ + 7.040903167163041, + 50.95581604540389 + ], + [ + 7.040939604379898, + 50.95577890595148 + ], + [ + 7.040985314419147, + 50.95573231595768 + ], + [ + 7.041060309932145, + 50.95565587632937 + ], + [ + 7.04106488591123, + 50.955651217049805 + ], + [ + 7.040699212437481, + 50.95563081452789 + ], + [ + 7.03999258152643, + 50.95559539085141 + ], + [ + 7.039700201045456, + 50.95557959987618 + ], + [ + 7.039227421906441, + 50.95555673156578 + ], + [ + 7.039065072262618, + 50.955547774166284 + ], + [ + 7.0389126907277495, + 50.95554083306632 + ], + [ + 7.038811176578949, + 50.95553466258079 + ], + [ + 7.038806967836427, + 50.95553441650823 + ], + [ + 7.038795312444015, + 50.955533718880275 + ], + [ + 7.038919567858402, + 50.9553808786511 + ], + [ + 7.038980373673665, + 50.95527742339915 + ], + [ + 7.038981613461439, + 50.955275438638125 + ], + [ + 7.03898868504474, + 50.95526376133764 + ], + [ + 7.039323589158345, + 50.95475431941063 + ], + [ + 7.0394804283601555, + 50.95463692564018 + ], + [ + 7.039800649718344, + 50.9543972387596 + ], + [ + 7.039929411865219, + 50.954299904610366 + ], + [ + 7.0400701869846065, + 50.95419346355039 + ], + [ + 7.040108592348365, + 50.95416421964218 + ], + [ + 7.040238972793621, + 50.9540647718315 + ], + [ + 7.04031461842306, + 50.954038365382424 + ], + [ + 7.040374712291526, + 50.95401747628291 + ], + [ + 7.04037657596918, + 50.954016939164475 + ], + [ + 7.040409842629479, + 50.9540063678701 + ], + [ + 7.040431475074185, + 50.95399957919348 + ], + [ + 7.0404535447695755, + 50.95399265215432 + ], + [ + 7.0404486651283955, + 50.95398442740302 + ], + [ + 7.0404377920190395, + 50.95396311252602 + ], + [ + 7.040427529301594, + 50.95394299325604 + ], + [ + 7.040426548329979, + 50.95393165288315 + ], + [ + 7.040422445814061, + 50.95388847295144 + ], + [ + 7.040422373208504, + 50.95388782958601 + ], + [ + 7.0404223022009935, + 50.95388721592646 + ], + [ + 7.040422290211915, + 50.95388658706888 + ], + [ + 7.04042228196592, + 50.95388586923696 + ], + [ + 7.040415032255418, + 50.95380489371776 + ], + [ + 7.04041484752747, + 50.9538017032666 + ], + [ + 7.040411980589781, + 50.953770851885864 + ], + [ + 7.040411834033365, + 50.95376919099641 + ], + [ + 7.0404108699517325, + 50.95375924312404 + ], + [ + 7.040409308988576, + 50.953748794180115 + ], + [ + 7.040479841443863, + 50.9537409222661 + ], + [ + 7.040481322652318, + 50.95374057478856 + ], + [ + 7.040531452455223, + 50.953729079531456 + ], + [ + 7.040589420172382, + 50.95372426407152 + ], + [ + 7.040592107058728, + 50.953724161668134 + ], + [ + 7.040605056243639, + 50.9537235749537 + ], + [ + 7.040663232508109, + 50.95372101137032 + ], + [ + 7.040718402318771, + 50.95372411636956 + ], + [ + 7.040718540131227, + 50.95372304034322 + ], + [ + 7.040719315004463, + 50.953717312698 + ], + [ + 7.040722708320894, + 50.95369205430798 + ], + [ + 7.040723088252512, + 50.9536891827148 + ], + [ + 7.040724923409531, + 50.95367581656567 + ], + [ + 7.040727126406597, + 50.95365881685791 + ], + [ + 7.040726702001968, + 50.953657160299905 + ], + [ + 7.040726488521182, + 50.95365634548991 + ], + [ + 7.040726271400812, + 50.953655549505505 + ], + [ + 7.04071386330272, + 50.953600451217476 + ], + [ + 7.0407080563136315, + 50.95357470117105 + ], + [ + 7.040686854607773, + 50.95348063690296 + ], + [ + 7.0406102792641185, + 50.95314088465647 + ], + [ + 7.040610023603428, + 50.9531397525617 + ], + [ + 7.040608023176137, + 50.95313088182552 + ], + [ + 7.040597797658812, + 50.95308550901142 + ], + [ + 7.0404557207367455, + 50.953066836116676 + ], + [ + 7.039524889278781, + 50.95294449630139 + ], + [ + 7.038726632607795, + 50.95283957454853 + ], + [ + 7.038315604859519, + 50.95278554689442 + ], + [ + 7.03806132091021, + 50.95274908852029 + ], + [ + 7.037705219644652, + 50.95269803044749 + ], + [ + 7.037259081137727, + 50.95263406272412 + ], + [ + 7.037132044557808, + 50.952615850860504 + ], + [ + 7.037123606581737, + 50.95261464145172 + ], + [ + 7.036889534805869, + 50.9525810799193 + ], + [ + 7.036664580614773, + 50.952548826025016 + ], + [ + 7.036649738486771, + 50.95254669855914 + ], + [ + 7.036639774907835, + 50.95254526919706 + ], + [ + 7.03646486384663, + 50.95252019608391 + ], + [ + 7.036405750201969, + 50.95251172187125 + ], + [ + 7.036390441356418, + 50.95255082964585 + ], + [ + 7.0362571360938855, + 50.95289137458855 + ], + [ + 7.036112768689192, + 50.95326017664291 + ], + [ + 7.03485265028159, + 50.956479008923814 + ], + [ + 7.034849222133393, + 50.956487765905514 + ], + [ + 7.034814043970462, + 50.95656155493511 + ], + [ + 7.034737710261721, + 50.9567216684353 + ], + [ + 7.0345840365040235, + 50.95704377060797 + ], + [ + 7.03455003457679, + 50.95711490644242 + ], + [ + 7.0345419248230945, + 50.95713573053681 + ], + [ + 7.034411534548528, + 50.95747052414779 + ], + [ + 7.034237787768281, + 50.957916638689326 + ], + [ + 7.033695921910907, + 50.95930787397331 + ], + [ + 7.033621812512188, + 50.95967196245604 + ], + [ + 7.033557140828457, + 50.95998785275853 + ], + [ + 7.033473269521677, + 50.96039724052178 + ], + [ + 7.033436430465338, + 50.9605770381003 + ], + [ + 7.033103736729887, + 50.96146021910411 + ], + [ + 7.03307861263365, + 50.96152714302478 + ], + [ + 7.032843807193566, + 50.96215135690791 + ], + [ + 7.032710845780657, + 50.96250483267339 + ], + [ + 7.032709820043299, + 50.962507537768616 + ], + [ + 7.032664600677012, + 50.96262777372946 + ], + [ + 7.032547640637107, + 50.96291341090126 + ], + [ + 7.032471876557541, + 50.96309835763781 + ], + [ + 7.032348830422203, + 50.963417687482384 + ], + [ + 7.032303876412565, + 50.96353476740083 + ], + [ + 7.0322777835328925, + 50.96360268839911 + ], + [ + 7.0322389385583435, + 50.963704240281885 + ], + [ + 7.032127533273301, + 50.96398919807482 + ], + [ + 7.03196630755248, + 50.964401436855034 + ], + [ + 7.031814038532299, + 50.964790934848715 + ], + [ + 7.031737489185341, + 50.964986764556706 + ], + [ + 7.031658318133284, + 50.96518910728508 + ], + [ + 7.03119536132632, + 50.966384917322735 + ], + [ + 7.0311308981481995, + 50.96655142246552 + ], + [ + 7.031129761063297, + 50.96655436489974 + ], + [ + 7.031128741802798, + 50.966557013429714 + ], + [ + 7.0311224907769585, + 50.96657428914546 + ], + [ + 7.031097350197277, + 50.96664378902149 + ], + [ + 7.03108783278614, + 50.966669833322854 + ], + [ + 7.031065914441453, + 50.96673029225176 + ], + [ + 7.031045693433525, + 50.96678607791986 + ], + [ + 7.030973727913357, + 50.96696910729835 + ], + [ + 7.030144858155328, + 50.96907660102282 + ], + [ + 7.029732788690948, + 50.97011412094628 + ], + [ + 7.029552419071506, + 50.97058394239179 + ], + [ + 7.029500883962785, + 50.97071546184072 + ], + [ + 7.0291095295223585, + 50.971766078426356 + ], + [ + 7.029037222221521, + 50.972095273537704 + ], + [ + 7.029007701877326, + 50.972170333529554 + ], + [ + 7.028277561916379, + 50.97384135648402 + ], + [ + 7.028257902628561, + 50.973886347072046 + ], + [ + 7.028201475172992, + 50.97401548274026 + ], + [ + 7.02835250707213, + 50.97404172312341 + ], + [ + 7.028363850927269, + 50.97404369360314 + ], + [ + 7.028619517912042, + 50.97408806784549 + ], + [ + 7.028690286847469, + 50.9741003490378 + ], + [ + 7.028764189476825, + 50.97411317414032 + ], + [ + 7.028749871622042, + 50.97418045037708 + ], + [ + 7.030053350019476, + 50.97440456337564 + ], + [ + 7.0311215748507525, + 50.97458786193615 + ], + [ + 7.031521344094513, + 50.97465669290615 + ], + [ + 7.031938832111004, + 50.974728333054024 + ], + [ + 7.0319489348938635, + 50.9747300826076 + ], + [ + 7.032121071202188, + 50.97475989259592 + ], + [ + 7.032125218655497, + 50.974759842875024 + ], + [ + 7.032208755230623, + 50.974758834043946 + ], + [ + 7.032212974011054, + 50.97475878192445 + ], + [ + 7.032310404503238, + 50.97475759074938 + ], + [ + 7.032330901355484, + 50.97476073765215 + ], + [ + 7.034352297076662, + 50.97507112645802 + ], + [ + 7.034866707027376, + 50.97515969560708 + ], + [ + 7.035235130751168, + 50.975227084216996 + ], + [ + 7.035830543198906, + 50.975346842953584 + ], + [ + 7.036505267998037, + 50.97546661380955 + ], + [ + 7.038817021719184, + 50.9758805145636 + ], + [ + 7.039395274475002, + 50.97600256506342 + ], + [ + 7.039977744512779, + 50.97609023608985 + ], + [ + 7.04199781259798, + 50.97645354535466 + ], + [ + 7.042133923178994, + 50.97647839970178 + ], + [ + 7.042294054090265, + 50.976507712714856 + ], + [ + 7.042592101358539, + 50.97656617795973 + ], + [ + 7.042936445292804, + 50.9766254876061 + ], + [ + 7.04413185799017, + 50.9768247902365 + ], + [ + 7.0447948633913695, + 50.97694066249864 + ], + [ + 7.0455281024870535, + 50.977083408464786 + ], + [ + 7.0455369209021494, + 50.97711461281342 + ], + [ + 7.04580144022635, + 50.97716977458683 + ], + [ + 7.046192761992696, + 50.97724087880548 + ], + [ + 7.0471974896097445, + 50.97740617141626 + ], + [ + 7.047520625130179, + 50.97746529806225 + ], + [ + 7.048498345637406, + 50.97764493493286 + ], + [ + 7.049975431598743, + 50.97791859554358 + ], + [ + 7.0504328528555975, + 50.977991012281144 + ], + [ + 7.050479881997795, + 50.97799846618646 + ], + [ + 7.050579555805563, + 50.978022701422624 + ], + [ + 7.0517904155453754, + 50.97831710157326 + ], + [ + 7.051857846397368, + 50.97833349317565 + ], + [ + 7.0519776871926005, + 50.97835565246225 + ], + [ + 7.051986970876899, + 50.97835736862023 + ], + [ + 7.052013336116928, + 50.97836224318132 + ], + [ + 7.052087777961552, + 50.978376007653864 + ], + [ + 7.052195880447148, + 50.978395978826065 + ], + [ + 7.052341098844177, + 50.97841343107715 + ], + [ + 7.052476940818353, + 50.97842975096599 + ], + [ + 7.052799015344551, + 50.97846845761038 + ], + [ + 7.053756211772704, + 50.97858344233709 + ], + [ + 7.053886515581813, + 50.97862875809046 + ], + [ + 7.053940359330059, + 50.97864746903593 + ], + [ + 7.053940603030631, + 50.978646070094925 + ], + [ + 7.053958672349084, + 50.97854251667245 + ], + [ + 7.053963167019523, + 50.978516761043906 + ], + [ + 7.0539754066, + 50.978469219765614 + ], + [ + 7.053981325621181, + 50.97844623002247 + ], + [ + 7.053983460278755, + 50.97843793751792 + ], + [ + 7.053993655233934, + 50.97839834039109 + ], + [ + 7.054014734249055, + 50.978316463133886 + ], + [ + 7.0538943485935235, + 50.978313684377156 + ], + [ + 7.053390848625677, + 50.97817988006167 + ], + [ + 7.052636136121474, + 50.977979309748875 + ], + [ + 7.052358277421296, + 50.97793309295888 + ], + [ + 7.052366386098013, + 50.97790184770624 + ], + [ + 7.052438698502137, + 50.97762322485619 + ], + [ + 7.05244573096378, + 50.9776068011002 + ], + [ + 7.052593248952568, + 50.97719762567732 + ], + [ + 7.052911743343173, + 50.976843720278595 + ], + [ + 7.052937898966435, + 50.976816606274355 + ], + [ + 7.052944851870501, + 50.97680926200729 + ], + [ + 7.052952089790169, + 50.97680191529717 + ], + [ + 7.052965301366475, + 50.97678795266153 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Holweide", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "904", + "Population_rel": 0.019263078563288114, + "Population_abs": 20959 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.062713868040471, + 50.9599834773463 + ], + [ + 7.062932674280024, + 50.95970066887602 + ], + [ + 7.063195683935574, + 50.95936072290183 + ], + [ + 7.063490672176202, + 50.95897943692316 + ], + [ + 7.0639218339247964, + 50.958422402051994 + ], + [ + 7.063931471830457, + 50.958414827352115 + ], + [ + 7.063938376129609, + 50.95840919311505 + ], + [ + 7.063982942417007, + 50.95837400347669 + ], + [ + 7.064050750378452, + 50.95832050954519 + ], + [ + 7.0640806305219845, + 50.958296937148575 + ], + [ + 7.064125815196441, + 50.958261733426646 + ], + [ + 7.064148450796435, + 50.958226697242814 + ], + [ + 7.064139899066288, + 50.95821715262436 + ], + [ + 7.06351178913498, + 50.95753326294039 + ], + [ + 7.063333276817298, + 50.95733244957602 + ], + [ + 7.0633248589957915, + 50.95732297996416 + ], + [ + 7.063316441177684, + 50.957313510351725 + ], + [ + 7.062981365030131, + 50.95693652782143 + ], + [ + 7.062386980390011, + 50.95626818813105 + ], + [ + 7.06214358815185, + 50.95597429403328 + ], + [ + 7.061962985565439, + 50.95575623805719 + ], + [ + 7.061792551786809, + 50.95555966369025 + ], + [ + 7.061398031861841, + 50.95510498380191 + ], + [ + 7.0613885409775, + 50.95509404825144 + ], + [ + 7.061378831045829, + 50.95508320979168 + ], + [ + 7.061052041582271, + 50.95474782773141 + ], + [ + 7.060951095289847, + 50.95463988435363 + ], + [ + 7.060360975567729, + 50.95425627910608 + ], + [ + 7.060272684277571, + 50.95419145846368 + ], + [ + 7.059850369117175, + 50.95406413997828 + ], + [ + 7.059409270859174, + 50.95391191017063 + ], + [ + 7.059266288143823, + 50.95389523007765 + ], + [ + 7.059161158327469, + 50.95387218200708 + ], + [ + 7.058951720894059, + 50.95386212684222 + ], + [ + 7.058600080111151, + 50.953870681772635 + ], + [ + 7.058008945983558, + 50.95388480720362 + ], + [ + 7.057867369799461, + 50.953888158724126 + ], + [ + 7.057755703370302, + 50.95389079709123 + ], + [ + 7.0577502503274365, + 50.953890924024094 + ], + [ + 7.057744797247074, + 50.953891051855415 + ], + [ + 7.057674161473658, + 50.953675964090564 + ], + [ + 7.057642369448134, + 50.9535795999242 + ], + [ + 7.0576327652091635, + 50.953422431070145 + ], + [ + 7.057589346029776, + 50.95271185817893 + ], + [ + 7.057573185032261, + 50.95244737607101 + ], + [ + 7.057567174773333, + 50.95234900891059 + ], + [ + 7.0575641912131, + 50.952318771233124 + ], + [ + 7.057563218428989, + 50.952308876438636 + ], + [ + 7.057562247068071, + 50.95229898166782 + ], + [ + 7.057508001071873, + 50.95174613427023 + ], + [ + 7.0575053366612615, + 50.951718966030164 + ], + [ + 7.057491954901496, + 50.95146832904465 + ], + [ + 7.05748281481324, + 50.95129693990978 + ], + [ + 7.057482178536289, + 50.951286590237366 + ], + [ + 7.057481436076147, + 50.95127615785556 + ], + [ + 7.057478557749822, + 50.95123633110569 + ], + [ + 7.057472876407072, + 50.951103586714396 + ], + [ + 7.05747248628316, + 50.9510960750325 + ], + [ + 7.057472007270945, + 50.95108857806021 + ], + [ + 7.0574011233315135, + 50.9503508520342 + ], + [ + 7.057391935026009, + 50.950251443549874 + ], + [ + 7.057374506210909, + 50.95005598528013 + ], + [ + 7.057374025542768, + 50.95005020156691 + ], + [ + 7.057373484968414, + 50.95004442045433 + ], + [ + 7.057370118074788, + 50.950000436798064 + ], + [ + 7.0573654899432325, + 50.9498912687381 + ], + [ + 7.057352070817695, + 50.94957469956018 + ], + [ + 7.057339958017682, + 50.94928894632688 + ], + [ + 7.05733151608837, + 50.94908980446548 + ], + [ + 7.0573317799825155, + 50.94904728422364 + ], + [ + 7.057334093605407, + 50.94874931482035 + ], + [ + 7.057335156115672, + 50.94861252662071 + ], + [ + 7.057335213910192, + 50.94860434606657 + ], + [ + 7.057335293083024, + 50.94859616496876 + ], + [ + 7.057337304665721, + 50.94844836095701 + ], + [ + 7.057458045590222, + 50.94794879994681 + ], + [ + 7.057465976255859, + 50.94791682279932 + ], + [ + 7.057511601411658, + 50.94780837122529 + ], + [ + 7.057549470308219, + 50.94771838853944 + ], + [ + 7.057550695129749, + 50.94771547519158 + ], + [ + 7.0575519139593865, + 50.947712603114745 + ], + [ + 7.057554745617199, + 50.947706184697616 + ], + [ + 7.057591073371426, + 50.947624069177444 + ], + [ + 7.057637387745124, + 50.94751928763344 + ], + [ + 7.057674135197582, + 50.947448885194866 + ], + [ + 7.057741435990238, + 50.947319949573675 + ], + [ + 7.05808502202128, + 50.94682205971242 + ], + [ + 7.058341010433113, + 50.94655248432443 + ], + [ + 7.058490786471255, + 50.94641105800215 + ], + [ + 7.058575459978823, + 50.94633290381918 + ], + [ + 7.058762256392114, + 50.946160142847646 + ], + [ + 7.058932693876996, + 50.94601485588446 + ], + [ + 7.058995066155068, + 50.945961681896144 + ], + [ + 7.059246161229893, + 50.945747615597256 + ], + [ + 7.059547420182279, + 50.945490768772615 + ], + [ + 7.059797347207402, + 50.94527758664737 + ], + [ + 7.059990356016236, + 50.94511296009699 + ], + [ + 7.060203990498379, + 50.944930745309776 + ], + [ + 7.060245949093477, + 50.94489492287295 + ], + [ + 7.0602515872490175, + 50.94489011861284 + ], + [ + 7.060257204549665, + 50.94488526813838 + ], + [ + 7.060303955826427, + 50.94484566164179 + ], + [ + 7.06031395601932, + 50.94483716061599 + ], + [ + 7.060323971558002, + 50.94482866703922 + ], + [ + 7.060418368799785, + 50.94474898587997 + ], + [ + 7.060421212006893, + 50.94474658504607 + ], + [ + 7.0604239548097825, + 50.944744270681745 + ], + [ + 7.060477197049489, + 50.94469933709553 + ], + [ + 7.0610150194454695, + 50.94424544168339 + ], + [ + 7.061338306949016, + 50.94395834718053 + ], + [ + 7.0617314889188005, + 50.94360913385698 + ], + [ + 7.062244829337538, + 50.94315319043166 + ], + [ + 7.062280257084642, + 50.9431172471796 + ], + [ + 7.062308901478043, + 50.943088187485166 + ], + [ + 7.062495709868034, + 50.94289866474423 + ], + [ + 7.062583920841182, + 50.94284145323109 + ], + [ + 7.062557157171334, + 50.94281977418487 + ], + [ + 7.062552035781405, + 50.94281568792051 + ], + [ + 7.062546834582405, + 50.942811638104736 + ], + [ + 7.062458049807221, + 50.94274251983984 + ], + [ + 7.062450708722807, + 50.94273680036017 + ], + [ + 7.062443922978587, + 50.942730837375294 + ], + [ + 7.062312980663973, + 50.94261067469947 + ], + [ + 7.0622534925654925, + 50.94260218932143 + ], + [ + 7.062238838655044, + 50.942600103295085 + ], + [ + 7.062222232285595, + 50.94259779689203 + ], + [ + 7.062145407765505, + 50.94258713773308 + ], + [ + 7.061857635915111, + 50.94252880707464 + ], + [ + 7.061800463804744, + 50.942517282288065 + ], + [ + 7.061981447309044, + 50.942362422289875 + ], + [ + 7.062306656094843, + 50.942084150110304 + ], + [ + 7.060459750642594, + 50.941737600731514 + ], + [ + 7.059980384133243, + 50.941336445111695 + ], + [ + 7.059584955399684, + 50.94100356390572 + ], + [ + 7.059122122546595, + 50.94061564918234 + ], + [ + 7.058631121486181, + 50.94020254778332 + ], + [ + 7.058044808486578, + 50.93970823619973 + ], + [ + 7.057806671022203, + 50.93950903321548 + ], + [ + 7.057506668106654, + 50.93925708863662 + ], + [ + 7.057310111278918, + 50.93909201487167 + ], + [ + 7.0568585899235075, + 50.93871278887291 + ], + [ + 7.056903482093196, + 50.938690446676276 + ], + [ + 7.056523069865858, + 50.93836705552452 + ], + [ + 7.0562907544112345, + 50.93816689759311 + ], + [ + 7.056037198695873, + 50.937948403571575 + ], + [ + 7.056033280200931, + 50.937942907050804 + ], + [ + 7.056029366665631, + 50.93793712101671 + ], + [ + 7.056028035337409, + 50.93793341234702 + ], + [ + 7.056021843908208, + 50.93792569251791 + ], + [ + 7.055888468821084, + 50.9375651299444 + ], + [ + 7.055862761329343, + 50.93749309341817 + ], + [ + 7.055723724001744, + 50.93709591037365 + ], + [ + 7.055688737135901, + 50.936995816426226 + ], + [ + 7.055587598079366, + 50.936704395756536 + ], + [ + 7.055584379056929, + 50.93669513533074 + ], + [ + 7.055581536202246, + 50.936686035861285 + ], + [ + 7.055584371889288, + 50.936661222817804 + ], + [ + 7.055533412625338, + 50.93654018545119 + ], + [ + 7.055532233773787, + 50.936536713149486 + ], + [ + 7.055531123066063, + 50.9365334839123 + ], + [ + 7.05551694400507, + 50.93649277446777 + ], + [ + 7.055518976699692, + 50.93647291434912 + ], + [ + 7.055343756410498, + 50.93596695140736 + ], + [ + 7.055264990612193, + 50.93576756468453 + ], + [ + 7.055211738338486, + 50.93561477730017 + ], + [ + 7.055098079108969, + 50.93528841220878 + ], + [ + 7.055067501747811, + 50.93520086210866 + ], + [ + 7.055052433467739, + 50.93515740010896 + ], + [ + 7.054919224558019, + 50.934771790705014 + ], + [ + 7.054842460651519, + 50.93454802009695 + ], + [ + 7.054769786199517, + 50.93433691049892 + ], + [ + 7.054766738861765, + 50.93432869347318 + ], + [ + 7.054763515768001, + 50.93431994738926 + ], + [ + 7.054748312773263, + 50.934279010316054 + ], + [ + 7.054667882689115, + 50.93405032819221 + ], + [ + 7.054655494475026, + 50.93404415715317 + ], + [ + 7.054651798946559, + 50.93404233281135 + ], + [ + 7.054641387393778, + 50.93403719120861 + ], + [ + 7.054607543350396, + 50.93402048358303 + ], + [ + 7.054303701153593, + 50.933879077568974 + ], + [ + 7.054215614863536, + 50.93383950230945 + ], + [ + 7.053924925762065, + 50.93370771380886 + ], + [ + 7.05386686865932, + 50.933681179651224 + ], + [ + 7.053615756911642, + 50.93356676578793 + ], + [ + 7.053576368179371, + 50.93354887447782 + ], + [ + 7.053429593599525, + 50.933518642983415 + ], + [ + 7.053459110083765, + 50.93347720758995 + ], + [ + 7.0533100900230945, + 50.933436033679435 + ], + [ + 7.052881924213942, + 50.933317642057 + ], + [ + 7.052552260399001, + 50.93313885112666 + ], + [ + 7.052335133202573, + 50.93301738466706 + ], + [ + 7.051931010776343, + 50.932791440545806 + ], + [ + 7.0518224711036375, + 50.932730782723254 + ], + [ + 7.051817561282091, + 50.93272536034324 + ], + [ + 7.051812645509791, + 50.93271994415931 + ], + [ + 7.051557151921383, + 50.932583326435655 + ], + [ + 7.051545819021812, + 50.932577429893826 + ], + [ + 7.051534705245303, + 50.93257139850578 + ], + [ + 7.051150354320817, + 50.93234648493673 + ], + [ + 7.05114728293416, + 50.93234468259344 + ], + [ + 7.051141012472941, + 50.932341000228064 + ], + [ + 7.051106819564209, + 50.93237392091404 + ], + [ + 7.0504102536702336, + 50.93306862653154 + ], + [ + 7.050007459395196, + 50.933467846144275 + ], + [ + 7.049987482190826, + 50.933487589008834 + ], + [ + 7.049983310587274, + 50.93349170677747 + ], + [ + 7.049974121179276, + 50.93350067555296 + ], + [ + 7.049964708196699, + 50.93350971524047 + ], + [ + 7.049961500893998, + 50.93351279415907 + ], + [ + 7.049934989878309, + 50.93353824317687 + ], + [ + 7.048551015827251, + 50.93486514053501 + ], + [ + 7.047962201819676, + 50.935428981649196 + ], + [ + 7.047366816254639, + 50.93599720044439 + ], + [ + 7.047297568039935, + 50.93606349106508 + ], + [ + 7.047260687540828, + 50.936095710041876 + ], + [ + 7.047223452176531, + 50.936129637264536 + ], + [ + 7.045990322027154, + 50.93731787122256 + ], + [ + 7.044652972171051, + 50.93865587474549 + ], + [ + 7.044575237102886, + 50.93864328024401 + ], + [ + 7.044561852449749, + 50.93864115028938 + ], + [ + 7.044557960723693, + 50.93864037280315 + ], + [ + 7.044542348671221, + 50.93863667661277 + ], + [ + 7.044347399847116, + 50.938590503068596 + ], + [ + 7.044282118842024, + 50.93857504836206 + ], + [ + 7.043450833654258, + 50.9383778694876 + ], + [ + 7.043445390312388, + 50.9383766207724 + ], + [ + 7.043440635572483, + 50.938375583257404 + ], + [ + 7.043367807772317, + 50.938361428846854 + ], + [ + 7.0433609811008315, + 50.93836007330119 + ], + [ + 7.0433486788716, + 50.93835755843214 + ], + [ + 7.043338174018476, + 50.93835613763857 + ], + [ + 7.043330251693929, + 50.93835507850555 + ], + [ + 7.043240015693248, + 50.93834367119809 + ], + [ + 7.043167836285343, + 50.93833329857653 + ], + [ + 7.042315071340259, + 50.93821106721036 + ], + [ + 7.042083933344367, + 50.93817801451396 + ], + [ + 7.0410938279860735, + 50.938036135379136 + ], + [ + 7.041001874312108, + 50.938288747280495 + ], + [ + 7.0404531347802175, + 50.938209279984854 + ], + [ + 7.040404147859015, + 50.93820218551254 + ], + [ + 7.039747289912475, + 50.93810706318888 + ], + [ + 7.039742912505453, + 50.93810643117773 + ], + [ + 7.039737506387209, + 50.9381056541824 + ], + [ + 7.0391255324971675, + 50.93801779703293 + ], + [ + 7.039112651888013, + 50.93801594382787 + ], + [ + 7.039099774767505, + 50.93801407539072 + ], + [ + 7.039004120169127, + 50.93800019765033 + ], + [ + 7.038872249290936, + 50.93798106530073 + ], + [ + 7.0383060194460185, + 50.937899155341455 + ], + [ + 7.038254581033457, + 50.937891713881974 + ], + [ + 7.038258694722483, + 50.937862595829145 + ], + [ + 7.038269204756695, + 50.937788205864486 + ], + [ + 7.038081219671383, + 50.93778610350369 + ], + [ + 7.037889539716387, + 50.93779133244066 + ], + [ + 7.037826284353765, + 50.93779305729281 + ], + [ + 7.037767093072128, + 50.937794673247 + ], + [ + 7.0376755693713715, + 50.93779717208338 + ], + [ + 7.0376701626639315, + 50.937789379013644 + ], + [ + 7.037665958400729, + 50.93778331765308 + ], + [ + 7.037161204208102, + 50.93705564693416 + ], + [ + 7.0371007063965205, + 50.93696842978807 + ], + [ + 7.037001245038342, + 50.936916545640564 + ], + [ + 7.036984332310765, + 50.93691564158176 + ], + [ + 7.036971066254949, + 50.936914838413664 + ], + [ + 7.035000569836196, + 50.936803354442475 + ], + [ + 7.034940236811381, + 50.93679993845792 + ], + [ + 7.034923160222597, + 50.93679897288264 + ], + [ + 7.034918004277938, + 50.93679868193512 + ], + [ + 7.034900016096277, + 50.93679766413733 + ], + [ + 7.034182576096358, + 50.93763952529318 + ], + [ + 7.034180444950889, + 50.937641996844526 + ], + [ + 7.034148069724309, + 50.937679665815665 + ], + [ + 7.033976930596143, + 50.937879690224534 + ], + [ + 7.033627652319439, + 50.93828779024817 + ], + [ + 7.0335257794552914, + 50.93840687108962 + ], + [ + 7.033436104156134, + 50.93851169547962 + ], + [ + 7.033392708986852, + 50.938562420901164 + ], + [ + 7.03330633974056, + 50.93865820377716 + ], + [ + 7.033355334444043, + 50.938686722514575 + ], + [ + 7.033620380167613, + 50.938847878780855 + ], + [ + 7.033997587156452, + 50.939077347997 + ], + [ + 7.034013354611356, + 50.93908692738794 + ], + [ + 7.034017934372975, + 50.939089545228796 + ], + [ + 7.034027685565832, + 50.93909475849676 + ], + [ + 7.034469388782292, + 50.93931688700883 + ], + [ + 7.03458900240865, + 50.939385583586066 + ], + [ + 7.035018465497806, + 50.93963251622658 + ], + [ + 7.035021471021277, + 50.939634256727665 + ], + [ + 7.035208267467819, + 50.93974140362275 + ], + [ + 7.035213504677282, + 50.93974440032217 + ], + [ + 7.035218382850974, + 50.93974669576736 + ], + [ + 7.035551265465315, + 50.93995192235928 + ], + [ + 7.0355599166519, + 50.93995723750153 + ], + [ + 7.035566544432554, + 50.939961657000495 + ], + [ + 7.035764304395081, + 50.94009493512818 + ], + [ + 7.035927177115106, + 50.940235660920365 + ], + [ + 7.0360770662128695, + 50.940365166091965 + ], + [ + 7.036133363202877, + 50.9404014367151 + ], + [ + 7.03616771691778, + 50.94042356796449 + ], + [ + 7.036207406140086, + 50.94044913730145 + ], + [ + 7.036234267924598, + 50.940466478383144 + ], + [ + 7.036245507875133, + 50.94047373558491 + ], + [ + 7.036257683222964, + 50.940481596706526 + ], + [ + 7.036326355137472, + 50.940525931371155 + ], + [ + 7.036491140883078, + 50.940536596808585 + ], + [ + 7.036671113635813, + 50.940938558823234 + ], + [ + 7.036810497113727, + 50.941249927298344 + ], + [ + 7.036941540354213, + 50.94154234596929 + ], + [ + 7.03697477338867, + 50.94162642273847 + ], + [ + 7.036989138879094, + 50.94166276220046 + ], + [ + 7.037074241858787, + 50.9416767843047 + ], + [ + 7.039729740024086, + 50.94204688481589 + ], + [ + 7.039890733018508, + 50.94207598170787 + ], + [ + 7.040493912854464, + 50.942184995571246 + ], + [ + 7.041148192153646, + 50.94233330894567 + ], + [ + 7.041228821289523, + 50.942348871797186 + ], + [ + 7.041233851186122, + 50.942342660623176 + ], + [ + 7.0412388810813615, + 50.94233644944888 + ], + [ + 7.041332027458348, + 50.942357224524486 + ], + [ + 7.041338322686868, + 50.94235762153745 + ], + [ + 7.041354015557353, + 50.942358165425404 + ], + [ + 7.0414275820743555, + 50.94236988177153 + ], + [ + 7.04167888361118, + 50.942409903998374 + ], + [ + 7.041381130601666, + 50.9428150858372 + ], + [ + 7.040848709773109, + 50.943539582142165 + ], + [ + 7.0395386012532954, + 50.94532221612538 + ], + [ + 7.0393236273978985, + 50.94586244214141 + ], + [ + 7.038532945608764, + 50.947849306592005 + ], + [ + 7.0384565965674435, + 50.948041151968155 + ], + [ + 7.03834177958157, + 50.948291463593385 + ], + [ + 7.038091911655901, + 50.948836183265485 + ], + [ + 7.036946641242787, + 50.9513327416587 + ], + [ + 7.0366422566624935, + 50.95199621744445 + ], + [ + 7.036597043246291, + 50.9520914446361 + ], + [ + 7.036532802252139, + 50.95223479256675 + ], + [ + 7.036498688264972, + 50.95230915132621 + ], + [ + 7.036475427167222, + 50.95235985220614 + ], + [ + 7.036464218339708, + 50.952384283839564 + ], + [ + 7.036461725413616, + 50.95238971725345 + ], + [ + 7.036405750164085, + 50.95251172276996 + ], + [ + 7.03646486384663, + 50.95252019608391 + ], + [ + 7.036639772100059, + 50.952545268250475 + ], + [ + 7.03664660366078, + 50.95254624832294 + ], + [ + 7.036650787235622, + 50.95254684840207 + ], + [ + 7.036664580614773, + 50.952548826025016 + ], + [ + 7.036889534805869, + 50.9525810799193 + ], + [ + 7.037123606581737, + 50.95261464145172 + ], + [ + 7.037130105615659, + 50.95261557273567 + ], + [ + 7.037259081137727, + 50.95263406272412 + ], + [ + 7.037705219644652, + 50.95269803044749 + ], + [ + 7.03806132091021, + 50.95274908852029 + ], + [ + 7.038315604859519, + 50.95278554689442 + ], + [ + 7.038726874960157, + 50.95283970273216 + ], + [ + 7.038848437558223, + 50.95285572807904 + ], + [ + 7.039524863827695, + 50.952944559729 + ], + [ + 7.0404557221217985, + 50.95306683703929 + ], + [ + 7.040597797658812, + 50.95308550901142 + ], + [ + 7.040608023176137, + 50.95313088182552 + ], + [ + 7.040609141538399, + 50.9531358426071 + ], + [ + 7.04061007406332, + 50.95313997465242 + ], + [ + 7.040686854607773, + 50.95348063690296 + ], + [ + 7.0407080563136315, + 50.95357470117105 + ], + [ + 7.04071386330272, + 50.953600451217476 + ], + [ + 7.040726573790708, + 50.95365763571131 + ], + [ + 7.040725228457476, + 50.95367049384473 + ], + [ + 7.040724792042361, + 50.95367491139839 + ], + [ + 7.040723830948545, + 50.953682358203224 + ], + [ + 7.040722712610302, + 50.9536909706448 + ], + [ + 7.040719305044367, + 50.953717312530834 + ], + [ + 7.04071896295845, + 50.953719927540654 + ], + [ + 7.040718478454333, + 50.953723524965476 + ], + [ + 7.040663232508109, + 50.95372101137032 + ], + [ + 7.040605059264666, + 50.953723604683454 + ], + [ + 7.040598092012261, + 50.95372391495508 + ], + [ + 7.040591392795445, + 50.95372438621413 + ], + [ + 7.040531452455223, + 50.953729079531456 + ], + [ + 7.040479053445052, + 50.95374107182591 + ], + [ + 7.040409308988576, + 50.953748794180115 + ], + [ + 7.040409802677982, + 50.953752052772465 + ], + [ + 7.040410582363331, + 50.95375836231534 + ], + [ + 7.040411736171299, + 50.95377016336655 + ], + [ + 7.040414897684293, + 50.953802947930676 + ], + [ + 7.040418345983519, + 50.953842013978424 + ], + [ + 7.0404222947552615, + 50.95388664830198 + ], + [ + 7.040426698072212, + 50.95393164730209 + ], + [ + 7.0404272128930705, + 50.953937280573314 + ], + [ + 7.0404290776907485, + 50.953942741340036 + ], + [ + 7.0404377920190395, + 50.95396311252602 + ], + [ + 7.04044874844927, + 50.95398440991478 + ], + [ + 7.0404535447695755, + 50.95399265215432 + ], + [ + 7.040431566973947, + 50.9539994593216 + ], + [ + 7.040409759388011, + 50.95400628193265 + ], + [ + 7.040392507267071, + 50.95401167186423 + ], + [ + 7.040375480275545, + 50.95401729491004 + ], + [ + 7.040311924797183, + 50.95403933825201 + ], + [ + 7.040304966477326, + 50.95404177025907 + ], + [ + 7.040294107402761, + 50.95404570888231 + ], + [ + 7.040238705670293, + 50.95406567210921 + ], + [ + 7.040235151880921, + 50.954067798814336 + ], + [ + 7.040231814905219, + 50.95407035635721 + ], + [ + 7.040115723841475, + 50.95415878937167 + ], + [ + 7.0401123375292665, + 50.95416136856713 + ], + [ + 7.0401090351193405, + 50.954163882617856 + ], + [ + 7.040081155369288, + 50.954185101006054 + ], + [ + 7.040071052909823, + 50.9541927819778 + ], + [ + 7.0400667717321905, + 50.95419601977457 + ], + [ + 7.040063376021612, + 50.95419858532037 + ], + [ + 7.03992935896792, + 50.95429987584196 + ], + [ + 7.039800546656, + 50.9543971839667 + ], + [ + 7.039480418021601, + 50.95463693446025 + ], + [ + 7.039342777238315, + 50.954740664601694 + ], + [ + 7.039336664231172, + 50.95474597972232 + ], + [ + 7.039333235554486, + 50.95474969857919 + ], + [ + 7.039324721710671, + 50.95475373135818 + ], + [ + 7.039102122273591, + 50.955093249256066 + ], + [ + 7.038989083529656, + 50.95526386786012 + ], + [ + 7.038985217025118, + 50.95526986733835 + ], + [ + 7.0389830508363245, + 50.95527322515953 + ], + [ + 7.038981624694307, + 50.955275611504945 + ], + [ + 7.038979818841404, + 50.95527862912265 + ], + [ + 7.038977747851658, + 50.95528212704496 + ], + [ + 7.038919567858402, + 50.9553808786511 + ], + [ + 7.038856910411171, + 50.95545799543605 + ], + [ + 7.038854316948903, + 50.95546118599088 + ], + [ + 7.03884693740633, + 50.95547026703909 + ], + [ + 7.038844653185033, + 50.95547307965848 + ], + [ + 7.038842496148306, + 50.95547584764718 + ], + [ + 7.038838404495909, + 50.95548114003507 + ], + [ + 7.038824893418274, + 50.955498880604566 + ], + [ + 7.038818093998817, + 50.95550730496586 + ], + [ + 7.038814118368919, + 50.95551220897726 + ], + [ + 7.038811247447861, + 50.955516713340025 + ], + [ + 7.038805099846128, + 50.95552189924276 + ], + [ + 7.038795312444015, + 50.955533718880275 + ], + [ + 7.038808961458091, + 50.95553454892628 + ], + [ + 7.038887053069659, + 50.955539171206915 + ], + [ + 7.038901845118919, + 50.955540078000766 + ], + [ + 7.0389125554208505, + 50.95554069858692 + ], + [ + 7.038936870774237, + 50.9555419083342 + ], + [ + 7.038944809637312, + 50.95554230339348 + ], + [ + 7.038952910539626, + 50.95554267149486 + ], + [ + 7.038999318462321, + 50.955544787421786 + ], + [ + 7.039066079837247, + 50.955547889119615 + ], + [ + 7.039079034586554, + 50.95554853569483 + ], + [ + 7.039094805682518, + 50.95554938965632 + ], + [ + 7.039160156049067, + 50.955552827348384 + ], + [ + 7.039227442454022, + 50.95555658171685 + ], + [ + 7.039532595858754, + 50.95557144615915 + ], + [ + 7.039583624706695, + 50.95557392904015 + ], + [ + 7.039688161869994, + 50.95557902090564 + ], + [ + 7.039693878658254, + 50.95557929856185 + ], + [ + 7.039699880130726, + 50.95557961247536 + ], + [ + 7.039776835130707, + 50.95558373841251 + ], + [ + 7.039805445187114, + 50.955585284496365 + ], + [ + 7.039910773082768, + 50.955590975823725 + ], + [ + 7.03994909525676, + 50.95559304196729 + ], + [ + 7.0399543191867275, + 50.955593323927886 + ], + [ + 7.039961551995201, + 50.95559371425983 + ], + [ + 7.039965976103826, + 50.955593952214386 + ], + [ + 7.039976273436686, + 50.9555945064119 + ], + [ + 7.039992199265154, + 50.955595338566646 + ], + [ + 7.039997915414708, + 50.95559563148642 + ], + [ + 7.0400344637328685, + 50.95559748615189 + ], + [ + 7.040047297336718, + 50.95559813598201 + ], + [ + 7.040057256672295, + 50.95559863503336 + ], + [ + 7.040101535845066, + 50.955600854188056 + ], + [ + 7.0401189991434086, + 50.955601729221975 + ], + [ + 7.040127975176965, + 50.95560217938419 + ], + [ + 7.040136787838867, + 50.9556026205078 + ], + [ + 7.040227000110273, + 50.95560714316157 + ], + [ + 7.04033949685563, + 50.955612784452654 + ], + [ + 7.040494802868539, + 50.95562075757318 + ], + [ + 7.040614036959528, + 50.955627601702524 + ], + [ + 7.040628188016787, + 50.95562773665722 + ], + [ + 7.040642183889156, + 50.95562817568938 + ], + [ + 7.040698845772472, + 50.95563089921066 + ], + [ + 7.040861692997813, + 50.95563992294034 + ], + [ + 7.041003698914898, + 50.95564784578516 + ], + [ + 7.041037616587008, + 50.95564985295815 + ], + [ + 7.041063739610359, + 50.95565219970961 + ], + [ + 7.041059993226296, + 50.95565575499753 + ], + [ + 7.041057189801787, + 50.95565835479228 + ], + [ + 7.040985314419147, + 50.95573231595768 + ], + [ + 7.040939604342097, + 50.95577890685021 + ], + [ + 7.040903167163041, + 50.95581604540389 + ], + [ + 7.040824053176449, + 50.95589668061241 + ], + [ + 7.040785284600852, + 50.95593619390405 + ], + [ + 7.040710504356437, + 50.95601439972533 + ], + [ + 7.040716332775121, + 50.95601659485181 + ], + [ + 7.040842343126305, + 50.95605837226813 + ], + [ + 7.04093351915277, + 50.95608790749115 + ], + [ + 7.041543819701184, + 50.95628557209603 + ], + [ + 7.04156018377671, + 50.95629088842454 + ], + [ + 7.041566495156309, + 50.95629294411325 + ], + [ + 7.041572855546086, + 50.9562950195104 + ], + [ + 7.041580372058608, + 50.956297470448064 + ], + [ + 7.041620953833703, + 50.95631066490755 + ], + [ + 7.041707606332968, + 50.95633774212637 + ], + [ + 7.041713368845731, + 50.956339677979294 + ], + [ + 7.041722645919137, + 50.95634181128185 + ], + [ + 7.041728877236018, + 50.956342825053746 + ], + [ + 7.041736007314842, + 50.95634400229486 + ], + [ + 7.041778893019413, + 50.956350967667596 + ], + [ + 7.041788386681902, + 50.9563525218091 + ], + [ + 7.041797471228229, + 50.95635401872382 + ], + [ + 7.0419189297547575, + 50.95637431913648 + ], + [ + 7.041974158290092, + 50.956383555476926 + ], + [ + 7.042058369788228, + 50.956397641543354 + ], + [ + 7.042064366559869, + 50.95639864596784 + ], + [ + 7.042194211871321, + 50.95642041599532 + ], + [ + 7.042261475572143, + 50.95643165633549 + ], + [ + 7.042271636772094, + 50.95643335383719 + ], + [ + 7.042284188925922, + 50.95643545477198 + ], + [ + 7.042333415802402, + 50.956443704433696 + ], + [ + 7.0426443540272885, + 50.95649571151843 + ], + [ + 7.042650165626359, + 50.956496684028664 + ], + [ + 7.04270317293301, + 50.956505550919005 + ], + [ + 7.042789997779161, + 50.956520078683326 + ], + [ + 7.042802816137458, + 50.95652221640157 + ], + [ + 7.042979361890597, + 50.95655172317428 + ], + [ + 7.042988500954456, + 50.95655324609177 + ], + [ + 7.04299756782569, + 50.95655475880487 + ], + [ + 7.04309317172083, + 50.95657074026863 + ], + [ + 7.0430979878824465, + 50.95657154587839 + ], + [ + 7.043104153088335, + 50.95657257555633 + ], + [ + 7.043119756806586, + 50.956575186222565 + ], + [ + 7.043160940164962, + 50.956582076685116 + ], + [ + 7.043296946797975, + 50.95660489127715 + ], + [ + 7.04330237461538, + 50.956605814153484 + ], + [ + 7.043307908097777, + 50.95660676398259 + ], + [ + 7.043392127211921, + 50.95662072149927 + ], + [ + 7.043400679588347, + 50.95662214371674 + ], + [ + 7.043410678215107, + 50.956623815010886 + ], + [ + 7.043548244090371, + 50.956646804732635 + ], + [ + 7.0435849767297105, + 50.95665310782735 + ], + [ + 7.043585103721134, + 50.956660356135664 + ], + [ + 7.043584885875924, + 50.95666537273842 + ], + [ + 7.0435823519560365, + 50.95670501743882 + ], + [ + 7.0435820469404895, + 50.95670946508182 + ], + [ + 7.043609965580729, + 50.956712506876684 + ], + [ + 7.043637716165904, + 50.95671476969729 + ], + [ + 7.043649201705161, + 50.956716468583544 + ], + [ + 7.0436564839202385, + 50.95671755202378 + ], + [ + 7.043830487340309, + 50.956736218929855 + ], + [ + 7.04383726902024, + 50.956736946817955 + ], + [ + 7.043844848734092, + 50.95673776182393 + ], + [ + 7.043947504246596, + 50.9567488053993 + ], + [ + 7.043985207179215, + 50.95675265676655 + ], + [ + 7.043989408466287, + 50.95675311747472 + ], + [ + 7.04399487601868, + 50.95675367134549 + ], + [ + 7.04400540442392, + 50.95675486760558 + ], + [ + 7.044017076995569, + 50.95675611451034 + ], + [ + 7.04402745925995, + 50.95675784074399 + ], + [ + 7.044064546087758, + 50.956762630593694 + ], + [ + 7.0440691111803035, + 50.95676317653762 + ], + [ + 7.044079373306548, + 50.95676437282704 + ], + [ + 7.044078836658087, + 50.95675697645698 + ], + [ + 7.0440792005166575, + 50.95675302534857 + ], + [ + 7.044083704633722, + 50.95675258186887 + ], + [ + 7.044094469285824, + 50.95675174681666 + ], + [ + 7.0441156775089855, + 50.95675148333285 + ], + [ + 7.0441230663407115, + 50.95675077429771 + ], + [ + 7.0441293408225585, + 50.956750559232574 + ], + [ + 7.044211758574153, + 50.956747947564914 + ], + [ + 7.044237400803732, + 50.956747146765224 + ], + [ + 7.044399680264726, + 50.95674233008924 + ], + [ + 7.044409582039447, + 50.956742036362556 + ], + [ + 7.044561298121998, + 50.95673753358499 + ], + [ + 7.044571805862602, + 50.95673722121361 + ], + [ + 7.044580320411639, + 50.956736968094134 + ], + [ + 7.044754272945535, + 50.95673179061678 + ], + [ + 7.044926501574782, + 50.956726667654614 + ], + [ + 7.045191887096075, + 50.95671876923085 + ], + [ + 7.0451840622762365, + 50.95674676224632 + ], + [ + 7.045182464422678, + 50.95675229626393 + ], + [ + 7.045181384892883, + 50.95675603213661 + ], + [ + 7.0451804537278475, + 50.95675915083126 + ], + [ + 7.04517822053271, + 50.95676659075696 + ], + [ + 7.045177316133157, + 50.956769614567094 + ], + [ + 7.045169983095711, + 50.95679413437575 + ], + [ + 7.04515321944202, + 50.95684982474667 + ], + [ + 7.045131751124156, + 50.95692101513388 + ], + [ + 7.045114888108472, + 50.956976933173024 + ], + [ + 7.045102885328963, + 50.95701673053736 + ], + [ + 7.045100246867545, + 50.957025479445974 + ], + [ + 7.045098307912913, + 50.95703191341104 + ], + [ + 7.045088815619838, + 50.95706343188877 + ], + [ + 7.04508694136245, + 50.95706964749197 + ], + [ + 7.045085148099114, + 50.95707562971718 + ], + [ + 7.04508403718293, + 50.95707933268624 + ], + [ + 7.045081506992659, + 50.95708777492525 + ], + [ + 7.045079646946297, + 50.95709392331393 + ], + [ + 7.045077724338512, + 50.957100273012074 + ], + [ + 7.045074673650742, + 50.957110361366325 + ], + [ + 7.045073420486958, + 50.957114501742716 + ], + [ + 7.045072376560134, + 50.95711796570302 + ], + [ + 7.045010626670974, + 50.957322234165744 + ], + [ + 7.044945305488726, + 50.957538360269034 + ], + [ + 7.045012901689946, + 50.95756456370217 + ], + [ + 7.045088671685732, + 50.95759388804379 + ], + [ + 7.045092433870456, + 50.95759534684889 + ], + [ + 7.0450959496453605, + 50.95759670529615 + ], + [ + 7.045103202880701, + 50.957599433097045 + ], + [ + 7.045127867352639, + 50.95753196653954 + ], + [ + 7.0451303274100345, + 50.95752685796857 + ], + [ + 7.045132571788903, + 50.957520713316214 + ], + [ + 7.045200401419441, + 50.95733521649041 + ], + [ + 7.045213672983732, + 50.95729911696172 + ], + [ + 7.045224818253146, + 50.95730034412398 + ], + [ + 7.045230990333847, + 50.95730104373702 + ], + [ + 7.045241013985532, + 50.957302157686065 + ], + [ + 7.045315814679521, + 50.957310361172276 + ], + [ + 7.04556933300478, + 50.95733826564794 + ], + [ + 7.0455733514379615, + 50.957338707948594 + ], + [ + 7.04557759525828, + 50.95733917470732 + ], + [ + 7.045647219805458, + 50.95734683715652 + ], + [ + 7.045724009507345, + 50.95735528862154 + ], + [ + 7.045953415980147, + 50.957380138247046 + ], + [ + 7.046453150185377, + 50.957434128180985 + ], + [ + 7.046470599951601, + 50.95743602371077 + ], + [ + 7.046481320957121, + 50.957437182497216 + ], + [ + 7.046486003180294, + 50.95743768803566 + ], + [ + 7.046490676903331, + 50.95743819253233 + ], + [ + 7.047105227378514, + 50.95750460431986 + ], + [ + 7.0473966273560364, + 50.95759323752201 + ], + [ + 7.047470118634067, + 50.9576155071606 + ], + [ + 7.047735570553875, + 50.957696054685854 + ], + [ + 7.047954151028811, + 50.957762470514766 + ], + [ + 7.047962042041411, + 50.95776490121721 + ], + [ + 7.047969612842341, + 50.95776732746493 + ], + [ + 7.0482048912602595, + 50.95784276020577 + ], + [ + 7.048218663988528, + 50.95784711402255 + ], + [ + 7.048229112510669, + 50.957850326736555 + ], + [ + 7.0483376846937915, + 50.95788371109942 + ], + [ + 7.048385170625416, + 50.957898328064694 + ], + [ + 7.048399225074928, + 50.95790265419185 + ], + [ + 7.048412502246973, + 50.95790673708802 + ], + [ + 7.048479372270894, + 50.95792728824751 + ], + [ + 7.04850100619433, + 50.9579339372942 + ], + [ + 7.048539149567347, + 50.95794566037961 + ], + [ + 7.048705362794039, + 50.95799675663562 + ], + [ + 7.048600744832358, + 50.95811487448799 + ], + [ + 7.048570868566546, + 50.958148602244044 + ], + [ + 7.048458163657787, + 50.958275844658345 + ], + [ + 7.048378439148002, + 50.95836578941385 + ], + [ + 7.048716218540105, + 50.95850105394949 + ], + [ + 7.048812502571514, + 50.95854030140048 + ], + [ + 7.048824955691466, + 50.958545364273995 + ], + [ + 7.048839338045133, + 50.9585511824743 + ], + [ + 7.048873418754136, + 50.95856495735446 + ], + [ + 7.049047375782203, + 50.958635933435275 + ], + [ + 7.04948262900783, + 50.958811396313706 + ], + [ + 7.049623223596133, + 50.95886807280257 + ], + [ + 7.049692166364522, + 50.95889558747357 + ], + [ + 7.049789611937666, + 50.95893447667546 + ], + [ + 7.050067748570613, + 50.959045478079325 + ], + [ + 7.049816483666566, + 50.95925817925491 + ], + [ + 7.0497675903929276, + 50.959299161415835 + ], + [ + 7.049742621088919, + 50.95932000979938 + ], + [ + 7.04973650121088, + 50.95932502675427 + ], + [ + 7.049728569746711, + 50.95933147671368 + ], + [ + 7.049449296996833, + 50.95954419583321 + ], + [ + 7.049461726323754, + 50.95954966475091 + ], + [ + 7.049470893806485, + 50.95955341805179 + ], + [ + 7.049475806971457, + 50.95955545354665 + ], + [ + 7.0494803773604655, + 50.95955734301434 + ], + [ + 7.049562421596993, + 50.959591743601514 + ], + [ + 7.049568144594822, + 50.95959382409827 + ], + [ + 7.0498005886314665, + 50.95966026471416 + ], + [ + 7.049817596823752, + 50.95966514454404 + ], + [ + 7.0498283615109685, + 50.959668232883466 + ], + [ + 7.049836838161051, + 50.95967066514338 + ], + [ + 7.050029282196849, + 50.95972568890156 + ], + [ + 7.051003172049995, + 50.960027828387155 + ], + [ + 7.0511630531435046, + 50.96007737818742 + ], + [ + 7.051268087284065, + 50.960110099942675 + ], + [ + 7.051404928032949, + 50.96015225162484 + ], + [ + 7.051624287160949, + 50.960219990121495 + ], + [ + 7.051663792875024, + 50.96023199211768 + ], + [ + 7.051728066848384, + 50.96025442539681 + ], + [ + 7.052092271844446, + 50.96036602608895 + ], + [ + 7.052195531373191, + 50.960395855621236 + ], + [ + 7.0522050574231, + 50.96039860380219 + ], + [ + 7.052216315297196, + 50.96040206348916 + ], + [ + 7.052573510336716, + 50.960516662916035 + ], + [ + 7.052828013207203, + 50.960598508102066 + ], + [ + 7.053044519677441, + 50.960668019336566 + ], + [ + 7.053278483472222, + 50.960754183339176 + ], + [ + 7.0534706677272325, + 50.96082424337475 + ], + [ + 7.053474523354737, + 50.960825693570726 + ], + [ + 7.053908773291128, + 50.96098716033635 + ], + [ + 7.053905587722652, + 50.96099168949491 + ], + [ + 7.053903163720629, + 50.96099513592281 + ], + [ + 7.0553362479551325, + 50.9614740679696 + ], + [ + 7.055735311580553, + 50.96159675937825 + ], + [ + 7.055823683408229, + 50.96162715258256 + ], + [ + 7.055920634816998, + 50.96165712197156 + ], + [ + 7.056191491194956, + 50.96174084817902 + ], + [ + 7.056408128657568, + 50.961807294752575 + ], + [ + 7.056435732487264, + 50.961782792433766 + ], + [ + 7.057973549820983, + 50.96046149602945 + ], + [ + 7.058022346916716, + 50.96041956813904 + ], + [ + 7.058331099504224, + 50.96030763835082 + ], + [ + 7.05833174851788, + 50.96030419739052 + ], + [ + 7.0583843802736945, + 50.960024949093494 + ], + [ + 7.058420389975883, + 50.95983429936326 + ], + [ + 7.0584222021063106, + 50.9598245471309 + ], + [ + 7.058423670445354, + 50.959816721911686 + ], + [ + 7.058424711965837, + 50.959810936544045 + ], + [ + 7.058451396496557, + 50.95981259711081 + ], + [ + 7.058464078964862, + 50.95981335301542 + ], + [ + 7.058478729392718, + 50.959814042712715 + ], + [ + 7.059000730068286, + 50.95996014863688 + ], + [ + 7.059090173240832, + 50.95999385605192 + ], + [ + 7.059902218326247, + 50.96089073252297 + ], + [ + 7.060209570357803, + 50.961215125239356 + ], + [ + 7.060213999758749, + 50.96121979816437 + ], + [ + 7.0602183805126, + 50.96122447657653 + ], + [ + 7.060348811954454, + 50.961362581977674 + ], + [ + 7.060535536573252, + 50.96155881003258 + ], + [ + 7.060726445661513, + 50.96168417549192 + ], + [ + 7.060905904242189, + 50.96180202156853 + ], + [ + 7.0613039409399345, + 50.96203500149882 + ], + [ + 7.061539614033381, + 50.962126437543695 + ], + [ + 7.0615938096629405, + 50.962137271629075 + ], + [ + 7.06166109301544, + 50.962135310989375 + ], + [ + 7.061679415760728, + 50.962132062680816 + ], + [ + 7.061688864494552, + 50.96213042890604 + ], + [ + 7.06169896921287, + 50.96212860276437 + ], + [ + 7.061712417507949, + 50.96212630420106 + ], + [ + 7.061754562203083, + 50.96210182887406 + ], + [ + 7.061803214863436, + 50.96206309155836 + ], + [ + 7.061862847557372, + 50.9619654645976 + ], + [ + 7.061885344957558, + 50.961928634130544 + ], + [ + 7.061917724051359, + 50.961875624478694 + ], + [ + 7.062052955167077, + 50.96165423103681 + ], + [ + 7.062411761498761, + 50.960897658210634 + ], + [ + 7.0627030945564995, + 50.960016077639146 + ], + [ + 7.062713868040471, + 50.9599834773463 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Merheim", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "806", + "Population_rel": 0.010300172787765155, + "Population_abs": 11207 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.05536329896491, + 51.01868318569814 + ], + [ + 7.055525228142413, + 51.018683328064476 + ], + [ + 7.055559538323099, + 51.01868422206545 + ], + [ + 7.055612946292427, + 51.01868672272649 + ], + [ + 7.055681531574555, + 51.018690065067226 + ], + [ + 7.05572748299288, + 51.01869241278217 + ], + [ + 7.0557932054156245, + 51.01869615798283 + ], + [ + 7.0558604065452215, + 51.01870010582941 + ], + [ + 7.055984827439247, + 51.01870678304827 + ], + [ + 7.056044317708397, + 51.018711817489795 + ], + [ + 7.056119703184218, + 51.018724393096235 + ], + [ + 7.056199744213487, + 51.01873805789865 + ], + [ + 7.056245990034333, + 51.01874567513033 + ], + [ + 7.056289288473967, + 51.0187529887826 + ], + [ + 7.056343852546323, + 51.01876218065804 + ], + [ + 7.056367242181454, + 51.01876610700424 + ], + [ + 7.056477410074026, + 51.01878458799824 + ], + [ + 7.056500994632611, + 51.01878859310644 + ], + [ + 7.0565633788637765, + 51.01879916779073 + ], + [ + 7.056815890719731, + 51.018841254868605 + ], + [ + 7.0570199228191814, + 51.01887520797916 + ], + [ + 7.057051444704716, + 51.0188802839268 + ], + [ + 7.0570977376454485, + 51.01888794027532 + ], + [ + 7.057274396858088, + 51.01891703710586 + ], + [ + 7.05729971146036, + 51.01892120482853 + ], + [ + 7.057583952944478, + 51.01895231068926 + ], + [ + 7.057648763334709, + 51.01895929623896 + ], + [ + 7.05772007859759, + 51.01895901430623 + ], + [ + 7.057751615372047, + 51.01891819175586 + ], + [ + 7.057779050677611, + 51.018883286206176 + ], + [ + 7.057792959726858, + 51.01886411929388 + ], + [ + 7.05783192242635, + 51.01881254609643 + ], + [ + 7.057871498743665, + 51.01876048124839 + ], + [ + 7.057897814026429, + 51.01872500844306 + ], + [ + 7.057937945469179, + 51.01867091576424 + ], + [ + 7.057986192279676, + 51.01860735018776 + ], + [ + 7.058039472629059, + 51.01853715549107 + ], + [ + 7.058142813276107, + 51.01840099702032 + ], + [ + 7.0582494202625545, + 51.018260974267605 + ], + [ + 7.058500115777262, + 51.01793168854216 + ], + [ + 7.058593805248213, + 51.01780788108352 + ], + [ + 7.058631333443178, + 51.01775961229063 + ], + [ + 7.058654709185047, + 51.01773085720477 + ], + [ + 7.059114223060442, + 51.01794373582647 + ], + [ + 7.059210067125886, + 51.01798814026815 + ], + [ + 7.059283168382652, + 51.01802201396652 + ], + [ + 7.05955265731121, + 51.0181468776756 + ], + [ + 7.059605408460238, + 51.0181712459944 + ], + [ + 7.059656399275464, + 51.01819485027563 + ], + [ + 7.059678452476502, + 51.01820513827599 + ], + [ + 7.059729852293987, + 51.01822898854666 + ], + [ + 7.060009700034196, + 51.01835862254375 + ], + [ + 7.060203812804798, + 51.018448559233875 + ], + [ + 7.060261764796139, + 51.01847565861835 + ], + [ + 7.060298326379733, + 51.01849267536288 + ], + [ + 7.06040307884543, + 51.018541070576006 + ], + [ + 7.060573695814054, + 51.018620019410456 + ], + [ + 7.06088206457058, + 51.01876307011774 + ], + [ + 7.060938326479383, + 51.01878876329395 + ], + [ + 7.0610530285610436, + 51.01884115612366 + ], + [ + 7.0611938520122886, + 51.01885980064523 + ], + [ + 7.061327762989496, + 51.018876325612844 + ], + [ + 7.062249676119502, + 51.018989980411604 + ], + [ + 7.062682483028649, + 51.019043309639414 + ], + [ + 7.062824454372883, + 51.01905969046261 + ], + [ + 7.062966745071813, + 51.0190498026839 + ], + [ + 7.063811672858465, + 51.018984700784735 + ], + [ + 7.063899570040155, + 51.018977937577716 + ], + [ + 7.064159364293941, + 51.01895796160137 + ], + [ + 7.064191012676922, + 51.01895560455404 + ], + [ + 7.064213540162843, + 51.01895395703004 + ], + [ + 7.065906747859432, + 51.01882352201258 + ], + [ + 7.066229286637625, + 51.01879865176682 + ], + [ + 7.066303242340523, + 51.0187929528256 + ], + [ + 7.067219591295645, + 51.01872244601281 + ], + [ + 7.067383231623823, + 51.01870982942538 + ], + [ + 7.067502387865541, + 51.018671702197615 + ], + [ + 7.067527040157819, + 51.018663218127536 + ], + [ + 7.067566246885446, + 51.01865108242772 + ], + [ + 7.067596686289559, + 51.018640482569886 + ], + [ + 7.068093602532632, + 51.01845659646071 + ], + [ + 7.068223993381482, + 51.018408861247714 + ], + [ + 7.068355292840147, + 51.018360630982045 + ], + [ + 7.068383992068773, + 51.01834996886821 + ], + [ + 7.068291196329428, + 51.0182787911152 + ], + [ + 7.06817290883453, + 51.01818804627029 + ], + [ + 7.068145088217165, + 51.018166734660014 + ], + [ + 7.068075754494538, + 51.01811362064087 + ], + [ + 7.068023149845564, + 51.01806504530378 + ], + [ + 7.06805606268025, + 51.0180144164426 + ], + [ + 7.068110721755316, + 51.017930564468024 + ], + [ + 7.068453235624435, + 51.01741794204461 + ], + [ + 7.068546575396941, + 51.01734806058988 + ], + [ + 7.068881316157081, + 51.01709705623637 + ], + [ + 7.0678264224662275, + 51.01643245317868 + ], + [ + 7.0677168057056, + 51.01636336467887 + ], + [ + 7.0674479898658396, + 51.01619395541224 + ], + [ + 7.067346781332384, + 51.0161301643589 + ], + [ + 7.0672479220807345, + 51.01606779529352 + ], + [ + 7.067014810491544, + 51.015920784199274 + ], + [ + 7.066855694479709, + 51.015820438902765 + ], + [ + 7.06614284193394, + 51.01536762937865 + ], + [ + 7.06584316771733, + 51.015177270313494 + ], + [ + 7.065556812538356, + 51.0149953691186 + ], + [ + 7.065453885383702, + 51.0149306197877 + ], + [ + 7.063495494026967, + 51.01407757106083 + ], + [ + 7.062770184045776, + 51.01376128082908 + ], + [ + 7.062615486867402, + 51.01369384284721 + ], + [ + 7.062279450763088, + 51.01354753328573 + ], + [ + 7.061959863470068, + 51.0134076211642 + ], + [ + 7.061850083259781, + 51.013359581814825 + ], + [ + 7.061786681611795, + 51.01333160130645 + ], + [ + 7.061869914275635, + 51.01325944484029 + ], + [ + 7.062082046582071, + 51.0130769338407 + ], + [ + 7.062243863787176, + 51.012937709217596 + ], + [ + 7.062796965316614, + 51.01246179857926 + ], + [ + 7.062969291326223, + 51.01231374020956 + ], + [ + 7.06412140336305, + 51.011322425203716 + ], + [ + 7.064204049606851, + 51.0112513024237 + ], + [ + 7.06432575264302, + 51.0111464795757 + ], + [ + 7.064752305234914, + 51.01077993129616 + ], + [ + 7.064823417327878, + 51.010718851639446 + ], + [ + 7.065074816151747, + 51.01050280403225 + ], + [ + 7.065430727012549, + 51.01019633902118 + ], + [ + 7.06557936058293, + 51.01006021548844 + ], + [ + 7.06598940276244, + 51.00970800292295 + ], + [ + 7.0661492520345375, + 51.00957086014329 + ], + [ + 7.066325598261545, + 51.00941939822215 + ], + [ + 7.066636316776792, + 51.00915271443583 + ], + [ + 7.0669237181841655, + 51.008906598007535 + ], + [ + 7.067058591628613, + 51.008790648546984 + ], + [ + 7.067190697358777, + 51.00867716862889 + ], + [ + 7.067406904276594, + 51.0084858424543 + ], + [ + 7.067644991370253, + 51.00827517480044 + ], + [ + 7.06769952164325, + 51.00822519142682 + ], + [ + 7.06778408661529, + 51.008147730451036 + ], + [ + 7.067871743095296, + 51.0080674956804 + ], + [ + 7.068033356124619, + 51.00791847566523 + ], + [ + 7.068195995955233, + 51.00776945442413 + ], + [ + 7.068358447410296, + 51.00762020680366 + ], + [ + 7.068579136351399, + 51.00743399079095 + ], + [ + 7.068615723750721, + 51.0074031732303 + ], + [ + 7.068650991837533, + 51.007373469728364 + ], + [ + 7.06897258103224, + 51.007102046367905 + ], + [ + 7.069791853454598, + 51.00641098951264 + ], + [ + 7.069861117500521, + 51.00635244933632 + ], + [ + 7.069937011898238, + 51.00628829698631 + ], + [ + 7.069966992097301, + 51.00626296651228 + ], + [ + 7.0699861704133085, + 51.00624682881894 + ], + [ + 7.0700366411463245, + 51.00620503066582 + ], + [ + 7.070090384371855, + 51.00616004618724 + ], + [ + 7.070103184593466, + 51.006148795407825 + ], + [ + 7.070140009954399, + 51.0061189265287 + ], + [ + 7.0701698062167795, + 51.00609362624015 + ], + [ + 7.070277445270167, + 51.006001545275254 + ], + [ + 7.070330980931765, + 51.0059557460398 + ], + [ + 7.070368358144282, + 51.00592377002461 + ], + [ + 7.070425326915272, + 51.005875719719214 + ], + [ + 7.070613661163244, + 51.00571680941903 + ], + [ + 7.070658075450032, + 51.00567944100629 + ], + [ + 7.070726802644776, + 51.005621280874976 + ], + [ + 7.070964749867398, + 51.00542081549215 + ], + [ + 7.07106360090006, + 51.00533721618142 + ], + [ + 7.071093186444996, + 51.00531236635415 + ], + [ + 7.071114206715631, + 51.005294072565 + ], + [ + 7.071128395641135, + 51.0052836612223 + ], + [ + 7.071153012458277, + 51.00526529461547 + ], + [ + 7.071213358749066, + 51.005219972589174 + ], + [ + 7.071230341525089, + 51.00520705230346 + ], + [ + 7.071261313893732, + 51.00518625624381 + ], + [ + 7.071368895067152, + 51.00511419476639 + ], + [ + 7.071520362935526, + 51.00501304509644 + ], + [ + 7.071548917710256, + 51.00499389353615 + ], + [ + 7.071779886930611, + 51.004839333086 + ], + [ + 7.072016985757017, + 51.00468129123359 + ], + [ + 7.072925820707065, + 51.00407550996038 + ], + [ + 7.073041193322437, + 51.00399860657445 + ], + [ + 7.073071582902028, + 51.003978350830096 + ], + [ + 7.073124625992136, + 51.003943006195406 + ], + [ + 7.073152420353413, + 51.00392432015919 + ], + [ + 7.073307768873526, + 51.00381986772881 + ], + [ + 7.073510530969693, + 51.003683459731725 + ], + [ + 7.073707063566426, + 51.00355126734893 + ], + [ + 7.074141269981094, + 51.0032601908095 + ], + [ + 7.074174562254638, + 51.00323724680553 + ], + [ + 7.074510523232473, + 51.00301225328233 + ], + [ + 7.074553325067195, + 51.00298342767371 + ], + [ + 7.074672541555524, + 51.00290354354309 + ], + [ + 7.07472092689076, + 51.00287112525659 + ], + [ + 7.074743578352482, + 51.00285588853543 + ], + [ + 7.074760155551849, + 51.00284511051461 + ], + [ + 7.07479057774518, + 51.00282537289366 + ], + [ + 7.074903605281684, + 51.00275042649998 + ], + [ + 7.07493354787218, + 51.002730736697245 + ], + [ + 7.075041494857774, + 51.002659751731656 + ], + [ + 7.075127052286521, + 51.00260314979821 + ], + [ + 7.075187412590808, + 51.00256295679078 + ], + [ + 7.0752228158475825, + 51.002539815246294 + ], + [ + 7.07526024645137, + 51.00251535267203 + ], + [ + 7.075370030667327, + 51.00244303605894 + ], + [ + 7.0756615872796225, + 51.00225138409588 + ], + [ + 7.075958707033842, + 51.00205691724081 + ], + [ + 7.076052136735163, + 51.00199543581209 + ], + [ + 7.076023052041769, + 51.00194363682769 + ], + [ + 7.0758715577638345, + 51.00167278810577 + ], + [ + 7.075685454846353, + 51.00134005814529 + ], + [ + 7.0755217379735305, + 51.001056019959634 + ], + [ + 7.075488322870968, + 51.00103573392254 + ], + [ + 7.07529347395166, + 51.00092983119059 + ], + [ + 7.074887570751911, + 51.00070899071111 + ], + [ + 7.074839703909931, + 51.00068236145792 + ], + [ + 7.074652280045598, + 51.00058109208555 + ], + [ + 7.074603243452729, + 51.00055442456391 + ], + [ + 7.074585689902619, + 51.00054480887748 + ], + [ + 7.074564407347298, + 51.0005332412696 + ], + [ + 7.074527010057797, + 51.000512902793346 + ], + [ + 7.074395557397074, + 51.000441067072174 + ], + [ + 7.074359244870946, + 51.00042134899341 + ], + [ + 7.074335979008118, + 51.00040869999563 + ], + [ + 7.074318154963835, + 51.00039901055804 + ], + [ + 7.074286933536353, + 51.00038208345523 + ], + [ + 7.074128101733782, + 51.00032542409662 + ], + [ + 7.074089789709669, + 51.000311900997374 + ], + [ + 7.074067017960388, + 51.00030497909268 + ], + [ + 7.074012671554081, + 51.000284810638554 + ], + [ + 7.073960767009449, + 51.00026639030236 + ], + [ + 7.073773607443496, + 51.00019939468346 + ], + [ + 7.073721012972333, + 51.00018056804392 + ], + [ + 7.073635713540514, + 51.000150049961526 + ], + [ + 7.073508485951302, + 51.00010437230854 + ], + [ + 7.0734408005999505, + 51.00007880597554 + ], + [ + 7.073315531262044, + 51.00001040042511 + ], + [ + 7.072831943845242, + 50.9997444239695 + ], + [ + 7.07256734001805, + 50.999599364229404 + ], + [ + 7.072497155700219, + 50.99952937650337 + ], + [ + 7.072469411574785, + 50.99950217179769 + ], + [ + 7.072435307960593, + 50.999467642103205 + ], + [ + 7.072415178690795, + 50.999447703041575 + ], + [ + 7.0722638107286855, + 50.99929734981303 + ], + [ + 7.072078610187974, + 50.999113597042815 + ], + [ + 7.0720000503647436, + 50.99903565085294 + ], + [ + 7.07196852670482, + 50.99900426008607 + ], + [ + 7.071789266839928, + 50.99882571324362 + ], + [ + 7.071731327000235, + 50.99876828882871 + ], + [ + 7.071693861536759, + 50.99873106199587 + ], + [ + 7.071682758363529, + 50.998720074718776 + ], + [ + 7.071599753741207, + 50.99863764442137 + ], + [ + 7.071587494277485, + 50.99862546528331 + ], + [ + 7.071513643797994, + 50.998551983565136 + ], + [ + 7.071479167649552, + 50.99851767226608 + ], + [ + 7.071381565394511, + 50.99842086739155 + ], + [ + 7.071299207647931, + 50.99833905102021 + ], + [ + 7.071285796322917, + 50.998325644992676 + ], + [ + 7.071234858978757, + 50.998274634146505 + ], + [ + 7.0702223382262295, + 50.99726591005531 + ], + [ + 7.070144517372994, + 50.997188094383766 + ], + [ + 7.070083257286439, + 50.99713752130536 + ], + [ + 7.0685303616666895, + 50.99585164988283 + ], + [ + 7.068486734891166, + 50.9958155432067 + ], + [ + 7.068446607711988, + 50.99578202608015 + ], + [ + 7.067552155117211, + 50.99478077135053 + ], + [ + 7.067526519712137, + 50.99475621743729 + ], + [ + 7.067502092126834, + 50.99472554089718 + ], + [ + 7.0674891144112655, + 50.9947109760224 + ], + [ + 7.067377378977442, + 50.99458599257565 + ], + [ + 7.067284822447074, + 50.99448253503295 + ], + [ + 7.0672530147961306, + 50.99442770639382 + ], + [ + 7.06691501861288, + 50.993845114766025 + ], + [ + 7.06684514783855, + 50.99372564245678 + ], + [ + 7.066835948363139, + 50.99370977841702 + ], + [ + 7.066827919088262, + 50.99369600136792 + ], + [ + 7.06679284804636, + 50.99363588161754 + ], + [ + 7.066782878450893, + 50.993619380671724 + ], + [ + 7.0667630869112035, + 50.99359523898812 + ], + [ + 7.065939931941034, + 50.993566859916356 + ], + [ + 7.065690472321578, + 50.993558613986465 + ], + [ + 7.062683810991781, + 50.992859689095724 + ], + [ + 7.062415296088159, + 50.992771610543656 + ], + [ + 7.062355161353686, + 50.992751935004165 + ], + [ + 7.062096691514756, + 50.99266727714353 + ], + [ + 7.061946472080291, + 50.992618042103345 + ], + [ + 7.061921293751649, + 50.99260799485543 + ], + [ + 7.061884769299118, + 50.9925920259078 + ], + [ + 7.061842247098243, + 50.992575365636036 + ], + [ + 7.061823611019865, + 50.99256799190613 + ], + [ + 7.061171311432613, + 50.99230264383566 + ], + [ + 7.060944522556036, + 50.99221794273518 + ], + [ + 7.0602900114304905, + 50.991848766148905 + ], + [ + 7.060118020568272, + 50.99175189507112 + ], + [ + 7.059227722323186, + 50.99126918370996 + ], + [ + 7.059187852342969, + 50.991248196549115 + ], + [ + 7.05914328435896, + 50.99122460770064 + ], + [ + 7.059053715466073, + 50.99118032948212 + ], + [ + 7.058457168521625, + 50.990879543195824 + ], + [ + 7.058220604306422, + 50.99076132150259 + ], + [ + 7.057455809155664, + 50.99038207215014 + ], + [ + 7.056972921391055, + 50.99014257842684 + ], + [ + 7.056849626923219, + 50.99008138613493 + ], + [ + 7.056214807377776, + 50.989767472767184 + ], + [ + 7.056027374553741, + 50.989675338056244 + ], + [ + 7.051136922979772, + 50.98726556207071 + ], + [ + 7.049909131320605, + 50.98668286584762 + ], + [ + 7.049765863426965, + 50.986615399331775 + ], + [ + 7.049739596618244, + 50.986602972215394 + ], + [ + 7.049425652488369, + 50.98645412457144 + ], + [ + 7.04940097414188, + 50.98649659565218 + ], + [ + 7.049235740362216, + 50.98674160120837 + ], + [ + 7.049015874561607, + 50.987185042355954 + ], + [ + 7.048953172953979, + 50.9871715297168 + ], + [ + 7.048889932827436, + 50.9871579477895 + ], + [ + 7.0488799730042855, + 50.98718291579776 + ], + [ + 7.048867275655442, + 50.98721424420841 + ], + [ + 7.048761476447859, + 50.98742985900016 + ], + [ + 7.048743858023065, + 50.98748661731371 + ], + [ + 7.048693512493622, + 50.98764882284601 + ], + [ + 7.0486547231811345, + 50.987773850352845 + ], + [ + 7.048522836762565, + 50.98829812187518 + ], + [ + 7.048516293068962, + 50.988323710833 + ], + [ + 7.048410943076566, + 50.98874274906991 + ], + [ + 7.048226110750532, + 50.98948377864233 + ], + [ + 7.048051486541964, + 50.99018507390982 + ], + [ + 7.048007921804914, + 50.9903755882624 + ], + [ + 7.047837204317725, + 50.99102929499275 + ], + [ + 7.047756065723986, + 50.99134123232085 + ], + [ + 7.047537500724462, + 50.992223424970966 + ], + [ + 7.047392658155279, + 50.99278700524107 + ], + [ + 7.047323592858104, + 50.992781422056325 + ], + [ + 7.047260947213243, + 50.99277632120257 + ], + [ + 7.047108687115012, + 50.992763933569265 + ], + [ + 7.0462609520612105, + 50.99267786644464 + ], + [ + 7.045997450686592, + 50.99265299042358 + ], + [ + 7.045810743085069, + 50.99263524644245 + ], + [ + 7.04562960518576, + 50.99261817095742 + ], + [ + 7.045466872344008, + 50.992558052290576 + ], + [ + 7.045330137709274, + 50.99250758876092 + ], + [ + 7.045281588193421, + 50.99248959481633 + ], + [ + 7.0449835491282355, + 50.99237771716575 + ], + [ + 7.044887329802545, + 50.992415678240086 + ], + [ + 7.044917269398899, + 50.99242705720136 + ], + [ + 7.045208585200431, + 50.99253771357546 + ], + [ + 7.045062272944334, + 50.992601013085824 + ], + [ + 7.044865671479645, + 50.9926861388943 + ], + [ + 7.0449016993519455, + 50.99272033040719 + ], + [ + 7.0449927286581975, + 50.99280671691757 + ], + [ + 7.044938475432846, + 50.9928312497973 + ], + [ + 7.044867707559739, + 50.99286312645645 + ], + [ + 7.044824358008953, + 50.9928826956852 + ], + [ + 7.04475723941542, + 50.99291098287131 + ], + [ + 7.044692566752388, + 50.99293803567808 + ], + [ + 7.044421626938428, + 50.99305112462241 + ], + [ + 7.044221666250801, + 50.99313462462594 + ], + [ + 7.04420034567923, + 50.993155670539416 + ], + [ + 7.044180280307614, + 50.993175536824616 + ], + [ + 7.044244741891263, + 50.993788029668615 + ], + [ + 7.044195851301081, + 50.994027671757834 + ], + [ + 7.043673879476611, + 50.99420888940128 + ], + [ + 7.043463835137682, + 50.99440826176576 + ], + [ + 7.043067453962313, + 50.99478467940536 + ], + [ + 7.0430821388492655, + 50.99496307597139 + ], + [ + 7.043048416290425, + 50.9949647251373 + ], + [ + 7.043014725832961, + 50.99496781290703 + ], + [ + 7.04298149329007, + 50.994972244788315 + ], + [ + 7.042948713367076, + 50.99497784172027 + ], + [ + 7.042916532003092, + 50.99498469158804 + ], + [ + 7.042885238154605, + 50.9949929719113 + ], + [ + 7.042854676832329, + 50.99500223401122 + ], + [ + 7.042825143671212, + 50.99501283539157 + ], + [ + 7.0426823331298705, + 50.994863091020356 + ], + [ + 7.041885055325496, + 50.99479704016133 + ], + [ + 7.04130583629737, + 50.994748916679946 + ], + [ + 7.040726073899889, + 50.99470103302218 + ], + [ + 7.040537916067668, + 50.995019851574526 + ], + [ + 7.040445556557811, + 50.9950301141476 + ], + [ + 7.040314277674154, + 50.99498166273937 + ], + [ + 7.039961887087257, + 50.99485175989458 + ], + [ + 7.0398784078564525, + 50.994848460312824 + ], + [ + 7.038572605176409, + 50.9958492658551 + ], + [ + 7.038449360169058, + 50.99594367118198 + ], + [ + 7.038383012244094, + 50.99597707244719 + ], + [ + 7.03806113857579, + 50.99613922552214 + ], + [ + 7.037828323423525, + 50.99623891872933 + ], + [ + 7.037804029012659, + 50.99624741782153 + ], + [ + 7.037664324151859, + 50.996288199360094 + ], + [ + 7.037623456093871, + 50.99628883294127 + ], + [ + 7.037454499463046, + 50.99629323197049 + ], + [ + 7.037406731635089, + 50.99624429733194 + ], + [ + 7.037366127994075, + 50.99620269773008 + ], + [ + 7.037343570577694, + 50.99617773375547 + ], + [ + 7.037083918112072, + 50.995914475785646 + ], + [ + 7.036998349560045, + 50.99582712443055 + ], + [ + 7.036969992942393, + 50.99580112757306 + ], + [ + 7.036951375917511, + 50.995783943559864 + ], + [ + 7.036670434246316, + 50.995513974610326 + ], + [ + 7.036559314405916, + 50.995411224430484 + ], + [ + 7.0365124765029785, + 50.99536768321559 + ], + [ + 7.036338199656374, + 50.99522414356207 + ], + [ + 7.036189557014449, + 50.99510590558509 + ], + [ + 7.036168351445246, + 50.99508753123149 + ], + [ + 7.036118967117084, + 50.99504477534476 + ], + [ + 7.036053172231727, + 50.994990480787955 + ], + [ + 7.036002030931797, + 50.994947758259606 + ], + [ + 7.035929911384857, + 50.99490271511437 + ], + [ + 7.0355866911165785, + 50.994694871646516 + ], + [ + 7.035191221507576, + 50.994476575344216 + ], + [ + 7.035175419336289, + 50.99446784741254 + ], + [ + 7.035149147525121, + 50.994453704564485 + ], + [ + 7.034940137485127, + 50.99434283225441 + ], + [ + 7.034546998408791, + 50.99417012734154 + ], + [ + 7.034470933669874, + 50.99413210384061 + ], + [ + 7.034446267236086, + 50.99412024704298 + ], + [ + 7.034414383835274, + 50.99410515788871 + ], + [ + 7.034211041174474, + 50.994012915451734 + ], + [ + 7.033866084935486, + 50.9938376061386 + ], + [ + 7.033513933330872, + 50.99365585302465 + ], + [ + 7.033415821113441, + 50.99361820135563 + ], + [ + 7.032802126585806, + 50.993402701825815 + ], + [ + 7.031849783831848, + 50.99279338048489 + ], + [ + 7.0314980476726925, + 50.99248115517056 + ], + [ + 7.031478400301105, + 50.992463679483706 + ], + [ + 7.031463143816203, + 50.99245017113925 + ], + [ + 7.0307541811127034, + 50.99170276267378 + ], + [ + 7.030415296115188, + 50.99173165893417 + ], + [ + 7.030361707327343, + 50.99173570164127 + ], + [ + 7.030148746842605, + 50.991756053495294 + ], + [ + 7.030116837544658, + 50.99175887528597 + ], + [ + 7.030093723139083, + 50.99176090018844 + ], + [ + 7.0300642914617635, + 50.99176339771626 + ], + [ + 7.03000785334133, + 50.991768060424505 + ], + [ + 7.029963576369553, + 50.99184288236849 + ], + [ + 7.029955260376166, + 50.99185653019579 + ], + [ + 7.02991136674578, + 50.99192529149532 + ], + [ + 7.029880498722219, + 50.991973543135586 + ], + [ + 7.029818322410458, + 50.99206633899213 + ], + [ + 7.029740769398939, + 50.99218228487698 + ], + [ + 7.029708113449211, + 50.992231121471484 + ], + [ + 7.029628474603273, + 50.9923501384859 + ], + [ + 7.029557655417554, + 50.99242447199438 + ], + [ + 7.029676175191555, + 50.99247206922856 + ], + [ + 7.02977672859362, + 50.99251245255363 + ], + [ + 7.02982924088409, + 50.99253354528387 + ], + [ + 7.029816699092279, + 50.9925475705937 + ], + [ + 7.0296797135794336, + 50.99268930127345 + ], + [ + 7.029584033964208, + 50.99278767889664 + ], + [ + 7.029677681316424, + 50.99282569108513 + ], + [ + 7.029671645165965, + 50.992852526914724 + ], + [ + 7.029692496177098, + 50.99290815432879 + ], + [ + 7.029684253669211, + 50.992920195318135 + ], + [ + 7.029713589808697, + 50.9929321499036 + ], + [ + 7.029805703371838, + 50.992969373451885 + ], + [ + 7.0297393448292205, + 50.99303779976775 + ], + [ + 7.029657497117419, + 50.99311836511813 + ], + [ + 7.02958460805456, + 50.99315544635689 + ], + [ + 7.029535927695128, + 50.993175450628165 + ], + [ + 7.029307464596206, + 50.99308387743339 + ], + [ + 7.029041023195156, + 50.993337787405245 + ], + [ + 7.028896364896645, + 50.993282644332574 + ], + [ + 7.028505773104905, + 50.9936404419833 + ], + [ + 7.028439348382019, + 50.99370467902683 + ], + [ + 7.028383304039214, + 50.99375879358953 + ], + [ + 7.028348540066831, + 50.99379180863133 + ], + [ + 7.02832975748147, + 50.99380958668359 + ], + [ + 7.028318381354558, + 50.9938206024651 + ], + [ + 7.02832353177487, + 50.99395732846227 + ], + [ + 7.028328148164476, + 50.994030640478826 + ], + [ + 7.02833034251871, + 50.994065409953485 + ], + [ + 7.02825696596193, + 50.99412942790218 + ], + [ + 7.028223590392437, + 50.994158593698366 + ], + [ + 7.028185282766819, + 50.99419891283234 + ], + [ + 7.028053620898805, + 50.994226536923215 + ], + [ + 7.028014128305615, + 50.99426784237902 + ], + [ + 7.02795262111786, + 50.994326710254185 + ], + [ + 7.0278899310600496, + 50.9943884990342 + ], + [ + 7.027779929630225, + 50.994496734978625 + ], + [ + 7.027761601972758, + 50.994505049450524 + ], + [ + 7.0277189183174595, + 50.994523023653684 + ], + [ + 7.02768840657963, + 50.9945335381446 + ], + [ + 7.027644825439528, + 50.99454296672365 + ], + [ + 7.027619779096579, + 50.99454783377457 + ], + [ + 7.027585136523158, + 50.99455698879127 + ], + [ + 7.027553920876167, + 50.994568037271385 + ], + [ + 7.027522425140154, + 50.9945826991427 + ], + [ + 7.027490400803774, + 50.994602129484385 + ], + [ + 7.027473336511671, + 50.99461462569388 + ], + [ + 7.027458508467113, + 50.99462822541377 + ], + [ + 7.027442163429661, + 50.99464466307582 + ], + [ + 7.027396039087385, + 50.994690867555384 + ], + [ + 7.027305775707072, + 50.99478205808366 + ], + [ + 7.027295284666272, + 50.99479756303855 + ], + [ + 7.027292149984185, + 50.99481283700303 + ], + [ + 7.027293683415717, + 50.99482842814833 + ], + [ + 7.027304634946894, + 50.99484715885913 + ], + [ + 7.027320693143718, + 50.9948609744781 + ], + [ + 7.0273414177375955, + 50.99487222479222 + ], + [ + 7.027571756438217, + 50.994964716631145 + ], + [ + 7.027531519288897, + 50.99500614605334 + ], + [ + 7.027131191108397, + 50.99545055856608 + ], + [ + 7.027225297038857, + 50.99549315908114 + ], + [ + 7.0269671687293505, + 50.99582618308594 + ], + [ + 7.026905186813273, + 50.9959027777951 + ], + [ + 7.027075626465026, + 50.99595808899746 + ], + [ + 7.027313945322029, + 50.996035189541395 + ], + [ + 7.027290342030489, + 50.996072812244094 + ], + [ + 7.027222996474354, + 50.99616112063325 + ], + [ + 7.027083189607472, + 50.99631301018409 + ], + [ + 7.026936884398726, + 50.9964479681381 + ], + [ + 7.026747544478442, + 50.996595260237974 + ], + [ + 7.026496728686203, + 50.99679055539836 + ], + [ + 7.0264822834330865, + 50.99680179434563 + ], + [ + 7.02645463085827, + 50.99682331105145 + ], + [ + 7.0262377840607355, + 50.99699203425771 + ], + [ + 7.026197868628809, + 50.99702302528168 + ], + [ + 7.026168749678648, + 50.99705907239661 + ], + [ + 7.0261438580500295, + 50.99710693480524 + ], + [ + 7.026143058449448, + 50.99719881170079 + ], + [ + 7.026169827044766, + 50.997234231262226 + ], + [ + 7.026201878713379, + 50.99727664089916 + ], + [ + 7.0262171667500315, + 50.997296861485715 + ], + [ + 7.026296651867899, + 50.99740168073988 + ], + [ + 7.026320275186254, + 50.99743300448358 + ], + [ + 7.02640277841447, + 50.99754221228189 + ], + [ + 7.02641246345882, + 50.997555025455284 + ], + [ + 7.026442829461198, + 50.99759485055269 + ], + [ + 7.026462736921407, + 50.99765130796866 + ], + [ + 7.026466634703791, + 50.99769235411079 + ], + [ + 7.026461675715827, + 50.997745165324055 + ], + [ + 7.026429112320946, + 50.99784924131033 + ], + [ + 7.0263631493192715, + 50.9980508578569 + ], + [ + 7.026361126923687, + 50.998073996612064 + ], + [ + 7.026357795303097, + 50.99811220091996 + ], + [ + 7.026356188690758, + 50.9981306133651 + ], + [ + 7.026235966114497, + 50.998089937046196 + ], + [ + 7.026200601097109, + 50.998076486610884 + ], + [ + 7.0261186515690435, + 50.99804522305456 + ], + [ + 7.025897413599255, + 50.99796142621976 + ], + [ + 7.025736062410409, + 50.997903396221545 + ], + [ + 7.025582234735937, + 50.99785132374349 + ], + [ + 7.025564362866645, + 50.99784523602025 + ], + [ + 7.025190208454336, + 50.99770321180949 + ], + [ + 7.0250143732256864, + 50.99767518140294 + ], + [ + 7.02481849539719, + 50.99764265222513 + ], + [ + 7.024748000070054, + 50.997630595700166 + ], + [ + 7.024686371177092, + 50.997620080404154 + ], + [ + 7.0246626332537, + 50.9976159735497 + ], + [ + 7.023851366789813, + 50.99752157225268 + ], + [ + 7.023771597444708, + 50.9975143919397 + ], + [ + 7.023319374793489, + 50.99746388171607 + ], + [ + 7.023231690356001, + 50.997454043462554 + ], + [ + 7.023168127862108, + 50.99745137753531 + ], + [ + 7.022909000581059, + 50.99737470952954 + ], + [ + 7.022806639181413, + 50.99737560729494 + ], + [ + 7.02277967834912, + 50.99737584337085 + ], + [ + 7.022681769466372, + 50.99736735152716 + ], + [ + 7.022624076901787, + 50.99735068989194 + ], + [ + 7.022298704625809, + 50.99725672299995 + ], + [ + 7.0222365801329785, + 50.997256009145055 + ], + [ + 7.0220704055427, + 50.997297915732254 + ], + [ + 7.021924648320329, + 50.99732256379261 + ], + [ + 7.021875362041439, + 50.997322654467915 + ], + [ + 7.021598068972908, + 50.99732542223406 + ], + [ + 7.021380661441457, + 50.997304817725166 + ], + [ + 7.0206999648175925, + 50.99728575511251 + ], + [ + 7.020371072323543, + 50.997257947655264 + ], + [ + 7.019792441124579, + 50.99719729287579 + ], + [ + 7.019018849424042, + 50.99709222136483 + ], + [ + 7.018662295544509, + 50.99706629801361 + ], + [ + 7.018487115588727, + 50.99704246797206 + ], + [ + 7.018280392029891, + 50.99701445102408 + ], + [ + 7.018161663657604, + 50.99699833886198 + ], + [ + 7.0180238001072155, + 50.99697936205088 + ], + [ + 7.017997554680238, + 50.996976359767125 + ], + [ + 7.017577133356854, + 50.996918001044364 + ], + [ + 7.01703174280678, + 50.99684230002355 + ], + [ + 7.016593803069367, + 50.99674940608032 + ], + [ + 7.016445706504711, + 50.996718767858546 + ], + [ + 7.015985221099624, + 50.99662353528531 + ], + [ + 7.0157830473078695, + 50.996541065550346 + ], + [ + 7.015674760581001, + 50.996496792038485 + ], + [ + 7.015519638344789, + 50.9964335087248 + ], + [ + 7.015271916529826, + 50.9963468492566 + ], + [ + 7.014965506821422, + 50.99623103543419 + ], + [ + 7.014944174791385, + 50.99622438901364 + ], + [ + 7.014816950763011, + 50.99618441374244 + ], + [ + 7.014768949247863, + 50.99617152746197 + ], + [ + 7.014720229339185, + 50.996158377128296 + ], + [ + 7.014643858120879, + 50.996137916169836 + ], + [ + 7.01451367035504, + 50.99611225929627 + ], + [ + 7.0144042313210235, + 50.996103907120876 + ], + [ + 7.014341733009459, + 50.996099101392055 + ], + [ + 7.013983336484148, + 50.996068703895126 + ], + [ + 7.013943505735137, + 50.99606603267498 + ], + [ + 7.013736221433473, + 50.99606031847725 + ], + [ + 7.013401710535071, + 50.99605076343073 + ], + [ + 7.0131192073914, + 50.99604610877315 + ], + [ + 7.013019573500139, + 50.99604483910477 + ], + [ + 7.012972365614458, + 50.99604438128469 + ], + [ + 7.01274026161159, + 50.99604414825234 + ], + [ + 7.012240009804033, + 50.99599975853003 + ], + [ + 7.012656950623473, + 50.99785450092682 + ], + [ + 7.012708350153275, + 50.99807903077882 + ], + [ + 7.0129216686591995, + 50.99896345621279 + ], + [ + 7.0131769128023285, + 51.000186210334796 + ], + [ + 7.013238984176808, + 51.00047115435758 + ], + [ + 7.01324445239166, + 51.00049655812103 + ], + [ + 7.013780397601045, + 51.00307748232522 + ], + [ + 7.013788109720768, + 51.003140597565626 + ], + [ + 7.013845626763813, + 51.00348748001491 + ], + [ + 7.013853109713609, + 51.00353260501859 + ], + [ + 7.013859938528576, + 51.003561776815985 + ], + [ + 7.013865790120687, + 51.003576452275055 + ], + [ + 7.013873660229271, + 51.003608109626626 + ], + [ + 7.013879619778923, + 51.00363053581916 + ], + [ + 7.013884621664436, + 51.003653991683606 + ], + [ + 7.013959147991654, + 51.0040313764302 + ], + [ + 7.014004546059133, + 51.00426294430331 + ], + [ + 7.0140106572111405, + 51.00429370474767 + ], + [ + 7.014017307406507, + 51.0043408454322 + ], + [ + 7.014025423762505, + 51.004395108805944 + ], + [ + 7.0140280652786275, + 51.00441239088117 + ], + [ + 7.014039130203341, + 51.00448996367269 + ], + [ + 7.014065964558168, + 51.004676969072975 + ], + [ + 7.014104237511655, + 51.004945689755395 + ], + [ + 7.014118867694969, + 51.00505116287918 + ], + [ + 7.014158601466982, + 51.00533472084213 + ], + [ + 7.0141686534430505, + 51.0054274081376 + ], + [ + 7.014178849589655, + 51.00552963650663 + ], + [ + 7.014193362154488, + 51.005687264261944 + ], + [ + 7.014204698148541, + 51.00583042394219 + ], + [ + 7.01421096119473, + 51.005907963621134 + ], + [ + 7.014218989551176, + 51.00600501437335 + ], + [ + 7.014227485387658, + 51.00610270172482 + ], + [ + 7.0142362065084845, + 51.00622057996308 + ], + [ + 7.014252183749754, + 51.00638303877957 + ], + [ + 7.014277203693852, + 51.006773198658415 + ], + [ + 7.014275439519293, + 51.00679551239002 + ], + [ + 7.014276265982443, + 51.00689157279894 + ], + [ + 7.0142802712974825, + 51.00699013711001 + ], + [ + 7.014282756545659, + 51.00705083226592 + ], + [ + 7.014289283058612, + 51.007218629073655 + ], + [ + 7.014287940944718, + 51.00736786419653 + ], + [ + 7.014288073719358, + 51.00742910213997 + ], + [ + 7.014290448717902, + 51.00751630857651 + ], + [ + 7.014280697538034, + 51.0078009398094 + ], + [ + 7.014276304325553, + 51.00863305086978 + ], + [ + 7.014270459846299, + 51.0088864839966 + ], + [ + 7.0142655790699555, + 51.00901679932741 + ], + [ + 7.014264706798226, + 51.00903598494944 + ], + [ + 7.014264014405352, + 51.00910275520625 + ], + [ + 7.014263637722541, + 51.009143311767865 + ], + [ + 7.014261644049854, + 51.009208440151895 + ], + [ + 7.0142588620496635, + 51.00930537271443 + ], + [ + 7.014255872655149, + 51.00941400153227 + ], + [ + 7.014247087888145, + 51.009540859890855 + ], + [ + 7.014242285469206, + 51.00961367052355 + ], + [ + 7.014238591342705, + 51.00966911265889 + ], + [ + 7.014231488552965, + 51.009775683051615 + ], + [ + 7.0142286852364775, + 51.00981327453209 + ], + [ + 7.014226423544643, + 51.00983892091967 + ], + [ + 7.01422526923114, + 51.009869847393404 + ], + [ + 7.014210925386822, + 51.01005378268199 + ], + [ + 7.0141978753856, + 51.01022297875702 + ], + [ + 7.014180752259465, + 51.01043575873812 + ], + [ + 7.014165192570325, + 51.01056531778644 + ], + [ + 7.014134776367382, + 51.010821784819754 + ], + [ + 7.014118672416889, + 51.01095733603459 + ], + [ + 7.014104570087955, + 51.01106732278081 + ], + [ + 7.014098838078131, + 51.01111222752161 + ], + [ + 7.014089254698171, + 51.011186347257265 + ], + [ + 7.014032842109236, + 51.011566850017985 + ], + [ + 7.014027146622112, + 51.01162457755446 + ], + [ + 7.0140166584687, + 51.0116838640347 + ], + [ + 7.014000240395335, + 51.011768623898625 + ], + [ + 7.0139736362663045, + 51.01190596254553 + ], + [ + 7.013913230803946, + 51.0122177410604 + ], + [ + 7.013867488460666, + 51.0124548278734 + ], + [ + 7.013863137532059, + 51.01247677652513 + ], + [ + 7.013859600702007, + 51.012490082677026 + ], + [ + 7.013852163576806, + 51.01251989591877 + ], + [ + 7.013836404473532, + 51.01257473894621 + ], + [ + 7.013830730036464, + 51.012594429281584 + ], + [ + 7.013742025487308, + 51.01304022579831 + ], + [ + 7.013729102050818, + 51.013100567152044 + ], + [ + 7.013710744389695, + 51.01318648383371 + ], + [ + 7.013690828787623, + 51.01327996371893 + ], + [ + 7.013606864209896, + 51.01366008668862 + ], + [ + 7.013598223753217, + 51.013700333609215 + ], + [ + 7.013584778917147, + 51.01377219857108 + ], + [ + 7.013566093078495, + 51.01387712301552 + ], + [ + 7.013464347127492, + 51.01435375507744 + ], + [ + 7.013449079201374, + 51.01442513303761 + ], + [ + 7.013396429983828, + 51.014671525640054 + ], + [ + 7.01323710237683, + 51.01541788636891 + ], + [ + 7.013099080269571, + 51.016063536477255 + ], + [ + 7.013064016333095, + 51.01622780708259 + ], + [ + 7.012951509134763, + 51.016755053175 + ], + [ + 7.0128522656264325, + 51.01721052653183 + ], + [ + 7.012844499527183, + 51.01724616464888 + ], + [ + 7.01283538822894, + 51.01729182123191 + ], + [ + 7.012773335169256, + 51.01758387767959 + ], + [ + 7.012762215479943, + 51.017632050671246 + ], + [ + 7.01252870327942, + 51.018653423287496 + ], + [ + 7.012513423850742, + 51.01871959810463 + ], + [ + 7.012352780980848, + 51.01942213524749 + ], + [ + 7.012300748074706, + 51.01957739483555 + ], + [ + 7.012288356065678, + 51.019614219589464 + ], + [ + 7.012164025199481, + 51.01998481008716 + ], + [ + 7.012021315728206, + 51.020402479406485 + ], + [ + 7.012005077143436, + 51.02045644520812 + ], + [ + 7.012039877432264, + 51.02043246606898 + ], + [ + 7.012102056837645, + 51.02039198734814 + ], + [ + 7.012138675151166, + 51.020368173123785 + ], + [ + 7.012176680738988, + 51.02034352810457 + ], + [ + 7.012216545736777, + 51.02031758186438 + ], + [ + 7.012251134374313, + 51.02029544544613 + ], + [ + 7.0123756312903245, + 51.02021453956408 + ], + [ + 7.012396361674335, + 51.02020059519009 + ], + [ + 7.01240931419385, + 51.02019073916197 + ], + [ + 7.01244846187067, + 51.020144786080024 + ], + [ + 7.012459636586175, + 51.02013158835546 + ], + [ + 7.012497881042235, + 51.02008731428182 + ], + [ + 7.012552750737626, + 51.02002382225408 + ], + [ + 7.012617652310091, + 51.01994614260844 + ], + [ + 7.012643810039967, + 51.01991764895952 + ], + [ + 7.012685299255607, + 51.01987748164401 + ], + [ + 7.012712169696113, + 51.0198754655544 + ], + [ + 7.012742290725482, + 51.01987352724394 + ], + [ + 7.012813993836641, + 51.01986882570318 + ], + [ + 7.012839992047388, + 51.019861430966394 + ], + [ + 7.0130619754098795, + 51.01985166455269 + ], + [ + 7.013134809307691, + 51.019846593526644 + ], + [ + 7.013272840708238, + 51.0198369330221 + ], + [ + 7.013298984555237, + 51.01983510139936 + ], + [ + 7.013431188461378, + 51.01982583534247 + ], + [ + 7.013562193051111, + 51.01981663777752 + ], + [ + 7.01362817432827, + 51.0198119913249 + ], + [ + 7.01368325637593, + 51.01980810292594 + ], + [ + 7.0137716053847114, + 51.019767536806064 + ], + [ + 7.013952879929772, + 51.019684539563436 + ], + [ + 7.0139863733764924, + 51.019669347754615 + ], + [ + 7.014004742638294, + 51.019660687161064 + ], + [ + 7.0140620766568365, + 51.01963459481809 + ], + [ + 7.014080890475157, + 51.01962584104255 + ], + [ + 7.01412588974133, + 51.01960536950771 + ], + [ + 7.014202673968465, + 51.01957024183797 + ], + [ + 7.014290936457367, + 51.01939496602743 + ], + [ + 7.014375740863279, + 51.01921787941434 + ], + [ + 7.014392602204645, + 51.01918266742469 + ], + [ + 7.014476546889145, + 51.01900919773599 + ], + [ + 7.015132742813909, + 51.018366348398224 + ], + [ + 7.015153077522568, + 51.018347941390886 + ], + [ + 7.015405495782331, + 51.017746316593545 + ], + [ + 7.0154226363092675, + 51.017705470215006 + ], + [ + 7.015489943473906, + 51.01753019540757 + ], + [ + 7.015455744247761, + 51.017499491232265 + ], + [ + 7.015471187486692, + 51.01744419657986 + ], + [ + 7.0154816017878865, + 51.017414512083874 + ], + [ + 7.015546335552002, + 51.01742520532993 + ], + [ + 7.0155693475956475, + 51.01742896527934 + ], + [ + 7.015598129500353, + 51.01743287001257 + ], + [ + 7.015775687996024, + 51.017451107995335 + ], + [ + 7.015841408097319, + 51.0174577041622 + ], + [ + 7.015884070535645, + 51.01746204246398 + ], + [ + 7.017137765103381, + 51.01758860559116 + ], + [ + 7.017337847876709, + 51.017608801021424 + ], + [ + 7.017362359661355, + 51.01761126851075 + ], + [ + 7.017386858216197, + 51.0176138122159 + ], + [ + 7.017511423477976, + 51.01762661440418 + ], + [ + 7.017576865669213, + 51.017633319092894 + ], + [ + 7.017603233043201, + 51.01763604106479 + ], + [ + 7.017694726897092, + 51.01764575009012 + ], + [ + 7.0177170372698985, + 51.017648116291035 + ], + [ + 7.017769757967823, + 51.01765358960577 + ], + [ + 7.01781164602278, + 51.017657839412884 + ], + [ + 7.017840993034423, + 51.017660771080564 + ], + [ + 7.017905409809662, + 51.017667249532614 + ], + [ + 7.017993977548926, + 51.017676132523185 + ], + [ + 7.01805258178525, + 51.01768199603443 + ], + [ + 7.018100178768393, + 51.017686818364666 + ], + [ + 7.018169592928317, + 51.01769380416013 + ], + [ + 7.018227279322072, + 51.01769962592943 + ], + [ + 7.019593672449717, + 51.017836685051236 + ], + [ + 7.019633960961983, + 51.017840166911 + ], + [ + 7.019697906888956, + 51.01784569386009 + ], + [ + 7.019760725815492, + 51.01785059909774 + ], + [ + 7.0198026885935505, + 51.01780846412185 + ], + [ + 7.019914881789693, + 51.01769573463771 + ], + [ + 7.020219930352341, + 51.01738645973964 + ], + [ + 7.020612804583458, + 51.01698808442337 + ], + [ + 7.020934221336525, + 51.01666214922122 + ], + [ + 7.02107714498445, + 51.016517474235016 + ], + [ + 7.021105844349759, + 51.01648842280347 + ], + [ + 7.021146708704264, + 51.01644714651544 + ], + [ + 7.021409061039121, + 51.01623261576162 + ], + [ + 7.021482293128547, + 51.01617268631457 + ], + [ + 7.021499627882005, + 51.01615848586622 + ], + [ + 7.021569514129744, + 51.01610044860346 + ], + [ + 7.021639507232836, + 51.016042208055346 + ], + [ + 7.021680785856543, + 51.016010003237504 + ], + [ + 7.0217258337610655, + 51.01602460282438 + ], + [ + 7.021771628573404, + 51.01604657719504 + ], + [ + 7.02184565211405, + 51.01607955030993 + ], + [ + 7.02190517004899, + 51.01610424285815 + ], + [ + 7.021960788839813, + 51.01613324922438 + ], + [ + 7.02214540640792, + 51.01620781239999 + ], + [ + 7.022432861175867, + 51.016323628800784 + ], + [ + 7.0224681581773485, + 51.01633786965079 + ], + [ + 7.022525707625916, + 51.01636109047702 + ], + [ + 7.024122484617927, + 51.01700393687857 + ], + [ + 7.024353876974412, + 51.017097088725556 + ], + [ + 7.024601231753151, + 51.017196761496166 + ], + [ + 7.024708869821637, + 51.0172608362488 + ], + [ + 7.025157509074786, + 51.017527665738676 + ], + [ + 7.025229956933915, + 51.01757075209659 + ], + [ + 7.0254329748636835, + 51.01769144517016 + ], + [ + 7.025483306334571, + 51.01772028580237 + ], + [ + 7.025545091840123, + 51.01772539439649 + ], + [ + 7.025601377170911, + 51.0177282380395 + ], + [ + 7.025668078726501, + 51.01773160756357 + ], + [ + 7.025767915621389, + 51.0177366486936 + ], + [ + 7.025790230619097, + 51.01773777501094 + ], + [ + 7.0258597452090585, + 51.01774128280405 + ], + [ + 7.029817747103954, + 51.017940960449 + ], + [ + 7.029903436347842, + 51.017945291746784 + ], + [ + 7.029926739101059, + 51.01794646450981 + ], + [ + 7.029992912909173, + 51.017949852337104 + ], + [ + 7.030114279899838, + 51.01795663336493 + ], + [ + 7.030136885438178, + 51.01795790674775 + ], + [ + 7.030322487852552, + 51.01796715131566 + ], + [ + 7.030417443606488, + 51.01797219249438 + ], + [ + 7.030463492128182, + 51.01797392135248 + ], + [ + 7.030528242464545, + 51.01797489977809 + ], + [ + 7.030716450455441, + 51.01798366332474 + ], + [ + 7.030761672541869, + 51.01798581701877 + ], + [ + 7.03087420083034, + 51.01799027809739 + ], + [ + 7.031083541189045, + 51.01799857527752 + ], + [ + 7.031224810134147, + 51.01800415091055 + ], + [ + 7.0312673723786405, + 51.01800584947084 + ], + [ + 7.0315534457996005, + 51.018017151434826 + ], + [ + 7.031679733405364, + 51.01802222403232 + ], + [ + 7.03202430778395, + 51.018042421356 + ], + [ + 7.032074618475779, + 51.01804539144971 + ], + [ + 7.032471825923442, + 51.01806884486961 + ], + [ + 7.032743197837046, + 51.01808486793027 + ], + [ + 7.032855378800201, + 51.01809073953379 + ], + [ + 7.03289794547178, + 51.01809361663085 + ], + [ + 7.032992626089475, + 51.01809900542528 + ], + [ + 7.033338623210315, + 51.01811953759613 + ], + [ + 7.035838748055267, + 51.018250777110474 + ], + [ + 7.035916450026553, + 51.018254855463304 + ], + [ + 7.036153016191132, + 51.018267268000365 + ], + [ + 7.036231105078076, + 51.01827140301237 + ], + [ + 7.036255147646367, + 51.018272722750716 + ], + [ + 7.0362812416295135, + 51.01827425414425 + ], + [ + 7.036430545783885, + 51.018285923985424 + ], + [ + 7.036528934137376, + 51.018349297115364 + ], + [ + 7.0373325794839285, + 51.018893412615725 + ], + [ + 7.037531253115093, + 51.019027935257874 + ], + [ + 7.038131263115319, + 51.01943410877974 + ], + [ + 7.03844670434365, + 51.01964748408946 + ], + [ + 7.038502821916035, + 51.01968524968371 + ], + [ + 7.038622737525096, + 51.01976577347174 + ], + [ + 7.0386393536997165, + 51.01977637708488 + ], + [ + 7.038789350916437, + 51.01984945997467 + ], + [ + 7.038898766274102, + 51.019901688797965 + ], + [ + 7.039539691318841, + 51.020211204455215 + ], + [ + 7.039666286459019, + 51.020272252168496 + ], + [ + 7.039718959322324, + 51.02029764626842 + ], + [ + 7.039934299886414, + 51.02040145259622 + ], + [ + 7.039972183353116, + 51.02041974892055 + ], + [ + 7.040545741011176, + 51.020696785090145 + ], + [ + 7.041300149923822, + 51.02106315502673 + ], + [ + 7.041337577227467, + 51.021081338026406 + ], + [ + 7.041382261724978, + 51.021104954293214 + ], + [ + 7.041403910408118, + 51.02111608256957 + ], + [ + 7.041730339090561, + 51.02084712225518 + ], + [ + 7.04288298701082, + 51.019859910318345 + ], + [ + 7.043030478564255, + 51.01939487002744 + ], + [ + 7.043063427687642, + 51.019295259844995 + ], + [ + 7.044282737181916, + 51.01927486148961 + ], + [ + 7.044532252767864, + 51.019264887384495 + ], + [ + 7.04461777526008, + 51.019264728973674 + ], + [ + 7.044638300693456, + 51.019264359371796 + ], + [ + 7.044672525652661, + 51.01926369296321 + ], + [ + 7.0448098310524685, + 51.019261554743856 + ], + [ + 7.045091940415417, + 51.0192572468263 + ], + [ + 7.045224161792607, + 51.01925522718931 + ], + [ + 7.045351107978246, + 51.0192532954046 + ], + [ + 7.045493636659331, + 51.0192510810011 + ], + [ + 7.04659917258277, + 51.01923373536257 + ], + [ + 7.046982575080535, + 51.019227720763084 + ], + [ + 7.048014029492216, + 51.01921153068415 + ], + [ + 7.0486042860478735, + 51.01920257731023 + ], + [ + 7.0486854713212015, + 51.019201320897636 + ], + [ + 7.048834432256087, + 51.01919895894687 + ], + [ + 7.05045345130253, + 51.019173245712615 + ], + [ + 7.050556404523556, + 51.019171498709156 + ], + [ + 7.050612454363433, + 51.01916595784386 + ], + [ + 7.0507527762390225, + 51.019151922239 + ], + [ + 7.050801033034893, + 51.01914707504897 + ], + [ + 7.05089167294389, + 51.019137969708865 + ], + [ + 7.0511707362940585, + 51.01911003677616 + ], + [ + 7.051442946177183, + 51.01908275870221 + ], + [ + 7.0516185874911805, + 51.01906526322822 + ], + [ + 7.051718436924385, + 51.01905826335994 + ], + [ + 7.051990243731234, + 51.0190393610787 + ], + [ + 7.052111888869509, + 51.01903202285255 + ], + [ + 7.052166820543224, + 51.01902869119886 + ], + [ + 7.0522677335588915, + 51.01902257467585 + ], + [ + 7.052858503749181, + 51.01898208508376 + ], + [ + 7.05295221484851, + 51.01897565365974 + ], + [ + 7.053655681039131, + 51.01892711135855 + ], + [ + 7.053777679124159, + 51.01891613219524 + ], + [ + 7.0539224441077515, + 51.018894118490586 + ], + [ + 7.054082172467487, + 51.018863376517054 + ], + [ + 7.054504072099651, + 51.01879025892185 + ], + [ + 7.054601543313156, + 51.01877338703553 + ], + [ + 7.055120165149929, + 51.01868376770686 + ], + [ + 7.055217648443178, + 51.01868356415131 + ], + [ + 7.05536329896491, + 51.01868318569814 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Duennwald", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "907", + "Population_rel": 0.010678835336936142, + "Population_abs": 11619 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.86610298791101, + 50.991825630097026 + ], + [ + 6.866115029043244, + 50.99181697953601 + ], + [ + 6.866157234573844, + 50.99185557868617 + ], + [ + 6.8661853425942585, + 50.99183523475897 + ], + [ + 6.866340215601008, + 50.99185029432311 + ], + [ + 6.8663311831090565, + 50.99182777968838 + ], + [ + 6.866328938148823, + 50.99182216700924 + ], + [ + 6.866327233739312, + 50.99181642030564 + ], + [ + 6.866329936949072, + 50.991795267703964 + ], + [ + 6.86633256639609, + 50.99179079006492 + ], + [ + 6.866334980014295, + 50.991785984705466 + ], + [ + 6.86633896441663, + 50.99177896589063 + ], + [ + 6.866349400954687, + 50.99176260887745 + ], + [ + 6.867136393256581, + 50.99108912307522 + ], + [ + 6.86726759294193, + 50.9909347572778 + ], + [ + 6.86731666993613, + 50.99089438640217 + ], + [ + 6.867766885406935, + 50.99035160145813 + ], + [ + 6.86783275675502, + 50.99027218192921 + ], + [ + 6.8678585350841646, + 50.990241069957314 + ], + [ + 6.867895763788431, + 50.99011422563834 + ], + [ + 6.86808411264714, + 50.98987317318523 + ], + [ + 6.868199113957403, + 50.98976966199016 + ], + [ + 6.868528123775872, + 50.98963246658135 + ], + [ + 6.8691734861077025, + 50.988640963937925 + ], + [ + 6.869324608937281, + 50.9885222438901 + ], + [ + 6.869451360138383, + 50.988422868063296 + ], + [ + 6.869642761496627, + 50.988277346146425 + ], + [ + 6.869829662673493, + 50.988134913044846 + ], + [ + 6.869944111153115, + 50.98804768144698 + ], + [ + 6.869991207807107, + 50.98799803400519 + ], + [ + 6.870167323001584, + 50.98781208407382 + ], + [ + 6.870198363250076, + 50.98776600743772 + ], + [ + 6.87049667597096, + 50.98732133491929 + ], + [ + 6.8706426485384515, + 50.987069807588924 + ], + [ + 6.870723453140499, + 50.98693002612009 + ], + [ + 6.8708054034016195, + 50.98678820950098 + ], + [ + 6.870891631997934, + 50.986639982699366 + ], + [ + 6.8710875903531905, + 50.98630294560843 + ], + [ + 6.871616778746358, + 50.98530550896159 + ], + [ + 6.871755841707678, + 50.98499749011911 + ], + [ + 6.871837066063431, + 50.98474932037894 + ], + [ + 6.871888768497296, + 50.98456758584031 + ], + [ + 6.871829643662626, + 50.984500754587664 + ], + [ + 6.871759441965923, + 50.984423681635086 + ], + [ + 6.871659783453072, + 50.98433504983799 + ], + [ + 6.8716554761707105, + 50.984329629909446 + ], + [ + 6.8714116858031895, + 50.984021493212566 + ], + [ + 6.8712476137729785, + 50.98388175593617 + ], + [ + 6.871230365880925, + 50.98386706490266 + ], + [ + 6.871307734294009, + 50.98384068175319 + ], + [ + 6.871496950946159, + 50.98377615753004 + ], + [ + 6.871673476907941, + 50.98371903024539 + ], + [ + 6.871989472838987, + 50.98360457536179 + ], + [ + 6.872113307232864, + 50.983563815538204 + ], + [ + 6.872234470706082, + 50.98352390989407 + ], + [ + 6.872773423781122, + 50.9833307489274 + ], + [ + 6.87339619700982, + 50.98317264544174 + ], + [ + 6.873530704651133, + 50.98307051050298 + ], + [ + 6.873534972195707, + 50.98286543409289 + ], + [ + 6.8734973464623135, + 50.98280304688885 + ], + [ + 6.873389779472147, + 50.98262328577638 + ], + [ + 6.873274077092374, + 50.982425117157995 + ], + [ + 6.873149026124644, + 50.982158534022005 + ], + [ + 6.8730601367840025, + 50.98187621819807 + ], + [ + 6.872929275483441, + 50.981460904457364 + ], + [ + 6.872862377479551, + 50.981113342311744 + ], + [ + 6.872782342033954, + 50.98095366340622 + ], + [ + 6.872719874208684, + 50.98078908897348 + ], + [ + 6.872415985678507, + 50.9797787259845 + ], + [ + 6.872286456765956, + 50.97934866056198 + ], + [ + 6.872248650573214, + 50.979216533378214 + ], + [ + 6.872229338839508, + 50.97914907953514 + ], + [ + 6.8721155111815815, + 50.97901715889682 + ], + [ + 6.872090517038967, + 50.978967455993725 + ], + [ + 6.87202158441998, + 50.9785272279053 + ], + [ + 6.8719328843948535, + 50.978140275895136 + ], + [ + 6.871930008927755, + 50.97796401846339 + ], + [ + 6.871784632274217, + 50.97773632922748 + ], + [ + 6.871651984582203, + 50.97746593533272 + ], + [ + 6.871592730602053, + 50.97704568405733 + ], + [ + 6.871407521595487, + 50.97637907952961 + ], + [ + 6.871398624931497, + 50.9763350077275 + ], + [ + 6.871380226013734, + 50.976243722332164 + ], + [ + 6.87132706751071, + 50.9760356624805 + ], + [ + 6.871304599612364, + 50.97586988983091 + ], + [ + 6.871294353998654, + 50.97572577945981 + ], + [ + 6.8712692613268365, + 50.9756555812276 + ], + [ + 6.871111187719638, + 50.975159747130455 + ], + [ + 6.870993357235045, + 50.97463817322962 + ], + [ + 6.870971024593231, + 50.97456327920112 + ], + [ + 6.870774882374519, + 50.973896843598055 + ], + [ + 6.87067277203604, + 50.97354540783637 + ], + [ + 6.870192746504404, + 50.97196562608404 + ], + [ + 6.870006225852917, + 50.97130999500159 + ], + [ + 6.869986329044759, + 50.97124335292931 + ], + [ + 6.8698631791397915, + 50.9708396659262 + ], + [ + 6.86981527987715, + 50.97069916198739 + ], + [ + 6.869769054824049, + 50.97055684753287 + ], + [ + 6.869748912086139, + 50.97049982611618 + ], + [ + 6.869790109611419, + 50.97047983258327 + ], + [ + 6.869719723764736, + 50.97024825515408 + ], + [ + 6.869665139167894, + 50.970127082811345 + ], + [ + 6.869573875014998, + 50.96995530474388 + ], + [ + 6.869465259306358, + 50.96980338673562 + ], + [ + 6.869129210188096, + 50.9690833357477 + ], + [ + 6.86905313516222, + 50.96875992952166 + ], + [ + 6.869030550136499, + 50.96866391289762 + ], + [ + 6.868505625975789, + 50.967426228811114 + ], + [ + 6.868209062886992, + 50.96691335263625 + ], + [ + 6.868153785188633, + 50.96682710787027 + ], + [ + 6.867742237956632, + 50.96630061246075 + ], + [ + 6.867600520332343, + 50.9661439049813 + ], + [ + 6.8672554764144635, + 50.965778539930646 + ], + [ + 6.867177055100135, + 50.965710624957026 + ], + [ + 6.867065492747027, + 50.9655600753047 + ], + [ + 6.8666853719242456, + 50.964977846800195 + ], + [ + 6.8666162574030505, + 50.96496003527324 + ], + [ + 6.866626653818176, + 50.964932074523574 + ], + [ + 6.866549191808347, + 50.96490061966978 + ], + [ + 6.866436941688939, + 50.96460693693751 + ], + [ + 6.8664357899502, + 50.964603911948274 + ], + [ + 6.866295795389774, + 50.9642449124408 + ], + [ + 6.866278551339816, + 50.96417737014321 + ], + [ + 6.866277456237447, + 50.96417354483597 + ], + [ + 6.866276383962827, + 50.96416996727647 + ], + [ + 6.866262861321475, + 50.96412875050298 + ], + [ + 6.8662341695421345, + 50.9640414103987 + ], + [ + 6.866224259419908, + 50.964011274397635 + ], + [ + 6.866181500524373, + 50.96380942393007 + ], + [ + 6.866138798622663, + 50.96360692782292 + ], + [ + 6.866138156997354, + 50.963602903943546 + ], + [ + 6.866137732700195, + 50.963598861551596 + ], + [ + 6.866133042830454, + 50.96355376975472 + ], + [ + 6.866096819409685, + 50.96320588605578 + ], + [ + 6.866103026481013, + 50.962996210940815 + ], + [ + 6.866139364392983, + 50.96273057910326 + ], + [ + 6.866169824847764, + 50.96255819591542 + ], + [ + 6.866221486015007, + 50.962369138864375 + ], + [ + 6.866221066149587, + 50.96236161233818 + ], + [ + 6.866220464501351, + 50.96235332880569 + ], + [ + 6.86661607441108, + 50.96166748020969 + ], + [ + 6.866765247120099, + 50.961269856666185 + ], + [ + 6.867135878729885, + 50.960611339087095 + ], + [ + 6.867503623729879, + 50.96003527263949 + ], + [ + 6.867968833802416, + 50.95914314785628 + ], + [ + 6.867974321666057, + 50.959134698523805 + ], + [ + 6.867976404345987, + 50.95913154194287 + ], + [ + 6.867978774327453, + 50.959128237713024 + ], + [ + 6.86811559527626, + 50.95885588877171 + ], + [ + 6.8677884502556195, + 50.958925014950644 + ], + [ + 6.867773281403531, + 50.9589284298928 + ], + [ + 6.8677518334612655, + 50.958933252813566 + ], + [ + 6.8677441457423445, + 50.95893497683343 + ], + [ + 6.867739211295906, + 50.958936066705625 + ], + [ + 6.867596592319442, + 50.9589671096678 + ], + [ + 6.867302402705778, + 50.95904846095589 + ], + [ + 6.866918971438959, + 50.95915393222949 + ], + [ + 6.866913992886973, + 50.959155300070435 + ], + [ + 6.866909617866761, + 50.95915648736916 + ], + [ + 6.866904215183142, + 50.95915797427378 + ], + [ + 6.866582068382645, + 50.95924688223817 + ], + [ + 6.866538322303752, + 50.95925940722368 + ], + [ + 6.866346127694243, + 50.95931274145075 + ], + [ + 6.8662216004029855, + 50.95934737004719 + ], + [ + 6.865532895896513, + 50.95953758228443 + ], + [ + 6.8655291500655125, + 50.95953861824619 + ], + [ + 6.865524986817689, + 50.95953975090506 + ], + [ + 6.865515595253426, + 50.9595419508816 + ], + [ + 6.865487789456453, + 50.95954643680194 + ], + [ + 6.865482847721246, + 50.959547217057754 + ], + [ + 6.865476840396619, + 50.95954819188494 + ], + [ + 6.865471763343939, + 50.959549003842916 + ], + [ + 6.865466550071343, + 50.959549929330805 + ], + [ + 6.86545908128454, + 50.9595514710312 + ], + [ + 6.8652365741294625, + 50.95983185024211 + ], + [ + 6.8650331955787145, + 50.96010020959367 + ], + [ + 6.864971873181118, + 50.96018153839758 + ], + [ + 6.864949690331766, + 50.96021069461259 + ], + [ + 6.8649478468468175, + 50.96021313240949 + ], + [ + 6.864945998680917, + 50.96021557911464 + ], + [ + 6.864941593926668, + 50.96022141831377 + ], + [ + 6.864937986530665, + 50.96022620452465 + ], + [ + 6.864935084215802, + 50.960230055678025 + ], + [ + 6.864911963163878, + 50.96026234167583 + ], + [ + 6.864910741996338, + 50.96026509034795 + ], + [ + 6.86490684798473, + 50.96026746186468 + ], + [ + 6.864888657665379, + 50.96029156818665 + ], + [ + 6.864878841195076, + 50.960304552959016 + ], + [ + 6.864856281472909, + 50.960334378601566 + ], + [ + 6.864811824962807, + 50.96039559613457 + ], + [ + 6.864808267821546, + 50.9603990683601 + ], + [ + 6.864806135459234, + 50.9604027123429 + ], + [ + 6.8648015595391545, + 50.96040737650814 + ], + [ + 6.864795472013852, + 50.96041609173786 + ], + [ + 6.864792649398648, + 50.96041894962582 + ], + [ + 6.864789919455136, + 50.96042270589512 + ], + [ + 6.864776363043189, + 50.96044339654208 + ], + [ + 6.864770432556765, + 50.96045092295779 + ], + [ + 6.86476740518347, + 50.96045479880139 + ], + [ + 6.864723043816094, + 50.96051151392232 + ], + [ + 6.864720808837421, + 50.96051441403439 + ], + [ + 6.864718770521704, + 50.96051709379645 + ], + [ + 6.864715114581308, + 50.960522005925945 + ], + [ + 6.864667832870738, + 50.96058529068425 + ], + [ + 6.864552229348545, + 50.96074014499603 + ], + [ + 6.86449868378266, + 50.96081190963694 + ], + [ + 6.863996046669074, + 50.96148494666784 + ], + [ + 6.863837988194351, + 50.96169659585829 + ], + [ + 6.863816646762007, + 50.96172507382975 + ], + [ + 6.863806792007188, + 50.961738227796125 + ], + [ + 6.863790478494341, + 50.96176001639753 + ], + [ + 6.863784235610694, + 50.961768353689024 + ], + [ + 6.863660195377067, + 50.96193397218855 + ], + [ + 6.863658471569647, + 50.96193628174442 + ], + [ + 6.863654001195751, + 50.96194217815478 + ], + [ + 6.863645438141011, + 50.96195352999251 + ], + [ + 6.863637377625349, + 50.961964265053545 + ], + [ + 6.863612475656267, + 50.96199724131404 + ], + [ + 6.86360288429059, + 50.96200974263283 + ], + [ + 6.863599896157763, + 50.962013038162056 + ], + [ + 6.863597139807435, + 50.962015317130934 + ], + [ + 6.863593004434744, + 50.96201866091966 + ], + [ + 6.863440025450851, + 50.96214007732408 + ], + [ + 6.863399917604659, + 50.9621719325486 + ], + [ + 6.86338269745021, + 50.962185601046144 + ], + [ + 6.8632596135748845, + 50.96228284022288 + ], + [ + 6.863257172100087, + 50.96228489830159 + ], + [ + 6.863150881904494, + 50.96227065929383 + ], + [ + 6.8631441066923395, + 50.96226958284252 + ], + [ + 6.863137602794214, + 50.96226855272825 + ], + [ + 6.863132779801437, + 50.96226810380191 + ], + [ + 6.859962396791977, + 50.9637297415138 + ], + [ + 6.8591082949539794, + 50.96498944772769 + ], + [ + 6.8591061613306605, + 50.964992578036096 + ], + [ + 6.859104297461753, + 50.96499529327818 + ], + [ + 6.859101237093088, + 50.96499974577698 + ], + [ + 6.859097337350574, + 50.965005416840235 + ], + [ + 6.859048876130701, + 50.96507568393491 + ], + [ + 6.857659299072346, + 50.96488607223824 + ], + [ + 6.857632593847558, + 50.964919016854466 + ], + [ + 6.85761098283867, + 50.964945901349196 + ], + [ + 6.857606158681534, + 50.96495191065823 + ], + [ + 6.857603034118003, + 50.9649558052214 + ], + [ + 6.857600738899751, + 50.964958669017946 + ], + [ + 6.85671077075872, + 50.96606873653294 + ], + [ + 6.855757066771962, + 50.96725820993311 + ], + [ + 6.855754509975132, + 50.96726139806473 + ], + [ + 6.855752382260539, + 50.96726405264671 + ], + [ + 6.855604922606106, + 50.96744821053619 + ], + [ + 6.855565294387548, + 50.96749772683937 + ], + [ + 6.854974824071142, + 50.96823529270507 + ], + [ + 6.854572056993674, + 50.96873838246001 + ], + [ + 6.854501344826276, + 50.96882669600552 + ], + [ + 6.853888782109433, + 50.9695917233145 + ], + [ + 6.853856793698631, + 50.96963174975695 + ], + [ + 6.8538090136176235, + 50.96969153410445 + ], + [ + 6.853826126913193, + 50.96977923110029 + ], + [ + 6.853783207982813, + 50.96987361958239 + ], + [ + 6.85377866573858, + 50.96988362538688 + ], + [ + 6.853771630462361, + 50.96993392367219 + ], + [ + 6.853769595003626, + 50.96994847427811 + ], + [ + 6.853758091786671, + 50.97006030278772 + ], + [ + 6.853751435890299, + 50.970107036587585 + ], + [ + 6.8537510301282, + 50.970109720088146 + ], + [ + 6.8537506650519475, + 50.97011337477273 + ], + [ + 6.853750391067722, + 50.97011863743297 + ], + [ + 6.853750829882233, + 50.97013006588699 + ], + [ + 6.853753188521876, + 50.97013473477914 + ], + [ + 6.853750938773981, + 50.97015804145295 + ], + [ + 6.853750784255211, + 50.9701613618393 + ], + [ + 6.853750542344822, + 50.97016487848386 + ], + [ + 6.853750146659812, + 50.97016842467962 + ], + [ + 6.85374903090855, + 50.9701754778311 + ], + [ + 6.85374669589228, + 50.97018932680597 + ], + [ + 6.853746112341514, + 50.970192776911716 + ], + [ + 6.853745359531853, + 50.97019714847368 + ], + [ + 6.853743780207231, + 50.970206439766834 + ], + [ + 6.85373270955561, + 50.97027564268673 + ], + [ + 6.853728785694474, + 50.97029435510788 + ], + [ + 6.853728102288736, + 50.97029749938593 + ], + [ + 6.853727412048242, + 50.97030088457345 + ], + [ + 6.853686732665815, + 50.97053902237353 + ], + [ + 6.853650022222763, + 50.97074998625422 + ], + [ + 6.853637217946808, + 50.97082384938241 + ], + [ + 6.853593406274264, + 50.97106270572606 + ], + [ + 6.853552644531369, + 50.971246563184714 + ], + [ + 6.853538451494807, + 50.9713111200182 + ], + [ + 6.853429218965748, + 50.971886508707264 + ], + [ + 6.8534284718366, + 50.97189044686752 + ], + [ + 6.853427512118156, + 50.971895504450764 + ], + [ + 6.853297017893315, + 50.97258284871378 + ], + [ + 6.853205021104413, + 50.97306740679053 + ], + [ + 6.8531925885613765, + 50.973133148051275 + ], + [ + 6.853190972734845, + 50.97314229925849 + ], + [ + 6.853190254099768, + 50.973146576109194 + ], + [ + 6.8531897818858445, + 50.973150544504875 + ], + [ + 6.8531891738952195, + 50.973156746273816 + ], + [ + 6.8531885741933145, + 50.973164497834524 + ], + [ + 6.853187919302854, + 50.973183606706456 + ], + [ + 6.853147527225493, + 50.97342694167871 + ], + [ + 6.853146816154316, + 50.973431301411466 + ], + [ + 6.853146312158433, + 50.97343435274978 + ], + [ + 6.853145837980614, + 50.97343706646782 + ], + [ + 6.8530322520104905, + 50.974087452526895 + ], + [ + 6.853026460105628, + 50.97412039750247 + ], + [ + 6.852927865722169, + 50.97468502307469 + ], + [ + 6.852901609606812, + 50.97484041165055 + ], + [ + 6.852874441112217, + 50.97492182527653 + ], + [ + 6.852839498810273, + 50.97511300788989 + ], + [ + 6.852780336309338, + 50.975120087241024 + ], + [ + 6.852725945380409, + 50.97512659506302 + ], + [ + 6.852664221815545, + 50.97514441177376 + ], + [ + 6.852612009908542, + 50.975159483080674 + ], + [ + 6.852582742755807, + 50.9751741678027 + ], + [ + 6.852576180280805, + 50.97517752233115 + ], + [ + 6.852572690927625, + 50.9751793567575 + ], + [ + 6.852500188921219, + 50.97521779769583 + ], + [ + 6.852423240300703, + 50.9752617428805 + ], + [ + 6.8523911671541615, + 50.97528005892398 + ], + [ + 6.8523514142126585, + 50.97529636658125 + ], + [ + 6.852346629304357, + 50.975298399319406 + ], + [ + 6.852342032859842, + 50.97530042293248 + ], + [ + 6.852323125476389, + 50.97530864539458 + ], + [ + 6.85231545404106, + 50.975311982209085 + ], + [ + 6.852311013750096, + 50.975313925050415 + ], + [ + 6.852305308263865, + 50.9753163347845 + ], + [ + 6.852296508413866, + 50.97531998361434 + ], + [ + 6.852270835483959, + 50.975330279719735 + ], + [ + 6.85226703650988, + 50.975331784663595 + ], + [ + 6.852262281957039, + 50.975333653369354 + ], + [ + 6.85225826216866, + 50.97533509669069 + ], + [ + 6.85224964179382, + 50.9753377271178 + ], + [ + 6.8522278459051895, + 50.975344147130805 + ], + [ + 6.85222306877649, + 50.975345517160854 + ], + [ + 6.852218175693016, + 50.97534680681137 + ], + [ + 6.85217676996376, + 50.97535746915187 + ], + [ + 6.852091369526936, + 50.975376643403294 + ], + [ + 6.851979312236061, + 50.97539146974684 + ], + [ + 6.851965066101751, + 50.975392991147686 + ], + [ + 6.851950437771789, + 50.97539455228364 + ], + [ + 6.851914898384618, + 50.975397466330804 + ], + [ + 6.851908201984763, + 50.975397979901466 + ], + [ + 6.850992451803525, + 50.9754616475463 + ], + [ + 6.850594761927434, + 50.97555412314979 + ], + [ + 6.850600882018076, + 50.97557346105113 + ], + [ + 6.850602227503903, + 50.97557761039604 + ], + [ + 6.850604090670357, + 50.97558310485632 + ], + [ + 6.850654902362784, + 50.97572956688688 + ], + [ + 6.85066662660859, + 50.97576331445091 + ], + [ + 6.850919739054679, + 50.97615780340959 + ], + [ + 6.851763526592514, + 50.97718504868292 + ], + [ + 6.8517948417150345, + 50.97728558865369 + ], + [ + 6.851881404803883, + 50.977565061166445 + ], + [ + 6.851255695838345, + 50.97777269139178 + ], + [ + 6.851090527233603, + 50.977827381464486 + ], + [ + 6.851042793195536, + 50.97784323511473 + ], + [ + 6.849661452981878, + 50.97830158611377 + ], + [ + 6.849654970377365, + 50.97829826492327 + ], + [ + 6.849629915178901, + 50.978285432476994 + ], + [ + 6.849571370270145, + 50.97825487787466 + ], + [ + 6.849471062457343, + 50.978205221034145 + ], + [ + 6.849418609102367, + 50.97817936270591 + ], + [ + 6.849068136560718, + 50.97796600024349 + ], + [ + 6.848447997539771, + 50.977588462619956 + ], + [ + 6.848444906213124, + 50.977586579907666 + ], + [ + 6.848441338273432, + 50.97758440600635 + ], + [ + 6.848434684909715, + 50.97758034500418 + ], + [ + 6.8484213826222, + 50.97757221948296 + ], + [ + 6.848417788761383, + 50.97757002081988 + ], + [ + 6.848414329275592, + 50.97756790467798 + ], + [ + 6.846794240667801, + 50.97657864090163 + ], + [ + 6.846196058547392, + 50.97679510158375 + ], + [ + 6.845692674437184, + 50.97697723306902 + ], + [ + 6.845684854100125, + 50.9769801385971 + ], + [ + 6.845677416737954, + 50.976982895597025 + ], + [ + 6.845603644439117, + 50.976947468461326 + ], + [ + 6.845493104294295, + 50.9768805912979 + ], + [ + 6.84548799206426, + 50.976877498418894 + ], + [ + 6.845483930276295, + 50.9768750410009 + ], + [ + 6.845472559784453, + 50.9768681613554 + ], + [ + 6.84546785388048, + 50.9768653080143 + ], + [ + 6.845006323184222, + 50.976583806918796 + ], + [ + 6.844956299554561, + 50.976553532243535 + ], + [ + 6.844830849835542, + 50.97647761205349 + ], + [ + 6.844819585407729, + 50.97647041501873 + ], + [ + 6.844812739064974, + 50.97646603995661 + ], + [ + 6.84480760435037, + 50.976462757761176 + ], + [ + 6.844799826036801, + 50.976457804279995 + ], + [ + 6.8447958033606575, + 50.97645527291038 + ], + [ + 6.8447926769983285, + 50.97645335167877 + ], + [ + 6.844778466061119, + 50.97644465674076 + ], + [ + 6.844775142489679, + 50.97644262574116 + ], + [ + 6.844771818918518, + 50.976440594741455 + ], + [ + 6.844765167298823, + 50.97643653715604 + ], + [ + 6.844736818068361, + 50.97641924034952 + ], + [ + 6.844649803218812, + 50.97636334908636 + ], + [ + 6.844538873399408, + 50.97629214855319 + ], + [ + 6.844487332363806, + 50.9762609687598 + ], + [ + 6.84428280884051, + 50.976137013540686 + ], + [ + 6.844246352765089, + 50.976114915321105 + ], + [ + 6.8442432558478945, + 50.97611303598976 + ], + [ + 6.844239952591922, + 50.976111028733605 + ], + [ + 6.844233407294188, + 50.976107045930306 + ], + [ + 6.844220541211908, + 50.97609921577789 + ], + [ + 6.843654612707967, + 50.97575586463723 + ], + [ + 6.843349430256576, + 50.97557253756794 + ], + [ + 6.843345510471308, + 50.975570187025134 + ], + [ + 6.843233673540198, + 50.975502197256894 + ], + [ + 6.843020081127928, + 50.97537226851956 + ], + [ + 6.842981390934721, + 50.975348974711956 + ], + [ + 6.8428017644696535, + 50.975239576428876 + ], + [ + 6.842213029707753, + 50.974881410198826 + ], + [ + 6.842179089693736, + 50.974860760855535 + ], + [ + 6.8421465273844895, + 50.97484093831567 + ], + [ + 6.84200648286454, + 50.97475569477072 + ], + [ + 6.842000855071265, + 50.974752271125745 + ], + [ + 6.841750724101776, + 50.974600130704324 + ], + [ + 6.841421736785981, + 50.97439984752762 + ], + [ + 6.84132073521821, + 50.97433832850781 + ], + [ + 6.8411166616661205, + 50.97421399907358 + ], + [ + 6.840983123830648, + 50.974131827258475 + ], + [ + 6.840975115993162, + 50.974126894454315 + ], + [ + 6.840969406663077, + 50.97412338920527 + ], + [ + 6.8409655942917, + 50.974121062151916 + ], + [ + 6.840810433479282, + 50.974026465514115 + ], + [ + 6.840707779650059, + 50.97396384062985 + ], + [ + 6.840702887201039, + 50.97396072192054 + ], + [ + 6.8406952325596695, + 50.97395683621784 + ], + [ + 6.840692392693377, + 50.97395442730833 + ], + [ + 6.840683594354577, + 50.97394970830862 + ], + [ + 6.840673873867442, + 50.97394644275036 + ], + [ + 6.840663385985667, + 50.973943260133105 + ], + [ + 6.840653632972832, + 50.973941309773146 + ], + [ + 6.8406496665391225, + 50.973943624288594 + ], + [ + 6.840646439817785, + 50.97394534719729 + ], + [ + 6.840632114229049, + 50.97395355627633 + ], + [ + 6.840619621039307, + 50.97395813244583 + ], + [ + 6.840601001159934, + 50.97396586637283 + ], + [ + 6.840589385385234, + 50.97397108923561 + ], + [ + 6.840583491102058, + 50.97397307579437 + ], + [ + 6.839494919753659, + 50.9748055157805 + ], + [ + 6.8376435941145, + 50.97625504136395 + ], + [ + 6.837230914320062, + 50.976575930348346 + ], + [ + 6.837117413980724, + 50.976664182975306 + ], + [ + 6.837023596715744, + 50.976716735635875 + ], + [ + 6.837010573365089, + 50.976708817227006 + ], + [ + 6.834963941290736, + 50.97546425268762 + ], + [ + 6.834907181787098, + 50.97544318618109 + ], + [ + 6.834901192505924, + 50.975443132684035 + ], + [ + 6.834895908170652, + 50.97544326763875 + ], + [ + 6.8348547775197614, + 50.97544428393939 + ], + [ + 6.834792016165843, + 50.97550130323084 + ], + [ + 6.834241081912285, + 50.9760053942846 + ], + [ + 6.833633610047225, + 50.97656120081723 + ], + [ + 6.833628397258199, + 50.976565977876426 + ], + [ + 6.833623653247074, + 50.976570324732336 + ], + [ + 6.833620839275226, + 50.976572903228224 + ], + [ + 6.833617995538645, + 50.97657550905275 + ], + [ + 6.833358075368031, + 50.976813843506605 + ], + [ + 6.833237211167639, + 50.976926035035184 + ], + [ + 6.833230236248996, + 50.97693181726918 + ], + [ + 6.833227248037025, + 50.97693446537263 + ], + [ + 6.833224102623036, + 50.97693709347047 + ], + [ + 6.833220766605502, + 50.976939929386994 + ], + [ + 6.832628740874095, + 50.97748164790175 + ], + [ + 6.83256567652752, + 50.977539822396395 + ], + [ + 6.8325582122949395, + 50.977546624405896 + ], + [ + 6.832549952800203, + 50.97755404482079 + ], + [ + 6.832653321829118, + 50.977617459118704 + ], + [ + 6.832754166593258, + 50.97767876417731 + ], + [ + 6.8328050711991954, + 50.97770967925032 + ], + [ + 6.8328387334904805, + 50.97773012920452 + ], + [ + 6.833601111837274, + 50.9781937600956 + ], + [ + 6.834192539874594, + 50.978553406564934 + ], + [ + 6.83428995428258, + 50.97861258793971 + ], + [ + 6.834448273939941, + 50.978708503700894 + ], + [ + 6.834455165948198, + 50.97871267965757 + ], + [ + 6.834461873740826, + 50.978716742472294 + ], + [ + 6.834474815264527, + 50.97872458499586 + ], + [ + 6.834735615646384, + 50.978883209301216 + ], + [ + 6.836141398681835, + 50.9797382303661 + ], + [ + 6.836518545575771, + 50.97996763152835 + ], + [ + 6.8366159530633945, + 50.980026903419876 + ], + [ + 6.836678948005213, + 50.9800651863799 + ], + [ + 6.836886389022539, + 50.980192300108335 + ], + [ + 6.836893047081332, + 50.98019633847435 + ], + [ + 6.836898446462621, + 50.98019861321206 + ], + [ + 6.8369212310527905, + 50.98035285719128 + ], + [ + 6.836923545071326, + 50.98035600833409 + ], + [ + 6.837027539410242, + 50.980446043052254 + ], + [ + 6.837347233383123, + 50.980714690336406 + ], + [ + 6.838199359634415, + 50.98143076321726 + ], + [ + 6.838236471276006, + 50.981459815093054 + ], + [ + 6.838240915380092, + 50.981463305138526 + ], + [ + 6.838243918489709, + 50.98146582595069 + ], + [ + 6.839037493067343, + 50.98214518382611 + ], + [ + 6.839041125730015, + 50.98214829367283 + ], + [ + 6.839044758434918, + 50.98215140262087 + ], + [ + 6.839414229225807, + 50.982467635180285 + ], + [ + 6.839436638857496, + 50.9824868316803 + ], + [ + 6.838933780995946, + 50.9827520032445 + ], + [ + 6.838556094767265, + 50.98295225619188 + ], + [ + 6.838552037951383, + 50.98295441157314 + ], + [ + 6.8385481164298625, + 50.98295666029645 + ], + [ + 6.8384387029449965, + 50.983014435053875 + ], + [ + 6.838442799696414, + 50.98301767672533 + ], + [ + 6.8385991826149475, + 50.983150261883424 + ], + [ + 6.838641774254979, + 50.983186398770826 + ], + [ + 6.838647263499132, + 50.9831910422682 + ], + [ + 6.838651634634238, + 50.983194727011195 + ], + [ + 6.838663627841538, + 50.98320483683668 + ], + [ + 6.8387319882352084, + 50.98326282453359 + ], + [ + 6.8390121906749135, + 50.98350484092461 + ], + [ + 6.8394380533957735, + 50.98386274837691 + ], + [ + 6.839647117152425, + 50.984039756975 + ], + [ + 6.839718142389528, + 50.98409926116913 + ], + [ + 6.839750696526284, + 50.98412680089383 + ], + [ + 6.839798907026089, + 50.98416774777067 + ], + [ + 6.840540421520532, + 50.98479744344593 + ], + [ + 6.840711698285982, + 50.984943366451986 + ], + [ + 6.841434103436118, + 50.98555884964151 + ], + [ + 6.841459502623081, + 50.98557932055754 + ], + [ + 6.841478535772227, + 50.9855962525344 + ], + [ + 6.841701576604868, + 50.985783566290586 + ], + [ + 6.841839575902243, + 50.98590044206951 + ], + [ + 6.841988645617645, + 50.9860262633807 + ], + [ + 6.842585130592683, + 50.98653120532122 + ], + [ + 6.843203712182136, + 50.98705541139847 + ], + [ + 6.843256641235625, + 50.98710025463125 + ], + [ + 6.843261808690393, + 50.9871046050563 + ], + [ + 6.843325542932909, + 50.987084506354954 + ], + [ + 6.843383785874441, + 50.987160790295505 + ], + [ + 6.8433857322776, + 50.98716334271829 + ], + [ + 6.843388069486843, + 50.98716640961103 + ], + [ + 6.84379947108696, + 50.98770760485207 + ], + [ + 6.843949945464377, + 50.98791130013511 + ], + [ + 6.84455443255914, + 50.98872653530144 + ], + [ + 6.8445623312986195, + 50.988737266840275 + ], + [ + 6.844566309952262, + 50.98874267721981 + ], + [ + 6.844570199726242, + 50.9887480068129 + ], + [ + 6.844622887933884, + 50.98882044432685 + ], + [ + 6.844747687823396, + 50.988774101016745 + ], + [ + 6.844974330019594, + 50.98869003542786 + ], + [ + 6.846388601890289, + 50.98816551974979 + ], + [ + 6.846522286769532, + 50.98811582902765 + ], + [ + 6.846497216228305, + 50.98806081729568 + ], + [ + 6.846481204647069, + 50.988026234826755 + ], + [ + 6.846447498785839, + 50.987927148744845 + ], + [ + 6.846445472947238, + 50.98788626229456 + ], + [ + 6.846442935366403, + 50.987825064627124 + ], + [ + 6.846486513364942, + 50.98774663262085 + ], + [ + 6.846565994699124, + 50.987668929254696 + ], + [ + 6.846672635928058, + 50.98760460224319 + ], + [ + 6.8467535757623335, + 50.98756796810368 + ], + [ + 6.8475030749724155, + 50.98722840132216 + ], + [ + 6.847605825339273, + 50.98718513725372 + ], + [ + 6.847672252616034, + 50.98715714787199 + ], + [ + 6.848222044657149, + 50.986925727425344 + ], + [ + 6.848389177089451, + 50.986859611209674 + ], + [ + 6.848592652781781, + 50.98677929754103 + ], + [ + 6.8488514101887965, + 50.98664958968864 + ], + [ + 6.848971619181959, + 50.9865911883469 + ], + [ + 6.849785926540112, + 50.98623863736191 + ], + [ + 6.849973288285326, + 50.98615832858402 + ], + [ + 6.8508023957932656, + 50.98579758348385 + ], + [ + 6.850807457773929, + 50.98579537692723 + ], + [ + 6.850890852128021, + 50.98575901536625 + ], + [ + 6.850926092016067, + 50.985777996049904 + ], + [ + 6.850958022691544, + 50.98579520159694 + ], + [ + 6.850949808840929, + 50.98585225299008 + ], + [ + 6.851204387791926, + 50.98601238277821 + ], + [ + 6.8521240221545385, + 50.98659059947244 + ], + [ + 6.852981878920987, + 50.98712341697008 + ], + [ + 6.853104193847677, + 50.987199830694586 + ], + [ + 6.8535795065318315, + 50.98749713347512 + ], + [ + 6.853872841725841, + 50.98768052527162 + ], + [ + 6.8548132328798514, + 50.98826863783764 + ], + [ + 6.855106866034472, + 50.98845220370563 + ], + [ + 6.855228326356561, + 50.988528171341656 + ], + [ + 6.8561809964789715, + 50.98912382358474 + ], + [ + 6.856828659947344, + 50.98952870937981 + ], + [ + 6.857110928843668, + 50.98970534222292 + ], + [ + 6.857188234510702, + 50.98980401543233 + ], + [ + 6.85728404351285, + 50.98986344901381 + ], + [ + 6.857511563453916, + 50.99000587558626 + ], + [ + 6.858107381381008, + 50.990378593427195 + ], + [ + 6.858385187921471, + 50.99055211033981 + ], + [ + 6.858854699771386, + 50.99084571952751 + ], + [ + 6.859947763951202, + 50.99152906141171 + ], + [ + 6.861097693183206, + 50.99224798945002 + ], + [ + 6.8612426600893555, + 50.99233861030651 + ], + [ + 6.86224509597767, + 50.992965286591875 + ], + [ + 6.862347664643078, + 50.99302936263415 + ], + [ + 6.863591697456906, + 50.993596014067485 + ], + [ + 6.863595327490846, + 50.993630416123516 + ], + [ + 6.8636978027912905, + 50.993558123385 + ], + [ + 6.863898454743582, + 50.993416568170204 + ], + [ + 6.864003588581528, + 50.99334063993382 + ], + [ + 6.864981270746246, + 50.99263521069989 + ], + [ + 6.865085136748933, + 50.9925602800194 + ], + [ + 6.865111699300864, + 50.99254102602338 + ], + [ + 6.8653063587290495, + 50.99240052086827 + ], + [ + 6.8660845814221085, + 50.991838868100835 + ], + [ + 6.866090943885289, + 50.99183428150333 + ], + [ + 6.866097320256192, + 50.99182970235463 + ], + [ + 6.86610298791101, + 50.991825630097026 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Bocklemuend/Mengenich", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "405", + "Population_rel": 0.00986544612330429, + "Population_abs": 10734 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.0547619255228255, + 50.895118847617056 + ], + [ + 7.055255890312072, + 50.89488748656237 + ], + [ + 7.055506154873542, + 50.89475361663874 + ], + [ + 7.055714240598042, + 50.894677930750305 + ], + [ + 7.056098327881389, + 50.894478213750325 + ], + [ + 7.05610237141128, + 50.89447591125827 + ], + [ + 7.05629170291364, + 50.894368139856724 + ], + [ + 7.056295752071363, + 50.89436583835115 + ], + [ + 7.056405651581141, + 50.89430337261177 + ], + [ + 7.056409247258008, + 50.89430099879515 + ], + [ + 7.056627901557631, + 50.89415654056756 + ], + [ + 7.056631543550463, + 50.894153975949244 + ], + [ + 7.05682013179204, + 50.89402112583233 + ], + [ + 7.056981589831541, + 50.89387637111715 + ], + [ + 7.057192363652069, + 50.89366873647947 + ], + [ + 7.057284752937422, + 50.893577721056886 + ], + [ + 7.057300810444969, + 50.893561903098615 + ], + [ + 7.057301117085037, + 50.89356287232963 + ], + [ + 7.057733652146708, + 50.8949307580353 + ], + [ + 7.057899943132796, + 50.89491765425275 + ], + [ + 7.057900996974698, + 50.8949153963803 + ], + [ + 7.058023975566962, + 50.894651880033145 + ], + [ + 7.058056363034763, + 50.89459459297706 + ], + [ + 7.058278289821015, + 50.8942018085061 + ], + [ + 7.059603497273308, + 50.8918569478679 + ], + [ + 7.059809550645924, + 50.891492328373445 + ], + [ + 7.059811721972089, + 50.891492739510596 + ], + [ + 7.060175115434845, + 50.89156155124748 + ], + [ + 7.0605395427803295, + 50.891630693807734 + ], + [ + 7.061192576750224, + 50.89175339337659 + ], + [ + 7.0616326140279035, + 50.89183478973592 + ], + [ + 7.062161580249238, + 50.89193281375018 + ], + [ + 7.062298607791111, + 50.89163994771248 + ], + [ + 7.062544109596141, + 50.891685535162495 + ], + [ + 7.0626745158349316, + 50.891719946146516 + ], + [ + 7.063279011699808, + 50.89182680511434 + ], + [ + 7.063142339159677, + 50.89211625335003 + ], + [ + 7.063193593010764, + 50.8921263036547 + ], + [ + 7.064270407532252, + 50.8923270173739 + ], + [ + 7.065361074364973, + 50.89253020095991 + ], + [ + 7.065861379771324, + 50.892623525707016 + ], + [ + 7.065875064006074, + 50.892587892782544 + ], + [ + 7.066148918509678, + 50.89262988722045 + ], + [ + 7.066261072542837, + 50.89240646314356 + ], + [ + 7.066348305212309, + 50.89225554163027 + ], + [ + 7.066438311862287, + 50.892114123796794 + ], + [ + 7.06684938856946, + 50.892190191842055 + ], + [ + 7.066872594680559, + 50.89222297068716 + ], + [ + 7.06690765416596, + 50.89223955034156 + ], + [ + 7.067144468521727, + 50.89228412885696 + ], + [ + 7.067796838136942, + 50.89243250768545 + ], + [ + 7.067845517695869, + 50.89232382965455 + ], + [ + 7.0684920674336364, + 50.892472437391575 + ], + [ + 7.068892264528677, + 50.8925386193169 + ], + [ + 7.068928075292412, + 50.89247006107851 + ], + [ + 7.069104399877318, + 50.892132329390584 + ], + [ + 7.069182150632493, + 50.891983650240896 + ], + [ + 7.069212649081111, + 50.89192520828132 + ], + [ + 7.069310001187358, + 50.891738773988806 + ], + [ + 7.069380634799421, + 50.89162692670471 + ], + [ + 7.069381319011489, + 50.8916257517539 + ], + [ + 7.069454723695236, + 50.89150462019608 + ], + [ + 7.06960413709768, + 50.89154334273332 + ], + [ + 7.069609571877189, + 50.89154482126038 + ], + [ + 7.069680871002068, + 50.891548842634045 + ], + [ + 7.069747902973814, + 50.8915527223344 + ], + [ + 7.069753595215109, + 50.89155302963576 + ], + [ + 7.069755739404302, + 50.891553548962285 + ], + [ + 7.070056140998673, + 50.89163151916062 + ], + [ + 7.0701411159514835, + 50.891506775085425 + ], + [ + 7.070263300215618, + 50.89132496600347 + ], + [ + 7.069764799987759, + 50.89121717050779 + ], + [ + 7.06959139597841, + 50.89117965670657 + ], + [ + 7.069744367199472, + 50.89090236757419 + ], + [ + 7.06980399363019, + 50.89079403708169 + ], + [ + 7.0698206576595535, + 50.89078938864504 + ], + [ + 7.0698550445790245, + 50.890720843443155 + ], + [ + 7.070332363038574, + 50.89083485645013 + ], + [ + 7.070557160435071, + 50.89088852795715 + ], + [ + 7.07103183392363, + 50.89002621581045 + ], + [ + 7.071367125927911, + 50.88930263133377 + ], + [ + 7.071378092735513, + 50.88927888841456 + ], + [ + 7.071301292322496, + 50.88927033424634 + ], + [ + 7.071130103113663, + 50.889248534426294 + ], + [ + 7.071050569993971, + 50.88923856698154 + ], + [ + 7.070991974210369, + 50.88923056534073 + ], + [ + 7.071157910421552, + 50.8887943108111 + ], + [ + 7.071227828441965, + 50.88862071146655 + ], + [ + 7.070780731757242, + 50.888553170240264 + ], + [ + 7.070602121395683, + 50.88852370661622 + ], + [ + 7.070600123550527, + 50.888523365101165 + ], + [ + 7.070607075093681, + 50.88849804132435 + ], + [ + 7.070631242729724, + 50.88838679927122 + ], + [ + 7.071150195144938, + 50.88812988004352 + ], + [ + 7.0711928572154195, + 50.88798242100495 + ], + [ + 7.071300805472945, + 50.887558655164995 + ], + [ + 7.071311482049887, + 50.88752223980999 + ], + [ + 7.071318108225001, + 50.88746419689018 + ], + [ + 7.071328547433351, + 50.88737411573704 + ], + [ + 7.072151346938178, + 50.88742139278576 + ], + [ + 7.07229928208203, + 50.88742695380941 + ], + [ + 7.072255485347484, + 50.88754961323258 + ], + [ + 7.072253829902798, + 50.88759511563991 + ], + [ + 7.072259644020219, + 50.8876007248279 + ], + [ + 7.072264587442253, + 50.88760562351941 + ], + [ + 7.072399856594027, + 50.88772196294626 + ], + [ + 7.072547169071074, + 50.8877315749235 + ], + [ + 7.073106924823836, + 50.88776660651776 + ], + [ + 7.073107055322858, + 50.887766614068745 + ], + [ + 7.073372763779539, + 50.88778241231383 + ], + [ + 7.073909835460329, + 50.88781360656211 + ], + [ + 7.074344605271388, + 50.88783962791102 + ], + [ + 7.074452338483377, + 50.88784609670615 + ], + [ + 7.074553388406009, + 50.88768632248477 + ], + [ + 7.07472563872266, + 50.88740201692063 + ], + [ + 7.074907428889606, + 50.887020356904195 + ], + [ + 7.0744746309023165, + 50.88701175857914 + ], + [ + 7.074458967074935, + 50.88699805902584 + ], + [ + 7.074337678307097, + 50.88700142420414 + ], + [ + 7.074317689212819, + 50.88700358561216 + ], + [ + 7.074301886943875, + 50.887008585269136 + ], + [ + 7.074260976435208, + 50.88701269122534 + ], + [ + 7.074257508437036, + 50.88701303961255 + ], + [ + 7.074256437410426, + 50.887019909319896 + ], + [ + 7.074256021498536, + 50.887022581682096 + ], + [ + 7.074096779680205, + 50.887013261536765 + ], + [ + 7.074190804557998, + 50.88636856941387 + ], + [ + 7.073575213849545, + 50.88633145473155 + ], + [ + 7.073592678658173, + 50.886220434190484 + ], + [ + 7.0736790393309885, + 50.88616735790693 + ], + [ + 7.073682273839184, + 50.885995901253295 + ], + [ + 7.073571912337682, + 50.886058654289656 + ], + [ + 7.073431504002363, + 50.88605220102988 + ], + [ + 7.073430183207593, + 50.88605213065851 + ], + [ + 7.073412700276572, + 50.88607009476158 + ], + [ + 7.073393461331942, + 50.88609023153129 + ], + [ + 7.073391042152083, + 50.88609276379272 + ], + [ + 7.073202420294669, + 50.88608493416766 + ], + [ + 7.073184749462074, + 50.88605807497907 + ], + [ + 7.073174022393411, + 50.88603659895506 + ], + [ + 7.072947212161526, + 50.88602430164656 + ], + [ + 7.072961680306183, + 50.88585370143039 + ], + [ + 7.072961659461686, + 50.8858520705264 + ], + [ + 7.072957657980294, + 50.88554577667968 + ], + [ + 7.0729699622906175, + 50.88554580718551 + ], + [ + 7.073204534505784, + 50.885546391503986 + ], + [ + 7.073430757590478, + 50.88554781243074 + ], + [ + 7.073741317794308, + 50.88554976167674 + ], + [ + 7.073741708830657, + 50.88548606837798 + ], + [ + 7.073743155007521, + 50.88525000824247 + ], + [ + 7.073745293767429, + 50.8851520813485 + ], + [ + 7.073746224607725, + 50.885112249177425 + ], + [ + 7.073749175073845, + 50.884981065244055 + ], + [ + 7.0737505996848276, + 50.88491968149769 + ], + [ + 7.07375224395891, + 50.88484880221866 + ], + [ + 7.073745813623992, + 50.88480102490759 + ], + [ + 7.073740245338145, + 50.88475964736058 + ], + [ + 7.073717563418226, + 50.88458905616692 + ], + [ + 7.073714121074249, + 50.88456352375603 + ], + [ + 7.0737040584776745, + 50.884488857340145 + ], + [ + 7.073701115463197, + 50.88446704037897 + ], + [ + 7.0736674662190255, + 50.884227421258686 + ], + [ + 7.073666466063623, + 50.88422095805563 + ], + [ + 7.073555409192963, + 50.883433064322894 + ], + [ + 7.07354907044825, + 50.883379904863446 + ], + [ + 7.073531304661808, + 50.88323147251717 + ], + [ + 7.073528327202992, + 50.88320704770023 + ], + [ + 7.073526575458455, + 50.883186478037814 + ], + [ + 7.0735183511634165, + 50.88308218606217 + ], + [ + 7.073517104672763, + 50.88305271196962 + ], + [ + 7.073504140896656, + 50.88281631401958 + ], + [ + 7.073504135894558, + 50.88281622849671 + ], + [ + 7.073486678634523, + 50.88237221918421 + ], + [ + 7.073465835213277, + 50.881719056334575 + ], + [ + 7.073457707061569, + 50.88160658253396 + ], + [ + 7.073447892482976, + 50.88128475933156 + ], + [ + 7.0734452420467635, + 50.8812003724983 + ], + [ + 7.072904861354188, + 50.88121972775518 + ], + [ + 7.0718952147852745, + 50.88146561322899 + ], + [ + 7.071864579889378, + 50.881331824638195 + ], + [ + 7.071737872999181, + 50.881343637045234 + ], + [ + 7.071714811597256, + 50.88124359567416 + ], + [ + 7.071698291243602, + 50.881150993165726 + ], + [ + 7.071676314367223, + 50.881060222442564 + ], + [ + 7.071661884258056, + 50.88100111379945 + ], + [ + 7.071641772532477, + 50.88091733682592 + ], + [ + 7.071557158327791, + 50.88055529937055 + ], + [ + 7.071463633832009, + 50.88015792393898 + ], + [ + 7.071303594105312, + 50.8798712814603 + ], + [ + 7.070899198175427, + 50.87953069859115 + ], + [ + 7.070819706108928, + 50.879435060962194 + ], + [ + 7.07078035056074, + 50.87932988527299 + ], + [ + 7.070776340816807, + 50.87922321728974 + ], + [ + 7.071070945629248, + 50.87775720464397 + ], + [ + 7.0711005583377595, + 50.87767926348311 + ], + [ + 7.070466909384615, + 50.87753383293725 + ], + [ + 7.069991203763469, + 50.87735976178404 + ], + [ + 7.069778210763733, + 50.87728177067277 + ], + [ + 7.069420789719342, + 50.8771513531363 + ], + [ + 7.068629059637875, + 50.876945199321355 + ], + [ + 7.068325015228162, + 50.87686723817587 + ], + [ + 7.068323060026872, + 50.876866737235865 + ], + [ + 7.068389741073829, + 50.87666368343463 + ], + [ + 7.0691830547336965, + 50.875338196305286 + ], + [ + 7.070248626285472, + 50.873551471753274 + ], + [ + 7.071094634437582, + 50.8721617518079 + ], + [ + 7.071220146987884, + 50.87194161485906 + ], + [ + 7.071627247144863, + 50.871238762321646 + ], + [ + 7.071631213063261, + 50.87123207357139 + ], + [ + 7.072059819048049, + 50.870513559792265 + ], + [ + 7.071696977583577, + 50.87024082698248 + ], + [ + 7.07149204529678, + 50.87008898950609 + ], + [ + 7.071440592931226, + 50.87005071796939 + ], + [ + 7.070368988180106, + 50.86924413100282 + ], + [ + 7.070309302815236, + 50.86921851998548 + ], + [ + 7.070287576255092, + 50.8692064930933 + ], + [ + 7.0698866850760975, + 50.869417649295514 + ], + [ + 7.06985101247997, + 50.86943559529692 + ], + [ + 7.069631311785543, + 50.86955033906836 + ], + [ + 7.069601823449803, + 50.86956535191943 + ], + [ + 7.069499547310519, + 50.86962157497644 + ], + [ + 7.069017412724302, + 50.8698648461186 + ], + [ + 7.0689851500827965, + 50.86987664890626 + ], + [ + 7.068895164142442, + 50.86991127401376 + ], + [ + 7.068238713008539, + 50.87016701637904 + ], + [ + 7.068048393639318, + 50.87027474554287 + ], + [ + 7.067898154481824, + 50.87040808670714 + ], + [ + 7.067134578395879, + 50.87132939694009 + ], + [ + 7.067088186546708, + 50.87139436547088 + ], + [ + 7.067030221611648, + 50.87145027084265 + ], + [ + 7.066982236045797, + 50.87150150107868 + ], + [ + 7.066428531569679, + 50.872052496438 + ], + [ + 7.0662569358752325, + 50.87220293125657 + ], + [ + 7.066062625596989, + 50.87233550462944 + ], + [ + 7.065822648980774, + 50.872452943330295 + ], + [ + 7.065515854630952, + 50.872574767179024 + ], + [ + 7.06505473210123, + 50.872744834972075 + ], + [ + 7.064897077107891, + 50.87280290756009 + ], + [ + 7.064837202984467, + 50.8728251193308 + ], + [ + 7.064590083129023, + 50.87291619152494 + ], + [ + 7.064460215859411, + 50.87298416875398 + ], + [ + 7.0641673348415575, + 50.87313705490528 + ], + [ + 7.064102827392851, + 50.87318043354208 + ], + [ + 7.063970175100314, + 50.87326965130309 + ], + [ + 7.06384220862332, + 50.87337132025141 + ], + [ + 7.063717303398034, + 50.87347017535411 + ], + [ + 7.063645162587983, + 50.873527737007834 + ], + [ + 7.0635579056053714, + 50.873595324902915 + ], + [ + 7.063443359640755, + 50.87368743274905 + ], + [ + 7.0634132219429535, + 50.87371161947826 + ], + [ + 7.063140298729651, + 50.87393021428689 + ], + [ + 7.063000493198719, + 50.87404241893151 + ], + [ + 7.062676712135835, + 50.87430516587606 + ], + [ + 7.062314814406407, + 50.8745974736487 + ], + [ + 7.062134700911152, + 50.87474294577598 + ], + [ + 7.062124797409007, + 50.874751036654935 + ], + [ + 7.062108327586181, + 50.874764041484056 + ], + [ + 7.061921802310714, + 50.874915055767524 + ], + [ + 7.061857967574002, + 50.87496948326336 + ], + [ + 7.061796344901696, + 50.87502119448477 + ], + [ + 7.061781710330702, + 50.875033643360794 + ], + [ + 7.06167824549069, + 50.87511980612129 + ], + [ + 7.061439841793255, + 50.875313811324 + ], + [ + 7.061169948695779, + 50.875535250763896 + ], + [ + 7.060969655068538, + 50.87569960272256 + ], + [ + 7.060557108357666, + 50.87603992101693 + ], + [ + 7.060434028671586, + 50.87614468848589 + ], + [ + 7.060380506116561, + 50.87619039178319 + ], + [ + 7.060318614747942, + 50.87624291439734 + ], + [ + 7.060071201068304, + 50.876453628520025 + ], + [ + 7.060035365194308, + 50.87648425000655 + ], + [ + 7.059996838689841, + 50.87651390489065 + ], + [ + 7.059929710435743, + 50.87656117063361 + ], + [ + 7.059600872882821, + 50.876784131200786 + ], + [ + 7.0593154367402695, + 50.877141627810445 + ], + [ + 7.059222302878297, + 50.87724513377606 + ], + [ + 7.059146358270693, + 50.87726703849437 + ], + [ + 7.059050826664782, + 50.87726484961127 + ], + [ + 7.058928066235973, + 50.87723360222693 + ], + [ + 7.058721353554467, + 50.8771907106065 + ], + [ + 7.058631515442632, + 50.877157636267725 + ], + [ + 7.058410356039617, + 50.87706030926703 + ], + [ + 7.058352099899447, + 50.877028925792075 + ], + [ + 7.058165668879664, + 50.87692795722014 + ], + [ + 7.058107553365455, + 50.876896481526465 + ], + [ + 7.058003834962241, + 50.87684015982485 + ], + [ + 7.057904000335332, + 50.87678595953721 + ], + [ + 7.057837827034359, + 50.87675006228028 + ], + [ + 7.057540746730678, + 50.876594002640104 + ], + [ + 7.0574984968939205, + 50.876572900610164 + ], + [ + 7.057456055122289, + 50.87655593608745 + ], + [ + 7.057102276712075, + 50.87636182414343 + ], + [ + 7.057027591252271, + 50.87636402877117 + ], + [ + 7.057018986551913, + 50.87636680396195 + ], + [ + 7.057014049617736, + 50.87636837660437 + ], + [ + 7.056803445594953, + 50.87638556689401 + ], + [ + 7.05667636651098, + 50.876395618204604 + ], + [ + 7.056621604761569, + 50.87639926061325 + ], + [ + 7.056596820580705, + 50.876409103403546 + ], + [ + 7.056579692999721, + 50.87642454100463 + ], + [ + 7.0565750460077, + 50.87643267399574 + ], + [ + 7.056572755547737, + 50.87644447071257 + ], + [ + 7.056601321073674, + 50.876488710013966 + ], + [ + 7.0566118130292645, + 50.87651908933551 + ], + [ + 7.056615903532744, + 50.876530378952474 + ], + [ + 7.056652317962902, + 50.876632618288895 + ], + [ + 7.0566712684797315, + 50.87672288119881 + ], + [ + 7.056672530778076, + 50.87692306511919 + ], + [ + 7.056674393267819, + 50.876955140835406 + ], + [ + 7.05667584106322, + 50.87698146714165 + ], + [ + 7.056676741447302, + 50.87699611135522 + ], + [ + 7.056677890036735, + 50.877015518290506 + ], + [ + 7.056672677643169, + 50.87708028984299 + ], + [ + 7.056679205767611, + 50.877218039665294 + ], + [ + 7.056492738352874, + 50.877284902690135 + ], + [ + 7.056250392420043, + 50.87725581395815 + ], + [ + 7.056212943505078, + 50.87725345524769 + ], + [ + 7.056175156430986, + 50.87725262972106 + ], + [ + 7.056137515195873, + 50.87725315027653 + ], + [ + 7.056062620087792, + 50.87725868298283 + ], + [ + 7.0543555161258835, + 50.877506684609074 + ], + [ + 7.054077798702555, + 50.87754722022273 + ], + [ + 7.053870030570012, + 50.877589640416325 + ], + [ + 7.053269081841666, + 50.87774429345509 + ], + [ + 7.053247910889122, + 50.877750597423045 + ], + [ + 7.053252889011827, + 50.87775711549811 + ], + [ + 7.053233550347184, + 50.877775358647625 + ], + [ + 7.053159394630815, + 50.87784524756788 + ], + [ + 7.053068976531227, + 50.877868267623285 + ], + [ + 7.052979322335476, + 50.8778902157098 + ], + [ + 7.052937601186619, + 50.87789720291279 + ], + [ + 7.052916103162531, + 50.87790030138958 + ], + [ + 7.052853713784141, + 50.87786194079287 + ], + [ + 7.052785570414, + 50.87782203705 + ], + [ + 7.052714192618789, + 50.87778040645424 + ], + [ + 7.052736669470326, + 50.877819397982115 + ], + [ + 7.052701896889916, + 50.877827442701374 + ], + [ + 7.052485573084925, + 50.877856421312046 + ], + [ + 7.052481949385142, + 50.87785690225622 + ], + [ + 7.052375229600589, + 50.87787120277639 + ], + [ + 7.052407987599183, + 50.877921769136826 + ], + [ + 7.052572196634462, + 50.878175247237756 + ], + [ + 7.052467255820576, + 50.87820247186491 + ], + [ + 7.049952727048489, + 50.87885481870909 + ], + [ + 7.04997339905192, + 50.8788831302183 + ], + [ + 7.049983690139896, + 50.878897323444285 + ], + [ + 7.049993927487077, + 50.87891144202254 + ], + [ + 7.0500244376794265, + 50.87895386632836 + ], + [ + 7.050264004729113, + 50.879301399921175 + ], + [ + 7.0504532871775805, + 50.87961153961164 + ], + [ + 7.050464495531645, + 50.87963067039271 + ], + [ + 7.0504656567144455, + 50.87963265222748 + ], + [ + 7.050470671726164, + 50.879641210817844 + ], + [ + 7.0504779638824155, + 50.879653658573076 + ], + [ + 7.050502500387025, + 50.879695867822065 + ], + [ + 7.050510127965578, + 50.87970916928888 + ], + [ + 7.050515893764683, + 50.87971922258917 + ], + [ + 7.050516789542261, + 50.87972078537778 + ], + [ + 7.050529269775269, + 50.87974255098259 + ], + [ + 7.050886125242262, + 50.88042064878489 + ], + [ + 7.051144990657393, + 50.88110088624846 + ], + [ + 7.05117209156021, + 50.88118118798703 + ], + [ + 7.05117787191132, + 50.8811989743119 + ], + [ + 7.051179667287322, + 50.881204497672805 + ], + [ + 7.051180156024516, + 50.881206004192265 + ], + [ + 7.051187207405933, + 50.88122770693275 + ], + [ + 7.051389256736297, + 50.881933806085264 + ], + [ + 7.05150138806233, + 50.882748319459076 + ], + [ + 7.051543899690316, + 50.88383449247784 + ], + [ + 7.051355339331782, + 50.884914118686716 + ], + [ + 7.051345104017514, + 50.88495816996719 + ], + [ + 7.051342873888505, + 50.8849674898091 + ], + [ + 7.051342827238471, + 50.884967687791665 + ], + [ + 7.051339846337192, + 50.884980143803276 + ], + [ + 7.051339386424321, + 50.88498206797763 + ], + [ + 7.051334585172468, + 50.88500213287023 + ], + [ + 7.051144396282886, + 50.88568803517751 + ], + [ + 7.0508135480205585, + 50.886463930025585 + ], + [ + 7.05074780455581, + 50.88659900421024 + ], + [ + 7.050296744058358, + 50.887426860910026 + ], + [ + 7.049706302168088, + 50.88821911241781 + ], + [ + 7.049672847861446, + 50.888260855331886 + ], + [ + 7.049663938263361, + 50.88827178490788 + ], + [ + 7.049655891878485, + 50.88828165595767 + ], + [ + 7.0496389643036705, + 50.88830242287959 + ], + [ + 7.049630979543251, + 50.88831221401399 + ], + [ + 7.049610609803027, + 50.88833719632501 + ], + [ + 7.049602755691489, + 50.88834668475354 + ], + [ + 7.049596306189174, + 50.888354476156216 + ], + [ + 7.049588715738672, + 50.88836364341734 + ], + [ + 7.049588685744094, + 50.88836368068971 + ], + [ + 7.049581969728262, + 50.888371793210375 + ], + [ + 7.049547924986264, + 50.888412552199405 + ], + [ + 7.049539261328861, + 50.88842283473031 + ], + [ + 7.049530847420942, + 50.888432822842944 + ], + [ + 7.049529673077643, + 50.88843421523108 + ], + [ + 7.049513734049734, + 50.88845313335732 + ], + [ + 7.048941706436115, + 50.889092124411235 + ], + [ + 7.048239336837071, + 50.889731116488015 + ], + [ + 7.047746410474925, + 50.890140789398316 + ], + [ + 7.046570700641649, + 50.890968755449855 + ], + [ + 7.045936969944672, + 50.89134363598891 + ], + [ + 7.047220886940865, + 50.89235111089644 + ], + [ + 7.047418601231955, + 50.89250625127328 + ], + [ + 7.048181554395081, + 50.89205639742722 + ], + [ + 7.048335479917304, + 50.89196134480819 + ], + [ + 7.048405855407623, + 50.891918011763046 + ], + [ + 7.048593700564686, + 50.891801888031985 + ], + [ + 7.04861318594184, + 50.891789846579115 + ], + [ + 7.048632672729932, + 50.891777805146624 + ], + [ + 7.048709584567024, + 50.89172191714573 + ], + [ + 7.048710380975804, + 50.891721234347514 + ], + [ + 7.048921445846358, + 50.89157393484636 + ], + [ + 7.04911428785854, + 50.89142729086534 + ], + [ + 7.049235600277817, + 50.891493890173216 + ], + [ + 7.049454335848483, + 50.89161390992659 + ], + [ + 7.049139878647889, + 50.89185118298774 + ], + [ + 7.04862911381122, + 50.89227099859618 + ], + [ + 7.0485886782044105, + 50.892305791924144 + ], + [ + 7.048559801432772, + 50.89233005260252 + ], + [ + 7.04839834338903, + 50.89250104490663 + ], + [ + 7.048191522531796, + 50.892658421775685 + ], + [ + 7.047922341216473, + 50.89290607210603 + ], + [ + 7.047462873643188, + 50.89337054826188 + ], + [ + 7.048484630066835, + 50.89374153299753 + ], + [ + 7.047925310419915, + 50.894354874538664 + ], + [ + 7.048299701907257, + 50.89448779051356 + ], + [ + 7.04834261982019, + 50.89451904734833 + ], + [ + 7.050328580881768, + 50.89364143175683 + ], + [ + 7.050368996295406, + 50.89368781305601 + ], + [ + 7.050585305167632, + 50.8939835957535 + ], + [ + 7.050733868817583, + 50.89418694761584 + ], + [ + 7.051042601398376, + 50.89461026618117 + ], + [ + 7.051163805666255, + 50.89474095894234 + ], + [ + 7.051275439072659, + 50.894673970731475 + ], + [ + 7.05156098054776, + 50.89477423554607 + ], + [ + 7.051829880303385, + 50.89484237867732 + ], + [ + 7.052022442522767, + 50.89489116242634 + ], + [ + 7.052505951925845, + 50.89495835766538 + ], + [ + 7.052984200731233, + 50.89493084829318 + ], + [ + 7.053280540313799, + 50.89489841759886 + ], + [ + 7.053290892640361, + 50.89489733566135 + ], + [ + 7.053402195651487, + 50.89488509368582 + ], + [ + 7.053429777432282, + 50.89497357078105 + ], + [ + 7.053719909974302, + 50.895590065355364 + ], + [ + 7.0537206206619745, + 50.8955915746617 + ], + [ + 7.0538559486027195, + 50.89556050703836 + ], + [ + 7.053960344483803, + 50.89553816901116 + ], + [ + 7.054343752875034, + 50.895358061711136 + ], + [ + 7.054347490668023, + 50.8953555922952 + ], + [ + 7.0545808587966174, + 50.8952013893499 + ], + [ + 7.0547619255228255, + 50.895118847617056 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Porz", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "706", + "Population_rel": 0.013807396786882834, + "Population_abs": 15023 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.870417983017786, + 50.95580489555107 + ], + [ + 6.870950822024468, + 50.95443427689977 + ], + [ + 6.871000287147779, + 50.95430707149636 + ], + [ + 6.871072553266319, + 50.95412126783009 + ], + [ + 6.8711668549179254, + 50.953878834143225 + ], + [ + 6.871200582200258, + 50.953792089203 + ], + [ + 6.871302323343303, + 50.953530441693076 + ], + [ + 6.87130369955561, + 50.95352690522249 + ], + [ + 6.871305064740876, + 50.95352339193483 + ], + [ + 6.871307079479017, + 50.95351819065352 + ], + [ + 6.871309848294137, + 50.953511008286156 + ], + [ + 6.871311470014143, + 50.95350680445147 + ], + [ + 6.871313691450401, + 50.9535009126138 + ], + [ + 6.871318239652312, + 50.95348884935135 + ], + [ + 6.871319608367282, + 50.953485258780816 + ], + [ + 6.871320846476909, + 50.95348175306915 + ], + [ + 6.87132577310761, + 50.95347119238355 + ], + [ + 6.871330848110196, + 50.95345975300591 + ], + [ + 6.871332453324985, + 50.953456066016315 + ], + [ + 6.871334626822522, + 50.953450973756645 + ], + [ + 6.871337050494907, + 50.9534451431666 + ], + [ + 6.871341617774044, + 50.95343415771414 + ], + [ + 6.871342687846813, + 50.95343158699677 + ], + [ + 6.871343861689669, + 50.95342877084065 + ], + [ + 6.871345143899253, + 50.95342570213447 + ], + [ + 6.871346444125785, + 50.953422613070956 + ], + [ + 6.871349975582056, + 50.95341422774037 + ], + [ + 6.871358538335438, + 50.95339386350237 + ], + [ + 6.871376896918652, + 50.95335033074061 + ], + [ + 6.871378482853273, + 50.9533465669511 + ], + [ + 6.871380070210334, + 50.95334280318752 + ], + [ + 6.871389174055629, + 50.95332122295138 + ], + [ + 6.871398639177662, + 50.9532987786971 + ], + [ + 6.871399964747437, + 50.95329563343381 + ], + [ + 6.871402016704084, + 50.95329077009874 + ], + [ + 6.871407307214285, + 50.953278228403626 + ], + [ + 6.871454829063479, + 50.95316572828796 + ], + [ + 6.871456321706076, + 50.9531622919713 + ], + [ + 6.87145817039308, + 50.95315841785003 + ], + [ + 6.8714975321958045, + 50.95307662953261 + ], + [ + 6.871520758991869, + 50.95302835580855 + ], + [ + 6.8715590388994965, + 50.95294886276185 + ], + [ + 6.871574521825516, + 50.95291683823411 + ], + [ + 6.871588775509361, + 50.95288878006565 + ], + [ + 6.871688788142441, + 50.952691946349745 + ], + [ + 6.871751514192641, + 50.95256866355468 + ], + [ + 6.871778439426616, + 50.95251478567997 + ], + [ + 6.871823778528919, + 50.952424092580394 + ], + [ + 6.871825389716775, + 50.95242086527847 + ], + [ + 6.871828549555553, + 50.95241471982239 + ], + [ + 6.871844662951716, + 50.95238425189496 + ], + [ + 6.871859141066597, + 50.95235703960878 + ], + [ + 6.871891322170241, + 50.95229364219307 + ], + [ + 6.871907420346953, + 50.95226204075442 + ], + [ + 6.871927651635713, + 50.95222249933547 + ], + [ + 6.871958500367424, + 50.95216192596609 + ], + [ + 6.871985961094996, + 50.95211766503456 + ], + [ + 6.872055039596275, + 50.95200626991816 + ], + [ + 6.8721089301650204, + 50.95191935979841 + ], + [ + 6.872246019243934, + 50.951698282131716 + ], + [ + 6.87228216377606, + 50.951640017684426 + ], + [ + 6.872432019287932, + 50.951435355109965 + ], + [ + 6.8724730993769505, + 50.951379250935375 + ], + [ + 6.872261714536706, + 50.951341372936085 + ], + [ + 6.872404062142519, + 50.95111134850338 + ], + [ + 6.8727855116085586, + 50.9505246056855 + ], + [ + 6.87278741510531, + 50.95052167779544 + ], + [ + 6.87297558731888, + 50.950232239641245 + ], + [ + 6.8729831386401, + 50.95015685315943 + ], + [ + 6.873177454886495, + 50.94987058903 + ], + [ + 6.873537973889582, + 50.949306003739885 + ], + [ + 6.873580384549272, + 50.94918487088526 + ], + [ + 6.873618364721053, + 50.9491251123045 + ], + [ + 6.873742826853511, + 50.94897430209547 + ], + [ + 6.873996498784244, + 50.948667679023764 + ], + [ + 6.873998608739182, + 50.94866521535917 + ], + [ + 6.874001087474634, + 50.948662532664805 + ], + [ + 6.874315188243962, + 50.9483253887939 + ], + [ + 6.874862177865612, + 50.94782951072758 + ], + [ + 6.87487690743101, + 50.9478156594152 + ], + [ + 6.874879836314402, + 50.94781290665032 + ], + [ + 6.874886969920301, + 50.947806211074806 + ], + [ + 6.874891391884859, + 50.947802062661964 + ], + [ + 6.874894549512184, + 50.94779910180581 + ], + [ + 6.874897080743099, + 50.947796733034316 + ], + [ + 6.875423884862108, + 50.94730479657148 + ], + [ + 6.875428999330143, + 50.947228080355735 + ], + [ + 6.875429233920864, + 50.947224091354784 + ], + [ + 6.875429541878339, + 50.94722052280253 + ], + [ + 6.875429775009383, + 50.94721706531166 + ], + [ + 6.875895966817472, + 50.94726388228948 + ], + [ + 6.876194547005468, + 50.94729391551199 + ], + [ + 6.876214209194234, + 50.94729299249283 + ], + [ + 6.876219147116451, + 50.947292731565476 + ], + [ + 6.876223770086507, + 50.9472924774996 + ], + [ + 6.876240801905039, + 50.94729160285746 + ], + [ + 6.876408166464238, + 50.94728343663716 + ], + [ + 6.8764618913974305, + 50.947280814585135 + ], + [ + 6.878793350669891, + 50.94752308148006 + ], + [ + 6.880067439572419, + 50.94770794975641 + ], + [ + 6.882590175777211, + 50.94804738001945 + ], + [ + 6.886099002810759, + 50.94851936593097 + ], + [ + 6.886151779209072, + 50.94852646436095 + ], + [ + 6.8862069458805975, + 50.94853328496674 + ], + [ + 6.886264522252315, + 50.94854040370228 + ], + [ + 6.886268989110333, + 50.94854095585675 + ], + [ + 6.886274131315553, + 50.94854159129022 + ], + [ + 6.886789071587041, + 50.94860516450444 + ], + [ + 6.886830046493064, + 50.94861019716865 + ], + [ + 6.88687652120297, + 50.94861604887668 + ], + [ + 6.8874546040518725, + 50.948685919125474 + ], + [ + 6.887459554205381, + 50.94868652045208 + ], + [ + 6.887464191513565, + 50.94868711341916 + ], + [ + 6.887482672300702, + 50.94868948764453 + ], + [ + 6.88756061850265, + 50.948699623026144 + ], + [ + 6.8875660310277045, + 50.94870032625072 + ], + [ + 6.887570728857744, + 50.948700934698806 + ], + [ + 6.887830394502394, + 50.948734417803365 + ], + [ + 6.887866339180252, + 50.94873908118226 + ], + [ + 6.888190577857282, + 50.94877878627786 + ], + [ + 6.888437595617973, + 50.94881359156553 + ], + [ + 6.888526072323508, + 50.94881785222636 + ], + [ + 6.88853497130151, + 50.948818280295995 + ], + [ + 6.888541628535394, + 50.948818599466385 + ], + [ + 6.888546671871022, + 50.948818841779286 + ], + [ + 6.8887304152896185, + 50.948827675435076 + ], + [ + 6.889218693979292, + 50.948900823403925 + ], + [ + 6.889226379533604, + 50.948901983164276 + ], + [ + 6.889234194704226, + 50.94890317314858 + ], + [ + 6.88924622138219, + 50.94890502207901 + ], + [ + 6.889631898478226, + 50.94858201723864 + ], + [ + 6.889634890387694, + 50.94857948919455 + ], + [ + 6.889637799052221, + 50.94857700731283 + ], + [ + 6.889656759831384, + 50.94856083559231 + ], + [ + 6.889709134852174, + 50.94850910728287 + ], + [ + 6.88980458868198, + 50.94846587884712 + ], + [ + 6.890413126273443, + 50.94819028227557 + ], + [ + 6.890415838621116, + 50.94814635684257 + ], + [ + 6.890416123183038, + 50.948141739154636 + ], + [ + 6.890416411525974, + 50.94813710084919 + ], + [ + 6.890417582919175, + 50.94811824396151 + ], + [ + 6.8906711516408015, + 50.948016687798244 + ], + [ + 6.890677485834354, + 50.948036622855625 + ], + [ + 6.8906783082350005, + 50.948039212649356 + ], + [ + 6.890686210179291, + 50.948064236862486 + ], + [ + 6.891330852626107, + 50.94779763687477 + ], + [ + 6.891323779643128, + 50.94777382475867 + ], + [ + 6.891316706707705, + 50.94775001174349 + ], + [ + 6.891541807249194, + 50.94765304438389 + ], + [ + 6.891701442573866, + 50.9475842771843 + ], + [ + 6.891696667496893, + 50.94756819991442 + ], + [ + 6.891690795126502, + 50.947548401865475 + ], + [ + 6.891721698399264, + 50.947523670209364 + ], + [ + 6.891742678955707, + 50.947506853797385 + ], + [ + 6.89176365949692, + 50.9474900373814 + ], + [ + 6.891825612014786, + 50.94744039588307 + ], + [ + 6.891838228334138, + 50.94743027811013 + ], + [ + 6.8918508432661225, + 50.94742015941138 + ], + [ + 6.8920196394588435, + 50.947280614763194 + ], + [ + 6.892036281505002, + 50.94726525160842 + ], + [ + 6.892052920735684, + 50.947249887501066 + ], + [ + 6.892141222178835, + 50.94716799934853 + ], + [ + 6.892147095038265, + 50.94716255349563 + ], + [ + 6.892150175613478, + 50.947159696915186 + ], + [ + 6.892153369098947, + 50.947156736246136 + ], + [ + 6.892156861402965, + 50.94715349586792 + ], + [ + 6.892177634917419, + 50.94713423111688 + ], + [ + 6.892217622487693, + 50.947097159228484 + ], + [ + 6.892291190634458, + 50.94701631625005 + ], + [ + 6.892359875194159, + 50.94694063565653 + ], + [ + 6.892370049693872, + 50.94692485169751 + ], + [ + 6.892380189111135, + 50.94690905631163 + ], + [ + 6.892411172481081, + 50.94686078996174 + ], + [ + 6.8924410900517294, + 50.946814146636164 + ], + [ + 6.8924430200463425, + 50.94681113706687 + ], + [ + 6.892444983856789, + 50.94680807234625 + ], + [ + 6.892451603022326, + 50.946797740111734 + ], + [ + 6.89245343205523, + 50.946794885212256 + ], + [ + 6.892455121637418, + 50.94679224904347 + ], + [ + 6.892458406181453, + 50.946787117100186 + ], + [ + 6.892464577116386, + 50.94677747199615 + ], + [ + 6.892467644130377, + 50.94677267968987 + ], + [ + 6.892470712566261, + 50.946767887409216 + ], + [ + 6.89248726520093, + 50.946742030371986 + ], + [ + 6.892505055917275, + 50.94671435914276 + ], + [ + 6.892507458716444, + 50.94671062241238 + ], + [ + 6.892510163744637, + 50.946706436050114 + ], + [ + 6.89251439333243, + 50.94669989384478 + ], + [ + 6.892517032353322, + 50.94669581331734 + ], + [ + 6.8925186367380045, + 50.94669332940414 + ], + [ + 6.892528305555831, + 50.94667839881097 + ], + [ + 6.892541710400673, + 50.946643004541215 + ], + [ + 6.892592156837958, + 50.94645681472113 + ], + [ + 6.8925923911715685, + 50.94645311349233 + ], + [ + 6.892592871514843, + 50.946450079549955 + ], + [ + 6.892593013068761, + 50.9464449987911 + ], + [ + 6.892592983795571, + 50.94644038982281 + ], + [ + 6.89259295054124, + 50.94643549118124 + ], + [ + 6.892592924552047, + 50.94643210003715 + ], + [ + 6.892592871210473, + 50.94642862115913 + ], + [ + 6.892592870993346, + 50.94642459731447 + ], + [ + 6.892592727578502, + 50.94641615401355 + ], + [ + 6.8925926678968805, + 50.946412626454396 + ], + [ + 6.892594270368486, + 50.94640842198539 + ], + [ + 6.892647036091377, + 50.94627745656681 + ], + [ + 6.892654915200271, + 50.94625815143321 + ], + [ + 6.892656117196317, + 50.94625530949484 + ], + [ + 6.892779834416302, + 50.94596943608322 + ], + [ + 6.892853042080864, + 50.945800210144334 + ], + [ + 6.89287835091461, + 50.94574086337154 + ], + [ + 6.8930492240521195, + 50.94533887870934 + ], + [ + 6.893077978151699, + 50.94527142857213 + ], + [ + 6.893079153515103, + 50.94526867069065 + ], + [ + 6.89308072030036, + 50.94526500160318 + ], + [ + 6.893083059971919, + 50.94525954140241 + ], + [ + 6.893090871295912, + 50.94524131787279 + ], + [ + 6.893112585036401, + 50.945192323721095 + ], + [ + 6.893138224512619, + 50.94513459095547 + ], + [ + 6.893174207202558, + 50.94504866840707 + ], + [ + 6.893176329622137, + 50.94504360450918 + ], + [ + 6.893177439825092, + 50.945040965068706 + ], + [ + 6.8931789563615, + 50.945037399401514 + ], + [ + 6.893180176133778, + 50.94503454069014 + ], + [ + 6.893183367747878, + 50.94502705156412 + ], + [ + 6.893184431659644, + 50.945024554290114 + ], + [ + 6.89318553401806, + 50.9450219623753 + ], + [ + 6.893186727372481, + 50.94501915265319 + ], + [ + 6.893188930869379, + 50.9450139643046 + ], + [ + 6.893212369277292, + 50.94495878022452 + ], + [ + 6.8932384911200675, + 50.94489645039932 + ], + [ + 6.893307305404107, + 50.944732249782476 + ], + [ + 6.893315096181368, + 50.94471368949728 + ], + [ + 6.893322886911569, + 50.94469513011011 + ], + [ + 6.893736197630457, + 50.943721217711335 + ], + [ + 6.893638981196283, + 50.94370435128181 + ], + [ + 6.8935228792296, + 50.94371160992145 + ], + [ + 6.893426061793549, + 50.943842696405206 + ], + [ + 6.893109984958548, + 50.94427021900649 + ], + [ + 6.892887613351057, + 50.94453881216791 + ], + [ + 6.892849540713218, + 50.944538294039404 + ], + [ + 6.892811468035951, + 50.94453777679713 + ], + [ + 6.892530944414776, + 50.94453407902356 + ], + [ + 6.891998496740495, + 50.944526643871924 + ], + [ + 6.891779313579068, + 50.94452365080444 + ], + [ + 6.891754621585263, + 50.944523383857046 + ], + [ + 6.891729929225926, + 50.94452312499229 + ], + [ + 6.891543351940924, + 50.94452131212694 + ], + [ + 6.89130269614787, + 50.94451901589192 + ], + [ + 6.891012086068915, + 50.94451611079738 + ], + [ + 6.891028630915127, + 50.944570280080555 + ], + [ + 6.891051103284005, + 50.94464418009789 + ], + [ + 6.89108282389913, + 50.9447477640554 + ], + [ + 6.8911443155977175, + 50.94494973245843 + ], + [ + 6.891201255634204, + 50.94513690378229 + ], + [ + 6.891205731891053, + 50.945151522279 + ], + [ + 6.891210210995542, + 50.94516614082695 + ], + [ + 6.8912223498352505, + 50.94520569014909 + ], + [ + 6.891278534880889, + 50.94539062001296 + ], + [ + 6.8912994866480615, + 50.945459318347496 + ], + [ + 6.891303814673017, + 50.94547353303677 + ], + [ + 6.891308141278002, + 50.945487747700156 + ], + [ + 6.8910967523383, + 50.94551309343979 + ], + [ + 6.891092577940823, + 50.94549941755048 + ], + [ + 6.891088373510789, + 50.94548574471598 + ], + [ + 6.891070833836801, + 50.94543118333566 + ], + [ + 6.891068769478924, + 50.945425051819164 + ], + [ + 6.891067639415793, + 50.9454208618619 + ], + [ + 6.891066175017862, + 50.94541798795858 + ], + [ + 6.891060984261878, + 50.94541868294491 + ], + [ + 6.890185166154141, + 50.945554659210046 + ], + [ + 6.890224547160523, + 50.94570924468355 + ], + [ + 6.890423336101029, + 50.94649114299174 + ], + [ + 6.890344929134438, + 50.94649848249138 + ], + [ + 6.890340634296843, + 50.94650831428519 + ], + [ + 6.890338486918051, + 50.94651322928341 + ], + [ + 6.8903363267768265, + 50.94651814315153 + ], + [ + 6.890285746407653, + 50.94663314432465 + ], + [ + 6.8901054566879845, + 50.94665546447493 + ], + [ + 6.889966971262264, + 50.946668745665306 + ], + [ + 6.8899723316842625, + 50.946733338246005 + ], + [ + 6.889988922274229, + 50.946740968987896 + ], + [ + 6.8900133796869225, + 50.946751722471326 + ], + [ + 6.889720665979546, + 50.94678838327806 + ], + [ + 6.889329387516861, + 50.94683505405424 + ], + [ + 6.889260592808075, + 50.94660805953461 + ], + [ + 6.889157026306632, + 50.94626644744952 + ], + [ + 6.888923246161945, + 50.94627443102225 + ], + [ + 6.888689745925707, + 50.94628214217918 + ], + [ + 6.8884027786698185, + 50.94629178807655 + ], + [ + 6.888259435899307, + 50.946296564742106 + ], + [ + 6.888134439847546, + 50.946300842101834 + ], + [ + 6.888119316688184, + 50.946239020984 + ], + [ + 6.888089061549687, + 50.946122391076315 + ], + [ + 6.887957800492693, + 50.946126446079525 + ], + [ + 6.887800178873581, + 50.94498627741543 + ], + [ + 6.8881809863961845, + 50.94497322217038 + ], + [ + 6.888737979456927, + 50.94495432958271 + ], + [ + 6.888677566327496, + 50.94421164631349 + ], + [ + 6.887733966805643, + 50.94418502507901 + ], + [ + 6.887669577576695, + 50.943422172412276 + ], + [ + 6.888465234114857, + 50.9433917083324 + ], + [ + 6.888434844640176, + 50.943040826917304 + ], + [ + 6.888480120391219, + 50.942930492771275 + ], + [ + 6.888479833408303, + 50.94292064741754 + ], + [ + 6.888479468081815, + 50.9429137560233 + ], + [ + 6.888461577849373, + 50.942600345075945 + ], + [ + 6.88874395108014, + 50.94259720677064 + ], + [ + 6.888981314462875, + 50.942598993719336 + ], + [ + 6.888993950121438, + 50.94261536166683 + ], + [ + 6.889014626562961, + 50.942622292078674 + ], + [ + 6.889397899746088, + 50.94262027073797 + ], + [ + 6.88938447112847, + 50.94247658696483 + ], + [ + 6.889377547358282, + 50.942387637700094 + ], + [ + 6.889377665682747, + 50.942384554052275 + ], + [ + 6.88937356716599, + 50.9422972504754 + ], + [ + 6.8893732128974765, + 50.942292971995165 + ], + [ + 6.889372629724539, + 50.9422884357499 + ], + [ + 6.8893713844794595, + 50.94227849662523 + ], + [ + 6.889359678487917, + 50.94218456284572 + ], + [ + 6.889359496695773, + 50.94218194504891 + ], + [ + 6.889353896919716, + 50.94212391986071 + ], + [ + 6.889332906020607, + 50.941886094797184 + ], + [ + 6.888928895435987, + 50.94189693707499 + ], + [ + 6.888879878692523, + 50.94129762097294 + ], + [ + 6.887701311880417, + 50.941336036340324 + ], + [ + 6.887719951629598, + 50.941679554464834 + ], + [ + 6.887212473356216, + 50.94169754296555 + ], + [ + 6.887019294284246, + 50.94170428776536 + ], + [ + 6.886901401270691, + 50.94170840359804 + ], + [ + 6.886782819398613, + 50.94171257879235 + ], + [ + 6.8865416698382935, + 50.94172120831733 + ], + [ + 6.886503520744129, + 50.94172318071233 + ], + [ + 6.886495418824451, + 50.941723601538534 + ], + [ + 6.8864912777459235, + 50.94172382156212 + ], + [ + 6.886483358092828, + 50.94172424119055 + ], + [ + 6.886467717108258, + 50.9416212500806 + ], + [ + 6.886464640335193, + 50.941589280609996 + ], + [ + 6.886462056388097, + 50.94156157325192 + ], + [ + 6.886460249036382, + 50.9415418206213 + ], + [ + 6.886459337791085, + 50.941531875815684 + ], + [ + 6.886458966369962, + 50.94152782455818 + ], + [ + 6.8864585352625705, + 50.94152308059322 + ], + [ + 6.886440645512783, + 50.94132467441238 + ], + [ + 6.886413217272294, + 50.94102005626274 + ], + [ + 6.886286347797425, + 50.941025396687664 + ], + [ + 6.886279043910316, + 50.941025706933615 + ], + [ + 6.886271829965742, + 50.94102594865571 + ], + [ + 6.886262972999404, + 50.94102622808075 + ], + [ + 6.886257598772113, + 50.94102639518782 + ], + [ + 6.886252163873106, + 50.94102655040342 + ], + [ + 6.885955931303051, + 50.94103494486049 + ], + [ + 6.885881439644923, + 50.94102262691218 + ], + [ + 6.885873325057007, + 50.94102129006721 + ], + [ + 6.885865839675068, + 50.94102023533175 + ], + [ + 6.885788799154747, + 50.94101160630774 + ], + [ + 6.885790533942128, + 50.94100772630232 + ], + [ + 6.8858252760075995, + 50.940919910915525 + ], + [ + 6.885827660236435, + 50.94091407841511 + ], + [ + 6.885829601857518, + 50.940909435879185 + ], + [ + 6.885853458344208, + 50.940854593547 + ], + [ + 6.8859275909317015, + 50.94071278912867 + ], + [ + 6.885684703054405, + 50.94067472438578 + ], + [ + 6.885692497202121, + 50.94065899590848 + ], + [ + 6.885665442337708, + 50.94031172016104 + ], + [ + 6.885782471542791, + 50.94025845295824 + ], + [ + 6.8857484935186655, + 50.93978558942011 + ], + [ + 6.88618757396815, + 50.939771451306314 + ], + [ + 6.8862763835463445, + 50.9399357626584 + ], + [ + 6.8866427734414195, + 50.93994068484191 + ], + [ + 6.887173993479305, + 50.93994140954259 + ], + [ + 6.887186685770106, + 50.93994152324519 + ], + [ + 6.887200978815417, + 50.93994165152872 + ], + [ + 6.887330051039174, + 50.93994643389472 + ], + [ + 6.887340203991772, + 50.93994670128668 + ], + [ + 6.887357000930983, + 50.939947143782724 + ], + [ + 6.887642847612729, + 50.93994336688391 + ], + [ + 6.887669805758772, + 50.93994295261809 + ], + [ + 6.887849286907797, + 50.93993877131562 + ], + [ + 6.887876191850105, + 50.93993802326715 + ], + [ + 6.887999278797932, + 50.939932400442004 + ], + [ + 6.888021800712535, + 50.93993137249759 + ], + [ + 6.888012800809072, + 50.93978869856713 + ], + [ + 6.887980734480019, + 50.93978489141634 + ], + [ + 6.8879558161773735, + 50.93978138176967 + ], + [ + 6.887944288745531, + 50.93976627759596 + ], + [ + 6.887939486586503, + 50.93973039609859 + ], + [ + 6.887929854635273, + 50.93965842664345 + ], + [ + 6.8881306408692895, + 50.939155989003154 + ], + [ + 6.888133541949036, + 50.939148825723656 + ], + [ + 6.888151129142927, + 50.93910477904657 + ], + [ + 6.88857716659579, + 50.939173230249345 + ], + [ + 6.888600023242873, + 50.93913122059034 + ], + [ + 6.888639585181288, + 50.93905550644144 + ], + [ + 6.888735791788679, + 50.93887265137698 + ], + [ + 6.889086753800031, + 50.9389310152442 + ], + [ + 6.889109513904508, + 50.9388791509823 + ], + [ + 6.889132265382336, + 50.938827287459276 + ], + [ + 6.889155604318737, + 50.938773986545186 + ], + [ + 6.889197546687981, + 50.938780793328945 + ], + [ + 6.889257653080779, + 50.938789152599334 + ], + [ + 6.889273091273225, + 50.9387912062342 + ], + [ + 6.8892860754437875, + 50.93879294567917 + ], + [ + 6.8893082016052976, + 50.93879570843547 + ], + [ + 6.889312355934468, + 50.93879619546942 + ], + [ + 6.88931690400919, + 50.9387970089042 + ], + [ + 6.889325647349934, + 50.93879866267126 + ], + [ + 6.889339650920391, + 50.93876824595474 + ], + [ + 6.889356942368665, + 50.9387413863915 + ], + [ + 6.889393448440833, + 50.938677983278644 + ], + [ + 6.889409600815363, + 50.93864135468179 + ], + [ + 6.889569423062588, + 50.93866719653377 + ], + [ + 6.889579578461031, + 50.9386689441639 + ], + [ + 6.889584411673477, + 50.93866977893223 + ], + [ + 6.889598850357461, + 50.938672277637195 + ], + [ + 6.889603229949849, + 50.93867303944814 + ], + [ + 6.889632651760902, + 50.93867758171245 + ], + [ + 6.889666887327821, + 50.93860037238623 + ], + [ + 6.889693207675791, + 50.93854075222629 + ], + [ + 6.8896802879598145, + 50.93853913091147 + ], + [ + 6.889480198701363, + 50.93850574115766 + ], + [ + 6.889467333709315, + 50.93850398050452 + ], + [ + 6.889356892417716, + 50.93848483420425 + ], + [ + 6.889393559963065, + 50.938405320633116 + ], + [ + 6.889428519032746, + 50.93832873513619 + ], + [ + 6.889415608326001, + 50.9383271049606 + ], + [ + 6.889057370323118, + 50.938266431267046 + ], + [ + 6.889087062934524, + 50.93820908290758 + ], + [ + 6.889114728158655, + 50.93815573341865 + ], + [ + 6.889116439271879, + 50.93815239886295 + ], + [ + 6.889145936054497, + 50.93809581951874 + ], + [ + 6.889173826574284, + 50.93803994412028 + ], + [ + 6.889198083735989, + 50.9379954611777 + ], + [ + 6.888966075569103, + 50.93797115184187 + ], + [ + 6.88895289278393, + 50.937969717256706 + ], + [ + 6.888869830736017, + 50.93796088330645 + ], + [ + 6.888794191702925, + 50.93813778150397 + ], + [ + 6.8887812284824275, + 50.93813624384396 + ], + [ + 6.8886282824859535, + 50.938112060518925 + ], + [ + 6.888623322885031, + 50.938111283683185 + ], + [ + 6.888616760743436, + 50.938110250317145 + ], + [ + 6.888611060968574, + 50.938109347669986 + ], + [ + 6.888527016014731, + 50.93809625330028 + ], + [ + 6.888517771090584, + 50.9380965627505 + ], + [ + 6.8885136556747355, + 50.93809660073301 + ], + [ + 6.888354223179186, + 50.93810427644759 + ], + [ + 6.888351173247228, + 50.93807121834697 + ], + [ + 6.888154334840485, + 50.9380495834049 + ], + [ + 6.888118943894938, + 50.938045634292955 + ], + [ + 6.888114473163053, + 50.93804525211606 + ], + [ + 6.888109908547002, + 50.93804502563281 + ], + [ + 6.88797659365808, + 50.938042481451916 + ], + [ + 6.887972170767381, + 50.938042394234024 + ], + [ + 6.887966947146515, + 50.938042292528365 + ], + [ + 6.887957298968438, + 50.93804210897019 + ], + [ + 6.887939014967426, + 50.938041829420804 + ], + [ + 6.887902882981587, + 50.93804135465021 + ], + [ + 6.887856490876586, + 50.93804075628102 + ], + [ + 6.8878506139895785, + 50.93804068412174 + ], + [ + 6.887844474012977, + 50.938040732216365 + ], + [ + 6.88763557497145, + 50.93804507545665 + ], + [ + 6.887581013592997, + 50.93804620976219 + ], + [ + 6.8875756693831836, + 50.93804631901107 + ], + [ + 6.887559285941855, + 50.938046661093644 + ], + [ + 6.887494121513225, + 50.93804804597808 + ], + [ + 6.8874509311516565, + 50.93804897588397 + ], + [ + 6.887434678597263, + 50.93804931941836 + ], + [ + 6.887348214356577, + 50.93805123162174 + ], + [ + 6.887342714305324, + 50.9380513560272 + ], + [ + 6.887336576057809, + 50.93805155432367 + ], + [ + 6.887323865340894, + 50.93805182703626 + ], + [ + 6.887203988755401, + 50.93805534780273 + ], + [ + 6.887190490473913, + 50.93805525278796 + ], + [ + 6.88693673259021, + 50.93806303873208 + ], + [ + 6.886851120038942, + 50.93806597509444 + ], + [ + 6.886764939671726, + 50.93806859442439 + ], + [ + 6.886450575846931, + 50.93807812149077 + ], + [ + 6.886445937189311, + 50.93807827224294 + ], + [ + 6.886428761148878, + 50.93807876530294 + ], + [ + 6.886422088412402, + 50.938078947578134 + ], + [ + 6.886416459901158, + 50.93807911098573 + ], + [ + 6.8863783999557535, + 50.93808034474275 + ], + [ + 6.8863581960240365, + 50.93808100061884 + ], + [ + 6.886352740220972, + 50.938081122181316 + ], + [ + 6.886151836137802, + 50.938087004274465 + ], + [ + 6.886130111836169, + 50.938088604814794 + ], + [ + 6.886065246175209, + 50.93808964535054 + ], + [ + 6.886030659002106, + 50.93809120090636 + ], + [ + 6.886025508750833, + 50.93809095654085 + ], + [ + 6.885844986915862, + 50.93809576460442 + ], + [ + 6.885831551814877, + 50.93809625337837 + ], + [ + 6.885763231631594, + 50.938098420167755 + ], + [ + 6.885757693611013, + 50.93809859687457 + ], + [ + 6.885752855222584, + 50.93809875747246 + ], + [ + 6.885740121709235, + 50.938099186992154 + ], + [ + 6.88565148284422, + 50.93810209104626 + ], + [ + 6.8856278636839745, + 50.938102755988055 + ], + [ + 6.885623650322233, + 50.9381028820331 + ], + [ + 6.885618136316039, + 50.9381030627658 + ], + [ + 6.885608409147109, + 50.938103396527886 + ], + [ + 6.885603477577339, + 50.93810357162074 + ], + [ + 6.885582109928436, + 50.93810427553655 + ], + [ + 6.885520373418001, + 50.93810637166599 + ], + [ + 6.885508667472686, + 50.938106741527186 + ], + [ + 6.8855014742156655, + 50.93810697637861 + ], + [ + 6.885496204877465, + 50.93810716063814 + ], + [ + 6.8854842705098, + 50.93810757672479 + ], + [ + 6.885412174120934, + 50.93810999058989 + ], + [ + 6.885373999043273, + 50.93811128219275 + ], + [ + 6.885368334230653, + 50.93811149255966 + ], + [ + 6.885362713090317, + 50.93811177566823 + ], + [ + 6.8853450718185725, + 50.9381128591316 + ], + [ + 6.885224694261616, + 50.93812051135923 + ], + [ + 6.8852249579837626, + 50.93812385915194 + ], + [ + 6.885234701580137, + 50.93824825876106 + ], + [ + 6.885221251861313, + 50.93824862938067 + ], + [ + 6.884719023070945, + 50.938262810281174 + ], + [ + 6.884525636618835, + 50.93826821961892 + ], + [ + 6.884525425781048, + 50.93826552663593 + ], + [ + 6.884490523424665, + 50.93782304587765 + ], + [ + 6.884453440379938, + 50.937840672718984 + ], + [ + 6.884439255143618, + 50.937847057598795 + ], + [ + 6.883938031517402, + 50.93785825028142 + ], + [ + 6.883924560024016, + 50.937858507033674 + ], + [ + 6.88358193007315, + 50.937864787926316 + ], + [ + 6.8835684578017355, + 50.937865061711705 + ], + [ + 6.883299770360825, + 50.93787017579335 + ], + [ + 6.883286274405103, + 50.93787040684555 + ], + [ + 6.8830434038645505, + 50.93787441454999 + ], + [ + 6.883044128852438, + 50.937888191894196 + ], + [ + 6.883045847932571, + 50.93790759763343 + ], + [ + 6.883053669154604, + 50.93799772929094 + ], + [ + 6.883053903955829, + 50.93800045688847 + ], + [ + 6.883054161740486, + 50.938003461913524 + ], + [ + 6.883055933633475, + 50.938024744728196 + ], + [ + 6.883057114437876, + 50.93803892247033 + ], + [ + 6.882444974926582, + 50.938085049392136 + ], + [ + 6.882202171242812, + 50.938020872342214 + ], + [ + 6.882263755073876, + 50.93790589420763 + ], + [ + 6.882301073334126, + 50.93768410548621 + ], + [ + 6.882346109947155, + 50.9375079351048 + ], + [ + 6.882365128308645, + 50.937414078462666 + ], + [ + 6.882366753300285, + 50.93741083237904 + ], + [ + 6.88251087698725, + 50.937148466234326 + ], + [ + 6.882541977025577, + 50.93709294648599 + ], + [ + 6.882697097525024, + 50.936945337945446 + ], + [ + 6.8828058670170575, + 50.936896872336106 + ], + [ + 6.88282770307644, + 50.936893021483016 + ], + [ + 6.88290903744835, + 50.9368833271585 + ], + [ + 6.8830235759511735, + 50.936891539135814 + ], + [ + 6.883139154482749, + 50.93692464417018 + ], + [ + 6.8831796519696935, + 50.93695966584378 + ], + [ + 6.8832301849528745, + 50.93699865589744 + ], + [ + 6.883417820321666, + 50.9370158071776 + ], + [ + 6.883498110759876, + 50.93702314676381 + ], + [ + 6.883572518050057, + 50.93690320560455 + ], + [ + 6.883617413705736, + 50.93681000591108 + ], + [ + 6.883786941543606, + 50.93648465884195 + ], + [ + 6.884104408540622, + 50.936106142261146 + ], + [ + 6.884580115251545, + 50.935722649958116 + ], + [ + 6.885502841995623, + 50.93499713678335 + ], + [ + 6.885505222175304, + 50.93499496381284 + ], + [ + 6.885507598129054, + 50.93499278986633 + ], + [ + 6.885520778786637, + 50.934979379549354 + ], + [ + 6.885776100050255, + 50.934726284392454 + ], + [ + 6.885809418482943, + 50.934696916729784 + ], + [ + 6.885879918182493, + 50.93463488493689 + ], + [ + 6.8862126772279755, + 50.93426288948654 + ], + [ + 6.886258133486074, + 50.934212043815656 + ], + [ + 6.886315365125141, + 50.9341477856594 + ], + [ + 6.886321381533859, + 50.93414056460904 + ], + [ + 6.886325007964009, + 50.9341361738189 + ], + [ + 6.886393445455447, + 50.93405335734995 + ], + [ + 6.886301428492668, + 50.934036233423434 + ], + [ + 6.886198627742687, + 50.934038902092176 + ], + [ + 6.886147132008551, + 50.93402401109686 + ], + [ + 6.886132771731638, + 50.934039402154326 + ], + [ + 6.8858623314162655, + 50.93397906984145 + ], + [ + 6.885579770024006, + 50.93390966018547 + ], + [ + 6.8853409638450955, + 50.93384459149435 + ], + [ + 6.8852576561767425, + 50.93381753700513 + ], + [ + 6.885083886005607, + 50.93376114328481 + ], + [ + 6.884847733083032, + 50.933670883978316 + ], + [ + 6.884615942010677, + 50.9335630626779 + ], + [ + 6.884209930598827, + 50.933352464467326 + ], + [ + 6.884145315255278, + 50.93331919505742 + ], + [ + 6.8836704673853015, + 50.93310323246794 + ], + [ + 6.883279046170354, + 50.93295652435266 + ], + [ + 6.882888186217859, + 50.93282474320492 + ], + [ + 6.882882788306097, + 50.93282294546181 + ], + [ + 6.882804465158176, + 50.93279767944188 + ], + [ + 6.881666042668437, + 50.93243107358791 + ], + [ + 6.88141486045639, + 50.932350180403084 + ], + [ + 6.881188628966918, + 50.932287345965825 + ], + [ + 6.880257092240331, + 50.932080341475064 + ], + [ + 6.8795222157612566, + 50.93192928970087 + ], + [ + 6.879498368241906, + 50.931924435094764 + ], + [ + 6.879433103573255, + 50.9319109044706 + ], + [ + 6.879342639208392, + 50.93189621446959 + ], + [ + 6.879262735598225, + 50.93188333246873 + ], + [ + 6.879086835048023, + 50.93185508678091 + ], + [ + 6.879078962344862, + 50.931853884256554 + ], + [ + 6.879070928427623, + 50.93185322203207 + ], + [ + 6.878362419893098, + 50.93179977039692 + ], + [ + 6.878268617486471, + 50.93179661108472 + ], + [ + 6.878590940554023, + 50.93063663013404 + ], + [ + 6.877223264305839, + 50.930507183854466 + ], + [ + 6.87656930922889, + 50.93033144505205 + ], + [ + 6.876471969105814, + 50.92992529257803 + ], + [ + 6.87627126478842, + 50.92969267321853 + ], + [ + 6.876172335153137, + 50.9296964719023 + ], + [ + 6.87591676574532, + 50.92922951021427 + ], + [ + 6.875152122975348, + 50.929020313603885 + ], + [ + 6.8751218806257395, + 50.92902160321406 + ], + [ + 6.874310557837328, + 50.92900190217842 + ], + [ + 6.874156590474356, + 50.92899865114059 + ], + [ + 6.874157914092461, + 50.92889472490411 + ], + [ + 6.873985115047457, + 50.92888846847446 + ], + [ + 6.871441066734064, + 50.92883225583913 + ], + [ + 6.871201792254182, + 50.928853818872305 + ], + [ + 6.871021355950221, + 50.928849862398366 + ], + [ + 6.870793170629368, + 50.92881785603103 + ], + [ + 6.868903990454103, + 50.92877584605702 + ], + [ + 6.868841469534489, + 50.92878700908826 + ], + [ + 6.868802618071248, + 50.92881651288096 + ], + [ + 6.868794212425801, + 50.92885388099317 + ], + [ + 6.868632475901291, + 50.92884582646889 + ], + [ + 6.86861598504917, + 50.92878527171303 + ], + [ + 6.868442907417944, + 50.92877927899075 + ], + [ + 6.868366379086654, + 50.92879441039719 + ], + [ + 6.868277403247898, + 50.9288286027115 + ], + [ + 6.868163968051953, + 50.92886306684707 + ], + [ + 6.868032416289243, + 50.93046054214063 + ], + [ + 6.867910724450998, + 50.93220608704908 + ], + [ + 6.867748547148048, + 50.934138460143224 + ], + [ + 6.867605139623176, + 50.93589531186262 + ], + [ + 6.8675949671474505, + 50.93605953139742 + ], + [ + 6.867598231202822, + 50.936234887969 + ], + [ + 6.86765392445484, + 50.93708360330163 + ], + [ + 6.867663610266397, + 50.93751510307864 + ], + [ + 6.867673390154001, + 50.93756662865634 + ], + [ + 6.867688343910093, + 50.9376438255226 + ], + [ + 6.867699259883178, + 50.93770007654508 + ], + [ + 6.8677002470033095, + 50.93770295462852 + ], + [ + 6.867744226351239, + 50.93782562227429 + ], + [ + 6.865820858918879, + 50.93783261697051 + ], + [ + 6.865136185462794, + 50.93783509895616 + ], + [ + 6.862892134493392, + 50.9378251058679 + ], + [ + 6.862881174385636, + 50.93784810132509 + ], + [ + 6.862860361233002, + 50.93789177139784 + ], + [ + 6.8628390469453295, + 50.937892018834866 + ], + [ + 6.862839289598327, + 50.93790622011649 + ], + [ + 6.862838982611484, + 50.93792042572524 + ], + [ + 6.862838504648793, + 50.93794838524192 + ], + [ + 6.862832182432367, + 50.93794883700575 + ], + [ + 6.862825860257054, + 50.937949287870616 + ], + [ + 6.862795171433913, + 50.93800533887393 + ], + [ + 6.862780592244913, + 50.93803241423907 + ], + [ + 6.862762707744329, + 50.938065357850675 + ], + [ + 6.862727898196887, + 50.93812934873505 + ], + [ + 6.862661536289891, + 50.93825154319047 + ], + [ + 6.86265845337132, + 50.93825721764246 + ], + [ + 6.862655367648717, + 50.93826289114365 + ], + [ + 6.862625398563263, + 50.938317982142856 + ], + [ + 6.862569292570855, + 50.93830752023809 + ], + [ + 6.862390693471911, + 50.938274051080775 + ], + [ + 6.862381032526127, + 50.93829394490897 + ], + [ + 6.862188844672385, + 50.93869102713942 + ], + [ + 6.861824312286333, + 50.93870468662561 + ], + [ + 6.861956561007142, + 50.938462797402494 + ], + [ + 6.86180352738109, + 50.9384654563351 + ], + [ + 6.861802388937595, + 50.93845009282181 + ], + [ + 6.861552500346552, + 50.938454455203036 + ], + [ + 6.861544108588304, + 50.93826223625143 + ], + [ + 6.8614258585103745, + 50.938237849629914 + ], + [ + 6.861420151575618, + 50.938121570215856 + ], + [ + 6.861127217502197, + 50.93812921637923 + ], + [ + 6.861125185590431, + 50.938065497071356 + ], + [ + 6.861119116489814, + 50.937944905627624 + ], + [ + 6.859588099629636, + 50.93798060643906 + ], + [ + 6.859557200222879, + 50.93797889493323 + ], + [ + 6.859556342926, + 50.93799418230612 + ], + [ + 6.859550518840391, + 50.93808717479713 + ], + [ + 6.859539266536226, + 50.938209870782245 + ], + [ + 6.859533089803232, + 50.93827607751647 + ], + [ + 6.859500219861107, + 50.93864827213144 + ], + [ + 6.859494609782357, + 50.9387154030292 + ], + [ + 6.859492074936562, + 50.938741706824906 + ], + [ + 6.8594898061624185, + 50.93876602965017 + ], + [ + 6.859489502520014, + 50.93876929335858 + ], + [ + 6.859489305807278, + 50.938771964532094 + ], + [ + 6.8594860574510745, + 50.93881631226168 + ], + [ + 6.859485707609986, + 50.93882110857987 + ], + [ + 6.859485657864353, + 50.938825910400915 + ], + [ + 6.859485528731972, + 50.938838390642445 + ], + [ + 6.859485465342103, + 50.93884460515221 + ], + [ + 6.859485278298589, + 50.93885081559575 + ], + [ + 6.859484621885622, + 50.938872512992425 + ], + [ + 6.859477286318905, + 50.93896075236742 + ], + [ + 6.859473333708868, + 50.939012560198336 + ], + [ + 6.859472339838127, + 50.939023939920496 + ], + [ + 6.859471954210824, + 50.93902836863192 + ], + [ + 6.859471639820265, + 50.93903279595143 + ], + [ + 6.859469379842786, + 50.939064519102956 + ], + [ + 6.859088590406836, + 50.93905677140572 + ], + [ + 6.859082793867361, + 50.939157164537136 + ], + [ + 6.859069087167158, + 50.93935317225418 + ], + [ + 6.859024943632062, + 50.94010733694868 + ], + [ + 6.859018001192474, + 50.94013983941971 + ], + [ + 6.858992277248454, + 50.940519465218955 + ], + [ + 6.858988816196818, + 50.940570999633486 + ], + [ + 6.858977914614265, + 50.940732268624004 + ], + [ + 6.858972724087542, + 50.940808988358086 + ], + [ + 6.8589622988133065, + 50.94096072447065 + ], + [ + 6.858940666690271, + 50.940961506806275 + ], + [ + 6.858873395092128, + 50.94096402607581 + ], + [ + 6.858728517531428, + 50.94096952069391 + ], + [ + 6.858583784504705, + 50.94097499799718 + ], + [ + 6.858486121625048, + 50.9409786755596 + ], + [ + 6.858366405893863, + 50.94098315183436 + ], + [ + 6.8582950312465725, + 50.94098583473195 + ], + [ + 6.858216546885658, + 50.940988748693705 + ], + [ + 6.858056451104885, + 50.94099469086376 + ], + [ + 6.857939294090669, + 50.94099905805645 + ], + [ + 6.857762988167362, + 50.94100556757821 + ], + [ + 6.857725594163032, + 50.94100692114766 + ], + [ + 6.857700997071967, + 50.94100782152354 + ], + [ + 6.857623509564226, + 50.941010818137045 + ], + [ + 6.857616923376633, + 50.94099306745531 + ], + [ + 6.857585403672999, + 50.940988984061214 + ], + [ + 6.85747844191456, + 50.94097520747394 + ], + [ + 6.857407300556772, + 50.94096603567687 + ], + [ + 6.857400929638634, + 50.940965214520226 + ], + [ + 6.857394555628169, + 50.940964398702796 + ], + [ + 6.857310868063091, + 50.94095369604891 + ], + [ + 6.8572284689780885, + 50.940943144699375 + ], + [ + 6.857151918944127, + 50.94093349572043 + ], + [ + 6.8571468478704665, + 50.9409328567031 + ], + [ + 6.857141778715145, + 50.94093220692814 + ], + [ + 6.857099854031527, + 50.94092683604479 + ], + [ + 6.85706646640526, + 50.94092254373869 + ], + [ + 6.857058919423847, + 50.94092157326055 + ], + [ + 6.8570513622558025, + 50.94092063857045 + ], + [ + 6.8570310489246085, + 50.94091812601927 + ], + [ + 6.856972503376186, + 50.94091049379662 + ], + [ + 6.856888954884533, + 50.9408996189106 + ], + [ + 6.856881259890378, + 50.94089861692314 + ], + [ + 6.856873566112242, + 50.94089761945442 + ], + [ + 6.856805297304476, + 50.94088876444636 + ], + [ + 6.8567217244523055, + 50.94087801850474 + ], + [ + 6.856691419818054, + 50.94087410647575 + ], + [ + 6.856638015684461, + 50.940867195358166 + ], + [ + 6.85663016478442, + 50.940866178799396 + ], + [ + 6.856622304028152, + 50.940865190839524 + ], + [ + 6.856596900131443, + 50.9408620001404 + ], + [ + 6.856544447341657, + 50.94086260015151 + ], + [ + 6.856518135329322, + 50.94086315220359 + ], + [ + 6.856480872882042, + 50.940863875519256 + ], + [ + 6.856303650971182, + 50.94086697082282 + ], + [ + 6.856305180994087, + 50.940896805549706 + ], + [ + 6.856305425893077, + 50.94090156961018 + ], + [ + 6.856305686561594, + 50.94090633126212 + ], + [ + 6.856313703331827, + 50.9410523934477 + ], + [ + 6.856314004600084, + 50.94105788165144 + ], + [ + 6.856314353301012, + 50.94106335993355 + ], + [ + 6.856314935526879, + 50.94109386978306 + ], + [ + 6.856084833492519, + 50.94109810272662 + ], + [ + 6.856078388597585, + 50.94109823978644 + ], + [ + 6.856071943082456, + 50.941098390325344 + ], + [ + 6.855898207094808, + 50.941102028415045 + ], + [ + 6.8558228248376025, + 50.94110341302398 + ], + [ + 6.855820213449534, + 50.94105399133333 + ], + [ + 6.855815516304805, + 50.94095334623728 + ], + [ + 6.855808031437573, + 50.94080148192762 + ], + [ + 6.85554021726929, + 50.94080668224447 + ], + [ + 6.855430304078706, + 50.940808836182946 + ], + [ + 6.855364707469733, + 50.940810036017844 + ], + [ + 6.855343658372024, + 50.94081046054793 + ], + [ + 6.855099738401541, + 50.94081521384467 + ], + [ + 6.855064761238334, + 50.940778722428725 + ], + [ + 6.854165957351468, + 50.94076022956394 + ], + [ + 6.854160545054169, + 50.94079970676996 + ], + [ + 6.8541503926005065, + 50.940873585695016 + ], + [ + 6.853900154942015, + 50.94088296732441 + ], + [ + 6.853709631052922, + 50.94089002597273 + ], + [ + 6.853663280681043, + 50.94089180266505 + ], + [ + 6.853612876917841, + 50.94089365500676 + ], + [ + 6.852971571860928, + 50.94091771562079 + ], + [ + 6.852928916435511, + 50.940919285667775 + ], + [ + 6.852961474758511, + 50.94124436867293 + ], + [ + 6.852967772010044, + 50.94130947342445 + ], + [ + 6.852968179874151, + 50.94131369006524 + ], + [ + 6.852968597777408, + 50.9413179050919 + ], + [ + 6.852975782793814, + 50.94139043623384 + ], + [ + 6.852982834791497, + 50.94146347578065 + ], + [ + 6.85298933114664, + 50.941536525792465 + ], + [ + 6.852998036686639, + 50.941609424865206 + ], + [ + 6.852998416106431, + 50.94168550303521 + ], + [ + 6.852999713873681, + 50.94175539860896 + ], + [ + 6.853000200422897, + 50.94182865736555 + ], + [ + 6.853000709080348, + 50.9418875335051 + ], + [ + 6.853000829243485, + 50.94190182520155 + ], + [ + 6.853001451610036, + 50.941978315259576 + ], + [ + 6.853001577498009, + 50.94201265713129 + ], + [ + 6.853001934617435, + 50.94203876755428 + ], + [ + 6.853002014821825, + 50.942044596168145 + ], + [ + 6.853002090841979, + 50.94205042290629 + ], + [ + 6.853002344708684, + 50.94207009270713 + ], + [ + 6.853002833038299, + 50.94210935910128 + ], + [ + 6.853002888362777, + 50.942113626818276 + ], + [ + 6.853003099909449, + 50.94211784074707 + ], + [ + 6.853006365262885, + 50.94212084360346 + ], + [ + 6.853002794296621, + 50.94213346380169 + ], + [ + 6.852932125878843, + 50.942221179220624 + ], + [ + 6.8528233661367866, + 50.94228840111854 + ], + [ + 6.852827860115966, + 50.94229294654554 + ], + [ + 6.85283115927547, + 50.94229666774066 + ], + [ + 6.852833622031632, + 50.94229944808038 + ], + [ + 6.852838318009458, + 50.942305108866705 + ], + [ + 6.852840497856738, + 50.9423079118836 + ], + [ + 6.85284223006624, + 50.94231085236774 + ], + [ + 6.852845756810311, + 50.94231689457351 + ], + [ + 6.852848344602585, + 50.942321966156655 + ], + [ + 6.852849712893065, + 50.94232603857288 + ], + [ + 6.852850780675433, + 50.942329187185976 + ], + [ + 6.852852615448637, + 50.94233555532753 + ], + [ + 6.852853352650929, + 50.94233867987232 + ], + [ + 6.852854352761339, + 50.942342833656475 + ], + [ + 6.852854860194523, + 50.94234813319351 + ], + [ + 6.852855577017444, + 50.94236489119485 + ], + [ + 6.852853886606123, + 50.94336452413299 + ], + [ + 6.852845904371649, + 50.94356316374123 + ], + [ + 6.8528553875012035, + 50.94366036958498 + ], + [ + 6.852847330564501, + 50.94375945720899 + ], + [ + 6.852827624984176, + 50.943846202320756 + ], + [ + 6.852794850596068, + 50.943951451198316 + ], + [ + 6.85275412050808, + 50.944047225272584 + ], + [ + 6.852709541167265, + 50.944136226285565 + ], + [ + 6.852647272694821, + 50.94423762463976 + ], + [ + 6.8525817700313985, + 50.94433345111524 + ], + [ + 6.852296554453093, + 50.94465307035566 + ], + [ + 6.852149223420938, + 50.944637308657455 + ], + [ + 6.851504365977357, + 50.94456487542301 + ], + [ + 6.850000384716685, + 50.944430829996605 + ], + [ + 6.849963641054425, + 50.944426817427775 + ], + [ + 6.8495967240016835, + 50.94438926033197 + ], + [ + 6.849606809474585, + 50.94781337575019 + ], + [ + 6.849612820302288, + 50.94789659534191 + ], + [ + 6.84963305652661, + 50.948176734495114 + ], + [ + 6.849856597643121, + 50.951271246116974 + ], + [ + 6.850350609888792, + 50.95524144832776 + ], + [ + 6.850506515631049, + 50.955276071798046 + ], + [ + 6.850751656829467, + 50.95533963698494 + ], + [ + 6.8513242197920325, + 50.955489717070215 + ], + [ + 6.8536594171383705, + 50.9561880230833 + ], + [ + 6.854222007873372, + 50.956355062166296 + ], + [ + 6.854274556399661, + 50.956348591856774 + ], + [ + 6.8543084019572635, + 50.956344476841565 + ], + [ + 6.854377835874379, + 50.95629439977738 + ], + [ + 6.85455992844686, + 50.95616444364129 + ], + [ + 6.854617478624605, + 50.95614129243423 + ], + [ + 6.855845162856619, + 50.95563773234006 + ], + [ + 6.856619959342068, + 50.95541360966898 + ], + [ + 6.856947053397595, + 50.95531908733356 + ], + [ + 6.857181865896047, + 50.95528487403141 + ], + [ + 6.858816601065166, + 50.95504813824633 + ], + [ + 6.858863699737878, + 50.95504451051859 + ], + [ + 6.858978472831259, + 50.95503388460826 + ], + [ + 6.859040051641203, + 50.95499395152318 + ], + [ + 6.85932664566597, + 50.95481136833028 + ], + [ + 6.861711263014199, + 50.95555923213729 + ], + [ + 6.86207149744784, + 50.955672200763566 + ], + [ + 6.862400984241222, + 50.95577552419104 + ], + [ + 6.862600841358857, + 50.955838196536796 + ], + [ + 6.863155212887926, + 50.956012036421754 + ], + [ + 6.863281237290999, + 50.95605155508262 + ], + [ + 6.863288219718078, + 50.95605374426738 + ], + [ + 6.86329240999533, + 50.95605505851256 + ], + [ + 6.863296132835194, + 50.956056225697175 + ], + [ + 6.863351677701036, + 50.956073643460826 + ], + [ + 6.863623745216935, + 50.95615896180166 + ], + [ + 6.8636897837421555, + 50.95617966801162 + ], + [ + 6.865619889636409, + 50.956783191072645 + ], + [ + 6.867079886578764, + 50.95656613038076 + ], + [ + 6.867146678059181, + 50.95655620003464 + ], + [ + 6.867282064672854, + 50.956536100562666 + ], + [ + 6.86755091067082, + 50.95649618612875 + ], + [ + 6.869210821555154, + 50.956250380476156 + ], + [ + 6.869218818711284, + 50.956249196244215 + ], + [ + 6.86922537607738, + 50.95624854425183 + ], + [ + 6.869490479230445, + 50.95623574365754 + ], + [ + 6.869917030185973, + 50.95618107278769 + ], + [ + 6.869969916874678, + 50.95617428411079 + ], + [ + 6.870062312427502, + 50.95616707849468 + ], + [ + 6.870076604483531, + 50.95616590471948 + ], + [ + 6.870082646359592, + 50.95616534580435 + ], + [ + 6.870088138749826, + 50.956164783159934 + ], + [ + 6.870282994770675, + 50.95614986634493 + ], + [ + 6.87028460926668, + 50.95614495277878 + ], + [ + 6.870286496707351, + 50.956140018109515 + ], + [ + 6.870370881278053, + 50.95592596503794 + ], + [ + 6.870417983017786, + 50.95580489555107 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Muengersdorf", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "305", + "Population_rel": 0.008169736406749752, + "Population_abs": 8889 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.9415208119075755, + 50.92222901581031 + ], + [ + 6.94170437523752, + 50.92210645836943 + ], + [ + 6.941749060145527, + 50.921915016294285 + ], + [ + 6.941752974858786, + 50.92189821474084 + ], + [ + 6.941788964033823, + 50.9217784672431 + ], + [ + 6.941821619071544, + 50.9216662004508 + ], + [ + 6.941990829445161, + 50.9217977001918 + ], + [ + 6.9420011965555535, + 50.92176885007148 + ], + [ + 6.94205687280473, + 50.92176516484286 + ], + [ + 6.942112076727247, + 50.92175222382698 + ], + [ + 6.942179972111845, + 50.921719763332604 + ], + [ + 6.942583898925905, + 50.921059560516674 + ], + [ + 6.943042883440857, + 50.92061177823358 + ], + [ + 6.943367473970342, + 50.92057211798474 + ], + [ + 6.943709193183597, + 50.92050049691069 + ], + [ + 6.944316165448077, + 50.92034555319785 + ], + [ + 6.944559347277225, + 50.92024685949982 + ], + [ + 6.944859949847698, + 50.92011147341052 + ], + [ + 6.945253317381338, + 50.91990099347311 + ], + [ + 6.94529877739972, + 50.91987752216275 + ], + [ + 6.945927848664544, + 50.91955078532267 + ], + [ + 6.946495797109329, + 50.919267869552385 + ], + [ + 6.946925059904185, + 50.91903291114814 + ], + [ + 6.9477439997918164, + 50.918512161253865 + ], + [ + 6.947923555855023, + 50.91844642929058 + ], + [ + 6.948396719702163, + 50.91820319769255 + ], + [ + 6.948651118075197, + 50.91810458388318 + ], + [ + 6.948996358768476, + 50.917962345915036 + ], + [ + 6.949308643826785, + 50.917826907337535 + ], + [ + 6.949240625089159, + 50.917719788613944 + ], + [ + 6.949226844448517, + 50.91769809805759 + ], + [ + 6.94902797454827, + 50.91738509624434 + ], + [ + 6.948946838418168, + 50.91724308380571 + ], + [ + 6.948970235870858, + 50.91716446818718 + ], + [ + 6.948930767462864, + 50.91710152578582 + ], + [ + 6.948792505280829, + 50.91697125356338 + ], + [ + 6.948838053690829, + 50.91698290146035 + ], + [ + 6.948862138187771, + 50.91698549222096 + ], + [ + 6.9489065142232675, + 50.916985850248686 + ], + [ + 6.948948560783712, + 50.91697660870659 + ], + [ + 6.9489829005377555, + 50.91695897990413 + ], + [ + 6.9493406864021185, + 50.91663047572468 + ], + [ + 6.949608646786311, + 50.91636733430958 + ], + [ + 6.950145244623966, + 50.915825111930175 + ], + [ + 6.950183642139275, + 50.91578653731696 + ], + [ + 6.950192322852061, + 50.91577755566082 + ], + [ + 6.950962257781592, + 50.914959664132965 + ], + [ + 6.950971334601316, + 50.91494904260749 + ], + [ + 6.951007116500945, + 50.91490193345243 + ], + [ + 6.9510220222560966, + 50.914882467213445 + ], + [ + 6.951085999883123, + 50.914763376423444 + ], + [ + 6.951163674135117, + 50.91461855371554 + ], + [ + 6.95128140059962, + 50.91441569365206 + ], + [ + 6.951322653669663, + 50.914332850907726 + ], + [ + 6.951333804348291, + 50.914310054864195 + ], + [ + 6.951342824224723, + 50.914289970825216 + ], + [ + 6.951385705562956, + 50.91416143302138 + ], + [ + 6.951456441767307, + 50.9139432823416 + ], + [ + 6.951463695110957, + 50.91392069129197 + ], + [ + 6.951487183960286, + 50.91382440393647 + ], + [ + 6.951535680005709, + 50.913748047761004 + ], + [ + 6.951590456533967, + 50.9136728999359 + ], + [ + 6.951659636130631, + 50.91358585782349 + ], + [ + 6.951799114798393, + 50.91345967795451 + ], + [ + 6.951884983660004, + 50.913382208397316 + ], + [ + 6.9520484808046605, + 50.9132346181414 + ], + [ + 6.95209274033042, + 50.91319461322099 + ], + [ + 6.952511375238084, + 50.91282656005653 + ], + [ + 6.952574789232005, + 50.91277042691271 + ], + [ + 6.952655389588071, + 50.9126996511012 + ], + [ + 6.952737954090793, + 50.91262068035338 + ], + [ + 6.953117848784872, + 50.912256654652516 + ], + [ + 6.953196231543497, + 50.91218797291165 + ], + [ + 6.953217448818133, + 50.91216945260476 + ], + [ + 6.95401538990797, + 50.91177836666667 + ], + [ + 6.954568131338316, + 50.91153059282989 + ], + [ + 6.9552242292020034, + 50.911233787933064 + ], + [ + 6.955448977476254, + 50.91115490938238 + ], + [ + 6.955462910380153, + 50.91110625232951 + ], + [ + 6.955459795410548, + 50.91105135352766 + ], + [ + 6.955416605663756, + 50.91094203628365 + ], + [ + 6.95535832119912, + 50.91089406126306 + ], + [ + 6.955146426558868, + 50.91087844655448 + ], + [ + 6.9548579225882055, + 50.910877741773284 + ], + [ + 6.954853406388891, + 50.91087753582335 + ], + [ + 6.954848878102286, + 50.91087728109484 + ], + [ + 6.9548398379317735, + 50.910876527293176 + ], + [ + 6.954450337833012, + 50.91084263452198 + ], + [ + 6.954444785223033, + 50.91084202455718 + ], + [ + 6.954438530696888, + 50.910841200828635 + ], + [ + 6.954427652655683, + 50.91083791450463 + ], + [ + 6.954187040105201, + 50.91075792878183 + ], + [ + 6.95390033302846, + 50.91061608359691 + ], + [ + 6.953817857911864, + 50.91054619209141 + ], + [ + 6.953753732842781, + 50.91045583395692 + ], + [ + 6.953713023796886, + 50.910377240121846 + ], + [ + 6.953643585822862, + 50.91020781862157 + ], + [ + 6.9536215221441235, + 50.91012313907895 + ], + [ + 6.953592423433163, + 50.90993774670396 + ], + [ + 6.953591011591122, + 50.9098687196347 + ], + [ + 6.953567127212888, + 50.90980589908744 + ], + [ + 6.953565952736539, + 50.90980248153161 + ], + [ + 6.9535652424936, + 50.90979921511731 + ], + [ + 6.953566047980508, + 50.90979236516446 + ], + [ + 6.953572096560555, + 50.909632004545884 + ], + [ + 6.953598210074598, + 50.909573990057986 + ], + [ + 6.953632394372587, + 50.909465658196474 + ], + [ + 6.953655080384727, + 50.90942088544552 + ], + [ + 6.953783166474666, + 50.90900264260556 + ], + [ + 6.953946909721184, + 50.90851988344429 + ], + [ + 6.9540753800735855, + 50.90803092954466 + ], + [ + 6.954193666605277, + 50.90752323194173 + ], + [ + 6.954218327342343, + 50.907387291029195 + ], + [ + 6.954359519724897, + 50.90661646699624 + ], + [ + 6.9543986001245806, + 50.90657033198457 + ], + [ + 6.95446349695193, + 50.90649371971774 + ], + [ + 6.954471794836201, + 50.906475403551156 + ], + [ + 6.9545070433128435, + 50.90626638272212 + ], + [ + 6.954857455909401, + 50.905392945734825 + ], + [ + 6.954863539272082, + 50.90536731563564 + ], + [ + 6.954873651186783, + 50.905324706554836 + ], + [ + 6.955007588700192, + 50.90533005117652 + ], + [ + 6.955293273390065, + 50.90467008727797 + ], + [ + 6.9551823410314295, + 50.90465418528451 + ], + [ + 6.954926179259641, + 50.904613762903146 + ], + [ + 6.954907347754111, + 50.90461049643264 + ], + [ + 6.9549026737825, + 50.904609685130424 + ], + [ + 6.954888655223324, + 50.90460723958944 + ], + [ + 6.954748275342997, + 50.90458348669622 + ], + [ + 6.954557903719762, + 50.90455105263673 + ], + [ + 6.95455353593001, + 50.904550233195955 + ], + [ + 6.9545492448357695, + 50.904549254109895 + ], + [ + 6.9545403942563695, + 50.904547253459306 + ], + [ + 6.9544806947285736, + 50.90453389728286 + ], + [ + 6.954395700117051, + 50.90449324127548 + ], + [ + 6.954348758494071, + 50.904464140125114 + ], + [ + 6.954371914783629, + 50.90429387483726 + ], + [ + 6.954408694715754, + 50.90403045203434 + ], + [ + 6.953562314104823, + 50.904069105491836 + ], + [ + 6.953493806113459, + 50.90406993499151 + ], + [ + 6.9532840711395565, + 50.90408210409551 + ], + [ + 6.953215603330065, + 50.90408610265901 + ], + [ + 6.952480266707879, + 50.90413098215851 + ], + [ + 6.952292414821873, + 50.904142493716556 + ], + [ + 6.95224670182611, + 50.90414565341263 + ], + [ + 6.952113296072518, + 50.904156990370446 + ], + [ + 6.951963609817745, + 50.90417169566552 + ], + [ + 6.951689970005523, + 50.904208087731256 + ], + [ + 6.950993097411104, + 50.90425767926977 + ], + [ + 6.950575715741941, + 50.904287379031814 + ], + [ + 6.950125137787048, + 50.90431941452934 + ], + [ + 6.94972323444881, + 50.90434798817169 + ], + [ + 6.949619620380801, + 50.90435548005426 + ], + [ + 6.949450249089258, + 50.90436773982901 + ], + [ + 6.949608613640292, + 50.90451396649046 + ], + [ + 6.9498058362523665, + 50.904753096409614 + ], + [ + 6.949924392068629, + 50.90493398609738 + ], + [ + 6.949705764109185, + 50.904984308058665 + ], + [ + 6.949516423891698, + 50.905027649636175 + ], + [ + 6.949481603841122, + 50.90524475670012 + ], + [ + 6.948938820346012, + 50.905252858424866 + ], + [ + 6.948917276575168, + 50.90527712557417 + ], + [ + 6.948753826673257, + 50.90527930921479 + ], + [ + 6.948573317718831, + 50.905281720708224 + ], + [ + 6.948562621479002, + 50.905161170162586 + ], + [ + 6.948505128880711, + 50.905161015773395 + ], + [ + 6.948500381463221, + 50.90505722005268 + ], + [ + 6.948495861333614, + 50.90494731702252 + ], + [ + 6.948576575628817, + 50.90456092664704 + ], + [ + 6.948573284753574, + 50.90444043340717 + ], + [ + 6.948397351989879, + 50.90445766142869 + ], + [ + 6.948080972958837, + 50.90448856477077 + ], + [ + 6.947203220144576, + 50.90457325715523 + ], + [ + 6.946964557198458, + 50.90459931779383 + ], + [ + 6.946886520878817, + 50.904607910153146 + ], + [ + 6.946674646776384, + 50.904631064288736 + ], + [ + 6.945897402090389, + 50.904720666602955 + ], + [ + 6.945729167726559, + 50.904740099184515 + ], + [ + 6.945682277278778, + 50.9047430341264 + ], + [ + 6.945667270408237, + 50.90454707508799 + ], + [ + 6.9456517781914995, + 50.90434540720995 + ], + [ + 6.94566252373461, + 50.90435598423114 + ], + [ + 6.945676503416976, + 50.90436530957856 + ], + [ + 6.945694120055696, + 50.904371729181655 + ], + [ + 6.945713943523128, + 50.90437480504881 + ], + [ + 6.945734111644218, + 50.90437383256187 + ], + [ + 6.946439314813572, + 50.904292332611604 + ], + [ + 6.946650917299538, + 50.90408493919647 + ], + [ + 6.946733449663039, + 50.904081663205524 + ], + [ + 6.946727028751027, + 50.90401042885813 + ], + [ + 6.946818052434994, + 50.903921234878844 + ], + [ + 6.946763388772067, + 50.90332217828797 + ], + [ + 6.946761929576326, + 50.90330636844871 + ], + [ + 6.9468836760270545, + 50.90330196460829 + ], + [ + 6.9468793115486, + 50.903255074955695 + ], + [ + 6.946855872341032, + 50.90299673132005 + ], + [ + 6.946733985824738, + 50.9030011362602 + ], + [ + 6.946718638838798, + 50.90283334001456 + ], + [ + 6.946515047391067, + 50.90283966638918 + ], + [ + 6.946469850790431, + 50.90218147170063 + ], + [ + 6.946463352687836, + 50.90205036943009 + ], + [ + 6.94642632974843, + 50.90163383248366 + ], + [ + 6.946366463140324, + 50.90096981319688 + ], + [ + 6.946011890718653, + 50.900982339751096 + ], + [ + 6.945975097658728, + 50.90100324859866 + ], + [ + 6.945972030364853, + 50.90100491603232 + ], + [ + 6.94585628925477, + 50.901031673530674 + ], + [ + 6.945706199701993, + 50.90103859748182 + ], + [ + 6.945360444985822, + 50.90104501217153 + ], + [ + 6.945347309343215, + 50.90090402743507 + ], + [ + 6.945348192082922, + 50.90074966024604 + ], + [ + 6.945325597365467, + 50.90062330112139 + ], + [ + 6.945322693862769, + 50.90060706739898 + ], + [ + 6.945343467890444, + 50.90061723462493 + ], + [ + 6.945375878530909, + 50.90063309655274 + ], + [ + 6.9456715198644945, + 50.90060835166168 + ], + [ + 6.94562567838367, + 50.90058742369983 + ], + [ + 6.945567949187716, + 50.90055742752428 + ], + [ + 6.945567699163336, + 50.90055431935127 + ], + [ + 6.945561975203227, + 50.90048626568483 + ], + [ + 6.945544712711824, + 50.900486889957634 + ], + [ + 6.945538238926857, + 50.90048707548642 + ], + [ + 6.945533913100844, + 50.9004355950829 + ], + [ + 6.945533538397193, + 50.90043140995184 + ], + [ + 6.945532956178092, + 50.900426672543816 + ], + [ + 6.945502172695618, + 50.90019465004532 + ], + [ + 6.945499400873942, + 50.90014243971471 + ], + [ + 6.945504049292952, + 50.90014145937654 + ], + [ + 6.945635840477889, + 50.900114657398284 + ], + [ + 6.94561666563106, + 50.899989140985774 + ], + [ + 6.945479565118092, + 50.89999789328303 + ], + [ + 6.945473765373553, + 50.8999977597011 + ], + [ + 6.945468865575467, + 50.899997601490114 + ], + [ + 6.9451890169571815, + 50.90000779847991 + ], + [ + 6.9448773866290106, + 50.9000204813401 + ], + [ + 6.944822832107195, + 50.900022091961404 + ], + [ + 6.944818441746712, + 50.89999479930319 + ], + [ + 6.9448053035040545, + 50.89991463073358 + ], + [ + 6.944783428977198, + 50.899782035243675 + ], + [ + 6.944780139528043, + 50.899760037754014 + ], + [ + 6.944742064827087, + 50.89950868566384 + ], + [ + 6.944596089276686, + 50.899509108816964 + ], + [ + 6.9443365246027575, + 50.89950935765595 + ], + [ + 6.944336302029739, + 50.89950617711277 + ], + [ + 6.944308446022708, + 50.89911239679557 + ], + [ + 6.944142509518673, + 50.89870824787983 + ], + [ + 6.943905976822804, + 50.89816369505785 + ], + [ + 6.943788981012577, + 50.89789458327132 + ], + [ + 6.943814088224437, + 50.897859237366305 + ], + [ + 6.943960792957621, + 50.897650189911886 + ], + [ + 6.943961867334618, + 50.89764588190481 + ], + [ + 6.943984986905543, + 50.89753439238649 + ], + [ + 6.943993480026497, + 50.897493168562 + ], + [ + 6.944015059592081, + 50.89739403552074 + ], + [ + 6.943903908627767, + 50.89718774531973 + ], + [ + 6.943507712240079, + 50.896448447968226 + ], + [ + 6.943458714457565, + 50.89629615431726 + ], + [ + 6.943437448155003, + 50.896144225235446 + ], + [ + 6.94341105766959, + 50.89597190674232 + ], + [ + 6.943388360047316, + 50.895805507409364 + ], + [ + 6.9433528751338836, + 50.895544473453164 + ], + [ + 6.943327402858502, + 50.89536678918877 + ], + [ + 6.943318165086606, + 50.895311271983026 + ], + [ + 6.943307003514941, + 50.895213081963924 + ], + [ + 6.9433080628892085, + 50.895200109928545 + ], + [ + 6.94330912557999, + 50.89519132278642 + ], + [ + 6.943307653291235, + 50.895176292411534 + ], + [ + 6.943480148244153, + 50.89461158793985 + ], + [ + 6.943526102650703, + 50.89444810813887 + ], + [ + 6.943549244598436, + 50.89432747501055 + ], + [ + 6.943550099790271, + 50.89432397708567 + ], + [ + 6.943557123745205, + 50.89428820553441 + ], + [ + 6.946401668041791, + 50.894118006859465 + ], + [ + 6.947054672816149, + 50.89408448042043 + ], + [ + 6.947031073977412, + 50.89397922677533 + ], + [ + 6.947026151026204, + 50.89388370923361 + ], + [ + 6.946769855006761, + 50.893896487166785 + ], + [ + 6.9464250050120615, + 50.89391609569824 + ], + [ + 6.946390957039299, + 50.89369751461696 + ], + [ + 6.946382854398106, + 50.89362491135018 + ], + [ + 6.947564743281331, + 50.89343076482511 + ], + [ + 6.947552969369447, + 50.893403065377925 + ], + [ + 6.947505186830744, + 50.893290654590494 + ], + [ + 6.947365559714076, + 50.89312710193368 + ], + [ + 6.946721733163998, + 50.892372365283364 + ], + [ + 6.946707457785976, + 50.89233427611135 + ], + [ + 6.946664209920409, + 50.89222019183157 + ], + [ + 6.946363483935741, + 50.89187788808141 + ], + [ + 6.945930943273545, + 50.8913850915929 + ], + [ + 6.945872222661041, + 50.891306910574684 + ], + [ + 6.944991197092003, + 50.89145554381089 + ], + [ + 6.94478886716661, + 50.891030276234915 + ], + [ + 6.945526815743005, + 50.890905277999614 + ], + [ + 6.94517001050776, + 50.89051605120708 + ], + [ + 6.9451399351480605, + 50.89050253540039 + ], + [ + 6.945093816553519, + 50.890480216305704 + ], + [ + 6.944610677052892, + 50.88988540759957 + ], + [ + 6.944603550519119, + 50.889876617402436 + ], + [ + 6.944598002535446, + 50.889869696049644 + ], + [ + 6.944579283117245, + 50.889846271027736 + ], + [ + 6.944455788405978, + 50.88986785659319 + ], + [ + 6.943920164670871, + 50.889961187716544 + ], + [ + 6.943616465744712, + 50.890018390321266 + ], + [ + 6.943409189986413, + 50.890057641764905 + ], + [ + 6.943376173319924, + 50.890062493963015 + ], + [ + 6.943299352483761, + 50.889980224173115 + ], + [ + 6.943296872055846, + 50.88997755784954 + ], + [ + 6.94329436407792, + 50.88997490363173 + ], + [ + 6.9432886623418675, + 50.88996892655816 + ], + [ + 6.943105906058935, + 50.88978376067268 + ], + [ + 6.943083403105232, + 50.88976199373563 + ], + [ + 6.943080712082182, + 50.889759460401656 + ], + [ + 6.943077976142434, + 50.88975694606234 + ], + [ + 6.94307239272596, + 50.88975193160641 + ], + [ + 6.942847404233509, + 50.889545653399196 + ], + [ + 6.9427502258629765, + 50.889462837278806 + ], + [ + 6.942171303268979, + 50.88894603928584 + ], + [ + 6.941242408684729, + 50.88928452803865 + ], + [ + 6.941056590517558, + 50.88926723896225 + ], + [ + 6.940984388777616, + 50.88918952354729 + ], + [ + 6.9398253653248965, + 50.887981522035744 + ], + [ + 6.939241760749241, + 50.887349593185824 + ], + [ + 6.938423446221392, + 50.88662102561114 + ], + [ + 6.938284427804231, + 50.88649925873587 + ], + [ + 6.938035517619529, + 50.886149325535065 + ], + [ + 6.93596983591334, + 50.88677584943721 + ], + [ + 6.933952535963543, + 50.8874509411691 + ], + [ + 6.9316279904617755, + 50.88830752168381 + ], + [ + 6.929999558567134, + 50.88897602335858 + ], + [ + 6.928793576162351, + 50.88947852054531 + ], + [ + 6.928704352824952, + 50.889515727408345 + ], + [ + 6.927974998613281, + 50.88982393567233 + ], + [ + 6.927716657993684, + 50.88994743708414 + ], + [ + 6.927643587885774, + 50.88998226781409 + ], + [ + 6.927490285218692, + 50.89005320497368 + ], + [ + 6.926912098610885, + 50.890316967085965 + ], + [ + 6.926398240097698, + 50.89055193427787 + ], + [ + 6.924935847904628, + 50.89122519420272 + ], + [ + 6.923400000901991, + 50.8919543190725 + ], + [ + 6.921224398105117, + 50.89291786947847 + ], + [ + 6.9210436973097265, + 50.8929994050222 + ], + [ + 6.920970074051804, + 50.89303050099462 + ], + [ + 6.92007651811974, + 50.893223932902416 + ], + [ + 6.919989182349873, + 50.89324367012656 + ], + [ + 6.919984740244999, + 50.89324487437454 + ], + [ + 6.9199860372491155, + 50.89324937194407 + ], + [ + 6.920053377393684, + 50.89334156141972 + ], + [ + 6.920104292843525, + 50.8934129475885 + ], + [ + 6.920190844113043, + 50.89353507191824 + ], + [ + 6.920271458501812, + 50.893648551591625 + ], + [ + 6.920360912656821, + 50.89360793306084 + ], + [ + 6.920476483945855, + 50.893770619541634 + ], + [ + 6.920602408952455, + 50.89394699468817 + ], + [ + 6.921020176003971, + 50.89453058448421 + ], + [ + 6.921679170094374, + 50.895474897823384 + ], + [ + 6.921701300962013, + 50.89550648718871 + ], + [ + 6.921804116593306, + 50.89565326427473 + ], + [ + 6.9219071185163905, + 50.89580034317672 + ], + [ + 6.921987723320003, + 50.895916292020885 + ], + [ + 6.922112663177902, + 50.896096648339864 + ], + [ + 6.922275313805504, + 50.89633044384036 + ], + [ + 6.922538908132664, + 50.89670959710218 + ], + [ + 6.922508079124605, + 50.896724763259826 + ], + [ + 6.922907661161077, + 50.89730753006009 + ], + [ + 6.922894883489759, + 50.897321418501015 + ], + [ + 6.922900750553702, + 50.89732936197887 + ], + [ + 6.922902568668543, + 50.89733238479857 + ], + [ + 6.92290416379423, + 50.89733527323828 + ], + [ + 6.922907885112544, + 50.89734196345322 + ], + [ + 6.922909283719535, + 50.897344474250374 + ], + [ + 6.922910774393614, + 50.89734696150335 + ], + [ + 6.922923977899096, + 50.89736750824808 + ], + [ + 6.922925909780761, + 50.897370531293504 + ], + [ + 6.922927830174277, + 50.897373556832555 + ], + [ + 6.923114373844958, + 50.8976698825425 + ], + [ + 6.923176270633125, + 50.897767923542425 + ], + [ + 6.923205538239008, + 50.89781451185688 + ], + [ + 6.923303762679869, + 50.89801578325643 + ], + [ + 6.92336128364874, + 50.89812134789077 + ], + [ + 6.923446957740465, + 50.89827852466696 + ], + [ + 6.923511677638798, + 50.89839734295698 + ], + [ + 6.923567102120611, + 50.898506223985116 + ], + [ + 6.923745837863096, + 50.89885820126913 + ], + [ + 6.923847304814713, + 50.899058040457525 + ], + [ + 6.923975606701107, + 50.899310645423185 + ], + [ + 6.924039122938946, + 50.89943554520579 + ], + [ + 6.924289785026983, + 50.89992858625836 + ], + [ + 6.924556432263389, + 50.90032646817727 + ], + [ + 6.924697200641627, + 50.90053653087255 + ], + [ + 6.924755268160121, + 50.900623161600684 + ], + [ + 6.92492284258203, + 50.90087330152405 + ], + [ + 6.925094068475806, + 50.901128524679145 + ], + [ + 6.925344410380301, + 50.90150156421696 + ], + [ + 6.925539681131371, + 50.90179232162412 + ], + [ + 6.925551428831577, + 50.90181073130787 + ], + [ + 6.925564652762528, + 50.901828184202614 + ], + [ + 6.9255764999426495, + 50.901845284348035 + ], + [ + 6.925620579295131, + 50.901907183795736 + ], + [ + 6.925716093107977, + 50.90204416614693 + ], + [ + 6.925759186969462, + 50.90210223013128 + ], + [ + 6.926011766202047, + 50.90246058854515 + ], + [ + 6.926456951526603, + 50.90309439849723 + ], + [ + 6.926816892286824, + 50.90360530233973 + ], + [ + 6.926825450169146, + 50.903617478243 + ], + [ + 6.927031208370753, + 50.90391170020964 + ], + [ + 6.927068758426415, + 50.90396559818307 + ], + [ + 6.9272475286452515, + 50.90422196912687 + ], + [ + 6.927312145982115, + 50.904314510442546 + ], + [ + 6.927569562051676, + 50.90468218600515 + ], + [ + 6.9278920280405645, + 50.90514276306298 + ], + [ + 6.928088407724439, + 50.90542364681232 + ], + [ + 6.928569021728007, + 50.90610707911018 + ], + [ + 6.928657160737998, + 50.906231740408664 + ], + [ + 6.928809165206965, + 50.90644541751587 + ], + [ + 6.928834995567466, + 50.90648373910562 + ], + [ + 6.929367052037942, + 50.90725094915566 + ], + [ + 6.929493021139701, + 50.907433448507994 + ], + [ + 6.92949531307216, + 50.907436710763086 + ], + [ + 6.929497321304375, + 50.90743957045726 + ], + [ + 6.929658978008835, + 50.90767324633187 + ], + [ + 6.929753730298732, + 50.907810279960046 + ], + [ + 6.929820138483514, + 50.907906247618136 + ], + [ + 6.9298857668622285, + 50.90800033608109 + ], + [ + 6.930012402500671, + 50.90804366697237 + ], + [ + 6.9303857849887285, + 50.908577906134845 + ], + [ + 6.930380652659289, + 50.90860044632005 + ], + [ + 6.930361877368196, + 50.90868242768716 + ], + [ + 6.9304898592322335, + 50.908855640355554 + ], + [ + 6.930508002468855, + 50.908880195971776 + ], + [ + 6.930413908246744, + 50.908917263915285 + ], + [ + 6.930507626210905, + 50.90904731820388 + ], + [ + 6.9305667875334125, + 50.90912839351213 + ], + [ + 6.930568288443323, + 50.909131276568495 + ], + [ + 6.9305695828348775, + 50.909134293568734 + ], + [ + 6.930580117684038, + 50.90916043928183 + ], + [ + 6.930582374677576, + 50.909163691001034 + ], + [ + 6.93058439133992, + 50.909166363752526 + ], + [ + 6.930598719856811, + 50.90918917975782 + ], + [ + 6.930612785844553, + 50.9092102498992 + ], + [ + 6.930665247976621, + 50.90929269125175 + ], + [ + 6.930712356261781, + 50.90935738814659 + ], + [ + 6.931047713562725, + 50.90981707989732 + ], + [ + 6.931113819613079, + 50.90990769636373 + ], + [ + 6.931219767125283, + 50.91005298293486 + ], + [ + 6.931270023290247, + 50.91012188963928 + ], + [ + 6.932680321417338, + 50.91205623481441 + ], + [ + 6.933395214072242, + 50.91281334543614 + ], + [ + 6.933452387126261, + 50.91287818248527 + ], + [ + 6.9335917901010236, + 50.91303677549393 + ], + [ + 6.933669819791927, + 50.91313395206148 + ], + [ + 6.933774456085394, + 50.91326411769321 + ], + [ + 6.933867372529904, + 50.91335973641613 + ], + [ + 6.9338706455181365, + 50.91336302493988 + ], + [ + 6.933874039338172, + 50.913366315602566 + ], + [ + 6.933907688152725, + 50.91339801552542 + ], + [ + 6.933968989642345, + 50.91345556394113 + ], + [ + 6.933973106616641, + 50.913459519454435 + ], + [ + 6.933977282904183, + 50.91346358124537 + ], + [ + 6.934161075267918, + 50.913665697966444 + ], + [ + 6.934397764847013, + 50.913967553159935 + ], + [ + 6.934748721905999, + 50.91441528700748 + ], + [ + 6.9349546939112985, + 50.91468115997104 + ], + [ + 6.935087770501035, + 50.914864464808176 + ], + [ + 6.935145050717358, + 50.91492702114094 + ], + [ + 6.9352313514346475, + 50.91505388853826 + ], + [ + 6.935371110668588, + 50.9152583541004 + ], + [ + 6.935516011920372, + 50.915480036474285 + ], + [ + 6.9356689433256244, + 50.91569274274293 + ], + [ + 6.935839553275925, + 50.915933714251004 + ], + [ + 6.936021575360609, + 50.916190085961134 + ], + [ + 6.936040345035855, + 50.91621662407824 + ], + [ + 6.936390427457809, + 50.9167100590616 + ], + [ + 6.936480645363884, + 50.916836198765346 + ], + [ + 6.936534990595391, + 50.9169128668499 + ], + [ + 6.936602717211199, + 50.917009054224884 + ], + [ + 6.936657114528698, + 50.917085068418835 + ], + [ + 6.9366894587150725, + 50.9171303116086 + ], + [ + 6.936819158528744, + 50.917312871994895 + ], + [ + 6.937073013129877, + 50.91766954533333 + ], + [ + 6.937089235342909, + 50.91769274740483 + ], + [ + 6.937113655441755, + 50.917727664014315 + ], + [ + 6.9372979189179125, + 50.918031205300174 + ], + [ + 6.9374327432812, + 50.918229775471396 + ], + [ + 6.9376351093203485, + 50.91848443539515 + ], + [ + 6.937686791255942, + 50.91855107989957 + ], + [ + 6.93773858989977, + 50.918615924980045 + ], + [ + 6.937881102500437, + 50.91879402829935 + ], + [ + 6.938135129666069, + 50.9191493126542 + ], + [ + 6.938330078705572, + 50.91942225960075 + ], + [ + 6.938615849074146, + 50.91982953555441 + ], + [ + 6.938731067649718, + 50.91999329265129 + ], + [ + 6.938818795707437, + 50.92009830134033 + ], + [ + 6.93885493062786, + 50.92014124994955 + ], + [ + 6.939180169950615, + 50.920529219155526 + ], + [ + 6.939572764978704, + 50.92099880719047 + ], + [ + 6.939654462519866, + 50.921114920442974 + ], + [ + 6.939741237690538, + 50.92124303916089 + ], + [ + 6.939967815135087, + 50.92160393340875 + ], + [ + 6.9402527812152135, + 50.92216684222278 + ], + [ + 6.940485366837655, + 50.922128481195564 + ], + [ + 6.940593311493125, + 50.922110663276364 + ], + [ + 6.94098199463115, + 50.922506589933626 + ], + [ + 6.9409849341812375, + 50.922578585957524 + ], + [ + 6.940988795326527, + 50.92257599190241 + ], + [ + 6.941369023708406, + 50.92233125426716 + ], + [ + 6.9415208119075755, + 50.92222901581031 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Zollstock", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "205", + "Population_rel": 0.02145141722730782, + "Population_abs": 23340 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.921702302445605, + 50.910520983529345 + ], + [ + 6.921711666805167, + 50.91049094624796 + ], + [ + 6.921921911658429, + 50.91069022515519 + ], + [ + 6.9220214691194295, + 50.91078508498133 + ], + [ + 6.921964975314258, + 50.910797128291364 + ], + [ + 6.921885526200436, + 50.91083415426674 + ], + [ + 6.921923192879622, + 50.91087009251119 + ], + [ + 6.921936165860955, + 50.910864686156884 + ], + [ + 6.921982286663116, + 50.91091043699797 + ], + [ + 6.921969734384365, + 50.91091566017848 + ], + [ + 6.92202828496049, + 50.910971650556476 + ], + [ + 6.922039710315679, + 50.910966975716505 + ], + [ + 6.922091769158359, + 50.91101825282603 + ], + [ + 6.922050719157501, + 50.91103475777324 + ], + [ + 6.922043922393574, + 50.91102896884009 + ], + [ + 6.921960894749247, + 50.911065492254444 + ], + [ + 6.9219524873311835, + 50.911057378509376 + ], + [ + 6.921828648999497, + 50.91111205416576 + ], + [ + 6.921927108370708, + 50.911204914064605 + ], + [ + 6.921941135861236, + 50.91120237573556 + ], + [ + 6.921991142034509, + 50.91125052335565 + ], + [ + 6.9219802824677545, + 50.91125501399784 + ], + [ + 6.922038393046667, + 50.91131028871554 + ], + [ + 6.922049532448687, + 50.91130561597823 + ], + [ + 6.922099388120991, + 50.911353314775575 + ], + [ + 6.922089529781145, + 50.911358066986786 + ], + [ + 6.922151270874777, + 50.91141717920105 + ], + [ + 6.9221622694054625, + 50.911412507542515 + ], + [ + 6.922206773800211, + 50.91145566356521 + ], + [ + 6.92219549206942, + 50.91146033738121 + ], + [ + 6.922296372981854, + 50.911557343956545 + ], + [ + 6.922552834205598, + 50.911454276290414 + ], + [ + 6.922611401079574, + 50.91151098526114 + ], + [ + 6.922596032067619, + 50.91151757940034 + ], + [ + 6.922654277591738, + 50.911572402914885 + ], + [ + 6.922669229793284, + 50.91156635177249 + ], + [ + 6.922740587005008, + 50.91163716313194 + ], + [ + 6.922700976640082, + 50.91165455644103 + ], + [ + 6.922694020820415, + 50.91164795886795 + ], + [ + 6.922575863121922, + 50.91169833483733 + ], + [ + 6.922568751757513, + 50.91169110941594 + ], + [ + 6.922476114381813, + 50.91173058570899 + ], + [ + 6.922573754289872, + 50.911828966161764 + ], + [ + 6.922587145935691, + 50.91182310760133 + ], + [ + 6.922638737433125, + 50.91187223110048 + ], + [ + 6.922627033806757, + 50.911877177157464 + ], + [ + 6.922684564850144, + 50.911931826944 + ], + [ + 6.922696695452193, + 50.911926876788826 + ], + [ + 6.922745522734805, + 50.911972876044274 + ], + [ + 6.922734292993464, + 50.91198024629268 + ], + [ + 6.922791077554708, + 50.91203310375599 + ], + [ + 6.9228033471135815, + 50.91202797258843 + ], + [ + 6.922853349994892, + 50.912075849948316 + ], + [ + 6.922842418115896, + 50.91208384698277 + ], + [ + 6.922938674845247, + 50.912176933905634 + ], + [ + 6.923033323950514, + 50.91213852014185 + ], + [ + 6.92302665263284, + 50.91213192045765 + ], + [ + 6.9231446883519165, + 50.91208244484239 + ], + [ + 6.923136136552797, + 50.91207424227611 + ], + [ + 6.923184938737331, + 50.912054259367295 + ], + [ + 6.9232231868447744, + 50.91209373400529 + ], + [ + 6.923245841569828, + 50.91211400542113 + ], + [ + 6.923231604182499, + 50.91212023124612 + ], + [ + 6.923291425597749, + 50.91217567156658 + ], + [ + 6.92330454083887, + 50.912170174055234 + ], + [ + 6.923360214657985, + 50.91222281990198 + ], + [ + 6.923500977064399, + 50.91219522739323 + ], + [ + 6.923826573392532, + 50.912560313928786 + ], + [ + 6.923731240655519, + 50.91262165676495 + ], + [ + 6.923825688415637, + 50.9126806888472 + ], + [ + 6.923862030151266, + 50.91271357104452 + ], + [ + 6.923705911323776, + 50.91281458904114 + ], + [ + 6.923809363532865, + 50.91287588677832 + ], + [ + 6.9236574791082, + 50.91297534225863 + ], + [ + 6.923768062243953, + 50.91304494319059 + ], + [ + 6.923641741634355, + 50.91312127425796 + ], + [ + 6.923777594495774, + 50.91321027205591 + ], + [ + 6.923375598419573, + 50.91338200408153 + ], + [ + 6.923344860814454, + 50.91339519166978 + ], + [ + 6.9234982315117914, + 50.91355030221526 + ], + [ + 6.924344792728869, + 50.91319517162052 + ], + [ + 6.92442800270144, + 50.91327541677465 + ], + [ + 6.924471986693093, + 50.91331363222006 + ], + [ + 6.9244838328476295, + 50.913308684015725 + ], + [ + 6.924575275666356, + 50.91339533607765 + ], + [ + 6.924628807729876, + 50.913513481313124 + ], + [ + 6.924735761687764, + 50.91361502224751 + ], + [ + 6.924659112969052, + 50.91364340646091 + ], + [ + 6.924723904807378, + 50.91370545942387 + ], + [ + 6.924765381713359, + 50.91369605096781 + ], + [ + 6.924910681305965, + 50.913838279031026 + ], + [ + 6.92481254995091, + 50.913879261303755 + ], + [ + 6.924490116155985, + 50.914013920839345 + ], + [ + 6.92436391350744, + 50.914066627070284 + ], + [ + 6.924357283809344, + 50.91406937640309 + ], + [ + 6.92426690383851, + 50.91410811720193 + ], + [ + 6.924066074752803, + 50.914191870091166 + ], + [ + 6.925112112438507, + 50.91519002739776 + ], + [ + 6.925410036879699, + 50.91506172352312 + ], + [ + 6.925659893901365, + 50.91529876842559 + ], + [ + 6.925839199696288, + 50.91547021081859 + ], + [ + 6.925957060370456, + 50.915418845029905 + ], + [ + 6.926035900519276, + 50.915486358789956 + ], + [ + 6.925985943681871, + 50.9155084179411 + ], + [ + 6.926074162924036, + 50.915591379763306 + ], + [ + 6.926102743982062, + 50.915578936499536 + ], + [ + 6.9261854695489316, + 50.915663869199804 + ], + [ + 6.9261219244053445, + 50.91569152036977 + ], + [ + 6.926282567162848, + 50.91583880036889 + ], + [ + 6.926389654186843, + 50.91579219652731 + ], + [ + 6.926461641193591, + 50.915760879105186 + ], + [ + 6.926477131214349, + 50.91575436665064 + ], + [ + 6.926506922150001, + 50.91574184674972 + ], + [ + 6.926622584296186, + 50.915691961191044 + ], + [ + 6.926712151525626, + 50.91574815203621 + ], + [ + 6.926833299509671, + 50.915697658601864 + ], + [ + 6.926910924671735, + 50.91574693316594 + ], + [ + 6.9270543730030605, + 50.91583820337065 + ], + [ + 6.927186513049592, + 50.91575409248167 + ], + [ + 6.927292420344295, + 50.9158453908936 + ], + [ + 6.927523686885944, + 50.91571185873632 + ], + [ + 6.9278046064752035, + 50.915579549458876 + ], + [ + 6.927773305937278, + 50.915464375429 + ], + [ + 6.927901520166779, + 50.91541535362892 + ], + [ + 6.92783528704903, + 50.91534908847009 + ], + [ + 6.927821054466599, + 50.91533419022475 + ], + [ + 6.927816842265264, + 50.915329728248516 + ], + [ + 6.927835342026875, + 50.915323288837314 + ], + [ + 6.92785257221914, + 50.91531730895276 + ], + [ + 6.927822685336796, + 50.91528752229876 + ], + [ + 6.9278192017151845, + 50.91528395375419 + ], + [ + 6.927866359180839, + 50.91526694902395 + ], + [ + 6.927877934439955, + 50.9152627214684 + ], + [ + 6.9279026450718115, + 50.91525389562466 + ], + [ + 6.92791831479798, + 50.91524819741461 + ], + [ + 6.927963706337868, + 50.91519965319876 + ], + [ + 6.92799127725839, + 50.91517021928063 + ], + [ + 6.927994897793879, + 50.91516641440818 + ], + [ + 6.927999226496429, + 50.91516242514256 + ], + [ + 6.928004109499946, + 50.91515771182034 + ], + [ + 6.92802407500556, + 50.915139124348 + ], + [ + 6.9280411083486, + 50.91512325761824 + ], + [ + 6.928173966704878, + 50.91498259615996 + ], + [ + 6.928222847443942, + 50.91493078876201 + ], + [ + 6.928306861069994, + 50.91484373215922 + ], + [ + 6.928539388800219, + 50.914602495865935 + ], + [ + 6.9285049247449875, + 50.91457130785218 + ], + [ + 6.928492038794704, + 50.914559724431115 + ], + [ + 6.928507540311257, + 50.91444552604856 + ], + [ + 6.928742230242763, + 50.91469149399467 + ], + [ + 6.929158815273448, + 50.9145386843981 + ], + [ + 6.929221650214993, + 50.91450932814808 + ], + [ + 6.929293435859725, + 50.91447954156966 + ], + [ + 6.929311649320623, + 50.9144944086327 + ], + [ + 6.92937350497776, + 50.91455863913735 + ], + [ + 6.929403014235085, + 50.91459085512389 + ], + [ + 6.929481813770249, + 50.914549146522546 + ], + [ + 6.929486035453203, + 50.9145469549698 + ], + [ + 6.929547435469072, + 50.914595367938766 + ], + [ + 6.929579525732378, + 50.914600146313575 + ], + [ + 6.92962069949122, + 50.91460413336417 + ], + [ + 6.929648909339917, + 50.91463537109206 + ], + [ + 6.9298234008619355, + 50.91454336812572 + ], + [ + 6.92988299789127, + 50.91459404236322 + ], + [ + 6.929890811086456, + 50.91460081209488 + ], + [ + 6.929912232139478, + 50.91461960869798 + ], + [ + 6.9299597073602826, + 50.91466148058661 + ], + [ + 6.930013277806076, + 50.91464179525152 + ], + [ + 6.930346231612291, + 50.91452032295199 + ], + [ + 6.930367265796694, + 50.91451260419259 + ], + [ + 6.930495020366167, + 50.91446573982868 + ], + [ + 6.930391149314895, + 50.91434835784862 + ], + [ + 6.930308367332605, + 50.914254540341 + ], + [ + 6.930356642536055, + 50.91422961467942 + ], + [ + 6.930413629594594, + 50.914185111911095 + ], + [ + 6.930508844620877, + 50.914111000226654 + ], + [ + 6.930609276846764, + 50.91406313952816 + ], + [ + 6.930708004653678, + 50.91413655912218 + ], + [ + 6.930889150256051, + 50.91404324253351 + ], + [ + 6.931010425773278, + 50.91396397849486 + ], + [ + 6.931304673425724, + 50.91414411348358 + ], + [ + 6.931520172842146, + 50.91409070426355 + ], + [ + 6.931629407908519, + 50.914049379825265 + ], + [ + 6.931496069979794, + 50.91390203082322 + ], + [ + 6.931437168958114, + 50.91386483530906 + ], + [ + 6.931454296986621, + 50.91385382193755 + ], + [ + 6.931700209126797, + 50.91375693109647 + ], + [ + 6.931919665601611, + 50.913666812801225 + ], + [ + 6.931973456229248, + 50.913725803108896 + ], + [ + 6.93207221033061, + 50.91371503526112 + ], + [ + 6.9321173137198056, + 50.913737777540554 + ], + [ + 6.932137821779304, + 50.9137322202538 + ], + [ + 6.932151929989318, + 50.913748018747654 + ], + [ + 6.932162800826836, + 50.91374406699203 + ], + [ + 6.9322114492266165, + 50.91379473762582 + ], + [ + 6.932199719063253, + 50.913798336892775 + ], + [ + 6.932227126883464, + 50.91383209784282 + ], + [ + 6.9324496088328855, + 50.91375112401936 + ], + [ + 6.933071116064654, + 50.91364295767117 + ], + [ + 6.933082310460261, + 50.91364098030967 + ], + [ + 6.9338738191233915, + 50.913366405240005 + ], + [ + 6.933866036600835, + 50.91335835649728 + ], + [ + 6.933776971555458, + 50.91326623260511 + ], + [ + 6.933770833651531, + 50.91326059273823 + ], + [ + 6.933669819791927, + 50.91313395206148 + ], + [ + 6.9335917901010236, + 50.91303677549393 + ], + [ + 6.933395214072242, + 50.91281334543614 + ], + [ + 6.932680623211437, + 50.91205613403286 + ], + [ + 6.9312208642930635, + 50.91005355190636 + ], + [ + 6.931114437938747, + 50.90990751485649 + ], + [ + 6.93104836213612, + 50.90981688993281 + ], + [ + 6.930713160495982, + 50.90935715237714 + ], + [ + 6.930666086802325, + 50.90929244530333 + ], + [ + 6.930588104109515, + 50.909167936052754 + ], + [ + 6.9305780026318375, + 50.90916046563528 + ], + [ + 6.9305681469843, + 50.90912984763749 + ], + [ + 6.930566003529551, + 50.909126922608735 + ], + [ + 6.930507076401254, + 50.90904749462711 + ], + [ + 6.930413908246744, + 50.908917263915285 + ], + [ + 6.930508002468855, + 50.908880195971776 + ], + [ + 6.9304898592322335, + 50.908855640355554 + ], + [ + 6.930361877368196, + 50.90868242768716 + ], + [ + 6.930384375823814, + 50.908577252476576 + ], + [ + 6.930011010760483, + 50.90804239664102 + ], + [ + 6.9298857668622285, + 50.90800033608109 + ], + [ + 6.9298186421346735, + 50.90790666177399 + ], + [ + 6.929752745279063, + 50.90781055118943 + ], + [ + 6.929658978008835, + 50.90767324633187 + ], + [ + 6.9295008697716405, + 50.907442917961184 + ], + [ + 6.929498230730645, + 50.90743898310452 + ], + [ + 6.9294950085743405, + 50.90743424464593 + ], + [ + 6.929493255082853, + 50.907431831068685 + ], + [ + 6.929368927171401, + 50.907250429303026 + ], + [ + 6.928807952170136, + 50.906445762937 + ], + [ + 6.928656269418519, + 50.90623230469227 + ], + [ + 6.928088407724439, + 50.90542364681232 + ], + [ + 6.9278920280405645, + 50.90514276306298 + ], + [ + 6.927569562051676, + 50.90468218600515 + ], + [ + 6.927312145982115, + 50.904314510442546 + ], + [ + 6.9272475286452515, + 50.90422196912687 + ], + [ + 6.9270697767067935, + 50.90396531317719 + ], + [ + 6.927032591057671, + 50.903911312851314 + ], + [ + 6.926825450169146, + 50.903617478243 + ], + [ + 6.926816892286824, + 50.90360530233973 + ], + [ + 6.926455822309877, + 50.90309471570327 + ], + [ + 6.92601063703783, + 50.902460904848354 + ], + [ + 6.925759393019013, + 50.90210053845218 + ], + [ + 6.925621314773999, + 50.901907020589235 + ], + [ + 6.925575641369554, + 50.901845529009044 + ], + [ + 6.925564350238409, + 50.901828270562454 + ], + [ + 6.925551106319401, + 50.90181264306471 + ], + [ + 6.9255485282908555, + 50.90180786197491 + ], + [ + 6.925542266524221, + 50.90179623313937 + ], + [ + 6.92553929324033, + 50.90179071292374 + ], + [ + 6.925344410380301, + 50.90150156421696 + ], + [ + 6.925093154448207, + 50.90112876924998 + ], + [ + 6.924921489511157, + 50.90087366420092 + ], + [ + 6.924754469271438, + 50.900623375838435 + ], + [ + 6.924696457938234, + 50.900536729020686 + ], + [ + 6.9245559673199795, + 50.90032659301772 + ], + [ + 6.924289785026983, + 50.89992858625836 + ], + [ + 6.923745839284186, + 50.898858201294416 + ], + [ + 6.923511677638798, + 50.89839734295698 + ], + [ + 6.923446957740465, + 50.89827852466696 + ], + [ + 6.92336128364874, + 50.89812134789077 + ], + [ + 6.923303770507971, + 50.898015831063184 + ], + [ + 6.923205538239008, + 50.89781451185688 + ], + [ + 6.923176319549062, + 50.897767910922134 + ], + [ + 6.923114402626043, + 50.89766987496023 + ], + [ + 6.922928294732245, + 50.89737344008633 + ], + [ + 6.922922793088916, + 50.897365530095534 + ], + [ + 6.922910009237331, + 50.89734715384404 + ], + [ + 6.922903796366535, + 50.897335348542676 + ], + [ + 6.922899987830012, + 50.8973293079309 + ], + [ + 6.9228945293127415, + 50.89732151562649 + ], + [ + 6.922907661161077, + 50.89730753006009 + ], + [ + 6.922508079124605, + 50.896724763259826 + ], + [ + 6.922538908132664, + 50.89670959710218 + ], + [ + 6.9222749912972485, + 50.89633053253392 + ], + [ + 6.922112303244653, + 50.89609674715923 + ], + [ + 6.921908161284485, + 50.895800047859886 + ], + [ + 6.921804626427974, + 50.895653120458356 + ], + [ + 6.921701303603926, + 50.895506491732704 + ], + [ + 6.921679060738624, + 50.89547492645495 + ], + [ + 6.921021706898793, + 50.89453015307022 + ], + [ + 6.920602408952455, + 50.89394699468817 + ], + [ + 6.920476734551926, + 50.893770548458924 + ], + [ + 6.920360912656821, + 50.89360793306084 + ], + [ + 6.920271458501812, + 50.893648551591625 + ], + [ + 6.920190844113043, + 50.89353507191824 + ], + [ + 6.920053377393684, + 50.89334156141972 + ], + [ + 6.919987507131275, + 50.893248936758106 + ], + [ + 6.919983814046528, + 50.893244788612854 + ], + [ + 6.919977107103224, + 50.893248311583875 + ], + [ + 6.919860017696132, + 50.89329753451548 + ], + [ + 6.91976057998487, + 50.89333983282798 + ], + [ + 6.919734531713242, + 50.89335385311292 + ], + [ + 6.919729831697611, + 50.89335602589061 + ], + [ + 6.919579913013083, + 50.893437073625044 + ], + [ + 6.919573670290348, + 50.89344074065661 + ], + [ + 6.919377104665827, + 50.893555671057385 + ], + [ + 6.919206419206792, + 50.893652203351145 + ], + [ + 6.919141077221405, + 50.89367927898123 + ], + [ + 6.918973117576479, + 50.89370830207003 + ], + [ + 6.918898163254034, + 50.8937308890895 + ], + [ + 6.918800667010585, + 50.89378994711977 + ], + [ + 6.918528645940521, + 50.89395876894413 + ], + [ + 6.91839779304865, + 50.89403261298407 + ], + [ + 6.918123058193321, + 50.894166307562756 + ], + [ + 6.918114825386514, + 50.894170046940076 + ], + [ + 6.918005847554445, + 50.89421958632316 + ], + [ + 6.917618943089897, + 50.89439556066664 + ], + [ + 6.9172385067912385, + 50.89456473289314 + ], + [ + 6.917122125722301, + 50.894617476954004 + ], + [ + 6.9167576085486, + 50.89478273971798 + ], + [ + 6.916217906621845, + 50.89502548450491 + ], + [ + 6.9159029781668835, + 50.89517070134652 + ], + [ + 6.915352127182559, + 50.8954211324811 + ], + [ + 6.915316650168658, + 50.89543618134057 + ], + [ + 6.915205140145409, + 50.89548353505373 + ], + [ + 6.914860034519958, + 50.89563003664296 + ], + [ + 6.914628625170351, + 50.89572829775983 + ], + [ + 6.914594973277472, + 50.89574185995127 + ], + [ + 6.914020043753843, + 50.89598085055855 + ], + [ + 6.913265769464411, + 50.896262076683634 + ], + [ + 6.913126717336954, + 50.8962976531118 + ], + [ + 6.91301378068048, + 50.89631428673651 + ], + [ + 6.912882347087043, + 50.89633366534437 + ], + [ + 6.912705569690224, + 50.896330593511465 + ], + [ + 6.912639636799184, + 50.89632120008556 + ], + [ + 6.912339927338895, + 50.89627989209 + ], + [ + 6.912241571294725, + 50.89626305607112 + ], + [ + 6.9122185545944, + 50.896259575581055 + ], + [ + 6.911979268606651, + 50.89621956619901 + ], + [ + 6.91167611067316, + 50.89618050531434 + ], + [ + 6.911532763849402, + 50.8961676195287 + ], + [ + 6.91139112196312, + 50.89615489898897 + ], + [ + 6.911277122859147, + 50.89615681502236 + ], + [ + 6.911203112747505, + 50.89615809854297 + ], + [ + 6.911084380795146, + 50.89617126196011 + ], + [ + 6.910961685682977, + 50.896204592336275 + ], + [ + 6.910800232469636, + 50.89625680119368 + ], + [ + 6.910735183245847, + 50.89627892266864 + ], + [ + 6.910728870996704, + 50.89628110039941 + ], + [ + 6.910635827426705, + 50.896326780148875 + ], + [ + 6.910006725360163, + 50.89663952572553 + ], + [ + 6.9093256367300375, + 50.89696359076378 + ], + [ + 6.909237709405738, + 50.897005922708445 + ], + [ + 6.909190487178859, + 50.89702123866575 + ], + [ + 6.908903072086935, + 50.89711702627282 + ], + [ + 6.9088952777418875, + 50.897119584770564 + ], + [ + 6.908696660000086, + 50.89714612809697 + ], + [ + 6.908686026770333, + 50.89714770753769 + ], + [ + 6.908668280217548, + 50.897150103858024 + ], + [ + 6.9086395963642415, + 50.897153946449826 + ], + [ + 6.908461596383396, + 50.89710830523845 + ], + [ + 6.908419180144898, + 50.897083712135455 + ], + [ + 6.9080232930434535, + 50.89685490780873 + ], + [ + 6.908018411494355, + 50.896852131129315 + ], + [ + 6.908008292970287, + 50.89685625241184 + ], + [ + 6.907968723912064, + 50.89687237601476 + ], + [ + 6.907963795767998, + 50.896874446199654 + ], + [ + 6.907957276304085, + 50.8968771174284 + ], + [ + 6.907928019828987, + 50.896888914560336 + ], + [ + 6.9079328051580395, + 50.89689342533761 + ], + [ + 6.908008559013985, + 50.89696476115969 + ], + [ + 6.908138215153339, + 50.897086885666404 + ], + [ + 6.90824851795523, + 50.89719135979944 + ], + [ + 6.908443993157471, + 50.897376487637516 + ], + [ + 6.90853187654134, + 50.897459415058684 + ], + [ + 6.908544465082177, + 50.89747107548853 + ], + [ + 6.909001518819839, + 50.89790467093493 + ], + [ + 6.909109210638568, + 50.89800760714871 + ], + [ + 6.909151902067663, + 50.89804830576106 + ], + [ + 6.9091978315272655, + 50.89809209240793 + ], + [ + 6.90940245813548, + 50.89828717506069 + ], + [ + 6.909407501295298, + 50.898292032161024 + ], + [ + 6.909398937363745, + 50.898295924189135 + ], + [ + 6.909370708255268, + 50.89830804677964 + ], + [ + 6.909350737789098, + 50.89831712359032 + ], + [ + 6.909289271093153, + 50.8983449745969 + ], + [ + 6.909249521109269, + 50.898362991303806 + ], + [ + 6.909227914177309, + 50.89837278616642 + ], + [ + 6.909198370124433, + 50.898386163187155 + ], + [ + 6.909157500025045, + 50.89840480015889 + ], + [ + 6.909282810670657, + 50.898502456771084 + ], + [ + 6.9094740734275275, + 50.89865150123373 + ], + [ + 6.9094972130947285, + 50.89867181650158 + ], + [ + 6.909838514204392, + 50.898992502438226 + ], + [ + 6.914700384764125, + 50.903641889920586 + ], + [ + 6.914816078108037, + 50.90375247616775 + ], + [ + 6.91514076161884, + 50.90406284511218 + ], + [ + 6.915211523997463, + 50.904133859327096 + ], + [ + 6.91527962352133, + 50.9041955856353 + ], + [ + 6.915307459283474, + 50.90427330417329 + ], + [ + 6.915467976836, + 50.90472006524777 + ], + [ + 6.915513920233595, + 50.904847901670166 + ], + [ + 6.915600840927913, + 50.90490870659987 + ], + [ + 6.915650715575504, + 50.904943553693585 + ], + [ + 6.916074448572764, + 50.90521213430684 + ], + [ + 6.915782524438333, + 50.9053928234555 + ], + [ + 6.915777853788491, + 50.90539561268232 + ], + [ + 6.915648752743126, + 50.905475741147036 + ], + [ + 6.91575315449326, + 50.905554897143695 + ], + [ + 6.916160119021577, + 50.90586356933777 + ], + [ + 6.916209035332888, + 50.90589968159183 + ], + [ + 6.916283947819583, + 50.90586340591563 + ], + [ + 6.916344643912771, + 50.9058338933836 + ], + [ + 6.916491951141222, + 50.905762350043744 + ], + [ + 6.916518105876862, + 50.90578380863921 + ], + [ + 6.916663480001928, + 50.90590339324591 + ], + [ + 6.916786458180377, + 50.906004636049076 + ], + [ + 6.916810445242922, + 50.906024313772996 + ], + [ + 6.916895993699549, + 50.906094657277876 + ], + [ + 6.91700103466103, + 50.906180219070784 + ], + [ + 6.91712746987453, + 50.90628368172905 + ], + [ + 6.917206362734725, + 50.90634805481069 + ], + [ + 6.91716341096789, + 50.90636897785343 + ], + [ + 6.917228600962136, + 50.906423390300795 + ], + [ + 6.9173208012505345, + 50.9063981242731 + ], + [ + 6.917326439680022, + 50.90640284413843 + ], + [ + 6.917336297431171, + 50.906398092319144 + ], + [ + 6.917389519498534, + 50.9063716503802 + ], + [ + 6.917386888824953, + 50.906368030176665 + ], + [ + 6.917441422587693, + 50.90634323950954 + ], + [ + 6.917548383020677, + 50.90644676520205 + ], + [ + 6.917378416340723, + 50.90653008140135 + ], + [ + 6.917269843070839, + 50.906583076547854 + ], + [ + 6.917319660804797, + 50.90665100398934 + ], + [ + 6.917410650816422, + 50.90672319171162 + ], + [ + 6.917436214069905, + 50.90674348652505 + ], + [ + 6.917517094080071, + 50.90680766370218 + ], + [ + 6.917562442875904, + 50.90684353363507 + ], + [ + 6.917412735753442, + 50.9069159969442 + ], + [ + 6.917446122404978, + 50.90694369120026 + ], + [ + 6.9173324697348795, + 50.906998700331116 + ], + [ + 6.917228956152976, + 50.907048866328275 + ], + [ + 6.917214871925665, + 50.907055629286845 + ], + [ + 6.917273684444345, + 50.90710379856981 + ], + [ + 6.917417748621604, + 50.907221505165396 + ], + [ + 6.91742309750656, + 50.90722595813679 + ], + [ + 6.917394504297664, + 50.907261330690375 + ], + [ + 6.917368693268054, + 50.90730081720841 + ], + [ + 6.917444925876918, + 50.907316578510724 + ], + [ + 6.917463909668159, + 50.907320384392484 + ], + [ + 6.917513896966239, + 50.907331857631746 + ], + [ + 6.91756139888495, + 50.907347035141235 + ], + [ + 6.917677767176354, + 50.907386661719904 + ], + [ + 6.917685072121399, + 50.90738939128069 + ], + [ + 6.917852478227476, + 50.90745046037119 + ], + [ + 6.918262165179923, + 50.90759151548977 + ], + [ + 6.918314277947719, + 50.907617084589056 + ], + [ + 6.918330282969675, + 50.90762118346021 + ], + [ + 6.918536338536262, + 50.90767376719523 + ], + [ + 6.918715527260467, + 50.907719415652814 + ], + [ + 6.918722801520892, + 50.90772057157553 + ], + [ + 6.918769629350597, + 50.90775202533472 + ], + [ + 6.918861608196637, + 50.9078107846086 + ], + [ + 6.918897923658994, + 50.90783398606878 + ], + [ + 6.918908572236318, + 50.90784046445333 + ], + [ + 6.918921233172737, + 50.90784800581843 + ], + [ + 6.91894808603061, + 50.90786381376687 + ], + [ + 6.918953739991336, + 50.90786707682312 + ], + [ + 6.918957078591394, + 50.907870648454264 + ], + [ + 6.918970723245793, + 50.907884742288644 + ], + [ + 6.918995463681498, + 50.90791034194135 + ], + [ + 6.9190039304501045, + 50.9079183769229 + ], + [ + 6.919256068123306, + 50.908151365800045 + ], + [ + 6.919032989932673, + 50.90826683846756 + ], + [ + 6.919368274277807, + 50.90854951843996 + ], + [ + 6.919164607881327, + 50.90864721931102 + ], + [ + 6.919349048870467, + 50.9088003829725 + ], + [ + 6.919237974241813, + 50.90885654256543 + ], + [ + 6.919340298196348, + 50.90895515775372 + ], + [ + 6.919439025949391, + 50.908914647607844 + ], + [ + 6.919556769374025, + 50.90902365916312 + ], + [ + 6.919510793853475, + 50.90904271960633 + ], + [ + 6.919661440641636, + 50.9091764615844 + ], + [ + 6.9195970850045825, + 50.909207981891825 + ], + [ + 6.919718587484383, + 50.909312918611185 + ], + [ + 6.919884545145471, + 50.90923520086822 + ], + [ + 6.920176847877872, + 50.90951507162605 + ], + [ + 6.920252474665574, + 50.9094782476153 + ], + [ + 6.9202419228866985, + 50.90946952172155 + ], + [ + 6.920519171117052, + 50.90935379956955 + ], + [ + 6.920663364668831, + 50.909491726101045 + ], + [ + 6.920872549136447, + 50.909689575157984 + ], + [ + 6.920963358723315, + 50.90977458651763 + ], + [ + 6.920849245803274, + 50.909820836257566 + ], + [ + 6.9207704568705255, + 50.90985280250318 + ], + [ + 6.920645771609177, + 50.9099034136829 + ], + [ + 6.920413438819834, + 50.90999773066361 + ], + [ + 6.920420714538111, + 50.91000425583138 + ], + [ + 6.920430360212517, + 50.91001224965171 + ], + [ + 6.920467611597364, + 50.910041636157864 + ], + [ + 6.920475563597497, + 50.910047893663354 + ], + [ + 6.920541215697036, + 50.910099573781686 + ], + [ + 6.920596127817246, + 50.9101425039633 + ], + [ + 6.92065932385331, + 50.91011543868387 + ], + [ + 6.920663281435171, + 50.910119619382115 + ], + [ + 6.920981347448506, + 50.910444360445915 + ], + [ + 6.921040281130069, + 50.910503461935754 + ], + [ + 6.921087069009438, + 50.910550113615535 + ], + [ + 6.921207267929514, + 50.91050232976351 + ], + [ + 6.921302179374131, + 50.910462836522136 + ], + [ + 6.921496704540704, + 50.91062564768645 + ], + [ + 6.921702302445605, + 50.910520983529345 + ] + ], + [ + [ + 6.921711666805167, + 50.91049094624796 + ], + [ + 6.921568292109193, + 50.910351873648 + ], + [ + 6.9216250887656114, + 50.91040671776859 + ], + [ + 6.921637501182418, + 50.910414881274576 + ], + [ + 6.921705049358244, + 50.910483976896764 + ], + [ + 6.921709479427407, + 50.91048847536058 + ], + [ + 6.921711666805167, + 50.91049094624796 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Klettenberg", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "301", + "Population_rel": 0.009716554538436086, + "Population_abs": 10572 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.0919486573620665, + 50.88921848440786 + ], + [ + 7.092485763647393, + 50.889213455093284 + ], + [ + 7.092803077754975, + 50.88922972062931 + ], + [ + 7.092836169533747, + 50.88922878107454 + ], + [ + 7.093113448844796, + 50.889240836287534 + ], + [ + 7.093114532213333, + 50.8892382629093 + ], + [ + 7.093149260115164, + 50.88915572961328 + ], + [ + 7.093223853793045, + 50.88897883660087 + ], + [ + 7.09323071427055, + 50.88896289406818 + ], + [ + 7.093232748633209, + 50.88895816784976 + ], + [ + 7.093246979135201, + 50.88889134884344 + ], + [ + 7.093294976684992, + 50.88866596616659 + ], + [ + 7.093592380853119, + 50.88788109392624 + ], + [ + 7.093756204610524, + 50.88744878143357 + ], + [ + 7.093824192411096, + 50.88726925378619 + ], + [ + 7.094008239235967, + 50.88639024451723 + ], + [ + 7.094046278416632, + 50.886248752938485 + ], + [ + 7.094135560879989, + 50.88591674314338 + ], + [ + 7.094180917080014, + 50.88574794386213 + ], + [ + 7.09420102037127, + 50.885587023434674 + ], + [ + 7.09431027627235, + 50.88482800543166 + ], + [ + 7.09447837565376, + 50.88363325408147 + ], + [ + 7.094502539754498, + 50.883203150335845 + ], + [ + 7.094563281744871, + 50.882133011416165 + ], + [ + 7.094567032225852, + 50.88209297337641 + ], + [ + 7.094603975824125, + 50.88170490965409 + ], + [ + 7.094615270872942, + 50.881586682212735 + ], + [ + 7.094618819078156, + 50.88154403809073 + ], + [ + 7.094629350698631, + 50.88133259653021 + ], + [ + 7.094679506273855, + 50.88026570291895 + ], + [ + 7.09505454086833, + 50.87629296174316 + ], + [ + 7.0931458602620365, + 50.876295854159345 + ], + [ + 7.089198808480217, + 50.87635165709558 + ], + [ + 7.087681356667164, + 50.876363840115154 + ], + [ + 7.085976829051288, + 50.876384217580544 + ], + [ + 7.085205468280936, + 50.87626851078478 + ], + [ + 7.083091784472595, + 50.87588021485384 + ], + [ + 7.082944753395838, + 50.876303996187076 + ], + [ + 7.082791697805682, + 50.87631485611044 + ], + [ + 7.082769036728701, + 50.8763118297382 + ], + [ + 7.082681526565375, + 50.87630014714293 + ], + [ + 7.082574348838337, + 50.87628585960023 + ], + [ + 7.0824061968530705, + 50.87626458643779 + ], + [ + 7.082350111927957, + 50.87626007356409 + ], + [ + 7.08233424683438, + 50.876305078199444 + ], + [ + 7.08217392300419, + 50.87628436145108 + ], + [ + 7.082178653775569, + 50.876267777448504 + ], + [ + 7.082203260383694, + 50.87618304736697 + ], + [ + 7.082212731913933, + 50.87615032741004 + ], + [ + 7.082132772664977, + 50.87613336057995 + ], + [ + 7.082079826971525, + 50.87612333386046 + ], + [ + 7.082127466645463, + 50.876063831102606 + ], + [ + 7.082130891465874, + 50.87605831578636 + ], + [ + 7.082220920952736, + 50.87600093609925 + ], + [ + 7.0824309034140684, + 50.875877719518485 + ], + [ + 7.082433564811317, + 50.87583930972833 + ], + [ + 7.082406276574034, + 50.87582050511814 + ], + [ + 7.0821484566979205, + 50.87576788175679 + ], + [ + 7.081932799375762, + 50.87571981098329 + ], + [ + 7.08184420223244, + 50.875716318448 + ], + [ + 7.081778712156834, + 50.875728971686016 + ], + [ + 7.081642692812783, + 50.87569013926745 + ], + [ + 7.081491384128365, + 50.87565369676601 + ], + [ + 7.081440435932435, + 50.87564392114067 + ], + [ + 7.081415733304753, + 50.87569386270228 + ], + [ + 7.08129046926406, + 50.87566544785355 + ], + [ + 7.0811292955979654, + 50.875963864884504 + ], + [ + 7.081125993980875, + 50.875974683094086 + ], + [ + 7.080950528321537, + 50.87594421649019 + ], + [ + 7.080787436712669, + 50.87592046819054 + ], + [ + 7.080803865064247, + 50.87589361694254 + ], + [ + 7.081008779235102, + 50.875532857551526 + ], + [ + 7.08002747047618, + 50.87534435965562 + ], + [ + 7.080019195476943, + 50.875342817780506 + ], + [ + 7.079978253861845, + 50.87533573519426 + ], + [ + 7.078102090240255, + 50.87497292669598 + ], + [ + 7.077932850837914, + 50.87494114065479 + ], + [ + 7.077800714071612, + 50.874916381689665 + ], + [ + 7.0769889441588845, + 50.87475919325867 + ], + [ + 7.076699372524697, + 50.87470307466511 + ], + [ + 7.076415380217619, + 50.8746485231937 + ], + [ + 7.0763029235795285, + 50.87462690737916 + ], + [ + 7.076234564148496, + 50.87461369461962 + ], + [ + 7.07621858062021, + 50.874610605276665 + ], + [ + 7.0741479265471465, + 50.87421491877267 + ], + [ + 7.074073324938015, + 50.874239157714 + ], + [ + 7.073991879463079, + 50.8742252554735 + ], + [ + 7.073956495565858, + 50.87418171199464 + ], + [ + 7.072247443842082, + 50.87389035552962 + ], + [ + 7.072216217020522, + 50.873885518144235 + ], + [ + 7.072172578449505, + 50.87387836845946 + ], + [ + 7.07168499759396, + 50.873798888159754 + ], + [ + 7.070430681930174, + 50.87359115259798 + ], + [ + 7.070250054715592, + 50.87355181825169 + ], + [ + 7.070248626285472, + 50.873551471753274 + ], + [ + 7.0691830547336965, + 50.875338196305286 + ], + [ + 7.068389741073829, + 50.87666368343463 + ], + [ + 7.068323060026872, + 50.876866737235865 + ], + [ + 7.068325015228162, + 50.87686723817587 + ], + [ + 7.068629059637875, + 50.876945199321355 + ], + [ + 7.069420789719342, + 50.8771513531363 + ], + [ + 7.069778210763733, + 50.87728177067277 + ], + [ + 7.069991203763469, + 50.87735976178404 + ], + [ + 7.070466909384615, + 50.87753383293725 + ], + [ + 7.0711005583377595, + 50.87767926348311 + ], + [ + 7.071070945629248, + 50.87775720464397 + ], + [ + 7.070776340816807, + 50.87922321728974 + ], + [ + 7.07078035056074, + 50.87932988527299 + ], + [ + 7.070819706108928, + 50.879435060962194 + ], + [ + 7.070899198175427, + 50.87953069859115 + ], + [ + 7.071303594105312, + 50.8798712814603 + ], + [ + 7.071463633832009, + 50.88015792393898 + ], + [ + 7.071557158327791, + 50.88055529937055 + ], + [ + 7.071641772532477, + 50.88091733682592 + ], + [ + 7.071661884258056, + 50.88100111379945 + ], + [ + 7.071676314367223, + 50.881060222442564 + ], + [ + 7.071698291243602, + 50.881150993165726 + ], + [ + 7.071714811597256, + 50.88124359567416 + ], + [ + 7.071737872999181, + 50.881343637045234 + ], + [ + 7.071864579889378, + 50.881331824638195 + ], + [ + 7.0718952147852745, + 50.88146561322899 + ], + [ + 7.072904861354188, + 50.88121972775518 + ], + [ + 7.0734452420467635, + 50.8812003724983 + ], + [ + 7.073447892482976, + 50.88128475933156 + ], + [ + 7.073457707061569, + 50.88160658253396 + ], + [ + 7.073465835213277, + 50.881719056334575 + ], + [ + 7.073486678634523, + 50.88237221918421 + ], + [ + 7.073504135894558, + 50.88281622849671 + ], + [ + 7.073504140896656, + 50.88281631401958 + ], + [ + 7.073517104672763, + 50.88305271196962 + ], + [ + 7.0735183511634165, + 50.88308218606217 + ], + [ + 7.073526575458455, + 50.883186478037814 + ], + [ + 7.073528327202992, + 50.88320704770023 + ], + [ + 7.073531304661808, + 50.88323147251717 + ], + [ + 7.07354907044825, + 50.883379904863446 + ], + [ + 7.073555409192963, + 50.883433064322894 + ], + [ + 7.073666466063623, + 50.88422095805563 + ], + [ + 7.0736674662190255, + 50.884227421258686 + ], + [ + 7.073701115463197, + 50.88446704037897 + ], + [ + 7.0737040584776745, + 50.884488857340145 + ], + [ + 7.073714121074249, + 50.88456352375603 + ], + [ + 7.073717563418226, + 50.88458905616692 + ], + [ + 7.073740245338145, + 50.88475964736058 + ], + [ + 7.073745813623992, + 50.88480102490759 + ], + [ + 7.07375224395891, + 50.88484880221866 + ], + [ + 7.0737505996848276, + 50.88491968149769 + ], + [ + 7.073749175073845, + 50.884981065244055 + ], + [ + 7.073746224607725, + 50.885112249177425 + ], + [ + 7.073745293767429, + 50.8851520813485 + ], + [ + 7.073743155007521, + 50.88525000824247 + ], + [ + 7.073741708830657, + 50.88548606837798 + ], + [ + 7.073741317794308, + 50.88554976167674 + ], + [ + 7.073430757590478, + 50.88554781243074 + ], + [ + 7.073204534505784, + 50.885546391503986 + ], + [ + 7.0729699622906175, + 50.88554580718551 + ], + [ + 7.072957657980294, + 50.88554577667968 + ], + [ + 7.072961659461686, + 50.8858520705264 + ], + [ + 7.072961680306183, + 50.88585370143039 + ], + [ + 7.072947212161526, + 50.88602430164656 + ], + [ + 7.073174022393411, + 50.88603659895506 + ], + [ + 7.073184749462074, + 50.88605807497907 + ], + [ + 7.073202420294669, + 50.88608493416766 + ], + [ + 7.073391042152083, + 50.88609276379272 + ], + [ + 7.073393461331942, + 50.88609023153129 + ], + [ + 7.073412700276572, + 50.88607009476158 + ], + [ + 7.073430183207593, + 50.88605213065851 + ], + [ + 7.073431504002363, + 50.88605220102988 + ], + [ + 7.073571912337682, + 50.886058654289656 + ], + [ + 7.073682273839184, + 50.885995901253295 + ], + [ + 7.0736790393309885, + 50.88616735790693 + ], + [ + 7.073592678658173, + 50.886220434190484 + ], + [ + 7.073575213849545, + 50.88633145473155 + ], + [ + 7.074190804557998, + 50.88636856941387 + ], + [ + 7.074096779680205, + 50.887013261536765 + ], + [ + 7.074256021498536, + 50.887022581682096 + ], + [ + 7.074256437410426, + 50.887019909319896 + ], + [ + 7.074257508437036, + 50.88701303961255 + ], + [ + 7.074260976435208, + 50.88701269122534 + ], + [ + 7.074301886943875, + 50.887008585269136 + ], + [ + 7.074317689212819, + 50.88700358561216 + ], + [ + 7.074337678307097, + 50.88700142420414 + ], + [ + 7.074458967074935, + 50.88699805902584 + ], + [ + 7.0744746309023165, + 50.88701175857914 + ], + [ + 7.074907428889606, + 50.887020356904195 + ], + [ + 7.075046628491071, + 50.887035614854604 + ], + [ + 7.0751904658518905, + 50.887060987010024 + ], + [ + 7.075217149070776, + 50.88706568564134 + ], + [ + 7.075274782147144, + 50.88706901954866 + ], + [ + 7.075534198770883, + 50.887083708116606 + ], + [ + 7.075587847567756, + 50.887086808880845 + ], + [ + 7.0755975236402495, + 50.88708734887877 + ], + [ + 7.0756662650966105, + 50.88709165991936 + ], + [ + 7.075729437819514, + 50.88709485291245 + ], + [ + 7.075830462315981, + 50.88710012338121 + ], + [ + 7.076307743439029, + 50.8871271837466 + ], + [ + 7.076546959130144, + 50.88714097764675 + ], + [ + 7.0772243366628524, + 50.88718021073844 + ], + [ + 7.07729263983119, + 50.88718398476753 + ], + [ + 7.077851596148366, + 50.88721531820339 + ], + [ + 7.07792722084441, + 50.88722226042061 + ], + [ + 7.077983979035076, + 50.88722461265338 + ], + [ + 7.0786261317451205, + 50.88725229680401 + ], + [ + 7.078625939216448, + 50.887249650384796 + ], + [ + 7.078623842558738, + 50.88722085490168 + ], + [ + 7.078627835041218, + 50.88722102856061 + ], + [ + 7.0802500124026055, + 50.88729156548616 + ], + [ + 7.079999066696457, + 50.887962173223634 + ], + [ + 7.079997988508536, + 50.887965053254796 + ], + [ + 7.079937112144995, + 50.887955980711105 + ], + [ + 7.079934384669477, + 50.88795557428854 + ], + [ + 7.079853033923538, + 50.88817423158199 + ], + [ + 7.079860552284827, + 50.888345591742244 + ], + [ + 7.079832202336954, + 50.88842253404957 + ], + [ + 7.0797029444430395, + 50.888763532998674 + ], + [ + 7.079854480536066, + 50.88879575062449 + ], + [ + 7.080087425865388, + 50.888845282919604 + ], + [ + 7.080095712657389, + 50.888847183816 + ], + [ + 7.080104139702537, + 50.88884899348473 + ], + [ + 7.080322972962143, + 50.88889047671427 + ], + [ + 7.080367082886516, + 50.88889887752821 + ], + [ + 7.080514765868697, + 50.888924298226264 + ], + [ + 7.080555423418904, + 50.88892657953114 + ], + [ + 7.080710011461036, + 50.888935254866176 + ], + [ + 7.082178852852689, + 50.88921172734023 + ], + [ + 7.082354537730893, + 50.88922492925747 + ], + [ + 7.082655353832046, + 50.88924083619789 + ], + [ + 7.083221745199754, + 50.8892851097838 + ], + [ + 7.083796958344881, + 50.88932974761094 + ], + [ + 7.083883236961408, + 50.889336317657545 + ], + [ + 7.084452010689394, + 50.889379035186614 + ], + [ + 7.084466670237931, + 50.889379977320594 + ], + [ + 7.084481339193408, + 50.8893812793549 + ], + [ + 7.08468032895461, + 50.889382036179946 + ], + [ + 7.085519113347155, + 50.88936254723209 + ], + [ + 7.086165268193872, + 50.88934700287117 + ], + [ + 7.086806239732411, + 50.88933465085579 + ], + [ + 7.086891762349609, + 50.88933313444279 + ], + [ + 7.089408620117161, + 50.889278462093216 + ], + [ + 7.089582598091281, + 50.889267129056286 + ], + [ + 7.090043402304816, + 50.88926282339023 + ], + [ + 7.0919486573620665, + 50.88921848440786 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Urbach", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "707", + "Population_rel": 0.01195268556303077, + "Population_abs": 13005 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.063911189050074, + 50.942822393602306 + ], + [ + 7.064071541466519, + 50.942741196040224 + ], + [ + 7.0643091151483715, + 50.94262090889167 + ], + [ + 7.064478323532337, + 50.942522639284135 + ], + [ + 7.064619177563584, + 50.9424164490489 + ], + [ + 7.064728645254625, + 50.94230658878618 + ], + [ + 7.064778396954312, + 50.94223276267947 + ], + [ + 7.064783015810044, + 50.94222334735396 + ], + [ + 7.0647875701228715, + 50.94221390937363 + ], + [ + 7.064824453192486, + 50.94213761162651 + ], + [ + 7.064810575469384, + 50.94202555193796 + ], + [ + 7.064808940122771, + 50.942015056230034 + ], + [ + 7.064807897933122, + 50.942006353793765 + ], + [ + 7.064749872046397, + 50.94185315023776 + ], + [ + 7.064591855617407, + 50.9414883638995 + ], + [ + 7.064445081817949, + 50.94116716254089 + ], + [ + 7.0644421681642475, + 50.94116085106009 + ], + [ + 7.064439324251438, + 50.941154539836106 + ], + [ + 7.064407892115855, + 50.94101800422056 + ], + [ + 7.064407241998567, + 50.94100839812253 + ], + [ + 7.064406670492352, + 50.940998784334184 + ], + [ + 7.064400769571327, + 50.94088395367564 + ], + [ + 7.064409136162973, + 50.94079551218859 + ], + [ + 7.064471732939697, + 50.940627106155446 + ], + [ + 7.06461442857943, + 50.9404315981958 + ], + [ + 7.0646617571062205, + 50.94036675168273 + ], + [ + 7.0647658583611115, + 50.94023767652919 + ], + [ + 7.065001235248347, + 50.93994583468591 + ], + [ + 7.065408304164647, + 50.93944088407373 + ], + [ + 7.065424377301986, + 50.939419938915684 + ], + [ + 7.065430607743538, + 50.9394110557118 + ], + [ + 7.0654362547039735, + 50.939402889525184 + ], + [ + 7.065461219090823, + 50.93936454599797 + ], + [ + 7.065501429850865, + 50.939302745161875 + ], + [ + 7.065571907217442, + 50.939194261574805 + ], + [ + 7.065613351773059, + 50.93913047196393 + ], + [ + 7.0656556480249755, + 50.93908865083887 + ], + [ + 7.065877839015515, + 50.93886943458898 + ], + [ + 7.065996345809374, + 50.93877341752091 + ], + [ + 7.066025624765056, + 50.93874969617053 + ], + [ + 7.066503970798811, + 50.93820227548152 + ], + [ + 7.066513178180688, + 50.9381923389041 + ], + [ + 7.066543123178163, + 50.9381600269334 + ], + [ + 7.066737185776974, + 50.9379488898621 + ], + [ + 7.067180209327972, + 50.93753231551448 + ], + [ + 7.068232717993575, + 50.93657026029944 + ], + [ + 7.068273265618684, + 50.93653479928554 + ], + [ + 7.068373580424327, + 50.93644707402817 + ], + [ + 7.068489059490883, + 50.93634587528184 + ], + [ + 7.069078375211597, + 50.93585656507601 + ], + [ + 7.06908325860851, + 50.935852511470316 + ], + [ + 7.06908814058222, + 50.93584845784092 + ], + [ + 7.069256475101517, + 50.935708689146324 + ], + [ + 7.0699638168300964, + 50.93513263744135 + ], + [ + 7.070140053702875, + 50.934988988767664 + ], + [ + 7.070220635087678, + 50.93491112102023 + ], + [ + 7.070259188917897, + 50.9348740003135 + ], + [ + 7.070370278085762, + 50.93484220397654 + ], + [ + 7.070426787401099, + 50.934825898114006 + ], + [ + 7.070199844777458, + 50.93472442088679 + ], + [ + 7.0698925687459235, + 50.93461936662322 + ], + [ + 7.069807905531188, + 50.934602950108435 + ], + [ + 7.0696434067230225, + 50.93457070935995 + ], + [ + 7.069639543153906, + 50.9345699376727 + ], + [ + 7.069634413346813, + 50.934568948086095 + ], + [ + 7.069084767251261, + 50.934461466509184 + ], + [ + 7.069003292835258, + 50.93444546009871 + ], + [ + 7.068256393707731, + 50.934299129138296 + ], + [ + 7.0681835213470325, + 50.93428458386416 + ], + [ + 7.067173869292419, + 50.934079853770044 + ], + [ + 7.066962523244763, + 50.93402395910625 + ], + [ + 7.066871220269045, + 50.93399977330556 + ], + [ + 7.066816142427756, + 50.933984062171156 + ], + [ + 7.0653752188658, + 50.933573792620315 + ], + [ + 7.065159551443931, + 50.933500251244276 + ], + [ + 7.064834318552209, + 50.933370557170896 + ], + [ + 7.0646820839074245, + 50.933310527126906 + ], + [ + 7.0646113920202875, + 50.933292204242555 + ], + [ + 7.064445761518154, + 50.9332345248793 + ], + [ + 7.064321577540581, + 50.933191277537475 + ], + [ + 7.064259921781942, + 50.933169775719115 + ], + [ + 7.064180152543612, + 50.93314196663464 + ], + [ + 7.063939571982277, + 50.933113872092555 + ], + [ + 7.064055850571507, + 50.9327237490526 + ], + [ + 7.063610380033742, + 50.93266461645363 + ], + [ + 7.063563724036099, + 50.93265847870997 + ], + [ + 7.063552252729376, + 50.93251736051686 + ], + [ + 7.063533397960404, + 50.93228335835928 + ], + [ + 7.063537743072946, + 50.93223261717331 + ], + [ + 7.0635377035731395, + 50.9321903993909 + ], + [ + 7.06353782541784, + 50.932153959112156 + ], + [ + 7.063538771781236, + 50.93215125422943 + ], + [ + 7.063540078280148, + 50.9321483079952 + ], + [ + 7.063553329440685, + 50.93211830372472 + ], + [ + 7.063713952438689, + 50.93175480659666 + ], + [ + 7.063781420000985, + 50.931603196260646 + ], + [ + 7.064001961568131, + 50.93139293899164 + ], + [ + 7.063959272813682, + 50.93137008772503 + ], + [ + 7.063086855714039, + 50.9309126858763 + ], + [ + 7.063082983743248, + 50.93091048203917 + ], + [ + 7.063078915752372, + 50.9309080635984 + ], + [ + 7.063064303129046, + 50.930851465066745 + ], + [ + 7.063062444162896, + 50.93084410798629 + ], + [ + 7.063027174527316, + 50.93070690727096 + ], + [ + 7.062835628796097, + 50.92994914807166 + ], + [ + 7.062817160218872, + 50.92971369511601 + ], + [ + 7.062766651127033, + 50.92906980107753 + ], + [ + 7.062764732365738, + 50.92903802790157 + ], + [ + 7.062762961666429, + 50.929008890527 + ], + [ + 7.063147041975015, + 50.9289658967703 + ], + [ + 7.063165395334553, + 50.92896409407578 + ], + [ + 7.0631700211444, + 50.92896363210681 + ], + [ + 7.063179816799438, + 50.92896266413228 + ], + [ + 7.063182640268004, + 50.928794328934195 + ], + [ + 7.063186411903744, + 50.928601353337385 + ], + [ + 7.0631610154628115, + 50.92860672567762 + ], + [ + 7.062694516535864, + 50.92870481658401 + ], + [ + 7.062652179216959, + 50.92863827313318 + ], + [ + 7.062590205435262, + 50.92853777285603 + ], + [ + 7.0625732023876795, + 50.92851009865437 + ], + [ + 7.062526130760244, + 50.92852248951001 + ], + [ + 7.062522332181886, + 50.92852349041328 + ], + [ + 7.062472940606382, + 50.928461510112 + ], + [ + 7.062461522549852, + 50.928447346239736 + ], + [ + 7.062454230210023, + 50.92843872618823 + ], + [ + 7.061865057242145, + 50.9285868337795 + ], + [ + 7.061744833334022, + 50.92861874283048 + ], + [ + 7.06148366555603, + 50.92820186304377 + ], + [ + 7.06121865579266, + 50.92826730575824 + ], + [ + 7.061515707556986, + 50.92874251867436 + ], + [ + 7.061315467311368, + 50.92879420932161 + ], + [ + 7.061180910032582, + 50.928827734241366 + ], + [ + 7.061176094251273, + 50.92881993139595 + ], + [ + 7.06117086755371, + 50.928811469684696 + ], + [ + 7.0611655232962605, + 50.92880278927327 + ], + [ + 7.061139495083174, + 50.92876048246033 + ], + [ + 7.060959570099712, + 50.92846768920438 + ], + [ + 7.06088903526188, + 50.92835454639474 + ], + [ + 7.060832942019599, + 50.928262999803344 + ], + [ + 7.060822919638869, + 50.92824488914824 + ], + [ + 7.060781137770029, + 50.92817478193947 + ], + [ + 7.060696355577386, + 50.92803102531042 + ], + [ + 7.060672987312327, + 50.92799136803919 + ], + [ + 7.0606687197555855, + 50.92798410850258 + ], + [ + 7.060666978733388, + 50.927980769908814 + ], + [ + 7.060665812467523, + 50.92797750381945 + ], + [ + 7.060625241483019, + 50.92791664866504 + ], + [ + 7.060599346307984, + 50.92787794049785 + ], + [ + 7.060568222724398, + 50.927829346857806 + ], + [ + 7.060420086661068, + 50.92786627243383 + ], + [ + 7.0602979983615635, + 50.92790101079913 + ], + [ + 7.0602842564341906, + 50.927904823307045 + ], + [ + 7.0602410223661725, + 50.92791708904229 + ], + [ + 7.060076339099705, + 50.92796380762515 + ], + [ + 7.059826692995389, + 50.92801305848429 + ], + [ + 7.059821514084217, + 50.92801470728519 + ], + [ + 7.059816843145329, + 50.92801570799108 + ], + [ + 7.059809787500549, + 50.92801700722274 + ], + [ + 7.059787381440685, + 50.92802291329091 + ], + [ + 7.059758449401211, + 50.928029256800116 + ], + [ + 7.059720831641691, + 50.92803859022451 + ], + [ + 7.05958791040033, + 50.92807242559795 + ], + [ + 7.059498088573221, + 50.92809388431333 + ], + [ + 7.059345395809824, + 50.928132785139184 + ], + [ + 7.059310883115348, + 50.92814133094423 + ], + [ + 7.059082259328803, + 50.92819794657598 + ], + [ + 7.058765761121096, + 50.928276420141756 + ], + [ + 7.058384752525993, + 50.92837106612441 + ], + [ + 7.057879251289656, + 50.92849754673422 + ], + [ + 7.057612790700217, + 50.92855908358221 + ], + [ + 7.057597877499981, + 50.9285618968755 + ], + [ + 7.0575829276225335, + 50.92856470236167 + ], + [ + 7.057270896698859, + 50.92862990142507 + ], + [ + 7.056954991358912, + 50.92868696964482 + ], + [ + 7.056855259137837, + 50.92870495260433 + ], + [ + 7.056005487651878, + 50.92883926171029 + ], + [ + 7.055987521081858, + 50.928842055427495 + ], + [ + 7.055969552040271, + 50.928844840107104 + ], + [ + 7.055570043407005, + 50.928903566507884 + ], + [ + 7.055428659052943, + 50.928926790263176 + ], + [ + 7.05492283643204, + 50.92900987540331 + ], + [ + 7.054882576649131, + 50.92901648853526 + ], + [ + 7.054447282890942, + 50.9290862823029 + ], + [ + 7.054322886816471, + 50.92910622726708 + ], + [ + 7.05422841763865, + 50.92921216298735 + ], + [ + 7.054259658482764, + 50.92926653962844 + ], + [ + 7.053516816803115, + 50.93000103391901 + ], + [ + 7.052451283059487, + 50.93102513091791 + ], + [ + 7.052153521639603, + 50.93131130682829 + ], + [ + 7.052040470562385, + 50.93131952028186 + ], + [ + 7.051095483085316, + 50.932239740345594 + ], + [ + 7.051085201708334, + 50.93230105122979 + ], + [ + 7.051102840631903, + 50.932313657149145 + ], + [ + 7.051131636694443, + 50.932334284617994 + ], + [ + 7.051138409387596, + 50.93233889002482 + ], + [ + 7.051141081308947, + 50.932340953710785 + ], + [ + 7.051147319541858, + 50.932344658022295 + ], + [ + 7.051150390966102, + 50.93234645946686 + ], + [ + 7.051161837591994, + 50.932353173672446 + ], + [ + 7.051534431929987, + 50.93257153604379 + ], + [ + 7.051540051165476, + 50.932574592350754 + ], + [ + 7.051546913761992, + 50.932577968000444 + ], + [ + 7.051557351581084, + 50.932583180473294 + ], + [ + 7.051812714533513, + 50.932719893147926 + ], + [ + 7.051817562591642, + 50.93272536306321 + ], + [ + 7.051822405187307, + 50.932730827490914 + ], + [ + 7.051931010776343, + 50.932791440545806 + ], + [ + 7.052335133202573, + 50.93301738466706 + ], + [ + 7.052552260399001, + 50.93313885112666 + ], + [ + 7.052881924213942, + 50.933317642057 + ], + [ + 7.0533100900230945, + 50.933436033679435 + ], + [ + 7.053459110083765, + 50.93347720758995 + ], + [ + 7.053429593599525, + 50.933518642983415 + ], + [ + 7.053576368179371, + 50.93354887447782 + ], + [ + 7.053615756911642, + 50.93356676578793 + ], + [ + 7.05386686865932, + 50.933681179651224 + ], + [ + 7.053924925762065, + 50.93370771380886 + ], + [ + 7.054215614863536, + 50.93383950230945 + ], + [ + 7.054303051343028, + 50.93387964233292 + ], + [ + 7.054607543350396, + 50.93402048358303 + ], + [ + 7.054641234450481, + 50.93403730917498 + ], + [ + 7.054650667031874, + 50.934041933516674 + ], + [ + 7.054654864751249, + 50.93404403603718 + ], + [ + 7.054667882689115, + 50.93405032819221 + ], + [ + 7.054748312773263, + 50.934279010316054 + ], + [ + 7.054763497165725, + 50.9343199497774 + ], + [ + 7.054765167516439, + 50.934324499625355 + ], + [ + 7.054766462840607, + 50.93432807730458 + ], + [ + 7.05476982055952, + 50.934336905675266 + ], + [ + 7.054842460651519, + 50.93454802009695 + ], + [ + 7.054919224558019, + 50.934771790705014 + ], + [ + 7.055052433467739, + 50.93515740010896 + ], + [ + 7.055067501747811, + 50.93520086210866 + ], + [ + 7.055098079108969, + 50.93528841220878 + ], + [ + 7.055211738338486, + 50.93561477730017 + ], + [ + 7.055264990612193, + 50.93576756468453 + ], + [ + 7.055343756410498, + 50.93596695140736 + ], + [ + 7.055518976699692, + 50.93647291434912 + ], + [ + 7.055516928574343, + 50.93649290551823 + ], + [ + 7.0555311359422745, + 50.93653348232803 + ], + [ + 7.055532204846501, + 50.93653662183169 + ], + [ + 7.0555336741357175, + 50.93654094527449 + ], + [ + 7.055584371889288, + 50.936661222817804 + ], + [ + 7.055581569003565, + 50.93668586372936 + ], + [ + 7.055582880918025, + 50.93669054789399 + ], + [ + 7.055584578751653, + 50.93669563690562 + ], + [ + 7.055587608110904, + 50.93670439412488 + ], + [ + 7.055688737135901, + 50.936995816426226 + ], + [ + 7.055723724001744, + 50.93709591037365 + ], + [ + 7.055862761329343, + 50.93749309341817 + ], + [ + 7.055888468821084, + 50.9375651299444 + ], + [ + 7.056022769189136, + 50.93792555413423 + ], + [ + 7.056025777674024, + 50.93793116411112 + ], + [ + 7.056027501853797, + 50.93793354196573 + ], + [ + 7.0560302329326285, + 50.937937339597866 + ], + [ + 7.056033180105967, + 50.937942952151026 + ], + [ + 7.056037028938642, + 50.937948480788314 + ], + [ + 7.0562907544112345, + 50.93816689759311 + ], + [ + 7.056523069865858, + 50.93836705552452 + ], + [ + 7.056903482093196, + 50.938690446676276 + ], + [ + 7.056858587003719, + 50.93871279062305 + ], + [ + 7.057310109819021, + 50.93909201574673 + ], + [ + 7.0575066666467405, + 50.93925708951169 + ], + [ + 7.057806672444652, + 50.93950903323915 + ], + [ + 7.058044809909045, + 50.93970823622338 + ], + [ + 7.058631122908652, + 50.94020254780696 + ], + [ + 7.059122123969079, + 50.94061564920601 + ], + [ + 7.059584956822177, + 50.94100356392936 + ], + [ + 7.059980385555749, + 50.941336445135335 + ], + [ + 7.060459750642594, + 50.941737600731514 + ], + [ + 7.062306656094843, + 50.942084150110304 + ], + [ + 7.061981447309044, + 50.942362422289875 + ], + [ + 7.061800463804744, + 50.942517282288065 + ], + [ + 7.061857635915111, + 50.94252880707464 + ], + [ + 7.062145407765505, + 50.94258713773308 + ], + [ + 7.062222235280181, + 50.94259779334426 + ], + [ + 7.062238317250178, + 50.942600044276254 + ], + [ + 7.062246423898425, + 50.94260118252306 + ], + [ + 7.062253498255689, + 50.942602189415894 + ], + [ + 7.062312878158477, + 50.9426105722693 + ], + [ + 7.062443580828661, + 50.942730986387495 + ], + [ + 7.062449809315194, + 50.94273604075947 + ], + [ + 7.062458086155786, + 50.942742501556445 + ], + [ + 7.062546833122484, + 50.94281163897988 + ], + [ + 7.062552019796992, + 50.94281569574953 + ], + [ + 7.06255713396204, + 50.94281978459208 + ], + [ + 7.062583890145433, + 50.942841472507695 + ], + [ + 7.0627498698341675, + 50.94279423120347 + ], + [ + 7.062882604701178, + 50.94278097633672 + ], + [ + 7.063025834096679, + 50.942803673052744 + ], + [ + 7.063046091421779, + 50.94281082093578 + ], + [ + 7.063159941822833, + 50.94285054426698 + ], + [ + 7.063352713842676, + 50.942968900462134 + ], + [ + 7.063361363751538, + 50.94297539706159 + ], + [ + 7.063369990304198, + 50.94298190766279 + ], + [ + 7.063409621448704, + 50.94301181690116 + ], + [ + 7.0634785499576624, + 50.94306383551667 + ], + [ + 7.063547748899987, + 50.943029739952365 + ], + [ + 7.063555218855114, + 50.943026059545446 + ], + [ + 7.063562675744561, + 50.943022385216835 + ], + [ + 7.063788795214952, + 50.94291070580881 + ], + [ + 7.063911189050074, + 50.942822393602306 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Neubrueck", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "809", + "Population_rel": 0.008312194404617477, + "Population_abs": 9044 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.010640423873277, + 50.99586620162058 + ], + [ + 7.010806191871011, + 50.99586431699579 + ], + [ + 7.011309605308049, + 50.995903829215045 + ], + [ + 7.011319452892276, + 50.995904637246156 + ], + [ + 7.011329298241123, + 50.99590539757212 + ], + [ + 7.011526304384823, + 50.9959208862064 + ], + [ + 7.01196142271627, + 50.99595507772587 + ], + [ + 7.011969686387583, + 50.9959879066316 + ], + [ + 7.012154645369792, + 50.9959982102579 + ], + [ + 7.012236496997475, + 50.99600275387686 + ], + [ + 7.012234936874585, + 50.9959962411196 + ], + [ + 7.012233616349971, + 50.99599055805525 + ], + [ + 7.012225991721859, + 50.99595714466782 + ], + [ + 7.012129709496761, + 50.99554802351123 + ], + [ + 7.012027875976069, + 50.99501051183638 + ], + [ + 7.0119364078656075, + 50.99451755103213 + ], + [ + 7.011885364512545, + 50.99401783065515 + ], + [ + 7.0118683700932225, + 50.99369499289305 + ], + [ + 7.01187218408205, + 50.99344366065895 + ], + [ + 7.011871650504494, + 50.99339733077871 + ], + [ + 7.011867737704442, + 50.99329719653289 + ], + [ + 7.011852219019746, + 50.992884659786576 + ], + [ + 7.011855602097833, + 50.99280107570461 + ], + [ + 7.01185938315151, + 50.99273321926519 + ], + [ + 7.0118872301055575, + 50.99225744542143 + ], + [ + 7.012015852691276, + 50.991249531257395 + ], + [ + 7.012026273657119, + 50.99120295524369 + ], + [ + 7.012032994752847, + 50.991173296228695 + ], + [ + 7.0120496208072245, + 50.9911005311509 + ], + [ + 7.012053441920746, + 50.99108371064737 + ], + [ + 7.012054342261975, + 50.99107974898832 + ], + [ + 7.012055246449592, + 50.9910757640113 + ], + [ + 7.01206584809279, + 50.991029093038186 + ], + [ + 7.012176409573643, + 50.99055073290644 + ], + [ + 7.012208285488014, + 50.99041204051821 + ], + [ + 7.012582978413856, + 50.98918669789038 + ], + [ + 7.012906375516007, + 50.988379711432074 + ], + [ + 7.013222141641785, + 50.98767409911 + ], + [ + 7.013533996943511, + 50.987093987661886 + ], + [ + 7.013678615534669, + 50.986824963804715 + ], + [ + 7.013495943393358, + 50.98678160378075 + ], + [ + 7.013318789484165, + 50.98682808756028 + ], + [ + 7.012908537877271, + 50.986942037004994 + ], + [ + 7.012863814843615, + 50.98695501019731 + ], + [ + 7.01210352954188, + 50.98694645159811 + ], + [ + 7.011481147337786, + 50.986939492529174 + ], + [ + 7.010711221993768, + 50.98689813267842 + ], + [ + 7.009698154969715, + 50.98762355280711 + ], + [ + 7.009836040534992, + 50.98831753794965 + ], + [ + 7.009516332483446, + 50.98826858781758 + ], + [ + 7.009159431344069, + 50.988167927875516 + ], + [ + 7.008703358042642, + 50.98801536614647 + ], + [ + 7.0086897575102585, + 50.98800886476978 + ], + [ + 7.008683165538492, + 50.98800567474222 + ], + [ + 7.00867649336934, + 50.988002560692095 + ], + [ + 7.008517356266506, + 50.987936609140874 + ], + [ + 7.008134165698186, + 50.987749850353936 + ], + [ + 7.007826252186858, + 50.987554273698265 + ], + [ + 7.007433935142901, + 50.98730297407693 + ], + [ + 7.007121471155093, + 50.987089056276076 + ], + [ + 7.006820861567608, + 50.986846152864615 + ], + [ + 7.006663648880768, + 50.986721203584885 + ], + [ + 7.006340022252794, + 50.98648049258445 + ], + [ + 7.006203971100832, + 50.98636951761224 + ], + [ + 7.006089592798891, + 50.986265528247486 + ], + [ + 7.0060856506773534, + 50.98626199208981 + ], + [ + 7.006081698396998, + 50.98625846025536 + ], + [ + 7.006074228256496, + 50.98625153351191 + ], + [ + 7.006071043939748, + 50.98624863445171 + ], + [ + 7.006067962294744, + 50.986245700270516 + ], + [ + 7.0060014296943525, + 50.986170983632924 + ], + [ + 7.005998659268149, + 50.986167902771136 + ], + [ + 7.005995988473284, + 50.986164791233364 + ], + [ + 7.005955844905972, + 50.98611114758724 + ], + [ + 7.005938104619849, + 50.98608765814417 + ], + [ + 7.005912805034116, + 50.98605048079589 + ], + [ + 7.005882320218513, + 50.986003999108725 + ], + [ + 7.005876942143867, + 50.98599224521036 + ], + [ + 7.005874828063302, + 50.98598684979578 + ], + [ + 7.00587294783867, + 50.985981417003714 + ], + [ + 7.005860737640722, + 50.985941170580986 + ], + [ + 7.005843227091666, + 50.985882171827335 + ], + [ + 7.005835294175463, + 50.98577876769803 + ], + [ + 7.0058398007873, + 50.985710956100405 + ], + [ + 7.005841740495721, + 50.98568172389177 + ], + [ + 7.005846209064528, + 50.9856440205794 + ], + [ + 7.0058469246789725, + 50.98563826157524 + ], + [ + 7.00584765456989, + 50.98563250191546 + ], + [ + 7.005849114351124, + 50.98562098259588 + ], + [ + 7.005859356388641, + 50.98553477709445 + ], + [ + 7.005855657777464, + 50.98551658543927 + ], + [ + 7.005854529982379, + 50.985512480366374 + ], + [ + 7.0058532890515846, + 50.985508388650736 + ], + [ + 7.005835683439297, + 50.98540157983021 + ], + [ + 7.004409650649072, + 50.98524863751556 + ], + [ + 7.004808756610955, + 50.984816234072916 + ], + [ + 7.004493884994117, + 50.984671339994826 + ], + [ + 7.004460158964858, + 50.984656797441794 + ], + [ + 7.003992364671376, + 50.984455074984474 + ], + [ + 7.003540937705321, + 50.9842604080581 + ], + [ + 7.003507327019881, + 50.98424591396427 + ], + [ + 7.00348380805208, + 50.98440342782443 + ], + [ + 7.003456791146204, + 50.98456375984234 + ], + [ + 7.003115461681867, + 50.98514659153386 + ], + [ + 7.003105095279251, + 50.985187640273395 + ], + [ + 7.00299427892365, + 50.98539151195502 + ], + [ + 7.002580461863456, + 50.98605425129398 + ], + [ + 7.002428099331994, + 50.98620554183437 + ], + [ + 7.002352596017726, + 50.986272490524925 + ], + [ + 7.002301589776402, + 50.98631778510969 + ], + [ + 7.0021557954590845, + 50.98643868389011 + ], + [ + 7.002047894772392, + 50.98651377140001 + ], + [ + 7.001992047362194, + 50.98655263530611 + ], + [ + 7.001828086573775, + 50.98665678966868 + ], + [ + 7.001663873260434, + 50.98675254121058 + ], + [ + 7.0015775657549435, + 50.98680303770769 + ], + [ + 7.001368296067502, + 50.98691185992611 + ], + [ + 7.0012923813549275, + 50.9869440764092 + ], + [ + 7.00128469354274, + 50.98694733813648 + ], + [ + 7.001125178579516, + 50.987015203581144 + ], + [ + 7.000874125457584, + 50.98710088855551 + ], + [ + 7.0006417146333275, + 50.987173084208735 + ], + [ + 7.000338967150824, + 50.987260156586366 + ], + [ + 7.000207671986081, + 50.98729260673276 + ], + [ + 7.000162165180024, + 50.98730383217914 + ], + [ + 7.0000303624030815, + 50.98732743447276 + ], + [ + 6.999835418938618, + 50.987362004890414 + ], + [ + 6.999797820804468, + 50.98736870963678 + ], + [ + 6.999304470393685, + 50.98739502984819 + ], + [ + 6.999279973940363, + 50.98739504816265 + ], + [ + 6.99927341645244, + 50.987395049138065 + ], + [ + 6.999268232966088, + 50.987395007999304 + ], + [ + 6.999257101433288, + 50.98714581449895 + ], + [ + 6.999220111248218, + 50.98700866968476 + ], + [ + 6.9992118222633515, + 50.98697793036054 + ], + [ + 6.999212114036542, + 50.98639980166657 + ], + [ + 6.999211944954012, + 50.98624913436393 + ], + [ + 6.999211885170998, + 50.986199366949265 + ], + [ + 6.999253860312003, + 50.985928636000416 + ], + [ + 6.999258886446677, + 50.98586314846985 + ], + [ + 6.999291036346515, + 50.98546372712293 + ], + [ + 6.999298581132519, + 50.98537286666496 + ], + [ + 6.999301104389997, + 50.9853401990674 + ], + [ + 6.999386365531021, + 50.985058713934706 + ], + [ + 6.999387946931904, + 50.98505026810289 + ], + [ + 6.9994246194561045, + 50.98479405101426 + ], + [ + 6.999428584919767, + 50.98476651022021 + ], + [ + 6.999464290125778, + 50.984519358334246 + ], + [ + 6.999554601994256, + 50.98436136245388 + ], + [ + 6.999625422225965, + 50.98414456395331 + ], + [ + 6.9997599645525295, + 50.98381150404958 + ], + [ + 6.999784996385098, + 50.983750365823205 + ], + [ + 6.999937933692361, + 50.98343840962399 + ], + [ + 7.000168167122137, + 50.98299926477466 + ], + [ + 7.0002750754430005, + 50.98282027175364 + ], + [ + 7.000468765260822, + 50.9824965250096 + ], + [ + 7.000961816806868, + 50.981762009182354 + ], + [ + 7.001174627244264, + 50.98147351546144 + ], + [ + 7.0013464390512015, + 50.98121227824692 + ], + [ + 7.001435131506015, + 50.981019299332544 + ], + [ + 7.00153185855616, + 50.98080926916936 + ], + [ + 7.001701916114508, + 50.980552713188 + ], + [ + 7.001797595024487, + 50.9803404641177 + ], + [ + 7.001847869576652, + 50.98022838559622 + ], + [ + 7.001866396332963, + 50.98011673333678 + ], + [ + 7.001859068331106, + 50.98011608901285 + ], + [ + 7.001851730286792, + 50.98011544631537 + ], + [ + 7.001533066698818, + 50.98007160374408 + ], + [ + 7.001308981431912, + 50.98004086492505 + ], + [ + 7.001084897896273, + 50.98001012570356 + ], + [ + 7.001130356835924, + 50.97987937604612 + ], + [ + 7.000220302494855, + 50.979774092889706 + ], + [ + 7.000377448302279, + 50.979314202976425 + ], + [ + 7.000586546349082, + 50.979277262408544 + ], + [ + 7.00062718145437, + 50.97917371710814 + ], + [ + 7.000673350462892, + 50.979044123760985 + ], + [ + 7.000684522032719, + 50.97901276706126 + ], + [ + 7.000566959845992, + 50.97899674295898 + ], + [ + 7.000212969446927, + 50.978948489321404 + ], + [ + 7.000206637716997, + 50.9789065639487 + ], + [ + 7.000193605412458, + 50.97881697522251 + ], + [ + 7.000178494964031, + 50.97876324911427 + ], + [ + 7.000149920915704, + 50.978692566011226 + ], + [ + 7.000097988208718, + 50.97858074874855 + ], + [ + 7.000094051381702, + 50.9785643182518 + ], + [ + 7.00008266503654, + 50.9785380766923 + ], + [ + 7.000090488647274, + 50.97853603331689 + ], + [ + 6.999969646962925, + 50.97838164246389 + ], + [ + 6.999872587516384, + 50.978257613131376 + ], + [ + 6.9998588012451854, + 50.97825837798963 + ], + [ + 6.999801616981933, + 50.97826154907423 + ], + [ + 6.999767911456972, + 50.97801822640329 + ], + [ + 6.999767377691168, + 50.97801433739292 + ], + [ + 6.99975859951827, + 50.977950290631775 + ], + [ + 6.999749672728008, + 50.97788516118419 + ], + [ + 6.99967065267183, + 50.97759386618307 + ], + [ + 6.999585309131015, + 50.97754390315984 + ], + [ + 6.999551250439049, + 50.97752396353017 + ], + [ + 6.99941087465559, + 50.97754485223932 + ], + [ + 6.999215861474339, + 50.97749474126977 + ], + [ + 6.999201684081801, + 50.97749108885346 + ], + [ + 6.999103178064833, + 50.97746577372897 + ], + [ + 6.997108845846238, + 50.976761523853845 + ], + [ + 6.997030749071984, + 50.976857837568005 + ], + [ + 6.997013930705636, + 50.97687802137525 + ], + [ + 6.997005514766662, + 50.976888104618105 + ], + [ + 6.997001330253077, + 50.97689311426445 + ], + [ + 6.9969970980344165, + 50.97689810690373 + ], + [ + 6.996260459305306, + 50.97771687708465 + ], + [ + 6.995427470887397, + 50.9784425860626 + ], + [ + 6.995339863571621, + 50.978514169186234 + ], + [ + 6.994922417801765, + 50.97884304967402 + ], + [ + 6.99447874195386, + 50.97915811990481 + ], + [ + 6.994454862378679, + 50.9791746682482 + ], + [ + 6.994442940156847, + 50.97918291483938 + ], + [ + 6.994436985547403, + 50.97918703599777 + ], + [ + 6.994431023973798, + 50.979191153438784 + ], + [ + 6.994382906781741, + 50.97922402720452 + ], + [ + 6.994289415740598, + 50.979286940225144 + ], + [ + 6.9941948636792866, + 50.979349244062654 + ], + [ + 6.9941905068414085, + 50.9793526533736 + ], + [ + 6.9941860567796095, + 50.979355647374284 + ], + [ + 6.994181440832538, + 50.97935868888993 + ], + [ + 6.994159673338532, + 50.97937290182196 + ], + [ + 6.993033166617768, + 50.98006630721881 + ], + [ + 6.991818936951022, + 50.980654550261015 + ], + [ + 6.990986764246722, + 50.98101642457989 + ], + [ + 6.990238824499001, + 50.98129532633965 + ], + [ + 6.990072757448539, + 50.981354356279084 + ], + [ + 6.989905518910418, + 50.98141186747319 + ], + [ + 6.989777419190115, + 50.981455022863216 + ], + [ + 6.989589337826005, + 50.98151684612177 + ], + [ + 6.9893994989914185, + 50.98157669708615 + ], + [ + 6.988697731872341, + 50.98179775607371 + ], + [ + 6.988442687267061, + 50.98187804112766 + ], + [ + 6.987466139728532, + 50.9821829513028 + ], + [ + 6.9864910224326575, + 50.98248812625468 + ], + [ + 6.985508939778219, + 50.98279565881457 + ], + [ + 6.985432410398035, + 50.982819594631756 + ], + [ + 6.984540865791574, + 50.983099034238236 + ], + [ + 6.983482520345088, + 50.98343067043653 + ], + [ + 6.980643460931769, + 50.9843217810932 + ], + [ + 6.979670650900031, + 50.9846273791807 + ], + [ + 6.979587599936538, + 50.984653507044065 + ], + [ + 6.978698001564074, + 50.98493317795801 + ], + [ + 6.97771895940876, + 50.98524115856854 + ], + [ + 6.977642418879272, + 50.985265261802 + ], + [ + 6.976752946714898, + 50.98554518730122 + ], + [ + 6.975774168196875, + 50.9858534180059 + ], + [ + 6.9756977646458775, + 50.98587733887701 + ], + [ + 6.974808267946608, + 50.98615777357512 + ], + [ + 6.974315676314514, + 50.98631560140289 + ], + [ + 6.973831268589965, + 50.98648360701297 + ], + [ + 6.9737051679968, + 50.98652834718504 + ], + [ + 6.973596197263969, + 50.98656817892423 + ], + [ + 6.973491753700986, + 50.986606625851834 + ], + [ + 6.97155593242291, + 50.98738090520164 + ], + [ + 6.97105646477082, + 50.98764813584515 + ], + [ + 6.970099671608675, + 50.988160067448796 + ], + [ + 6.9698076862591165, + 50.988316290790564 + ], + [ + 6.969744783055352, + 50.988352771041356 + ], + [ + 6.968550713119158, + 50.989078497038456 + ], + [ + 6.967477594722764, + 50.989875931752934 + ], + [ + 6.967373054477251, + 50.989958240981466 + ], + [ + 6.967025521563573, + 50.99023879784179 + ], + [ + 6.966708467287225, + 50.99051262914025 + ], + [ + 6.966615352154378, + 50.99059655132742 + ], + [ + 6.966293139759174, + 50.990889750440026 + ], + [ + 6.965987015349076, + 50.991189648574384 + ], + [ + 6.965645975221887, + 50.99153684795753 + ], + [ + 6.96532660599352, + 50.99189213690791 + ], + [ + 6.9652392530691865, + 50.991993089018045 + ], + [ + 6.96515359360228, + 50.99209473790199 + ], + [ + 6.965142840322053, + 50.99210727390313 + ], + [ + 6.965140863001449, + 50.992109571512714 + ], + [ + 6.965133199948013, + 50.992118475745094 + ], + [ + 6.965130019282645, + 50.99212222015668 + ], + [ + 6.965126811954317, + 50.99212595510992 + ], + [ + 6.965113007901294, + 50.99214213255691 + ], + [ + 6.9651102906065505, + 50.99214450361179 + ], + [ + 6.965107673025506, + 50.992146712718906 + ], + [ + 6.965101562483823, + 50.99215472304746 + ], + [ + 6.965085363153563, + 50.99217558493668 + ], + [ + 6.964662000957352, + 50.99270225770852 + ], + [ + 6.964299116381755, + 50.99321732546427 + ], + [ + 6.964284988372486, + 50.993238090242606 + ], + [ + 6.964270904242707, + 50.99325879642578 + ], + [ + 6.964261540188168, + 50.993272563515454 + ], + [ + 6.964226621455473, + 50.99332474685639 + ], + [ + 6.96364516818244, + 50.99429213866621 + ], + [ + 6.963643727614394, + 50.994295030199424 + ], + [ + 6.963175808648761, + 50.99527460170896 + ], + [ + 6.963174368156031, + 50.995277750456985 + ], + [ + 6.96317294806516, + 50.9952808563911 + ], + [ + 6.96281106282358, + 50.99628902555864 + ], + [ + 6.962791204629047, + 50.99634764534236 + ], + [ + 6.965269809388854, + 50.99637037753224 + ], + [ + 6.965282394519745, + 50.99637049246975 + ], + [ + 6.9653391799109645, + 50.996371014123824 + ], + [ + 6.965845446574055, + 50.996430265230146 + ], + [ + 6.968110783924921, + 50.99669537918635 + ], + [ + 6.968360719680105, + 50.996699178722835 + ], + [ + 6.968855397239719, + 50.99668626571719 + ], + [ + 6.969373425396541, + 50.99667324578268 + ], + [ + 6.970854897250377, + 50.99663891207771 + ], + [ + 6.970923247798976, + 50.99663768572167 + ], + [ + 6.9711154392564, + 50.99663437928238 + ], + [ + 6.9714830558113015, + 50.996609505778245 + ], + [ + 6.971553644279586, + 50.99659947984229 + ], + [ + 6.971636016659326, + 50.996587647541574 + ], + [ + 6.9718581145084855, + 50.9965749221812 + ], + [ + 6.971943205645226, + 50.996604507770584 + ], + [ + 6.972138387993034, + 50.99626503664172 + ], + [ + 6.972155297042753, + 50.996235801319294 + ], + [ + 6.972346270538171, + 50.99589963118752 + ], + [ + 6.972369115813205, + 50.99586132625164 + ], + [ + 6.972680550893755, + 50.99534589582198 + ], + [ + 6.972937236518077, + 50.994937352927934 + ], + [ + 6.97324077877579, + 50.99446977964799 + ], + [ + 6.973503637830791, + 50.99407520729685 + ], + [ + 6.973976102795969, + 50.993407980684346 + ], + [ + 6.973986613982323, + 50.993392971820136 + ], + [ + 6.974003785060518, + 50.993369545293454 + ], + [ + 6.974226747021295, + 50.99305887367868 + ], + [ + 6.974284492048957, + 50.9929800051979 + ], + [ + 6.974296798603561, + 50.99296231405637 + ], + [ + 6.974394976566299, + 50.99282135301402 + ], + [ + 6.9745022831701045, + 50.99266746082222 + ], + [ + 6.97451354941692, + 50.99265451106756 + ], + [ + 6.9746362517459835, + 50.99267793794774 + ], + [ + 6.97469841519304, + 50.992689914550695 + ], + [ + 6.97505460221312, + 50.992746448457 + ], + [ + 6.976370408357144, + 50.99295514980855 + ], + [ + 6.977274867808665, + 50.993098691552156 + ], + [ + 6.977274645285145, + 50.993139954256996 + ], + [ + 6.977274280685517, + 50.993231017851386 + ], + [ + 6.977304708484279, + 50.993323352247614 + ], + [ + 6.977344263546757, + 50.993409408842936 + ], + [ + 6.977403208585076, + 50.993516606295124 + ], + [ + 6.9774394456921005, + 50.99360071132331 + ], + [ + 6.977458170906065, + 50.993644511915925 + ], + [ + 6.977466637890854, + 50.99367455530778 + ], + [ + 6.977489794370273, + 50.993753017793395 + ], + [ + 6.977493502585445, + 50.993766649862806 + ], + [ + 6.977613873971691, + 50.99373959221943 + ], + [ + 6.977691967849078, + 50.99372207403484 + ], + [ + 6.97774116464677, + 50.993642771656724 + ], + [ + 6.977836694871651, + 50.99356601271433 + ], + [ + 6.978056248257537, + 50.99345975768853 + ], + [ + 6.978169373904869, + 50.99340399934331 + ], + [ + 6.978849193148089, + 50.99306680510386 + ], + [ + 6.9792895544355575, + 50.992873167807176 + ], + [ + 6.979450608025997, + 50.99282509338632 + ], + [ + 6.980235203437471, + 50.99263797709928 + ], + [ + 6.9805063156661475, + 50.992573315436005 + ], + [ + 6.980898044889768, + 50.99247987050386 + ], + [ + 6.981453279503437, + 50.992359063223034 + ], + [ + 6.981663973087212, + 50.99231324406774 + ], + [ + 6.981893984878337, + 50.99228515121796 + ], + [ + 6.982051779752447, + 50.99227726177764 + ], + [ + 6.982218196708114, + 50.992288447366654 + ], + [ + 6.982351945753367, + 50.99230606720054 + ], + [ + 6.982388639869733, + 50.99231086161692 + ], + [ + 6.982519007081782, + 50.9923261879068 + ], + [ + 6.9825757968916875, + 50.99233283675869 + ], + [ + 6.982775190653946, + 50.99235728757052 + ], + [ + 6.9829801240154765, + 50.99235547688116 + ], + [ + 6.983227448198064, + 50.99233110070401 + ], + [ + 6.983410787876141, + 50.99228973545152 + ], + [ + 6.98343921231015, + 50.99228332363211 + ], + [ + 6.983522238727437, + 50.99226529316026 + ], + [ + 6.983645988450682, + 50.99223975003607 + ], + [ + 6.983728392870653, + 50.992223144967454 + ], + [ + 6.983784076183638, + 50.992222675428316 + ], + [ + 6.983925515258032, + 50.992216063283 + ], + [ + 6.98401559046272, + 50.99221182541535 + ], + [ + 6.983961088188763, + 50.9923354369178 + ], + [ + 6.983912570174011, + 50.99244561803661 + ], + [ + 6.983876688759486, + 50.99252708017455 + ], + [ + 6.983652693028556, + 50.99303308088702 + ], + [ + 6.983775541927796, + 50.99301110513915 + ], + [ + 6.983802977032123, + 50.99300628781387 + ], + [ + 6.984364195315566, + 50.99288775546573 + ], + [ + 6.984917056508226, + 50.99280331061181 + ], + [ + 6.985355920466986, + 50.9929732394004 + ], + [ + 6.986046315325962, + 50.99290756073671 + ], + [ + 6.9872014073914706, + 50.99273063387175 + ], + [ + 6.9873650943354715, + 50.99260120764029 + ], + [ + 6.987408091173309, + 50.992632310322065 + ], + [ + 6.987427828993721, + 50.99264665809332 + ], + [ + 6.9874327751951535, + 50.99265025355714 + ], + [ + 6.9874377576051305, + 50.99265386853142 + ], + [ + 6.98746587342964, + 50.9926739151585 + ], + [ + 6.988935557159835, + 50.992715182019964 + ], + [ + 6.989005587771497, + 50.992719314476346 + ], + [ + 6.988848672426763, + 50.9928586680783 + ], + [ + 6.988445987740596, + 50.99321328862764 + ], + [ + 6.98811739489083, + 50.993498230551694 + ], + [ + 6.988553760522125, + 50.99353913510765 + ], + [ + 6.991985578850686, + 50.993859799471416 + ], + [ + 6.992108748295257, + 50.99387115814944 + ], + [ + 6.992360494046557, + 50.99389364878763 + ], + [ + 6.992440535054528, + 50.99389980035025 + ], + [ + 6.992521756783115, + 50.993364322229894 + ], + [ + 6.9927173119469135, + 50.99343263210104 + ], + [ + 6.993708794229543, + 50.99354459987538 + ], + [ + 6.995195829507836, + 50.99371430825534 + ], + [ + 6.995332392985786, + 50.99372727488086 + ], + [ + 6.996073234229833, + 50.99381381991191 + ], + [ + 6.996077555347912, + 50.99381437791571 + ], + [ + 6.996113200099966, + 50.99381861397356 + ], + [ + 6.996118427422582, + 50.993819175833245 + ], + [ + 6.996168790128589, + 50.993825443354794 + ], + [ + 6.996318005999351, + 50.993843313402714 + ], + [ + 6.9963955474246955, + 50.99385245022517 + ], + [ + 6.996442925757032, + 50.99385654032931 + ], + [ + 6.9968666400060116, + 50.99390745934859 + ], + [ + 6.997262547101708, + 50.993953740409644 + ], + [ + 6.9977371165741555, + 50.994009202250666 + ], + [ + 6.9978817081607945, + 50.99401666540546 + ], + [ + 6.998075690351335, + 50.99402723333477 + ], + [ + 6.998274314691961, + 50.99403795605433 + ], + [ + 6.998344505344742, + 50.99404174477398 + ], + [ + 6.998364071831208, + 50.9940440380467 + ], + [ + 6.9983685128996616, + 50.99404455844919 + ], + [ + 6.998400753197008, + 50.994048336138555 + ], + [ + 6.9990823022929085, + 50.99412820407232 + ], + [ + 6.999089647383854, + 50.99412906469674 + ], + [ + 6.999104735990254, + 50.994130833241755 + ], + [ + 6.99914746513624, + 50.994135839986015 + ], + [ + 6.999192878496173, + 50.99414116161086 + ], + [ + 6.99929013006911, + 50.994152557918994 + ], + [ + 7.0007114852479635, + 50.994319064996006 + ], + [ + 7.000739831875665, + 50.99432245880459 + ], + [ + 7.000746003640916, + 50.99432323178612 + ], + [ + 7.000750068886231, + 50.994323743865294 + ], + [ + 7.00075489673084, + 50.99432435174054 + ], + [ + 7.000875561366088, + 50.9943395525147 + ], + [ + 7.000946890314502, + 50.99434853768937 + ], + [ + 7.00100927091984, + 50.994356395644694 + ], + [ + 7.00101758143078, + 50.99435744265179 + ], + [ + 7.001025891942123, + 50.99435848965832 + ], + [ + 7.001076229882899, + 50.99436483107666 + ], + [ + 7.001080476568074, + 50.994365366035815 + ], + [ + 7.001074081261277, + 50.99439194520641 + ], + [ + 7.001056283464733, + 50.99446378847278 + ], + [ + 7.001035385169519, + 50.99454513351199 + ], + [ + 7.001011988100564, + 50.99463610484083 + ], + [ + 7.0009526075379975, + 50.99488809396563 + ], + [ + 7.000940138697137, + 50.994940688500215 + ], + [ + 7.000920526933338, + 50.9950239882705 + ], + [ + 7.000340756730399, + 50.997490519167414 + ], + [ + 7.000335172317658, + 50.99751426119058 + ], + [ + 7.000326155406857, + 50.997552600475544 + ], + [ + 7.000300936394384, + 50.99786959913479 + ], + [ + 7.00091298072499, + 50.99796128958067 + ], + [ + 7.0010060672325665, + 50.99794759371113 + ], + [ + 7.001051707312572, + 50.9978937835046 + ], + [ + 7.000931373322969, + 50.997407416457996 + ], + [ + 7.001046859325782, + 50.99725056550587 + ], + [ + 7.001122760669652, + 50.997245389176 + ], + [ + 7.001210258593087, + 50.99719598449396 + ], + [ + 7.001403533053391, + 50.997095264507514 + ], + [ + 7.001456215692595, + 50.99706770927326 + ], + [ + 7.001501437375186, + 50.9970442650456 + ], + [ + 7.001680010473975, + 50.99696209873269 + ], + [ + 7.001887216121228, + 50.9968667426949 + ], + [ + 7.002424009109621, + 50.99669080025031 + ], + [ + 7.002453543377014, + 50.99668114619098 + ], + [ + 7.002458334085416, + 50.996680103026385 + ], + [ + 7.003008740017857, + 50.99656019626172 + ], + [ + 7.003496053420312, + 50.996404718674036 + ], + [ + 7.003793681694367, + 50.99628835527232 + ], + [ + 7.003881828322591, + 50.99625397726927 + ], + [ + 7.004152469641871, + 50.9961479575596 + ], + [ + 7.004475611585841, + 50.9960786127785 + ], + [ + 7.0046395211736545, + 50.996043402618625 + ], + [ + 7.004671356467375, + 50.996036566349126 + ], + [ + 7.004676793936057, + 50.99603539384322 + ], + [ + 7.0046821998036854, + 50.99603422709269 + ], + [ + 7.004941674690702, + 50.99597850595872 + ], + [ + 7.005073252275851, + 50.99596326005367 + ], + [ + 7.005258023438704, + 50.99592975981608 + ], + [ + 7.005574566272686, + 50.99592559218503 + ], + [ + 7.005652889643666, + 50.995924558080866 + ], + [ + 7.005775496056979, + 50.9959227574642 + ], + [ + 7.006039364835035, + 50.99591897881396 + ], + [ + 7.00624855308522, + 50.995916052241625 + ], + [ + 7.006683802270291, + 50.99591225679816 + ], + [ + 7.008045305753304, + 50.995898618980796 + ], + [ + 7.008416135167249, + 50.99589379656096 + ], + [ + 7.008423184229941, + 50.99589369282592 + ], + [ + 7.008430233215633, + 50.995893590887874 + ], + [ + 7.008517387944157, + 50.99589256336129 + ], + [ + 7.0085810440885545, + 50.99589174395624 + ], + [ + 7.008645270499842, + 50.995890919850254 + ], + [ + 7.009928504493106, + 50.995874294938226 + ], + [ + 7.010640423873277, + 50.99586620162058 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Stammheim", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "908", + "Population_rel": 0.007681702878570641, + "Population_abs": 8358 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.973431219802186, + 50.91706659468823 + ], + [ + 6.97595861567316, + 50.912865095452425 + ], + [ + 6.979068210390721, + 50.908785374520015 + ], + [ + 6.97945875413495, + 50.908303231628224 + ], + [ + 6.979588513109513, + 50.90814660909951 + ], + [ + 6.979791964123543, + 50.90790103638869 + ], + [ + 6.978074762743178, + 50.90750416717294 + ], + [ + 6.977923214822345, + 50.907469223341316 + ], + [ + 6.977451282614959, + 50.9072973463626 + ], + [ + 6.977211630546112, + 50.907363633265035 + ], + [ + 6.976998120160772, + 50.90742174686791 + ], + [ + 6.9764259280668375, + 50.90718987954228 + ], + [ + 6.9763533929801484, + 50.90710715433707 + ], + [ + 6.976334954864571, + 50.907048159158464 + ], + [ + 6.976329933791033, + 50.9070323797342 + ], + [ + 6.976313229845081, + 50.907042677585856 + ], + [ + 6.976293607126161, + 50.90705310380111 + ], + [ + 6.976040063825673, + 50.90689383413047 + ], + [ + 6.975982828247259, + 50.906846327467704 + ], + [ + 6.975971389116742, + 50.906765068962066 + ], + [ + 6.975811695588752, + 50.90665826281724 + ], + [ + 6.975784462394128, + 50.906640961307126 + ], + [ + 6.975762690048104, + 50.9066332321606 + ], + [ + 6.975739724826647, + 50.90662506410899 + ], + [ + 6.975682358724332, + 50.90660585758687 + ], + [ + 6.975545648646722, + 50.906561244246255 + ], + [ + 6.975507028981846, + 50.906543318853 + ], + [ + 6.975488537388877, + 50.90653610254918 + ], + [ + 6.975411852159408, + 50.90650977585418 + ], + [ + 6.975169358730183, + 50.906781124354374 + ], + [ + 6.975136250198608, + 50.90677852453798 + ], + [ + 6.975021045711829, + 50.90670514561235 + ], + [ + 6.975000995312574, + 50.90669812163362 + ], + [ + 6.974858900844577, + 50.906647529425705 + ], + [ + 6.974430052501369, + 50.90647948423279 + ], + [ + 6.973693945271237, + 50.906214025660105 + ], + [ + 6.973296554759412, + 50.90606907074842 + ], + [ + 6.973202444892851, + 50.90603505879266 + ], + [ + 6.973170376001634, + 50.90602343950507 + ], + [ + 6.972978485535118, + 50.90584258646829 + ], + [ + 6.972956081631833, + 50.905811400800566 + ], + [ + 6.972898026795197, + 50.90573403695147 + ], + [ + 6.97287178762126, + 50.90569955677903 + ], + [ + 6.972813191593105, + 50.90562696188777 + ], + [ + 6.9725854737125585, + 50.90566985226135 + ], + [ + 6.972508721165953, + 50.905684425346294 + ], + [ + 6.972458720855536, + 50.90569338153834 + ], + [ + 6.9720293375109925, + 50.905767257489224 + ], + [ + 6.972138452205891, + 50.90558851127941 + ], + [ + 6.972104562259191, + 50.90558378617478 + ], + [ + 6.971823438477413, + 50.90553362993047 + ], + [ + 6.971940378451412, + 50.90527106550016 + ], + [ + 6.971722486854203, + 50.90523278774347 + ], + [ + 6.97186225561252, + 50.904912770224136 + ], + [ + 6.97160117331206, + 50.90484586268439 + ], + [ + 6.971570385248516, + 50.90484809586966 + ], + [ + 6.971534733238824, + 50.904858199521485 + ], + [ + 6.971546390767847, + 50.90482742030523 + ], + [ + 6.971316407575258, + 50.90477967339803 + ], + [ + 6.971309303379586, + 50.90479493649695 + ], + [ + 6.971296764157706, + 50.90481887047456 + ], + [ + 6.9711483960887355, + 50.90511098749095 + ], + [ + 6.9706639680334215, + 50.90501812331699 + ], + [ + 6.970175523288652, + 50.904922781417646 + ], + [ + 6.9701833284963985, + 50.90490364165959 + ], + [ + 6.970208383923774, + 50.90485534902838 + ], + [ + 6.970218492847819, + 50.904836025388754 + ], + [ + 6.970228040257503, + 50.904817871069454 + ], + [ + 6.970234461732275, + 50.90480559109551 + ], + [ + 6.970168029212508, + 50.90479005280721 + ], + [ + 6.970115409314755, + 50.90478240035154 + ], + [ + 6.969685139076415, + 50.90469024018667 + ], + [ + 6.969778856251394, + 50.90447614343927 + ], + [ + 6.969468605337332, + 50.90441745948786 + ], + [ + 6.9694181814032135, + 50.90440740490258 + ], + [ + 6.9692257792591334, + 50.904374844388954 + ], + [ + 6.969202815900739, + 50.904371260106046 + ], + [ + 6.969078980671253, + 50.904351980114534 + ], + [ + 6.968971494115324, + 50.90433515650716 + ], + [ + 6.968616036199988, + 50.90427967678659 + ], + [ + 6.968332717027386, + 50.90423959905977 + ], + [ + 6.96793648895953, + 50.90419128788298 + ], + [ + 6.967908730804967, + 50.904188001195784 + ], + [ + 6.967727402187723, + 50.904162465399 + ], + [ + 6.9677050850095235, + 50.90415913760286 + ], + [ + 6.967283927010102, + 50.9041151666854 + ], + [ + 6.967179826688076, + 50.9044701214606 + ], + [ + 6.967051405892362, + 50.904447454218776 + ], + [ + 6.966991052260271, + 50.90443698727755 + ], + [ + 6.967014548079515, + 50.904363348789346 + ], + [ + 6.966964885055654, + 50.90427881162426 + ], + [ + 6.966497859875557, + 50.904209957047904 + ], + [ + 6.966342606444148, + 50.90415470011306 + ], + [ + 6.9661326243366855, + 50.90412722352188 + ], + [ + 6.9661194380472775, + 50.90417012261008 + ], + [ + 6.966087204728188, + 50.904165085550474 + ], + [ + 6.966055679657566, + 50.90415995289946 + ], + [ + 6.9660430176407635, + 50.90419385741888 + ], + [ + 6.9660183556918245, + 50.9041906458265 + ], + [ + 6.966003491415656, + 50.90422798536758 + ], + [ + 6.965886543555405, + 50.904210075747045 + ], + [ + 6.965865842644085, + 50.904267689006474 + ], + [ + 6.965850508972802, + 50.90430988689466 + ], + [ + 6.965820386333604, + 50.904393107674764 + ], + [ + 6.965660578048367, + 50.90437195679205 + ], + [ + 6.965726221690713, + 50.90397866782713 + ], + [ + 6.965649188844615, + 50.90397283356291 + ], + [ + 6.964758772024913, + 50.90393021878639 + ], + [ + 6.964498158192352, + 50.903917094470856 + ], + [ + 6.964341570034561, + 50.90436623728645 + ], + [ + 6.964312041322486, + 50.9044577234663 + ], + [ + 6.964074779728604, + 50.90445168344767 + ], + [ + 6.9634022731128065, + 50.90437336864485 + ], + [ + 6.963344221125357, + 50.90456388320647 + ], + [ + 6.96243713159356, + 50.90448534163054 + ], + [ + 6.962296239635111, + 50.90500905546658 + ], + [ + 6.963046246760598, + 50.90504037137768 + ], + [ + 6.963065679516768, + 50.90497546857423 + ], + [ + 6.963338043496209, + 50.905008278994195 + ], + [ + 6.963610550204349, + 50.905041086769245 + ], + [ + 6.963823264802717, + 50.90506595069031 + ], + [ + 6.964014572701571, + 50.905081258104964 + ], + [ + 6.9639908739343825, + 50.9051646453528 + ], + [ + 6.963960121963543, + 50.905273900745236 + ], + [ + 6.963922949957752, + 50.905291377465744 + ], + [ + 6.963767863869539, + 50.905273015323 + ], + [ + 6.9637507775285785, + 50.90531076730362 + ], + [ + 6.963749817843707, + 50.90536218972917 + ], + [ + 6.963692637308435, + 50.905568785273175 + ], + [ + 6.96316111025741, + 50.90550739093547 + ], + [ + 6.962989814468417, + 50.905487679994515 + ], + [ + 6.962651351192461, + 50.905448583047665 + ], + [ + 6.962517863000355, + 50.90543530183186 + ], + [ + 6.961520471710867, + 50.90532198955679 + ], + [ + 6.961508309481616, + 50.90535957539999 + ], + [ + 6.961463502490006, + 50.90549640341783 + ], + [ + 6.961430998134942, + 50.905595554501005 + ], + [ + 6.962547537132022, + 50.90572280683997 + ], + [ + 6.962542923241525, + 50.90575276470487 + ], + [ + 6.962536127748184, + 50.905796883005095 + ], + [ + 6.962455350665309, + 50.906078287512145 + ], + [ + 6.962367396335418, + 50.90638402260433 + ], + [ + 6.962362522078099, + 50.906407202679596 + ], + [ + 6.962344817162685, + 50.90649139216462 + ], + [ + 6.962337505469342, + 50.9065170650363 + ], + [ + 6.9623787082408475, + 50.90652569175749 + ], + [ + 6.962300778629789, + 50.90680698396513 + ], + [ + 6.962284758960466, + 50.90686482672998 + ], + [ + 6.962242719241967, + 50.90686004910308 + ], + [ + 6.962239071550923, + 50.906877419904525 + ], + [ + 6.9622454118446155, + 50.906894639521965 + ], + [ + 6.962260799051658, + 50.90690658124275 + ], + [ + 6.962280150446601, + 50.906912958456196 + ], + [ + 6.962314429128538, + 50.906917641936985 + ], + [ + 6.962576561716111, + 50.906943427543176 + ], + [ + 6.962965802389469, + 50.906982285786036 + ], + [ + 6.962963703200471, + 50.90701303313879 + ], + [ + 6.962942657362412, + 50.90709136698363 + ], + [ + 6.962927008448438, + 50.90715617660594 + ], + [ + 6.9628950872278885, + 50.90726970673955 + ], + [ + 6.962819528126992, + 50.907528414916214 + ], + [ + 6.962801243790053, + 50.90759310926537 + ], + [ + 6.962782468953492, + 50.90766167317739 + ], + [ + 6.962746473806762, + 50.90779824892568 + ], + [ + 6.962703775606173, + 50.90795456686874 + ], + [ + 6.962688572007789, + 50.90800323495546 + ], + [ + 6.96262614988033, + 50.90799610954577 + ], + [ + 6.962503328623658, + 50.907983548802605 + ], + [ + 6.962343072397254, + 50.908595788584954 + ], + [ + 6.962210920993623, + 50.90859247306477 + ], + [ + 6.961709896341148, + 50.90857970466726 + ], + [ + 6.961656733378731, + 50.90883544044264 + ], + [ + 6.9617715797112485, + 50.90896474984711 + ], + [ + 6.962226141433255, + 50.9090133195885 + ], + [ + 6.962167518692326, + 50.90923862774273 + ], + [ + 6.9621320758267515, + 50.90937456987312 + ], + [ + 6.962338811638116, + 50.909395337831306 + ], + [ + 6.9623125550265135, + 50.90952859655342 + ], + [ + 6.962296739791602, + 50.90977512562076 + ], + [ + 6.962331302260868, + 50.90988594987948 + ], + [ + 6.962379972801307, + 50.910108574136565 + ], + [ + 6.96248305981631, + 50.91022719521029 + ], + [ + 6.9624838670972125, + 50.91022812397298 + ], + [ + 6.9624089644959115, + 50.910321026381425 + ], + [ + 6.962406250635641, + 50.9103244047405 + ], + [ + 6.962403638734148, + 50.91032811944891 + ], + [ + 6.962286625997412, + 50.91050378683738 + ], + [ + 6.962247347037414, + 50.91071671998147 + ], + [ + 6.96224057617529, + 50.910745137292146 + ], + [ + 6.96223088943752, + 50.9107836082258 + ], + [ + 6.96220203900932, + 50.91089831957004 + ], + [ + 6.9622868634189325, + 50.91090912624192 + ], + [ + 6.962199395859611, + 50.91121818285969 + ], + [ + 6.96216785160647, + 50.91132955092866 + ], + [ + 6.962215158337648, + 50.9113343746483 + ], + [ + 6.962204938033262, + 50.91137724052452 + ], + [ + 6.962204793744991, + 50.91137784058978 + ], + [ + 6.962204679157781, + 50.91137831436105 + ], + [ + 6.962109105930722, + 50.911369858903015 + ], + [ + 6.96203880593401, + 50.91161238222932 + ], + [ + 6.961618491833136, + 50.91157538339625 + ], + [ + 6.961583505796589, + 50.91172309000468 + ], + [ + 6.961055872818416, + 50.91170301179713 + ], + [ + 6.961048611618102, + 50.911743082733466 + ], + [ + 6.961021989920672, + 50.911918000344386 + ], + [ + 6.961127155611026, + 50.91191658717869 + ], + [ + 6.961255889164492, + 50.91191473029274 + ], + [ + 6.961255944452545, + 50.91191746897097 + ], + [ + 6.961257130953459, + 50.911976937809484 + ], + [ + 6.96124382068743, + 50.91206951771422 + ], + [ + 6.961239945637155, + 50.91210186907229 + ], + [ + 6.961231632881556, + 50.912177492122886 + ], + [ + 6.961228913878641, + 50.91219152981529 + ], + [ + 6.9612286321710934, + 50.91219387407461 + ], + [ + 6.961227386519288, + 50.91220492817861 + ], + [ + 6.961226899484753, + 50.91220933382745 + ], + [ + 6.961225752031626, + 50.91222308868578 + ], + [ + 6.961225205351535, + 50.91222859863056 + ], + [ + 6.961224520782376, + 50.91223410616669 + ], + [ + 6.96121910218049, + 50.91227846786058 + ], + [ + 6.961209942182979, + 50.91235130781697 + ], + [ + 6.961419910725876, + 50.91237668555038 + ], + [ + 6.961392784792772, + 50.912599035801556 + ], + [ + 6.961696685481114, + 50.912612981189675 + ], + [ + 6.961697779326424, + 50.912613017380885 + ], + [ + 6.961699846499665, + 50.91261308046353 + ], + [ + 6.961700529973344, + 50.91261303394008 + ], + [ + 6.9617013163874795, + 50.91261297572368 + ], + [ + 6.961702648463736, + 50.912612866778275 + ], + [ + 6.961726218518698, + 50.91261006941719 + ], + [ + 6.961727138621014, + 50.91260994698123 + ], + [ + 6.961727850988897, + 50.912609695004235 + ], + [ + 6.96173902034254, + 50.912605586531114 + ], + [ + 6.961747076075137, + 50.91260257308911 + ], + [ + 6.961753305378654, + 50.912600270638215 + ], + [ + 6.96175391462527, + 50.91260009960313 + ], + [ + 6.961732228192133, + 50.912678788051096 + ], + [ + 6.961727456643806, + 50.91269627230653 + ], + [ + 6.961714730030457, + 50.912742660406444 + ], + [ + 6.961710023121545, + 50.912759869680364 + ], + [ + 6.96169493638994, + 50.91281524183658 + ], + [ + 6.961694464221328, + 50.91281663842173 + ], + [ + 6.961694375150183, + 50.91281701640446 + ], + [ + 6.961693845231379, + 50.9128193113608 + ], + [ + 6.961690224949594, + 50.91283255445915 + ], + [ + 6.9616820058451925, + 50.91286134666387 + ], + [ + 6.961672697387927, + 50.91290321751031 + ], + [ + 6.961492465548331, + 50.91289449989717 + ], + [ + 6.9614329250186815, + 50.9131693473936 + ], + [ + 6.961009415749601, + 50.913151661488634 + ], + [ + 6.960995100323208, + 50.913293122171794 + ], + [ + 6.961456283832826, + 50.913310555075725 + ], + [ + 6.961552397447674, + 50.91331418811424 + ], + [ + 6.961552018787042, + 50.913315463116916 + ], + [ + 6.961551751717581, + 50.91331623551652 + ], + [ + 6.961552122086429, + 50.91331645243995 + ], + [ + 6.961664695711297, + 50.91332282277286 + ], + [ + 6.961649563436437, + 50.913370994590224 + ], + [ + 6.961645621609855, + 50.913387134369046 + ], + [ + 6.961635876422326, + 50.9134216109776 + ], + [ + 6.961493128129489, + 50.9139220635542 + ], + [ + 6.961475612430135, + 50.913982964909245 + ], + [ + 6.961475495056082, + 50.91398340445462 + ], + [ + 6.961372888437895, + 50.91434395525396 + ], + [ + 6.961351778064487, + 50.91441805425387 + ], + [ + 6.9613308691653195, + 50.914491448057575 + ], + [ + 6.961326619429904, + 50.91450489509971 + ], + [ + 6.961311384474224, + 50.91452340173902 + ], + [ + 6.961311070389908, + 50.914523784784826 + ], + [ + 6.961309994386582, + 50.914525097071845 + ], + [ + 6.96130060258113, + 50.91453643878601 + ], + [ + 6.961287702226392, + 50.91455204882761 + ], + [ + 6.961288205860618, + 50.91458909047723 + ], + [ + 6.961288695014636, + 50.914612239157876 + ], + [ + 6.96128211619321, + 50.914657327059146 + ], + [ + 6.961193088205612, + 50.91497135252502 + ], + [ + 6.961192683751367, + 50.914971329271154 + ], + [ + 6.960863813369097, + 50.91495195486759 + ], + [ + 6.960780462670153, + 50.915239137398885 + ], + [ + 6.960755606185059, + 50.91532482409862 + ], + [ + 6.96081680400095, + 50.91547237525719 + ], + [ + 6.960926851829499, + 50.91545856593399 + ], + [ + 6.960935213568928, + 50.915457514941885 + ], + [ + 6.9609363408485585, + 50.91545737364681 + ], + [ + 6.960937452372352, + 50.915457234774586 + ], + [ + 6.96094501727201, + 50.915456284081976 + ], + [ + 6.960954921038958, + 50.9154550423781 + ], + [ + 6.9609630197430326, + 50.915454020065816 + ], + [ + 6.960964494718765, + 50.915453833580074 + ], + [ + 6.960965868090637, + 50.91545366060877 + ], + [ + 6.9609715346564105, + 50.9154529474638 + ], + [ + 6.960976028136074, + 50.91545238200884 + ], + [ + 6.961051539002266, + 50.91544284474214 + ], + [ + 6.961011867727727, + 50.91553270572878 + ], + [ + 6.960959764739846, + 50.915649085372856 + ], + [ + 6.960941170564997, + 50.91569033164751 + ], + [ + 6.961187122687508, + 50.91564802506971 + ], + [ + 6.961215501553466, + 50.91564295273213 + ], + [ + 6.961341749817235, + 50.9156192899955 + ], + [ + 6.961365561573654, + 50.91561454616724 + ], + [ + 6.961400870833638, + 50.91560767555892 + ], + [ + 6.96140480713921, + 50.9156066749492 + ], + [ + 6.961407862739403, + 50.91560616350864 + ], + [ + 6.961440460262022, + 50.91560046508314 + ], + [ + 6.96141219854315, + 50.91556343867215 + ], + [ + 6.962144850593223, + 50.915486395774955 + ], + [ + 6.96238987396722, + 50.915472300174514 + ], + [ + 6.962915704789202, + 50.915442049138356 + ], + [ + 6.963672608085214, + 50.91543168259087 + ], + [ + 6.963679408386251, + 50.915431624056325 + ], + [ + 6.963686208391739, + 50.91543163746656 + ], + [ + 6.964013393180421, + 50.915432299773094 + ], + [ + 6.964925709616859, + 50.91547974005082 + ], + [ + 6.9656620116204655, + 50.91555112457621 + ], + [ + 6.965856156671311, + 50.91557603583868 + ], + [ + 6.966015664327888, + 50.91561252885186 + ], + [ + 6.966336341282966, + 50.91568589302957 + ], + [ + 6.970012515990516, + 50.91647555001114 + ], + [ + 6.97018522483719, + 50.91651069386586 + ], + [ + 6.970285423925711, + 50.916531082274645 + ], + [ + 6.970615795267364, + 50.916593956345615 + ], + [ + 6.9706475558583945, + 50.91659629922759 + ], + [ + 6.97135229199071, + 50.9167582130315 + ], + [ + 6.971354210340609, + 50.916758660087794 + ], + [ + 6.971357417099303, + 50.91675941553976 + ], + [ + 6.973339984089739, + 50.9172264947258 + ], + [ + 6.97337866756777, + 50.91715803483031 + ], + [ + 6.97341239574585, + 50.917097884574964 + ], + [ + 6.973431219802186, + 50.91706659468823 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Bayenthal", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "201", + "Population_rel": 0.009582368295283262, + "Population_abs": 10426 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.95141527850541, + 50.91704057151877 + ], + [ + 6.951766075401781, + 50.91693621131208 + ], + [ + 6.952012632933856, + 50.916871197388815 + ], + [ + 6.952279006332548, + 50.91680150936495 + ], + [ + 6.952341425419322, + 50.91678703077863 + ], + [ + 6.952415586120512, + 50.91676974162299 + ], + [ + 6.952715570508121, + 50.916707908338715 + ], + [ + 6.952972658632819, + 50.91664716209624 + ], + [ + 6.953299602863224, + 50.916597190796985 + ], + [ + 6.95363116015086, + 50.916540382331945 + ], + [ + 6.954719645077354, + 50.91640553517783 + ], + [ + 6.954745186455638, + 50.9164026433493 + ], + [ + 6.955946571696391, + 50.91626875310056 + ], + [ + 6.957277701432808, + 50.916096291271074 + ], + [ + 6.957871143181937, + 50.916030258300324 + ], + [ + 6.957885979631161, + 50.91602859770881 + ], + [ + 6.957893221239159, + 50.91602778815578 + ], + [ + 6.95790045708163, + 50.916026980300174 + ], + [ + 6.9579502525202495, + 50.91602146412551 + ], + [ + 6.9579593214188264, + 50.9160204482026 + ], + [ + 6.957960535244081, + 50.91602031294723 + ], + [ + 6.957961747687029, + 50.91602017676829 + ], + [ + 6.957965825362148, + 50.91601971927459 + ], + [ + 6.957975696447307, + 50.916018611258366 + ], + [ + 6.959657018220245, + 50.915832188880394 + ], + [ + 6.9602574093222795, + 50.915765720265554 + ], + [ + 6.960444248084207, + 50.915745051926415 + ], + [ + 6.960806923174354, + 50.915705114028185 + ], + [ + 6.960941170564997, + 50.91569033164751 + ], + [ + 6.960959764739846, + 50.915649085372856 + ], + [ + 6.961011867727727, + 50.91553270572878 + ], + [ + 6.961051539002266, + 50.91544284474214 + ], + [ + 6.960976028136074, + 50.91545238200884 + ], + [ + 6.9609715346564105, + 50.9154529474638 + ], + [ + 6.960965868090637, + 50.91545366060877 + ], + [ + 6.960964494718765, + 50.915453833580074 + ], + [ + 6.9609630197430326, + 50.915454020065816 + ], + [ + 6.960954921038958, + 50.9154550423781 + ], + [ + 6.96094501727201, + 50.915456284081976 + ], + [ + 6.960937452372352, + 50.915457234774586 + ], + [ + 6.9609363408485585, + 50.91545737364681 + ], + [ + 6.960935213568928, + 50.915457514941885 + ], + [ + 6.960926851829499, + 50.91545856593399 + ], + [ + 6.96081680400095, + 50.91547237525719 + ], + [ + 6.960755606185059, + 50.91532482409862 + ], + [ + 6.960780462670153, + 50.915239137398885 + ], + [ + 6.960863813369097, + 50.91495195486759 + ], + [ + 6.961192683751367, + 50.914971329271154 + ], + [ + 6.961193088205612, + 50.91497135252502 + ], + [ + 6.96128211619321, + 50.914657327059146 + ], + [ + 6.961288695014636, + 50.914612239157876 + ], + [ + 6.961288205860618, + 50.91458909047723 + ], + [ + 6.961287702226392, + 50.91455204882761 + ], + [ + 6.96130060258113, + 50.91453643878601 + ], + [ + 6.961309994386582, + 50.914525097071845 + ], + [ + 6.961311070389908, + 50.914523784784826 + ], + [ + 6.961311384474224, + 50.91452340173902 + ], + [ + 6.961326619429904, + 50.91450489509971 + ], + [ + 6.9613308691653195, + 50.914491448057575 + ], + [ + 6.961351778064487, + 50.91441805425387 + ], + [ + 6.961372888437895, + 50.91434395525396 + ], + [ + 6.961475495056082, + 50.91398340445462 + ], + [ + 6.961475612430135, + 50.913982964909245 + ], + [ + 6.961493128129489, + 50.9139220635542 + ], + [ + 6.961635876422326, + 50.9134216109776 + ], + [ + 6.961645621609855, + 50.913387134369046 + ], + [ + 6.961649563436437, + 50.913370994590224 + ], + [ + 6.961664695711297, + 50.91332282277286 + ], + [ + 6.961552122086429, + 50.91331645243995 + ], + [ + 6.961551751717581, + 50.91331623551652 + ], + [ + 6.961552018787042, + 50.913315463116916 + ], + [ + 6.961552397447674, + 50.91331418811424 + ], + [ + 6.961456283832826, + 50.913310555075725 + ], + [ + 6.960995100323208, + 50.913293122171794 + ], + [ + 6.961009415749601, + 50.913151661488634 + ], + [ + 6.9614329250186815, + 50.9131693473936 + ], + [ + 6.961492465548331, + 50.91289449989717 + ], + [ + 6.961672697387927, + 50.91290321751031 + ], + [ + 6.9616820058451925, + 50.91286134666387 + ], + [ + 6.961690224949594, + 50.91283255445915 + ], + [ + 6.961693845231379, + 50.9128193113608 + ], + [ + 6.961694375150183, + 50.91281701640446 + ], + [ + 6.961694464221328, + 50.91281663842173 + ], + [ + 6.96169493638994, + 50.91281524183658 + ], + [ + 6.961710023121545, + 50.912759869680364 + ], + [ + 6.961714730030457, + 50.912742660406444 + ], + [ + 6.961727456643806, + 50.91269627230653 + ], + [ + 6.961732228192133, + 50.912678788051096 + ], + [ + 6.96175391462527, + 50.91260009960313 + ], + [ + 6.961753305378654, + 50.912600270638215 + ], + [ + 6.961747076075137, + 50.91260257308911 + ], + [ + 6.96173902034254, + 50.912605586531114 + ], + [ + 6.961727850988897, + 50.912609695004235 + ], + [ + 6.961727138621014, + 50.91260994698123 + ], + [ + 6.961726218518698, + 50.91261006941719 + ], + [ + 6.961702648463736, + 50.912612866778275 + ], + [ + 6.9617013163874795, + 50.91261297572368 + ], + [ + 6.961700529973344, + 50.91261303394008 + ], + [ + 6.961699846499665, + 50.91261308046353 + ], + [ + 6.961697779326424, + 50.912613017380885 + ], + [ + 6.961696685481114, + 50.912612981189675 + ], + [ + 6.961392784792772, + 50.912599035801556 + ], + [ + 6.961419910725876, + 50.91237668555038 + ], + [ + 6.961209942182979, + 50.91235130781697 + ], + [ + 6.96121910218049, + 50.91227846786058 + ], + [ + 6.961224520782376, + 50.91223410616669 + ], + [ + 6.961225205351535, + 50.91222859863056 + ], + [ + 6.961225752031626, + 50.91222308868578 + ], + [ + 6.961226899484753, + 50.91220933382745 + ], + [ + 6.961227386519288, + 50.91220492817861 + ], + [ + 6.9612286321710934, + 50.91219387407461 + ], + [ + 6.961228913878641, + 50.91219152981529 + ], + [ + 6.961231632881556, + 50.912177492122886 + ], + [ + 6.961239945637155, + 50.91210186907229 + ], + [ + 6.96124382068743, + 50.91206951771422 + ], + [ + 6.961257130953459, + 50.911976937809484 + ], + [ + 6.961255944452545, + 50.91191746897097 + ], + [ + 6.961255889164492, + 50.91191473029274 + ], + [ + 6.961127155611026, + 50.91191658717869 + ], + [ + 6.961021989920672, + 50.911918000344386 + ], + [ + 6.961048611618102, + 50.911743082733466 + ], + [ + 6.961055872818416, + 50.91170301179713 + ], + [ + 6.961583505796589, + 50.91172309000468 + ], + [ + 6.961618491833136, + 50.91157538339625 + ], + [ + 6.96203880593401, + 50.91161238222932 + ], + [ + 6.962109105930722, + 50.911369858903015 + ], + [ + 6.962204679157781, + 50.91137831436105 + ], + [ + 6.962204793744991, + 50.91137784058978 + ], + [ + 6.962204938033262, + 50.91137724052452 + ], + [ + 6.962215158337648, + 50.9113343746483 + ], + [ + 6.96216785160647, + 50.91132955092866 + ], + [ + 6.962199395859611, + 50.91121818285969 + ], + [ + 6.9622868634189325, + 50.91090912624192 + ], + [ + 6.96220203900932, + 50.91089831957004 + ], + [ + 6.96223088943752, + 50.9107836082258 + ], + [ + 6.96224057617529, + 50.910745137292146 + ], + [ + 6.962247347037414, + 50.91071671998147 + ], + [ + 6.962286625997412, + 50.91050378683738 + ], + [ + 6.962403638734148, + 50.91032811944891 + ], + [ + 6.962406250635641, + 50.9103244047405 + ], + [ + 6.9624089644959115, + 50.910321026381425 + ], + [ + 6.9624838670972125, + 50.91022812397298 + ], + [ + 6.96248305981631, + 50.91022719521029 + ], + [ + 6.962379972801307, + 50.910108574136565 + ], + [ + 6.962331302260868, + 50.90988594987948 + ], + [ + 6.962296739791602, + 50.90977512562076 + ], + [ + 6.9623125550265135, + 50.90952859655342 + ], + [ + 6.962338811638116, + 50.909395337831306 + ], + [ + 6.9621320758267515, + 50.90937456987312 + ], + [ + 6.962167518692326, + 50.90923862774273 + ], + [ + 6.962226141433255, + 50.9090133195885 + ], + [ + 6.9617715797112485, + 50.90896474984711 + ], + [ + 6.961656733378731, + 50.90883544044264 + ], + [ + 6.961709896341148, + 50.90857970466726 + ], + [ + 6.962210920993623, + 50.90859247306477 + ], + [ + 6.962343072397254, + 50.908595788584954 + ], + [ + 6.962503328623658, + 50.907983548802605 + ], + [ + 6.96262614988033, + 50.90799610954577 + ], + [ + 6.962688572007789, + 50.90800323495546 + ], + [ + 6.962703775606173, + 50.90795456686874 + ], + [ + 6.962746473806762, + 50.90779824892568 + ], + [ + 6.962782468953492, + 50.90766167317739 + ], + [ + 6.962801243790053, + 50.90759310926537 + ], + [ + 6.962819528126992, + 50.907528414916214 + ], + [ + 6.9628950872278885, + 50.90726970673955 + ], + [ + 6.962927008448438, + 50.90715617660594 + ], + [ + 6.962942657362412, + 50.90709136698363 + ], + [ + 6.962963703200471, + 50.90701303313879 + ], + [ + 6.962965802389469, + 50.906982285786036 + ], + [ + 6.962576561716111, + 50.906943427543176 + ], + [ + 6.962314429128538, + 50.906917641936985 + ], + [ + 6.962280150446601, + 50.906912958456196 + ], + [ + 6.962260799051658, + 50.90690658124275 + ], + [ + 6.9622454118446155, + 50.906894639521965 + ], + [ + 6.962239071550923, + 50.906877419904525 + ], + [ + 6.962242719241967, + 50.90686004910308 + ], + [ + 6.962284758960466, + 50.90686482672998 + ], + [ + 6.962300778629789, + 50.90680698396513 + ], + [ + 6.9623787082408475, + 50.90652569175749 + ], + [ + 6.962337505469342, + 50.9065170650363 + ], + [ + 6.962344817162685, + 50.90649139216462 + ], + [ + 6.962362522078099, + 50.906407202679596 + ], + [ + 6.962367396335418, + 50.90638402260433 + ], + [ + 6.962455350665309, + 50.906078287512145 + ], + [ + 6.962536127748184, + 50.905796883005095 + ], + [ + 6.962542923241525, + 50.90575276470487 + ], + [ + 6.962547537132022, + 50.90572280683997 + ], + [ + 6.961430998134942, + 50.905595554501005 + ], + [ + 6.961463502490006, + 50.90549640341783 + ], + [ + 6.961508309481616, + 50.90535957539999 + ], + [ + 6.961520471710867, + 50.90532198955679 + ], + [ + 6.962517863000355, + 50.90543530183186 + ], + [ + 6.962651351192461, + 50.905448583047665 + ], + [ + 6.962989814468417, + 50.905487679994515 + ], + [ + 6.96316111025741, + 50.90550739093547 + ], + [ + 6.963692637308435, + 50.905568785273175 + ], + [ + 6.963749817843707, + 50.90536218972917 + ], + [ + 6.9637507775285785, + 50.90531076730362 + ], + [ + 6.963767863869539, + 50.905273015323 + ], + [ + 6.963922949957752, + 50.905291377465744 + ], + [ + 6.963960121963543, + 50.905273900745236 + ], + [ + 6.964014572701571, + 50.905081258104964 + ], + [ + 6.963823264802717, + 50.90506595069031 + ], + [ + 6.963610550204349, + 50.905041086769245 + ], + [ + 6.963338043496209, + 50.905008278994195 + ], + [ + 6.963065679516768, + 50.90497546857423 + ], + [ + 6.963046246760598, + 50.90504037137768 + ], + [ + 6.962298060826243, + 50.905008522453336 + ], + [ + 6.96243713159356, + 50.90448534163054 + ], + [ + 6.962158764836318, + 50.904457702733076 + ], + [ + 6.961876455275564, + 50.904431893806084 + ], + [ + 6.96137875947354, + 50.90438520593389 + ], + [ + 6.961383591695576, + 50.90436449125926 + ], + [ + 6.96138598612324, + 50.903956353537 + ], + [ + 6.961378829932994, + 50.90393330960781 + ], + [ + 6.961158614012252, + 50.903933326422504 + ], + [ + 6.960721087527862, + 50.90393630108171 + ], + [ + 6.960385724181613, + 50.90393663463918 + ], + [ + 6.959802033517406, + 50.903938831203305 + ], + [ + 6.959164121941822, + 50.90394386039897 + ], + [ + 6.959114107445119, + 50.904078975827844 + ], + [ + 6.959055710321448, + 50.90423673046353 + ], + [ + 6.9590334783442955, + 50.904293610670194 + ], + [ + 6.958348820602722, + 50.90429364210194 + ], + [ + 6.9581845973606615, + 50.90427062024593 + ], + [ + 6.957629682382237, + 50.90419265467707 + ], + [ + 6.957553773528953, + 50.90419309802446 + ], + [ + 6.957469066839913, + 50.90418741005928 + ], + [ + 6.957328865046085, + 50.904234676744814 + ], + [ + 6.957219207522832, + 50.90411457957822 + ], + [ + 6.9570339879948975, + 50.90394943616984 + ], + [ + 6.956699406080131, + 50.90395325881074 + ], + [ + 6.956234438012773, + 50.90394802938964 + ], + [ + 6.956232710717857, + 50.90394794427886 + ], + [ + 6.9561161496788095, + 50.90394887095491 + ], + [ + 6.956056869964934, + 50.90400455137045 + ], + [ + 6.955996633101422, + 50.90402041735759 + ], + [ + 6.955943870057154, + 50.90403334462516 + ], + [ + 6.95575696844086, + 50.904098161363265 + ], + [ + 6.9556952440433095, + 50.90411781451804 + ], + [ + 6.955645477953037, + 50.90417988869196 + ], + [ + 6.9554955530658935, + 50.90415513756223 + ], + [ + 6.955422419494258, + 50.90426324994473 + ], + [ + 6.955401146303514, + 50.90430054965613 + ], + [ + 6.955250768702913, + 50.9045453034752 + ], + [ + 6.9551823410314295, + 50.90465418528451 + ], + [ + 6.955293273390065, + 50.90467008727797 + ], + [ + 6.955007588700192, + 50.90533005117652 + ], + [ + 6.954873651186783, + 50.905324706554836 + ], + [ + 6.954863539272082, + 50.90536731563564 + ], + [ + 6.954857455909401, + 50.905392945734825 + ], + [ + 6.9545070433128435, + 50.90626638272212 + ], + [ + 6.954471794836201, + 50.906475403551156 + ], + [ + 6.95446349695193, + 50.90649371971774 + ], + [ + 6.9543986001245806, + 50.90657033198457 + ], + [ + 6.954359519724897, + 50.90661646699624 + ], + [ + 6.954218327342343, + 50.907387291029195 + ], + [ + 6.954193666605277, + 50.90752323194173 + ], + [ + 6.9540753800735855, + 50.90803092954466 + ], + [ + 6.954004343390542, + 50.90829964072538 + ], + [ + 6.953966210813854, + 50.90844079295967 + ], + [ + 6.953963665422547, + 50.90845030875896 + ], + [ + 6.953945061626411, + 50.90851962979742 + ], + [ + 6.953783166474666, + 50.90900264260556 + ], + [ + 6.953655080384727, + 50.90942088544552 + ], + [ + 6.953632394372587, + 50.909465658196474 + ], + [ + 6.953598210074598, + 50.909573990057986 + ], + [ + 6.953572096560555, + 50.909632004545884 + ], + [ + 6.9535665678003316, + 50.90979523790842 + ], + [ + 6.953566471376933, + 50.90979805217991 + ], + [ + 6.953566309417924, + 50.909799863391726 + ], + [ + 6.953566323613385, + 50.90980242597733 + ], + [ + 6.953591011591122, + 50.9098687196347 + ], + [ + 6.953592423433163, + 50.90993774670396 + ], + [ + 6.9536215221441235, + 50.91012313907895 + ], + [ + 6.953643585822862, + 50.91020781862157 + ], + [ + 6.953713023796886, + 50.910377240121846 + ], + [ + 6.953753732842781, + 50.91045583395692 + ], + [ + 6.953817857911864, + 50.91054619209141 + ], + [ + 6.95390033302846, + 50.91061608359691 + ], + [ + 6.954187040105201, + 50.91075792878183 + ], + [ + 6.954434192792857, + 50.910838421261225 + ], + [ + 6.954830776456892, + 50.91087554557415 + ], + [ + 6.954836849059143, + 50.91087610617267 + ], + [ + 6.954837845095292, + 50.91087619827496 + ], + [ + 6.954839869783052, + 50.91087638484978 + ], + [ + 6.954843055005653, + 50.91087667540315 + ], + [ + 6.954849224663409, + 50.910877228707896 + ], + [ + 6.954857929415451, + 50.910877294001295 + ], + [ + 6.955146426558868, + 50.91087844655448 + ], + [ + 6.95535832119912, + 50.91089406126306 + ], + [ + 6.955416605663756, + 50.91094203628365 + ], + [ + 6.955459795410548, + 50.91105135352766 + ], + [ + 6.955462910380153, + 50.91110625232951 + ], + [ + 6.955448977476254, + 50.91115490938238 + ], + [ + 6.9552242292020034, + 50.911233787933064 + ], + [ + 6.954568131338316, + 50.91153059282989 + ], + [ + 6.954011595971611, + 50.91178296884418 + ], + [ + 6.953222057271778, + 50.91217316782027 + ], + [ + 6.953196237111298, + 50.91218797570745 + ], + [ + 6.9531214953282845, + 50.91225817020503 + ], + [ + 6.953018865563892, + 50.91235588945737 + ], + [ + 6.952737954090793, + 50.91262068035338 + ], + [ + 6.952655389588071, + 50.9126996511012 + ], + [ + 6.952574789232005, + 50.91277042691271 + ], + [ + 6.952511842777586, + 50.91282676612228 + ], + [ + 6.952093145915011, + 50.91319480471059 + ], + [ + 6.9520484808046605, + 50.9132346181414 + ], + [ + 6.951884983660004, + 50.913382208397316 + ], + [ + 6.951799114798393, + 50.91345967795451 + ], + [ + 6.951664591215805, + 50.913587900039104 + ], + [ + 6.95165175210988, + 50.91360062219808 + ], + [ + 6.951590456533967, + 50.9136728999359 + ], + [ + 6.951535680005709, + 50.913748047761004 + ], + [ + 6.951487183960286, + 50.91382440393647 + ], + [ + 6.951463226305235, + 50.91392064349089 + ], + [ + 6.95145619138903, + 50.91394405950892 + ], + [ + 6.951385705562956, + 50.91416143302138 + ], + [ + 6.951342824224723, + 50.914289970825216 + ], + [ + 6.951333733821403, + 50.9143100410349 + ], + [ + 6.951322499939923, + 50.914332820328504 + ], + [ + 6.95127821499565, + 50.91441498568354 + ], + [ + 6.951163674135117, + 50.91461855371554 + ], + [ + 6.951085999883123, + 50.914763376423444 + ], + [ + 6.9510220222560966, + 50.914882467213445 + ], + [ + 6.951007123490549, + 50.91490193627328 + ], + [ + 6.950970955583392, + 50.914948926229094 + ], + [ + 6.9509667626063365, + 50.91495434063906 + ], + [ + 6.950961930257371, + 50.91495954146351 + ], + [ + 6.950552855627978, + 50.915399177726876 + ], + [ + 6.95019788969105, + 50.91577163836947 + ], + [ + 6.9501922725026555, + 50.91577753588955 + ], + [ + 6.95018797274213, + 50.915782041820776 + ], + [ + 6.950183548469646, + 50.91578649969668 + ], + [ + 6.950145215243588, + 50.91582510062162 + ], + [ + 6.949761464544999, + 50.91621566079691 + ], + [ + 6.949608646786311, + 50.91636733430958 + ], + [ + 6.9493406864021185, + 50.91663047572468 + ], + [ + 6.9489829005377555, + 50.91695897990413 + ], + [ + 6.948948560783712, + 50.91697660870659 + ], + [ + 6.9489065142232675, + 50.916985850248686 + ], + [ + 6.948862138187771, + 50.91698549222096 + ], + [ + 6.948838053690829, + 50.91698290146035 + ], + [ + 6.94879286051361, + 50.91697090814847 + ], + [ + 6.948793654093207, + 50.9169716595871 + ], + [ + 6.94879389584751, + 50.9169718886809 + ], + [ + 6.948930767462864, + 50.91710152578582 + ], + [ + 6.948970234488708, + 50.917164467263504 + ], + [ + 6.948946838418168, + 50.91724308380571 + ], + [ + 6.949027980234998, + 50.917385096344276 + ], + [ + 6.949226843026816, + 50.917698098032616 + ], + [ + 6.949240623667455, + 50.917719788588975 + ], + [ + 6.949308645288007, + 50.91782690646384 + ], + [ + 6.949480199363447, + 50.917754271790535 + ], + [ + 6.950023469437253, + 50.91754620070148 + ], + [ + 6.950348454914293, + 50.91741906336318 + ], + [ + 6.950551901953444, + 50.91734156572389 + ], + [ + 6.950718113140287, + 50.91727850287065 + ], + [ + 6.950989077376505, + 50.91717611775942 + ], + [ + 6.951194808969392, + 50.91711062896799 + ], + [ + 6.95141527850541, + 50.91704057151877 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Raderberg", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "203", + "Population_rel": 0.006152347340171317, + "Population_abs": 6694 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.029983152247168, + 50.89016261908592 + ], + [ + 7.029966454372596, + 50.890128519796114 + ], + [ + 7.029951620542606, + 50.89009395191912 + ], + [ + 7.029573614980038, + 50.890141157430655 + ], + [ + 7.029291436731371, + 50.88969508258799 + ], + [ + 7.028994600925242, + 50.88922583795563 + ], + [ + 7.028580102951062, + 50.88853964777911 + ], + [ + 7.028334347620726, + 50.88813279860687 + ], + [ + 7.02833156203501, + 50.88812818900972 + ], + [ + 7.028328776411891, + 50.88812358031125 + ], + [ + 7.028571110940793, + 50.888063396118426 + ], + [ + 7.028840309814964, + 50.88799653945231 + ], + [ + 7.029037620372217, + 50.88794751858946 + ], + [ + 7.030650486790545, + 50.88754700176837 + ], + [ + 7.030610249447742, + 50.88751400635881 + ], + [ + 7.030566827431259, + 50.88747834270372 + ], + [ + 7.03016876030973, + 50.88715644051318 + ], + [ + 7.029982244753866, + 50.88700562707556 + ], + [ + 7.029648431042511, + 50.88673574477602 + ], + [ + 7.028949415513558, + 50.88617045339391 + ], + [ + 7.028765657573265, + 50.88602186101085 + ], + [ + 7.027205486054603, + 50.88475973847954 + ], + [ + 7.027098823514445, + 50.88467204118254 + ], + [ + 7.025271999354416, + 50.883195774712654 + ], + [ + 7.0241755609408365, + 50.88230987841706 + ], + [ + 7.024102762342234, + 50.88230791006812 + ], + [ + 7.024060590054024, + 50.882270524773496 + ], + [ + 7.024062944859097, + 50.88222888302508 + ], + [ + 7.0240635400422695, + 50.88221710137272 + ], + [ + 7.02334500856952, + 50.881636936019945 + ], + [ + 7.022946369402371, + 50.88131501392312 + ], + [ + 7.022552664658268, + 50.88099466700267 + ], + [ + 7.022544421865703, + 50.88098808687773 + ], + [ + 7.0224288711947045, + 50.88089605873027 + ], + [ + 7.022379410800392, + 50.88085666959227 + ], + [ + 7.02235264873591, + 50.88083496914413 + ], + [ + 7.022185425101502, + 50.880699795151145 + ], + [ + 7.0221660658815495, + 50.880665805127634 + ], + [ + 7.021491494452108, + 50.87948169095794 + ], + [ + 7.0213437149784514, + 50.87922184177823 + ], + [ + 7.021255339001176, + 50.8790661988366 + ], + [ + 7.0212523862595635, + 50.879061100558445 + ], + [ + 7.021250329132879, + 50.87905590144802 + ], + [ + 7.021229123828235, + 50.87897851105728 + ], + [ + 7.021224469947198, + 50.8789603150738 + ], + [ + 7.021235028722758, + 50.87891715131907 + ], + [ + 7.020804957362569, + 50.879009822402715 + ], + [ + 7.020606963402087, + 50.87905254628397 + ], + [ + 7.020462144736038, + 50.87908374882479 + ], + [ + 7.020095602221022, + 50.87916279199021 + ], + [ + 7.01954797206186, + 50.879280881253685 + ], + [ + 7.018960485159257, + 50.87940746226509 + ], + [ + 7.018552043019217, + 50.879495441381216 + ], + [ + 7.018463085384825, + 50.87951464615364 + ], + [ + 7.018434486102881, + 50.87946725163875 + ], + [ + 7.018662469455647, + 50.87914469735638 + ], + [ + 7.018806777503506, + 50.87894027538002 + ], + [ + 7.0187678895883305, + 50.87892928755408 + ], + [ + 7.018584995632336, + 50.87887735033839 + ], + [ + 7.018559562363914, + 50.878913025792926 + ], + [ + 7.01832304184242, + 50.87884524336201 + ], + [ + 7.018319407490323, + 50.87885048797082 + ], + [ + 7.018069088131539, + 50.8787795926669 + ], + [ + 7.018135539776624, + 50.87868607168067 + ], + [ + 7.018311677953926, + 50.87843628305608 + ], + [ + 7.01805123960561, + 50.878362697587455 + ], + [ + 7.017793239273175, + 50.87872741989844 + ], + [ + 7.017524537104725, + 50.87865090480872 + ], + [ + 7.017608592572833, + 50.87853254557872 + ], + [ + 7.017335316518922, + 50.87845249602675 + ], + [ + 7.017354198669269, + 50.87842572219066 + ], + [ + 7.017073558264219, + 50.87834681591166 + ], + [ + 7.017262951905057, + 50.878078895981595 + ], + [ + 7.017252227829376, + 50.87807584294281 + ], + [ + 7.016982585077023, + 50.87799935735548 + ], + [ + 7.0168998130023015, + 50.878113256356976 + ], + [ + 7.016833648452119, + 50.87820687417205 + ], + [ + 7.016561572731204, + 50.87812959887998 + ], + [ + 7.016311453602185, + 50.878058726545575 + ], + [ + 7.016291640788991, + 50.87805311307103 + ], + [ + 7.016295160036961, + 50.87804813907867 + ], + [ + 7.016298672257809, + 50.878043163168 + ], + [ + 7.016309012412293, + 50.87802851090191 + ], + [ + 7.017219279297859, + 50.87673948862038 + ], + [ + 7.01736427822521, + 50.87653416273456 + ], + [ + 7.017548005883874, + 50.87627402370271 + ], + [ + 7.017521987452102, + 50.87626669960969 + ], + [ + 7.017766219928189, + 50.87592090160271 + ], + [ + 7.018511707427413, + 50.87486496428704 + ], + [ + 7.018449822054419, + 50.874836888828895 + ], + [ + 7.018444574844832, + 50.87483432193185 + ], + [ + 7.018440429849366, + 50.87483224412763 + ], + [ + 7.018438208908729, + 50.87482863947573 + ], + [ + 7.018416393050322, + 50.87478120541086 + ], + [ + 7.01786284169656, + 50.874552311870154 + ], + [ + 7.017290635242868, + 50.8743147686276 + ], + [ + 7.016969058879366, + 50.874181652369415 + ], + [ + 7.016354745830064, + 50.87392820014964 + ], + [ + 7.015742696761235, + 50.87373701927272 + ], + [ + 7.015581718665412, + 50.87368673507191 + ], + [ + 7.015307454587457, + 50.873579361273464 + ], + [ + 7.015186557300941, + 50.87351443104151 + ], + [ + 7.015049685461883, + 50.873413861747515 + ], + [ + 7.014969715978695, + 50.87338201596289 + ], + [ + 7.014652885279534, + 50.87325091931559 + ], + [ + 7.014534653645223, + 50.87320394398758 + ], + [ + 7.014242316869827, + 50.87314733586679 + ], + [ + 7.013857456369917, + 50.87301062642114 + ], + [ + 7.01318664042903, + 50.8727313995957 + ], + [ + 7.012694955734176, + 50.872503292659246 + ], + [ + 7.012387233406012, + 50.872372380875376 + ], + [ + 7.012065857072523, + 50.8722078758529 + ], + [ + 7.011494513138551, + 50.87196804931197 + ], + [ + 7.011207922539204, + 50.87186140180781 + ], + [ + 7.011183417879394, + 50.87185115301144 + ], + [ + 7.010708047247846, + 50.8716523053383 + ], + [ + 7.010606723847094, + 50.87162021207182 + ], + [ + 7.010581632502179, + 50.87234606132978 + ], + [ + 7.010476605259092, + 50.87234987280656 + ], + [ + 7.009602389962481, + 50.872253587497866 + ], + [ + 7.009352855494263, + 50.872259098739256 + ], + [ + 7.009301877172233, + 50.872260233728674 + ], + [ + 7.00932758608818, + 50.87183023630803 + ], + [ + 7.009360528819191, + 50.87127969515093 + ], + [ + 7.007959264262963, + 50.870941494616076 + ], + [ + 7.007890879234536, + 50.87093371483892 + ], + [ + 7.007890241134539, + 50.870941912587874 + ], + [ + 7.007883798036982, + 50.87097064750597 + ], + [ + 7.007020152183446, + 50.87075873147249 + ], + [ + 7.006883503406271, + 50.870725323739926 + ], + [ + 7.005996889442283, + 50.87054510211918 + ], + [ + 7.005320114358564, + 50.87039260594451 + ], + [ + 7.005315722434832, + 50.870392039801104 + ], + [ + 7.004787761962322, + 50.870304719128754 + ], + [ + 7.004761922814362, + 50.870300442319014 + ], + [ + 7.004664322390617, + 50.870283907432494 + ], + [ + 7.004490358172237, + 50.87025232843762 + ], + [ + 7.004409351069007, + 50.87021092594062 + ], + [ + 7.003313834893675, + 50.8699625036837 + ], + [ + 7.003107807914327, + 50.86994764564111 + ], + [ + 7.003030607629227, + 50.86997896021489 + ], + [ + 7.002983731109206, + 50.86999797487063 + ], + [ + 7.0029644029792895, + 50.8700289200305 + ], + [ + 7.002961217252498, + 50.870034019856774 + ], + [ + 7.002852786099796, + 50.87020364439875 + ], + [ + 7.0026981686089265, + 50.87016984952008 + ], + [ + 7.0026687199534265, + 50.870218390458085 + ], + [ + 7.002527098296035, + 50.870452158792574 + ], + [ + 7.002355223155081, + 50.87073475892482 + ], + [ + 7.002270521673055, + 50.87087447286595 + ], + [ + 7.0021868103188725, + 50.87101209375116 + ], + [ + 7.002148463713293, + 50.87107510613807 + ], + [ + 7.001885378516894, + 50.871512013696886 + ], + [ + 7.00188391713878, + 50.87151746859859 + ], + [ + 7.001779515046717, + 50.87167792450229 + ], + [ + 7.001663557787065, + 50.871868684913146 + ], + [ + 7.001633023370736, + 50.871918466127326 + ], + [ + 7.00155226808006, + 50.87204972729783 + ], + [ + 7.001532331018509, + 50.87208240389224 + ], + [ + 7.001386795208455, + 50.8723209415704 + ], + [ + 7.0012985619992, + 50.87246555619457 + ], + [ + 7.001232853450926, + 50.87257295889177 + ], + [ + 7.001116534240539, + 50.87276336809551 + ], + [ + 7.001076346066889, + 50.8728285898385 + ], + [ + 7.00096028676127, + 50.87301987034194 + ], + [ + 7.000846963616888, + 50.873206280695165 + ], + [ + 7.000804303594495, + 50.873276499223394 + ], + [ + 7.000953912424003, + 50.873261830350046 + ], + [ + 7.001225262810459, + 50.87323518228137 + ], + [ + 7.001777499358347, + 50.873180613946424 + ], + [ + 7.00186517353903, + 50.87317192178833 + ], + [ + 7.001917594909813, + 50.8731667207738 + ], + [ + 7.001948267271795, + 50.873163675468184 + ], + [ + 7.0020106414210685, + 50.87315751072328 + ], + [ + 7.002097397753759, + 50.87314894027961 + ], + [ + 7.002213670492161, + 50.87313749707158 + ], + [ + 7.002516016889156, + 50.873107744108275 + ], + [ + 7.0025896118842255, + 50.873100508414076 + ], + [ + 7.0027742362547825, + 50.87308258097332 + ], + [ + 7.0029175370802985, + 50.873068873675734 + ], + [ + 7.002929968607925, + 50.87306761506196 + ], + [ + 7.003038864787841, + 50.87305684612752 + ], + [ + 7.003172874857484, + 50.8730436423526 + ], + [ + 7.003195615141791, + 50.873041304593244 + ], + [ + 7.003220413825731, + 50.87303889592809 + ], + [ + 7.003507903069247, + 50.873010986201464 + ], + [ + 7.003516814665371, + 50.873010137673184 + ], + [ + 7.003731279114354, + 50.87298972525841 + ], + [ + 7.003976648941482, + 50.87296635873798 + ], + [ + 7.0041422836036284, + 50.87295049214196 + ], + [ + 7.004169085891975, + 50.87294772901516 + ], + [ + 7.004283600015917, + 50.8729367681134 + ], + [ + 7.004286637862983, + 50.8729622806311 + ], + [ + 7.004287023975829, + 50.87296748295546 + ], + [ + 7.004287273971314, + 50.87297151285784 + ], + [ + 7.004287538263158, + 50.872978635074396 + ], + [ + 7.004294133663481, + 50.873163523773904 + ], + [ + 7.004295395495393, + 50.87322245656616 + ], + [ + 7.004133800945628, + 50.873238757639605 + ], + [ + 7.003830272844024, + 50.8732687275188 + ], + [ + 7.003777011137553, + 50.87327397077742 + ], + [ + 7.003511788574779, + 50.87330008297219 + ], + [ + 7.0031319779473815, + 50.873337486859796 + ], + [ + 7.003109853890672, + 50.87333973712109 + ], + [ + 7.00316473615551, + 50.87355705289835 + ], + [ + 7.0032649082756135, + 50.87370873882379 + ], + [ + 7.003301895887265, + 50.87376469805326 + ], + [ + 7.003154753730913, + 50.87378016763573 + ], + [ + 7.0027539521287006, + 50.87382220624155 + ], + [ + 7.002713293301435, + 50.873826758164704 + ], + [ + 7.002716608695952, + 50.87384020848834 + ], + [ + 7.002719244829776, + 50.873849997499065 + ], + [ + 7.00278106049866, + 50.87408504649202 + ], + [ + 7.002791519597108, + 50.874124574307 + ], + [ + 7.002355623264112, + 50.87417259611723 + ], + [ + 7.002211641068895, + 50.87418965475922 + ], + [ + 7.0016732102653245, + 50.87424444096202 + ], + [ + 7.001246954631969, + 50.874289542470414 + ], + [ + 7.000812193246274, + 50.874335614622055 + ], + [ + 7.00011988893294, + 50.874407330395385 + ], + [ + 7.000026923304011, + 50.87436149734403 + ], + [ + 6.999959359960442, + 50.87431146602735 + ], + [ + 6.998177385320544, + 50.873717424142335 + ], + [ + 6.997893064896499, + 50.87362313037994 + ], + [ + 6.997668085835187, + 50.873546487417016 + ], + [ + 6.997655244523776, + 50.87356233988993 + ], + [ + 6.997397887137464, + 50.87388032968427 + ], + [ + 6.997293849735618, + 50.87385404761705 + ], + [ + 6.997283656101948, + 50.873851472207555 + ], + [ + 6.99590544317789, + 50.873503298392386 + ], + [ + 6.995747931227899, + 50.873752032912805 + ], + [ + 6.996209892143984, + 50.87386881741724 + ], + [ + 6.995945608379151, + 50.87428903827979 + ], + [ + 6.996100714432167, + 50.87432821703737 + ], + [ + 6.996285582512218, + 50.874034775922226 + ], + [ + 6.9965055875663005, + 50.87409021867262 + ], + [ + 6.996891824287974, + 50.874186880646405 + ], + [ + 6.996910509405319, + 50.8741637077846 + ], + [ + 6.99700460889135, + 50.87419452155787 + ], + [ + 6.997042139961548, + 50.87420681100284 + ], + [ + 6.997034532141574, + 50.87421649535249 + ], + [ + 6.997029966829203, + 50.87422228724427 + ], + [ + 6.997037694349727, + 50.874224828436795 + ], + [ + 6.997101776390471, + 50.87424558171919 + ], + [ + 6.997097841516917, + 50.8742504283933 + ], + [ + 6.997093896815254, + 50.87425527220042 + ], + [ + 6.996237727884764, + 50.87530680132705 + ], + [ + 6.99584210711536, + 50.87577646285469 + ], + [ + 6.995761512268445, + 50.8758376151856 + ], + [ + 6.99575814054114, + 50.8758396672182 + ], + [ + 6.995754065731133, + 50.87584127547119 + ], + [ + 6.995328590248492, + 50.87680789070821 + ], + [ + 6.9944020648831815, + 50.877182088154726 + ], + [ + 6.991393354186204, + 50.87839711710564 + ], + [ + 6.990321666170303, + 50.87883007275178 + ], + [ + 6.990100759728467, + 50.87891923511486 + ], + [ + 6.989718540414619, + 50.879073591492165 + ], + [ + 6.9895536786064945, + 50.87909198011703 + ], + [ + 6.989412695494344, + 50.87910765820641 + ], + [ + 6.989008768302934, + 50.87915257476899 + ], + [ + 6.987778022323907, + 50.879289426377326 + ], + [ + 6.987634138912671, + 50.87930547681626 + ], + [ + 6.98750798038389, + 50.87932650146935 + ], + [ + 6.987428016760754, + 50.879341562101175 + ], + [ + 6.9850407478490695, + 50.879066172796016 + ], + [ + 6.9835162106420885, + 50.878902215201826 + ], + [ + 6.983422786531349, + 50.87889212579927 + ], + [ + 6.982785139740761, + 50.87885426032769 + ], + [ + 6.981615258022954, + 50.87889908055049 + ], + [ + 6.98160674248864, + 50.878899511554565 + ], + [ + 6.980949869623191, + 50.87894737794227 + ], + [ + 6.978919476216829, + 50.87908971006858 + ], + [ + 6.978885343692141, + 50.87909210211576 + ], + [ + 6.978089080566431, + 50.879119906466684 + ], + [ + 6.977947092819008, + 50.87912487314299 + ], + [ + 6.977938717636042, + 50.879125212775996 + ], + [ + 6.977173821867668, + 50.87915148946569 + ], + [ + 6.973654540746055, + 50.879418689445046 + ], + [ + 6.973577933105026, + 50.87942454243721 + ], + [ + 6.973450832211919, + 50.87944160435334 + ], + [ + 6.973319417532764, + 50.879469848783074 + ], + [ + 6.973073952245979, + 50.879541385112475 + ], + [ + 6.972862639240423, + 50.87960850108642 + ], + [ + 6.972611459334457, + 50.879692309983284 + ], + [ + 6.972373474355708, + 50.87978194089207 + ], + [ + 6.971715730203002, + 50.88006204909387 + ], + [ + 6.971175362557767, + 50.88030189291681 + ], + [ + 6.97083773461989, + 50.88045168013463 + ], + [ + 6.970513175656443, + 50.88060135821865 + ], + [ + 6.970377440257552, + 50.880743262895415 + ], + [ + 6.970253206770163, + 50.88073440783413 + ], + [ + 6.969713679766827, + 50.882965035773886 + ], + [ + 6.969678969539559, + 50.882951829686974 + ], + [ + 6.969619574268495, + 50.882929230823265 + ], + [ + 6.969507839089981, + 50.88288611193186 + ], + [ + 6.9691833431989, + 50.882745606970516 + ], + [ + 6.96902832892643, + 50.88267120393225 + ], + [ + 6.968990649082484, + 50.882653063200706 + ], + [ + 6.96862212382884, + 50.88247564139279 + ], + [ + 6.968599087853044, + 50.88246720887594 + ], + [ + 6.968514302150853, + 50.88243617370478 + ], + [ + 6.968501708089098, + 50.88242504223259 + ], + [ + 6.9681372286329015, + 50.88224045826006 + ], + [ + 6.968129880144975, + 50.88237239122639 + ], + [ + 6.968169280988389, + 50.88239292038956 + ], + [ + 6.968177996182808, + 50.88245728809738 + ], + [ + 6.967967707160935, + 50.88367981365802 + ], + [ + 6.967938170270225, + 50.884229042624895 + ], + [ + 6.967854740467476, + 50.88511941866848 + ], + [ + 6.973826607229177, + 50.88702033154883 + ], + [ + 6.977538940801269, + 50.888839034542244 + ], + [ + 6.978316202696459, + 50.889266347709246 + ], + [ + 6.9790977792981055, + 50.889695417545234 + ], + [ + 6.979883861647846, + 50.89018952769869 + ], + [ + 6.980000704381836, + 50.89027151874294 + ], + [ + 6.980046419259692, + 50.890309789051386 + ], + [ + 6.980091678877527, + 50.89033988328552 + ], + [ + 6.980230793781203, + 50.89051463769099 + ], + [ + 6.980428935499885, + 50.890576347722046 + ], + [ + 6.980665864005476, + 50.8907524363839 + ], + [ + 6.980982299414588, + 50.89109344171787 + ], + [ + 6.9812625449109005, + 50.89130161657698 + ], + [ + 6.982002223520752, + 50.89187781686676 + ], + [ + 6.982495414004653, + 50.89223557820844 + ], + [ + 6.983395878628964, + 50.89297384269001 + ], + [ + 6.983917120702183, + 50.89346782057749 + ], + [ + 6.98445136964901, + 50.89387709675055 + ], + [ + 6.984764845693576, + 50.89414961635852 + ], + [ + 6.98472688025575, + 50.89429709396609 + ], + [ + 6.984832150824179, + 50.89438888666742 + ], + [ + 6.984970414487932, + 50.894511138042915 + ], + [ + 6.986012859998022, + 50.89543280075837 + ], + [ + 6.986074508638945, + 50.895487305780286 + ], + [ + 6.986290774631167, + 50.89567850795036 + ], + [ + 6.9864386145530535, + 50.89580921413537 + ], + [ + 6.986938069365101, + 50.89625077563334 + ], + [ + 6.988965813861753, + 50.89794419862098 + ], + [ + 6.989007375298839, + 50.89797797236773 + ], + [ + 6.990545893296059, + 50.89922778561654 + ], + [ + 6.99055841346665, + 50.89922130262362 + ], + [ + 6.990575162238741, + 50.89921263140113 + ], + [ + 6.990583303857562, + 50.89920841679476 + ], + [ + 6.990638704958962, + 50.899179809916625 + ], + [ + 6.990666504086266, + 50.89916549557373 + ], + [ + 6.990694096748324, + 50.89915128559493 + ], + [ + 6.992136711063261, + 50.8984452229953 + ], + [ + 6.993646765229872, + 50.897797538604465 + ], + [ + 6.995212547773863, + 50.89720545279773 + ], + [ + 6.996829263870676, + 50.896670623117885 + ], + [ + 6.998491418449171, + 50.896195071227034 + ], + [ + 7.000197185868577, + 50.89578627368597 + ], + [ + 7.00020947144433, + 50.895783519863045 + ], + [ + 7.000221798576174, + 50.895780758656564 + ], + [ + 7.0002749912624305, + 50.89576897453191 + ], + [ + 7.0003281852279855, + 50.89575719310323 + ], + [ + 7.000342325936936, + 50.89575409061727 + ], + [ + 7.0003563388214385, + 50.89575101741757 + ], + [ + 7.000422831872753, + 50.895736424824136 + ], + [ + 7.000456219579993, + 50.89572920198309 + ], + [ + 7.0004894723493525, + 50.89572200829881 + ], + [ + 7.001920963441559, + 50.895429971271696 + ], + [ + 7.003374934726329, + 50.895186085303415 + ], + [ + 7.004847146216192, + 50.894991197109405 + ], + [ + 7.005644974076356, + 50.89489883189206 + ], + [ + 7.008036799142889, + 50.89465111369548 + ], + [ + 7.010517556629073, + 50.89447467144217 + ], + [ + 7.0105536050729444, + 50.89447242686257 + ], + [ + 7.010589666264697, + 50.89447018338855 + ], + [ + 7.011638489788821, + 50.89441065954394 + ], + [ + 7.012871593370642, + 50.894354472026116 + ], + [ + 7.012907805425199, + 50.89435312258681 + ], + [ + 7.012943883632787, + 50.89435177715289 + ], + [ + 7.013016168749814, + 50.89434890227202 + ], + [ + 7.013568506560593, + 50.89432891183014 + ], + [ + 7.014121214768509, + 50.894312871541715 + ], + [ + 7.014814912075953, + 50.89429632029055 + ], + [ + 7.015049483802889, + 50.894291852599295 + ], + [ + 7.016851018276601, + 50.89426968922528 + ], + [ + 7.017372794546717, + 50.89427574698695 + ], + [ + 7.0178946710916, + 50.89427991452786 + ], + [ + 7.018681488302677, + 50.894287592415786 + ], + [ + 7.019309665029816, + 50.894293718402665 + ], + [ + 7.019451975666188, + 50.894295080495034 + ], + [ + 7.0237703065091495, + 50.894349401556035 + ], + [ + 7.023884416196304, + 50.89434368106155 + ], + [ + 7.023976747737602, + 50.8943390504894 + ], + [ + 7.026785547025254, + 50.894365779042666 + ], + [ + 7.028023967135323, + 50.894377524863394 + ], + [ + 7.031583685863577, + 50.894410642772684 + ], + [ + 7.030965543412002, + 50.89267420078628 + ], + [ + 7.030962667897312, + 50.89266624946314 + ], + [ + 7.030847743544065, + 50.89245984287692 + ], + [ + 7.030906919250497, + 50.89208566358462 + ], + [ + 7.030909420001759, + 50.89207026981041 + ], + [ + 7.030908376321262, + 50.892064840661995 + ], + [ + 7.030906837721171, + 50.89205948050891 + ], + [ + 7.03089843632514, + 50.89203652880626 + ], + [ + 7.030897154295919, + 50.89203344660171 + ], + [ + 7.030816381141118, + 50.89186694315678 + ], + [ + 7.0307701957051165, + 50.891771796908 + ], + [ + 7.030657618040611, + 50.891539966585604 + ], + [ + 7.030598683279625, + 50.89141867613055 + ], + [ + 7.03058797483756, + 50.891396654994395 + ], + [ + 7.030557593322688, + 50.89133408719939 + ], + [ + 7.030043554821591, + 50.89028578198781 + ], + [ + 7.029983152247168, + 50.89016261908592 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Rodenkirchen", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "208", + "Population_rel": 0.015909341568324693, + "Population_abs": 17310 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.937528969918115, + 50.9773804851251 + ], + [ + 6.937739813646048, + 50.977032525084326 + ], + [ + 6.9377912421783545, + 50.97694896146549 + ], + [ + 6.937807578437582, + 50.97692284795411 + ], + [ + 6.937832236752554, + 50.97688346635023 + ], + [ + 6.937863128919768, + 50.97683392847868 + ], + [ + 6.937902559789426, + 50.976763787439054 + ], + [ + 6.93793730781593, + 50.976707505783516 + ], + [ + 6.937959920072199, + 50.97667082751335 + ], + [ + 6.938044307571698, + 50.97653423233312 + ], + [ + 6.938112819428115, + 50.97644348025197 + ], + [ + 6.938152718695959, + 50.976395645575344 + ], + [ + 6.938229514444385, + 50.97632041719405 + ], + [ + 6.938419991286246, + 50.9761702940311 + ], + [ + 6.938507271478685, + 50.976113678745726 + ], + [ + 6.938591395616798, + 50.97607003421041 + ], + [ + 6.938698601759989, + 50.97602009045196 + ], + [ + 6.938814682590755, + 50.97596606540243 + ], + [ + 6.938833202056121, + 50.97595757304585 + ], + [ + 6.938938636015939, + 50.97591955226407 + ], + [ + 6.939043906010675, + 50.97588661355354 + ], + [ + 6.93932083427147, + 50.97581543736984 + ], + [ + 6.939666317047493, + 50.97572654015727 + ], + [ + 6.940145385777383, + 50.97560538344461 + ], + [ + 6.940171613129519, + 50.975598822898384 + ], + [ + 6.940679797039704, + 50.97543304523387 + ], + [ + 6.941011327017829, + 50.9754366818789 + ], + [ + 6.94113686358426, + 50.975440376691374 + ], + [ + 6.941369531992652, + 50.975449075596465 + ], + [ + 6.941482577806525, + 50.975454773973304 + ], + [ + 6.941642700695321, + 50.97546511725742 + ], + [ + 6.941726503920918, + 50.975470607497584 + ], + [ + 6.941886950219547, + 50.97548340064396 + ], + [ + 6.941952109144891, + 50.97550235129687 + ], + [ + 6.942237802631723, + 50.97552648992441 + ], + [ + 6.942330789092009, + 50.97554102647309 + ], + [ + 6.942787984789167, + 50.97564637194562 + ], + [ + 6.943176373758711, + 50.975735908598885 + ], + [ + 6.943249581897364, + 50.9757498405997 + ], + [ + 6.943499233475788, + 50.97579737792987 + ], + [ + 6.943873707717295, + 50.97585358823091 + ], + [ + 6.944097344917759, + 50.97587919725504 + ], + [ + 6.944163848655666, + 50.97588692457782 + ], + [ + 6.94625817697831, + 50.975969658486726 + ], + [ + 6.946351917763216, + 50.975973346055405 + ], + [ + 6.946451945770867, + 50.9759772466476 + ], + [ + 6.946512907185064, + 50.97597964260639 + ], + [ + 6.946698326455285, + 50.97590127884796 + ], + [ + 6.947070999092609, + 50.97574807766463 + ], + [ + 6.947071848782342, + 50.97584256093515 + ], + [ + 6.947049187310184, + 50.97589509331062 + ], + [ + 6.94704392674518, + 50.97591795012077 + ], + [ + 6.947133385372304, + 50.97593374557996 + ], + [ + 6.9471601037113135, + 50.9759397734274 + ], + [ + 6.9471051938702555, + 50.976082550346156 + ], + [ + 6.94737441358239, + 50.97612904823164 + ], + [ + 6.947078129866838, + 50.97682063589854 + ], + [ + 6.946963037491229, + 50.97709708249258 + ], + [ + 6.946812588667272, + 50.97707151759343 + ], + [ + 6.9467477645570765, + 50.97720730456201 + ], + [ + 6.946699868369695, + 50.97731949642274 + ], + [ + 6.946691838992544, + 50.977348982369406 + ], + [ + 6.946761392312066, + 50.97735916764164 + ], + [ + 6.946793122067137, + 50.977365479749345 + ], + [ + 6.94679102902026, + 50.977381308780835 + ], + [ + 6.946792119474678, + 50.97740341385086 + ], + [ + 6.946923778955815, + 50.977423127162034 + ], + [ + 6.947012981831311, + 50.97742618307869 + ], + [ + 6.947039705062584, + 50.977427081011434 + ], + [ + 6.9471939456146075, + 50.977432534841206 + ], + [ + 6.947242491536734, + 50.9774334880961 + ], + [ + 6.947447079964574, + 50.977437671775185 + ], + [ + 6.9476916641373485, + 50.97744260752003 + ], + [ + 6.947929770088651, + 50.9774440013973 + ], + [ + 6.948080421720239, + 50.97744458653572 + ], + [ + 6.948114326521066, + 50.97736980949979 + ], + [ + 6.94812137719233, + 50.97735422944984 + ], + [ + 6.948252099263753, + 50.97737873463233 + ], + [ + 6.948343454447603, + 50.977395789209396 + ], + [ + 6.948416816863548, + 50.9774095137952 + ], + [ + 6.948429411151278, + 50.97736774516432 + ], + [ + 6.948438755979453, + 50.977346010524606 + ], + [ + 6.948459397587492, + 50.97730075790502 + ], + [ + 6.948487246197067, + 50.97723938023893 + ], + [ + 6.948502457459812, + 50.97720630324547 + ], + [ + 6.948569368997634, + 50.97705946723847 + ], + [ + 6.948669319379444, + 50.97684246425734 + ], + [ + 6.948807066362384, + 50.976537503660516 + ], + [ + 6.9490908165985825, + 50.97658969760431 + ], + [ + 6.949129062192917, + 50.97650594433327 + ], + [ + 6.949329140966373, + 50.97606537234276 + ], + [ + 6.949375852435678, + 50.97596828606983 + ], + [ + 6.949523587866014, + 50.975651433159285 + ], + [ + 6.949460812519408, + 50.975638384427015 + ], + [ + 6.949535443298278, + 50.97546653695902 + ], + [ + 6.9495926865592725, + 50.97534255362601 + ], + [ + 6.949621886356357, + 50.975348098350985 + ], + [ + 6.949768454256854, + 50.97537620059754 + ], + [ + 6.949909759738252, + 50.97539816468412 + ], + [ + 6.949925707342392, + 50.97536337183938 + ], + [ + 6.949982090312272, + 50.97522438427186 + ], + [ + 6.950044644668766, + 50.97508040197965 + ], + [ + 6.9500952716685624, + 50.97495978821823 + ], + [ + 6.950024520010051, + 50.974947410989714 + ], + [ + 6.949953039531295, + 50.9749354103508 + ], + [ + 6.949932217374761, + 50.97492162524214 + ], + [ + 6.9498411773573565, + 50.974902784061136 + ], + [ + 6.949848606218382, + 50.97473303287977 + ], + [ + 6.949875122108049, + 50.97473365582096 + ], + [ + 6.949875961483031, + 50.974627894431144 + ], + [ + 6.949876076020051, + 50.97454644744717 + ], + [ + 6.949561800429546, + 50.974550243985576 + ], + [ + 6.94954326286195, + 50.9742909818367 + ], + [ + 6.949539938790888, + 50.97419628605926 + ], + [ + 6.9495083077246145, + 50.973848093312064 + ], + [ + 6.949503433211477, + 50.97380020154642 + ], + [ + 6.9498526361724515, + 50.973780929561336 + ], + [ + 6.949953746587256, + 50.97377480468646 + ], + [ + 6.950155878838676, + 50.97376569642739 + ], + [ + 6.950379611497278, + 50.97375443614021 + ], + [ + 6.950461145846911, + 50.97375039101335 + ], + [ + 6.9505440185349245, + 50.97357114451763 + ], + [ + 6.950583680918066, + 50.973438044558684 + ], + [ + 6.950544643025721, + 50.97330147943557 + ], + [ + 6.9504926965219935, + 50.973121308269185 + ], + [ + 6.950365343798822, + 50.972677920563434 + ], + [ + 6.950327864455457, + 50.97249631692126 + ], + [ + 6.950317366983811, + 50.97243645295778 + ], + [ + 6.950288694176324, + 50.9722742540625 + ], + [ + 6.9498099540231415, + 50.97221833175109 + ], + [ + 6.949689064938226, + 50.97193645998589 + ], + [ + 6.949742588981247, + 50.97185081446816 + ], + [ + 6.949726483130583, + 50.97166643807781 + ], + [ + 6.949640854869049, + 50.971452864101394 + ], + [ + 6.949438296597094, + 50.97094803596918 + ], + [ + 6.949760157160755, + 50.970932207268646 + ], + [ + 6.949684212892018, + 50.9707095838569 + ], + [ + 6.948408707462502, + 50.97074442837978 + ], + [ + 6.948511975144508, + 50.971192961556184 + ], + [ + 6.9475602446727756, + 50.97115230574326 + ], + [ + 6.947542046379597, + 50.97187158084075 + ], + [ + 6.94753984777165, + 50.971931587059494 + ], + [ + 6.947147279171097, + 50.971911319455636 + ], + [ + 6.946415389089314, + 50.971804716138394 + ], + [ + 6.94637183883857, + 50.971800470520115 + ], + [ + 6.94631114688998, + 50.97179428653436 + ], + [ + 6.9461972379296215, + 50.971770051403865 + ], + [ + 6.946129999153326, + 50.97175738190666 + ], + [ + 6.946097202531194, + 50.97175118932701 + ], + [ + 6.945935813171542, + 50.971720717107516 + ], + [ + 6.945802019516533, + 50.97169560745089 + ], + [ + 6.945662131592761, + 50.971642239124364 + ], + [ + 6.945573970392374, + 50.9716086046409 + ], + [ + 6.945260506963297, + 50.97148901599414 + ], + [ + 6.9451581680584535, + 50.97155339907279 + ], + [ + 6.945123572779494, + 50.97164465048558 + ], + [ + 6.94493095671381, + 50.97158048809995 + ], + [ + 6.944736407364943, + 50.97151573195289 + ], + [ + 6.944698530446564, + 50.97150230582954 + ], + [ + 6.944580045413579, + 50.97146018725605 + ], + [ + 6.944527919080762, + 50.97143329754089 + ], + [ + 6.944487414676238, + 50.97141231262546 + ], + [ + 6.944450167875402, + 50.97139300751382 + ], + [ + 6.944233831134675, + 50.97129111225413 + ], + [ + 6.9440131614188205, + 50.97113702247325 + ], + [ + 6.943777350322248, + 50.97095932417072 + ], + [ + 6.9436791954317405, + 50.970808828366366 + ], + [ + 6.943610252389888, + 50.9706599252914 + ], + [ + 6.943573334485002, + 50.970580188649535 + ], + [ + 6.94349446778625, + 50.97046108865794 + ], + [ + 6.943443546340973, + 50.9704001945456 + ], + [ + 6.943407132147412, + 50.97035646146619 + ], + [ + 6.943363181862285, + 50.970303661254185 + ], + [ + 6.943331192131464, + 50.97025844206921 + ], + [ + 6.94324570333469, + 50.97012869898005 + ], + [ + 6.9431630070760555, + 50.96998212196325 + ], + [ + 6.943133441844534, + 50.969924947776754 + ], + [ + 6.943106947539481, + 50.96987370778756 + ], + [ + 6.943093692503965, + 50.96984807326159 + ], + [ + 6.943080474157685, + 50.969822511330186 + ], + [ + 6.9430639755102845, + 50.96979781886497 + ], + [ + 6.943047490120073, + 50.969773149115134 + ], + [ + 6.943025273207138, + 50.969739900891234 + ], + [ + 6.943011829791221, + 50.96972401135332 + ], + [ + 6.942999557187048, + 50.96970934760128 + ], + [ + 6.942935173376157, + 50.96964956244832 + ], + [ + 6.942855152794169, + 50.9695998688549 + ], + [ + 6.94280817393389, + 50.96958004727925 + ], + [ + 6.9427570599061275, + 50.96956461462255 + ], + [ + 6.942702875240082, + 50.96955391341068 + ], + [ + 6.942678252177457, + 50.969551009880774 + ], + [ + 6.942645031792492, + 50.96954716700948 + ], + [ + 6.942550152381283, + 50.96954111524509 + ], + [ + 6.942481504419281, + 50.96953312700947 + ], + [ + 6.942347795000957, + 50.96949920454875 + ], + [ + 6.942319721591622, + 50.96949193123662 + ], + [ + 6.9422923827425995, + 50.96948963001284 + ], + [ + 6.94225688356378, + 50.96946670801625 + ], + [ + 6.942222884987717, + 50.969452180233404 + ], + [ + 6.942188865338198, + 50.969430106318384 + ], + [ + 6.942141693390211, + 50.96939497551555 + ], + [ + 6.942121210800113, + 50.96937471136775 + ], + [ + 6.94209474314179, + 50.969341008506284 + ], + [ + 6.94207861497353, + 50.96932048472995 + ], + [ + 6.942067870819192, + 50.96930795415013 + ], + [ + 6.942059771773061, + 50.9692930059036 + ], + [ + 6.942052485362043, + 50.969277203183566 + ], + [ + 6.942035822594495, + 50.96924070968074 + ], + [ + 6.942007389548268, + 50.96920039952943 + ], + [ + 6.941980412592109, + 50.969133533125486 + ], + [ + 6.941954771185753, + 50.96907640979381 + ], + [ + 6.941926706706137, + 50.969115754715645 + ], + [ + 6.941714455071632, + 50.969393065142384 + ], + [ + 6.941585053216145, + 50.96956238821179 + ], + [ + 6.941286158572417, + 50.970072961974964 + ], + [ + 6.941262704654365, + 50.97011701890805 + ], + [ + 6.940869854262981, + 50.970853710508756 + ], + [ + 6.940623810659958, + 50.9712539170218 + ], + [ + 6.9402852988902035, + 50.971728400908596 + ], + [ + 6.940076468920056, + 50.97200488465098 + ], + [ + 6.939970817585448, + 50.97213047016175 + ], + [ + 6.9399238074945675, + 50.97218634901768 + ], + [ + 6.939840198413267, + 50.972281369537 + ], + [ + 6.939725935393797, + 50.97241122421039 + ], + [ + 6.939705293544924, + 50.97243468351484 + ], + [ + 6.939563635741081, + 50.97256499000197 + ], + [ + 6.939366746211897, + 50.9727460994952 + ], + [ + 6.939005665538358, + 50.97307702262854 + ], + [ + 6.938437977894048, + 50.9735203541367 + ], + [ + 6.936554686617214, + 50.97481258279261 + ], + [ + 6.936342644663686, + 50.97496656147033 + ], + [ + 6.934246965077694, + 50.97641614944616 + ], + [ + 6.934147136738361, + 50.97648634587281 + ], + [ + 6.934095803983013, + 50.97651812904516 + ], + [ + 6.934069909607427, + 50.97659007054362 + ], + [ + 6.933624258637426, + 50.976906939177326 + ], + [ + 6.933234009517525, + 50.97718443450779 + ], + [ + 6.933287397187353, + 50.97720598410365 + ], + [ + 6.933431596531949, + 50.977264338801945 + ], + [ + 6.934125448873674, + 50.97740173023292 + ], + [ + 6.9342095429896995, + 50.977323220456135 + ], + [ + 6.934300593474561, + 50.97724833134759 + ], + [ + 6.934397644606436, + 50.97717651265588 + ], + [ + 6.934501118017437, + 50.977108471537434 + ], + [ + 6.934558281619123, + 50.97707628138008 + ], + [ + 6.934615023795626, + 50.97705146670371 + ], + [ + 6.9346559750928245, + 50.97703655001884 + ], + [ + 6.934681509337161, + 50.97702850166661 + ], + [ + 6.934708222943315, + 50.977020971522165 + ], + [ + 6.934735220513832, + 50.97701442581253 + ], + [ + 6.934770218671292, + 50.977006981023344 + ], + [ + 6.934805635466777, + 50.977000952947165 + ], + [ + 6.934841439610855, + 50.976996276275294 + ], + [ + 6.934878299325629, + 50.97699272449108 + ], + [ + 6.934914917686726, + 50.97699072704226 + ], + [ + 6.934951525969629, + 50.97698998403072 + ], + [ + 6.935005867916759, + 50.97699145229901 + ], + [ + 6.936543901188503, + 50.97734974508423 + ], + [ + 6.936810231997848, + 50.97741503569956 + ], + [ + 6.937401093172661, + 50.97759492241995 + ], + [ + 6.937491135268924, + 50.97744505742961 + ], + [ + 6.937528969918115, + 50.9773804851251 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Mauenheim", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "502", + "Population_rel": 0.005209367302672696, + "Population_abs": 5668 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.894024270694422, + 50.99503457375331 + ], + [ + 6.894244639884489, + 50.99486396864474 + ], + [ + 6.894272823198986, + 50.99484242141521 + ], + [ + 6.894315698153145, + 50.99480986359829 + ], + [ + 6.895208369784092, + 50.99411987598123 + ], + [ + 6.895342052997747, + 50.99401674347584 + ], + [ + 6.895498907618375, + 50.99389570359202 + ], + [ + 6.896144113110684, + 50.99340559196466 + ], + [ + 6.896173846234363, + 50.99338301273708 + ], + [ + 6.8966593241056575, + 50.99301421558981 + ], + [ + 6.898327293323522, + 50.9917469498194 + ], + [ + 6.899088437809278, + 50.991168325213415 + ], + [ + 6.8991152852173325, + 50.99114801642081 + ], + [ + 6.899262627216294, + 50.99103607748129 + ], + [ + 6.899466082682197, + 50.9908814326035 + ], + [ + 6.8995065657253365, + 50.99084519190366 + ], + [ + 6.89956045819459, + 50.990796866423594 + ], + [ + 6.899700956504689, + 50.990670817640705 + ], + [ + 6.899797549527913, + 50.990583735126165 + ], + [ + 6.89991325853781, + 50.99047945846408 + ], + [ + 6.900133736222312, + 50.99028505403086 + ], + [ + 6.900324933403687, + 50.990116480754715 + ], + [ + 6.900348985321669, + 50.99009522204283 + ], + [ + 6.900439345396813, + 50.99001547197587 + ], + [ + 6.900525469477359, + 50.989946374346246 + ], + [ + 6.901255363581768, + 50.98936123448622 + ], + [ + 6.901301023128876, + 50.98932440627632 + ], + [ + 6.901353683294553, + 50.9892818039493 + ], + [ + 6.901405612392136, + 50.98923698948543 + ], + [ + 6.90163113873827, + 50.989040448832675 + ], + [ + 6.901687826174727, + 50.98900180672706 + ], + [ + 6.901740912598544, + 50.98896543916962 + ], + [ + 6.901950116144909, + 50.98889524312217 + ], + [ + 6.901972644556775, + 50.98888741767608 + ], + [ + 6.902111441044553, + 50.98877092730616 + ], + [ + 6.902189294385545, + 50.988660047746194 + ], + [ + 6.902282755036066, + 50.98852698387075 + ], + [ + 6.902556497521493, + 50.988299598254194 + ], + [ + 6.902648290762823, + 50.98822787759155 + ], + [ + 6.902997969690617, + 50.98795474453253 + ], + [ + 6.903212997170886, + 50.98778712155097 + ], + [ + 6.903241634116794, + 50.9877646773562 + ], + [ + 6.903372861380306, + 50.9876632148846 + ], + [ + 6.903461199982134, + 50.98759382210856 + ], + [ + 6.903769849057913, + 50.987353341283985 + ], + [ + 6.903806597068383, + 50.98732471004282 + ], + [ + 6.903941435618666, + 50.98721979610233 + ], + [ + 6.903968973295668, + 50.98719741384357 + ], + [ + 6.903996010075586, + 50.98717488948012 + ], + [ + 6.904383500173868, + 50.98685889307427 + ], + [ + 6.904436055110418, + 50.98681277452249 + ], + [ + 6.904596497002025, + 50.98666924947713 + ], + [ + 6.904628963470012, + 50.98664023986209 + ], + [ + 6.904666057971305, + 50.98660708621081 + ], + [ + 6.904750437618008, + 50.98653166936231 + ], + [ + 6.904864342713658, + 50.98644074091162 + ], + [ + 6.9049251093503266, + 50.986392259313384 + ], + [ + 6.904998690326476, + 50.98633329600584 + ], + [ + 6.905022063898865, + 50.98631451005071 + ], + [ + 6.9050924547197505, + 50.986258290110996 + ], + [ + 6.905206067767526, + 50.98616745682221 + ], + [ + 6.905246714525898, + 50.9861348865512 + ], + [ + 6.905271732594402, + 50.98611406687671 + ], + [ + 6.905392212785064, + 50.98601424770796 + ], + [ + 6.905510953929365, + 50.985915951347344 + ], + [ + 6.905631349240831, + 50.985816253627284 + ], + [ + 6.9057895321076685, + 50.985685084352525 + ], + [ + 6.906366306472149, + 50.98520694024517 + ], + [ + 6.906456892790371, + 50.98513140411702 + ], + [ + 6.906636307713244, + 50.98498235791615 + ], + [ + 6.907052703771777, + 50.98461476737471 + ], + [ + 6.9075820670889945, + 50.98419229428825 + ], + [ + 6.907931377919365, + 50.98391954297214 + ], + [ + 6.908065174137987, + 50.98380644921284 + ], + [ + 6.9081629481700775, + 50.9837232573388 + ], + [ + 6.908184727225903, + 50.98370321184829 + ], + [ + 6.9082676167980015, + 50.983617240396846 + ], + [ + 6.908382183580888, + 50.98349555544268 + ], + [ + 6.908418323537023, + 50.98345702143518 + ], + [ + 6.908466078942209, + 50.98340621031913 + ], + [ + 6.9084979642092526, + 50.98337293967889 + ], + [ + 6.908521696407568, + 50.98334807517418 + ], + [ + 6.908552321636143, + 50.98331614540584 + ], + [ + 6.908681797917984, + 50.983196700426966 + ], + [ + 6.908716464495411, + 50.98316475215669 + ], + [ + 6.908623185830361, + 50.98306562875981 + ], + [ + 6.908843044145685, + 50.98287707802761 + ], + [ + 6.908856068764184, + 50.98287126296429 + ], + [ + 6.908874864230242, + 50.98288807342699 + ], + [ + 6.908897408571914, + 50.98290595652231 + ], + [ + 6.908910600828413, + 50.98291400654392 + ], + [ + 6.9090168992860175, + 50.9828720510285 + ], + [ + 6.909513380730303, + 50.98243047852693 + ], + [ + 6.910169818098559, + 50.98183818651625 + ], + [ + 6.910784959032147, + 50.98128315786427 + ], + [ + 6.911812559819802, + 50.98031086119529 + ], + [ + 6.912164196162855, + 50.97993586997411 + ], + [ + 6.912539261628308, + 50.97953597460066 + ], + [ + 6.912884487133232, + 50.97918323412498 + ], + [ + 6.913279273804213, + 50.97878030544095 + ], + [ + 6.913868515163839, + 50.97818644940019 + ], + [ + 6.9141380373776915, + 50.977909718028826 + ], + [ + 6.914902069092558, + 50.977125354061286 + ], + [ + 6.915166533406593, + 50.97680901771942 + ], + [ + 6.915333187330095, + 50.97660958754829 + ], + [ + 6.916239496422013, + 50.97551091448987 + ], + [ + 6.916259346855006, + 50.97548624267737 + ], + [ + 6.9164190133160055, + 50.97526355971031 + ], + [ + 6.916949579331704, + 50.97452155544541 + ], + [ + 6.917027039083566, + 50.97441334642974 + ], + [ + 6.917252524844527, + 50.97410764851225 + ], + [ + 6.917870594845805, + 50.9731402215914 + ], + [ + 6.917890623459378, + 50.97308248170107 + ], + [ + 6.917981871235089, + 50.97281941950674 + ], + [ + 6.9180741509923065, + 50.97255342028547 + ], + [ + 6.919112832340206, + 50.970710451433675 + ], + [ + 6.918881554983458, + 50.97057015213079 + ], + [ + 6.917875778547041, + 50.96995969459289 + ], + [ + 6.917279440882296, + 50.96957173161682 + ], + [ + 6.917020797519319, + 50.969759478409934 + ], + [ + 6.916885580292528, + 50.9698662729936 + ], + [ + 6.916725205583351, + 50.969769351207 + ], + [ + 6.916253545552795, + 50.96948009436215 + ], + [ + 6.916080402803319, + 50.96936929305532 + ], + [ + 6.916060917577891, + 50.96935665619409 + ], + [ + 6.91568689480832, + 50.96910941999104 + ], + [ + 6.915288091790368, + 50.96883954437865 + ], + [ + 6.914898091211084, + 50.968561058324056 + ], + [ + 6.914302904292816, + 50.96811392128653 + ], + [ + 6.913986748625078, + 50.968085117951276 + ], + [ + 6.913885976979539, + 50.96800005673538 + ], + [ + 6.913545640252639, + 50.96771309622418 + ], + [ + 6.913345340800581, + 50.967763197041236 + ], + [ + 6.912955421702324, + 50.96785675687435 + ], + [ + 6.912915765565509, + 50.9676137412027 + ], + [ + 6.912908417321211, + 50.967570060169535 + ], + [ + 6.912862558581932, + 50.967281108482496 + ], + [ + 6.91300372770012, + 50.96729474189314 + ], + [ + 6.913143742636352, + 50.967259645988 + ], + [ + 6.9132590819853945, + 50.966966254528124 + ], + [ + 6.912971021622772, + 50.96693237436229 + ], + [ + 6.9129959644017465, + 50.966839589770345 + ], + [ + 6.913141041027848, + 50.96685607104724 + ], + [ + 6.913187021495221, + 50.9666741293355 + ], + [ + 6.913213709904742, + 50.96658321872214 + ], + [ + 6.913226093693514, + 50.96653934534215 + ], + [ + 6.912990793706884, + 50.96634414144947 + ], + [ + 6.912934169764599, + 50.96629947348814 + ], + [ + 6.912922436237526, + 50.96628832821023 + ], + [ + 6.912886962177333, + 50.9662373559012 + ], + [ + 6.912782818139205, + 50.96617596078546 + ], + [ + 6.912604601854997, + 50.96607378111774 + ], + [ + 6.912592007694943, + 50.96606347302963 + ], + [ + 6.912028068337272, + 50.96556574118139 + ], + [ + 6.912004906783696, + 50.96554955008612 + ], + [ + 6.911773011703597, + 50.965364486570046 + ], + [ + 6.911630977326349, + 50.96522958644234 + ], + [ + 6.911493259133094, + 50.96510418163217 + ], + [ + 6.911208229728255, + 50.96512086663882 + ], + [ + 6.9109880896410845, + 50.96513464407426 + ], + [ + 6.910776196894722, + 50.965162997402096 + ], + [ + 6.910718269226102, + 50.9651725339398 + ], + [ + 6.910668426189649, + 50.965180437948796 + ], + [ + 6.910596048611736, + 50.96519297699576 + ], + [ + 6.910142791035877, + 50.964538875388556 + ], + [ + 6.909524308465186, + 50.96467761919653 + ], + [ + 6.909459607841343, + 50.964558588154574 + ], + [ + 6.9092294293952445, + 50.96463848563048 + ], + [ + 6.9091194992175256, + 50.96464275424342 + ], + [ + 6.908004320429937, + 50.964883800538516 + ], + [ + 6.907992897986084, + 50.96485638336643 + ], + [ + 6.907833635130469, + 50.96447364004171 + ], + [ + 6.9077819404533285, + 50.96435144773431 + ], + [ + 6.908796802240363, + 50.964119136825566 + ], + [ + 6.910128559828917, + 50.963816961802664 + ], + [ + 6.910297188594693, + 50.96377510913748 + ], + [ + 6.909870181360451, + 50.96336924776093 + ], + [ + 6.909424530015255, + 50.962948517852496 + ], + [ + 6.9087332495994, + 50.96229705713533 + ], + [ + 6.908674661015512, + 50.9622415997561 + ], + [ + 6.907798965994795, + 50.96140980592602 + ], + [ + 6.907592104283972, + 50.96142202234227 + ], + [ + 6.907329390348067, + 50.96144644830775 + ], + [ + 6.905952996054059, + 50.96154397589415 + ], + [ + 6.906667419664165, + 50.9622900208476 + ], + [ + 6.9068859474769475, + 50.96251808834153 + ], + [ + 6.906696712451801, + 50.962566213040496 + ], + [ + 6.906656326602781, + 50.962575605172965 + ], + [ + 6.906168823245725, + 50.96270137560256 + ], + [ + 6.905403091075414, + 50.96296189397924 + ], + [ + 6.90533038583671, + 50.96297827861412 + ], + [ + 6.905343593462009, + 50.9630059529391 + ], + [ + 6.905600046436225, + 50.963537385785216 + ], + [ + 6.905652703343934, + 50.96395380855512 + ], + [ + 6.905660919818865, + 50.96402308133887 + ], + [ + 6.905599397168673, + 50.964033802784805 + ], + [ + 6.905540183106741, + 50.96403923768838 + ], + [ + 6.905460045543405, + 50.96404591519094 + ], + [ + 6.904931633271392, + 50.96410327284247 + ], + [ + 6.904905924916237, + 50.96410595935727 + ], + [ + 6.904885817597929, + 50.96410795851728 + ], + [ + 6.904796366770651, + 50.96411720165828 + ], + [ + 6.904634801210611, + 50.96413387002797 + ], + [ + 6.904290771812671, + 50.964169682919454 + ], + [ + 6.904244109439464, + 50.964178494787824 + ], + [ + 6.90411997164033, + 50.96419267024731 + ], + [ + 6.903587829016866, + 50.9642888017708 + ], + [ + 6.903454692216535, + 50.964311902274844 + ], + [ + 6.903057467035306, + 50.964478573887256 + ], + [ + 6.903001853546771, + 50.96442210222035 + ], + [ + 6.90296467591155, + 50.96438427481799 + ], + [ + 6.901940051006793, + 50.96489354499364 + ], + [ + 6.901605029410951, + 50.965072125615784 + ], + [ + 6.900946413542366, + 50.96543507279747 + ], + [ + 6.900912186610749, + 50.965453945221626 + ], + [ + 6.900731330379249, + 50.965553658191055 + ], + [ + 6.900734945873908, + 50.96557632191142 + ], + [ + 6.900746094562263, + 50.96560656074526 + ], + [ + 6.900733904134719, + 50.96571591929188 + ], + [ + 6.900734221043553, + 50.96582055162986 + ], + [ + 6.900734389881524, + 50.96585875491878 + ], + [ + 6.900819125410142, + 50.966346036957404 + ], + [ + 6.900774266351825, + 50.96635986693446 + ], + [ + 6.900062593765511, + 50.9665790310867 + ], + [ + 6.90001745091096, + 50.96659295370329 + ], + [ + 6.89991552321293, + 50.96662429762712 + ], + [ + 6.899508843046632, + 50.966757231379724 + ], + [ + 6.899382012998995, + 50.9667941760704 + ], + [ + 6.899296789756214, + 50.96681883450766 + ], + [ + 6.899151988414276, + 50.96686380815026 + ], + [ + 6.899198246371552, + 50.96692031836944 + ], + [ + 6.899429771059748, + 50.96720290847462 + ], + [ + 6.899628054665172, + 50.96744480937672 + ], + [ + 6.899569909762488, + 50.96746368555138 + ], + [ + 6.899614604085282, + 50.967522265717264 + ], + [ + 6.899553065969748, + 50.967542381345936 + ], + [ + 6.899481240772752, + 50.967572768962555 + ], + [ + 6.899560019255166, + 50.967708154166964 + ], + [ + 6.89948059784241, + 50.96774097285994 + ], + [ + 6.899373831424303, + 50.967761431321705 + ], + [ + 6.899286764041584, + 50.9677798868367 + ], + [ + 6.899195089493005, + 50.96779795000541 + ], + [ + 6.899091467706846, + 50.967588041028016 + ], + [ + 6.8990227143183445, + 50.967609498834385 + ], + [ + 6.898951760063952, + 50.96762206170433 + ], + [ + 6.8988791697619165, + 50.967631267385194 + ], + [ + 6.898812319032781, + 50.96765203260879 + ], + [ + 6.898696693748578, + 50.96768731019638 + ], + [ + 6.898665190718704, + 50.967649091601906 + ], + [ + 6.89862990805438, + 50.96760603466436 + ], + [ + 6.898580922768269, + 50.9675463641848 + ], + [ + 6.898541755096511, + 50.96749869183146 + ], + [ + 6.898314551673782, + 50.96722243831958 + ], + [ + 6.8980329519925565, + 50.96731515597347 + ], + [ + 6.8982559615738035, + 50.96758833601307 + ], + [ + 6.897968910196765, + 50.96767338530746 + ], + [ + 6.897796913015941, + 50.96743378506731 + ], + [ + 6.897710908100194, + 50.9674670659265 + ], + [ + 6.897923157205675, + 50.967759391319895 + ], + [ + 6.897797436033668, + 50.967806985839395 + ], + [ + 6.897734405114114, + 50.967831840350705 + ], + [ + 6.89767014211104, + 50.96785902811937 + ], + [ + 6.897609513451031, + 50.96788386106294 + ], + [ + 6.897464065528498, + 50.967943071664685 + ], + [ + 6.897400474041593, + 50.96802186250233 + ], + [ + 6.897022319040571, + 50.96812185612042 + ], + [ + 6.896633341540382, + 50.96774888912041 + ], + [ + 6.896371353159999, + 50.96796553268814 + ], + [ + 6.896348080625396, + 50.96794205688405 + ], + [ + 6.8962535014527875, + 50.967831088935796 + ], + [ + 6.89623214532821, + 50.967780999008454 + ], + [ + 6.896182913568488, + 50.967831202115725 + ], + [ + 6.895957119604092, + 50.968064447432056 + ], + [ + 6.895768674401045, + 50.96825889253451 + ], + [ + 6.89575141246071, + 50.968276703045824 + ], + [ + 6.895424682166331, + 50.96861378017867 + ], + [ + 6.895019607004049, + 50.96881918501052 + ], + [ + 6.894998809767208, + 50.96882996058233 + ], + [ + 6.894981695034618, + 50.968838015362586 + ], + [ + 6.894950868971651, + 50.96885048892416 + ], + [ + 6.894603174864661, + 50.96899318417273 + ], + [ + 6.894381677388943, + 50.96908380742572 + ], + [ + 6.894278220173018, + 50.96912523511412 + ], + [ + 6.893046609274857, + 50.96963113117504 + ], + [ + 6.892643681573937, + 50.96980833145858 + ], + [ + 6.892330324752344, + 50.96991860280383 + ], + [ + 6.891039673921544, + 50.97046884791813 + ], + [ + 6.891040199493447, + 50.97052707519256 + ], + [ + 6.8906157034827675, + 50.970724105134494 + ], + [ + 6.889933619426637, + 50.9710159889295 + ], + [ + 6.889652493579139, + 50.97113632767455 + ], + [ + 6.889219318082118, + 50.9712923998241 + ], + [ + 6.889258284831014, + 50.97133079098114 + ], + [ + 6.888942926879539, + 50.971426452577056 + ], + [ + 6.888823314662183, + 50.971462733033924 + ], + [ + 6.888505533055136, + 50.971559091623476 + ], + [ + 6.8872186592530715, + 50.97200486148819 + ], + [ + 6.8872140496872705, + 50.97206411110861 + ], + [ + 6.886929847494101, + 50.97215966552129 + ], + [ + 6.886779326887927, + 50.97221033943968 + ], + [ + 6.886288178711669, + 50.97239196604186 + ], + [ + 6.8856688380535465, + 50.97260836341327 + ], + [ + 6.884745402547058, + 50.97293097814512 + ], + [ + 6.884663227164552, + 50.97295973831003 + ], + [ + 6.884538621767633, + 50.97300329167886 + ], + [ + 6.884345565084668, + 50.973071004059825 + ], + [ + 6.884183992806651, + 50.973132275972944 + ], + [ + 6.883680046453854, + 50.9733233380202 + ], + [ + 6.883210929979305, + 50.973496784506246 + ], + [ + 6.883063039907656, + 50.97355148022191 + ], + [ + 6.882815894884062, + 50.973642792226 + ], + [ + 6.882408831500639, + 50.97378529324231 + ], + [ + 6.882118366443771, + 50.97387477305211 + ], + [ + 6.880833624832886, + 50.97422552727695 + ], + [ + 6.877622550975029, + 50.97508750915382 + ], + [ + 6.875586899123387, + 50.975632351264785 + ], + [ + 6.874393032800677, + 50.97595205797955 + ], + [ + 6.873457456213415, + 50.97620217064345 + ], + [ + 6.872357637650827, + 50.97627680610878 + ], + [ + 6.871380218896696, + 50.976243722202426 + ], + [ + 6.87139443221451, + 50.976316851922086 + ], + [ + 6.871397790700591, + 50.97633505727516 + ], + [ + 6.871403223045937, + 50.97636093258796 + ], + [ + 6.871406989003757, + 50.976379137274265 + ], + [ + 6.871587115091702, + 50.9770274231813 + ], + [ + 6.871591846785024, + 50.97704572730628 + ], + [ + 6.871648640139765, + 50.97744794879685 + ], + [ + 6.871651732931217, + 50.97746598650739 + ], + [ + 6.8717754408659735, + 50.977718159680386 + ], + [ + 6.8717845427872195, + 50.97773635457792 + ], + [ + 6.871918535544268, + 50.977946213860214 + ], + [ + 6.871930016003967, + 50.977964019491736 + ], + [ + 6.871932314937739, + 50.978140329372884 + ], + [ + 6.872016831834563, + 50.978509031348786 + ], + [ + 6.872020924266547, + 50.97852727073681 + ], + [ + 6.872087008212192, + 50.978949413417034 + ], + [ + 6.872090261233075, + 50.97896750439554 + ], + [ + 6.8721061047720555, + 50.97899900974688 + ], + [ + 6.8721156170278865, + 50.97901711855476 + ], + [ + 6.872145151096044, + 50.97905134938255 + ], + [ + 6.8722149109493795, + 50.97913216368056 + ], + [ + 6.8722293274515245, + 50.97914907932763 + ], + [ + 6.872248661961213, + 50.97921653358572 + ], + [ + 6.872286463842383, + 50.97934866159031 + ], + [ + 6.872415992755003, + 50.97977872701284 + ], + [ + 6.8727198812853425, + 50.98078909000177 + ], + [ + 6.872782349110637, + 50.98095366443451 + ], + [ + 6.872862384556248, + 50.98111334334003 + ], + [ + 6.872929282560204, + 50.98146090548568 + ], + [ + 6.8730601367840025, + 50.98187621819807 + ], + [ + 6.873149026124644, + 50.982158534022005 + ], + [ + 6.873274077092374, + 50.982425117157995 + ], + [ + 6.873387223125445, + 50.98262388407649 + ], + [ + 6.873497141927614, + 50.98280309532816 + ], + [ + 6.873534972195707, + 50.98286543409289 + ], + [ + 6.873530704651133, + 50.98307051050298 + ], + [ + 6.873480195805971, + 50.983111869681224 + ], + [ + 6.87339619700982, + 50.98317264544174 + ], + [ + 6.872773423781122, + 50.9833307489274 + ], + [ + 6.872234470706082, + 50.98352390989407 + ], + [ + 6.8721133071506655, + 50.98356381733546 + ], + [ + 6.871989472838987, + 50.98360457536179 + ], + [ + 6.871673476907941, + 50.98371903024539 + ], + [ + 6.871496950863938, + 50.9837761593273 + ], + [ + 6.871307262250724, + 50.98383985021461 + ], + [ + 6.871229952655162, + 50.983866567206924 + ], + [ + 6.8712476137729785, + 50.98388175593617 + ], + [ + 6.871411674414033, + 50.98402149300495 + ], + [ + 6.871658473038771, + 50.98433342055924 + ], + [ + 6.871759432041416, + 50.984423680554826 + ], + [ + 6.871829074545466, + 50.984500954670594 + ], + [ + 6.871888211295947, + 50.98456761885588 + ], + [ + 6.8718365744458305, + 50.98474932131245 + ], + [ + 6.871755350087463, + 50.984997491052255 + ], + [ + 6.871616287122901, + 50.98530550989412 + ], + [ + 6.871087098719249, + 50.98630294653861 + ], + [ + 6.870891438839447, + 50.986639937806046 + ], + [ + 6.8708053427570555, + 50.98678819580387 + ], + [ + 6.87072319652993, + 50.986929966578785 + ], + [ + 6.870642156896452, + 50.98706980851712 + ], + [ + 6.870496184326318, + 50.98732133584683 + ], + [ + 6.870197871600764, + 50.98776600836395 + ], + [ + 6.870166831351791, + 50.98781208499992 + ], + [ + 6.869990716155367, + 50.98799803493052 + ], + [ + 6.869943637655878, + 50.98804765931939 + ], + [ + 6.869829193240993, + 50.988134895487825 + ], + [ + 6.869642292062798, + 50.988277328588644 + ], + [ + 6.869450889279395, + 50.98842285047874 + ], + [ + 6.8693241380773475, + 50.98852222630503 + ], + [ + 6.8691734618622045, + 50.98864096439489 + ], + [ + 6.8807657007601115, + 50.99199084750963 + ], + [ + 6.880858366834444, + 50.99192267798057 + ], + [ + 6.881213074210831, + 50.99143637072762 + ], + [ + 6.882181679114231, + 50.99097430032096 + ], + [ + 6.882367863927046, + 50.990885340204805 + ], + [ + 6.883746081458918, + 50.99071643275749 + ], + [ + 6.883803124951026, + 50.99065289291509 + ], + [ + 6.883826077258556, + 50.99062647139186 + ], + [ + 6.884028567953455, + 50.99039398183602 + ], + [ + 6.884047375512029, + 50.990367602987135 + ], + [ + 6.884110801848422, + 50.99027584553182 + ], + [ + 6.88414292349075, + 50.99023906106213 + ], + [ + 6.884187008129983, + 50.99019127988315 + ], + [ + 6.884514068932362, + 50.98983820032874 + ], + [ + 6.884528030104059, + 50.98981585096277 + ], + [ + 6.884533062675573, + 50.98978985565865 + ], + [ + 6.884531812282523, + 50.98975606044807 + ], + [ + 6.884531001380976, + 50.98974296429905 + ], + [ + 6.884582373283816, + 50.98975931115523 + ], + [ + 6.884674082998621, + 50.989788503308134 + ], + [ + 6.884747407717544, + 50.98981189055438 + ], + [ + 6.884780294931627, + 50.98982249453581 + ], + [ + 6.884878059044989, + 50.989854052731516 + ], + [ + 6.885039791483705, + 50.989905649143026 + ], + [ + 6.885184496472377, + 50.989943054162225 + ], + [ + 6.8853445157656985, + 50.989984514606896 + ], + [ + 6.8856529346982525, + 50.9900648536891 + ], + [ + 6.885697747496411, + 50.990080490399826 + ], + [ + 6.885779611660839, + 50.9901090555265 + ], + [ + 6.885816820078352, + 50.990122039854576 + ], + [ + 6.88592284059183, + 50.990157894573834 + ], + [ + 6.886010216520129, + 50.990180920216964 + ], + [ + 6.886055277221721, + 50.9901926121068 + ], + [ + 6.886342934817465, + 50.990266928121486 + ], + [ + 6.886401992279044, + 50.990282163138964 + ], + [ + 6.886669968117358, + 50.9903507798068 + ], + [ + 6.886836388487726, + 50.99039346295949 + ], + [ + 6.887031100573783, + 50.99046380730734 + ], + [ + 6.887116461282901, + 50.99049464272433 + ], + [ + 6.8893311493825555, + 50.99119090078573 + ], + [ + 6.88967214021621, + 50.99129808416373 + ], + [ + 6.890328761806496, + 50.99150444128252 + ], + [ + 6.890881746575593, + 50.99171524018513 + ], + [ + 6.8916648739116155, + 50.99210213008791 + ], + [ + 6.89163132065856, + 50.992127560387516 + ], + [ + 6.890794064440824, + 50.99275842274089 + ], + [ + 6.890397744055374, + 50.99324614725998 + ], + [ + 6.890225396878014, + 50.99345821155386 + ], + [ + 6.889947186062148, + 50.99380056591305 + ], + [ + 6.88975704152643, + 50.99403453066433 + ], + [ + 6.889163632170132, + 50.994764570218386 + ], + [ + 6.889132171339291, + 50.99480288883113 + ], + [ + 6.889106608370249, + 50.99483136603111 + ], + [ + 6.889075159353893, + 50.99481880617459 + ], + [ + 6.887466349820168, + 50.99427852019912 + ], + [ + 6.887380664675587, + 50.99424974510087 + ], + [ + 6.886512704572848, + 50.993957912356606 + ], + [ + 6.886289399999272, + 50.99388595071344 + ], + [ + 6.8855474834827755, + 50.9948017919555 + ], + [ + 6.885396648303469, + 50.99498777185125 + ], + [ + 6.885288242297642, + 50.995122031299296 + ], + [ + 6.885260917318298, + 50.99515550958106 + ], + [ + 6.890230701515095, + 50.996634398927185 + ], + [ + 6.890431932859983, + 50.99669426405487 + ], + [ + 6.891146477645545, + 50.996907215865825 + ], + [ + 6.891172589473024, + 50.99691500381203 + ], + [ + 6.891268354873542, + 50.996943567756645 + ], + [ + 6.891417156844853, + 50.99698789027082 + ], + [ + 6.8914731379518805, + 50.99700455826533 + ], + [ + 6.892044542374199, + 50.99657124972006 + ], + [ + 6.892176587187538, + 50.99647011751337 + ], + [ + 6.892805757448001, + 50.99598663288909 + ], + [ + 6.893662075392184, + 50.995317864825545 + ], + [ + 6.893948106636018, + 50.99509415818523 + ], + [ + 6.894024270694422, + 50.99503457375331 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Ossendorf", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "406", + "Population_rel": 0.01095272232638506, + "Population_abs": 11917 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.885673485738373, + 50.97066515476204 + ], + [ + 6.884507925443711, + 50.96953507801977 + ], + [ + 6.884486720566619, + 50.96951451800365 + ], + [ + 6.8832974133866305, + 50.96840517339113 + ], + [ + 6.88255497875217, + 50.96771054151503 + ], + [ + 6.881826069115671, + 50.967028539956225 + ], + [ + 6.881895973512292, + 50.96690117403653 + ], + [ + 6.8818359581362865, + 50.9668441859993 + ], + [ + 6.8819077625409495, + 50.96683968851114 + ], + [ + 6.881852401163206, + 50.96664513002327 + ], + [ + 6.881950697021564, + 50.96663378044194 + ], + [ + 6.88194552312722, + 50.966616110864216 + ], + [ + 6.882221234145761, + 50.9665842725506 + ], + [ + 6.882215065778557, + 50.9665705215414 + ], + [ + 6.882561285082082, + 50.9665296543977 + ], + [ + 6.882606456468491, + 50.96652445852627 + ], + [ + 6.882501283179068, + 50.96617305588477 + ], + [ + 6.882380744500389, + 50.966067001023475 + ], + [ + 6.883744646189508, + 50.96539917387566 + ], + [ + 6.883875545582609, + 50.96533926152561 + ], + [ + 6.885543487775345, + 50.96457583230408 + ], + [ + 6.886094740108093, + 50.9643801931295 + ], + [ + 6.889457897796353, + 50.96287052468109 + ], + [ + 6.889642865543046, + 50.962787489769845 + ], + [ + 6.889499260018687, + 50.96263861767955 + ], + [ + 6.888794627956657, + 50.9607352907602 + ], + [ + 6.888659657118093, + 50.960364044119174 + ], + [ + 6.888653954949584, + 50.96034454043476 + ], + [ + 6.8886483871529185, + 50.960301908876914 + ], + [ + 6.888646063966122, + 50.960283011323064 + ], + [ + 6.888636293572193, + 50.96020341381682 + ], + [ + 6.888050205949862, + 50.95546525002944 + ], + [ + 6.888047134220946, + 50.95544054238517 + ], + [ + 6.888038929424758, + 50.95537572835153 + ], + [ + 6.8880332690684885, + 50.955329068515255 + ], + [ + 6.888031030585088, + 50.95529656840286 + ], + [ + 6.888049290663418, + 50.95496211882841 + ], + [ + 6.8879879366359855, + 50.9523151136181 + ], + [ + 6.888055638396725, + 50.9519320814713 + ], + [ + 6.888329471208582, + 50.95038686708297 + ], + [ + 6.88838064266547, + 50.95024948101698 + ], + [ + 6.88857065670261, + 50.94962462931786 + ], + [ + 6.888706311804068, + 50.94941037091849 + ], + [ + 6.888901370264878, + 50.94917705209878 + ], + [ + 6.8891236537890785, + 50.948968605715095 + ], + [ + 6.889249356671656, + 50.94890577219113 + ], + [ + 6.889227162191523, + 50.94890211783265 + ], + [ + 6.8887304152896185, + 50.948827675435076 + ], + [ + 6.888531576006395, + 50.94881811545746 + ], + [ + 6.888437570092909, + 50.948813589305075 + ], + [ + 6.888189975870305, + 50.948781450154634 + ], + [ + 6.8878662978708265, + 50.94873920724796 + ], + [ + 6.887830319702806, + 50.94873452887298 + ], + [ + 6.887565974409715, + 50.94870031893054 + ], + [ + 6.88748267225995, + 50.94868948854318 + ], + [ + 6.887459636429777, + 50.948686528235676 + ], + [ + 6.886876521366019, + 50.94861604528209 + ], + [ + 6.8868300393801745, + 50.9486101970399 + ], + [ + 6.886789071668569, + 50.94860516270715 + ], + [ + 6.8862689835831405, + 50.94854095215914 + ], + [ + 6.886206947384721, + 50.948533283195204 + ], + [ + 6.886151779209072, + 50.94852646436095 + ], + [ + 6.886099002810759, + 50.94851936593097 + ], + [ + 6.882590175777211, + 50.94804738001945 + ], + [ + 6.8800674396133115, + 50.94770794885778 + ], + [ + 6.878793350669891, + 50.94752308148006 + ], + [ + 6.876461919684137, + 50.947280818697216 + ], + [ + 6.87624081522907, + 50.947291622886326 + ], + [ + 6.876218892841431, + 50.947292750323626 + ], + [ + 6.876194587835009, + 50.947293738176555 + ], + [ + 6.87589596828097, + 50.94726388141673 + ], + [ + 6.875429294418797, + 50.94722338913654 + ], + [ + 6.875423884862108, + 50.94730479657148 + ], + [ + 6.874892130985348, + 50.94780137189775 + ], + [ + 6.874878707237267, + 50.947814000435045 + ], + [ + 6.874862232278953, + 50.947829535102144 + ], + [ + 6.874315188243962, + 50.9483253887939 + ], + [ + 6.873998716495481, + 50.94866510040147 + ], + [ + 6.873742825430937, + 50.94897430206956 + ], + [ + 6.873618475669287, + 50.949125145803855 + ], + [ + 6.873580384549272, + 50.94918487088526 + ], + [ + 6.873537973889582, + 50.949306003739885 + ], + [ + 6.873177336700713, + 50.949870558096556 + ], + [ + 6.8729831386401, + 50.95015685315943 + ], + [ + 6.87297558731888, + 50.950232239641245 + ], + [ + 6.872786165604733, + 50.95052359769956 + ], + [ + 6.872404062142519, + 50.95111134850338 + ], + [ + 6.872261701814983, + 50.95134137090547 + ], + [ + 6.8724730993769505, + 50.951379250935375 + ], + [ + 6.8724320344995276, + 50.95143533380195 + ], + [ + 6.87228216377606, + 50.951640017684426 + ], + [ + 6.872246019243934, + 50.951698282131716 + ], + [ + 6.8721089301650204, + 50.95191935979841 + ], + [ + 6.872055039596275, + 50.95200626991816 + ], + [ + 6.871985961094996, + 50.95211766503456 + ], + [ + 6.871958500367424, + 50.95216192596609 + ], + [ + 6.871927651635713, + 50.95222249933547 + ], + [ + 6.871907423192297, + 50.95226204080629 + ], + [ + 6.871891326438263, + 50.95229364227087 + ], + [ + 6.871859141066597, + 50.95235703960878 + ], + [ + 6.871844660106364, + 50.952384251843085 + ], + [ + 6.871826202855135, + 50.952419242321504 + ], + [ + 6.871778437962865, + 50.95251478655268 + ], + [ + 6.871751517038005, + 50.952568663606534 + ], + [ + 6.871688790987812, + 50.952691946401636 + ], + [ + 6.871588775509361, + 50.95288878006565 + ], + [ + 6.87157440599263, + 50.952917067264224 + ], + [ + 6.871559040281125, + 50.952948863686444 + ], + [ + 6.871520762165784, + 50.953028348671324 + ], + [ + 6.8714975321958045, + 50.95307662953261 + ], + [ + 6.871456458047576, + 50.953162019245354 + ], + [ + 6.871407334040363, + 50.95327823338968 + ], + [ + 6.87140019273841, + 50.95329513123705 + ], + [ + 6.871389191045977, + 50.95332122505994 + ], + [ + 6.871378491307382, + 50.953346568904 + ], + [ + 6.871358536912733, + 50.953393863476435 + ], + [ + 6.871349975582056, + 50.95341422774037 + ], + [ + 6.871342904293139, + 50.953431088187195 + ], + [ + 6.871333284185796, + 50.95345408722952 + ], + [ + 6.87132577310761, + 50.95347119238355 + ], + [ + 6.871319608537803, + 50.953485068114304 + ], + [ + 6.871311904647866, + 50.95350573761154 + ], + [ + 6.871304730075829, + 50.95352417189505 + ], + [ + 6.871200585004635, + 50.95379209015353 + ], + [ + 6.871166856299574, + 50.9538788350678 + ], + [ + 6.871072556111789, + 50.95412126788198 + ], + [ + 6.871000287147779, + 50.95430707149636 + ], + [ + 6.870950822024468, + 50.95443427689977 + ], + [ + 6.870417983017786, + 50.95580489555107 + ], + [ + 6.870370881278053, + 50.95592596503794 + ], + [ + 6.870284787408744, + 50.95614485619677 + ], + [ + 6.87007653868659, + 50.95616578659907 + ], + [ + 6.869969916874678, + 50.95617428411079 + ], + [ + 6.869917203453656, + 50.95618105166562 + ], + [ + 6.869490477725433, + 50.95623574542887 + ], + [ + 6.869222890859021, + 50.956248583435844 + ], + [ + 6.869212246314703, + 50.956273270638874 + ], + [ + 6.869164243634673, + 50.95636346981596 + ], + [ + 6.868788289955722, + 50.95707397378266 + ], + [ + 6.868776186114069, + 50.95710844659326 + ], + [ + 6.8686700354937615, + 50.957436574858676 + ], + [ + 6.868644537862781, + 50.95751060990504 + ], + [ + 6.86863828008637, + 50.95752711449264 + ], + [ + 6.868630931775199, + 50.95754896489978 + ], + [ + 6.868621181027829, + 50.95758068086722 + ], + [ + 6.868464961354401, + 50.9580469604057 + ], + [ + 6.868456931889977, + 50.95807102614076 + ], + [ + 6.86836818832327, + 50.95833634501621 + ], + [ + 6.868359200585437, + 50.958363237101764 + ], + [ + 6.868352176019531, + 50.95838423089152 + ], + [ + 6.868240860677958, + 50.95871115909831 + ], + [ + 6.868227342302005, + 50.958726304328884 + ], + [ + 6.86821186204115, + 50.958743647806074 + ], + [ + 6.868117300585862, + 50.95885543784109 + ], + [ + 6.86797372180033, + 50.95913517233762 + ], + [ + 6.867503623729879, + 50.96003527263949 + ], + [ + 6.867135878729885, + 50.960611339087095 + ], + [ + 6.866765247120099, + 50.961269856666185 + ], + [ + 6.86661607441108, + 50.96166748020969 + ], + [ + 6.866222300114006, + 50.962361847144905 + ], + [ + 6.866169824847764, + 50.96255819591542 + ], + [ + 6.866139364392983, + 50.96273057910326 + ], + [ + 6.866103026481013, + 50.962996210940815 + ], + [ + 6.866096819409685, + 50.96320588605578 + ], + [ + 6.866133042830454, + 50.96355376975472 + ], + [ + 6.866139248442231, + 50.96360279977646 + ], + [ + 6.866185142525757, + 50.96380907587597 + ], + [ + 6.866228695253813, + 50.964010852710395 + ], + [ + 6.866240366083607, + 50.96404079424444 + ], + [ + 6.866264786689403, + 50.964128568039044 + ], + [ + 6.866277969499653, + 50.964173564109224 + ], + [ + 6.866296001152219, + 50.96424262906754 + ], + [ + 6.866436047802521, + 50.96460518479164 + ], + [ + 6.866549191808347, + 50.96490061966978 + ], + [ + 6.866626653818176, + 50.964932074523574 + ], + [ + 6.8666162574030505, + 50.96496003527324 + ], + [ + 6.8666853719242456, + 50.964977846800195 + ], + [ + 6.867065492747027, + 50.9655600753047 + ], + [ + 6.867177055100135, + 50.965710624957026 + ], + [ + 6.8672554764144635, + 50.965778539930646 + ], + [ + 6.867600520332343, + 50.9661439049813 + ], + [ + 6.867742237956632, + 50.96630061246075 + ], + [ + 6.868153785188633, + 50.96682710787027 + ], + [ + 6.868209062886992, + 50.96691335263625 + ], + [ + 6.868505625975789, + 50.967426228811114 + ], + [ + 6.869030550136499, + 50.96866391289762 + ], + [ + 6.86905313516222, + 50.96875992952166 + ], + [ + 6.869129210188096, + 50.9690833357477 + ], + [ + 6.869465259306358, + 50.96980338673562 + ], + [ + 6.869573875014998, + 50.96995530474388 + ], + [ + 6.869648656216671, + 50.970132554309714 + ], + [ + 6.869670823429801, + 50.97012519618918 + ], + [ + 6.869719723764736, + 50.97024825515408 + ], + [ + 6.869790109611419, + 50.97047983258327 + ], + [ + 6.869748912086139, + 50.97049982611618 + ], + [ + 6.869769054824049, + 50.97055684753287 + ], + [ + 6.86981527987715, + 50.97069916198739 + ], + [ + 6.8698631791397915, + 50.9708396659262 + ], + [ + 6.869986329044759, + 50.97124335292931 + ], + [ + 6.870006225852917, + 50.97130999500159 + ], + [ + 6.870192746504404, + 50.97196562608404 + ], + [ + 6.87067277203604, + 50.97354540783637 + ], + [ + 6.870774882374519, + 50.973896843598055 + ], + [ + 6.870971024593231, + 50.97456327920112 + ], + [ + 6.870993357235045, + 50.97463817322962 + ], + [ + 6.871111187719638, + 50.975159747130455 + ], + [ + 6.8712692613268365, + 50.9756555812276 + ], + [ + 6.871294353998654, + 50.97572577945981 + ], + [ + 6.871304599612364, + 50.97586988983091 + ], + [ + 6.87132706751071, + 50.9760356624805 + ], + [ + 6.871380218896696, + 50.976243722202426 + ], + [ + 6.872357637650827, + 50.97627680610878 + ], + [ + 6.873457456213415, + 50.97620217064345 + ], + [ + 6.874393032800677, + 50.97595205797955 + ], + [ + 6.875586899123387, + 50.975632351264785 + ], + [ + 6.877622550975029, + 50.97508750915382 + ], + [ + 6.880833624832886, + 50.97422552727695 + ], + [ + 6.882118366443771, + 50.97387477305211 + ], + [ + 6.882408831500639, + 50.97378529324231 + ], + [ + 6.882815894884062, + 50.973642792226 + ], + [ + 6.883063039907656, + 50.97355148022191 + ], + [ + 6.883210929979305, + 50.973496784506246 + ], + [ + 6.883680046453854, + 50.9733233380202 + ], + [ + 6.884183992806651, + 50.973132275972944 + ], + [ + 6.884345565084668, + 50.973071004059825 + ], + [ + 6.884538621767633, + 50.97300329167886 + ], + [ + 6.884663227164552, + 50.97295973831003 + ], + [ + 6.884745402547058, + 50.97293097814512 + ], + [ + 6.8856688380535465, + 50.97260836341327 + ], + [ + 6.886288178711669, + 50.97239196604186 + ], + [ + 6.886779326887927, + 50.97221033943968 + ], + [ + 6.886929847494101, + 50.97215966552129 + ], + [ + 6.8872140496872705, + 50.97206411110861 + ], + [ + 6.8872186592530715, + 50.97200486148819 + ], + [ + 6.886936252054565, + 50.97188940336053 + ], + [ + 6.885673485738373, + 50.97066515476204 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Vogelsang", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "404", + "Population_rel": 0.007579684570420205, + "Population_abs": 8247 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.046570700641649, + 50.890968755449855 + ], + [ + 7.047746410474925, + 50.890140789398316 + ], + [ + 7.048239336837071, + 50.889731116488015 + ], + [ + 7.048941706436115, + 50.889092124411235 + ], + [ + 7.049513734049734, + 50.88845313335732 + ], + [ + 7.049529673077643, + 50.88843421523108 + ], + [ + 7.049539261328861, + 50.88842283473031 + ], + [ + 7.049547924986264, + 50.888412552199405 + ], + [ + 7.049581969728262, + 50.888371793210375 + ], + [ + 7.049588685744094, + 50.88836368068971 + ], + [ + 7.049588715738672, + 50.88836364341734 + ], + [ + 7.049602755691489, + 50.88834668475354 + ], + [ + 7.049602811155131, + 50.888346616428784 + ], + [ + 7.049610609803027, + 50.88833719632501 + ], + [ + 7.049630979543251, + 50.88831221401399 + ], + [ + 7.049638962920333, + 50.8883024219571 + ], + [ + 7.049663942788816, + 50.88827177868791 + ], + [ + 7.049672847861446, + 50.888260855331886 + ], + [ + 7.049706302168088, + 50.88821911241781 + ], + [ + 7.050296744058358, + 50.887426860910026 + ], + [ + 7.05074780455581, + 50.88659900421024 + ], + [ + 7.0508135480205585, + 50.886463930025585 + ], + [ + 7.051144396282886, + 50.88568803517751 + ], + [ + 7.051334585172468, + 50.88500213287023 + ], + [ + 7.05133938994101, + 50.88498205184765 + ], + [ + 7.051342873888505, + 50.8849674898091 + ], + [ + 7.05134291193437, + 50.88496732765782 + ], + [ + 7.051345104017514, + 50.88495816996719 + ], + [ + 7.051355339331782, + 50.884914118686716 + ], + [ + 7.051543899690316, + 50.88383449247784 + ], + [ + 7.05150138806233, + 50.882748319459076 + ], + [ + 7.051389256736297, + 50.881933806085264 + ], + [ + 7.051187207405933, + 50.88122770693275 + ], + [ + 7.0511801534457135, + 50.88120599785358 + ], + [ + 7.05117787191132, + 50.8811989743119 + ], + [ + 7.051172093018381, + 50.881181187112006 + ], + [ + 7.051144990657393, + 50.88110088624846 + ], + [ + 7.050886125242262, + 50.88042064878489 + ], + [ + 7.050529269775269, + 50.87974255098259 + ], + [ + 7.050516785543005, + 50.879720779015344 + ], + [ + 7.050510127965578, + 50.87970916928888 + ], + [ + 7.05050250042454, + 50.87969586692331 + ], + [ + 7.05047796391993, + 50.879653657674325 + ], + [ + 7.050470669034992, + 50.87964120717539 + ], + [ + 7.050464495531645, + 50.87963067039271 + ], + [ + 7.0504532871775805, + 50.87961153961164 + ], + [ + 7.050264004729113, + 50.879301399921175 + ], + [ + 7.0500244376794265, + 50.87895386632836 + ], + [ + 7.049993927524603, + 50.878911441123776 + ], + [ + 7.049973399089446, + 50.87888312931956 + ], + [ + 7.049952727048489, + 50.87885481870909 + ], + [ + 7.049750737636803, + 50.87858587386617 + ], + [ + 7.049457059753616, + 50.87823280286504 + ], + [ + 7.048755767308153, + 50.87747626443193 + ], + [ + 7.047993961332542, + 50.87681429485703 + ], + [ + 7.047973049677627, + 50.876797277815584 + ], + [ + 7.047960788084042, + 50.87678730008499 + ], + [ + 7.047949820171275, + 50.876778374678764 + ], + [ + 7.047889186841859, + 50.87672938676817 + ], + [ + 7.0478843787669705, + 50.87672552086201 + ], + [ + 7.047884347108956, + 50.87672549604923 + ], + [ + 7.047866326450254, + 50.87671100692987 + ], + [ + 7.047854025707592, + 50.87670111667148 + ], + [ + 7.0477861842867835, + 50.87664742939722 + ], + [ + 7.047703751049793, + 50.87658299684301 + ], + [ + 7.04763377446465, + 50.87652914874046 + ], + [ + 7.0476107822051794, + 50.87651164983042 + ], + [ + 7.047610637520711, + 50.87651154038394 + ], + [ + 7.047587661798848, + 50.87649405433712 + ], + [ + 7.046178324696538, + 50.87551058118347 + ], + [ + 7.044533212821597, + 50.87468651741445 + ], + [ + 7.04441966908338, + 50.87463467580217 + ], + [ + 7.043421251816856, + 50.8742069939714 + ], + [ + 7.042428489808136, + 50.87385997793488 + ], + [ + 7.04241288851357, + 50.873854812798335 + ], + [ + 7.042412724431485, + 50.87385475968051 + ], + [ + 7.042397285764398, + 50.873849648534694 + ], + [ + 7.042268337154809, + 50.87380756180097 + ], + [ + 7.0421913495786725, + 50.873782900688546 + ], + [ + 7.042172175144871, + 50.87377677888887 + ], + [ + 7.042172061520985, + 50.87377674280612 + ], + [ + 7.042171834273223, + 50.8737766706406 + ], + [ + 7.0421530006784945, + 50.87377065798489 + ], + [ + 7.042106070037706, + 50.8737558852274 + ], + [ + 7.042076881821588, + 50.87374670659004 + ], + [ + 7.042038397990073, + 50.87373473409514 + ], + [ + 7.042000055408697, + 50.8737228511971 + ], + [ + 7.041965579533861, + 50.873712281506194 + ], + [ + 7.041931245831147, + 50.87370171149266 + ], + [ + 7.041865445968255, + 50.87368171319797 + ], + [ + 7.041830118310431, + 50.87367111927929 + ], + [ + 7.041799364182874, + 50.873661897204784 + ], + [ + 7.040104273775856, + 50.87311985789452 + ], + [ + 7.038328205820695, + 50.8725889435433 + ], + [ + 7.03784558859664, + 50.872448329023996 + ], + [ + 7.037671285893843, + 50.87239801053638 + ], + [ + 7.036634039200776, + 50.872104198667856 + ], + [ + 7.036423304140784, + 50.87204449363729 + ], + [ + 7.036184679637609, + 50.87197649605353 + ], + [ + 7.0352448524305045, + 50.87170562921438 + ], + [ + 7.03424935558805, + 50.87140962721899 + ], + [ + 7.032600625817769, + 50.8709069823291 + ], + [ + 7.031194581917575, + 50.87046239692956 + ], + [ + 7.028909659489205, + 50.869697346582484 + ], + [ + 7.026647426300296, + 50.86868789672068 + ], + [ + 7.025079333874415, + 50.870058841575535 + ], + [ + 7.025036133866566, + 50.87009660646404 + ], + [ + 7.024963463974701, + 50.870151451758 + ], + [ + 7.024923634466445, + 50.87018146705235 + ], + [ + 7.024854056092654, + 50.87023475652106 + ], + [ + 7.024830562695155, + 50.87025177349164 + ], + [ + 7.0246725800193195, + 50.87036157442167 + ], + [ + 7.023172385371007, + 50.87147083059747 + ], + [ + 7.022458425972705, + 50.87199335720961 + ], + [ + 7.022116228534621, + 50.87224869074093 + ], + [ + 7.021932018537537, + 50.87236159506219 + ], + [ + 7.021767737931568, + 50.87242443221222 + ], + [ + 7.021639954761452, + 50.87246708263367 + ], + [ + 7.0212011623849975, + 50.872561000196015 + ], + [ + 7.019919229376804, + 50.87274859059567 + ], + [ + 7.018695023759233, + 50.874410654132596 + ], + [ + 7.018518302660551, + 50.87472440089088 + ], + [ + 7.018467294246745, + 50.87479595353452 + ], + [ + 7.018440552171164, + 50.87483358268144 + ], + [ + 7.018449579989105, + 50.87483709966957 + ], + [ + 7.018511707427413, + 50.87486496428704 + ], + [ + 7.017766219928189, + 50.87592090160271 + ], + [ + 7.017521987452102, + 50.87626669960969 + ], + [ + 7.017548005883874, + 50.87627402370271 + ], + [ + 7.01736427822521, + 50.87653416273456 + ], + [ + 7.017219279297859, + 50.87673948862038 + ], + [ + 7.016309012412293, + 50.87802851090191 + ], + [ + 7.016298675060719, + 50.87804316411503 + ], + [ + 7.016291645012456, + 50.87805311404221 + ], + [ + 7.016311453602185, + 50.878058726545575 + ], + [ + 7.016561572731204, + 50.87812959887998 + ], + [ + 7.016833648452119, + 50.87820687417205 + ], + [ + 7.0168998130023015, + 50.878113256356976 + ], + [ + 7.016980726572167, + 50.87799883381143 + ], + [ + 7.01698444362009, + 50.87799988000077 + ], + [ + 7.017252227829376, + 50.87807584294281 + ], + [ + 7.017262951905057, + 50.878078895981595 + ], + [ + 7.017073558264219, + 50.87834681591166 + ], + [ + 7.017354198669269, + 50.87842572219066 + ], + [ + 7.01733683166208, + 50.878450325489496 + ], + [ + 7.017333799955083, + 50.878454666539845 + ], + [ + 7.017608592572833, + 50.87853254557872 + ], + [ + 7.017524537104725, + 50.87865090480872 + ], + [ + 7.017793239273175, + 50.87872741989844 + ], + [ + 7.01805123960561, + 50.878362697587455 + ], + [ + 7.018311677953926, + 50.87843628305608 + ], + [ + 7.018135539776624, + 50.87868607168067 + ], + [ + 7.018069088131539, + 50.8787795926669 + ], + [ + 7.018319407490323, + 50.87885048797082 + ], + [ + 7.01832304184242, + 50.87884524336201 + ], + [ + 7.018559562363914, + 50.878913025792926 + ], + [ + 7.0185849645311285, + 50.87887721220544 + ], + [ + 7.018585025351092, + 50.87887748754848 + ], + [ + 7.0187678895883305, + 50.87892928755408 + ], + [ + 7.018806777503506, + 50.87894027538002 + ], + [ + 7.018662469455647, + 50.87914469735638 + ], + [ + 7.018434486102881, + 50.87946725163875 + ], + [ + 7.018463085384825, + 50.87951464615364 + ], + [ + 7.018552043019217, + 50.879495441381216 + ], + [ + 7.018960485159257, + 50.87940746226509 + ], + [ + 7.01954797206186, + 50.879280881253685 + ], + [ + 7.020095602221022, + 50.87916279199021 + ], + [ + 7.020462144736038, + 50.87908374882479 + ], + [ + 7.020606963402087, + 50.87905254628397 + ], + [ + 7.020804957362569, + 50.879009822402715 + ], + [ + 7.021235028722758, + 50.87891715131907 + ], + [ + 7.021223417597826, + 50.878957975035064 + ], + [ + 7.02122540210963, + 50.87896425036916 + ], + [ + 7.021229123828235, + 50.87897851105728 + ], + [ + 7.021249432097995, + 50.879056002256114 + ], + [ + 7.021255339001176, + 50.8790661988366 + ], + [ + 7.0213437149784514, + 50.87922184177823 + ], + [ + 7.0214914916109175, + 50.87948169090977 + ], + [ + 7.0221660658815495, + 50.880665805127634 + ], + [ + 7.022185425101502, + 50.880699795151145 + ], + [ + 7.02235264873591, + 50.88083496914413 + ], + [ + 7.022379410800392, + 50.88085666959227 + ], + [ + 7.0224288711947045, + 50.88089605873027 + ], + [ + 7.022543119320962, + 50.88098701972807 + ], + [ + 7.022545724410505, + 50.88098915402739 + ], + [ + 7.022552664658268, + 50.88099466700267 + ], + [ + 7.022946039480668, + 50.881314747513976 + ], + [ + 7.022947126839734, + 50.88131562574141 + ], + [ + 7.02334500856952, + 50.881636936019945 + ], + [ + 7.0240635400422695, + 50.88221710137272 + ], + [ + 7.024062944859097, + 50.88222888302508 + ], + [ + 7.024060590054024, + 50.882270524773496 + ], + [ + 7.024102762342234, + 50.88230791006812 + ], + [ + 7.0241755609408365, + 50.88230987841706 + ], + [ + 7.025271999354416, + 50.883195774712654 + ], + [ + 7.027098823514445, + 50.88467204118254 + ], + [ + 7.027205486054603, + 50.88475973847954 + ], + [ + 7.028765657573265, + 50.88602186101085 + ], + [ + 7.028949415513558, + 50.88617045339391 + ], + [ + 7.029648431042511, + 50.88673574477602 + ], + [ + 7.029982244753866, + 50.88700562707556 + ], + [ + 7.03016876030973, + 50.88715644051318 + ], + [ + 7.030566827431259, + 50.88747834270372 + ], + [ + 7.030610249447742, + 50.88751400635881 + ], + [ + 7.030650486790545, + 50.88754700176837 + ], + [ + 7.029037620372217, + 50.88794751858946 + ], + [ + 7.028840303941817, + 50.88799654384999 + ], + [ + 7.028328776411891, + 50.88812358031125 + ], + [ + 7.028334366281668, + 50.8881327944253 + ], + [ + 7.028580110169273, + 50.88853964520292 + ], + [ + 7.028994600925242, + 50.88922583795563 + ], + [ + 7.029291453971951, + 50.889695078382275 + ], + [ + 7.029573614980038, + 50.890141157430655 + ], + [ + 7.029951620542606, + 50.89009395191912 + ], + [ + 7.029966454372596, + 50.890128519796114 + ], + [ + 7.029983149405313, + 50.89016261903798 + ], + [ + 7.030043553400653, + 50.89028578196383 + ], + [ + 7.030557593322688, + 50.89133408719939 + ], + [ + 7.0305879719956295, + 50.89139665494643 + ], + [ + 7.030598684738512, + 50.89141867525579 + ], + [ + 7.030657619461587, + 50.891539966609606 + ], + [ + 7.030770197164011, + 50.89177179603324 + ], + [ + 7.03081638117903, + 50.891866942258034 + ], + [ + 7.030897236012111, + 50.892033430892425 + ], + [ + 7.030898875124558, + 50.89203755430252 + ], + [ + 7.030907332678919, + 50.89205941061481 + ], + [ + 7.030909420001759, + 50.89207026981041 + ], + [ + 7.030906917829517, + 50.892085663560636 + ], + [ + 7.030846489281307, + 50.89245782150344 + ], + [ + 7.030848266048753, + 50.8924610415663 + ], + [ + 7.030962667935222, + 50.89266624856441 + ], + [ + 7.0309655375200775, + 50.89267417190687 + ], + [ + 7.030965544302276, + 50.892674213392546 + ], + [ + 7.031583685863577, + 50.894410642772684 + ], + [ + 7.0332131451544955, + 50.89439738926389 + ], + [ + 7.034906724107759, + 50.89428870605152 + ], + [ + 7.035063217615211, + 50.89427590152555 + ], + [ + 7.035266217024488, + 50.89425791869988 + ], + [ + 7.035435152542343, + 50.89424212586862 + ], + [ + 7.0372663722290305, + 50.89404040439401 + ], + [ + 7.039231555125096, + 50.893702079603706 + ], + [ + 7.0401275102265215, + 50.893520418646496 + ], + [ + 7.041604843909168, + 50.89316293994455 + ], + [ + 7.043000602327923, + 50.89269236623043 + ], + [ + 7.04346952924191, + 50.89251575484339 + ], + [ + 7.04456138244366, + 50.89206460022149 + ], + [ + 7.045574504668071, + 50.89154501291148 + ], + [ + 7.045936969944672, + 50.89134363598891 + ], + [ + 7.046570700641649, + 50.890968755449855 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Wei\u00df", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "209", + "Population_rel": 0.005429028344546156, + "Population_abs": 5907 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.919290323751912, + 50.97035505719264 + ], + [ + 6.919949007289498, + 50.96903402086667 + ], + [ + 6.920280019802339, + 50.968480369853204 + ], + [ + 6.9203933113305505, + 50.96833483952983 + ], + [ + 6.920848553685455, + 50.96774969533831 + ], + [ + 6.920988343527791, + 50.96757001477711 + ], + [ + 6.921233220374137, + 50.967261638878455 + ], + [ + 6.9218581645029325, + 50.966376836539034 + ], + [ + 6.922117144171287, + 50.9660766171374 + ], + [ + 6.922297809818547, + 50.96592659722032 + ], + [ + 6.922353689443026, + 50.96588013054702 + ], + [ + 6.9223828155068405, + 50.96585571898938 + ], + [ + 6.922579439349867, + 50.96566341328486 + ], + [ + 6.922553442774586, + 50.965651752593196 + ], + [ + 6.9225714173428585, + 50.96563929495719 + ], + [ + 6.922798361655065, + 50.96542544505716 + ], + [ + 6.923273060328622, + 50.96497789069854 + ], + [ + 6.9236112846556725, + 50.96466913038182 + ], + [ + 6.924694853198562, + 50.963679643156155 + ], + [ + 6.924764311311705, + 50.9636361238208 + ], + [ + 6.924810778937735, + 50.963596269101316 + ], + [ + 6.924814538444333, + 50.96359253875102 + ], + [ + 6.924836946161492, + 50.963552128675765 + ], + [ + 6.925677317005819, + 50.96278344632919 + ], + [ + 6.925976223475135, + 50.962524881857966 + ], + [ + 6.926014148039003, + 50.962492129284335 + ], + [ + 6.926744326134426, + 50.96185313002867 + ], + [ + 6.927266560312833, + 50.96138037215843 + ], + [ + 6.927328629196964, + 50.96130922347849 + ], + [ + 6.927381797172238, + 50.961242456814055 + ], + [ + 6.927662602728778, + 50.96088982646793 + ], + [ + 6.927952001493618, + 50.960533798116394 + ], + [ + 6.928011741511426, + 50.9604602414851 + ], + [ + 6.928409925236047, + 50.959970627965696 + ], + [ + 6.928413241450374, + 50.959966509198935 + ], + [ + 6.928438100292697, + 50.9599725273109 + ], + [ + 6.929081595276473, + 50.960333789093376 + ], + [ + 6.930150875749747, + 50.96093411585749 + ], + [ + 6.930195213327356, + 50.960958932326264 + ], + [ + 6.9303637249922065, + 50.96108622602396 + ], + [ + 6.930711594435208, + 50.96134917573322 + ], + [ + 6.931043889316507, + 50.96162696150962 + ], + [ + 6.931107517741275, + 50.96168014943714 + ], + [ + 6.9316656998576445, + 50.962209387644656 + ], + [ + 6.93217886970393, + 50.962793552139345 + ], + [ + 6.932182770181609, + 50.96279256535113 + ], + [ + 6.932592376879087, + 50.962623763371674 + ], + [ + 6.932624364233275, + 50.96261326114441 + ], + [ + 6.932721141722427, + 50.962576890630935 + ], + [ + 6.93280340565808, + 50.9625337138138 + ], + [ + 6.933920850652596, + 50.9618148200941 + ], + [ + 6.933945099075504, + 50.96181961206103 + ], + [ + 6.933990603187374, + 50.961840315974676 + ], + [ + 6.934562813356172, + 50.9614641191501 + ], + [ + 6.934433415047876, + 50.96138560064143 + ], + [ + 6.934152431283681, + 50.961215255563474 + ], + [ + 6.93412159847222, + 50.9611967143852 + ], + [ + 6.934758243209874, + 50.96077749284342 + ], + [ + 6.93498360451325, + 50.96062915161035 + ], + [ + 6.935070558151253, + 50.9606283655237 + ], + [ + 6.935066062125789, + 50.960610062842726 + ], + [ + 6.935051332202204, + 50.96054995332625 + ], + [ + 6.9355408731892, + 50.96048094750457 + ], + [ + 6.935582459565382, + 50.960475040936394 + ], + [ + 6.937087662203937, + 50.95948322724898 + ], + [ + 6.937116734709206, + 50.959464160605016 + ], + [ + 6.937098581050529, + 50.959451036331366 + ], + [ + 6.936772006036836, + 50.95929464711356 + ], + [ + 6.936172840263228, + 50.959007661846236 + ], + [ + 6.936160421992008, + 50.959020076769995 + ], + [ + 6.93614214814257, + 50.959038561502815 + ], + [ + 6.934806134196747, + 50.95839736651987 + ], + [ + 6.934829797773455, + 50.95836373649148 + ], + [ + 6.934925693238667, + 50.958227230874684 + ], + [ + 6.935482204612936, + 50.958411096902125 + ], + [ + 6.936226049801445, + 50.95866277417329 + ], + [ + 6.936239049461278, + 50.95868575998408 + ], + [ + 6.93625764980276, + 50.958705116876445 + ], + [ + 6.9362843346632665, + 50.958720323943496 + ], + [ + 6.936288474319436, + 50.95872196382952 + ], + [ + 6.936293023236422, + 50.958723462552314 + ], + [ + 6.936314659997855, + 50.95873056873712 + ], + [ + 6.936343679639207, + 50.958736632626675 + ], + [ + 6.936371103619548, + 50.9587371857065 + ], + [ + 6.936399237319273, + 50.958734416436194 + ], + [ + 6.936404494354449, + 50.958733625266845 + ], + [ + 6.936409687787724, + 50.95873272684665 + ], + [ + 6.9364280033991035, + 50.95872958797167 + ], + [ + 6.936444915909683, + 50.95872163781317 + ], + [ + 6.936448060434374, + 50.958719993569716 + ], + [ + 6.936451100718562, + 50.95871825934488 + ], + [ + 6.936470741462296, + 50.95870575079662 + ], + [ + 6.936565828972409, + 50.95861158841597 + ], + [ + 6.936284133594113, + 50.95851865140115 + ], + [ + 6.935690078939138, + 50.958322415545425 + ], + [ + 6.93539491120063, + 50.958221870458445 + ], + [ + 6.935415564578527, + 50.95819705763406 + ], + [ + 6.935598994298484, + 50.95797570972539 + ], + [ + 6.935632344253233, + 50.957935439830734 + ], + [ + 6.935653031613773, + 50.95790956540181 + ], + [ + 6.93572517098546, + 50.95793321290239 + ], + [ + 6.935950340519032, + 50.958007681611974 + ], + [ + 6.936732381107498, + 50.958266052264385 + ], + [ + 6.936864919458422, + 50.95830984488938 + ], + [ + 6.936991295670194, + 50.95835152916385 + ], + [ + 6.937285238954802, + 50.95805593889389 + ], + [ + 6.937186377253851, + 50.95802347221707 + ], + [ + 6.937027631294229, + 50.95797161984248 + ], + [ + 6.936814439502004, + 50.95790186716489 + ], + [ + 6.936632767127134, + 50.95784237721383 + ], + [ + 6.936661938151599, + 50.95780663618467 + ], + [ + 6.93687195814983, + 50.95754902569109 + ], + [ + 6.937706064601705, + 50.95781982551175 + ], + [ + 6.93782039699805, + 50.95769512466829 + ], + [ + 6.9379074103428575, + 50.9575639000921 + ], + [ + 6.937989926809316, + 50.95748386318534 + ], + [ + 6.938173133160208, + 50.95754882114041 + ], + [ + 6.938304083746164, + 50.95740789535688 + ], + [ + 6.938524004575898, + 50.957479660017576 + ], + [ + 6.9385880447385135, + 50.95750044931928 + ], + [ + 6.938688609212153, + 50.95753263099279 + ], + [ + 6.938980708282227, + 50.9571745755394 + ], + [ + 6.939026177909095, + 50.95712135356797 + ], + [ + 6.9391486689562845, + 50.95716108903977 + ], + [ + 6.939827466828113, + 50.9573813455757 + ], + [ + 6.940005362414191, + 50.95743928353137 + ], + [ + 6.940028458291492, + 50.95744475812301 + ], + [ + 6.940238452227797, + 50.95731484094821 + ], + [ + 6.940281658793515, + 50.9572906715924 + ], + [ + 6.9401216240406525, + 50.95711864672382 + ], + [ + 6.939957083311973, + 50.956941894141096 + ], + [ + 6.939889158426384, + 50.95691196773065 + ], + [ + 6.93984588992068, + 50.95686961707786 + ], + [ + 6.9396580483120704, + 50.95670186126932 + ], + [ + 6.939581507041617, + 50.9566329007802 + ], + [ + 6.9395522098620726, + 50.95661282050664 + ], + [ + 6.939509739780884, + 50.9565817898751 + ], + [ + 6.939161816004675, + 50.95633602453743 + ], + [ + 6.939283563519086, + 50.95627743502082 + ], + [ + 6.939343219632551, + 50.95631666020281 + ], + [ + 6.9394700462083625, + 50.95639981552295 + ], + [ + 6.93962321600494, + 50.95632809980497 + ], + [ + 6.939775082288193, + 50.95623369210359 + ], + [ + 6.93964317352335, + 50.95614950577868 + ], + [ + 6.9397634240764114, + 50.95602027390917 + ], + [ + 6.939845223338792, + 50.955969255821984 + ], + [ + 6.940088180620104, + 50.956138933558314 + ], + [ + 6.941105504026457, + 50.956034419362 + ], + [ + 6.941131661735376, + 50.95603307739974 + ], + [ + 6.9410779665245785, + 50.955078282517455 + ], + [ + 6.941160083911405, + 50.954810549092805 + ], + [ + 6.9411931995416944, + 50.95470267996441 + ], + [ + 6.941319103816224, + 50.95451010329756 + ], + [ + 6.941710605889606, + 50.95397520736425 + ], + [ + 6.941834758717033, + 50.95383167824158 + ], + [ + 6.9419106763927125, + 50.95374451252708 + ], + [ + 6.94168447436279, + 50.953729424632606 + ], + [ + 6.941091282712705, + 50.953682000600395 + ], + [ + 6.940582691895776, + 50.953707632012026 + ], + [ + 6.940397893684084, + 50.95369078788678 + ], + [ + 6.939521782306375, + 50.953609346945214 + ], + [ + 6.939494416256124, + 50.95360378608123 + ], + [ + 6.939263985453638, + 50.95355689603178 + ], + [ + 6.93913326509659, + 50.95350689465032 + ], + [ + 6.939066212916073, + 50.953481407151926 + ], + [ + 6.9389532996918195, + 50.9534280675403 + ], + [ + 6.938909703062181, + 50.95340644763383 + ], + [ + 6.938709044069894, + 50.953272175170525 + ], + [ + 6.938577823486376, + 50.95318360713506 + ], + [ + 6.938305480537966, + 50.953011044460766 + ], + [ + 6.937780400477613, + 50.95263857255049 + ], + [ + 6.937775924013862, + 50.95263538523123 + ], + [ + 6.9377716547655135, + 50.95263230949729 + ], + [ + 6.937738316823773, + 50.95260824686855 + ], + [ + 6.9377184839462664, + 50.95259393460288 + ], + [ + 6.93769566605459, + 50.95257767461691 + ], + [ + 6.93758797010443, + 50.95249971542793 + ], + [ + 6.9374446414002895, + 50.95239596205077 + ], + [ + 6.937222758985164, + 50.95223614833094 + ], + [ + 6.935040398368885, + 50.95055719711598 + ], + [ + 6.9350350021093465, + 50.95055305536822 + ], + [ + 6.9350093412880325, + 50.95054180805183 + ], + [ + 6.934867532025084, + 50.95045250610117 + ], + [ + 6.9343968318032045, + 50.95007926529204 + ], + [ + 6.933764906405489, + 50.94951440139991 + ], + [ + 6.933637292890937, + 50.94939541605346 + ], + [ + 6.9332966925127595, + 50.94907788467446 + ], + [ + 6.933263566823915, + 50.94904859999495 + ], + [ + 6.933247740650379, + 50.949057452106956 + ], + [ + 6.933057284422988, + 50.94913388118215 + ], + [ + 6.93301072264178, + 50.94915488471036 + ], + [ + 6.93286096499444, + 50.949222107603575 + ], + [ + 6.93284513362753, + 50.94920614302816 + ], + [ + 6.932783408455103, + 50.949143891449474 + ], + [ + 6.93275116588975, + 50.949111427669486 + ], + [ + 6.93246076724508, + 50.94922018143268 + ], + [ + 6.932276860410049, + 50.949288800811736 + ], + [ + 6.932092956441469, + 50.94935759982989 + ], + [ + 6.9319757499318335, + 50.949240177520615 + ], + [ + 6.9317547738442755, + 50.949320618299886 + ], + [ + 6.931695020397216, + 50.94925997138417 + ], + [ + 6.931679572045285, + 50.94924305289805 + ], + [ + 6.931540425231597, + 50.94929830699905 + ], + [ + 6.9315685549353905, + 50.94933465820963 + ], + [ + 6.9315710227744125, + 50.94933730923144 + ], + [ + 6.931736747235015, + 50.94950553398555 + ], + [ + 6.931432584328586, + 50.94962410090807 + ], + [ + 6.931269928002478, + 50.94968814416706 + ], + [ + 6.931140513895728, + 50.949557033807885 + ], + [ + 6.931099948312179, + 50.949513938920205 + ], + [ + 6.931069559897461, + 50.94948155070044 + ], + [ + 6.930645247787307, + 50.94964746105597 + ], + [ + 6.930835737148119, + 50.9498439762107 + ], + [ + 6.930675470457102, + 50.94990656083883 + ], + [ + 6.930616933800504, + 50.94984715899411 + ], + [ + 6.930568859136338, + 50.94979839874212 + ], + [ + 6.930452180432809, + 50.94983471948967 + ], + [ + 6.930433680763077, + 50.94984187886736 + ], + [ + 6.9303482890418024, + 50.94976309408266 + ], + [ + 6.930219701446146, + 50.94981631055316 + ], + [ + 6.930211939637265, + 50.94981956539824 + ], + [ + 6.930191313327133, + 50.94983260944076 + ], + [ + 6.930091316669948, + 50.949866718123076 + ], + [ + 6.930020473963878, + 50.94989465586917 + ], + [ + 6.929958188013189, + 50.94991942299182 + ], + [ + 6.929950204219738, + 50.9499227062612 + ], + [ + 6.929942997070949, + 50.94992533326418 + ], + [ + 6.929899047159533, + 50.949942234839796 + ], + [ + 6.929569068400973, + 50.95007206257482 + ], + [ + 6.928833500175637, + 50.950361701042894 + ], + [ + 6.9288272591923805, + 50.950364210211475 + ], + [ + 6.928617942577799, + 50.95045074467876 + ], + [ + 6.928597385561403, + 50.950456898634165 + ], + [ + 6.9284545133797355, + 50.950514308052284 + ], + [ + 6.928529518909964, + 50.950593266092255 + ], + [ + 6.92848829988226, + 50.950610044715134 + ], + [ + 6.928412387487513, + 50.95065159536842 + ], + [ + 6.928424531868976, + 50.95066646533649 + ], + [ + 6.928381917031375, + 50.950684693235786 + ], + [ + 6.928473340938567, + 50.95077340860573 + ], + [ + 6.928395278459372, + 50.95080522309964 + ], + [ + 6.928315236556374, + 50.950724638566854 + ], + [ + 6.928283323452725, + 50.950727295627075 + ], + [ + 6.928163983745293, + 50.95062493848151 + ], + [ + 6.928106942365621, + 50.95064759601971 + ], + [ + 6.927921979522504, + 50.95072089180246 + ], + [ + 6.927830460147417, + 50.950751303281756 + ], + [ + 6.92780219704997, + 50.95076069478749 + ], + [ + 6.9277537478344655, + 50.950776794399346 + ], + [ + 6.927710525719027, + 50.95077147453959 + ], + [ + 6.927619575445898, + 50.95080777879162 + ], + [ + 6.927713759856064, + 50.95088936762351 + ], + [ + 6.927816550995428, + 50.950979002088076 + ], + [ + 6.927735449875953, + 50.95101560446369 + ], + [ + 6.927775433261445, + 50.951050973520914 + ], + [ + 6.9276351125109485, + 50.951115104221316 + ], + [ + 6.927685073541417, + 50.951158484908575 + ], + [ + 6.9276484058360515, + 50.95117522710783 + ], + [ + 6.927671278577956, + 50.95119464148334 + ], + [ + 6.927184296567501, + 50.95142360297696 + ], + [ + 6.927070945135901, + 50.95147718096397 + ], + [ + 6.927094049192046, + 50.95149398686489 + ], + [ + 6.9268623718113815, + 50.95162293520142 + ], + [ + 6.92670501072355, + 50.95171057234581 + ], + [ + 6.926668002596596, + 50.95168875273616 + ], + [ + 6.926513223195595, + 50.95175596291951 + ], + [ + 6.926421861246559, + 50.95167402123568 + ], + [ + 6.9262856632947285, + 50.95173430676275 + ], + [ + 6.926119748141698, + 50.951814099697025 + ], + [ + 6.926061909008365, + 50.95176098291865 + ], + [ + 6.9259126206930715, + 50.95183956626648 + ], + [ + 6.925728499823661, + 50.951740706414114 + ], + [ + 6.925537066646873, + 50.95184695004794 + ], + [ + 6.925647995012469, + 50.95190782588269 + ], + [ + 6.925871840542427, + 50.952030051458806 + ], + [ + 6.926331286545384, + 50.952282201011386 + ], + [ + 6.926563049819619, + 50.95240918327725 + ], + [ + 6.926509182086263, + 50.9524032125331 + ], + [ + 6.926400618047246, + 50.95239117351048 + ], + [ + 6.9250773862486765, + 50.952244877547194 + ], + [ + 6.92483534455355, + 50.952218224162316 + ], + [ + 6.924688674519437, + 50.952202102953905 + ], + [ + 6.924596177527511, + 50.952269393351955 + ], + [ + 6.924570229777132, + 50.95226695344307 + ], + [ + 6.924563234795633, + 50.95229193434891 + ], + [ + 6.924557022354736, + 50.952314115909154 + ], + [ + 6.924584156359599, + 50.9523154976545 + ], + [ + 6.9244136735599335, + 50.95252950940947 + ], + [ + 6.92460044244896, + 50.95268983696498 + ], + [ + 6.924477029074806, + 50.952746780737456 + ], + [ + 6.92447933972385, + 50.95276190169794 + ], + [ + 6.9243031976008, + 50.95282864914818 + ], + [ + 6.924223388964089, + 50.95285876598298 + ], + [ + 6.924058285758365, + 50.95291783707784 + ], + [ + 6.923871510324922, + 50.95274141775298 + ], + [ + 6.923705376160562, + 50.952802278666645 + ], + [ + 6.923561244667765, + 50.95264744324284 + ], + [ + 6.923401069699953, + 50.952704941708824 + ], + [ + 6.923258000620782, + 50.952757937964094 + ], + [ + 6.923138818062583, + 50.952802087278926 + ], + [ + 6.923108021980886, + 50.95281356682352 + ], + [ + 6.922978616594942, + 50.95286178457921 + ], + [ + 6.923049877746197, + 50.952942364967804 + ], + [ + 6.923054116188007, + 50.95294713242946 + ], + [ + 6.922971515617521, + 50.95298472384712 + ], + [ + 6.922826723135922, + 50.95303926552982 + ], + [ + 6.922941985796894, + 50.95316069797425 + ], + [ + 6.922999985134765, + 50.95322199540167 + ], + [ + 6.9230707672863785, + 50.95329640650352 + ], + [ + 6.923127747675528, + 50.95335645358823 + ], + [ + 6.923022242651741, + 50.953382818057925 + ], + [ + 6.922480644375302, + 50.953578498072694 + ], + [ + 6.922298905401046, + 50.953644461200156 + ], + [ + 6.922207901933937, + 50.95367736157856 + ], + [ + 6.92211774933774, + 50.95370998563169 + ], + [ + 6.922026044128953, + 50.953743162080436 + ], + [ + 6.92193546565116, + 50.95377587914421 + ], + [ + 6.921891800034415, + 50.953791685551664 + ], + [ + 6.921732832237131, + 50.95384921403414 + ], + [ + 6.921621057065154, + 50.95388955979514 + ], + [ + 6.921393338195092, + 50.95397319059992 + ], + [ + 6.921355570417244, + 50.9539362471179 + ], + [ + 6.9213123742776315, + 50.9539474604468 + ], + [ + 6.921200846859849, + 50.95398600606552 + ], + [ + 6.921163155047383, + 50.95399904685434 + ], + [ + 6.9210703679253465, + 50.953904996941624 + ], + [ + 6.920840430730881, + 50.953658134664146 + ], + [ + 6.9205794787825745, + 50.953755299477734 + ], + [ + 6.920447989701084, + 50.95380414377834 + ], + [ + 6.920375751888683, + 50.953830977914016 + ], + [ + 6.920208892299995, + 50.95389252248417 + ], + [ + 6.920250148150685, + 50.95389893790221 + ], + [ + 6.920396252129214, + 50.954047097802686 + ], + [ + 6.92026343268313, + 50.95410319957404 + ], + [ + 6.920142985886051, + 50.95415112411249 + ], + [ + 6.920093961939142, + 50.95416939942261 + ], + [ + 6.920038872479721, + 50.95418980250667 + ], + [ + 6.920034588236468, + 50.95419139003046 + ], + [ + 6.9200997719502055, + 50.95427614589194 + ], + [ + 6.920079441605404, + 50.95428423876127 + ], + [ + 6.920182429584288, + 50.95438983753938 + ], + [ + 6.92020123524209, + 50.95440071147449 + ], + [ + 6.920196161343134, + 50.95440257183892 + ], + [ + 6.919946663139954, + 50.95449381453041 + ], + [ + 6.919918194052523, + 50.95450071638977 + ], + [ + 6.91978666149649, + 50.954369541284876 + ], + [ + 6.919671336897878, + 50.9544052207263 + ], + [ + 6.919667027056579, + 50.95440196102721 + ], + [ + 6.919620008910514, + 50.95437251395698 + ], + [ + 6.919593414468917, + 50.95435475669128 + ], + [ + 6.919578553194393, + 50.95434385131523 + ], + [ + 6.919499488802561, + 50.954265147949734 + ], + [ + 6.9194936747396785, + 50.95425941512718 + ], + [ + 6.919400207069189, + 50.954298637022355 + ], + [ + 6.919317804243214, + 50.95422059713648 + ], + [ + 6.919219181600222, + 50.95425890228476 + ], + [ + 6.919200023187174, + 50.95426750065418 + ], + [ + 6.9189285344905365, + 50.95436555686386 + ], + [ + 6.918816633757688, + 50.95440706781147 + ], + [ + 6.918790357435292, + 50.95441680465479 + ], + [ + 6.918949252480595, + 50.95458761951026 + ], + [ + 6.91898200188501, + 50.95462294897766 + ], + [ + 6.918862801519718, + 50.95466946351237 + ], + [ + 6.918990584402217, + 50.9548054537567 + ], + [ + 6.918842531897216, + 50.95486127340814 + ], + [ + 6.918707229974017, + 50.954906745281534 + ], + [ + 6.918555922412203, + 50.954747028810125 + ], + [ + 6.918285627571634, + 50.954817833853504 + ], + [ + 6.918203767963558, + 50.95472826743043 + ], + [ + 6.918154725677389, + 50.95467250471512 + ], + [ + 6.91814069484362, + 50.95465771155724 + ], + [ + 6.918041393266787, + 50.95469453402671 + ], + [ + 6.917932649473115, + 50.95473836416863 + ], + [ + 6.9178589620855515, + 50.95476806331193 + ], + [ + 6.917835382807251, + 50.95477759711553 + ], + [ + 6.917718745687692, + 50.95482435946388 + ], + [ + 6.917732400621356, + 50.95483854518299 + ], + [ + 6.917913546109705, + 50.9550248166025 + ], + [ + 6.917889621912742, + 50.95503129716971 + ], + [ + 6.917700495569729, + 50.955082810526065 + ], + [ + 6.9176636439530235, + 50.95511182736007 + ], + [ + 6.917658059502468, + 50.95511430627544 + ], + [ + 6.917476287104736, + 50.955188623785105 + ], + [ + 6.917280986063183, + 50.95526629808951 + ], + [ + 6.917092769527613, + 50.955074867504344 + ], + [ + 6.91700832098814, + 50.95510834128761 + ], + [ + 6.916767145933062, + 50.95520543229112 + ], + [ + 6.917193748846188, + 50.95562781307361 + ], + [ + 6.917091015618466, + 50.95566520668829 + ], + [ + 6.916821411464795, + 50.9557632179239 + ], + [ + 6.9167504470460415, + 50.95569276782897 + ], + [ + 6.9167459956863855, + 50.955688344398354 + ], + [ + 6.916741747348024, + 50.95568409367354 + ], + [ + 6.916408214940283, + 50.95535037192053 + ], + [ + 6.916306388038488, + 50.95539045487553 + ], + [ + 6.916165019745444, + 50.95544621867123 + ], + [ + 6.916208588578567, + 50.95545296010037 + ], + [ + 6.916312201601383, + 50.95555581147627 + ], + [ + 6.916329477225973, + 50.95557302543435 + ], + [ + 6.916204076700588, + 50.955623090691205 + ], + [ + 6.916089978505189, + 50.95567517789917 + ], + [ + 6.916093273993527, + 50.95567844570695 + ], + [ + 6.916129298033644, + 50.955714199576114 + ], + [ + 6.916162104755687, + 50.95574675357729 + ], + [ + 6.9160428934443114, + 50.955794052019385 + ], + [ + 6.916036655429218, + 50.955796526386926 + ], + [ + 6.916031221596677, + 50.95579869043282 + ], + [ + 6.915983460036613, + 50.95581773215063 + ], + [ + 6.915921890470039, + 50.95584230677589 + ], + [ + 6.915859542283597, + 50.95578391592209 + ], + [ + 6.915842454378421, + 50.95579070248296 + ], + [ + 6.9155839013701295, + 50.955894401565885 + ], + [ + 6.915566337723402, + 50.955877008774756 + ], + [ + 6.915548628227297, + 50.955859438897285 + ], + [ + 6.915456458593726, + 50.95576802171213 + ], + [ + 6.915445838635648, + 50.95575691992441 + ], + [ + 6.915430461034889, + 50.955741527689874 + ], + [ + 6.91540589010364, + 50.955751338297496 + ], + [ + 6.915357740511249, + 50.9557707730559 + ], + [ + 6.9150925083915125, + 50.95588047836775 + ], + [ + 6.91498291127195, + 50.955925272670065 + ], + [ + 6.915246439376871, + 50.9561902779535 + ], + [ + 6.914980268119755, + 50.95629780863873 + ], + [ + 6.914790104207368, + 50.956375200912944 + ], + [ + 6.914714945321462, + 50.95640534848071 + ], + [ + 6.91468225191652, + 50.95641829839427 + ], + [ + 6.9140992596655675, + 50.956652417018574 + ], + [ + 6.9140078979079735, + 50.956689269120375 + ], + [ + 6.913696661029141, + 50.95681423021526 + ], + [ + 6.913543281602979, + 50.95687554125246 + ], + [ + 6.91352406324305, + 50.95688323645002 + ], + [ + 6.913453177611614, + 50.95691077583309 + ], + [ + 6.914270198455776, + 50.9577717885787 + ], + [ + 6.914327308859366, + 50.957790706474974 + ], + [ + 6.9143995850243565, + 50.95780428493281 + ], + [ + 6.914451101665056, + 50.95781513254459 + ], + [ + 6.914350778433585, + 50.95786981152336 + ], + [ + 6.914257037455628, + 50.957905621214685 + ], + [ + 6.914328180258861, + 50.9579819345477 + ], + [ + 6.9143215608979185, + 50.95840592031897 + ], + [ + 6.91384516531031, + 50.958522174365505 + ], + [ + 6.913808915878235, + 50.95853102048945 + ], + [ + 6.9136268393076525, + 50.958587370543064 + ], + [ + 6.913591908803179, + 50.95853352825995 + ], + [ + 6.913528152562544, + 50.958450420368905 + ], + [ + 6.913515203250492, + 50.958468866357755 + ], + [ + 6.913092552153997, + 50.9585815737186 + ], + [ + 6.911818925317923, + 50.95892183365231 + ], + [ + 6.911452709774339, + 50.95901479400701 + ], + [ + 6.9109388003634695, + 50.95914156334949 + ], + [ + 6.9107976961635735, + 50.95917697608674 + ], + [ + 6.910683034069761, + 50.958991435533086 + ], + [ + 6.910590592525979, + 50.95884185218678 + ], + [ + 6.910505048912448, + 50.95870345727827 + ], + [ + 6.9102122472259, + 50.958777839627686 + ], + [ + 6.910082621395103, + 50.95880811284122 + ], + [ + 6.909963882464975, + 50.95884472806374 + ], + [ + 6.909422282571707, + 50.959015374024254 + ], + [ + 6.9091017466463525, + 50.95913849892185 + ], + [ + 6.90908009520612, + 50.95914525403912 + ], + [ + 6.909045752107081, + 50.95915591899953 + ], + [ + 6.908960424961552, + 50.95918392463975 + ], + [ + 6.909010562053587, + 50.95923657109362 + ], + [ + 6.9095299347633405, + 50.960030501190474 + ], + [ + 6.909604467805019, + 50.960144444288176 + ], + [ + 6.909657978628485, + 50.96044273988107 + ], + [ + 6.9097083372444885, + 50.96081279443469 + ], + [ + 6.909743407766414, + 50.96102712652521 + ], + [ + 6.90978100674053, + 50.96127387521974 + ], + [ + 6.909791737635439, + 50.96130940664054 + ], + [ + 6.909721742556609, + 50.96131227357505 + ], + [ + 6.909147143356838, + 50.961376875354 + ], + [ + 6.908561945088037, + 50.96154910204629 + ], + [ + 6.908378463957483, + 50.96161468873838 + ], + [ + 6.908214593333587, + 50.96146005909364 + ], + [ + 6.90815861906825, + 50.9614072780622 + ], + [ + 6.908096259528667, + 50.96134843320155 + ], + [ + 6.907798965994795, + 50.96140980592602 + ], + [ + 6.908674661015512, + 50.9622415997561 + ], + [ + 6.9087332495994, + 50.96229705713533 + ], + [ + 6.909424530015255, + 50.962948517852496 + ], + [ + 6.909870181360451, + 50.96336924776093 + ], + [ + 6.909946814654852, + 50.963442086953954 + ], + [ + 6.910297188594693, + 50.96377510913748 + ], + [ + 6.9101285867864375, + 50.963816964083954 + ], + [ + 6.9087969210634075, + 50.96411931343331 + ], + [ + 6.907781730167274, + 50.96435092952127 + ], + [ + 6.907833413956908, + 50.96447368104745 + ], + [ + 6.907992897945705, + 50.96485638426509 + ], + [ + 6.908004331733936, + 50.96488380253982 + ], + [ + 6.909119506292607, + 50.964642755269495 + ], + [ + 6.909229437853059, + 50.96463848758069 + ], + [ + 6.909459616420203, + 50.9645585874088 + ], + [ + 6.90952431696337, + 50.964677620248054 + ], + [ + 6.910142799574387, + 50.964538875541386 + ], + [ + 6.91059605698905, + 50.965192980743204 + ], + [ + 6.9106569701024885, + 50.96518274221173 + ], + [ + 6.910668116431208, + 50.96518051694736 + ], + [ + 6.91067696265414, + 50.96517879824408 + ], + [ + 6.910718441248843, + 50.9651725091373 + ], + [ + 6.910760353453098, + 50.96516617381204 + ], + [ + 6.910769538869881, + 50.965164386522844 + ], + [ + 6.910781372572168, + 50.96516223650394 + ], + [ + 6.910988082565883, + 50.96513464304829 + ], + [ + 6.911211099295205, + 50.96512065086003 + ], + [ + 6.911493264744889, + 50.96510418353133 + ], + [ + 6.911630981555356, + 50.96522958741736 + ], + [ + 6.911773013126706, + 50.9653644865955 + ], + [ + 6.912028068337272, + 50.96556574118139 + ], + [ + 6.912592009118075, + 50.96606347305506 + ], + [ + 6.91278281956234, + 50.96617596081093 + ], + [ + 6.912886963600471, + 50.966237355926644 + ], + [ + 6.912935858053207, + 50.966301050596954 + ], + [ + 6.912990807898032, + 50.96634414260251 + ], + [ + 6.913226109307873, + 50.966539346520584 + ], + [ + 6.913213708481595, + 50.966583218696684 + ], + [ + 6.913187020072071, + 50.966674129310064 + ], + [ + 6.913141036798661, + 50.966856070072275 + ], + [ + 6.9129959644017465, + 50.966839589770345 + ], + [ + 6.912971021622772, + 50.96693237436229 + ], + [ + 6.913259077756182, + 50.96696625355318 + ], + [ + 6.913168790289628, + 50.96725336092221 + ], + [ + 6.913145597594587, + 50.967259189880316 + ], + [ + 6.913136902598158, + 50.967261372855916 + ], + [ + 6.913003724853784, + 50.96729474184226 + ], + [ + 6.912862551506364, + 50.96728110745664 + ], + [ + 6.9129082265855475, + 50.967569008984725 + ], + [ + 6.912915752797156, + 50.96761374007509 + ], + [ + 6.912955414626677, + 50.96785675584849 + ], + [ + 6.913345340800581, + 50.967763197041236 + ], + [ + 6.913545638789181, + 50.96771309709739 + ], + [ + 6.913885976979539, + 50.96800005673538 + ], + [ + 6.913986750048274, + 50.96808511797671 + ], + [ + 6.914302900023218, + 50.968113921210254 + ], + [ + 6.914898091211084, + 50.968561058324056 + ], + [ + 6.915288091790368, + 50.96883954437865 + ], + [ + 6.91568689480832, + 50.96910941999104 + ], + [ + 6.916060797055035, + 50.96935658029407 + ], + [ + 6.91608034625107, + 50.9693693154298 + ], + [ + 6.916253545552795, + 50.96948009436215 + ], + [ + 6.916725205583351, + 50.969769351207 + ], + [ + 6.916885279424596, + 50.9698661210274 + ], + [ + 6.917017299544796, + 50.969761699526266 + ], + [ + 6.9170351191344315, + 50.96974723615473 + ], + [ + 6.917279440882296, + 50.96957173161682 + ], + [ + 6.917875778547041, + 50.96995969459289 + ], + [ + 6.918881554983458, + 50.97057015213079 + ], + [ + 6.919112832340206, + 50.970710451433675 + ], + [ + 6.919290323751912, + 50.97035505719264 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Neuehrenfeld", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "402", + "Population_rel": 0.022265725524796883, + "Population_abs": 24226 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.909147143356838, + 50.961376875354 + ], + [ + 6.909721742556609, + 50.96131227357505 + ], + [ + 6.909791737635439, + 50.96130940664054 + ], + [ + 6.90978100674053, + 50.96127387521974 + ], + [ + 6.909743407766414, + 50.96102712652521 + ], + [ + 6.9097083372444885, + 50.96081279443469 + ], + [ + 6.909657978628485, + 50.96044273988107 + ], + [ + 6.909604467805019, + 50.960144444288176 + ], + [ + 6.9095299347633405, + 50.960030501190474 + ], + [ + 6.909010562053587, + 50.95923657109362 + ], + [ + 6.908960424961552, + 50.95918392463975 + ], + [ + 6.909045752107081, + 50.95915591899953 + ], + [ + 6.90908009520612, + 50.95914525403912 + ], + [ + 6.9091017466463525, + 50.95913849892185 + ], + [ + 6.909422282571707, + 50.959015374024254 + ], + [ + 6.909963882464975, + 50.95884472806374 + ], + [ + 6.910082621395103, + 50.95880811284122 + ], + [ + 6.9102122472259, + 50.958777839627686 + ], + [ + 6.910505048912448, + 50.95870345727827 + ], + [ + 6.910590592525979, + 50.95884185218678 + ], + [ + 6.910683034069761, + 50.958991435533086 + ], + [ + 6.9107976961635735, + 50.95917697608674 + ], + [ + 6.9109388003634695, + 50.95914156334949 + ], + [ + 6.911452709774339, + 50.95901479400701 + ], + [ + 6.911818925317923, + 50.95892183365231 + ], + [ + 6.913092552153997, + 50.9585815737186 + ], + [ + 6.913515203250492, + 50.958468866357755 + ], + [ + 6.913528152562544, + 50.958450420368905 + ], + [ + 6.913591908803179, + 50.95853352825995 + ], + [ + 6.9136268393076525, + 50.958587370543064 + ], + [ + 6.913808915878235, + 50.95853102048945 + ], + [ + 6.91384516531031, + 50.958522174365505 + ], + [ + 6.9143215608979185, + 50.95840592031897 + ], + [ + 6.914328180258861, + 50.9579819345477 + ], + [ + 6.914257037455628, + 50.957905621214685 + ], + [ + 6.914350778433585, + 50.95786981152336 + ], + [ + 6.914451101665056, + 50.95781513254459 + ], + [ + 6.9143995850243565, + 50.95780428493281 + ], + [ + 6.914327308859366, + 50.957790706474974 + ], + [ + 6.914270198455776, + 50.9577717885787 + ], + [ + 6.913453177611614, + 50.95691077583309 + ], + [ + 6.91352406324305, + 50.95688323645002 + ], + [ + 6.913543281602979, + 50.95687554125246 + ], + [ + 6.913696661029141, + 50.95681423021526 + ], + [ + 6.9140078979079735, + 50.956689269120375 + ], + [ + 6.9140992596655675, + 50.956652417018574 + ], + [ + 6.91468225191652, + 50.95641829839427 + ], + [ + 6.914714945321462, + 50.95640534848071 + ], + [ + 6.914790104207368, + 50.956375200912944 + ], + [ + 6.914980268119755, + 50.95629780863873 + ], + [ + 6.915246439376871, + 50.9561902779535 + ], + [ + 6.91498291127195, + 50.955925272670065 + ], + [ + 6.9150925083915125, + 50.95588047836775 + ], + [ + 6.915357740511249, + 50.9557707730559 + ], + [ + 6.91540589010364, + 50.955751338297496 + ], + [ + 6.915430461034889, + 50.955741527689874 + ], + [ + 6.915445838635648, + 50.95575691992441 + ], + [ + 6.915456458593726, + 50.95576802171213 + ], + [ + 6.915548628227297, + 50.955859438897285 + ], + [ + 6.915566337723402, + 50.955877008774756 + ], + [ + 6.9155839013701295, + 50.955894401565885 + ], + [ + 6.915842454378421, + 50.95579070248296 + ], + [ + 6.915859542283597, + 50.95578391592209 + ], + [ + 6.915921890470039, + 50.95584230677589 + ], + [ + 6.915983460036613, + 50.95581773215063 + ], + [ + 6.916031221596677, + 50.95579869043282 + ], + [ + 6.916036655429218, + 50.955796526386926 + ], + [ + 6.9160428934443114, + 50.955794052019385 + ], + [ + 6.916162104755687, + 50.95574675357729 + ], + [ + 6.916129298033644, + 50.955714199576114 + ], + [ + 6.916093273993527, + 50.95567844570695 + ], + [ + 6.916089978505189, + 50.95567517789917 + ], + [ + 6.916204076700588, + 50.955623090691205 + ], + [ + 6.916329477225973, + 50.95557302543435 + ], + [ + 6.916312201601383, + 50.95555581147627 + ], + [ + 6.916208588578567, + 50.95545296010037 + ], + [ + 6.916165019745444, + 50.95544621867123 + ], + [ + 6.916306388038488, + 50.95539045487553 + ], + [ + 6.916408214940283, + 50.95535037192053 + ], + [ + 6.916741747348024, + 50.95568409367354 + ], + [ + 6.9167459956863855, + 50.955688344398354 + ], + [ + 6.9167504470460415, + 50.95569276782897 + ], + [ + 6.916821411464795, + 50.9557632179239 + ], + [ + 6.917091015618466, + 50.95566520668829 + ], + [ + 6.917193748846188, + 50.95562781307361 + ], + [ + 6.916767145933062, + 50.95520543229112 + ], + [ + 6.91700832098814, + 50.95510834128761 + ], + [ + 6.917092769527613, + 50.955074867504344 + ], + [ + 6.917280986063183, + 50.95526629808951 + ], + [ + 6.917476287104736, + 50.955188623785105 + ], + [ + 6.917658059502468, + 50.95511430627544 + ], + [ + 6.9176636439530235, + 50.95511182736007 + ], + [ + 6.917700495569729, + 50.955082810526065 + ], + [ + 6.917889621912742, + 50.95503129716971 + ], + [ + 6.917913546109705, + 50.9550248166025 + ], + [ + 6.917732400621356, + 50.95483854518299 + ], + [ + 6.917718745687692, + 50.95482435946388 + ], + [ + 6.917835382807251, + 50.95477759711553 + ], + [ + 6.9178589620855515, + 50.95476806331193 + ], + [ + 6.917932649473115, + 50.95473836416863 + ], + [ + 6.918041393266787, + 50.95469453402671 + ], + [ + 6.91814069484362, + 50.95465771155724 + ], + [ + 6.918154725677389, + 50.95467250471512 + ], + [ + 6.918203767963558, + 50.95472826743043 + ], + [ + 6.918285627571634, + 50.954817833853504 + ], + [ + 6.918555922412203, + 50.954747028810125 + ], + [ + 6.918707229974017, + 50.954906745281534 + ], + [ + 6.918842531897216, + 50.95486127340814 + ], + [ + 6.918990584402217, + 50.9548054537567 + ], + [ + 6.918862801519718, + 50.95466946351237 + ], + [ + 6.91898200188501, + 50.95462294897766 + ], + [ + 6.918949252480595, + 50.95458761951026 + ], + [ + 6.918790357435292, + 50.95441680465479 + ], + [ + 6.918816633757688, + 50.95440706781147 + ], + [ + 6.9189285344905365, + 50.95436555686386 + ], + [ + 6.919200023187174, + 50.95426750065418 + ], + [ + 6.919219181600222, + 50.95425890228476 + ], + [ + 6.919317804243214, + 50.95422059713648 + ], + [ + 6.919400207069189, + 50.954298637022355 + ], + [ + 6.9194936747396785, + 50.95425941512718 + ], + [ + 6.919499488802561, + 50.954265147949734 + ], + [ + 6.919578553194393, + 50.95434385131523 + ], + [ + 6.919593414468917, + 50.95435475669128 + ], + [ + 6.919620008910514, + 50.95437251395698 + ], + [ + 6.919667027056579, + 50.95440196102721 + ], + [ + 6.919671336897878, + 50.9544052207263 + ], + [ + 6.91978666149649, + 50.954369541284876 + ], + [ + 6.919918194052523, + 50.95450071638977 + ], + [ + 6.919946663139954, + 50.95449381453041 + ], + [ + 6.920196161343134, + 50.95440257183892 + ], + [ + 6.92020123524209, + 50.95440071147449 + ], + [ + 6.920182429584288, + 50.95438983753938 + ], + [ + 6.920079441605404, + 50.95428423876127 + ], + [ + 6.9200997719502055, + 50.95427614589194 + ], + [ + 6.920034588236468, + 50.95419139003046 + ], + [ + 6.920038872479721, + 50.95418980250667 + ], + [ + 6.920093961939142, + 50.95416939942261 + ], + [ + 6.920142985886051, + 50.95415112411249 + ], + [ + 6.92026343268313, + 50.95410319957404 + ], + [ + 6.920396252129214, + 50.954047097802686 + ], + [ + 6.920250148150685, + 50.95389893790221 + ], + [ + 6.920208892299995, + 50.95389252248417 + ], + [ + 6.920375751888683, + 50.953830977914016 + ], + [ + 6.920447989701084, + 50.95380414377834 + ], + [ + 6.9205794787825745, + 50.953755299477734 + ], + [ + 6.920840430730881, + 50.953658134664146 + ], + [ + 6.9210703679253465, + 50.953904996941624 + ], + [ + 6.921163155047383, + 50.95399904685434 + ], + [ + 6.921200846859849, + 50.95398600606552 + ], + [ + 6.9213123742776315, + 50.9539474604468 + ], + [ + 6.921355570417244, + 50.9539362471179 + ], + [ + 6.921393338195092, + 50.95397319059992 + ], + [ + 6.921621057065154, + 50.95388955979514 + ], + [ + 6.921732832237131, + 50.95384921403414 + ], + [ + 6.921891800034415, + 50.953791685551664 + ], + [ + 6.92193546565116, + 50.95377587914421 + ], + [ + 6.922026044128953, + 50.953743162080436 + ], + [ + 6.92211774933774, + 50.95370998563169 + ], + [ + 6.922207901933937, + 50.95367736157856 + ], + [ + 6.922298905401046, + 50.953644461200156 + ], + [ + 6.922480644375302, + 50.953578498072694 + ], + [ + 6.923022242651741, + 50.953382818057925 + ], + [ + 6.923127747675528, + 50.95335645358823 + ], + [ + 6.9230707672863785, + 50.95329640650352 + ], + [ + 6.922999985134765, + 50.95322199540167 + ], + [ + 6.922941985796894, + 50.95316069797425 + ], + [ + 6.922826723135922, + 50.95303926552982 + ], + [ + 6.922971515617521, + 50.95298472384712 + ], + [ + 6.923054116188007, + 50.95294713242946 + ], + [ + 6.923049877746197, + 50.952942364967804 + ], + [ + 6.922978616594942, + 50.95286178457921 + ], + [ + 6.923108021980886, + 50.95281356682352 + ], + [ + 6.923138818062583, + 50.952802087278926 + ], + [ + 6.923258000620782, + 50.952757937964094 + ], + [ + 6.923401069699953, + 50.952704941708824 + ], + [ + 6.923561244667765, + 50.95264744324284 + ], + [ + 6.923705376160562, + 50.952802278666645 + ], + [ + 6.923871510324922, + 50.95274141775298 + ], + [ + 6.924058285758365, + 50.95291783707784 + ], + [ + 6.924223388964089, + 50.95285876598298 + ], + [ + 6.9243031976008, + 50.95282864914818 + ], + [ + 6.92447933972385, + 50.95276190169794 + ], + [ + 6.924477029074806, + 50.952746780737456 + ], + [ + 6.92460044244896, + 50.95268983696498 + ], + [ + 6.9244136735599335, + 50.95252950940947 + ], + [ + 6.924584156359599, + 50.9523154976545 + ], + [ + 6.924557022354736, + 50.952314115909154 + ], + [ + 6.924563234795633, + 50.95229193434891 + ], + [ + 6.924570229777132, + 50.95226695344307 + ], + [ + 6.924596177527511, + 50.952269393351955 + ], + [ + 6.924688674519437, + 50.952202102953905 + ], + [ + 6.92483534455355, + 50.952218224162316 + ], + [ + 6.9250773862486765, + 50.952244877547194 + ], + [ + 6.926400618047246, + 50.95239117351048 + ], + [ + 6.926509182086263, + 50.9524032125331 + ], + [ + 6.926563049819619, + 50.95240918327725 + ], + [ + 6.926331286545384, + 50.952282201011386 + ], + [ + 6.925871840542427, + 50.952030051458806 + ], + [ + 6.925647995012469, + 50.95190782588269 + ], + [ + 6.925537066646873, + 50.95184695004794 + ], + [ + 6.925728499823661, + 50.951740706414114 + ], + [ + 6.9259126206930715, + 50.95183956626648 + ], + [ + 6.926061909008365, + 50.95176098291865 + ], + [ + 6.926119748141698, + 50.951814099697025 + ], + [ + 6.9262856632947285, + 50.95173430676275 + ], + [ + 6.926421861246559, + 50.95167402123568 + ], + [ + 6.926513223195595, + 50.95175596291951 + ], + [ + 6.926668002596596, + 50.95168875273616 + ], + [ + 6.92670501072355, + 50.95171057234581 + ], + [ + 6.9268623718113815, + 50.95162293520142 + ], + [ + 6.927094049192046, + 50.95149398686489 + ], + [ + 6.927070945135901, + 50.95147718096397 + ], + [ + 6.927184296567501, + 50.95142360297696 + ], + [ + 6.927671278577956, + 50.95119464148334 + ], + [ + 6.9276484058360515, + 50.95117522710783 + ], + [ + 6.927685073541417, + 50.951158484908575 + ], + [ + 6.9276351125109485, + 50.951115104221316 + ], + [ + 6.927775433261445, + 50.951050973520914 + ], + [ + 6.927735449875953, + 50.95101560446369 + ], + [ + 6.927816550995428, + 50.950979002088076 + ], + [ + 6.927713759856064, + 50.95088936762351 + ], + [ + 6.927619575445898, + 50.95080777879162 + ], + [ + 6.927710525719027, + 50.95077147453959 + ], + [ + 6.9277537478344655, + 50.950776794399346 + ], + [ + 6.92780219704997, + 50.95076069478749 + ], + [ + 6.927830460147417, + 50.950751303281756 + ], + [ + 6.927921979522504, + 50.95072089180246 + ], + [ + 6.928106942365621, + 50.95064759601971 + ], + [ + 6.928163983745293, + 50.95062493848151 + ], + [ + 6.928283323452725, + 50.950727295627075 + ], + [ + 6.928315236556374, + 50.950724638566854 + ], + [ + 6.928395278459372, + 50.95080522309964 + ], + [ + 6.928473340938567, + 50.95077340860573 + ], + [ + 6.928381917031375, + 50.950684693235786 + ], + [ + 6.928424531868976, + 50.95066646533649 + ], + [ + 6.928412387487513, + 50.95065159536842 + ], + [ + 6.92848829988226, + 50.950610044715134 + ], + [ + 6.928529518909964, + 50.950593266092255 + ], + [ + 6.9284545133797355, + 50.950514308052284 + ], + [ + 6.928597385561403, + 50.950456898634165 + ], + [ + 6.928617942577799, + 50.95045074467876 + ], + [ + 6.9288272591923805, + 50.950364210211475 + ], + [ + 6.928833500175637, + 50.950361701042894 + ], + [ + 6.929569068400973, + 50.95007206257482 + ], + [ + 6.929899047159533, + 50.949942234839796 + ], + [ + 6.929942997070949, + 50.94992533326418 + ], + [ + 6.929950204219738, + 50.9499227062612 + ], + [ + 6.929958188013189, + 50.94991942299182 + ], + [ + 6.930020473963878, + 50.94989465586917 + ], + [ + 6.930091316669948, + 50.949866718123076 + ], + [ + 6.930191313327133, + 50.94983260944076 + ], + [ + 6.930211939637265, + 50.94981956539824 + ], + [ + 6.930219701446146, + 50.94981631055316 + ], + [ + 6.9303482890418024, + 50.94976309408266 + ], + [ + 6.930433680763077, + 50.94984187886736 + ], + [ + 6.930452180432809, + 50.94983471948967 + ], + [ + 6.930568859136338, + 50.94979839874212 + ], + [ + 6.930616933800504, + 50.94984715899411 + ], + [ + 6.930675470457102, + 50.94990656083883 + ], + [ + 6.930835737148119, + 50.9498439762107 + ], + [ + 6.930645247787307, + 50.94964746105597 + ], + [ + 6.931069559897461, + 50.94948155070044 + ], + [ + 6.931099948312179, + 50.949513938920205 + ], + [ + 6.931140513895728, + 50.949557033807885 + ], + [ + 6.931269928002478, + 50.94968814416706 + ], + [ + 6.931432584328586, + 50.94962410090807 + ], + [ + 6.931736747235015, + 50.94950553398555 + ], + [ + 6.9315710227744125, + 50.94933730923144 + ], + [ + 6.9315685549353905, + 50.94933465820963 + ], + [ + 6.931540425231597, + 50.94929830699905 + ], + [ + 6.931679572045285, + 50.94924305289805 + ], + [ + 6.931695020397216, + 50.94925997138417 + ], + [ + 6.9317547738442755, + 50.949320618299886 + ], + [ + 6.9319757499318335, + 50.949240177520615 + ], + [ + 6.932092956441469, + 50.94935759982989 + ], + [ + 6.932276860410049, + 50.949288800811736 + ], + [ + 6.93246076724508, + 50.94922018143268 + ], + [ + 6.93275116588975, + 50.949111427669486 + ], + [ + 6.932783408455103, + 50.949143891449474 + ], + [ + 6.93284513362753, + 50.94920614302816 + ], + [ + 6.93286096499444, + 50.949222107603575 + ], + [ + 6.93301072264178, + 50.94915488471036 + ], + [ + 6.933057284422988, + 50.94913388118215 + ], + [ + 6.933247740650379, + 50.949057452106956 + ], + [ + 6.933263566823915, + 50.94904859999495 + ], + [ + 6.933261498785647, + 50.94904614585582 + ], + [ + 6.933060335103827, + 50.94888218305876 + ], + [ + 6.933055160702515, + 50.94887795880382 + ], + [ + 6.933049983337267, + 50.948873737194276 + ], + [ + 6.933001732253259, + 50.94883443718136 + ], + [ + 6.932965797210217, + 50.948805167428596 + ], + [ + 6.932960600422816, + 50.94880093467852 + ], + [ + 6.932955403636353, + 50.948796701928245 + ], + [ + 6.932894508652289, + 50.94874709776767 + ], + [ + 6.932861080400841, + 50.94871986179209 + ], + [ + 6.932782011382386, + 50.948655471068854 + ], + [ + 6.932753148586763, + 50.94863171375399 + ], + [ + 6.932750367118106, + 50.94862942414977 + ], + [ + 6.9327463780361365, + 50.94862614632998 + ], + [ + 6.93273984575812, + 50.94862082415816 + ], + [ + 6.932653137666808, + 50.94855020118895 + ], + [ + 6.932566988833568, + 50.948479910933784 + ], + [ + 6.9325642505133125, + 50.94847757981832 + ], + [ + 6.932538245761511, + 50.94845477603768 + ], + [ + 6.931705044982504, + 50.94771475789613 + ], + [ + 6.929309308270904, + 50.94568696658407 + ], + [ + 6.929305223744128, + 50.94568350887216 + ], + [ + 6.929300588132087, + 50.94568040653309 + ], + [ + 6.928779062557361, + 50.94535774095144 + ], + [ + 6.928571155039111, + 50.945229385515745 + ], + [ + 6.92845849649135, + 50.945145284835746 + ], + [ + 6.928434333318233, + 50.94512683879817 + ], + [ + 6.928408039084608, + 50.945106757641724 + ], + [ + 6.9283901108789685, + 50.9450926789975 + ], + [ + 6.928386223929379, + 50.94508961508904 + ], + [ + 6.928382881561012, + 50.945086566240626 + ], + [ + 6.928353203951532, + 50.94504918303233 + ], + [ + 6.928328735043524, + 50.9450146263624 + ], + [ + 6.928284915165367, + 50.944952751197675 + ], + [ + 6.928210100033886, + 50.9448471152695 + ], + [ + 6.927773867840637, + 50.94422382930454 + ], + [ + 6.927375185079402, + 50.94365393617477 + ], + [ + 6.927175589060256, + 50.943371769915885 + ], + [ + 6.926891835398929, + 50.94296977741883 + ], + [ + 6.926814739138325, + 50.942860198507326 + ], + [ + 6.926725882606103, + 50.94273431627867 + ], + [ + 6.9267236638978815, + 50.942731102963286 + ], + [ + 6.926703925955502, + 50.94270266748409 + ], + [ + 6.926688866991989, + 50.942676221786655 + ], + [ + 6.926629983568662, + 50.94257418462916 + ], + [ + 6.926477096894189, + 50.94216857665334 + ], + [ + 6.926473358929003, + 50.94215843000944 + ], + [ + 6.926471983370583, + 50.94215469653393 + ], + [ + 6.926470401192219, + 50.94215039187968 + ], + [ + 6.926448699529789, + 50.94209133356328 + ], + [ + 6.926241022167456, + 50.941525775797636 + ], + [ + 6.926185751394113, + 50.941374986013024 + ], + [ + 6.92614566908759, + 50.94126566662159 + ], + [ + 6.926128773822743, + 50.94122020590462 + ], + [ + 6.925783990199666, + 50.940277082611956 + ], + [ + 6.925749575002669, + 50.94018295714899 + ], + [ + 6.925340467072058, + 50.93906401705837 + ], + [ + 6.925325574078443, + 50.93902333421846 + ], + [ + 6.925293489565125, + 50.93902749203509 + ], + [ + 6.924867359099988, + 50.93908297060457 + ], + [ + 6.9236487841926895, + 50.939283734453255 + ], + [ + 6.923653601334896, + 50.939350246584404 + ], + [ + 6.9236558865153, + 50.93938518589404 + ], + [ + 6.923656227560195, + 50.939390406568556 + ], + [ + 6.9236565931241865, + 50.93939558810645 + ], + [ + 6.923658144400246, + 50.939417511118066 + ], + [ + 6.9236833870291115, + 50.93975842329398 + ], + [ + 6.923692099207884, + 50.93987623700704 + ], + [ + 6.9236087596593, + 50.939909931237715 + ], + [ + 6.923516129722892, + 50.93994741023253 + ], + [ + 6.922956717960602, + 50.94017395654878 + ], + [ + 6.922619584070511, + 50.940310485990686 + ], + [ + 6.922534844729231, + 50.94032206036861 + ], + [ + 6.922506668048728, + 50.94032589663847 + ], + [ + 6.922502580396339, + 50.94032645795582 + ], + [ + 6.922496038577902, + 50.940327436080175 + ], + [ + 6.922376156211047, + 50.94034654409284 + ], + [ + 6.922370797969287, + 50.94034699645163 + ], + [ + 6.922368033974424, + 50.94042572130481 + ], + [ + 6.9223738857578905, + 50.94049510473707 + ], + [ + 6.922376653652637, + 50.940527944514415 + ], + [ + 6.922380348511157, + 50.940572783236156 + ], + [ + 6.922381550890004, + 50.94058735301516 + ], + [ + 6.9223924453038626, + 50.94068513958912 + ], + [ + 6.922405955086066, + 50.94080632152427 + ], + [ + 6.922422225675756, + 50.94095217133179 + ], + [ + 6.922424318007749, + 50.940976856990815 + ], + [ + 6.922416891405442, + 50.94099336785435 + ], + [ + 6.919969054053275, + 50.94196635119156 + ], + [ + 6.919443990260705, + 50.942180589439985 + ], + [ + 6.919263129083401, + 50.94225362618826 + ], + [ + 6.919199850690219, + 50.94227916942861 + ], + [ + 6.9190153749578265, + 50.94205683330785 + ], + [ + 6.9189888717139905, + 50.94202482586598 + ], + [ + 6.919003708558316, + 50.94200858491753 + ], + [ + 6.919039063639828, + 50.941997712982115 + ], + [ + 6.919022701060438, + 50.94197866111874 + ], + [ + 6.91875449694261, + 50.941676034525514 + ], + [ + 6.9186755632538, + 50.94156204453698 + ], + [ + 6.918587432517197, + 50.94142915730417 + ], + [ + 6.918307078290336, + 50.941512590792875 + ], + [ + 6.918231652149273, + 50.941535040664526 + ], + [ + 6.918226149667277, + 50.94153667834389 + ], + [ + 6.918219640184164, + 50.94153861554649 + ], + [ + 6.91816016146435, + 50.941556323123045 + ], + [ + 6.918068783380268, + 50.9415834835702 + ], + [ + 6.917895028072955, + 50.94163515512383 + ], + [ + 6.917886490248598, + 50.941637692892456 + ], + [ + 6.917877924996311, + 50.94164023916509 + ], + [ + 6.917723065360485, + 50.94168629988013 + ], + [ + 6.917459464850965, + 50.941764658185164 + ], + [ + 6.917440398751389, + 50.94176897504717 + ], + [ + 6.917432304001813, + 50.94177080298114 + ], + [ + 6.917425563310505, + 50.941772306111 + ], + [ + 6.91739462743547, + 50.94177927483881 + ], + [ + 6.917389849051116, + 50.9417806034186 + ], + [ + 6.917372366064128, + 50.941785712986366 + ], + [ + 6.917339359707512, + 50.941795913111974 + ], + [ + 6.917456894607436, + 50.941928776337356 + ], + [ + 6.918132984683035, + 50.9427133379895 + ], + [ + 6.918128427964783, + 50.94271505638731 + ], + [ + 6.9169455110881675, + 50.943160994978264 + ], + [ + 6.916835068015648, + 50.94320263068281 + ], + [ + 6.916829604845033, + 50.943204689009704 + ], + [ + 6.916793824555965, + 50.94321819327654 + ], + [ + 6.916761570809222, + 50.94323035203462 + ], + [ + 6.916736013142415, + 50.94323997260902 + ], + [ + 6.916732400508422, + 50.9432413327587 + ], + [ + 6.91672868170563, + 50.943242743177684 + ], + [ + 6.916684659257814, + 50.94325945411563 + ], + [ + 6.916612491463599, + 50.943286825856035 + ], + [ + 6.916476541878136, + 50.94333838666995 + ], + [ + 6.91484126336468, + 50.943958204920854 + ], + [ + 6.91478830704863, + 50.94390966017859 + ], + [ + 6.914712735444276, + 50.94383618082339 + ], + [ + 6.914396097863911, + 50.94352908509124 + ], + [ + 6.913794391105639, + 50.94294309847005 + ], + [ + 6.913755873347716, + 50.94290472874341 + ], + [ + 6.913649274745045, + 50.942949251511386 + ], + [ + 6.913133775045748, + 50.94247911877338 + ], + [ + 6.9135056464621725, + 50.94232596029028 + ], + [ + 6.9138342704248155, + 50.942190652171874 + ], + [ + 6.9134084582892585, + 50.94169193375919 + ], + [ + 6.913185650619816, + 50.94143083133567 + ], + [ + 6.9129026940481, + 50.941527745564834 + ], + [ + 6.9128024694076515, + 50.941561814678174 + ], + [ + 6.912798025409836, + 50.941563302843534 + ], + [ + 6.912793481346713, + 50.94156438719604 + ], + [ + 6.912732900107168, + 50.94157869422866 + ], + [ + 6.912692780107976, + 50.94152478205038 + ], + [ + 6.912675204783271, + 50.94150114952841 + ], + [ + 6.912645752256305, + 50.94146161311926 + ], + [ + 6.911860372354305, + 50.940539927345554 + ], + [ + 6.911036318324616, + 50.93957300290972 + ], + [ + 6.910821309171587, + 50.93944029167777 + ], + [ + 6.910799033771263, + 50.93942167783261 + ], + [ + 6.910723615718297, + 50.93952484074404 + ], + [ + 6.910714889119891, + 50.93953676415867 + ], + [ + 6.910703745414424, + 50.93955199091238 + ], + [ + 6.9105708934565, + 50.9397333991046 + ], + [ + 6.910545086084966, + 50.939768286489816 + ], + [ + 6.910525838999933, + 50.93979407262807 + ], + [ + 6.910304142355435, + 50.94009114986098 + ], + [ + 6.91028538936551, + 50.94008537379763 + ], + [ + 6.910280340951157, + 50.940083866897616 + ], + [ + 6.91027305214492, + 50.94008165794606 + ], + [ + 6.909390149254293, + 50.93981707399679 + ], + [ + 6.909219676459855, + 50.93976597407659 + ], + [ + 6.909139446000931, + 50.93974257776659 + ], + [ + 6.908913327192087, + 50.93967613105194 + ], + [ + 6.90884198582887, + 50.93977205651768 + ], + [ + 6.908742691690268, + 50.93990556372381 + ], + [ + 6.90860496086019, + 50.94009078743522 + ], + [ + 6.908355966847592, + 50.9404247062371 + ], + [ + 6.908399599570559, + 50.94043666555348 + ], + [ + 6.908418915934905, + 50.940442161513886 + ], + [ + 6.908424908728081, + 50.94044393994029 + ], + [ + 6.908430878653766, + 50.94044575213318 + ], + [ + 6.908565677992259, + 50.94048494661104 + ], + [ + 6.908597206326641, + 50.94049412665011 + ], + [ + 6.908632491728667, + 50.94050545336167 + ], + [ + 6.908667844910782, + 50.94051837857942 + ], + [ + 6.9085471282690945, + 50.94067705867202 + ], + [ + 6.908520475718364, + 50.94071252586549 + ], + [ + 6.908434083964599, + 50.940827513651904 + ], + [ + 6.9084216279313395, + 50.940843157375305 + ], + [ + 6.908402251527341, + 50.94086747485903 + ], + [ + 6.908366770128587, + 50.940911917952945 + ], + [ + 6.908362969586905, + 50.940916606688276 + ], + [ + 6.908256028575101, + 50.940891841701074 + ], + [ + 6.908213595138068, + 50.94088201467411 + ], + [ + 6.908207315861913, + 50.94088056027763 + ], + [ + 6.908098980276175, + 50.940855471561036 + ], + [ + 6.907980291034073, + 50.9410275567231 + ], + [ + 6.908008626605453, + 50.941101677151075 + ], + [ + 6.9080939648775255, + 50.94109292200572 + ], + [ + 6.908257492753354, + 50.94107832244691 + ], + [ + 6.908280413830806, + 50.941139534087135 + ], + [ + 6.908372205350255, + 50.94134496349751 + ], + [ + 6.908377048932672, + 50.94134440722428 + ], + [ + 6.9084122588959955, + 50.94134030194744 + ], + [ + 6.908418106504547, + 50.94133986259389 + ], + [ + 6.908426128276802, + 50.94135384331413 + ], + [ + 6.90843315246988, + 50.941373208748224 + ], + [ + 6.90842324068016, + 50.941390489063515 + ], + [ + 6.908414859367028, + 50.94139209808574 + ], + [ + 6.908410623966863, + 50.94139296385231 + ], + [ + 6.908405414696522, + 50.94139408738059 + ], + [ + 6.908379815681998, + 50.94140026795232 + ], + [ + 6.90841116196, + 50.94147789674381 + ], + [ + 6.908590070184715, + 50.94145696812131 + ], + [ + 6.9088089284841, + 50.94142378400174 + ], + [ + 6.908813867505946, + 50.94142303605294 + ], + [ + 6.908819139019796, + 50.94142223829841 + ], + [ + 6.90884673333404, + 50.94141806571807 + ], + [ + 6.90896434647168, + 50.941401879087294 + ], + [ + 6.908974802510526, + 50.94142861523747 + ], + [ + 6.909001162850096, + 50.94149600502822 + ], + [ + 6.9090173009130575, + 50.94153709635659 + ], + [ + 6.909045375098925, + 50.941608582939715 + ], + [ + 6.909003909514467, + 50.94161495162511 + ], + [ + 6.908911310779411, + 50.941634104650674 + ], + [ + 6.9089185782666505, + 50.94165027441027 + ], + [ + 6.908957283783313, + 50.94176219609494 + ], + [ + 6.9089012045822065, + 50.94177156683488 + ], + [ + 6.90877462607394, + 50.941791886450915 + ], + [ + 6.908717800118057, + 50.941801210448574 + ], + [ + 6.908398177851294, + 50.94185285391212 + ], + [ + 6.90849013173893, + 50.94209565092918 + ], + [ + 6.908541347251639, + 50.94226766154291 + ], + [ + 6.908533245404479, + 50.9422688447773 + ], + [ + 6.908476560690522, + 50.942277196261095 + ], + [ + 6.907817574669125, + 50.942373928681235 + ], + [ + 6.9078798225934195, + 50.9425379988078 + ], + [ + 6.907881259440145, + 50.94264819705124 + ], + [ + 6.907253635310267, + 50.94272001067603 + ], + [ + 6.906695876423739, + 50.94278469151925 + ], + [ + 6.906687464784253, + 50.94278566940832 + ], + [ + 6.906682689430594, + 50.94278622413762 + ], + [ + 6.906676487286426, + 50.942786945749454 + ], + [ + 6.906505162895924, + 50.942806873352666 + ], + [ + 6.90642112707467, + 50.94281663103935 + ], + [ + 6.906132977421185, + 50.9428500887517 + ], + [ + 6.905908207275314, + 50.94287626358629 + ], + [ + 6.905828415519129, + 50.94288553126799 + ], + [ + 6.905718484983392, + 50.94289829193598 + ], + [ + 6.905711946885996, + 50.94289904434435 + ], + [ + 6.90570623425081, + 50.942899706333606 + ], + [ + 6.905664404925651, + 50.942904534767784 + ], + [ + 6.904819688568523, + 50.9430044458018 + ], + [ + 6.904997607603931, + 50.94360950639597 + ], + [ + 6.903913028616475, + 50.94372175904444 + ], + [ + 6.903885065919904, + 50.94382391874788 + ], + [ + 6.903734670066903, + 50.94439642261108 + ], + [ + 6.902895477699122, + 50.94446064344544 + ], + [ + 6.902710637177087, + 50.944141997557054 + ], + [ + 6.902668429966344, + 50.944123404514386 + ], + [ + 6.902446263265305, + 50.94422001775527 + ], + [ + 6.902190438854049, + 50.94429174152371 + ], + [ + 6.9019906254600425, + 50.94433903143887 + ], + [ + 6.901861404423523, + 50.944363305563314 + ], + [ + 6.901598886138648, + 50.94413656277726 + ], + [ + 6.90174241774368, + 50.94407901088989 + ], + [ + 6.901935114425162, + 50.94398649486398 + ], + [ + 6.902108368994845, + 50.943878595954345 + ], + [ + 6.902209566442635, + 50.943797312479056 + ], + [ + 6.902357159067196, + 50.94365855832398 + ], + [ + 6.902328868760387, + 50.943656676620535 + ], + [ + 6.901828162409768, + 50.94362318454571 + ], + [ + 6.900791041869645, + 50.94355002063039 + ], + [ + 6.900584027187627, + 50.943535977441215 + ], + [ + 6.900500691314251, + 50.94402410892646 + ], + [ + 6.900165823536785, + 50.94400229909427 + ], + [ + 6.899486317568885, + 50.94396505184226 + ], + [ + 6.899542032302366, + 50.94363115025415 + ], + [ + 6.899602808566487, + 50.9432701810331 + ], + [ + 6.899511769605601, + 50.94326410902414 + ], + [ + 6.899503827170378, + 50.9432635784796 + ], + [ + 6.89949942318648, + 50.94326328158658 + ], + [ + 6.899494005899711, + 50.94326291519578 + ], + [ + 6.899469028046967, + 50.94326123540073 + ], + [ + 6.899428861106993, + 50.94325856548125 + ], + [ + 6.899222203044589, + 50.94323279742904 + ], + [ + 6.899222855565111, + 50.94322833384227 + ], + [ + 6.899225014528726, + 50.94321249678726 + ], + [ + 6.899228694694486, + 50.943185653477656 + ], + [ + 6.899236356047192, + 50.94312203769118 + ], + [ + 6.89923827657068, + 50.943107731591496 + ], + [ + 6.899241446653542, + 50.9430727513784 + ], + [ + 6.899241911848182, + 50.94306704327196 + ], + [ + 6.899242597606093, + 50.943061684497735 + ], + [ + 6.899244997864946, + 50.943047820533494 + ], + [ + 6.899244223335541, + 50.943025751927124 + ], + [ + 6.899210557481771, + 50.943023568568094 + ], + [ + 6.899178346895491, + 50.94302147164718 + ], + [ + 6.8991535956015095, + 50.94301985342135 + ], + [ + 6.899149416916326, + 50.94301958035591 + ], + [ + 6.8991423625707595, + 50.94301911883248 + ], + [ + 6.899133850562333, + 50.943018560923896 + ], + [ + 6.899020617606684, + 50.94301115465223 + ], + [ + 6.8989029028670945, + 50.94300344185999 + ], + [ + 6.898849078069861, + 50.94299939089605 + ], + [ + 6.898783747346909, + 50.942994469961256 + ], + [ + 6.898697396777204, + 50.94298792588267 + ], + [ + 6.898718130234336, + 50.9428685579329 + ], + [ + 6.898719377457158, + 50.942862587794 + ], + [ + 6.89872052650666, + 50.94285800543471 + ], + [ + 6.8987215290424215, + 50.94285402032663 + ], + [ + 6.898722894766388, + 50.942848010949064 + ], + [ + 6.89872352009523, + 50.94284383557709 + ], + [ + 6.898724235861996, + 50.94284008544237 + ], + [ + 6.898731438921196, + 50.94280356613887 + ], + [ + 6.89873207301735, + 50.9427999539384 + ], + [ + 6.898734180279517, + 50.94278804446498 + ], + [ + 6.898734979752373, + 50.942783890215146 + ], + [ + 6.89873905896067, + 50.942764050401095 + ], + [ + 6.898739780543676, + 50.94276067631306 + ], + [ + 6.898740609662362, + 50.942757316751994 + ], + [ + 6.8987414808784795, + 50.94275327621639 + ], + [ + 6.898743880717128, + 50.94274273907129 + ], + [ + 6.8987472856601535, + 50.942717521401 + ], + [ + 6.898748351103225, + 50.94271037339542 + ], + [ + 6.898765316318463, + 50.94260126072452 + ], + [ + 6.899058923364692, + 50.94262890206866 + ], + [ + 6.899059291552934, + 50.942626103519395 + ], + [ + 6.899060058296874, + 50.942620274926625 + ], + [ + 6.899060538416468, + 50.94261663566996 + ], + [ + 6.8990609740828095, + 50.94261335086953 + ], + [ + 6.899064755729315, + 50.942585046992 + ], + [ + 6.8990652923371965, + 50.94258110206231 + ], + [ + 6.899065731045969, + 50.94257778134127 + ], + [ + 6.899073521284004, + 50.94251898137651 + ], + [ + 6.899086190633808, + 50.94242341700061 + ], + [ + 6.899104162889949, + 50.94230776680199 + ], + [ + 6.899122372703565, + 50.94218968714382 + ], + [ + 6.899092330669148, + 50.942187939509346 + ], + [ + 6.899070874655596, + 50.94218671513862 + ], + [ + 6.899065076750678, + 50.94218639494061 + ], + [ + 6.898920214787484, + 50.94217841662121 + ], + [ + 6.898890360144793, + 50.942176870171686 + ], + [ + 6.898858669242398, + 50.942176268293096 + ], + [ + 6.898854351350124, + 50.94217621126109 + ], + [ + 6.898835444078948, + 50.942176015747584 + ], + [ + 6.898830388735158, + 50.94217592835289 + ], + [ + 6.8988151000336675, + 50.942175513762486 + ], + [ + 6.898808807403341, + 50.94217533664272 + ], + [ + 6.898802618972399, + 50.94217515330371 + ], + [ + 6.898775573893158, + 50.9421743445241 + ], + [ + 6.898692890386328, + 50.94217203238064 + ], + [ + 6.898686732174864, + 50.942172031254835 + ], + [ + 6.8986308452178315, + 50.94217165122043 + ], + [ + 6.898590861392044, + 50.942170719212235 + ], + [ + 6.898563254405042, + 50.94217031218577 + ], + [ + 6.8985335761810145, + 50.94216993621995 + ], + [ + 6.89852832016392, + 50.94216987937621 + ], + [ + 6.898523010568969, + 50.94217003202339 + ], + [ + 6.898469953099665, + 50.9421715258976 + ], + [ + 6.898468538872574, + 50.942174128435745 + ], + [ + 6.89846030664111, + 50.94220698310029 + ], + [ + 6.898459071703776, + 50.94221182832996 + ], + [ + 6.898458320044492, + 50.94221593217428 + ], + [ + 6.898443003168351, + 50.942301394626384 + ], + [ + 6.898439909770223, + 50.942318628678485 + ], + [ + 6.898360697391993, + 50.942312165180326 + ], + [ + 6.898248312501859, + 50.942303071782014 + ], + [ + 6.898017401295184, + 50.94231231588726 + ], + [ + 6.898021019792967, + 50.94251737654714 + ], + [ + 6.897831603379979, + 50.94252244152293 + ], + [ + 6.897718108047072, + 50.94252548818007 + ], + [ + 6.89771097701254, + 50.942525687134456 + ], + [ + 6.897703845572527, + 50.94252589507491 + ], + [ + 6.897683870924161, + 50.942526478805675 + ], + [ + 6.897589580708811, + 50.94252933786749 + ], + [ + 6.897607510663045, + 50.9427962505466 + ], + [ + 6.897356605639292, + 50.94277858708162 + ], + [ + 6.897325701429622, + 50.942954300547264 + ], + [ + 6.897289027123448, + 50.94316304424344 + ], + [ + 6.896995060124183, + 50.94315821292589 + ], + [ + 6.89698749370205, + 50.943158089209106 + ], + [ + 6.896983112444334, + 50.943158014777964 + ], + [ + 6.89697721895093, + 50.94315791760068 + ], + [ + 6.896831101005989, + 50.94315550194605 + ], + [ + 6.896825817731724, + 50.943155415754966 + ], + [ + 6.896820716040512, + 50.94315534362771 + ], + [ + 6.896798556489159, + 50.943155031631775 + ], + [ + 6.896791313690651, + 50.94315492902233 + ], + [ + 6.896787058420711, + 50.94315487034444 + ], + [ + 6.896782798883519, + 50.94315481158955 + ], + [ + 6.8967029159222015, + 50.943153715902 + ], + [ + 6.896628738051813, + 50.94315275982887 + ], + [ + 6.896173171008506, + 50.94314654087338 + ], + [ + 6.895918006971836, + 50.94314308876895 + ], + [ + 6.8954774456981385, + 50.943137128565986 + ], + [ + 6.8954286924958454, + 50.94316555694642 + ], + [ + 6.895378267162178, + 50.94319548411206 + ], + [ + 6.895332252421024, + 50.94322275485105 + ], + [ + 6.895236632374729, + 50.94327947370052 + ], + [ + 6.89521104737101, + 50.94329454655222 + ], + [ + 6.895179431790841, + 50.94331324940158 + ], + [ + 6.895099354505478, + 50.94335965364474 + ], + [ + 6.895095284614074, + 50.943361888077916 + ], + [ + 6.895090452172579, + 50.94336228391245 + ], + [ + 6.893903690000751, + 50.94348291253242 + ], + [ + 6.893894455586212, + 50.94348384857533 + ], + [ + 6.893885221211942, + 50.94348478371887 + ], + [ + 6.893856869014634, + 50.943487650284716 + ], + [ + 6.893849812735669, + 50.94348836480016 + ], + [ + 6.893844193795511, + 50.94348893256574 + ], + [ + 6.893834427554644, + 50.943489918368115 + ], + [ + 6.893813530804419, + 50.94349202634584 + ], + [ + 6.893793030177263, + 50.943494094698835 + ], + [ + 6.893770696287186, + 50.943496344924384 + ], + [ + 6.893764010608165, + 50.94349701755446 + ], + [ + 6.893759048216451, + 50.94349751621722 + ], + [ + 6.893753787034179, + 50.94349804276601 + ], + [ + 6.893745914646126, + 50.94349882889126 + ], + [ + 6.893717884997008, + 50.94350161400287 + ], + [ + 6.8936750153481166, + 50.94350585906243 + ], + [ + 6.893522880652033, + 50.943711609947115 + ], + [ + 6.893638981196283, + 50.94370435128181 + ], + [ + 6.893736197630457, + 50.943721217711335 + ], + [ + 6.893322886911569, + 50.94469513011011 + ], + [ + 6.893315096181368, + 50.94471368949728 + ], + [ + 6.893307305404107, + 50.944732249782476 + ], + [ + 6.8932384911200675, + 50.94489645039932 + ], + [ + 6.893212369277292, + 50.94495878022452 + ], + [ + 6.8931854863049935, + 50.94502207303778 + ], + [ + 6.89318443161901, + 50.945024555188766 + ], + [ + 6.8931833722997435, + 50.94502704535059 + ], + [ + 6.893180175849327, + 50.945034546980665 + ], + [ + 6.893178954329475, + 50.94503741285559 + ], + [ + 6.893177499771341, + 50.94504083574001 + ], + [ + 6.893176273211859, + 50.94504375009062 + ], + [ + 6.893174211429351, + 50.94504866938273 + ], + [ + 6.893138224512619, + 50.94513459095547 + ], + [ + 6.893112597757278, + 50.945192294271024 + ], + [ + 6.893090871295912, + 50.94524131787279 + ], + [ + 6.893083059971919, + 50.94525954140241 + ], + [ + 6.893081106967219, + 50.94526410110398 + ], + [ + 6.893079616832615, + 50.94526758630188 + ], + [ + 6.893077978151699, + 50.94527142857213 + ], + [ + 6.8930492240521195, + 50.94533887870934 + ], + [ + 6.89287835091461, + 50.94574086337154 + ], + [ + 6.892853042080864, + 50.945800210144334 + ], + [ + 6.892779834416302, + 50.94596943608322 + ], + [ + 6.892656123374139, + 50.94625529881375 + ], + [ + 6.892654891342449, + 50.9462582067643 + ], + [ + 6.892647038936396, + 50.94627745661816 + ], + [ + 6.89259427049043, + 50.94640841928943 + ], + [ + 6.8925927022817834, + 50.94641252724356 + ], + [ + 6.892592761718879, + 50.94641615462986 + ], + [ + 6.892592888321314, + 50.94642862056864 + ], + [ + 6.892592929351598, + 50.946431553298765 + ], + [ + 6.892592952004404, + 50.94643549030827 + ], + [ + 6.8925929788877145, + 50.94644499907345 + ], + [ + 6.892592852209341, + 50.946450065710714 + ], + [ + 6.892592266353396, + 50.946453480885594 + ], + [ + 6.892591422047235, + 50.94645675558804 + ], + [ + 6.892541714546296, + 50.94664300731419 + ], + [ + 6.892528302710774, + 50.94667839875958 + ], + [ + 6.892517298775333, + 50.94669539991381 + ], + [ + 6.892510165126507, + 50.94670643697445 + ], + [ + 6.892507455546175, + 50.9467106295502 + ], + [ + 6.892505081848208, + 50.94671432093741 + ], + [ + 6.892487265160277, + 50.94674203127061 + ], + [ + 6.892470712566261, + 50.946767887409216 + ], + [ + 6.892467645552901, + 50.946772679715565 + ], + [ + 6.8924645785389105, + 50.94677747202182 + ], + [ + 6.892458406181453, + 50.946787117100186 + ], + [ + 6.89245526714389, + 50.94679202232762 + ], + [ + 6.892453433477755, + 50.94679488523793 + ], + [ + 6.892451604444865, + 50.946797740137406 + ], + [ + 6.892444983816136, + 50.94680807324491 + ], + [ + 6.892443016916722, + 50.946811143306036 + ], + [ + 6.8924410900517294, + 50.946814146636164 + ], + [ + 6.892411172481081, + 50.94686078996174 + ], + [ + 6.892380189111135, + 50.94690905631163 + ], + [ + 6.892370049693872, + 50.94692485169751 + ], + [ + 6.892359887793661, + 50.94694064038093 + ], + [ + 6.892291190634458, + 50.94701631625005 + ], + [ + 6.892217622487693, + 50.947097159228484 + ], + [ + 6.892177634917419, + 50.94713423111688 + ], + [ + 6.8921533647093645, + 50.947156738865026 + ], + [ + 6.892150175613478, + 50.947159696915186 + ], + [ + 6.89214666851393, + 50.947162949617415 + ], + [ + 6.892141222178835, + 50.94716799934853 + ], + [ + 6.892052920735684, + 50.947249887501066 + ], + [ + 6.892036281505002, + 50.94726525160842 + ], + [ + 6.892019640840722, + 50.94728061568752 + ], + [ + 6.8918508432661225, + 50.94742015941138 + ], + [ + 6.891838228334138, + 50.94743027811013 + ], + [ + 6.891825612014786, + 50.94744039588307 + ], + [ + 6.89176365949692, + 50.9474900373814 + ], + [ + 6.891742678955707, + 50.947506853797385 + ], + [ + 6.891721698399264, + 50.947523670209364 + ], + [ + 6.891690795126502, + 50.947548401865475 + ], + [ + 6.8916966650584675, + 50.94756819087655 + ], + [ + 6.891701442573866, + 50.9475842771843 + ], + [ + 6.891541807249194, + 50.94765304438389 + ], + [ + 6.891316706707705, + 50.94775001174349 + ], + [ + 6.891323779643128, + 50.94777382475867 + ], + [ + 6.891330852626107, + 50.94779763687477 + ], + [ + 6.890686210179291, + 50.948064236862486 + ], + [ + 6.8906778720215724, + 50.948037841302664 + ], + [ + 6.8906711462353805, + 50.94801668140487 + ], + [ + 6.890417582919175, + 50.94811824396151 + ], + [ + 6.890416411525974, + 50.94813710084919 + ], + [ + 6.890416143156812, + 50.94814142383203 + ], + [ + 6.890415840981353, + 50.948146304721 + ], + [ + 6.890413126273443, + 50.94819028227557 + ], + [ + 6.88980458868198, + 50.94846587884712 + ], + [ + 6.889709134852174, + 50.94850910728287 + ], + [ + 6.889656759831384, + 50.94856083559231 + ], + [ + 6.8896376909701775, + 50.94857709889489 + ], + [ + 6.889634872665395, + 50.948579503264305 + ], + [ + 6.889631899941513, + 50.94858201636571 + ], + [ + 6.889251086498883, + 50.94890580436663 + ], + [ + 6.889285812290941, + 50.94890959714987 + ], + [ + 6.889311267313246, + 50.94891227435806 + ], + [ + 6.889506015373255, + 50.94893279987043 + ], + [ + 6.890376136514097, + 50.94902449871152 + ], + [ + 6.890486865326232, + 50.94903282318066 + ], + [ + 6.893507083012127, + 50.94934288170055 + ], + [ + 6.896197628337706, + 50.94961638005016 + ], + [ + 6.896257664742686, + 50.94962243102729 + ], + [ + 6.896911776981169, + 50.94969341563271 + ], + [ + 6.896973038946508, + 50.94970323064833 + ], + [ + 6.896964703487075, + 50.94975988727696 + ], + [ + 6.896960368866598, + 50.949773998746636 + ], + [ + 6.897128322423406, + 50.949794588219945 + ], + [ + 6.897210853283162, + 50.94980168425057 + ], + [ + 6.897400035045668, + 50.94983421005757 + ], + [ + 6.897419951638973, + 50.94983769501583 + ], + [ + 6.897417011664713, + 50.94993100063968 + ], + [ + 6.897345055545946, + 50.9499425028742 + ], + [ + 6.897040033634055, + 50.949991142565054 + ], + [ + 6.8972542059018584, + 50.950616191958346 + ], + [ + 6.896889483548057, + 50.95067545872285 + ], + [ + 6.897078697767688, + 50.95110160739703 + ], + [ + 6.8968798126464685, + 50.951132676092676 + ], + [ + 6.897044700793483, + 50.95151066803897 + ], + [ + 6.897360837281635, + 50.95214275033881 + ], + [ + 6.89687534976625, + 50.95225652196744 + ], + [ + 6.897546903039231, + 50.95261183634154 + ], + [ + 6.898582585989062, + 50.95242364068212 + ], + [ + 6.898658682061132, + 50.95258279162108 + ], + [ + 6.898770377508815, + 50.952729175256174 + ], + [ + 6.8986317554407774, + 50.95275091764469 + ], + [ + 6.898679018862037, + 50.9529139790362 + ], + [ + 6.898707988234898, + 50.953013986457314 + ], + [ + 6.898629764733205, + 50.95304605078677 + ], + [ + 6.899109968174533, + 50.953548897996995 + ], + [ + 6.899495471080678, + 50.95395268397945 + ], + [ + 6.89972491071838, + 50.95387308031097 + ], + [ + 6.899759953651658, + 50.95388677064561 + ], + [ + 6.899828137560863, + 50.95386014429065 + ], + [ + 6.899946848567545, + 50.953810243327204 + ], + [ + 6.90010753612085, + 50.95395732160377 + ], + [ + 6.900245419621626, + 50.954095707106724 + ], + [ + 6.900226216193279, + 50.954103457952506 + ], + [ + 6.9001561463677135, + 50.954142097832325 + ], + [ + 6.900170089198837, + 50.954167367600846 + ], + [ + 6.900204313827046, + 50.95422975896972 + ], + [ + 6.900188119305202, + 50.95423804149861 + ], + [ + 6.900177117799744, + 50.95425194592433 + ], + [ + 6.9001350230132585, + 50.9543043647174 + ], + [ + 6.900130300289418, + 50.95436193191328 + ], + [ + 6.900080863975172, + 50.95438137053506 + ], + [ + 6.9001244004711255, + 50.95443218439575 + ], + [ + 6.900118835419337, + 50.954497758920844 + ], + [ + 6.900017894546769, + 50.95453269651719 + ], + [ + 6.900194217986269, + 50.954738270139856 + ], + [ + 6.900315582796251, + 50.95475279153827 + ], + [ + 6.900491562306192, + 50.954704520752976 + ], + [ + 6.900529931167751, + 50.95474448852231 + ], + [ + 6.900611038245535, + 50.95478062807946 + ], + [ + 6.900743637658751, + 50.95477942661111 + ], + [ + 6.900892175722135, + 50.9548357140085 + ], + [ + 6.900967946675688, + 50.954809254878825 + ], + [ + 6.901113546481957, + 50.954962918221455 + ], + [ + 6.900856551704297, + 50.95505317611381 + ], + [ + 6.9008837535981, + 50.95508353005406 + ], + [ + 6.900991132019667, + 50.95521214658058 + ], + [ + 6.901103426534417, + 50.95534461709221 + ], + [ + 6.901264225142079, + 50.955534550289926 + ], + [ + 6.901314770448103, + 50.95559438815298 + ], + [ + 6.901353289795128, + 50.95562851956114 + ], + [ + 6.901415431259585, + 50.955684582469644 + ], + [ + 6.901441847690931, + 50.95571844772697 + ], + [ + 6.901499078724521, + 50.955792795777135 + ], + [ + 6.9015800987396245, + 50.955897704237465 + ], + [ + 6.901622876534882, + 50.95595328767915 + ], + [ + 6.901778091160377, + 50.95597207730404 + ], + [ + 6.901801778589562, + 50.95597372707223 + ], + [ + 6.901831524195765, + 50.95597125412414 + ], + [ + 6.90185214540392, + 50.95596447374213 + ], + [ + 6.901967119284306, + 50.955919716369046 + ], + [ + 6.901980626936074, + 50.9559075800291 + ], + [ + 6.901981725739544, + 50.955894820472054 + ], + [ + 6.902028253223381, + 50.955868090555356 + ], + [ + 6.902093968803035, + 50.95593849948837 + ], + [ + 6.902143769448659, + 50.95598926413506 + ], + [ + 6.902679589867385, + 50.956560343871864 + ], + [ + 6.902785320921738, + 50.95670096548538 + ], + [ + 6.90284712176963, + 50.95678316108404 + ], + [ + 6.902931311440898, + 50.95689513437066 + ], + [ + 6.90212265637436, + 50.957162076609094 + ], + [ + 6.9025959590859065, + 50.957804115809914 + ], + [ + 6.902623438792255, + 50.95784138784446 + ], + [ + 6.902743596719851, + 50.958004423064295 + ], + [ + 6.903399221060676, + 50.95778684396617 + ], + [ + 6.903453026819343, + 50.95786040908545 + ], + [ + 6.903554423001094, + 50.95782726015337 + ], + [ + 6.903562390037804, + 50.957824643015734 + ], + [ + 6.903568087514302, + 50.957822746000005 + ], + [ + 6.903790449969798, + 50.95774821733745 + ], + [ + 6.90400480314191, + 50.95796104129941 + ], + [ + 6.90434402468361, + 50.958293263154616 + ], + [ + 6.904386629596138, + 50.95828106782691 + ], + [ + 6.905479912403221, + 50.95935867316899 + ], + [ + 6.905391288261521, + 50.9594710976285 + ], + [ + 6.905461056567104, + 50.95953815513258 + ], + [ + 6.905436041155701, + 50.95954733871149 + ], + [ + 6.905194514645568, + 50.95963604806985 + ], + [ + 6.905151268414837, + 50.959651934936886 + ], + [ + 6.90520904706988, + 50.95971000670941 + ], + [ + 6.905343328887292, + 50.959844792982025 + ], + [ + 6.905535908394413, + 50.96004321187902 + ], + [ + 6.905842980255007, + 50.960069386095626 + ], + [ + 6.90585345562517, + 50.960019991176786 + ], + [ + 6.905862718840869, + 50.9599181604542 + ], + [ + 6.906216585438935, + 50.960127658984895 + ], + [ + 6.906222944236139, + 50.96013148655949 + ], + [ + 6.906228141995685, + 50.96013633659296 + ], + [ + 6.906410515844514, + 50.96030719296551 + ], + [ + 6.906277919028973, + 50.96036335671722 + ], + [ + 6.906290897923022, + 50.96037397550394 + ], + [ + 6.906226966420926, + 50.960399266281875 + ], + [ + 6.906330241929637, + 50.96049648314831 + ], + [ + 6.906214458620386, + 50.96054445009744 + ], + [ + 6.906249100134642, + 50.960638547469486 + ], + [ + 6.9062727689100365, + 50.96063366828067 + ], + [ + 6.906301020885463, + 50.9607103074129 + ], + [ + 6.9063292698760375, + 50.960786856545354 + ], + [ + 6.905992447744422, + 50.960835480313634 + ], + [ + 6.905965447154979, + 50.96090703636345 + ], + [ + 6.906025477549646, + 50.96110662591661 + ], + [ + 6.905571753170289, + 50.961146104243305 + ], + [ + 6.905858853193706, + 50.96144600515828 + ], + [ + 6.905952996054059, + 50.96154397589415 + ], + [ + 6.907329390348067, + 50.96144644830775 + ], + [ + 6.907592104283972, + 50.96142202234227 + ], + [ + 6.907798965994795, + 50.96140980592602 + ], + [ + 6.908096259528667, + 50.96134843320155 + ], + [ + 6.90815861906825, + 50.9614072780622 + ], + [ + 6.908214593333587, + 50.96146005909364 + ], + [ + 6.908378463957483, + 50.96161468873838 + ], + [ + 6.908561945088037, + 50.96154910204629 + ], + [ + 6.909147143356838, + 50.961376875354 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Ehrenfeld", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "401", + "Population_rel": 0.035298334620050734, + "Population_abs": 38406 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.969713679766827, + 50.882965035773886 + ], + [ + 6.970253206770163, + 50.88073440783413 + ], + [ + 6.970377440115811, + 50.88074329886826 + ], + [ + 6.970513175656443, + 50.88060135821865 + ], + [ + 6.97083773461989, + 50.88045168013463 + ], + [ + 6.971175362557767, + 50.88030189291681 + ], + [ + 6.971715730203002, + 50.88006204909387 + ], + [ + 6.972373474355708, + 50.87978194089207 + ], + [ + 6.972611459334457, + 50.879692309983284 + ], + [ + 6.972862639240423, + 50.87960850108642 + ], + [ + 6.973073952245979, + 50.879541385112475 + ], + [ + 6.973319417532764, + 50.879469848783074 + ], + [ + 6.973450832211919, + 50.87944160435334 + ], + [ + 6.973577933105026, + 50.87942454243721 + ], + [ + 6.973654540746055, + 50.879418689445046 + ], + [ + 6.977173821867668, + 50.87915148946569 + ], + [ + 6.977938717636042, + 50.879125212775996 + ], + [ + 6.977947092819008, + 50.87912487314299 + ], + [ + 6.978089080566431, + 50.879119906466684 + ], + [ + 6.978885343692141, + 50.87909210211576 + ], + [ + 6.978919476216829, + 50.87908971006858 + ], + [ + 6.980949869623191, + 50.87894737794227 + ], + [ + 6.98160674248864, + 50.878899511554565 + ], + [ + 6.981615258022954, + 50.87889908055049 + ], + [ + 6.982785139740761, + 50.87885426032769 + ], + [ + 6.983422786531349, + 50.87889212579927 + ], + [ + 6.9835162106420885, + 50.878902215201826 + ], + [ + 6.9850407478490695, + 50.879066172796016 + ], + [ + 6.987428016760754, + 50.879341562101175 + ], + [ + 6.98750798038389, + 50.87932650146935 + ], + [ + 6.987634138912671, + 50.87930547681626 + ], + [ + 6.987778022323907, + 50.879289426377326 + ], + [ + 6.989008768302934, + 50.87915257476899 + ], + [ + 6.989412695494344, + 50.87910765820641 + ], + [ + 6.9895536786064945, + 50.87909198011703 + ], + [ + 6.989718540414619, + 50.879073591492165 + ], + [ + 6.990100759728467, + 50.87891923511486 + ], + [ + 6.990321666170303, + 50.87883007275178 + ], + [ + 6.991393354186204, + 50.87839711710564 + ], + [ + 6.9944020648831815, + 50.877182088154726 + ], + [ + 6.995328590248492, + 50.87680789070821 + ], + [ + 6.995754187903582, + 50.875841409778715 + ], + [ + 6.995766389760367, + 50.87583697856039 + ], + [ + 6.99584210711536, + 50.87577646285469 + ], + [ + 6.996237727884764, + 50.87530680132705 + ], + [ + 6.997093895433381, + 50.87425527127731 + ], + [ + 6.997101787599612, + 50.87424558550912 + ], + [ + 6.997037694349727, + 50.874224828436795 + ], + [ + 6.997029966829203, + 50.87422228724427 + ], + [ + 6.997034532141574, + 50.87421649535249 + ], + [ + 6.997042139961548, + 50.87420681100284 + ], + [ + 6.997005486390834, + 50.874194809133655 + ], + [ + 6.9970037299714605, + 50.8741942339577 + ], + [ + 6.996910509405319, + 50.8741637077846 + ], + [ + 6.996891824287974, + 50.874186880646405 + ], + [ + 6.9965090157849605, + 50.87409108787914 + ], + [ + 6.996502157965927, + 50.87408934854291 + ], + [ + 6.996285582512218, + 50.874034775922226 + ], + [ + 6.996100714432167, + 50.87432821703737 + ], + [ + 6.995945608379151, + 50.87428903827979 + ], + [ + 6.996209892143984, + 50.87386881741724 + ], + [ + 6.995747931227899, + 50.873752032912805 + ], + [ + 6.99590544317789, + 50.873503298392386 + ], + [ + 6.997283656101948, + 50.873851472207555 + ], + [ + 6.997293849735618, + 50.87385404761705 + ], + [ + 6.997397887137464, + 50.87388032968427 + ], + [ + 6.997655252969073, + 50.873562341833626 + ], + [ + 6.997668085835187, + 50.873546487417016 + ], + [ + 6.9979604750266855, + 50.8731874648697 + ], + [ + 6.998148119626806, + 50.872973168148626 + ], + [ + 6.998186975525411, + 50.872928885509616 + ], + [ + 6.99819389320609, + 50.87292113190843 + ], + [ + 6.998193950030119, + 50.87292106632912 + ], + [ + 6.9981939753703175, + 50.872921038883035 + ], + [ + 6.998199836089031, + 50.872914466023 + ], + [ + 6.998208593196508, + 50.87290442087707 + ], + [ + 6.998247325800655, + 50.872861752290675 + ], + [ + 6.998488975476629, + 50.872595570754214 + ], + [ + 6.998361203594606, + 50.872563366581026 + ], + [ + 6.998339982385208, + 50.87255801726481 + ], + [ + 6.998249606200572, + 50.8725352387387 + ], + [ + 6.998002603231655, + 50.8724729818842 + ], + [ + 6.9982545335624335, + 50.872150433123295 + ], + [ + 6.9982687603248435, + 50.87213215443848 + ], + [ + 6.998271153303083, + 50.87212908453209 + ], + [ + 6.9984122327364995, + 50.871903320061435 + ], + [ + 6.996754955742071, + 50.87148213500266 + ], + [ + 6.9967985257900525, + 50.8714534453825 + ], + [ + 6.996698435444786, + 50.871423287617354 + ], + [ + 6.997018285546654, + 50.87128616113715 + ], + [ + 6.9978654174247215, + 50.87080053995725 + ], + [ + 6.998385491490543, + 50.870502397002056 + ], + [ + 6.999137553985041, + 50.87007125174337 + ], + [ + 6.999214959633426, + 50.870026877041035 + ], + [ + 6.999280803145826, + 50.869989128535515 + ], + [ + 6.999932294861138, + 50.87008152919343 + ], + [ + 6.9999901510265, + 50.870089840091254 + ], + [ + 6.999991465673678, + 50.870089875217104 + ], + [ + 6.999993135161784, + 50.87008992182158 + ], + [ + 7.000083642212536, + 50.87009285192699 + ], + [ + 7.000089379281727, + 50.87009303750194 + ], + [ + 7.000099533580599, + 50.869704785878895 + ], + [ + 7.000061231762759, + 50.869422035730736 + ], + [ + 6.999985686186975, + 50.8691249522759 + ], + [ + 6.99982563461074, + 50.868755689171714 + ], + [ + 6.999757887895492, + 50.86861037133544 + ], + [ + 6.999623659063792, + 50.86837222172961 + ], + [ + 6.999165635415733, + 50.86775335717993 + ], + [ + 6.998892179135026, + 50.86744133798395 + ], + [ + 6.997687330932573, + 50.86610772463471 + ], + [ + 6.997203550735243, + 50.865464530371106 + ], + [ + 6.997022010752934, + 50.86555103292482 + ], + [ + 6.99699838683495, + 50.86556229235406 + ], + [ + 6.996673129441987, + 50.865717174067925 + ], + [ + 6.996108328727747, + 50.86590331638822 + ], + [ + 6.995152366773298, + 50.86621864633756 + ], + [ + 6.994416868063639, + 50.86640767527732 + ], + [ + 6.99394612004985, + 50.866528551196055 + ], + [ + 6.993223583900836, + 50.8666261286688 + ], + [ + 6.993215226046443, + 50.866627278228805 + ], + [ + 6.991338912780729, + 50.86688478844892 + ], + [ + 6.9911488291812836, + 50.866910854628415 + ], + [ + 6.99098871813561, + 50.86693684659705 + ], + [ + 6.990841744165695, + 50.86699293036807 + ], + [ + 6.990723452403289, + 50.86708185239379 + ], + [ + 6.990650759949777, + 50.86714395754842 + ], + [ + 6.990591163265293, + 50.86717386005404 + ], + [ + 6.9905013274830665, + 50.86719799473088 + ], + [ + 6.990125175627981, + 50.86715649734387 + ], + [ + 6.9896909992317795, + 50.86710859640841 + ], + [ + 6.988022343989318, + 50.8669503262628 + ], + [ + 6.987354142025981, + 50.86688415884459 + ], + [ + 6.985325053447146, + 50.866622014728506 + ], + [ + 6.985130011183256, + 50.8665948966871 + ], + [ + 6.984670261163297, + 50.86649737775919 + ], + [ + 6.984667267921455, + 50.86649695281283 + ], + [ + 6.984665698160298, + 50.86649660731659 + ], + [ + 6.98466384229061, + 50.866496173235724 + ], + [ + 6.984662558715571, + 50.86649591452664 + ], + [ + 6.984538989136958, + 50.86646971973268 + ], + [ + 6.984363768075279, + 50.8664327231002 + ], + [ + 6.983686165593703, + 50.86626350518981 + ], + [ + 6.983675981434048, + 50.86626053480761 + ], + [ + 6.983675727798563, + 50.866260451278656 + ], + [ + 6.98367244046365, + 50.86625939885077 + ], + [ + 6.983597259142531, + 50.86623737687849 + ], + [ + 6.982963185341165, + 50.86605735980704 + ], + [ + 6.981848597647495, + 50.86568990918398 + ], + [ + 6.9809615472656334, + 50.86542867876334 + ], + [ + 6.980142385905879, + 50.865220627323914 + ], + [ + 6.980055673642483, + 50.86519735384002 + ], + [ + 6.978335580321781, + 50.8648299228681 + ], + [ + 6.976989701317228, + 50.86464303586843 + ], + [ + 6.975993630291019, + 50.86454612012872 + ], + [ + 6.975987590218274, + 50.864545532377896 + ], + [ + 6.975330788940512, + 50.86449492335744 + ], + [ + 6.974519604725478, + 50.864434690042366 + ], + [ + 6.9743638277881645, + 50.86441657374297 + ], + [ + 6.973961383443751, + 50.86438802319684 + ], + [ + 6.973578271364096, + 50.8643669499461 + ], + [ + 6.973120314965365, + 50.86433966819397 + ], + [ + 6.972292876573402, + 50.86430458778026 + ], + [ + 6.971250924714397, + 50.86420000230014 + ], + [ + 6.970030451720524, + 50.863966634926 + ], + [ + 6.970029310463894, + 50.863966374933476 + ], + [ + 6.969783870368333, + 50.86391232150641 + ], + [ + 6.969776591778097, + 50.863910673990624 + ], + [ + 6.969726638580777, + 50.86389922347115 + ], + [ + 6.969382712964779, + 50.863804507467876 + ], + [ + 6.969136336440264, + 50.86373665598372 + ], + [ + 6.969123577809139, + 50.863765259205735 + ], + [ + 6.9690764754539885, + 50.86387064683992 + ], + [ + 6.969006158725249, + 50.864027917925334 + ], + [ + 6.969000867810123, + 50.86403991716176 + ], + [ + 6.9690187789449, + 50.86406799568124 + ], + [ + 6.969067549669506, + 50.8648714274514 + ], + [ + 6.969269145008294, + 50.86639256546371 + ], + [ + 6.969415048095918, + 50.8675704985964 + ], + [ + 6.969476072066634, + 50.86799195653845 + ], + [ + 6.969539617816493, + 50.86889747484181 + ], + [ + 6.969510097953826, + 50.86961058335295 + ], + [ + 6.969546443720938, + 50.870102183656066 + ], + [ + 6.969474137131971, + 50.870109257235974 + ], + [ + 6.969450442397367, + 50.87034335942052 + ], + [ + 6.969522433802746, + 50.87034168207241 + ], + [ + 6.969493244983077, + 50.870571155748046 + ], + [ + 6.9693974825596445, + 50.87132346933315 + ], + [ + 6.969349709040729, + 50.87176650662193 + ], + [ + 6.969338144052721, + 50.87187321697354 + ], + [ + 6.969311364756256, + 50.87219157638448 + ], + [ + 6.969300337930705, + 50.872344758289145 + ], + [ + 6.9692852654479625, + 50.87263164690256 + ], + [ + 6.969264068819201, + 50.87279707499303 + ], + [ + 6.969244918515941, + 50.872946522456274 + ], + [ + 6.969149604364387, + 50.8736113639185 + ], + [ + 6.96910016191444, + 50.87433012130895 + ], + [ + 6.96900847180969, + 50.87512869567568 + ], + [ + 6.969006161131402, + 50.87514741300856 + ], + [ + 6.969003531204969, + 50.875164514887054 + ], + [ + 6.968919839029439, + 50.87555436297889 + ], + [ + 6.968881691800263, + 50.87627680092559 + ], + [ + 6.968833976647051, + 50.876709409491916 + ], + [ + 6.968773809952386, + 50.87715821231598 + ], + [ + 6.968713108076379, + 50.877588141195325 + ], + [ + 6.968677853121711, + 50.877587263037654 + ], + [ + 6.968586991056177, + 50.87821404461798 + ], + [ + 6.968573830350722, + 50.878559078078325 + ], + [ + 6.968583508279371, + 50.87899138957983 + ], + [ + 6.968586618733279, + 50.87910022596819 + ], + [ + 6.968385567730793, + 50.880402125866745 + ], + [ + 6.9682558016015035, + 50.88113359507234 + ], + [ + 6.968184005364483, + 50.88194027260089 + ], + [ + 6.9681372286329015, + 50.88224045826006 + ], + [ + 6.968501708089098, + 50.88242504223259 + ], + [ + 6.968514302150853, + 50.88243617370478 + ], + [ + 6.968599087853044, + 50.88246720887594 + ], + [ + 6.96862212382884, + 50.88247564139279 + ], + [ + 6.968990649082484, + 50.882653063200706 + ], + [ + 6.96902832892643, + 50.88267120393225 + ], + [ + 6.9691833431989, + 50.882745606970516 + ], + [ + 6.969507839089981, + 50.88288611193186 + ], + [ + 6.969619574268495, + 50.882929230823265 + ], + [ + 6.969678969539559, + 50.882951829686974 + ], + [ + 6.969713679766827, + 50.882965035773886 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Hahnwald", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "207", + "Population_rel": 0.0018988272489981986, + "Population_abs": 2066 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.844069536673571, + 51.02700636155537 + ], + [ + 6.84409373449162, + 51.02695746557609 + ], + [ + 6.847712575982397, + 51.02708217830499 + ], + [ + 6.847776223303262, + 51.02708425581325 + ], + [ + 6.847951431717465, + 51.027090184769385 + ], + [ + 6.848076502894853, + 51.02709381915994 + ], + [ + 6.8482338901331445, + 51.027099531799074 + ], + [ + 6.848505038114407, + 51.027109456773985 + ], + [ + 6.84850983682253, + 51.02710709255792 + ], + [ + 6.848514917203193, + 51.027104589629275 + ], + [ + 6.84864348332758, + 51.02704125895555 + ], + [ + 6.849066351373149, + 51.026812198052426 + ], + [ + 6.849186291541204, + 51.02668305157006 + ], + [ + 6.849230913593995, + 51.02662888164089 + ], + [ + 6.849286232716263, + 51.026567263942475 + ], + [ + 6.849872659643104, + 51.026139609723856 + ], + [ + 6.850092817006718, + 51.02601135008125 + ], + [ + 6.850234292806175, + 51.025935662199444 + ], + [ + 6.850390233474163, + 51.025852234085384 + ], + [ + 6.85056547608897, + 51.02578754603207 + ], + [ + 6.85111710804129, + 51.025583917111064 + ], + [ + 6.851175572140141, + 51.02556182737819 + ], + [ + 6.851453778730976, + 51.025451570156946 + ], + [ + 6.851667429386241, + 51.02533423225334 + ], + [ + 6.851882558852584, + 51.02518883629312 + ], + [ + 6.852081872252014, + 51.02504382633862 + ], + [ + 6.8525803481718635, + 51.02466480129115 + ], + [ + 6.852747641688529, + 51.02452272080994 + ], + [ + 6.8528763933604, + 51.024400876332905 + ], + [ + 6.853116634779859, + 51.02410985112404 + ], + [ + 6.853268754694044, + 51.02392563128276 + ], + [ + 6.853368114023293, + 51.02378674249708 + ], + [ + 6.853501711131365, + 51.02368050335143 + ], + [ + 6.853702613416316, + 51.02359156998339 + ], + [ + 6.853976543966133, + 51.023520980749296 + ], + [ + 6.854208615274254, + 51.02347613555607 + ], + [ + 6.854354270723954, + 51.023398032747586 + ], + [ + 6.854500184422425, + 51.02322545218856 + ], + [ + 6.8545466318728945, + 51.02318573980589 + ], + [ + 6.854840406736162, + 51.0229700081545 + ], + [ + 6.855083633220287, + 51.02280345637668 + ], + [ + 6.855097047969192, + 51.02280166202602 + ], + [ + 6.855110462717104, + 51.02279986767381 + ], + [ + 6.855158987694634, + 51.02279337663578 + ], + [ + 6.855294669091387, + 51.0227043581467 + ], + [ + 6.8554933043054165, + 51.02257403571901 + ], + [ + 6.855554571807528, + 51.022533838655725 + ], + [ + 6.855689875769089, + 51.02245886645774 + ], + [ + 6.856055574154218, + 51.022256268166174 + ], + [ + 6.856207228714921, + 51.02216373654958 + ], + [ + 6.856255428832348, + 51.02213425820326 + ], + [ + 6.856704486498136, + 51.02186129065049 + ], + [ + 6.8570495832178215, + 51.021639423426066 + ], + [ + 6.857787940189964, + 51.02116494898558 + ], + [ + 6.85837187296109, + 51.02075668652663 + ], + [ + 6.858788005736069, + 51.02048503113964 + ], + [ + 6.85886580294616, + 51.02043771551553 + ], + [ + 6.859079907782979, + 51.02030845489734 + ], + [ + 6.859185050088898, + 51.02024497661175 + ], + [ + 6.860196363315004, + 51.01961278600822 + ], + [ + 6.860576214867616, + 51.01938400031649 + ], + [ + 6.86100757684745, + 51.01911258458929 + ], + [ + 6.861466781540388, + 51.01882118565288 + ], + [ + 6.861894729593022, + 51.018550600863534 + ], + [ + 6.86216998458646, + 51.01837705614604 + ], + [ + 6.8623788331272655, + 51.018249935496144 + ], + [ + 6.862977590834812, + 51.01785367468425 + ], + [ + 6.863311206993417, + 51.01764607620291 + ], + [ + 6.863467921624637, + 51.01755907177248 + ], + [ + 6.864969000225994, + 51.01658621293442 + ], + [ + 6.866372520015807, + 51.01566574670598 + ], + [ + 6.866470877994906, + 51.01559840739373 + ], + [ + 6.867599362512373, + 51.01481839906461 + ], + [ + 6.86790090626814, + 51.01460491284877 + ], + [ + 6.869767178203001, + 51.01332796107097 + ], + [ + 6.870279395784652, + 51.0129665555322 + ], + [ + 6.870443426883498, + 51.012851412344645 + ], + [ + 6.871152206722938, + 51.01235386765359 + ], + [ + 6.872804530914424, + 51.01119392357564 + ], + [ + 6.873664605766874, + 51.01062458969527 + ], + [ + 6.873809460263153, + 51.01052282710242 + ], + [ + 6.874176311656035, + 51.010254272127185 + ], + [ + 6.875718485110574, + 51.009127341029405 + ], + [ + 6.8755814359015694, + 51.00908149559586 + ], + [ + 6.875376523909917, + 51.009012949183955 + ], + [ + 6.875209481781076, + 51.00895707106865 + ], + [ + 6.875111084885453, + 51.008924155287616 + ], + [ + 6.875041049013712, + 51.008897443089694 + ], + [ + 6.874303667633671, + 51.00861639172048 + ], + [ + 6.87378903088744, + 51.00842050571638 + ], + [ + 6.873000002073492, + 51.00811978700573 + ], + [ + 6.872664330841354, + 51.00799195343829 + ], + [ + 6.870907948053765, + 51.00732332931868 + ], + [ + 6.870718079688054, + 51.00725049530978 + ], + [ + 6.869630748459449, + 51.00683619774357 + ], + [ + 6.869210881749104, + 51.00667733936985 + ], + [ + 6.8692028227572415, + 51.006695917388576 + ], + [ + 6.869101185251618, + 51.00686090574116 + ], + [ + 6.868958741551329, + 51.006832392049546 + ], + [ + 6.868502654503503, + 51.006740409909696 + ], + [ + 6.868534258507199, + 51.006700892416866 + ], + [ + 6.86860540833646, + 51.00661217933343 + ], + [ + 6.8687723435109795, + 51.006403647013435 + ], + [ + 6.868804227511744, + 51.0063638575494 + ], + [ + 6.868797287567073, + 51.006297480019946 + ], + [ + 6.869057402139386, + 51.00547923773571 + ], + [ + 6.869581851310893, + 51.00467925279257 + ], + [ + 6.869965180188855, + 51.00410459605848 + ], + [ + 6.871162041462532, + 51.002444811536314 + ], + [ + 6.869776674414848, + 51.001956241054906 + ], + [ + 6.868930407259405, + 51.00165762984367 + ], + [ + 6.866760689515123, + 51.000825269149324 + ], + [ + 6.866714114665189, + 51.00080287286981 + ], + [ + 6.86712422405761, + 51.00047244154407 + ], + [ + 6.865002280583138, + 50.99969165126394 + ], + [ + 6.86489326624472, + 50.99965155876452 + ], + [ + 6.864555896633388, + 50.99952739986989 + ], + [ + 6.864453139870895, + 50.999486630820144 + ], + [ + 6.864260818688737, + 50.99946351367061 + ], + [ + 6.862517371105794, + 50.99887691892944 + ], + [ + 6.861898380625791, + 50.998668267654025 + ], + [ + 6.859788870851195, + 50.997957586133985 + ], + [ + 6.859793606717782, + 50.997905503469724 + ], + [ + 6.857722685497702, + 50.997190275776944 + ], + [ + 6.858028810282155, + 50.997005006421944 + ], + [ + 6.858142078355608, + 50.99693657603234 + ], + [ + 6.85910522601376, + 50.99635310605359 + ], + [ + 6.859310759888839, + 50.99622880110586 + ], + [ + 6.8596206935826265, + 50.996042152143815 + ], + [ + 6.861091649278139, + 50.99515252955659 + ], + [ + 6.86120457494805, + 50.99508149075164 + ], + [ + 6.863595327490846, + 50.993630416123516 + ], + [ + 6.863591697456906, + 50.993596014067485 + ], + [ + 6.862347664643078, + 50.99302936263415 + ], + [ + 6.862245097484185, + 50.992965284820684 + ], + [ + 6.8612426600893555, + 50.99233861030651 + ], + [ + 6.861097693183206, + 50.99224798945002 + ], + [ + 6.859947763951202, + 50.99152906141171 + ], + [ + 6.858854702784539, + 50.9908457159852 + ], + [ + 6.858385187921471, + 50.99055211033981 + ], + [ + 6.858107381381008, + 50.990378593427195 + ], + [ + 6.857511563453916, + 50.99000587558626 + ], + [ + 6.85728404351285, + 50.98986344901381 + ], + [ + 6.857188234510702, + 50.98980401543233 + ], + [ + 6.857110928843668, + 50.98970534222292 + ], + [ + 6.856828659947344, + 50.98952870937981 + ], + [ + 6.8561809964789715, + 50.98912382358474 + ], + [ + 6.855228326356561, + 50.988528171341656 + ], + [ + 6.855106866034472, + 50.98845220370563 + ], + [ + 6.8548132328798514, + 50.98826863783764 + ], + [ + 6.853872841725841, + 50.98768052527162 + ], + [ + 6.8535795065318315, + 50.98749713347512 + ], + [ + 6.853104192423953, + 50.98719983066842 + ], + [ + 6.852981877497267, + 50.98712341694389 + ], + [ + 6.8521240221545385, + 50.98659059947244 + ], + [ + 6.851204387791926, + 50.98601238277821 + ], + [ + 6.850949808840929, + 50.98585225299008 + ], + [ + 6.850958022691544, + 50.98579520159694 + ], + [ + 6.850926092016067, + 50.985777996049904 + ], + [ + 6.850890852128021, + 50.98575901536625 + ], + [ + 6.850807908662853, + 50.98579517836774 + ], + [ + 6.850802394369588, + 50.98579758345764 + ], + [ + 6.849973288285326, + 50.98615832858402 + ], + [ + 6.849785926540112, + 50.98623863736191 + ], + [ + 6.848971619181959, + 50.9865911883469 + ], + [ + 6.848845996914307, + 50.98664558394605 + ], + [ + 6.8488514101887965, + 50.98664958968864 + ], + [ + 6.848856823464202, + 50.98665359543099 + ], + [ + 6.848592652781781, + 50.98677929754103 + ], + [ + 6.848389177089451, + 50.986859611209674 + ], + [ + 6.848222044657149, + 50.986925727425344 + ], + [ + 6.847672252616034, + 50.98715714787199 + ], + [ + 6.847605825339273, + 50.98718513725372 + ], + [ + 6.8475030749724155, + 50.98722840132216 + ], + [ + 6.8467535757623335, + 50.98756796810368 + ], + [ + 6.846672635928058, + 50.98760460224319 + ], + [ + 6.846565994699124, + 50.987668929254696 + ], + [ + 6.846486513364942, + 50.98774663262085 + ], + [ + 6.846442935366403, + 50.987825064627124 + ], + [ + 6.846445472947238, + 50.98788626229456 + ], + [ + 6.846447498785839, + 50.987927148744845 + ], + [ + 6.846481204647069, + 50.988026234826755 + ], + [ + 6.846497216228305, + 50.98806081729568 + ], + [ + 6.846522286769532, + 50.98811582902765 + ], + [ + 6.846388601890289, + 50.98816551974979 + ], + [ + 6.844974330019594, + 50.98869003542786 + ], + [ + 6.844747687823396, + 50.988774101016745 + ], + [ + 6.844622802557599, + 50.98882047243066 + ], + [ + 6.844572615129712, + 50.98883629889578 + ], + [ + 6.844568793277422, + 50.988837499180654 + ], + [ + 6.844564986253619, + 50.9888387177268 + ], + [ + 6.844445070772513, + 50.98887752873088 + ], + [ + 6.843540795566181, + 50.98915989522171 + ], + [ + 6.843253785822324, + 50.98924982413803 + ], + [ + 6.841815555653963, + 50.98970022775341 + ], + [ + 6.84155722772573, + 50.989950428433716 + ], + [ + 6.841461919120074, + 50.99001719797219 + ], + [ + 6.8413503045496356, + 50.990073047888735 + ], + [ + 6.841298811172179, + 50.99009307142367 + ], + [ + 6.840831091319827, + 50.99027489933653 + ], + [ + 6.8407894470779675, + 50.990271872778365 + ], + [ + 6.840734959264678, + 50.99026795126983 + ], + [ + 6.840599770688829, + 50.99032314872152 + ], + [ + 6.840593524659401, + 50.99032569899391 + ], + [ + 6.840587569148152, + 50.99032813052327 + ], + [ + 6.840581529386646, + 50.990330596469704 + ], + [ + 6.840573880213041, + 50.99033371888424 + ], + [ + 6.840482859224757, + 50.99037085757867 + ], + [ + 6.840359169358914, + 50.990421220955945 + ], + [ + 6.840343542030249, + 50.990427582887015 + ], + [ + 6.840327913273519, + 50.990433944789615 + ], + [ + 6.840268389724261, + 50.99046684243855 + ], + [ + 6.839695427959844, + 50.990783500356656 + ], + [ + 6.83955650506005, + 50.9908968860107 + ], + [ + 6.839550268041647, + 50.990901969958564 + ], + [ + 6.8395428517403, + 50.990908266942284 + ], + [ + 6.839484530010733, + 50.99095438218933 + ], + [ + 6.8394839525711015, + 50.990959328009694 + ], + [ + 6.839480977686155, + 50.99096305757711 + ], + [ + 6.839477606934735, + 50.99096978735952 + ], + [ + 6.839426784293302, + 50.99107666518127 + ], + [ + 6.839456491810033, + 50.99117727665511 + ], + [ + 6.83953410617224, + 50.99144008700366 + ], + [ + 6.839560059181266, + 50.99152833170857 + ], + [ + 6.839558223940586, + 50.99163325492747 + ], + [ + 6.839556727076813, + 50.99171877390751 + ], + [ + 6.839550117094017, + 50.99174467888142 + ], + [ + 6.839497410158393, + 50.99194999987364 + ], + [ + 6.839402380904536, + 50.99232612849892 + ], + [ + 6.839392258215819, + 50.99237672220482 + ], + [ + 6.839270815133251, + 50.99298382284488 + ], + [ + 6.83922269944161, + 50.99322424793737 + ], + [ + 6.83920567856002, + 50.993308956210136 + ], + [ + 6.839195243899146, + 50.99336146970171 + ], + [ + 6.839169474974623, + 50.99349011466762 + ], + [ + 6.839143403122453, + 50.99351438956753 + ], + [ + 6.839140006610507, + 50.993517558203486 + ], + [ + 6.839136617092363, + 50.9935207296669 + ], + [ + 6.839110593543723, + 50.99354506841024 + ], + [ + 6.839030330967236, + 50.993619861698555 + ], + [ + 6.838884357089627, + 50.993756107030485 + ], + [ + 6.838776431081661, + 50.9939197941103 + ], + [ + 6.838774793667179, + 50.993922276683975 + ], + [ + 6.838769764936852, + 50.99392990032698 + ], + [ + 6.8387675049390095, + 50.99393332922175 + ], + [ + 6.838764002330863, + 50.99393865710174 + ], + [ + 6.838760502569728, + 50.99394398503434 + ], + [ + 6.838202907674565, + 50.99479083690476 + ], + [ + 6.838151090134245, + 50.994869627781895 + ], + [ + 6.838090999405985, + 50.99496080198222 + ], + [ + 6.837889708763714, + 50.995165897804355 + ], + [ + 6.837707410143217, + 50.995353207076796 + ], + [ + 6.837557978074771, + 50.99553695512859 + ], + [ + 6.837538811613409, + 50.995568596680336 + ], + [ + 6.837536577855566, + 50.995572285059815 + ], + [ + 6.8375343539815585, + 50.99557597542104 + ], + [ + 6.837532788532667, + 50.995578593318214 + ], + [ + 6.837526693689095, + 50.99558881527152 + ], + [ + 6.837408911662684, + 50.99578827054116 + ], + [ + 6.837358612418332, + 50.99588541682066 + ], + [ + 6.837355176270958, + 50.995892097662754 + ], + [ + 6.837349651553147, + 50.99590262336392 + ], + [ + 6.837284239007527, + 50.99602545492511 + ], + [ + 6.8370858569379305, + 50.99640078725538 + ], + [ + 6.837031921766488, + 50.99650287201977 + ], + [ + 6.836976478712267, + 50.996607525349724 + ], + [ + 6.8365103218726535, + 50.99745857026258 + ], + [ + 6.836426542313669, + 50.99762286890534 + ], + [ + 6.836385201048438, + 50.99770411414337 + ], + [ + 6.836241156299691, + 50.99798661458029 + ], + [ + 6.836199870032803, + 50.998067858073284 + ], + [ + 6.836036134460444, + 50.99838768746242 + ], + [ + 6.835899070857453, + 50.99864767396442 + ], + [ + 6.835683860311914, + 50.999077201872346 + ], + [ + 6.835602801963434, + 50.99923588334015 + ], + [ + 6.835471113450104, + 50.99949376546831 + ], + [ + 6.835434167131222, + 50.999565950496624 + ], + [ + 6.83543073373107, + 50.99957265201864 + ], + [ + 6.8354271639650745, + 50.99957955787113 + ], + [ + 6.835370594496065, + 50.99968865139843 + ], + [ + 6.835330741980809, + 50.99976483964353 + ], + [ + 6.835387333155356, + 50.99975191487232 + ], + [ + 6.836020880475817, + 51.00018671864245 + ], + [ + 6.8363160382973, + 51.000389324097924 + ], + [ + 6.836655573585423, + 51.00062229827464 + ], + [ + 6.8367054416686095, + 51.00065656215188 + ], + [ + 6.836796451086978, + 51.00071907501214 + ], + [ + 6.836799367742019, + 51.000721088792375 + ], + [ + 6.836802278659008, + 51.00072310336564 + ], + [ + 6.836840772336154, + 51.00074962236563 + ], + [ + 6.837201171427687, + 51.00099709267335 + ], + [ + 6.8384208765165475, + 51.001834412618926 + ], + [ + 6.8388716763893855, + 51.002143981203034 + ], + [ + 6.838963224345774, + 51.0022068071791 + ], + [ + 6.839267654801691, + 51.002415867707384 + ], + [ + 6.839743849522266, + 51.002742739099205 + ], + [ + 6.839835384848476, + 51.002805641483874 + ], + [ + 6.839908098351352, + 51.002855584531055 + ], + [ + 6.8402513598184855, + 51.003091191783 + ], + [ + 6.8403162808808045, + 51.00313574526588 + ], + [ + 6.840484706999846, + 51.00325145609397 + ], + [ + 6.840521839178787, + 51.00327696384449 + ], + [ + 6.841486436404549, + 51.00393899166575 + ], + [ + 6.84202533990331, + 51.00431007305833 + ], + [ + 6.8420292055014755, + 51.00431268883629 + ], + [ + 6.842012361397608, + 51.00434559805544 + ], + [ + 6.842190869282022, + 51.004326428899134 + ], + [ + 6.842339605184138, + 51.00431010909963 + ], + [ + 6.842546468461672, + 51.00428718310656 + ], + [ + 6.843248136782077, + 51.00420043494348 + ], + [ + 6.843393011676469, + 51.00418254953067 + ], + [ + 6.8435684140393285, + 51.00416091418317 + ], + [ + 6.843745534527071, + 51.00413852783285 + ], + [ + 6.843966707470969, + 51.004111368420894 + ], + [ + 6.844329875414671, + 51.00406661961809 + ], + [ + 6.844741179552264, + 51.004015856173986 + ], + [ + 6.8447431308084825, + 51.00401822787671 + ], + [ + 6.844745019083398, + 51.00402051297589 + ], + [ + 6.844765392933711, + 51.004045022960945 + ], + [ + 6.844772273383106, + 51.00405332980758 + ], + [ + 6.844775507514581, + 51.00405723974232 + ], + [ + 6.844780069693771, + 51.00406275889488 + ], + [ + 6.844783524945614, + 51.004066941824995 + ], + [ + 6.844728616324643, + 51.004088347402515 + ], + [ + 6.844723311635589, + 51.004091496273375 + ], + [ + 6.844716884796494, + 51.00409422151228 + ], + [ + 6.844673101627604, + 51.00411295525886 + ], + [ + 6.844669536245903, + 51.00411576028486 + ], + [ + 6.8445965598074245, + 51.00418544032149 + ], + [ + 6.843699541059799, + 51.00504250490935 + ], + [ + 6.843676381088818, + 51.00506463648126 + ], + [ + 6.843513074626726, + 51.005220787385205 + ], + [ + 6.842869084777815, + 51.00583958654967 + ], + [ + 6.842858325029552, + 51.005849571508904 + ], + [ + 6.842847457482891, + 51.005859514003916 + ], + [ + 6.842816096091595, + 51.005888242881184 + ], + [ + 6.842766904516612, + 51.005933373599326 + ], + [ + 6.842715669931812, + 51.00598446723183 + ], + [ + 6.842683119205723, + 51.006017072923136 + ], + [ + 6.842675071563167, + 51.00602513472056 + ], + [ + 6.842666786279642, + 51.00603343316194 + ], + [ + 6.842349517834056, + 51.00635118306619 + ], + [ + 6.842076636486609, + 51.006598628290796 + ], + [ + 6.842041634897921, + 51.006630362889304 + ], + [ + 6.8419817284029785, + 51.00668468573944 + ], + [ + 6.841941453788905, + 51.00672120741475 + ], + [ + 6.841812742114054, + 51.00684403637398 + ], + [ + 6.840311773208073, + 51.00827669304528 + ], + [ + 6.839583119085253, + 51.00897207664855 + ], + [ + 6.839458710869853, + 51.009100776469815 + ], + [ + 6.839456533770665, + 51.00910301972477 + ], + [ + 6.839408767379007, + 51.00915218485492 + ], + [ + 6.83940175243277, + 51.00915941292077 + ], + [ + 6.839395990634365, + 51.00916535197152 + ], + [ + 6.839212321827523, + 51.00935458263222 + ], + [ + 6.839032224393615, + 51.00951357083666 + ], + [ + 6.838968222626274, + 51.00957002347134 + ], + [ + 6.838797251653524, + 51.00972113432123 + ], + [ + 6.838718599180426, + 51.0097980149759 + ], + [ + 6.838541102372003, + 51.00997151620823 + ], + [ + 6.838411043512177, + 51.010098671343826 + ], + [ + 6.838405536916974, + 51.01010405295634 + ], + [ + 6.838403233911083, + 51.010106303754895 + ], + [ + 6.838401032445389, + 51.01010845570196 + ], + [ + 6.838396459232187, + 51.01011292642751 + ], + [ + 6.838330785291177, + 51.010177128317096 + ], + [ + 6.83825677336214, + 51.0102494060799 + ], + [ + 6.83817134636362, + 51.010329279135284 + ], + [ + 6.837650462792077, + 51.01081558413837 + ], + [ + 6.837522305539023, + 51.010939390932016 + ], + [ + 6.837527476320273, + 51.01094150758061 + ], + [ + 6.837533519315063, + 51.01094402891097 + ], + [ + 6.8374045408018205, + 51.011070182146725 + ], + [ + 6.837402318432014, + 51.01107244431207 + ], + [ + 6.837399078261936, + 51.01107562298799 + ], + [ + 6.837326358139021, + 51.01114676208843 + ], + [ + 6.837324037098762, + 51.011149030519654 + ], + [ + 6.837321646979893, + 51.01115137411914 + ], + [ + 6.837512915826613, + 51.0112118159539 + ], + [ + 6.837612896485232, + 51.01124354094154 + ], + [ + 6.837685755384886, + 51.01126662071789 + ], + [ + 6.8377338362406865, + 51.01128185240622 + ], + [ + 6.838025235112686, + 51.01136731786471 + ], + [ + 6.838487871733819, + 51.01150300653408 + ], + [ + 6.838610646065074, + 51.011538992855094 + ], + [ + 6.839349289178512, + 51.01175702525393 + ], + [ + 6.839797025248752, + 51.011863443277235 + ], + [ + 6.8399275835452045, + 51.01188585750908 + ], + [ + 6.8401981300460974, + 51.011932649680894 + ], + [ + 6.840451392136704, + 51.0119647090547 + ], + [ + 6.840816479856949, + 51.01199598421131 + ], + [ + 6.84113969556702, + 51.012009819633725 + ], + [ + 6.841359982752347, + 51.012010619313024 + ], + [ + 6.841496379374651, + 51.012011075181334 + ], + [ + 6.841502541883486, + 51.01201109193832 + ], + [ + 6.841507073082872, + 51.01201111542125 + ], + [ + 6.84151679463767, + 51.01201118266291 + ], + [ + 6.841603692922091, + 51.012011844246 + ], + [ + 6.841579037412376, + 51.01203522758814 + ], + [ + 6.841576225750771, + 51.01203790254957 + ], + [ + 6.8415365234713015, + 51.0120758053209 + ], + [ + 6.8415320568609195, + 51.012080070380485 + ], + [ + 6.841528101450568, + 51.01208447169999 + ], + [ + 6.841495461450134, + 51.0121149879507 + ], + [ + 6.841498754154012, + 51.01212365947419 + ], + [ + 6.841499983872668, + 51.01212904610711 + ], + [ + 6.841501065416185, + 51.012132435175225 + ], + [ + 6.84144278729874, + 51.01219867766029 + ], + [ + 6.841434001557655, + 51.0121986897654 + ], + [ + 6.8414292769502545, + 51.01219868608912 + ], + [ + 6.841424751895233, + 51.01219868340258 + ], + [ + 6.841299366930044, + 51.01219850203208 + ], + [ + 6.841280416557644, + 51.01219853131299 + ], + [ + 6.841261468831016, + 51.01219859571556 + ], + [ + 6.841277346298067, + 51.01221610512512 + ], + [ + 6.841281308903221, + 51.0122215566624 + ], + [ + 6.841280493775895, + 51.01222489448763 + ], + [ + 6.841241825054551, + 51.0122613781537 + ], + [ + 6.841164858981824, + 51.012333958383664 + ], + [ + 6.840126618684709, + 51.01331449394239 + ], + [ + 6.839956918195462, + 51.013481269296456 + ], + [ + 6.839843714110459, + 51.01359247061504 + ], + [ + 6.839835611464346, + 51.01360026498514 + ], + [ + 6.839827519409175, + 51.01360801548092 + ], + [ + 6.8394150886651, + 51.01400292976882 + ], + [ + 6.839340612174712, + 51.014074306527284 + ], + [ + 6.838871854311975, + 51.01452273872467 + ], + [ + 6.838509093238925, + 51.0148684724975 + ], + [ + 6.837508201562928, + 51.01582547395687 + ], + [ + 6.837207979506814, + 51.01611152302088 + ], + [ + 6.837133400269613, + 51.01618275348774 + ], + [ + 6.836902307574037, + 51.016402461056416 + ], + [ + 6.836676293464557, + 51.01661728686524 + ], + [ + 6.836041922066639, + 51.0172230682138 + ], + [ + 6.835755883572773, + 51.017496190558795 + ], + [ + 6.835681131532319, + 51.017567390827516 + ], + [ + 6.835658294053181, + 51.017589357723736 + ], + [ + 6.8356338628100755, + 51.01761229609286 + ], + [ + 6.835477040822131, + 51.01763321547404 + ], + [ + 6.834795589708446, + 51.01772316463709 + ], + [ + 6.834480197045026, + 51.01776500989602 + ], + [ + 6.834347925534997, + 51.01778245444587 + ], + [ + 6.834339176115664, + 51.01778362240145 + ], + [ + 6.8343304180231685, + 51.017784823472674 + ], + [ + 6.834271137707003, + 51.017793104838304 + ], + [ + 6.83422192202557, + 51.017801613271835 + ], + [ + 6.83418065650916, + 51.01780802155255 + ], + [ + 6.834086200081511, + 51.01782314868538 + ], + [ + 6.834075791707853, + 51.017825156458585 + ], + [ + 6.83406802189514, + 51.017826843514825 + ], + [ + 6.834049829885832, + 51.01783092661757 + ], + [ + 6.833941174332089, + 51.017855111505035 + ], + [ + 6.83393647716225, + 51.01785588330424 + ], + [ + 6.833927694535876, + 51.017857181922906 + ], + [ + 6.833874538406263, + 51.01786833416385 + ], + [ + 6.833870060758014, + 51.017869290807134 + ], + [ + 6.833924222164415, + 51.01792182528058 + ], + [ + 6.833960918129547, + 51.01795502562164 + ], + [ + 6.833998300955419, + 51.017988327726904 + ], + [ + 6.834082269372342, + 51.018062703222164 + ], + [ + 6.834088273923793, + 51.018068022883675 + ], + [ + 6.834094924861022, + 51.01807391394615 + ], + [ + 6.8341165307285685, + 51.018093046001425 + ], + [ + 6.834120504575955, + 51.01809656611775 + ], + [ + 6.8341244853377905, + 51.01810009085909 + ], + [ + 6.834243517228026, + 51.018205477723455 + ], + [ + 6.834541920744511, + 51.018469645381785 + ], + [ + 6.834634202121119, + 51.01855134084941 + ], + [ + 6.834801807074135, + 51.01869977798266 + ], + [ + 6.834884349958201, + 51.01877361830069 + ], + [ + 6.835179968008858, + 51.01903786213623 + ], + [ + 6.835185496866643, + 51.019042807773786 + ], + [ + 6.835188308500886, + 51.01904532328858 + ], + [ + 6.835193006696562, + 51.01904952053495 + ], + [ + 6.8352031476835435, + 51.01905858267715 + ], + [ + 6.8352515496689765, + 51.01910184597314 + ], + [ + 6.835286320266898, + 51.01913289035572 + ], + [ + 6.835314429480846, + 51.019158017462175 + ], + [ + 6.83563237545637, + 51.01944230738383 + ], + [ + 6.835981168791475, + 51.01975420239991 + ], + [ + 6.836068855348582, + 51.01983261605727 + ], + [ + 6.836184280939604, + 51.019935833993735 + ], + [ + 6.836188657479042, + 51.01993974643156 + ], + [ + 6.836191730754087, + 51.0199424943114 + ], + [ + 6.836197539126792, + 51.019947688809204 + ], + [ + 6.836250671971538, + 51.01999519535084 + ], + [ + 6.836404215841123, + 51.02013248620308 + ], + [ + 6.8365548643930785, + 51.02026723732988 + ], + [ + 6.836811932288675, + 51.020497165564045 + ], + [ + 6.836891305945411, + 51.020567052291504 + ], + [ + 6.836895534550343, + 51.020570346786066 + ], + [ + 6.836903473153303, + 51.02057631369257 + ], + [ + 6.836909304903155, + 51.020579967948244 + ], + [ + 6.8369139620309145, + 51.02058287914769 + ], + [ + 6.836929656301849, + 51.02059276977569 + ], + [ + 6.836937042733343, + 51.02059751858665 + ], + [ + 6.8369432174769225, + 51.020601769185824 + ], + [ + 6.836945535680249, + 51.02060386090445 + ], + [ + 6.83702931328963, + 51.02067754173199 + ], + [ + 6.837038671694944, + 51.02068581664846 + ], + [ + 6.837043651962554, + 51.02069027176645 + ], + [ + 6.837048399354246, + 51.02069452201006 + ], + [ + 6.8372251030163484, + 51.02085266822907 + ], + [ + 6.837572812251391, + 51.021164009379234 + ], + [ + 6.837706124482475, + 51.021283381480515 + ], + [ + 6.838141658135405, + 51.02167346039915 + ], + [ + 6.838453674034759, + 51.02195279478948 + ], + [ + 6.839236929441675, + 51.02265376272069 + ], + [ + 6.839277907615589, + 51.02269059038661 + ], + [ + 6.839280453558537, + 51.02269287963633 + ], + [ + 6.839282998076937, + 51.022695168859656 + ], + [ + 6.839667182875926, + 51.023040359057156 + ], + [ + 6.840008236055005, + 51.02334599698319 + ], + [ + 6.840568965520055, + 51.02384873899689 + ], + [ + 6.8408665096254015, + 51.02411543624905 + ], + [ + 6.841370083943229, + 51.024567020513246 + ], + [ + 6.841437625416979, + 51.02462759173306 + ], + [ + 6.841515570110995, + 51.02469743798447 + ], + [ + 6.841518995165916, + 51.024700485416275 + ], + [ + 6.84152240282532, + 51.02470350824328 + ], + [ + 6.841531034613307, + 51.024711127200554 + ], + [ + 6.841433203613635, + 51.02474795935287 + ], + [ + 6.841420175877153, + 51.02475333971951 + ], + [ + 6.841412590337802, + 51.02475622864678 + ], + [ + 6.840674030866335, + 51.02503693544283 + ], + [ + 6.840166370767577, + 51.025233643163716 + ], + [ + 6.840019980091784, + 51.02529029072995 + ], + [ + 6.839904923661407, + 51.025334880404564 + ], + [ + 6.839901352483995, + 51.02533626506152 + ], + [ + 6.839894639915587, + 51.02533886964229 + ], + [ + 6.839794386790906, + 51.02533575648583 + ], + [ + 6.839882334824963, + 51.02536940084918 + ], + [ + 6.839895566239895, + 51.02537446171369 + ], + [ + 6.839903533371478, + 51.02537750954722 + ], + [ + 6.83991102829919, + 51.02538037686641 + ], + [ + 6.839946424905304, + 51.02539392044779 + ], + [ + 6.8398848669932635, + 51.025429436263444 + ], + [ + 6.839821022751425, + 51.02542842824967 + ], + [ + 6.839803068384731, + 51.02542814477326 + ], + [ + 6.839785112593442, + 51.025427861267765 + ], + [ + 6.839669531834497, + 51.02547528035606 + ], + [ + 6.839002115646871, + 51.02574910270259 + ], + [ + 6.8361153107424295, + 51.026933359264845 + ], + [ + 6.83611039151313, + 51.02693535829279 + ], + [ + 6.83610546788305, + 51.02693735993716 + ], + [ + 6.835992030302409, + 51.02698388786429 + ], + [ + 6.835868304649707, + 51.02703456907523 + ], + [ + 6.835750366802773, + 51.02708290838453 + ], + [ + 6.835599462217551, + 51.02714470121621 + ], + [ + 6.835599365966464, + 51.02718325312965 + ], + [ + 6.835606363726099, + 51.02718598649826 + ], + [ + 6.835613109394639, + 51.027188620760484 + ], + [ + 6.835728413740757, + 51.02723364053752 + ], + [ + 6.835917089040742, + 51.02730737237722 + ], + [ + 6.8369290015368565, + 51.02770257136136 + ], + [ + 6.837036645979594, + 51.02774461043819 + ], + [ + 6.837565308350177, + 51.02795107118877 + ], + [ + 6.837742806724179, + 51.02802038942043 + ], + [ + 6.8379029085598635, + 51.028082913443484 + ], + [ + 6.838105698212568, + 51.028162107649855 + ], + [ + 6.839863993298714, + 51.02884872708369 + ], + [ + 6.839961833676715, + 51.02884828344047 + ], + [ + 6.840113959964093, + 51.028785422926084 + ], + [ + 6.840118440392165, + 51.02878356761108 + ], + [ + 6.840122626621472, + 51.02878184356159 + ], + [ + 6.840477319975246, + 51.02863575357671 + ], + [ + 6.840480997157264, + 51.02863424135057 + ], + [ + 6.840484671572632, + 51.02863272727441 + ], + [ + 6.841549499927221, + 51.02819214608288 + ], + [ + 6.843746446113071, + 51.02718973766383 + ], + [ + 6.8438619455866805, + 51.027137035497326 + ], + [ + 6.844092237950687, + 51.02703199642231 + ], + [ + 6.844069536673571, + 51.02700636155537 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Esch/Auweiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "607", + "Population_rel": 0.006420719826476968, + "Population_abs": 6986 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.933337751844415, + 50.92811661814997 + ], + [ + 6.933395076418205, + 50.92800954547925 + ], + [ + 6.933412518794331, + 50.928013990543946 + ], + [ + 6.933429964217031, + 50.928018431163075 + ], + [ + 6.933465274723134, + 50.928027412459436 + ], + [ + 6.933641611764831, + 50.92807249753899 + ], + [ + 6.933646226910361, + 50.928073685477656 + ], + [ + 6.933653430415093, + 50.9280755218219 + ], + [ + 6.933741780639014, + 50.92809801350547 + ], + [ + 6.933804688880687, + 50.928114140441124 + ], + [ + 6.933951476957174, + 50.92792320000666 + ], + [ + 6.9341781285517445, + 50.92762828878956 + ], + [ + 6.934181235665878, + 50.92762423091062 + ], + [ + 6.934183846248818, + 50.92762078031986 + ], + [ + 6.934218326656568, + 50.92757497619999 + ], + [ + 6.934241108632194, + 50.92754126047329 + ], + [ + 6.9342477496939825, + 50.927531411963805 + ], + [ + 6.934254380918507, + 50.9275215605817 + ], + [ + 6.933709025081034, + 50.92735230914176 + ], + [ + 6.933650638423123, + 50.927335072309305 + ], + [ + 6.933656441497232, + 50.92732753299855 + ], + [ + 6.933735582454388, + 50.927224679525054 + ], + [ + 6.933801236596567, + 50.92714115509665 + ], + [ + 6.934457333743303, + 50.926306325446866 + ], + [ + 6.934787198607514, + 50.92588818231017 + ], + [ + 6.934789561810095, + 50.925885237277996 + ], + [ + 6.934792032623423, + 50.92588224018685 + ], + [ + 6.934943337921021, + 50.92570388342506 + ], + [ + 6.934997171179444, + 50.925660544898555 + ], + [ + 6.935001799572889, + 50.92565712369159 + ], + [ + 6.935005453492989, + 50.92565398473868 + ], + [ + 6.935078542995449, + 50.92559429432789 + ], + [ + 6.935230541920838, + 50.925471725486084 + ], + [ + 6.935372882758662, + 50.92536385688166 + ], + [ + 6.935441272242651, + 50.92531474527446 + ], + [ + 6.9354454977036015, + 50.92531164879485 + ], + [ + 6.935449735443883, + 50.92530856422421 + ], + [ + 6.935467575961156, + 50.92529564358565 + ], + [ + 6.9354732054015775, + 50.92529159520985 + ], + [ + 6.935478851625379, + 50.92528755342629 + ], + [ + 6.935490182928529, + 50.92527949213077 + ], + [ + 6.9355240498004935, + 50.92525563786239 + ], + [ + 6.935685149116714, + 50.92514278351803 + ], + [ + 6.935737940569508, + 50.925105749777494 + ], + [ + 6.935843405490631, + 50.9250318986888 + ], + [ + 6.935949123999111, + 50.92495819409242 + ], + [ + 6.9359611048167515, + 50.92495043653612 + ], + [ + 6.935973618591399, + 50.92494298339988 + ], + [ + 6.9361351894955705, + 50.92484691203638 + ], + [ + 6.936317478430552, + 50.924738854651636 + ], + [ + 6.936349628240803, + 50.92472001801451 + ], + [ + 6.936697972557479, + 50.92451567154623 + ], + [ + 6.936968910797587, + 50.92435597997955 + ], + [ + 6.9366156481866765, + 50.92405592855447 + ], + [ + 6.936604588008325, + 50.924046008927235 + ], + [ + 6.936594142569865, + 50.92403579977292 + ], + [ + 6.9366484706373175, + 50.924014417738164 + ], + [ + 6.937563435020421, + 50.92365559500532 + ], + [ + 6.937670692605903, + 50.92361294470965 + ], + [ + 6.937797021429617, + 50.92368951594234 + ], + [ + 6.937857191199034, + 50.92372701650349 + ], + [ + 6.937874167805864, + 50.923736432554875 + ], + [ + 6.937901681332842, + 50.923722976426426 + ], + [ + 6.937967195248187, + 50.92369079646583 + ], + [ + 6.938185224570293, + 50.92381096493533 + ], + [ + 6.938290603107925, + 50.92375339342702 + ], + [ + 6.93849570215887, + 50.92363743429117 + ], + [ + 6.938668627416953, + 50.923539745043165 + ], + [ + 6.938811425162319, + 50.923459046165185 + ], + [ + 6.938885938000638, + 50.92341692635511 + ], + [ + 6.9391676533163835, + 50.923257537861815 + ], + [ + 6.939172171863217, + 50.923254979756436 + ], + [ + 6.939208734654744, + 50.92323386297765 + ], + [ + 6.939369299319438, + 50.923124466676825 + ], + [ + 6.939734291722684, + 50.92288113188512 + ], + [ + 6.939991807303148, + 50.9229345961523 + ], + [ + 6.940126912630592, + 50.92296264346241 + ], + [ + 6.940215315413626, + 50.92298099407545 + ], + [ + 6.940366419445817, + 50.92295201668621 + ], + [ + 6.940379892234025, + 50.922949433063835 + ], + [ + 6.940464382723625, + 50.92293323039403 + ], + [ + 6.9402527812152135, + 50.92216684222278 + ], + [ + 6.939967815135087, + 50.92160393340875 + ], + [ + 6.939741237690538, + 50.92124303916089 + ], + [ + 6.939654462519866, + 50.921114920442974 + ], + [ + 6.939572764978704, + 50.92099880719047 + ], + [ + 6.939180169950615, + 50.920529219155526 + ], + [ + 6.93885493062786, + 50.92014124994955 + ], + [ + 6.938818795707437, + 50.92009830134033 + ], + [ + 6.938731067649718, + 50.91999329265129 + ], + [ + 6.938615849074146, + 50.91982953555441 + ], + [ + 6.938330077283839, + 50.919422259575654 + ], + [ + 6.938135129666069, + 50.9191493126542 + ], + [ + 6.937881102500437, + 50.91879402829935 + ], + [ + 6.93773858989977, + 50.918615924980045 + ], + [ + 6.937696887698975, + 50.91856372192718 + ], + [ + 6.937686789834225, + 50.918551079874455 + ], + [ + 6.9376351093203485, + 50.91848443539515 + ], + [ + 6.9374327432812, + 50.918229775471396 + ], + [ + 6.9372979189179125, + 50.918031205300174 + ], + [ + 6.937113655441755, + 50.917727664014315 + ], + [ + 6.937089236804338, + 50.91769274653127 + ], + [ + 6.937073014591305, + 50.91766954445978 + ], + [ + 6.93681915995041, + 50.91731287202004 + ], + [ + 6.9366894587150725, + 50.9171303116086 + ], + [ + 6.936657114528698, + 50.917085068418835 + ], + [ + 6.936602717211199, + 50.917009054224884 + ], + [ + 6.936534992056805, + 50.91691286597636 + ], + [ + 6.936480646825297, + 50.91683619789181 + ], + [ + 6.936390430142066, + 50.916710062706585 + ], + [ + 6.9360403436142235, + 50.9162166240531 + ], + [ + 6.9360215739389774, + 50.916190085936 + ], + [ + 6.9358395518543015, + 50.91593371422587 + ], + [ + 6.9356689433256244, + 50.91569274274293 + ], + [ + 6.935516010498764, + 50.91548003644913 + ], + [ + 6.935371110668588, + 50.9152583541004 + ], + [ + 6.9352313514346475, + 50.91505388853826 + ], + [ + 6.935145050717358, + 50.91492702114094 + ], + [ + 6.935087770501035, + 50.914864464808176 + ], + [ + 6.9349546939112985, + 50.91468115997104 + ], + [ + 6.934748721905999, + 50.91441528700748 + ], + [ + 6.934397764847013, + 50.913967553159935 + ], + [ + 6.934161075267918, + 50.913665697966444 + ], + [ + 6.933977328632566, + 50.913463576658536 + ], + [ + 6.933968998370658, + 50.9134555595987 + ], + [ + 6.933907688152725, + 50.91339801552542 + ], + [ + 6.933874011890943, + 50.91336632500988 + ], + [ + 6.933082310460261, + 50.91364098030967 + ], + [ + 6.933071116064654, + 50.91364295767117 + ], + [ + 6.9324496088328855, + 50.91375112401936 + ], + [ + 6.932227126883464, + 50.91383209784282 + ], + [ + 6.932199719063253, + 50.913798336892775 + ], + [ + 6.9322114492266165, + 50.91379473762582 + ], + [ + 6.932162800826836, + 50.91374406699203 + ], + [ + 6.932151929989318, + 50.913748018747654 + ], + [ + 6.932137821779304, + 50.9137322202538 + ], + [ + 6.9321173137198056, + 50.913737777540554 + ], + [ + 6.93207221033061, + 50.91371503526112 + ], + [ + 6.931973456229248, + 50.913725803108896 + ], + [ + 6.931919665601611, + 50.913666812801225 + ], + [ + 6.931700209126797, + 50.91375693109647 + ], + [ + 6.931454296986621, + 50.91385382193755 + ], + [ + 6.931437168958114, + 50.91386483530906 + ], + [ + 6.931496069979794, + 50.91390203082322 + ], + [ + 6.931629407908519, + 50.914049379825265 + ], + [ + 6.931598492231082, + 50.91406107614239 + ], + [ + 6.931520505593987, + 50.91409054737246 + ], + [ + 6.931303301919304, + 50.91414363318708 + ], + [ + 6.931010425773278, + 50.91396397849486 + ], + [ + 6.930889150256051, + 50.91404324253351 + ], + [ + 6.930708004653678, + 50.91413655912218 + ], + [ + 6.930609276846764, + 50.91406313952816 + ], + [ + 6.930508844620877, + 50.914111000226654 + ], + [ + 6.930413629594594, + 50.914185111911095 + ], + [ + 6.930356642536055, + 50.91422961467942 + ], + [ + 6.930308367332605, + 50.914254540341 + ], + [ + 6.930391149314895, + 50.91434835784862 + ], + [ + 6.930495020366167, + 50.91446573982868 + ], + [ + 6.930367265796694, + 50.91451260419259 + ], + [ + 6.930346231612291, + 50.91452032295199 + ], + [ + 6.930013276344614, + 50.91464179612497 + ], + [ + 6.9299597073602826, + 50.91466148058661 + ], + [ + 6.929912232139478, + 50.91461960869798 + ], + [ + 6.929890811086456, + 50.91460081209488 + ], + [ + 6.92988299789127, + 50.91459404236322 + ], + [ + 6.9298234008619355, + 50.91454336812572 + ], + [ + 6.929648909339917, + 50.91463537109206 + ], + [ + 6.92962069949122, + 50.91460413336417 + ], + [ + 6.929579525732378, + 50.914600146313575 + ], + [ + 6.929547435469072, + 50.914595367938766 + ], + [ + 6.9294839253225575, + 50.91454805075881 + ], + [ + 6.929403014235085, + 50.91459085512389 + ], + [ + 6.92937350497776, + 50.91455863913735 + ], + [ + 6.929311649320623, + 50.9144944086327 + ], + [ + 6.929293435859725, + 50.91447954156966 + ], + [ + 6.929221650214993, + 50.91450932814808 + ], + [ + 6.929158815273448, + 50.9145386843981 + ], + [ + 6.928742230242763, + 50.91469149399467 + ], + [ + 6.928507540311257, + 50.91444552604856 + ], + [ + 6.928492038794704, + 50.914559724431115 + ], + [ + 6.9285049247449875, + 50.91457130785218 + ], + [ + 6.928539388800219, + 50.914602495865935 + ], + [ + 6.928306861069994, + 50.91484373215922 + ], + [ + 6.928222847443942, + 50.91493078876201 + ], + [ + 6.928173966704878, + 50.91498259615996 + ], + [ + 6.9280411083486, + 50.91512325761824 + ], + [ + 6.92802407500556, + 50.915139124348 + ], + [ + 6.928004109499946, + 50.91515771182034 + ], + [ + 6.927999226496429, + 50.91516242514256 + ], + [ + 6.9279930875262155, + 50.915168316844415 + ], + [ + 6.927963706337868, + 50.91519965319876 + ], + [ + 6.92791831479798, + 50.91524819741461 + ], + [ + 6.9279026450718115, + 50.91525389562466 + ], + [ + 6.927877934439955, + 50.9152627214684 + ], + [ + 6.927866359180839, + 50.91526694902395 + ], + [ + 6.9278209435458935, + 50.91528573757715 + ], + [ + 6.92785257221914, + 50.91531730895276 + ], + [ + 6.927835342026875, + 50.915323288837314 + ], + [ + 6.927816842265264, + 50.915329728248516 + ], + [ + 6.927821054466599, + 50.91533419022475 + ], + [ + 6.92783528704903, + 50.91534908847009 + ], + [ + 6.92790153094074, + 50.91541536731093 + ], + [ + 6.927773305937278, + 50.915464375429 + ], + [ + 6.9278046064752035, + 50.915579549458876 + ], + [ + 6.927523686885944, + 50.91571185873632 + ], + [ + 6.927292420344295, + 50.9158453908936 + ], + [ + 6.927186513049592, + 50.91575409248167 + ], + [ + 6.9270543730030605, + 50.91583820337065 + ], + [ + 6.926910924671735, + 50.91574693316594 + ], + [ + 6.926833299509671, + 50.915697658601864 + ], + [ + 6.926712151525626, + 50.91574815203621 + ], + [ + 6.926622584296186, + 50.915691961191044 + ], + [ + 6.9265067780578935, + 50.91574175964782 + ], + [ + 6.926477131174396, + 50.915754367549305 + ], + [ + 6.926469414879762, + 50.91575764991944 + ], + [ + 6.926461674543077, + 50.91576099302 + ], + [ + 6.926389707472215, + 50.9157922460407 + ], + [ + 6.926282610896426, + 50.915838840718784 + ], + [ + 6.9261219244053445, + 50.91569152036977 + ], + [ + 6.9261854695489316, + 50.915663869199804 + ], + [ + 6.926102743982062, + 50.915578936499536 + ], + [ + 6.926074162924036, + 50.915591379763306 + ], + [ + 6.925985943681871, + 50.9155084179411 + ], + [ + 6.926035900519276, + 50.915486358789956 + ], + [ + 6.925957060370456, + 50.915418845029905 + ], + [ + 6.925839199696288, + 50.91547021081859 + ], + [ + 6.925659893901365, + 50.91529876842559 + ], + [ + 6.925410036879699, + 50.91506172352312 + ], + [ + 6.925112112438507, + 50.91519002739776 + ], + [ + 6.924066074752803, + 50.914191870091166 + ], + [ + 6.92426690383851, + 50.91410811720193 + ], + [ + 6.924360598658489, + 50.914068001736744 + ], + [ + 6.924490116155985, + 50.914013920839345 + ], + [ + 6.92481254995091, + 50.913879261303755 + ], + [ + 6.924910681305965, + 50.913838279031026 + ], + [ + 6.924765381713359, + 50.91369605096781 + ], + [ + 6.924723904807378, + 50.91370545942387 + ], + [ + 6.924659112969052, + 50.91364340646091 + ], + [ + 6.924735761687764, + 50.91361502224751 + ], + [ + 6.924628807729876, + 50.913513481313124 + ], + [ + 6.924575275666356, + 50.91339533607765 + ], + [ + 6.924480871309236, + 50.91330992106693 + ], + [ + 6.924471986693093, + 50.91331363222006 + ], + [ + 6.92442800270144, + 50.91327541677465 + ], + [ + 6.924344792728869, + 50.91319517162052 + ], + [ + 6.9234982315117914, + 50.91355030221526 + ], + [ + 6.9233509502873405, + 50.913401348376816 + ], + [ + 6.923344860814454, + 50.91339519166978 + ], + [ + 6.923375598419573, + 50.91338200408153 + ], + [ + 6.923767125134042, + 50.91321474732168 + ], + [ + 6.923777594495774, + 50.91321027205591 + ], + [ + 6.923653469140395, + 50.913128963970706 + ], + [ + 6.923641741634355, + 50.91312127425796 + ], + [ + 6.92375220579582, + 50.913054521961776 + ], + [ + 6.923762030071428, + 50.91304836596494 + ], + [ + 6.923768062243953, + 50.91304494319059 + ], + [ + 6.923657238803435, + 50.91297517969196 + ], + [ + 6.9236766883049095, + 50.912962768837545 + ], + [ + 6.923800976265176, + 50.91288136952057 + ], + [ + 6.923809363532865, + 50.91287588677832 + ], + [ + 6.923705911323776, + 50.91281458904114 + ], + [ + 6.923859861739808, + 50.912714792508794 + ], + [ + 6.923825688415637, + 50.9126806888472 + ], + [ + 6.923731052369748, + 50.912621540092985 + ], + [ + 6.923803027613453, + 50.91257536178332 + ], + [ + 6.923826573392532, + 50.912560313928786 + ], + [ + 6.923702461276823, + 50.91242115052828 + ], + [ + 6.923642384497145, + 50.91235378724311 + ], + [ + 6.923549369316946, + 50.91224948930121 + ], + [ + 6.923519443961443, + 50.91221552587643 + ], + [ + 6.923500977064399, + 50.91219522739323 + ], + [ + 6.923360127026245, + 50.91222283902858 + ], + [ + 6.923301261673497, + 50.91217154842689 + ], + [ + 6.923291425597749, + 50.91217567156658 + ], + [ + 6.923231604182499, + 50.91212023124612 + ], + [ + 6.923238723587382, + 50.912117118346515 + ], + [ + 6.923245841569828, + 50.91211400542113 + ], + [ + 6.9232231868447744, + 50.91209373400529 + ], + [ + 6.923184938737331, + 50.912054259367295 + ], + [ + 6.923136136552797, + 50.91207424227611 + ], + [ + 6.923142550411856, + 50.912080393976204 + ], + [ + 6.923078970121308, + 50.91210999092564 + ], + [ + 6.92302665263284, + 50.91213192045765 + ], + [ + 6.923031656100916, + 50.912136870670174 + ], + [ + 6.922938674845247, + 50.912176933905634 + ], + [ + 6.922842418115896, + 50.91208384698277 + ], + [ + 6.922847884055864, + 50.91207984846569 + ], + [ + 6.922853349994892, + 50.912075849948316 + ], + [ + 6.9228033471135815, + 50.91202797258843 + ], + [ + 6.9227941449446755, + 50.912031820964216 + ], + [ + 6.922734292993464, + 50.91198024629268 + ], + [ + 6.922739908555315, + 50.91197656163059 + ], + [ + 6.922745522734805, + 50.911972876044274 + ], + [ + 6.922693662801916, + 50.911928114327736 + ], + [ + 6.922684564850144, + 50.911931826944 + ], + [ + 6.922629959723583, + 50.91187594041866 + ], + [ + 6.922638737433125, + 50.91187223110048 + ], + [ + 6.922587145935691, + 50.91182310760133 + ], + [ + 6.922580450093195, + 50.91182603733107 + ], + [ + 6.922573754289872, + 50.911828966161764 + ], + [ + 6.922483546208286, + 50.911737610881374 + ], + [ + 6.922476114381813, + 50.91173058570899 + ], + [ + 6.922568751757513, + 50.91169110941594 + ], + [ + 6.9225730407191035, + 50.91169670438102 + ], + [ + 6.922634010474477, + 50.91167330027122 + ], + [ + 6.922694020820415, + 50.91164795886795 + ], + [ + 6.922699237664967, + 50.911652907497135 + ], + [ + 6.922720635149534, + 50.911644537331 + ], + [ + 6.922740587005008, + 50.91163716313194 + ], + [ + 6.922669229793284, + 50.91156635177249 + ], + [ + 6.922661754403725, + 50.91156937735658 + ], + [ + 6.922654277591738, + 50.911572402914885 + ], + [ + 6.922596032067619, + 50.91151757940034 + ], + [ + 6.922603717284881, + 50.91151428234363 + ], + [ + 6.922611401079574, + 50.91151098526114 + ], + [ + 6.922552834205598, + 50.911454276290414 + ], + [ + 6.922296372981854, + 50.911557343956545 + ], + [ + 6.922198312502327, + 50.91145916892731 + ], + [ + 6.922206773800211, + 50.91145566356521 + ], + [ + 6.922159520128365, + 50.91141367546356 + ], + [ + 6.922151270874777, + 50.91141717920105 + ], + [ + 6.922089529781145, + 50.911358066986786 + ], + [ + 6.922096923881566, + 50.91135450305945 + ], + [ + 6.922046747598382, + 50.91130678416267 + ], + [ + 6.922038393046667, + 50.91131028871554 + ], + [ + 6.9219802824677545, + 50.91125501399784 + ], + [ + 6.921988427498379, + 50.91125164602263 + ], + [ + 6.921937629344109, + 50.9112030103243 + ], + [ + 6.921927108370708, + 50.911204914064605 + ], + [ + 6.921828648999497, + 50.91111205416576 + ], + [ + 6.921870330730468, + 50.911094751997766 + ], + [ + 6.9219524873311835, + 50.911057378509376 + ], + [ + 6.921958792904458, + 50.91106346359356 + ], + [ + 6.922008678455376, + 50.9110444727013 + ], + [ + 6.922046187968015, + 50.91103089878405 + ], + [ + 6.922091769158359, + 50.91101825282603 + ], + [ + 6.922039710315679, + 50.910966975716505 + ], + [ + 6.92203114094414, + 50.91097048184025 + ], + [ + 6.921969734384365, + 50.91091566017848 + ], + [ + 6.921979148593689, + 50.91091174279322 + ], + [ + 6.921936165860955, + 50.910864686156884 + ], + [ + 6.921926099346896, + 50.91086842913552 + ], + [ + 6.921885526200436, + 50.91083415426674 + ], + [ + 6.921964975314258, + 50.910797128291364 + ], + [ + 6.9220214691194295, + 50.91078508498133 + ], + [ + 6.921921911658429, + 50.91069022515519 + ], + [ + 6.921711666805167, + 50.91049094624796 + ], + [ + 6.921702302445605, + 50.910520983529345 + ], + [ + 6.921496704540704, + 50.91062564768645 + ], + [ + 6.921302179374131, + 50.910462836522136 + ], + [ + 6.921207267929514, + 50.91050232976351 + ], + [ + 6.921087069009438, + 50.910550113615535 + ], + [ + 6.921040546100816, + 50.91050335783012 + ], + [ + 6.920981835406713, + 50.91044416857538 + ], + [ + 6.920661141814844, + 50.91011735528449 + ], + [ + 6.920596127817246, + 50.9101425039633 + ], + [ + 6.920541361205369, + 50.91009950082593 + ], + [ + 6.920475783321382, + 50.91004778335648 + ], + [ + 6.920467803673059, + 50.91004153974854 + ], + [ + 6.920430747126564, + 50.91001205868119 + ], + [ + 6.92042108769779, + 50.91000408620105 + ], + [ + 6.920413438819834, + 50.90999773066361 + ], + [ + 6.920645790708052, + 50.909903432010864 + ], + [ + 6.920770481414816, + 50.90985282632448 + ], + [ + 6.920849267624885, + 50.909820857332164 + ], + [ + 6.920963330895584, + 50.90977457253111 + ], + [ + 6.920872570277133, + 50.90968961150999 + ], + [ + 6.920860270683608, + 50.90967799809049 + ], + [ + 6.920815748121586, + 50.909635888984546 + ], + [ + 6.9207737917055905, + 50.909596178368716 + ], + [ + 6.92075265224549, + 50.90957617538112 + ], + [ + 6.920664030602742, + 50.909491115591194 + ], + [ + 6.920519171117052, + 50.90935379956955 + ], + [ + 6.9202419228866985, + 50.90946952172155 + ], + [ + 6.9202471994663135, + 50.90947388513053 + ], + [ + 6.920252474665574, + 50.9094782476153 + ], + [ + 6.920176847877872, + 50.90951507162605 + ], + [ + 6.919884545145471, + 50.90923520086822 + ], + [ + 6.919718587484383, + 50.909312918611185 + ], + [ + 6.9195970850045825, + 50.909207981891825 + ], + [ + 6.919661440641636, + 50.9091764615844 + ], + [ + 6.919510793853475, + 50.90904271960633 + ], + [ + 6.919556769374025, + 50.90902365916312 + ], + [ + 6.919439025949391, + 50.908914647607844 + ], + [ + 6.919340298196348, + 50.90895515775372 + ], + [ + 6.919237974241813, + 50.90885654256543 + ], + [ + 6.919349048870467, + 50.9088003829725 + ], + [ + 6.919164607881327, + 50.90864721931102 + ], + [ + 6.919288156776158, + 50.90858795176075 + ], + [ + 6.919368274277807, + 50.90854951843996 + ], + [ + 6.919032989932673, + 50.90826683846756 + ], + [ + 6.919256068123306, + 50.908151365800045 + ], + [ + 6.91900396958861, + 50.907918360532435 + ], + [ + 6.9189975701882815, + 50.90791226011695 + ], + [ + 6.918970723245793, + 50.907884742288644 + ], + [ + 6.9189551851373405, + 50.90786902457837 + ], + [ + 6.918947908673975, + 50.907863931122016 + ], + [ + 6.918921233172737, + 50.90784800581843 + ], + [ + 6.918908594198167, + 50.90784045045477 + ], + [ + 6.918900535863781, + 50.9078355373206 + ], + [ + 6.918861608196637, + 50.9078107846086 + ], + [ + 6.918842300271141, + 50.90779944172341 + ], + [ + 6.918769629350597, + 50.90775202533472 + ], + [ + 6.918718728220936, + 50.90771985407593 + ], + [ + 6.918536338536262, + 50.90767376719523 + ], + [ + 6.918330284471239, + 50.907621181688214 + ], + [ + 6.918322280458346, + 50.90761913402491 + ], + [ + 6.918314718914412, + 50.90761670212121 + ], + [ + 6.918262165179923, + 50.90759151548977 + ], + [ + 6.917852478227476, + 50.90745046037119 + ], + [ + 6.917683709507166, + 50.90738887860228 + ], + [ + 6.917677695141173, + 50.90738674587628 + ], + [ + 6.91756139888495, + 50.907347035141235 + ], + [ + 6.917513896966239, + 50.907331857631746 + ], + [ + 6.917463867882122, + 50.90732046009461 + ], + [ + 6.917454418462757, + 50.907318481914 + ], + [ + 6.9174449351671665, + 50.90731656158816 + ], + [ + 6.917368693268054, + 50.90730081720841 + ], + [ + 6.917394504297664, + 50.907261330690375 + ], + [ + 6.917419819906394, + 50.907223572939166 + ], + [ + 6.917273684444345, + 50.90710379856981 + ], + [ + 6.917214871925665, + 50.907055629286845 + ], + [ + 6.917221914730444, + 50.9070522482698 + ], + [ + 6.917228945183458, + 50.907048857138655 + ], + [ + 6.9173324697348795, + 50.906998700331116 + ], + [ + 6.917446122404978, + 50.90694369120026 + ], + [ + 6.917412735753442, + 50.9069159969442 + ], + [ + 6.917562442875904, + 50.90684353363507 + ], + [ + 6.917517094080071, + 50.90680766370218 + ], + [ + 6.917436214069905, + 50.90674348652505 + ], + [ + 6.917410650816422, + 50.90672319171162 + ], + [ + 6.917319660804797, + 50.90665100398934 + ], + [ + 6.917269843070839, + 50.906583076547854 + ], + [ + 6.917378416340723, + 50.90653008140135 + ], + [ + 6.917548383020677, + 50.90644676520205 + ], + [ + 6.917441422587693, + 50.90634323950954 + ], + [ + 6.917388204852296, + 50.90636984074047 + ], + [ + 6.9173353062196, + 50.90639729036629 + ], + [ + 6.9173235560446695, + 50.90639956928029 + ], + [ + 6.917228600962136, + 50.906423390300795 + ], + [ + 6.91716341096789, + 50.90636897785343 + ], + [ + 6.917206362734725, + 50.90634805481069 + ], + [ + 6.91712746987453, + 50.90628368172905 + ], + [ + 6.91700103466103, + 50.906180219070784 + ], + [ + 6.916895993699549, + 50.906094657277876 + ], + [ + 6.916810445242922, + 50.906024313772996 + ], + [ + 6.916786458180377, + 50.906004636049076 + ], + [ + 6.916663480001928, + 50.90590339324591 + ], + [ + 6.916518105876862, + 50.90578380863921 + ], + [ + 6.916491951141222, + 50.905762350043744 + ], + [ + 6.916344643912771, + 50.9058338933836 + ], + [ + 6.916283947819583, + 50.90586340591563 + ], + [ + 6.916209039596798, + 50.90589968166796 + ], + [ + 6.916160119021577, + 50.90586356933777 + ], + [ + 6.915753180678664, + 50.90555488412054 + ], + [ + 6.915648711349001, + 50.90547571252677 + ], + [ + 6.915780038408338, + 50.90539412094199 + ], + [ + 6.916056277988585, + 50.9052231681923 + ], + [ + 6.916074300389037, + 50.905212044420374 + ], + [ + 6.915650715575504, + 50.904943553693585 + ], + [ + 6.915600840927913, + 50.90490870659987 + ], + [ + 6.915513920233595, + 50.904847901670166 + ], + [ + 6.9154679739533105, + 50.90472006609567 + ], + [ + 6.915307463587386, + 50.90427330335079 + ], + [ + 6.91527962352133, + 50.9041955856353 + ], + [ + 6.915218814425075, + 50.90414113338715 + ], + [ + 6.915212145798603, + 50.90413359971956 + ], + [ + 6.915140798466615, + 50.904062879947105 + ], + [ + 6.914816078108037, + 50.90375247616775 + ], + [ + 6.914700384764125, + 50.903641889920586 + ], + [ + 6.909838514204392, + 50.898992502438226 + ], + [ + 6.9094972130947285, + 50.89867181650158 + ], + [ + 6.9094740734275275, + 50.89865150123373 + ], + [ + 6.909282810670657, + 50.898502456771084 + ], + [ + 6.90915759153256, + 50.898404884542074 + ], + [ + 6.909093927327062, + 50.898343946288655 + ], + [ + 6.9090331070668975, + 50.898319050656156 + ], + [ + 6.90898754743377, + 50.89833919096274 + ], + [ + 6.908981608287077, + 50.898341825878994 + ], + [ + 6.908831753553178, + 50.89840796543151 + ], + [ + 6.90874336884969, + 50.89844697547297 + ], + [ + 6.908632653771035, + 50.898495889553416 + ], + [ + 6.908515857345821, + 50.8985473998986 + ], + [ + 6.908547422986614, + 50.89860786484205 + ], + [ + 6.90855712281069, + 50.898626296251635 + ], + [ + 6.908588475384174, + 50.89866292358764 + ], + [ + 6.908421936340045, + 50.89873823596563 + ], + [ + 6.9083767548926645, + 50.8987570310347 + ], + [ + 6.908368898056593, + 50.898749648344385 + ], + [ + 6.908339114544859, + 50.89872101225192 + ], + [ + 6.908259121890238, + 50.89869841947801 + ], + [ + 6.908254646154057, + 50.898696991971036 + ], + [ + 6.908242636275553, + 50.898703099399015 + ], + [ + 6.908143127541215, + 50.8987592704823 + ], + [ + 6.907958299355552, + 50.8988864179615 + ], + [ + 6.907939000638063, + 50.89889969232608 + ], + [ + 6.907847510591461, + 50.89894134329088 + ], + [ + 6.9078293857860285, + 50.898949622797076 + ], + [ + 6.905920944014591, + 50.899820813134006 + ], + [ + 6.905912300349353, + 50.899824472335254 + ], + [ + 6.905722300985511, + 50.89988901335938 + ], + [ + 6.905367430475301, + 50.89994011528079 + ], + [ + 6.905218599024939, + 50.900009429952796 + ], + [ + 6.904716810502903, + 50.90024286346225 + ], + [ + 6.904208116580976, + 50.900483536811585 + ], + [ + 6.9040876392107435, + 50.900540811891496 + ], + [ + 6.904082409172023, + 50.900543574417824 + ], + [ + 6.903981185192711, + 50.900601000006624 + ], + [ + 6.90372211908741, + 50.90074816163985 + ], + [ + 6.903622136358211, + 50.90080491129186 + ], + [ + 6.903616580799039, + 50.90080804839117 + ], + [ + 6.903534296726738, + 50.9008547936242 + ], + [ + 6.903539696257366, + 50.9008834012259 + ], + [ + 6.903546338636699, + 50.90088975780827 + ], + [ + 6.903552700173191, + 50.900895844025634 + ], + [ + 6.903585802112151, + 50.90092747925358 + ], + [ + 6.903467789543196, + 50.900981514312704 + ], + [ + 6.903459503923613, + 50.900985330863456 + ], + [ + 6.9034125174569185, + 50.90100678886603 + ], + [ + 6.903351492062935, + 50.90096416325608 + ], + [ + 6.903317638556741, + 50.90094039489673 + ], + [ + 6.903310476305517, + 50.900943678496006 + ], + [ + 6.903303321320489, + 50.900946958627834 + ], + [ + 6.903206340222808, + 50.90099180359153 + ], + [ + 6.90320143174738, + 50.900994086186834 + ], + [ + 6.903101719006767, + 50.90104030661502 + ], + [ + 6.903015394694092, + 50.901080278448944 + ], + [ + 6.902149719367078, + 50.90148089034862 + ], + [ + 6.902042989820565, + 50.90153299255751 + ], + [ + 6.901967319020487, + 50.90156937051739 + ], + [ + 6.901936885384234, + 50.90158399786184 + ], + [ + 6.901777194380233, + 50.90165805059546 + ], + [ + 6.901660354435047, + 50.90169923558117 + ], + [ + 6.90162973229839, + 50.9017219728379 + ], + [ + 6.901671682019347, + 50.90174423868017 + ], + [ + 6.9014083870055325, + 50.90186810868353 + ], + [ + 6.901355515412669, + 50.90187066731958 + ], + [ + 6.900823540669665, + 50.902104547827285 + ], + [ + 6.900314476103515, + 50.90234085276115 + ], + [ + 6.899617819348203, + 50.9026691235576 + ], + [ + 6.899212562106452, + 50.90286050850579 + ], + [ + 6.899023138035899, + 50.902947418661526 + ], + [ + 6.898310813896674, + 50.903270041118105 + ], + [ + 6.89770966975561, + 50.903543022835215 + ], + [ + 6.897600570698439, + 50.90359237837329 + ], + [ + 6.897594707188528, + 50.90359494662407 + ], + [ + 6.897491927910661, + 50.90362885649245 + ], + [ + 6.896955783785913, + 50.903891870949714 + ], + [ + 6.895747253183411, + 50.90444300233786 + ], + [ + 6.895741455945506, + 50.90444564184364 + ], + [ + 6.895020936451096, + 50.90477164203439 + ], + [ + 6.894102298737555, + 50.905187674059306 + ], + [ + 6.894093924513616, + 50.905191528825185 + ], + [ + 6.893983660091238, + 50.905241382530704 + ], + [ + 6.893156542983467, + 50.90561579901229 + ], + [ + 6.892935095284627, + 50.90571604020099 + ], + [ + 6.892347048051913, + 50.90598202422058 + ], + [ + 6.892343483010136, + 50.90598363899569 + ], + [ + 6.892338589808252, + 50.9059858746462 + ], + [ + 6.892269201184539, + 50.90601765513195 + ], + [ + 6.892161973215213, + 50.90606733712515 + ], + [ + 6.891385874739437, + 50.90642656986684 + ], + [ + 6.8910947238857485, + 50.906561345660826 + ], + [ + 6.8904717214492095, + 50.90684962038113 + ], + [ + 6.890314049987576, + 50.9069046864034 + ], + [ + 6.889677315181218, + 50.907210198198776 + ], + [ + 6.888855346059659, + 50.90758324665311 + ], + [ + 6.888849545651187, + 50.90758587586925 + ], + [ + 6.888148607844234, + 50.90790170768419 + ], + [ + 6.887349046744648, + 50.90826197686385 + ], + [ + 6.8872396909485305, + 50.908311263299815 + ], + [ + 6.886934983469939, + 50.90842738639638 + ], + [ + 6.886894489598131, + 50.908423408220656 + ], + [ + 6.885714417218679, + 50.90898613049379 + ], + [ + 6.885600286086958, + 50.909040453616626 + ], + [ + 6.885525633703512, + 50.90906908763727 + ], + [ + 6.885419338629505, + 50.90907175943538 + ], + [ + 6.885346530303522, + 50.909074206862854 + ], + [ + 6.885334073414548, + 50.9090789394842 + ], + [ + 6.885317512533043, + 50.909085679827584 + ], + [ + 6.885224117818983, + 50.90912668062209 + ], + [ + 6.885148694863054, + 50.90925502111027 + ], + [ + 6.8842837488615505, + 50.909648506057 + ], + [ + 6.882649677344133, + 50.91039090647924 + ], + [ + 6.882540174005532, + 50.9104402749173 + ], + [ + 6.880896828383614, + 50.91118203487836 + ], + [ + 6.880106766886996, + 50.911533019795996 + ], + [ + 6.8799899064192385, + 50.91158500885851 + ], + [ + 6.880113612878738, + 50.911650808564836 + ], + [ + 6.8802725207160025, + 50.91174616735202 + ], + [ + 6.880434872461336, + 50.91184201567237 + ], + [ + 6.8804458889869355, + 50.91184934790118 + ], + [ + 6.8804569040537, + 50.91185668100177 + ], + [ + 6.880529747997261, + 50.911881480648354 + ], + [ + 6.880768660661207, + 50.91196615436659 + ], + [ + 6.881004041182376, + 50.91205184362544 + ], + [ + 6.881508821160475, + 50.91218745521885 + ], + [ + 6.882120898766071, + 50.912327467069126 + ], + [ + 6.8826708694495355, + 50.91245383217005 + ], + [ + 6.883574302590021, + 50.91266120920179 + ], + [ + 6.8837396616252535, + 50.912675687509434 + ], + [ + 6.8837955610190695, + 50.91267661295785 + ], + [ + 6.883866115538647, + 50.91267050466047 + ], + [ + 6.883945412789547, + 50.91265309392227 + ], + [ + 6.883988812236742, + 50.91263973069881 + ], + [ + 6.884054130166501, + 50.91261244747124 + ], + [ + 6.8847034554267985, + 50.91195678866298 + ], + [ + 6.884715878972078, + 50.91194455909575 + ], + [ + 6.884945792599763, + 50.91171934128215 + ], + [ + 6.885390243480659, + 50.91132061848441 + ], + [ + 6.885609543411029, + 50.91114330279078 + ], + [ + 6.885766527100839, + 50.911016440467066 + ], + [ + 6.886182233120335, + 50.910692005124815 + ], + [ + 6.886377437155108, + 50.91054894010837 + ], + [ + 6.886706507497659, + 50.91031235832549 + ], + [ + 6.886811149376201, + 50.91024468175873 + ], + [ + 6.886862231501639, + 50.91021678665632 + ], + [ + 6.886973701149406, + 50.91016425066471 + ], + [ + 6.88704139869701, + 50.91015771279954 + ], + [ + 6.887120442605116, + 50.91015711211443 + ], + [ + 6.887330561967952, + 50.91017052588532 + ], + [ + 6.88750880140311, + 50.91018975598926 + ], + [ + 6.887762112388534, + 50.91023133715379 + ], + [ + 6.887915818784978, + 50.910268910850014 + ], + [ + 6.888074067823261, + 50.91031355209617 + ], + [ + 6.8882700407243025, + 50.91036797392495 + ], + [ + 6.888668866865142, + 50.91049465271345 + ], + [ + 6.88877895173556, + 50.910533726854695 + ], + [ + 6.888949156780393, + 50.91059382691657 + ], + [ + 6.8894341485558455, + 50.91078744624868 + ], + [ + 6.889471867439569, + 50.91080441807486 + ], + [ + 6.889522355074336, + 50.91082740565623 + ], + [ + 6.889713351101195, + 50.91092635998664 + ], + [ + 6.889775819752012, + 50.910958694682385 + ], + [ + 6.889816082653307, + 50.91098229861458 + ], + [ + 6.889962473607811, + 50.91106846887281 + ], + [ + 6.890492286642195, + 50.91142714484282 + ], + [ + 6.890890961578196, + 50.91168649991891 + ], + [ + 6.8911117145049525, + 50.91183178919174 + ], + [ + 6.892137428227029, + 50.9124539223273 + ], + [ + 6.892996986346095, + 50.91296683980658 + ], + [ + 6.894085320891978, + 50.91361885998686 + ], + [ + 6.89441215837762, + 50.913815378475306 + ], + [ + 6.894918089226932, + 50.91413357750192 + ], + [ + 6.894952195321162, + 50.91415507822543 + ], + [ + 6.895425413912529, + 50.91445061221944 + ], + [ + 6.8956789555063915, + 50.91460624941262 + ], + [ + 6.895790263889045, + 50.91466373494165 + ], + [ + 6.8970503593567, + 50.91530335209115 + ], + [ + 6.898018156091782, + 50.915841378876934 + ], + [ + 6.899639546501842, + 50.916733393926954 + ], + [ + 6.900129882321299, + 50.916991920662156 + ], + [ + 6.900270683859825, + 50.916920073656705 + ], + [ + 6.90027653417039, + 50.91691653729005 + ], + [ + 6.900282366646294, + 50.916912986212076 + ], + [ + 6.900677617250996, + 50.9167026416545 + ], + [ + 6.900699292367936, + 50.916691057989006 + ], + [ + 6.900958558879532, + 50.91655259809571 + ], + [ + 6.901251627167563, + 50.91677255098659 + ], + [ + 6.9011937952360345, + 50.91680437012107 + ], + [ + 6.901031275893332, + 50.91689372095464 + ], + [ + 6.900978867791517, + 50.91691920601355 + ], + [ + 6.901025735089403, + 50.916952913347075 + ], + [ + 6.901038858466088, + 50.91696234108163 + ], + [ + 6.9010952414915225, + 50.917002716679825 + ], + [ + 6.901125667310847, + 50.917024505532524 + ], + [ + 6.901189259456626, + 50.91707004009238 + ], + [ + 6.901224587059842, + 50.9170952070188 + ], + [ + 6.901330029344756, + 50.917113449385255 + ], + [ + 6.901396518899959, + 50.91712489163234 + ], + [ + 6.901434756543206, + 50.91713142786965 + ], + [ + 6.901529495046696, + 50.91714768602024 + ], + [ + 6.901504797616332, + 50.91720243909745 + ], + [ + 6.9014482111054605, + 50.91732720172776 + ], + [ + 6.901519213964374, + 50.91732934985131 + ], + [ + 6.9016749236637605, + 50.917424601724804 + ], + [ + 6.901819205131923, + 50.917517155742736 + ], + [ + 6.901859954359551, + 50.917543268955235 + ], + [ + 6.90195167571856, + 50.91760197930052 + ], + [ + 6.902096969408035, + 50.917695334526336 + ], + [ + 6.90217240611735, + 50.91775021469844 + ], + [ + 6.902213081935252, + 50.917779834969444 + ], + [ + 6.9022280826868565, + 50.917790775799034 + ], + [ + 6.902338279144919, + 50.91787082754628 + ], + [ + 6.90249564158227, + 50.9179852127545 + ], + [ + 6.902573533423534, + 50.91804196253371 + ], + [ + 6.902614497735437, + 50.918071759627374 + ], + [ + 6.902685321471774, + 50.918123349351966 + ], + [ + 6.902764943404893, + 50.91818134425895 + ], + [ + 6.902829535322752, + 50.91819019282507 + ], + [ + 6.902903023465609, + 50.91821785086342 + ], + [ + 6.902877674751359, + 50.91827476992731 + ], + [ + 6.90284491388208, + 50.91831610435567 + ], + [ + 6.902926182435329, + 50.918326892091976 + ], + [ + 6.903012583878502, + 50.918338359290864 + ], + [ + 6.903046802603401, + 50.91834294846483 + ], + [ + 6.903101266444939, + 50.918350167802586 + ], + [ + 6.903118661203782, + 50.91835245986032 + ], + [ + 6.90320976697032, + 50.91836451958167 + ], + [ + 6.903286717916263, + 50.91840203839118 + ], + [ + 6.903325765313025, + 50.91842097398717 + ], + [ + 6.903381183336521, + 50.918448051683065 + ], + [ + 6.903375831442656, + 50.91849474788678 + ], + [ + 6.903387736883853, + 50.91850004957391 + ], + [ + 6.903505671384649, + 50.91855361107528 + ], + [ + 6.903692760790522, + 50.918638549363266 + ], + [ + 6.9037693738487445, + 50.91867328447604 + ], + [ + 6.903891128098725, + 50.9187257377873 + ], + [ + 6.903684363053279, + 50.918953690769186 + ], + [ + 6.90366347657637, + 50.91897668526752 + ], + [ + 6.903622290739655, + 50.91902211458797 + ], + [ + 6.903619999252447, + 50.91902434617747 + ], + [ + 6.903549239016441, + 50.91908463276326 + ], + [ + 6.904266276028581, + 50.91939280513565 + ], + [ + 6.905350130202088, + 50.9193267883448 + ], + [ + 6.905955758450668, + 50.919289895555664 + ], + [ + 6.905970769872304, + 50.91944772099628 + ], + [ + 6.905942436536305, + 50.919563094861516 + ], + [ + 6.905986071315362, + 50.919561856798516 + ], + [ + 6.906407154896617, + 50.91955400149292 + ], + [ + 6.906705323301384, + 50.919558516616725 + ], + [ + 6.90670467327603, + 50.919634841176936 + ], + [ + 6.907309786953254, + 50.91962717112324 + ], + [ + 6.907498450521649, + 50.91962444499963 + ], + [ + 6.907622004436296, + 50.919622854701956 + ], + [ + 6.90797394770978, + 50.91954074127066 + ], + [ + 6.9080606189126295, + 50.91956438271875 + ], + [ + 6.9081952663111235, + 50.91960086464711 + ], + [ + 6.908303092730296, + 50.91957314793153 + ], + [ + 6.908367793642351, + 50.91955089013361 + ], + [ + 6.908594471737401, + 50.91962337640474 + ], + [ + 6.908696960590227, + 50.91966473808038 + ], + [ + 6.908795725143767, + 50.91970469105481 + ], + [ + 6.908850193542498, + 50.91972664959175 + ], + [ + 6.908933287357215, + 50.919750632814235 + ], + [ + 6.9091100624007264, + 50.91980184395464 + ], + [ + 6.909140386945396, + 50.91970865779063 + ], + [ + 6.909344062883521, + 50.91976100612288 + ], + [ + 6.909397888175765, + 50.919793667254375 + ], + [ + 6.909415442135743, + 50.91980413842608 + ], + [ + 6.909485388001097, + 50.9198466514173 + ], + [ + 6.909602368137324, + 50.919763307712955 + ], + [ + 6.909649828503279, + 50.91976132015319 + ], + [ + 6.909760804262447, + 50.919756499273696 + ], + [ + 6.909850082081144, + 50.91981315481274 + ], + [ + 6.9100449879578605, + 50.919685694548605 + ], + [ + 6.910168426812745, + 50.91970010314575 + ], + [ + 6.9103539539927645, + 50.91971999603113 + ], + [ + 6.9106375475657265, + 50.91977069517358 + ], + [ + 6.910722756683605, + 50.91978639027628 + ], + [ + 6.910843320046759, + 50.91981376527738 + ], + [ + 6.910755484009434, + 50.919874679597704 + ], + [ + 6.910711425251962, + 50.91990522730042 + ], + [ + 6.9105847181747695, + 50.919992963256426 + ], + [ + 6.91072032109968, + 50.92006948287052 + ], + [ + 6.910764323757819, + 50.92009430927365 + ], + [ + 6.910861530796591, + 50.920149014886725 + ], + [ + 6.910941771492258, + 50.920194323970506 + ], + [ + 6.911109694974664, + 50.920076151713 + ], + [ + 6.911128071848458, + 50.92006324345788 + ], + [ + 6.9111359266577335, + 50.920057608185154 + ], + [ + 6.911200461013666, + 50.92001233778371 + ], + [ + 6.911301046672466, + 50.91994161505736 + ], + [ + 6.911984651160278, + 50.92007424875235 + ], + [ + 6.911988452478097, + 50.92007817061823 + ], + [ + 6.911993769482041, + 50.92008307024803 + ], + [ + 6.91200339468045, + 50.920090390744015 + ], + [ + 6.912008510015411, + 50.92009378839081 + ], + [ + 6.9120137899901835, + 50.92009709994356 + ], + [ + 6.912146201933656, + 50.92018014968956 + ], + [ + 6.9122306401463085, + 50.92023448093975 + ], + [ + 6.91230894762404, + 50.920284865695336 + ], + [ + 6.912368295139373, + 50.92032305199595 + ], + [ + 6.912502947310983, + 50.920241813968126 + ], + [ + 6.912536046003881, + 50.92024703146549 + ], + [ + 6.912748329359447, + 50.92028049497952 + ], + [ + 6.912783837128095, + 50.920286091857015 + ], + [ + 6.912853327770809, + 50.920310311076946 + ], + [ + 6.912951086953447, + 50.920344382132704 + ], + [ + 6.913045445908318, + 50.9203772698769 + ], + [ + 6.913140530762517, + 50.920410409758745 + ], + [ + 6.913235033908025, + 50.920443388065365 + ], + [ + 6.913313368191251, + 50.920470724093995 + ], + [ + 6.913366164805988, + 50.920385361260614 + ], + [ + 6.913526464952277, + 50.92040828768497 + ], + [ + 6.913548954896327, + 50.92034401768976 + ], + [ + 6.913658345935412, + 50.92038163549277 + ], + [ + 6.913704637983371, + 50.920327247055376 + ], + [ + 6.913910922672658, + 50.92039619795112 + ], + [ + 6.914064772051286, + 50.92024963540105 + ], + [ + 6.914230293590821, + 50.92027498897504 + ], + [ + 6.914343915593814, + 50.92029185560013 + ], + [ + 6.914241134381678, + 50.920409971614426 + ], + [ + 6.914403903661187, + 50.92045723781683 + ], + [ + 6.9148129833740235, + 50.920438839685936 + ], + [ + 6.914906640404666, + 50.920377607216274 + ], + [ + 6.915166689189033, + 50.92041781776159 + ], + [ + 6.915466516434132, + 50.92046557257352 + ], + [ + 6.915472571871735, + 50.92046653513525 + ], + [ + 6.915479255607625, + 50.92046760695054 + ], + [ + 6.915519299730903, + 50.92061638950016 + ], + [ + 6.915650995700763, + 50.92064540272617 + ], + [ + 6.916039534517037, + 50.92073961767902 + ], + [ + 6.916121352197829, + 50.92060422550719 + ], + [ + 6.916266579520705, + 50.92064388819254 + ], + [ + 6.916274495751129, + 50.92064606932041 + ], + [ + 6.916291461497051, + 50.92065073511227 + ], + [ + 6.9163730607231955, + 50.92067309980318 + ], + [ + 6.916506267573981, + 50.92070955355181 + ], + [ + 6.916510370580459, + 50.92071045872273 + ], + [ + 6.916514335549311, + 50.920711427983896 + ], + [ + 6.916521161299615, + 50.92071339895985 + ], + [ + 6.916611663565024, + 50.920739080141715 + ], + [ + 6.916438611521201, + 50.9209788238483 + ], + [ + 6.916600978898767, + 50.921034732752986 + ], + [ + 6.916593606419064, + 50.92104315069914 + ], + [ + 6.916802520894134, + 50.92111522196048 + ], + [ + 6.916993935507371, + 50.920847094403406 + ], + [ + 6.91709849163096, + 50.92087737543308 + ], + [ + 6.917107596413228, + 50.92087996265033 + ], + [ + 6.917283964078149, + 50.920929340886694 + ], + [ + 6.91733239692556, + 50.92094026021543 + ], + [ + 6.917485616611428, + 50.92098369748968 + ], + [ + 6.917399930514161, + 50.9211027130419 + ], + [ + 6.917412057278498, + 50.921104861293294 + ], + [ + 6.91743336448235, + 50.92114097578456 + ], + [ + 6.917432718000285, + 50.921155451522864 + ], + [ + 6.917415466475354, + 50.92118671297901 + ], + [ + 6.917498218331821, + 50.92121640493082 + ], + [ + 6.917638046767436, + 50.92126659577786 + ], + [ + 6.917621173872472, + 50.92129090998365 + ], + [ + 6.917736245462168, + 50.9213495143549 + ], + [ + 6.91785014286474, + 50.92126906284356 + ], + [ + 6.917981584678144, + 50.9213067731166 + ], + [ + 6.918006042871501, + 50.92132105360714 + ], + [ + 6.918114792607235, + 50.92130419627288 + ], + [ + 6.9181315223371085, + 50.9213087397651 + ], + [ + 6.918216083298139, + 50.921190224363556 + ], + [ + 6.918373685980531, + 50.92123473964787 + ], + [ + 6.918529023928637, + 50.92127261915001 + ], + [ + 6.918534382584443, + 50.92127392618115 + ], + [ + 6.918539741240546, + 50.92127523321204 + ], + [ + 6.918697241429158, + 50.921314534299505 + ], + [ + 6.918917352850042, + 50.921376244438974 + ], + [ + 6.918924912110293, + 50.92137836325872 + ], + [ + 6.918826544129912, + 50.921517933076096 + ], + [ + 6.9186234552564, + 50.92180986982766 + ], + [ + 6.918616462617184, + 50.92181992075802 + ], + [ + 6.91862264768515, + 50.921823467596205 + ], + [ + 6.9187721579089505, + 50.921911914101784 + ], + [ + 6.919007154498821, + 50.92156802019039 + ], + [ + 6.919107275924432, + 50.92160399797176 + ], + [ + 6.9191216215526685, + 50.921617458474635 + ], + [ + 6.919231720664052, + 50.92165461594257 + ], + [ + 6.91923930520013, + 50.92164979195182 + ], + [ + 6.919312568791782, + 50.921694138891645 + ], + [ + 6.919416813370195, + 50.921758872140934 + ], + [ + 6.919572460163107, + 50.921668021597 + ], + [ + 6.919582975040216, + 50.92166130264976 + ], + [ + 6.919586682913439, + 50.92165725765737 + ], + [ + 6.919590084969529, + 50.921653050721275 + ], + [ + 6.919592601759619, + 50.92164368173426 + ], + [ + 6.919591237300474, + 50.9216383528508 + ], + [ + 6.919590426934096, + 50.92163435054079 + ], + [ + 6.919583857294189, + 50.92162577204432 + ], + [ + 6.919578601614106, + 50.92162244238525 + ], + [ + 6.919573344512981, + 50.92161911270062 + ], + [ + 6.919563243523626, + 50.921582875478045 + ], + [ + 6.919568185237151, + 50.921584694873204 + ], + [ + 6.919847959107014, + 50.92168771136552 + ], + [ + 6.919881854040922, + 50.921700191785355 + ], + [ + 6.919843056173966, + 50.921701577020286 + ], + [ + 6.919786887947289, + 50.92173806678429 + ], + [ + 6.919763891375579, + 50.92172529400681 + ], + [ + 6.919754895955451, + 50.92172222597933 + ], + [ + 6.919749358847774, + 50.921720930214526 + ], + [ + 6.91973205828871, + 50.92172219039696 + ], + [ + 6.919727747142695, + 50.921724033743956 + ], + [ + 6.919669180054139, + 50.92175719974684 + ], + [ + 6.919657547465419, + 50.92176380704332 + ], + [ + 6.919699733610069, + 50.921790994511205 + ], + [ + 6.919736629088933, + 50.92181480761847 + ], + [ + 6.919756665819124, + 50.92182774440051 + ], + [ + 6.919769961076099, + 50.921836304248444 + ], + [ + 6.919810063362539, + 50.921862138738106 + ], + [ + 6.919903600656758, + 50.92192248869232 + ], + [ + 6.919910649046498, + 50.921927035671715 + ], + [ + 6.919884561671651, + 50.921958252438365 + ], + [ + 6.919875637372034, + 50.921968931863056 + ], + [ + 6.920100000102768, + 50.92205078793782 + ], + [ + 6.920108134923944, + 50.92205375606053 + ], + [ + 6.920056241740271, + 50.92211750329462 + ], + [ + 6.920047594621322, + 50.92212812561406 + ], + [ + 6.92017356289935, + 50.922176573416905 + ], + [ + 6.920216128133771, + 50.92213542601056 + ], + [ + 6.920549326970144, + 50.92225649089995 + ], + [ + 6.92080159087913, + 50.922348259222574 + ], + [ + 6.920987101040104, + 50.92241565280292 + ], + [ + 6.921063367571432, + 50.92236704779753 + ], + [ + 6.921170144859692, + 50.922408634865754 + ], + [ + 6.921190494382149, + 50.922373236023624 + ], + [ + 6.921470195658239, + 50.922435480932585 + ], + [ + 6.921552221200106, + 50.92246554827142 + ], + [ + 6.921623421546109, + 50.92249164718418 + ], + [ + 6.921629357823962, + 50.922493823267736 + ], + [ + 6.921836788018122, + 50.92253562711982 + ], + [ + 6.921785109084234, + 50.92263138796397 + ], + [ + 6.921818249029166, + 50.92263867752083 + ], + [ + 6.92193245256498, + 50.92268173258699 + ], + [ + 6.922130344898728, + 50.92275609644424 + ], + [ + 6.922135563333623, + 50.92275806545579 + ], + [ + 6.922129339615761, + 50.92277060897936 + ], + [ + 6.922123045008569, + 50.922780496262114 + ], + [ + 6.9221158217166625, + 50.922791841100604 + ], + [ + 6.922136448292515, + 50.92279922887988 + ], + [ + 6.922221100418907, + 50.9228294837018 + ], + [ + 6.922303461148134, + 50.92285885675034 + ], + [ + 6.922342419993117, + 50.922872752274564 + ], + [ + 6.922393412876897, + 50.922890956879826 + ], + [ + 6.922563146707056, + 50.922951551076274 + ], + [ + 6.922570515064929, + 50.92294295280999 + ], + [ + 6.9226941183694315, + 50.92298665289041 + ], + [ + 6.922821016430797, + 50.92303149432897 + ], + [ + 6.922856823174324, + 50.92304415629197 + ], + [ + 6.922947343379232, + 50.92307616087766 + ], + [ + 6.923036431773899, + 50.92310772799689 + ], + [ + 6.9231637224189, + 50.923158050586636 + ], + [ + 6.923293354701923, + 50.923204398054416 + ], + [ + 6.9233059604713265, + 50.923208972650215 + ], + [ + 6.923394908709304, + 50.92324063053422 + ], + [ + 6.923483289115724, + 50.92327229263769 + ], + [ + 6.923510935826381, + 50.92328223159603 + ], + [ + 6.923504682965196, + 50.92328965268703 + ], + [ + 6.9235672008176055, + 50.92330812476011 + ], + [ + 6.923613551952771, + 50.92332178171405 + ], + [ + 6.923632894843502, + 50.92329304246896 + ], + [ + 6.923711380195183, + 50.9233134560729 + ], + [ + 6.923726677614398, + 50.92331747052015 + ], + [ + 6.9238527720441985, + 50.92335036171914 + ], + [ + 6.923920964751683, + 50.923368070233984 + ], + [ + 6.924169354452725, + 50.92333544960352 + ], + [ + 6.924344376830792, + 50.92339716772558 + ], + [ + 6.924370955183721, + 50.92340342969066 + ], + [ + 6.924374770641071, + 50.92340933273433 + ], + [ + 6.924427712059049, + 50.92342554298292 + ], + [ + 6.924436014354836, + 50.923428084772695 + ], + [ + 6.924414504330235, + 50.923455042607465 + ], + [ + 6.924400630394675, + 50.92347259197894 + ], + [ + 6.924339762624463, + 50.92355705076238 + ], + [ + 6.924548925506437, + 50.9236221700658 + ], + [ + 6.92455682199112, + 50.923624622786996 + ], + [ + 6.92443414324916, + 50.9237870121787 + ], + [ + 6.924425716452516, + 50.92379816667123 + ], + [ + 6.92445950236449, + 50.923809225475324 + ], + [ + 6.924560829120161, + 50.92384105400239 + ], + [ + 6.924575295885929, + 50.92384615261214 + ], + [ + 6.924701095868442, + 50.92388560853239 + ], + [ + 6.92484064467346, + 50.923929898300635 + ], + [ + 6.924979335988379, + 50.92397392532585 + ], + [ + 6.925124632024608, + 50.9240210456479 + ], + [ + 6.925121456240044, + 50.92402583506713 + ], + [ + 6.925407213552985, + 50.92412011515142 + ], + [ + 6.925413874917262, + 50.92411179194551 + ], + [ + 6.925439810702178, + 50.92412147428548 + ], + [ + 6.925506348642537, + 50.92414171209229 + ], + [ + 6.925543837227604, + 50.92415310080439 + ], + [ + 6.925674514924013, + 50.92419458321972 + ], + [ + 6.92571791781147, + 50.92421006034538 + ], + [ + 6.925807626578565, + 50.924236856125965 + ], + [ + 6.925911434187982, + 50.92427171979714 + ], + [ + 6.925953545719961, + 50.92427947427538 + ], + [ + 6.925976240360218, + 50.92428352093333 + ], + [ + 6.925998522986221, + 50.92428828876559 + ], + [ + 6.926082652620337, + 50.92426334986184 + ], + [ + 6.92617314520599, + 50.92423647245875 + ], + [ + 6.926244054426077, + 50.92414026263716 + ], + [ + 6.926353054434916, + 50.92417157926551 + ], + [ + 6.926397637393216, + 50.92411764928639 + ], + [ + 6.926449403706208, + 50.924131710691455 + ], + [ + 6.926536556417758, + 50.9241157371463 + ], + [ + 6.926553357453965, + 50.9240951978122 + ], + [ + 6.926620427289762, + 50.92401340141655 + ], + [ + 6.926769857442441, + 50.924060937577515 + ], + [ + 6.92689375574942, + 50.924100011976634 + ], + [ + 6.9271040550041, + 50.924166334024605 + ], + [ + 6.927227680099129, + 50.9242052287329 + ], + [ + 6.927235871529143, + 50.92420780612663 + ], + [ + 6.927162890908251, + 50.92430014388808 + ], + [ + 6.927154293385963, + 50.92431102212945 + ], + [ + 6.927297766434305, + 50.92436193062225 + ], + [ + 6.92730569693942, + 50.92436474441183 + ], + [ + 6.927279898588168, + 50.924397670462014 + ], + [ + 6.927219415393605, + 50.92447456024674 + ], + [ + 6.927155744964086, + 50.92456280206176 + ], + [ + 6.927123220417559, + 50.92460800661163 + ], + [ + 6.927119821062631, + 50.924623045969206 + ], + [ + 6.927102192586977, + 50.92470211237059 + ], + [ + 6.927096427332543, + 50.92472766935649 + ], + [ + 6.927093435921782, + 50.92474092618747 + ], + [ + 6.9271615380445795, + 50.924753958885695 + ], + [ + 6.928015901227509, + 50.92491778423505 + ], + [ + 6.928204950220779, + 50.924733348088054 + ], + [ + 6.928277501152137, + 50.92466256384641 + ], + [ + 6.928355629449523, + 50.92458625201602 + ], + [ + 6.928373070050438, + 50.924569303316716 + ], + [ + 6.928516884250391, + 50.92461725648408 + ], + [ + 6.928526845731627, + 50.92462057750979 + ], + [ + 6.928457694127773, + 50.9246885586018 + ], + [ + 6.928447471602822, + 50.92469860764669 + ], + [ + 6.9285773167669715, + 50.92474809449353 + ], + [ + 6.928799743982611, + 50.92484141946253 + ], + [ + 6.928808810335437, + 50.9248452237369 + ], + [ + 6.9286440641566545, + 50.92501393203131 + ], + [ + 6.928633462789851, + 50.925024788309926 + ], + [ + 6.928682097071359, + 50.92503869419914 + ], + [ + 6.928787237186472, + 50.925068411080986 + ], + [ + 6.92879206761565, + 50.92506974064033 + ], + [ + 6.928893645963517, + 50.925098498438736 + ], + [ + 6.928939418982857, + 50.92511143697991 + ], + [ + 6.929043262216144, + 50.9251407240971 + ], + [ + 6.929196599086498, + 50.92518409033099 + ], + [ + 6.929217338457199, + 50.92518994809563 + ], + [ + 6.929269670451386, + 50.92514665210082 + ], + [ + 6.929305213495663, + 50.925117424070294 + ], + [ + 6.929311665664893, + 50.9251121647266 + ], + [ + 6.929335859337796, + 50.92509227778779 + ], + [ + 6.92934467721415, + 50.92508501701431 + ], + [ + 6.929352025127866, + 50.925088810547265 + ], + [ + 6.929356439551281, + 50.92509108065171 + ], + [ + 6.929545281946999, + 50.925187875388 + ], + [ + 6.929554047088123, + 50.92518519871176 + ], + [ + 6.929578758732763, + 50.92519767706974 + ], + [ + 6.929721121311433, + 50.925239871220235 + ], + [ + 6.929731904139349, + 50.92522242379582 + ], + [ + 6.929733613315271, + 50.92521963275014 + ], + [ + 6.929735325454509, + 50.925216839058805 + ], + [ + 6.929769542168146, + 50.92516148730557 + ], + [ + 6.9300106860666695, + 50.92528889299257 + ], + [ + 6.930013451779671, + 50.92529083074166 + ], + [ + 6.930261162023085, + 50.925464384500536 + ], + [ + 6.931182598922091, + 50.92604750997472 + ], + [ + 6.931196864232928, + 50.92609803823604 + ], + [ + 6.9312554168404175, + 50.9261364641859 + ], + [ + 6.931247859941384, + 50.92614009955974 + ], + [ + 6.9315043469937825, + 50.92640387290709 + ], + [ + 6.931514105114727, + 50.92640611350992 + ], + [ + 6.931771430119303, + 50.926565892137454 + ], + [ + 6.931986465601566, + 50.926699823712056 + ], + [ + 6.93202307885496, + 50.926724162086686 + ], + [ + 6.9321994175772055, + 50.92683628840208 + ], + [ + 6.932394688947739, + 50.9269633215828 + ], + [ + 6.93247031111671, + 50.92701072019937 + ], + [ + 6.9325313456720234, + 50.92704704262972 + ], + [ + 6.932587921333556, + 50.92708084063499 + ], + [ + 6.932646077013871, + 50.9271154337685 + ], + [ + 6.9327955869922935, + 50.927190509750695 + ], + [ + 6.932842201065904, + 50.92721391693816 + ], + [ + 6.932893476194175, + 50.92723166590046 + ], + [ + 6.932855768835353, + 50.927286612259216 + ], + [ + 6.932851999248552, + 50.92729132661175 + ], + [ + 6.932803859160236, + 50.92733584154591 + ], + [ + 6.932789857687804, + 50.927348769513436 + ], + [ + 6.932784535328923, + 50.92735368031005 + ], + [ + 6.932779215852702, + 50.927358590258066 + ], + [ + 6.932496322963823, + 50.92762138136911 + ], + [ + 6.932419251747404, + 50.92769693308986 + ], + [ + 6.932115257352216, + 50.92799793206233 + ], + [ + 6.932278719950996, + 50.92808472117492 + ], + [ + 6.932497805197846, + 50.92814436893616 + ], + [ + 6.932531315790879, + 50.928153341119184 + ], + [ + 6.933221796608013, + 50.92833314522529 + ], + [ + 6.9332232777162055, + 50.928330520974484 + ], + [ + 6.933240958045741, + 50.92829717829073 + ], + [ + 6.933266040430985, + 50.928250502931505 + ], + [ + 6.933297304426379, + 50.92819218210712 + ], + [ + 6.933314714770681, + 50.92815950197253 + ], + [ + 6.933337751844415, + 50.92811661814997 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Suelz", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "302", + "Population_rel": 0.03378827984265284, + "Population_abs": 36763 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.916945504297374, + 50.943160987662026 + ], + [ + 6.918128285435194, + 50.94271512399717 + ], + [ + 6.918132147182865, + 50.94271366661725 + ], + [ + 6.9181374223930865, + 50.94271167053269 + ], + [ + 6.91814582288794, + 50.94270848274174 + ], + [ + 6.917456894607436, + 50.941928776337356 + ], + [ + 6.917340160218979, + 50.941796825875144 + ], + [ + 6.917337481730103, + 50.94179378674823 + ], + [ + 6.9173720291955245, + 50.94178516015288 + ], + [ + 6.917389774738764, + 50.9417804824752 + ], + [ + 6.91739581199542, + 50.94177888855191 + ], + [ + 6.91742457353602, + 50.94177253848146 + ], + [ + 6.917431144537045, + 50.94177107369597 + ], + [ + 6.917439052865613, + 50.94176930809117 + ], + [ + 6.917459486364251, + 50.94176468644978 + ], + [ + 6.917723065360485, + 50.94168629988013 + ], + [ + 6.917877920769295, + 50.94164023819033 + ], + [ + 6.917886487363662, + 50.94163769374038 + ], + [ + 6.917895029455191, + 50.941635156047845 + ], + [ + 6.918068782038181, + 50.94158348174751 + ], + [ + 6.918160158740008, + 50.94155632037632 + ], + [ + 6.918219637459833, + 50.941538612799775 + ], + [ + 6.918226408089201, + 50.941536597511146 + ], + [ + 6.9182322207611975, + 50.94153486733088 + ], + [ + 6.918307075525856, + 50.941512588944825 + ], + [ + 6.918587432517197, + 50.94142915730417 + ], + [ + 6.9186755632538, + 50.94156204453698 + ], + [ + 6.918754122722292, + 50.941676158263945 + ], + [ + 6.919022701060438, + 50.94197866111874 + ], + [ + 6.919039058351548, + 50.94199770389404 + ], + [ + 6.919004386922631, + 50.942008089759504 + ], + [ + 6.918980724338298, + 50.94201485938938 + ], + [ + 6.918985816052867, + 50.94202114509128 + ], + [ + 6.918989514414992, + 50.942025734905016 + ], + [ + 6.919015340258198, + 50.94205684528061 + ], + [ + 6.9191999002963245, + 50.94227914243202 + ], + [ + 6.919263120950215, + 50.942253617049495 + ], + [ + 6.919443992244885, + 50.94218057688401 + ], + [ + 6.919969054053275, + 50.94196635119156 + ], + [ + 6.922415478664459, + 50.94099411617875 + ], + [ + 6.922419931325958, + 50.94099236158668 + ], + [ + 6.9224265203572655, + 50.94098981578685 + ], + [ + 6.9224247419359, + 50.94097644812234 + ], + [ + 6.922422222129502, + 50.9409516442317 + ], + [ + 6.922405993690435, + 50.94080631771442 + ], + [ + 6.9223924624123425, + 50.94068513899422 + ], + [ + 6.922381546662982, + 50.94058735204054 + ], + [ + 6.922380344244058, + 50.94057278316021 + ], + [ + 6.922376649325449, + 50.94052797771447 + ], + [ + 6.922373868208748, + 50.94049511521732 + ], + [ + 6.922368007330178, + 50.94042587192652 + ], + [ + 6.922361684582177, + 50.94035006662819 + ], + [ + 6.922371486650875, + 50.94034646008639 + ], + [ + 6.922379015229808, + 50.94034333652069 + ], + [ + 6.922496004020407, + 50.940327349124644 + ], + [ + 6.922506668048728, + 50.94032589663847 + ], + [ + 6.922535579526515, + 50.94032195832454 + ], + [ + 6.922619653625612, + 50.94031045844826 + ], + [ + 6.922956716578306, + 50.940173955624815 + ], + [ + 6.923516129762936, + 50.939947409333875 + ], + [ + 6.9236087596593, + 50.939909931237715 + ], + [ + 6.923692100630225, + 50.939876237032344 + ], + [ + 6.9236833870291115, + 50.93975842329398 + ], + [ + 6.923658142977918, + 50.93941751109276 + ], + [ + 6.923656570326868, + 50.93939558860034 + ], + [ + 6.923656222671678, + 50.939390388494004 + ], + [ + 6.923655884151129, + 50.93938517505943 + ], + [ + 6.92365371745008, + 50.93935185764152 + ], + [ + 6.923653486737663, + 50.93934847366576 + ], + [ + 6.9236487841926895, + 50.939283734453255 + ], + [ + 6.924867359099988, + 50.93908297060457 + ], + [ + 6.925291482269656, + 50.9390277531554 + ], + [ + 6.925295428109108, + 50.93902724048539 + ], + [ + 6.925325574078443, + 50.93902333421846 + ], + [ + 6.924894841471927, + 50.93775855199023 + ], + [ + 6.92480782708255, + 50.937502852777726 + ], + [ + 6.924720956891273, + 50.936865686405 + ], + [ + 6.9246950273324, + 50.93622052407753 + ], + [ + 6.924696815227575, + 50.935650315098584 + ], + [ + 6.924697503267187, + 50.93563377602343 + ], + [ + 6.924763564454833, + 50.93406092932466 + ], + [ + 6.924764377069302, + 50.934035484989316 + ], + [ + 6.924776637652457, + 50.93365154218435 + ], + [ + 6.92477983428571, + 50.9335975812797 + ], + [ + 6.924865458875267, + 50.93336749482475 + ], + [ + 6.925226677974193, + 50.93285446011724 + ], + [ + 6.925228346276766, + 50.932852088421946 + ], + [ + 6.925230689126317, + 50.93284875918316 + ], + [ + 6.925243837857392, + 50.932830006052065 + ], + [ + 6.9252484212867165, + 50.93282347077007 + ], + [ + 6.925595739589788, + 50.93232776806065 + ], + [ + 6.925637913973448, + 50.93226704572587 + ], + [ + 6.92565695932887, + 50.93223929469769 + ], + [ + 6.926107616728395, + 50.93160787724907 + ], + [ + 6.926177405075736, + 50.93151025534907 + ], + [ + 6.926226821552942, + 50.9314407153212 + ], + [ + 6.926516927224461, + 50.930985620414084 + ], + [ + 6.926530848608157, + 50.930989467927084 + ], + [ + 6.926543031791754, + 50.930992814186105 + ], + [ + 6.926549846185431, + 50.93099466743928 + ], + [ + 6.926726852601236, + 50.93104317357584 + ], + [ + 6.926735577406947, + 50.93104431246462 + ], + [ + 6.926739566150506, + 50.93104473946545 + ], + [ + 6.926744435446505, + 50.9310452396664 + ], + [ + 6.926896029051356, + 50.93107196354816 + ], + [ + 6.9274758370633105, + 50.93115778957788 + ], + [ + 6.927662148204804, + 50.931177522800084 + ], + [ + 6.927808688448487, + 50.93119298815865 + ], + [ + 6.928006191946148, + 50.93120308388619 + ], + [ + 6.928013395208695, + 50.931203426699895 + ], + [ + 6.928018147269989, + 50.93120365135462 + ], + [ + 6.92818090238237, + 50.93121178180921 + ], + [ + 6.928487259004772, + 50.93120934486255 + ], + [ + 6.928564915219414, + 50.93120872722971 + ], + [ + 6.92889029645721, + 50.93119022661606 + ], + [ + 6.9291405733241875, + 50.93116468163789 + ], + [ + 6.929369780677603, + 50.93115153898349 + ], + [ + 6.929378017749713, + 50.93115106812411 + ], + [ + 6.929386253818729, + 50.93115071596463 + ], + [ + 6.929398182165296, + 50.93115060917672 + ], + [ + 6.929415944576886, + 50.93115033426201 + ], + [ + 6.929461712473853, + 50.93114747123448 + ], + [ + 6.92957372094873, + 50.931143253165565 + ], + [ + 6.929704347278447, + 50.93114535867156 + ], + [ + 6.929760267283996, + 50.93114617147804 + ], + [ + 6.929800858803993, + 50.9311487279182 + ], + [ + 6.929806942905183, + 50.931149114628646 + ], + [ + 6.929813639909932, + 50.931149544586376 + ], + [ + 6.929963222900485, + 50.931159255694176 + ], + [ + 6.929969338301277, + 50.931159706807236 + ], + [ + 6.929974775342621, + 50.931160114411874 + ], + [ + 6.9299876785620524, + 50.93116109781318 + ], + [ + 6.929994001569384, + 50.93116168121804 + ], + [ + 6.9303435067122425, + 50.931194081207764 + ], + [ + 6.930353491521537, + 50.93119553266575 + ], + [ + 6.930365672162366, + 50.931197533004614 + ], + [ + 6.930611919324693, + 50.93123908368473 + ], + [ + 6.9307249534986815, + 50.93125776923749 + ], + [ + 6.9308494042342845, + 50.931278261547774 + ], + [ + 6.930893219975841, + 50.93128555243929 + ], + [ + 6.930986702442624, + 50.931300996958754 + ], + [ + 6.931029700699793, + 50.9313106422778 + ], + [ + 6.931042858481225, + 50.9313136195043 + ], + [ + 6.931056011599251, + 50.93131660564043 + ], + [ + 6.93116974908559, + 50.93134231659673 + ], + [ + 6.931299648349674, + 50.931371851130415 + ], + [ + 6.931381235160237, + 50.93131322826644 + ], + [ + 6.931446544978363, + 50.93126630204976 + ], + [ + 6.931532698692425, + 50.931167903054536 + ], + [ + 6.931506065814257, + 50.93115912532745 + ], + [ + 6.9303882025315415, + 50.930791552610714 + ], + [ + 6.930325088688897, + 50.93077080188724 + ], + [ + 6.9303167116343225, + 50.93076801637085 + ], + [ + 6.9302870959423375, + 50.93075821863999 + ], + [ + 6.930288673659975, + 50.93075573194545 + ], + [ + 6.93029025556385, + 50.93075324712385 + ], + [ + 6.930322289759427, + 50.93070331487854 + ], + [ + 6.930410009348257, + 50.93056470615655 + ], + [ + 6.9304137475987, + 50.93055994006188 + ], + [ + 6.930445758853969, + 50.930510358134654 + ], + [ + 6.930936920483166, + 50.929766529833444 + ], + [ + 6.930969829242417, + 50.929716837758605 + ], + [ + 6.931065923997123, + 50.929570896846286 + ], + [ + 6.9312072100305215, + 50.92935630120545 + ], + [ + 6.931261819182709, + 50.929273237182215 + ], + [ + 6.931947517200324, + 50.928230874261224 + ], + [ + 6.931980320962102, + 50.92818102894664 + ], + [ + 6.932013369672032, + 50.928130889367985 + ], + [ + 6.932115257352216, + 50.92799793206233 + ], + [ + 6.932496322963823, + 50.92762138136911 + ], + [ + 6.932779376430648, + 50.92735865965612 + ], + [ + 6.932789976363718, + 50.92734882108113 + ], + [ + 6.932803928943801, + 50.92733587246134 + ], + [ + 6.932851999248552, + 50.92729132661175 + ], + [ + 6.932893476194175, + 50.92723166590046 + ], + [ + 6.932842201065904, + 50.92721391693816 + ], + [ + 6.9327955869922935, + 50.927190509750695 + ], + [ + 6.932646077013871, + 50.9271154337685 + ], + [ + 6.932587921333556, + 50.92708084063499 + ], + [ + 6.9325313456720234, + 50.92704704262972 + ], + [ + 6.93247031111671, + 50.92701072019937 + ], + [ + 6.932394688947739, + 50.9269633215828 + ], + [ + 6.9321994175772055, + 50.92683628840208 + ], + [ + 6.93202307885496, + 50.926724162086686 + ], + [ + 6.931986465601566, + 50.926699823712056 + ], + [ + 6.931771430119303, + 50.926565892137454 + ], + [ + 6.93151434398801, + 50.92640595765311 + ], + [ + 6.931502390151136, + 50.92640377976971 + ], + [ + 6.931247791595313, + 50.92614013252492 + ], + [ + 6.9312568069513265, + 50.926135795400235 + ], + [ + 6.931196864232928, + 50.92609803823604 + ], + [ + 6.931182598922091, + 50.92604750997472 + ], + [ + 6.930261162023085, + 50.925464384500536 + ], + [ + 6.9300106860666695, + 50.92528889299257 + ], + [ + 6.92976954204844, + 50.925161490001585 + ], + [ + 6.929735326876409, + 50.92521683908402 + ], + [ + 6.929731892843935, + 50.92522242179673 + ], + [ + 6.929721121311433, + 50.925239871220235 + ], + [ + 6.929578758732763, + 50.92519767706974 + ], + [ + 6.929554047088123, + 50.92518519871176 + ], + [ + 6.929545281946999, + 50.925187875388 + ], + [ + 6.929357901759382, + 50.92509183239205 + ], + [ + 6.9293520222042515, + 50.92508881229416 + ], + [ + 6.92934467721415, + 50.92508501701431 + ], + [ + 6.929335859337796, + 50.92509227778779 + ], + [ + 6.929311664242995, + 50.92511216470138 + ], + [ + 6.929305213495663, + 50.925117424070294 + ], + [ + 6.929269670451386, + 50.92514665210082 + ], + [ + 6.929217338457199, + 50.92518994809563 + ], + [ + 6.929196599086498, + 50.92518409033099 + ], + [ + 6.929043262216144, + 50.9251407240971 + ], + [ + 6.928939418982857, + 50.92511143697991 + ], + [ + 6.928893645963517, + 50.925098498438736 + ], + [ + 6.928793663784404, + 50.92507016738989 + ], + [ + 6.928787229637852, + 50.92506842084025 + ], + [ + 6.928682097071359, + 50.92503869419914 + ], + [ + 6.928633462789851, + 50.925024788309926 + ], + [ + 6.928808810335437, + 50.9248452237369 + ], + [ + 6.9285773167669715, + 50.92474809449353 + ], + [ + 6.928447471602822, + 50.92469860764669 + ], + [ + 6.928526845731627, + 50.92462057750979 + ], + [ + 6.928373070050438, + 50.924569303316716 + ], + [ + 6.928355629449523, + 50.92458625201602 + ], + [ + 6.928277501152137, + 50.92466256384641 + ], + [ + 6.928204950220779, + 50.924733348088054 + ], + [ + 6.928015901227509, + 50.92491778423505 + ], + [ + 6.9271615380445795, + 50.924753958885695 + ], + [ + 6.927093435921782, + 50.92474092618747 + ], + [ + 6.927102192586977, + 50.92470211237059 + ], + [ + 6.927119821062631, + 50.924623045969206 + ], + [ + 6.927123220417559, + 50.92460800661163 + ], + [ + 6.927155744964086, + 50.92456280206176 + ], + [ + 6.927219415393605, + 50.92447456024674 + ], + [ + 6.927279898588168, + 50.924397670462014 + ], + [ + 6.92730569693942, + 50.92436474441183 + ], + [ + 6.927154293385963, + 50.92431102212945 + ], + [ + 6.927235871529143, + 50.92420780612663 + ], + [ + 6.9271040550041, + 50.924166334024605 + ], + [ + 6.926769857442441, + 50.924060937577515 + ], + [ + 6.926620427289762, + 50.92401340141655 + ], + [ + 6.926553357453965, + 50.9240951978122 + ], + [ + 6.926536556417758, + 50.9241157371463 + ], + [ + 6.926449403706208, + 50.924131710691455 + ], + [ + 6.926397637393216, + 50.92411764928639 + ], + [ + 6.926353054434916, + 50.92417157926551 + ], + [ + 6.926244054426077, + 50.92414026263716 + ], + [ + 6.92617314520599, + 50.92423647245875 + ], + [ + 6.926082652620337, + 50.92426334986184 + ], + [ + 6.925998522986221, + 50.92428828876559 + ], + [ + 6.925976240360218, + 50.92428352093333 + ], + [ + 6.925953545719961, + 50.92427947427538 + ], + [ + 6.925911434187982, + 50.92427171979714 + ], + [ + 6.925807626578565, + 50.924236856125965 + ], + [ + 6.92571791781147, + 50.92421006034538 + ], + [ + 6.925674514924013, + 50.92419458321972 + ], + [ + 6.925543837227604, + 50.92415310080439 + ], + [ + 6.925506348642537, + 50.92414171209229 + ], + [ + 6.925439810702178, + 50.92412147428548 + ], + [ + 6.925413874917262, + 50.92411179194551 + ], + [ + 6.925407213552985, + 50.92412011515142 + ], + [ + 6.925121456240044, + 50.92402583506713 + ], + [ + 6.925124632024608, + 50.9240210456479 + ], + [ + 6.924979335988379, + 50.92397392532585 + ], + [ + 6.92484064467346, + 50.923929898300635 + ], + [ + 6.924701095868442, + 50.92388560853239 + ], + [ + 6.924575295885929, + 50.92384615261214 + ], + [ + 6.924560829120161, + 50.92384105400239 + ], + [ + 6.92445950236449, + 50.923809225475324 + ], + [ + 6.924425716452516, + 50.92379816667123 + ], + [ + 6.92455682199112, + 50.923624622786996 + ], + [ + 6.924341024613794, + 50.92355801395853 + ], + [ + 6.9243356915624, + 50.923554460095346 + ], + [ + 6.924400630394675, + 50.92347259197894 + ], + [ + 6.924414504330235, + 50.923455042607465 + ], + [ + 6.924436014354836, + 50.923428084772695 + ], + [ + 6.924374770641071, + 50.92340933273433 + ], + [ + 6.924370955183721, + 50.92340342969066 + ], + [ + 6.924344376830792, + 50.92339716772558 + ], + [ + 6.924169354452725, + 50.92333544960352 + ], + [ + 6.923920964751683, + 50.923368070233984 + ], + [ + 6.9238527720441985, + 50.92335036171914 + ], + [ + 6.923726677614398, + 50.92331747052015 + ], + [ + 6.923711380195183, + 50.9233134560729 + ], + [ + 6.923632894843502, + 50.92329304246896 + ], + [ + 6.923613551952771, + 50.92332178171405 + ], + [ + 6.9235672008176055, + 50.92330812476011 + ], + [ + 6.923504682965196, + 50.92328965268703 + ], + [ + 6.923510935826381, + 50.92328223159603 + ], + [ + 6.923483289115724, + 50.92327229263769 + ], + [ + 6.923394908709304, + 50.92324063053422 + ], + [ + 6.9233059604713265, + 50.923208972650215 + ], + [ + 6.923293354701923, + 50.923204398054416 + ], + [ + 6.9231637224189, + 50.923158050586636 + ], + [ + 6.923036431773899, + 50.92310772799689 + ], + [ + 6.922947343379232, + 50.92307616087766 + ], + [ + 6.922856823174324, + 50.92304415629197 + ], + [ + 6.922821016430797, + 50.92303149432897 + ], + [ + 6.9226941183694315, + 50.92298665289041 + ], + [ + 6.922570515064929, + 50.92294295280999 + ], + [ + 6.922563146707056, + 50.922951551076274 + ], + [ + 6.922393412876897, + 50.922890956879826 + ], + [ + 6.922342419993117, + 50.922872752274564 + ], + [ + 6.922303461148134, + 50.92285885675034 + ], + [ + 6.922221100418907, + 50.9228294837018 + ], + [ + 6.922136448292515, + 50.92279922887988 + ], + [ + 6.9221158217166625, + 50.922791841100604 + ], + [ + 6.922129339615761, + 50.92277060897936 + ], + [ + 6.922135563333623, + 50.92275806545579 + ], + [ + 6.92193245256498, + 50.92268173258699 + ], + [ + 6.921818249029166, + 50.92263867752083 + ], + [ + 6.921785109084234, + 50.92263138796397 + ], + [ + 6.921836788018122, + 50.92253562711982 + ], + [ + 6.921629357823962, + 50.922493823267736 + ], + [ + 6.921470195658239, + 50.922435480932585 + ], + [ + 6.921190494382149, + 50.922373236023624 + ], + [ + 6.921170144859692, + 50.922408634865754 + ], + [ + 6.921063367571432, + 50.92236704779753 + ], + [ + 6.920987101040104, + 50.92241565280292 + ], + [ + 6.92080159087913, + 50.922348259222574 + ], + [ + 6.920549326970144, + 50.92225649089995 + ], + [ + 6.920216128133771, + 50.92213542601056 + ], + [ + 6.92017356289935, + 50.922176573416905 + ], + [ + 6.920047594621322, + 50.92212812561406 + ], + [ + 6.920108134923944, + 50.92205375606053 + ], + [ + 6.919875637372034, + 50.921968931863056 + ], + [ + 6.919910649046498, + 50.921927035671715 + ], + [ + 6.919810070671946, + 50.92186213437147 + ], + [ + 6.919769961076099, + 50.921836304248444 + ], + [ + 6.919756665819124, + 50.92182774440051 + ], + [ + 6.919736629088933, + 50.92181480761847 + ], + [ + 6.919699736533838, + 50.92179099276455 + ], + [ + 6.919657547465419, + 50.92176380704332 + ], + [ + 6.9197294426895315, + 50.92172283450623 + ], + [ + 6.919733310695869, + 50.92172148331837 + ], + [ + 6.919749537377144, + 50.92172037308055 + ], + [ + 6.919756541812658, + 50.921722523328945 + ], + [ + 6.919763570105826, + 50.921724968100506 + ], + [ + 6.919786887947289, + 50.92173806678429 + ], + [ + 6.919843056173966, + 50.921701577020286 + ], + [ + 6.919881854040922, + 50.921700191785355 + ], + [ + 6.919563243523626, + 50.921582875478045 + ], + [ + 6.919573344512981, + 50.92161911270062 + ], + [ + 6.919583857294189, + 50.92162577204432 + ], + [ + 6.919590426934096, + 50.92163435054079 + ], + [ + 6.919592601759619, + 50.92164368173426 + ], + [ + 6.919590084969529, + 50.921653050721275 + ], + [ + 6.919583280856725, + 50.92166146459336 + ], + [ + 6.919572460163107, + 50.921668021597 + ], + [ + 6.919416813370195, + 50.921758872140934 + ], + [ + 6.9193163647052955, + 50.92169188435079 + ], + [ + 6.91931130442168, + 50.921694890721646 + ], + [ + 6.91923930520013, + 50.92164979195182 + ], + [ + 6.919231720664052, + 50.92165461594257 + ], + [ + 6.9191216215526685, + 50.921617458474635 + ], + [ + 6.919107275924432, + 50.92160399797176 + ], + [ + 6.919007154498821, + 50.92156802019039 + ], + [ + 6.9187721579089505, + 50.921911914101784 + ], + [ + 6.91862264768515, + 50.921823467596205 + ], + [ + 6.918616462617184, + 50.92181992075802 + ], + [ + 6.918826544129912, + 50.921517933076096 + ], + [ + 6.918924912110293, + 50.92137836325872 + ], + [ + 6.918697241429158, + 50.921314534299505 + ], + [ + 6.9185397412806555, + 50.92127523231338 + ], + [ + 6.918529023928637, + 50.92127261915001 + ], + [ + 6.918373685980531, + 50.92123473964787 + ], + [ + 6.918216083298139, + 50.921190224363556 + ], + [ + 6.9181315223371085, + 50.9213087397651 + ], + [ + 6.918114792607235, + 50.92130419627288 + ], + [ + 6.918006042871501, + 50.92132105360714 + ], + [ + 6.917981584678144, + 50.9213067731166 + ], + [ + 6.91785014286474, + 50.92126906284356 + ], + [ + 6.917736245462168, + 50.9213495143549 + ], + [ + 6.917621173872472, + 50.92129090998365 + ], + [ + 6.917638046767436, + 50.92126659577786 + ], + [ + 6.917498218331821, + 50.92121640493082 + ], + [ + 6.917415466475354, + 50.92118671297901 + ], + [ + 6.917432718000285, + 50.921155451522864 + ], + [ + 6.91743336448235, + 50.92114097578456 + ], + [ + 6.917412057278498, + 50.921104861293294 + ], + [ + 6.917399930514161, + 50.9211027130419 + ], + [ + 6.917485616611428, + 50.92098369748968 + ], + [ + 6.91733239692556, + 50.92094026021543 + ], + [ + 6.917283964078149, + 50.920929340886694 + ], + [ + 6.91709849163096, + 50.92087737543308 + ], + [ + 6.916993935507371, + 50.920847094403406 + ], + [ + 6.916802520894134, + 50.92111522196048 + ], + [ + 6.916593606419064, + 50.92104315069914 + ], + [ + 6.916600978898767, + 50.921034732752986 + ], + [ + 6.916438611521201, + 50.9209788238483 + ], + [ + 6.916611663565024, + 50.920739080141715 + ], + [ + 6.9165229480249115, + 50.92071394979814 + ], + [ + 6.916515567489011, + 50.92071162535445 + ], + [ + 6.9165104121799175, + 50.92071038751459 + ], + [ + 6.916504819695687, + 50.92070928487272 + ], + [ + 6.916274497213035, + 50.92064606844712 + ], + [ + 6.916268195942585, + 50.920644333464644 + ], + [ + 6.916263764279058, + 50.9206431094321 + ], + [ + 6.916121352197829, + 50.92060422550719 + ], + [ + 6.916039534517037, + 50.92073961767902 + ], + [ + 6.915650995700763, + 50.92064540272617 + ], + [ + 6.915519299730903, + 50.92061638950016 + ], + [ + 6.915479261897174, + 50.92046759357212 + ], + [ + 6.915472624436142, + 50.9204665369734 + ], + [ + 6.915466516514472, + 50.92046557077618 + ], + [ + 6.915166689189033, + 50.92041781776159 + ], + [ + 6.914906640404666, + 50.920377607216274 + ], + [ + 6.9148129833740235, + 50.920438839685936 + ], + [ + 6.914403903661187, + 50.92045723781683 + ], + [ + 6.914241134381678, + 50.920409971614426 + ], + [ + 6.914343915593814, + 50.92029185560013 + ], + [ + 6.914229641706597, + 50.920274898179976 + ], + [ + 6.914064772051286, + 50.92024963540105 + ], + [ + 6.913910922672658, + 50.92039619795112 + ], + [ + 6.913704637983371, + 50.920327247055376 + ], + [ + 6.913658345935412, + 50.92038163549277 + ], + [ + 6.913548954896327, + 50.92034401768976 + ], + [ + 6.913526464952277, + 50.92040828768497 + ], + [ + 6.913366164805988, + 50.920385361260614 + ], + [ + 6.913313368191251, + 50.920470724093995 + ], + [ + 6.913235033908025, + 50.920443388065365 + ], + [ + 6.913140530762517, + 50.920410409758745 + ], + [ + 6.913045445908318, + 50.9203772698769 + ], + [ + 6.912951086953447, + 50.920344382132704 + ], + [ + 6.912853327770809, + 50.920310311076946 + ], + [ + 6.912783837128095, + 50.920286091857015 + ], + [ + 6.912748329359447, + 50.92028049497952 + ], + [ + 6.912536046003881, + 50.92024703146549 + ], + [ + 6.912502947310983, + 50.920241813968126 + ], + [ + 6.912368295139373, + 50.92032305199595 + ], + [ + 6.91230894762404, + 50.920284865695336 + ], + [ + 6.9122306401463085, + 50.92023448093975 + ], + [ + 6.912146201933656, + 50.92018014968956 + ], + [ + 6.9120137899901835, + 50.92009709994356 + ], + [ + 6.912003228659898, + 50.92009047591371 + ], + [ + 6.911993556839485, + 50.920083179766436 + ], + [ + 6.911985439295072, + 50.920075332219795 + ], + [ + 6.911981947713711, + 50.92007113438745 + ], + [ + 6.911301046672466, + 50.91994161505736 + ], + [ + 6.911200461013666, + 50.92001233778371 + ], + [ + 6.9111359266577335, + 50.920057608185154 + ], + [ + 6.911128071848458, + 50.92006324345788 + ], + [ + 6.911109694974664, + 50.920076151713 + ], + [ + 6.910941771492258, + 50.920194323970506 + ], + [ + 6.910861530796591, + 50.920149014886725 + ], + [ + 6.910764323757819, + 50.92009430927365 + ], + [ + 6.91072032109968, + 50.92006948287052 + ], + [ + 6.9105847181747695, + 50.919992963256426 + ], + [ + 6.910711425251962, + 50.91990522730042 + ], + [ + 6.910755484009434, + 50.919874679597704 + ], + [ + 6.910843320046759, + 50.91981376527738 + ], + [ + 6.910722756683605, + 50.91978639027628 + ], + [ + 6.9106375475657265, + 50.91977069517358 + ], + [ + 6.910356226471027, + 50.91971859500249 + ], + [ + 6.91035257304424, + 50.919720870692146 + ], + [ + 6.910168426812745, + 50.91970010314575 + ], + [ + 6.9100449879578605, + 50.919685694548605 + ], + [ + 6.909850082081144, + 50.91981315481274 + ], + [ + 6.909760804262447, + 50.919756499273696 + ], + [ + 6.909649828503279, + 50.91976132015319 + ], + [ + 6.909602368137324, + 50.919763307712955 + ], + [ + 6.909485388001097, + 50.9198466514173 + ], + [ + 6.909415442135743, + 50.91980413842608 + ], + [ + 6.909397888175765, + 50.919793667254375 + ], + [ + 6.909344062883521, + 50.91976100612288 + ], + [ + 6.909140386945396, + 50.91970865779063 + ], + [ + 6.9091100624007264, + 50.91980184395464 + ], + [ + 6.908933287357215, + 50.919750632814235 + ], + [ + 6.908850193542498, + 50.91972664959175 + ], + [ + 6.908795725143767, + 50.91970469105481 + ], + [ + 6.908696960590227, + 50.91966473808038 + ], + [ + 6.908594471737401, + 50.91962337640474 + ], + [ + 6.908367793642351, + 50.91955089013361 + ], + [ + 6.908303092730296, + 50.91957314793153 + ], + [ + 6.9081952663111235, + 50.91960086464711 + ], + [ + 6.90797394770978, + 50.91954074127066 + ], + [ + 6.907622004436296, + 50.919622854701956 + ], + [ + 6.907498450521649, + 50.91962444499963 + ], + [ + 6.907309786953254, + 50.91962717112324 + ], + [ + 6.90670467327603, + 50.919634841176936 + ], + [ + 6.906705323301384, + 50.919558516616725 + ], + [ + 6.906407154896617, + 50.91955400149292 + ], + [ + 6.905986071315362, + 50.919561856798516 + ], + [ + 6.905942436536305, + 50.919563094861516 + ], + [ + 6.905970769872304, + 50.91944772099628 + ], + [ + 6.905955758450668, + 50.919289895555664 + ], + [ + 6.905350130202088, + 50.9193267883448 + ], + [ + 6.904266276028581, + 50.91939280513565 + ], + [ + 6.903549239016441, + 50.91908463276326 + ], + [ + 6.90361989544907, + 50.91902475623166 + ], + [ + 6.903623097630003, + 50.919021225198144 + ], + [ + 6.90366347657637, + 50.91897668526752 + ], + [ + 6.903684363053279, + 50.918953690769186 + ], + [ + 6.903891128098725, + 50.9187257377873 + ], + [ + 6.9037693738487445, + 50.91867328447604 + ], + [ + 6.903692760790522, + 50.918638549363266 + ], + [ + 6.903505671384649, + 50.91855361107528 + ], + [ + 6.903387736883853, + 50.91850004957391 + ], + [ + 6.903375831442656, + 50.91849474788678 + ], + [ + 6.903381183336521, + 50.918448051683065 + ], + [ + 6.903325765313025, + 50.91842097398717 + ], + [ + 6.903286717916263, + 50.91840203839118 + ], + [ + 6.90320976697032, + 50.91836451958167 + ], + [ + 6.903118661203782, + 50.91835245986032 + ], + [ + 6.903101266444939, + 50.918350167802586 + ], + [ + 6.903046802603401, + 50.91834294846483 + ], + [ + 6.903012583878502, + 50.918338359290864 + ], + [ + 6.902926182435329, + 50.918326892091976 + ], + [ + 6.90284491388208, + 50.91831610435567 + ], + [ + 6.902877674751359, + 50.91827476992731 + ], + [ + 6.902903023465609, + 50.91821785086342 + ], + [ + 6.902829535322752, + 50.91819019282507 + ], + [ + 6.902764943404893, + 50.91818134425895 + ], + [ + 6.902685321471774, + 50.918123349351966 + ], + [ + 6.902614497735437, + 50.918071759627374 + ], + [ + 6.902573533423534, + 50.91804196253371 + ], + [ + 6.90249564158227, + 50.9179852127545 + ], + [ + 6.902338279144919, + 50.91787082754628 + ], + [ + 6.9022280826868565, + 50.917790775799034 + ], + [ + 6.902213081935252, + 50.917779834969444 + ], + [ + 6.90217240611735, + 50.91775021469844 + ], + [ + 6.902096969408035, + 50.917695334526336 + ], + [ + 6.90195167571856, + 50.91760197930052 + ], + [ + 6.901859954359551, + 50.917543268955235 + ], + [ + 6.901819205131923, + 50.917517155742736 + ], + [ + 6.9016749236637605, + 50.917424601724804 + ], + [ + 6.901519213964374, + 50.91732934985131 + ], + [ + 6.9014482111054605, + 50.91732720172776 + ], + [ + 6.9015048131734265, + 50.91720244117592 + ], + [ + 6.901529495046696, + 50.91714768602024 + ], + [ + 6.901434756543206, + 50.91713142786965 + ], + [ + 6.901396518899959, + 50.91712489163234 + ], + [ + 6.901330029344756, + 50.917113449385255 + ], + [ + 6.901224587059842, + 50.9170952070188 + ], + [ + 6.901189259456626, + 50.91707004009238 + ], + [ + 6.901125667310847, + 50.917024505532524 + ], + [ + 6.9010952414915225, + 50.917002716679825 + ], + [ + 6.901038858466088, + 50.91696234108163 + ], + [ + 6.901025735089403, + 50.916952913347075 + ], + [ + 6.900978867791517, + 50.91691920601355 + ], + [ + 6.901031275893332, + 50.91689372095464 + ], + [ + 6.9011937952360345, + 50.91680437012107 + ], + [ + 6.901251627167563, + 50.91677255098659 + ], + [ + 6.900958558879532, + 50.91655259809571 + ], + [ + 6.900699292367936, + 50.916691057989006 + ], + [ + 6.900677617250996, + 50.9167026416545 + ], + [ + 6.900282366646294, + 50.916912986212076 + ], + [ + 6.900270701734045, + 50.916920087469045 + ], + [ + 6.900129882321299, + 50.916991920662156 + ], + [ + 6.899639546501842, + 50.916733393926954 + ], + [ + 6.898018156091782, + 50.915841378876934 + ], + [ + 6.8970503593567, + 50.91530335209115 + ], + [ + 6.895790263889045, + 50.91466373494165 + ], + [ + 6.8956789555063915, + 50.91460624941262 + ], + [ + 6.895425413912529, + 50.91445061221944 + ], + [ + 6.894952195321162, + 50.91415507822543 + ], + [ + 6.894918136094975, + 50.91413354776811 + ], + [ + 6.89441215837762, + 50.913815378475306 + ], + [ + 6.894085320891978, + 50.91361885998686 + ], + [ + 6.892996986346095, + 50.91296683980658 + ], + [ + 6.892137428227029, + 50.9124539223273 + ], + [ + 6.8911117145049525, + 50.91183178919174 + ], + [ + 6.890890961578196, + 50.91168649991891 + ], + [ + 6.890492286642195, + 50.91142714484282 + ], + [ + 6.889962473607811, + 50.91106846887281 + ], + [ + 6.889816082653307, + 50.91098229861458 + ], + [ + 6.889775819752012, + 50.910958694682385 + ], + [ + 6.889713351101195, + 50.91092635998664 + ], + [ + 6.889522355074336, + 50.91082740565623 + ], + [ + 6.889471867439569, + 50.91080441807486 + ], + [ + 6.8894341485558455, + 50.91078744624868 + ], + [ + 6.888949156780393, + 50.91059382691657 + ], + [ + 6.88877895173556, + 50.910533726854695 + ], + [ + 6.888668866865142, + 50.91049465271345 + ], + [ + 6.8882700407243025, + 50.91036797392495 + ], + [ + 6.888074067823261, + 50.91031355209617 + ], + [ + 6.887915818784978, + 50.910268910850014 + ], + [ + 6.887762112388534, + 50.91023133715379 + ], + [ + 6.88750880140311, + 50.91018975598926 + ], + [ + 6.887330561967952, + 50.91017052588532 + ], + [ + 6.887120442605116, + 50.91015711211443 + ], + [ + 6.88704139869701, + 50.91015771279954 + ], + [ + 6.886973701149406, + 50.91016425066471 + ], + [ + 6.886862231501639, + 50.91021678665632 + ], + [ + 6.886811149376201, + 50.91024468175873 + ], + [ + 6.886706507497659, + 50.91031235832549 + ], + [ + 6.886377437155108, + 50.91054894010837 + ], + [ + 6.886182233120335, + 50.910692005124815 + ], + [ + 6.885766527100839, + 50.911016440467066 + ], + [ + 6.885609543411029, + 50.91114330279078 + ], + [ + 6.885390243480659, + 50.91132061848441 + ], + [ + 6.884945792599763, + 50.91171934128215 + ], + [ + 6.884715878972078, + 50.91194455909575 + ], + [ + 6.8847034554267985, + 50.91195678866298 + ], + [ + 6.884054130166501, + 50.91261244747124 + ], + [ + 6.883988812236742, + 50.91263973069881 + ], + [ + 6.883945412789547, + 50.91265309392227 + ], + [ + 6.883866115538647, + 50.91267050466047 + ], + [ + 6.8837955610190695, + 50.91267661295785 + ], + [ + 6.8837396616252535, + 50.912675687509434 + ], + [ + 6.883574302590021, + 50.91266120920179 + ], + [ + 6.8826708694495355, + 50.91245383217005 + ], + [ + 6.882120898766071, + 50.912327467069126 + ], + [ + 6.881508821160475, + 50.91218745521885 + ], + [ + 6.881004041182376, + 50.91205184362544 + ], + [ + 6.880768660661207, + 50.91196615436659 + ], + [ + 6.88074247462655, + 50.912153150272 + ], + [ + 6.880696935364019, + 50.91224149958802 + ], + [ + 6.880641211399385, + 50.91234772457584 + ], + [ + 6.8805313059533795, + 50.91255523425687 + ], + [ + 6.880225428326612, + 50.9131326955544 + ], + [ + 6.880222190073693, + 50.913138868606715 + ], + [ + 6.88018977910585, + 50.91320044121527 + ], + [ + 6.880138098939511, + 50.91330250058784 + ], + [ + 6.880101693003917, + 50.91337765603543 + ], + [ + 6.880061455983747, + 50.91346066190462 + ], + [ + 6.880056528278317, + 50.9134708569126 + ], + [ + 6.880051611860978, + 50.9134810539242 + ], + [ + 6.880034527984579, + 50.913548330906316 + ], + [ + 6.880033208218762, + 50.91358384809518 + ], + [ + 6.880032762024916, + 50.91359692070629 + ], + [ + 6.88002911972287, + 50.91369130119992 + ], + [ + 6.88004072276648, + 50.91377112858508 + ], + [ + 6.880066826534672, + 50.9138508470121 + ], + [ + 6.880083748144077, + 50.91391103750001 + ], + [ + 6.880086180375181, + 50.91391947028073 + ], + [ + 6.880088617354659, + 50.91392808032732 + ], + [ + 6.880090357540079, + 50.91401572232715 + ], + [ + 6.880093219892347, + 50.91402126508851 + ], + [ + 6.880082730597417, + 50.914054973437864 + ], + [ + 6.8800689643914295, + 50.914099834948495 + ], + [ + 6.880066060279337, + 50.914111707198316 + ], + [ + 6.880062423130596, + 50.91412092642627 + ], + [ + 6.880059780315034, + 50.91412632961951 + ], + [ + 6.879842996989879, + 50.91455109457014 + ], + [ + 6.879735454354066, + 50.91476000808431 + ], + [ + 6.879552197967961, + 50.915116377734236 + ], + [ + 6.879508028847444, + 50.915202199005826 + ], + [ + 6.87912264896036, + 50.915948070606326 + ], + [ + 6.87906214882871, + 50.91605783617417 + ], + [ + 6.878703825253424, + 50.91670830520861 + ], + [ + 6.87850794303265, + 50.91701424793999 + ], + [ + 6.878386590715866, + 50.91718514924603 + ], + [ + 6.878305928535645, + 50.91729805373448 + ], + [ + 6.878299496714086, + 50.91730714115852 + ], + [ + 6.877898029910667, + 50.91786814819011 + ], + [ + 6.877876970668887, + 50.917897702345805 + ], + [ + 6.877844128537009, + 50.91794343451733 + ], + [ + 6.8774336303758155, + 50.91852578013946 + ], + [ + 6.877241741371656, + 50.91879799434951 + ], + [ + 6.8772061351687075, + 50.91884806328999 + ], + [ + 6.8771674751263205, + 50.91890210953541 + ], + [ + 6.877126470866338, + 50.918937386057095 + ], + [ + 6.877098412153989, + 50.91898802754629 + ], + [ + 6.8770708186589165, + 50.919040731694565 + ], + [ + 6.876640261399983, + 50.91986837682912 + ], + [ + 6.876595103228035, + 50.91995510357618 + ], + [ + 6.8765377900501665, + 50.920068529668406 + ], + [ + 6.876480701053434, + 50.92017880745368 + ], + [ + 6.876368297952682, + 50.92039539565226 + ], + [ + 6.876302013232047, + 50.92052336159857 + ], + [ + 6.87617985692297, + 50.92075835981713 + ], + [ + 6.876112902408035, + 50.92088866806713 + ], + [ + 6.876095198941152, + 50.920922870749436 + ], + [ + 6.87604277150565, + 50.92102394515933 + ], + [ + 6.875938605694608, + 50.92122500829437 + ], + [ + 6.875892607441192, + 50.921312281597885 + ], + [ + 6.87589016827972, + 50.9213172234187 + ], + [ + 6.875887731879323, + 50.92132216708847 + ], + [ + 6.875885386618221, + 50.92132645316496 + ], + [ + 6.875875794088717, + 50.921345709883084 + ], + [ + 6.8758722575476625, + 50.92135190796486 + ], + [ + 6.875869074361144, + 50.921357783301005 + ], + [ + 6.875843906074737, + 50.92140766314358 + ], + [ + 6.875826092703349, + 50.92143602315507 + ], + [ + 6.87579201777153, + 50.921482509388206 + ], + [ + 6.8757545661968535, + 50.921534992438666 + ], + [ + 6.875773298421264, + 50.921593101990666 + ], + [ + 6.8757945821031194, + 50.9216589243625 + ], + [ + 6.8758412426978035, + 50.92180339151818 + ], + [ + 6.875866654603855, + 50.921888328159646 + ], + [ + 6.875893551172195, + 50.92198359430836 + ], + [ + 6.875907337403822, + 50.92203589820834 + ], + [ + 6.8759295150402915, + 50.9221199638249 + ], + [ + 6.875930657477198, + 50.92212490337105 + ], + [ + 6.875949514099423, + 50.92224467272858 + ], + [ + 6.875947691312199, + 50.922337636326056 + ], + [ + 6.875946213025636, + 50.9224019201965 + ], + [ + 6.8759460764395675, + 50.922409541826916 + ], + [ + 6.875945917371926, + 50.922417563276035 + ], + [ + 6.875943063835027, + 50.922476645238795 + ], + [ + 6.87592670953088, + 50.92280227069904 + ], + [ + 6.875923107528059, + 50.92287547022806 + ], + [ + 6.875919181578342, + 50.9229541564259 + ], + [ + 6.8759161517336, + 50.92301998058809 + ], + [ + 6.8758783779948125, + 50.92382552555482 + ], + [ + 6.875870229611692, + 50.92395197605904 + ], + [ + 6.875866111696941, + 50.92399776272513 + ], + [ + 6.875861739868018, + 50.924083013524076 + ], + [ + 6.875869628916903, + 50.924139676449826 + ], + [ + 6.875884605475454, + 50.92424779554294 + ], + [ + 6.875866791879993, + 50.92435516230921 + ], + [ + 6.87586620269871, + 50.92435913048041 + ], + [ + 6.875840037366631, + 50.924517629266084 + ], + [ + 6.875825217588609, + 50.92460700428273 + ], + [ + 6.875808868651426, + 50.924705829220066 + ], + [ + 6.8758050308592304, + 50.924728691076275 + ], + [ + 6.875734271855234, + 50.92515648340861 + ], + [ + 6.875727505281341, + 50.92519752525389 + ], + [ + 6.875706005095019, + 50.92532775748819 + ], + [ + 6.875687591502527, + 50.925439246882775 + ], + [ + 6.875677608401624, + 50.92549969204208 + ], + [ + 6.87567147976958, + 50.92553675580767 + ], + [ + 6.8756396406077585, + 50.92572936218771 + ], + [ + 6.875604756909528, + 50.92593943412117 + ], + [ + 6.87557295188829, + 50.926131684039234 + ], + [ + 6.87556170597388, + 50.92620053526435 + ], + [ + 6.875611550188161, + 50.92624354011788 + ], + [ + 6.875633875356389, + 50.926262838089244 + ], + [ + 6.875739036688528, + 50.926353795014705 + ], + [ + 6.875795686601079, + 50.92640275977412 + ], + [ + 6.8761480476198376, + 50.92642358271057 + ], + [ + 6.876214150724774, + 50.92642748545694 + ], + [ + 6.8763096986009895, + 50.92643313717579 + ], + [ + 6.876299453455849, + 50.926493442699766 + ], + [ + 6.876169699716701, + 50.92724825935167 + ], + [ + 6.876124442900749, + 50.92751180551083 + ], + [ + 6.876087631589588, + 50.927725217855304 + ], + [ + 6.876077385823528, + 50.927785523340425 + ], + [ + 6.8760481017933435, + 50.92778366387946 + ], + [ + 6.875402935547614, + 50.92774269849891 + ], + [ + 6.875307319715491, + 50.927737044817356 + ], + [ + 6.875306386923964, + 50.92774271106955 + ], + [ + 6.875298435070431, + 50.92779103792995 + ], + [ + 6.8752974256049, + 50.92779695011798 + ], + [ + 6.87526827979034, + 50.927972009754946 + ], + [ + 6.8752176922412, + 50.928277665902186 + ], + [ + 6.875173224742395, + 50.928545700513816 + ], + [ + 6.8751700536783416, + 50.928604064316865 + ], + [ + 6.875157658518, + 50.928830237947246 + ], + [ + 6.875156253117706, + 50.928853890543245 + ], + [ + 6.875152122975348, + 50.929020313603885 + ], + [ + 6.87591676574532, + 50.92922951021427 + ], + [ + 6.876172335153137, + 50.9296964719023 + ], + [ + 6.87627126478842, + 50.92969267321853 + ], + [ + 6.876471969105814, + 50.92992529257803 + ], + [ + 6.87656930922889, + 50.93033144505205 + ], + [ + 6.877223264305839, + 50.930507183854466 + ], + [ + 6.878590940554023, + 50.93063663013404 + ], + [ + 6.878268617486471, + 50.93179661108472 + ], + [ + 6.878362419893098, + 50.93179977039692 + ], + [ + 6.879070977586017, + 50.931852954908 + ], + [ + 6.879078962344862, + 50.931853884256554 + ], + [ + 6.879086945722861, + 50.93185481268013 + ], + [ + 6.879262735598225, + 50.93188333246873 + ], + [ + 6.879342639208392, + 50.93189621446959 + ], + [ + 6.879433103573255, + 50.9319109044706 + ], + [ + 6.879498368241906, + 50.931924435094764 + ], + [ + 6.8795222157612566, + 50.93192928970087 + ], + [ + 6.880257092240331, + 50.932080341475064 + ], + [ + 6.881188628966918, + 50.932287345965825 + ], + [ + 6.88141486045639, + 50.932350180403084 + ], + [ + 6.881666042668437, + 50.93243107358791 + ], + [ + 6.882804465158176, + 50.93279767944188 + ], + [ + 6.882880596276624, + 50.93282219788745 + ], + [ + 6.882886253479326, + 50.9328240839764 + ], + [ + 6.883279046170354, + 50.93295652435266 + ], + [ + 6.8836704673853015, + 50.93310323246794 + ], + [ + 6.884145744942912, + 50.93331938632081 + ], + [ + 6.884209930598827, + 50.933352464467326 + ], + [ + 6.884615942010677, + 50.9335630626779 + ], + [ + 6.884847733083032, + 50.933670883978316 + ], + [ + 6.885083886005607, + 50.93376114328481 + ], + [ + 6.8852576561767425, + 50.93381753700513 + ], + [ + 6.8853409638450955, + 50.93384459149435 + ], + [ + 6.885579770024006, + 50.93390966018547 + ], + [ + 6.8858623314162655, + 50.93397906984145 + ], + [ + 6.886132771731638, + 50.934039402154326 + ], + [ + 6.886147132008551, + 50.93402401109686 + ], + [ + 6.886198627742687, + 50.934038902092176 + ], + [ + 6.886301428492668, + 50.934036233423434 + ], + [ + 6.88639350489978, + 50.93405336472199 + ], + [ + 6.8868757718893825, + 50.934076186793575 + ], + [ + 6.8870666441991215, + 50.93411159174018 + ], + [ + 6.888175092440636, + 50.93421480788269 + ], + [ + 6.888360221424017, + 50.93423991675932 + ], + [ + 6.888570901629755, + 50.934262044673915 + ], + [ + 6.889059613292915, + 50.93430218940375 + ], + [ + 6.889616872794723, + 50.934348642131404 + ], + [ + 6.891309321475431, + 50.93444530684023 + ], + [ + 6.891439469759005, + 50.9344517734519 + ], + [ + 6.892143358028095, + 50.93446617066704 + ], + [ + 6.892820121397172, + 50.9344755572713 + ], + [ + 6.893850142272715, + 50.93447899812494 + ], + [ + 6.893968452451265, + 50.934476473919915 + ], + [ + 6.895160148337483, + 50.93444648309289 + ], + [ + 6.896314659513499, + 50.934414767583434 + ], + [ + 6.897294544227702, + 50.93258502330439 + ], + [ + 6.898472357568374, + 50.932850390012604 + ], + [ + 6.898290554772154, + 50.93335577170282 + ], + [ + 6.898709653838137, + 50.93346552557901 + ], + [ + 6.898965443339708, + 50.93351047985382 + ], + [ + 6.89928487718541, + 50.93355826890019 + ], + [ + 6.8995655012693575, + 50.93360006315379 + ], + [ + 6.899701273337944, + 50.93361789373262 + ], + [ + 6.899807097559732, + 50.933631820738555 + ], + [ + 6.900006936264853, + 50.93365230290367 + ], + [ + 6.900090863079103, + 50.9336594761633 + ], + [ + 6.90019616429908, + 50.93366846208344 + ], + [ + 6.900378339599718, + 50.933680271489244 + ], + [ + 6.900516507428057, + 50.93368954249954 + ], + [ + 6.900649009261172, + 50.93369274493069 + ], + [ + 6.900633052131921, + 50.93382393169796 + ], + [ + 6.900627458892492, + 50.93396151150427 + ], + [ + 6.900621111241111, + 50.93411887318079 + ], + [ + 6.900609390097774, + 50.93430000786103 + ], + [ + 6.900798065693657, + 50.934294775955344 + ], + [ + 6.902118380778658, + 50.93426605840867 + ], + [ + 6.903612247811863, + 50.934222678305055 + ], + [ + 6.903756387190926, + 50.93420960589281 + ], + [ + 6.903817099245414, + 50.934207967418665 + ], + [ + 6.904065257226715, + 50.93406437323867 + ], + [ + 6.904076305208965, + 50.93403255535328 + ], + [ + 6.904163222594725, + 50.93395178728092 + ], + [ + 6.90423743797502, + 50.93396424693954 + ], + [ + 6.904261678855015, + 50.93396720582756 + ], + [ + 6.904293480012245, + 50.93397118363883 + ], + [ + 6.904325063449363, + 50.933964017767956 + ], + [ + 6.904361036577848, + 50.93395573811387 + ], + [ + 6.904399008187007, + 50.93394052140612 + ], + [ + 6.904428232571192, + 50.93392168772468 + ], + [ + 6.904451266709918, + 50.93389912558733 + ], + [ + 6.904628677976329, + 50.933907278561485 + ], + [ + 6.904739517879237, + 50.93391567896084 + ], + [ + 6.904764598095309, + 50.933778667363676 + ], + [ + 6.904771142428362, + 50.93377910950836 + ], + [ + 6.904777559908179, + 50.93377955567141 + ], + [ + 6.905181683819869, + 50.93380743430313 + ], + [ + 6.905215924986573, + 50.93380981697469 + ], + [ + 6.905283963210284, + 50.933814551833464 + ], + [ + 6.905321369155542, + 50.933817328534815 + ], + [ + 6.9053359080213665, + 50.93381837459132 + ], + [ + 6.905329889008301, + 50.9339232354231 + ], + [ + 6.905321521223725, + 50.93404168965724 + ], + [ + 6.905308097376407, + 50.934234896248476 + ], + [ + 6.905470265131774, + 50.93433888969363 + ], + [ + 6.905515251185115, + 50.934384476283796 + ], + [ + 6.9055132490415625, + 50.93441325750137 + ], + [ + 6.905509808921307, + 50.93446317450792 + ], + [ + 6.905508166534056, + 50.93448844739011 + ], + [ + 6.9056912805066055, + 50.934585009704975 + ], + [ + 6.905892441045932, + 50.93465113746916 + ], + [ + 6.90593926109999, + 50.93466659507358 + ], + [ + 6.906107345225403, + 50.934721743012545 + ], + [ + 6.906314067382661, + 50.934788546309015 + ], + [ + 6.906521387596297, + 50.93485678278478 + ], + [ + 6.906400191542454, + 50.93492307650167 + ], + [ + 6.9065084510951325, + 50.93500349829419 + ], + [ + 6.9066772681486235, + 50.93512543054405 + ], + [ + 6.9067215942103655, + 50.93515897556721 + ], + [ + 6.906816602251529, + 50.935230870716076 + ], + [ + 6.906956825532099, + 50.935332657176716 + ], + [ + 6.907078680791589, + 50.93529841072732 + ], + [ + 6.907113190536491, + 50.935346505195106 + ], + [ + 6.907247857872731, + 50.93553369422787 + ], + [ + 6.907272129948355, + 50.93556739485277 + ], + [ + 6.907319090899796, + 50.93563017995111 + ], + [ + 6.907325950399858, + 50.93563115373974 + ], + [ + 6.907331278895422, + 50.93563240137462 + ], + [ + 6.907341061357258, + 50.93563706556704 + ], + [ + 6.907345078228151, + 50.9356421651288 + ], + [ + 6.9073464172338, + 50.93564534326937 + ], + [ + 6.907345950475245, + 50.93565215672157 + ], + [ + 6.907344914871686, + 50.93565471129085 + ], + [ + 6.907342416941099, + 50.935657690235686 + ], + [ + 6.907338184992403, + 50.935661058106305 + ], + [ + 6.907322033881178, + 50.935668136306816 + ], + [ + 6.907364481488545, + 50.935700077978126 + ], + [ + 6.907370560965956, + 50.93570469826928 + ], + [ + 6.907373180969573, + 50.93570673557222 + ], + [ + 6.907385128324337, + 50.935715648582125 + ], + [ + 6.9073815424409535, + 50.935717561142546 + ], + [ + 6.907407923619474, + 50.93576122693544 + ], + [ + 6.907444704833255, + 50.935816315146695 + ], + [ + 6.9074735694706115, + 50.935859419258335 + ], + [ + 6.907564407554432, + 50.93598734972469 + ], + [ + 6.907571725336487, + 50.935997900247884 + ], + [ + 6.907691381377137, + 50.93616650731355 + ], + [ + 6.907721369203876, + 50.93620879326622 + ], + [ + 6.9077847101810965, + 50.93629288223694 + ], + [ + 6.907788552020495, + 50.93629798314207 + ], + [ + 6.9078598090594, + 50.93639217641377 + ], + [ + 6.907986716343054, + 50.936560783603625 + ], + [ + 6.907990391669306, + 50.93656540934151 + ], + [ + 6.908678725975477, + 50.93680281647224 + ], + [ + 6.908808499820094, + 50.93699384892947 + ], + [ + 6.908822268404782, + 50.937014115841286 + ], + [ + 6.9089564994626995, + 50.937207508802366 + ], + [ + 6.909170067371305, + 50.93720153009744 + ], + [ + 6.909181502790624, + 50.937313627100885 + ], + [ + 6.90925633621791, + 50.9373865762647 + ], + [ + 6.90942879579706, + 50.93741004318091 + ], + [ + 6.909676240311815, + 50.9374047880548 + ], + [ + 6.909680741134259, + 50.93747504926197 + ], + [ + 6.9096355920968096, + 50.93751621315696 + ], + [ + 6.90954347859462, + 50.93760026218032 + ], + [ + 6.909810577828865, + 50.93771270296 + ], + [ + 6.90978513007745, + 50.937735554792575 + ], + [ + 6.909611517781787, + 50.93779884468322 + ], + [ + 6.909818636464444, + 50.937863121461184 + ], + [ + 6.909910560640955, + 50.93789323733166 + ], + [ + 6.910381058246673, + 50.93803222837875 + ], + [ + 6.910327156889005, + 50.93809871986119 + ], + [ + 6.9106682868231415, + 50.938191614589044 + ], + [ + 6.910630941710749, + 50.93824629145469 + ], + [ + 6.910974225320925, + 50.93832550464756 + ], + [ + 6.9107969581055855, + 50.93863135542455 + ], + [ + 6.910690704419938, + 50.93881448723159 + ], + [ + 6.910912154497631, + 50.93900755731532 + ], + [ + 6.911076009522567, + 50.939056258216404 + ], + [ + 6.910935535558387, + 50.93924289434116 + ], + [ + 6.910799033771263, + 50.93942167783261 + ], + [ + 6.910821309171587, + 50.93944029167777 + ], + [ + 6.911036318324616, + 50.93957300290972 + ], + [ + 6.911860372354305, + 50.940539927345554 + ], + [ + 6.912645830312907, + 50.94146158663414 + ], + [ + 6.912675289911575, + 50.94150112406914 + ], + [ + 6.912692882546474, + 50.9415247515043 + ], + [ + 6.912732448524245, + 50.941577843433784 + ], + [ + 6.912734655377134, + 50.94158063140256 + ], + [ + 6.912793537545037, + 50.941564562680874 + ], + [ + 6.91279820222849, + 50.94156329611178 + ], + [ + 6.912802570853753, + 50.94156193341158 + ], + [ + 6.9129026940481, + 50.941527745564834 + ], + [ + 6.913185650619816, + 50.94143083133567 + ], + [ + 6.9134084582892585, + 50.94169193375919 + ], + [ + 6.9138342704248155, + 50.942190652171874 + ], + [ + 6.9135056478041, + 50.94232596211301 + ], + [ + 6.913133775045748, + 50.94247911877338 + ], + [ + 6.913634654982462, + 50.94295499989039 + ], + [ + 6.913643556593747, + 50.9429517242445 + ], + [ + 6.913651040772289, + 50.94294869307987 + ], + [ + 6.913755876232804, + 50.94290472789557 + ], + [ + 6.913794391105639, + 50.94294309847005 + ], + [ + 6.914396083398083, + 50.94352909022908 + ], + [ + 6.914712735444276, + 50.94383618082339 + ], + [ + 6.91478830704863, + 50.94390966017859 + ], + [ + 6.914843130655555, + 50.94395799274287 + ], + [ + 6.916476524230235, + 50.94333836746799 + ], + [ + 6.916612466984731, + 50.943286800236514 + ], + [ + 6.91668463063213, + 50.94325942572398 + ], + [ + 6.916728658649159, + 50.94324271758356 + ], + [ + 6.916732358236994, + 50.94324132301053 + ], + [ + 6.916735998218793, + 50.94323995615386 + ], + [ + 6.91676154905464, + 50.94323032916187 + ], + [ + 6.916793963504704, + 50.94321811031494 + ], + [ + 6.916835059963137, + 50.94320261974652 + ], + [ + 6.916945504297374, + 50.943160987662026 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Lindenthal", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "303", + "Population_rel": 0.028208521745524063, + "Population_abs": 30692 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.955072419187174, + 50.972578372760125 + ], + [ + 6.955064631427563, + 50.972557139793516 + ], + [ + 6.954962745524798, + 50.97244699182173 + ], + [ + 6.954926724405747, + 50.97241260929231 + ], + [ + 6.954785883228243, + 50.97226121987615 + ], + [ + 6.954847232972953, + 50.97224037762653 + ], + [ + 6.954868919692439, + 50.972234718181795 + ], + [ + 6.95498309827988, + 50.972197369500805 + ], + [ + 6.95562984127583, + 50.97201358842618 + ], + [ + 6.955787245760981, + 50.971980860373755 + ], + [ + 6.955819803875405, + 50.971974060007405 + ], + [ + 6.956138127413442, + 50.971907083604194 + ], + [ + 6.956233815440642, + 50.97188600796534 + ], + [ + 6.956380509087565, + 50.97185995385396 + ], + [ + 6.956630230314368, + 50.97181597393494 + ], + [ + 6.9566784798415195, + 50.97181037427936 + ], + [ + 6.957369682339431, + 50.97173437613884 + ], + [ + 6.9576563979272965, + 50.97171242915814 + ], + [ + 6.957742255544648, + 50.971705881482414 + ], + [ + 6.958235868506186, + 50.971678458039 + ], + [ + 6.958777213192788, + 50.97165972025647 + ], + [ + 6.958864697413456, + 50.97165612494986 + ], + [ + 6.959020891572517, + 50.971649717603505 + ], + [ + 6.959296437300663, + 50.971636304261274 + ], + [ + 6.959392135059543, + 50.971632311584614 + ], + [ + 6.959578322385163, + 50.97162443284726 + ], + [ + 6.960351708181393, + 50.97159248790229 + ], + [ + 6.960503520332061, + 50.97158624306092 + ], + [ + 6.960554442938896, + 50.97158408632359 + ], + [ + 6.960583202066955, + 50.97158259562444 + ], + [ + 6.960699739864989, + 50.97157081395907 + ], + [ + 6.960952373425875, + 50.971545869521265 + ], + [ + 6.961011446693077, + 50.971540002908164 + ], + [ + 6.961038451840701, + 50.971537319480106 + ], + [ + 6.961075997322714, + 50.97153171996398 + ], + [ + 6.961189048471454, + 50.9715143628795 + ], + [ + 6.961255390821404, + 50.97150426201275 + ], + [ + 6.961636941358694, + 50.971449370330326 + ], + [ + 6.96202616869579, + 50.971386473877594 + ], + [ + 6.962568493974553, + 50.97128464989273 + ], + [ + 6.963234552058207, + 50.97115600221745 + ], + [ + 6.96408107981178, + 50.971004106416224 + ], + [ + 6.964839270783756, + 50.97091109543665 + ], + [ + 6.965152122383327, + 50.97088661140284 + ], + [ + 6.96530285677909, + 50.97088487978141 + ], + [ + 6.966039926277953, + 50.97087878145943 + ], + [ + 6.966114240292272, + 50.970878595566376 + ], + [ + 6.966844401861196, + 50.97087580653655 + ], + [ + 6.966944009911676, + 50.9709283400945 + ], + [ + 6.967059499515747, + 50.970963738245416 + ], + [ + 6.967509248881678, + 50.97096369645187 + ], + [ + 6.967555759922574, + 50.97096843539748 + ], + [ + 6.968034119770328, + 50.97101597795361 + ], + [ + 6.968167512305322, + 50.97102925443509 + ], + [ + 6.968661990730989, + 50.97104402300163 + ], + [ + 6.968831802174679, + 50.971049092369995 + ], + [ + 6.968822098071305, + 50.97091693816414 + ], + [ + 6.968813125269433, + 50.97079476080803 + ], + [ + 6.968805104031255, + 50.97043193009169 + ], + [ + 6.968800144556005, + 50.970387266488395 + ], + [ + 6.968503470237217, + 50.9703951218598 + ], + [ + 6.968447486582577, + 50.97039010875467 + ], + [ + 6.96832641318776, + 50.970366145653784 + ], + [ + 6.968322788377941, + 50.97023657223104 + ], + [ + 6.968319185747961, + 50.970107763657026 + ], + [ + 6.968378052456288, + 50.970107479328014 + ], + [ + 6.9683528642805435, + 50.96980148958154 + ], + [ + 6.968381218883057, + 50.969799314501905 + ], + [ + 6.968381593835759, + 50.96974574817781 + ], + [ + 6.968374045936673, + 50.96963148663419 + ], + [ + 6.968757728602529, + 50.969622692676026 + ], + [ + 6.96882815691436, + 50.96962121972175 + ], + [ + 6.968826094035839, + 50.9695820872699 + ], + [ + 6.968824104484575, + 50.96954434292376 + ], + [ + 6.96836874353692, + 50.96955063083355 + ], + [ + 6.9683674243804, + 50.96952465562277 + ], + [ + 6.968370079935846, + 50.969131978747896 + ], + [ + 6.968369700344375, + 50.969071876149236 + ], + [ + 6.968368417048362, + 50.968975691235244 + ], + [ + 6.968367978691751, + 50.968932111762975 + ], + [ + 6.968367405202205, + 50.96885686936824 + ], + [ + 6.968366530322986, + 50.96876480528214 + ], + [ + 6.968366240441253, + 50.96873345714491 + ], + [ + 6.9683663904124655, + 50.96863742667367 + ], + [ + 6.968366090249705, + 50.968606640464074 + ], + [ + 6.9683663537926295, + 50.96856104422021 + ], + [ + 6.968364607605939, + 50.96853307216556 + ], + [ + 6.968356444204894, + 50.96840230361782 + ], + [ + 6.968271922450459, + 50.96840377747305 + ], + [ + 6.968230792022926, + 50.968404394645866 + ], + [ + 6.968145403607312, + 50.96840581825338 + ], + [ + 6.9680893308854355, + 50.968406719476135 + ], + [ + 6.968068877950425, + 50.968407033583574 + ], + [ + 6.967930790175727, + 50.968409247843795 + ], + [ + 6.967713628144747, + 50.968412621888284 + ], + [ + 6.967579921446936, + 50.968409717217156 + ], + [ + 6.967576733554002, + 50.96832793043879 + ], + [ + 6.96757336028848, + 50.96824696425692 + ], + [ + 6.967797748342221, + 50.96819592543887 + ], + [ + 6.967915191121351, + 50.968169208416604 + ], + [ + 6.967961013321347, + 50.96815853529208 + ], + [ + 6.968029323250334, + 50.96814276103431 + ], + [ + 6.968279934335882, + 50.96808798387041 + ], + [ + 6.96838555229378, + 50.96808397210875 + ], + [ + 6.96844118970844, + 50.96808262517809 + ], + [ + 6.968619116230511, + 50.96807842149653 + ], + [ + 6.968745138663659, + 50.96807552796171 + ], + [ + 6.968705324058416, + 50.967407415328566 + ], + [ + 6.968636898526445, + 50.96742361696506 + ], + [ + 6.968566594870576, + 50.967440196898764 + ], + [ + 6.968232730711298, + 50.9675189386544 + ], + [ + 6.968095741195746, + 50.967551266977544 + ], + [ + 6.9678955678454475, + 50.967598502535466 + ], + [ + 6.96788078604837, + 50.96679768217469 + ], + [ + 6.968352306293353, + 50.9666920945698 + ], + [ + 6.968438205884856, + 50.96667278042826 + ], + [ + 6.968589546673545, + 50.966658433411204 + ], + [ + 6.9685875772679875, + 50.96662326879095 + ], + [ + 6.968557121039864, + 50.96613450418849 + ], + [ + 6.968540405348218, + 50.96595224257688 + ], + [ + 6.968530949393775, + 50.965861896251134 + ], + [ + 6.968280827899585, + 50.96588494718537 + ], + [ + 6.968281716003988, + 50.96568795884049 + ], + [ + 6.968283822182277, + 50.965603889833126 + ], + [ + 6.968163214614323, + 50.96560194580362 + ], + [ + 6.968106390653766, + 50.965601634179926 + ], + [ + 6.9680739846021105, + 50.96560150553333 + ], + [ + 6.967887148749318, + 50.965557285780044 + ], + [ + 6.967764129542858, + 50.96493545041975 + ], + [ + 6.967737388157817, + 50.9648077715043 + ], + [ + 6.96770320446282, + 50.96465988276071 + ], + [ + 6.967575288938885, + 50.96410963462724 + ], + [ + 6.967568476364907, + 50.96408074062946 + ], + [ + 6.967903205037603, + 50.96399972611825 + ], + [ + 6.967944373472046, + 50.9639896969167 + ], + [ + 6.968065833941088, + 50.96396041545189 + ], + [ + 6.968217757173134, + 50.96392442671636 + ], + [ + 6.9682834258048745, + 50.96392034138139 + ], + [ + 6.968362765502533, + 50.963915402952246 + ], + [ + 6.968313901910909, + 50.96362430914209 + ], + [ + 6.968279202710487, + 50.9634243028545 + ], + [ + 6.96824754353952, + 50.96324171272842 + ], + [ + 6.9681741040966045, + 50.9632384552422 + ], + [ + 6.96814609014928, + 50.96323774559592 + ], + [ + 6.96805848860898, + 50.96324548823329 + ], + [ + 6.967563547489635, + 50.963294510910096 + ], + [ + 6.967139747084108, + 50.96333691951308 + ], + [ + 6.967116432590298, + 50.963339250375995 + ], + [ + 6.966319918830004, + 50.96341888817818 + ], + [ + 6.965851612735211, + 50.96346570719231 + ], + [ + 6.965510693237457, + 50.96341298818567 + ], + [ + 6.965469843859132, + 50.963355579047544 + ], + [ + 6.965196743379718, + 50.962961358333615 + ], + [ + 6.965008874015391, + 50.96268977875448 + ], + [ + 6.964792636622981, + 50.96237651579681 + ], + [ + 6.965607822336409, + 50.96213524492921 + ], + [ + 6.965778580773766, + 50.96208457074457 + ], + [ + 6.9662795317873405, + 50.9620386238104 + ], + [ + 6.966790228638465, + 50.961986087460026 + ], + [ + 6.966735139952159, + 50.96174663072815 + ], + [ + 6.966767842459848, + 50.96174392020982 + ], + [ + 6.967223865402222, + 50.96170327110543 + ], + [ + 6.967774688147614, + 50.9616527214682 + ], + [ + 6.967874649079132, + 50.96164375067957 + ], + [ + 6.96778158645889, + 50.96114216525941 + ], + [ + 6.967774517188581, + 50.96110688934052 + ], + [ + 6.967747013244403, + 50.96096804304973 + ], + [ + 6.967739947234828, + 50.96093233458607 + ], + [ + 6.967727617313187, + 50.960869976026444 + ], + [ + 6.967646055446677, + 50.96047056147174 + ], + [ + 6.967630517224155, + 50.9603987414107 + ], + [ + 6.967585322524245, + 50.96018067346291 + ], + [ + 6.96746765660756, + 50.959602434823914 + ], + [ + 6.9674148040019315, + 50.959342523250086 + ], + [ + 6.967384002010901, + 50.95919308415539 + ], + [ + 6.967364077547057, + 50.95910575534041 + ], + [ + 6.967353241966074, + 50.959050551162946 + ], + [ + 6.967347839293218, + 50.95902020490058 + ], + [ + 6.967327162127772, + 50.95892859095088 + ], + [ + 6.967310351842803, + 50.95885236423545 + ], + [ + 6.967296694925, + 50.95879286319241 + ], + [ + 6.96688628199487, + 50.95892098283712 + ], + [ + 6.966446275024201, + 50.95904479744502 + ], + [ + 6.965925340426865, + 50.95915509407034 + ], + [ + 6.965777159617084, + 50.95917532769668 + ], + [ + 6.965511890684534, + 50.959211551526494 + ], + [ + 6.965448347556832, + 50.959217980995916 + ], + [ + 6.965241247297246, + 50.959238934688734 + ], + [ + 6.9649458722961635, + 50.959268819906576 + ], + [ + 6.9644150488186245, + 50.95928678138975 + ], + [ + 6.964182012761039, + 50.95927144729592 + ], + [ + 6.9636858833452315, + 50.95928768013307 + ], + [ + 6.961919776541278, + 50.959273392843784 + ], + [ + 6.961635715256983, + 50.95926845188218 + ], + [ + 6.961181285193802, + 50.95924608236692 + ], + [ + 6.960934966480728, + 50.959197904843094 + ], + [ + 6.960605177596471, + 50.95912897455806 + ], + [ + 6.960377512029475, + 50.95905323119409 + ], + [ + 6.9603285799441625, + 50.95903694761713 + ], + [ + 6.960111671035164, + 50.95894065928195 + ], + [ + 6.960010019443387, + 50.958882375567576 + ], + [ + 6.95959405596206, + 50.95864477457378 + ], + [ + 6.958759808811013, + 50.95816818020943 + ], + [ + 6.958448892552268, + 50.95800050586763 + ], + [ + 6.958372612836116, + 50.95795946285241 + ], + [ + 6.958148547943852, + 50.95783879853901 + ], + [ + 6.957986108452755, + 50.95777136004019 + ], + [ + 6.957717582317494, + 50.957659492883565 + ], + [ + 6.956043886776812, + 50.957200287795516 + ], + [ + 6.955756760044833, + 50.957119591021105 + ], + [ + 6.9555435739811715, + 50.95705938638303 + ], + [ + 6.9554866571701295, + 50.9570481602107 + ], + [ + 6.954019789533744, + 50.95666346947994 + ], + [ + 6.950799043044579, + 50.955819239423846 + ], + [ + 6.95074646755089, + 50.95580613817348 + ], + [ + 6.950330583482022, + 50.955696283733445 + ], + [ + 6.950262584538517, + 50.95567838223548 + ], + [ + 6.9500727344288515, + 50.955627148248986 + ], + [ + 6.949904386145796, + 50.955581385577666 + ], + [ + 6.949731068726912, + 50.95552750127796 + ], + [ + 6.949668042955157, + 50.95550406207095 + ], + [ + 6.94922602417121, + 50.95532756954198 + ], + [ + 6.948301230955079, + 50.954958419999485 + ], + [ + 6.948204045539999, + 50.95491451247713 + ], + [ + 6.948160892244109, + 50.95489501649085 + ], + [ + 6.948087200856549, + 50.95486163614388 + ], + [ + 6.947997334503888, + 50.9548029652187 + ], + [ + 6.947317392084696, + 50.95435903877219 + ], + [ + 6.947008288654213, + 50.95421843833507 + ], + [ + 6.946458088478598, + 50.95404907779765 + ], + [ + 6.945671130013181, + 50.95395858014916 + ], + [ + 6.945142739355501, + 50.953916472102144 + ], + [ + 6.9419106763927125, + 50.95374451252708 + ], + [ + 6.9418347559111755, + 50.95383167729276 + ], + [ + 6.941710425053848, + 50.95397549737285 + ], + [ + 6.941319103816224, + 50.95451010329756 + ], + [ + 6.9411931995416944, + 50.95470267996441 + ], + [ + 6.941160083911405, + 50.954810549092805 + ], + [ + 6.9410779665245785, + 50.955078282517455 + ], + [ + 6.94113205333472, + 50.956032916122126 + ], + [ + 6.9411564930728975, + 50.956036066821575 + ], + [ + 6.941311916131614, + 50.95605541900839 + ], + [ + 6.94133015042757, + 50.95613365889557 + ], + [ + 6.9413742072415925, + 50.956130517159636 + ], + [ + 6.941432148694753, + 50.956426965901215 + ], + [ + 6.941389146241642, + 50.95670201935931 + ], + [ + 6.941573731339384, + 50.95783632742341 + ], + [ + 6.941643574991943, + 50.95784589960812 + ], + [ + 6.941709211457271, + 50.95828965045472 + ], + [ + 6.941748825712824, + 50.95847622643793 + ], + [ + 6.941867232222852, + 50.95895267966538 + ], + [ + 6.9418786678353825, + 50.95897931660485 + ], + [ + 6.941918766753106, + 50.95907272032172 + ], + [ + 6.9420054678063, + 50.9593550930845 + ], + [ + 6.942245950442343, + 50.960167850689196 + ], + [ + 6.94242242339091, + 50.960764302243 + ], + [ + 6.942450993820261, + 50.96087482004324 + ], + [ + 6.942480473302415, + 50.960995128265985 + ], + [ + 6.942504290727984, + 50.96110289653898 + ], + [ + 6.942521219957478, + 50.96118680980242 + ], + [ + 6.942545483866882, + 50.96133772357212 + ], + [ + 6.942561123972647, + 50.96144933375749 + ], + [ + 6.942573705386985, + 50.96155755335673 + ], + [ + 6.942585319331366, + 50.961674229818684 + ], + [ + 6.942589060878888, + 50.96172543872892 + ], + [ + 6.942592027832461, + 50.961780609228065 + ], + [ + 6.942590587689224, + 50.96197658741055 + ], + [ + 6.942580061724596, + 50.962251204246 + ], + [ + 6.942573158907794, + 50.96236021010334 + ], + [ + 6.942565387309786, + 50.96248252759166 + ], + [ + 6.942547631906681, + 50.96259692462591 + ], + [ + 6.942526965777814, + 50.96272923358457 + ], + [ + 6.942468249764919, + 50.963105459792175 + ], + [ + 6.9423894565880495, + 50.963468328072324 + ], + [ + 6.942200536161014, + 50.964338342152374 + ], + [ + 6.942168627333323, + 50.9645112404326 + ], + [ + 6.942121691520781, + 50.96476556048201 + ], + [ + 6.94199450923545, + 50.96545467462918 + ], + [ + 6.941474293159298, + 50.96827440109023 + ], + [ + 6.941466860304749, + 50.96832769379661 + ], + [ + 6.9414577732674765, + 50.96844496942355 + ], + [ + 6.941452817321209, + 50.96849613560577 + ], + [ + 6.941442377350669, + 50.96860393494994 + ], + [ + 6.941428112972467, + 50.9686734029762 + ], + [ + 6.941359693288691, + 50.96900660211382 + ], + [ + 6.941626773817873, + 50.96904193352344 + ], + [ + 6.94165330990996, + 50.969044665944025 + ], + [ + 6.941929671482549, + 50.969073114569206 + ], + [ + 6.941954718146806, + 50.969076514085764 + ], + [ + 6.941980412592109, + 50.969133533125486 + ], + [ + 6.942007389548268, + 50.96920039952943 + ], + [ + 6.942035822594495, + 50.96924070968074 + ], + [ + 6.942052485362043, + 50.969277203183566 + ], + [ + 6.942059771773061, + 50.9692930059036 + ], + [ + 6.942067870819192, + 50.96930795415013 + ], + [ + 6.94207861497353, + 50.96932048472995 + ], + [ + 6.94209474314179, + 50.969341008506284 + ], + [ + 6.942121210800113, + 50.96937471136775 + ], + [ + 6.942141693390211, + 50.96939497551555 + ], + [ + 6.942188865338198, + 50.969430106318384 + ], + [ + 6.942222884987717, + 50.969452180233404 + ], + [ + 6.94225688356378, + 50.96946670801625 + ], + [ + 6.9422923827425995, + 50.96948963001284 + ], + [ + 6.942319721591622, + 50.96949193123662 + ], + [ + 6.942347795000957, + 50.96949920454875 + ], + [ + 6.942481504419281, + 50.96953312700947 + ], + [ + 6.942550152381283, + 50.96954111524509 + ], + [ + 6.942645031792492, + 50.96954716700948 + ], + [ + 6.942678252177457, + 50.969551009880774 + ], + [ + 6.942702875240082, + 50.96955391341068 + ], + [ + 6.9427570599061275, + 50.96956461462255 + ], + [ + 6.94280817393389, + 50.96958004727925 + ], + [ + 6.942855152794169, + 50.9695998688549 + ], + [ + 6.942935173376157, + 50.96964956244832 + ], + [ + 6.942999557187048, + 50.96970934760128 + ], + [ + 6.943011829791221, + 50.96972401135332 + ], + [ + 6.943025273207138, + 50.969739900891234 + ], + [ + 6.943047490120073, + 50.969773149115134 + ], + [ + 6.9430639755102845, + 50.96979781886497 + ], + [ + 6.943080474157685, + 50.969822511330186 + ], + [ + 6.943093692503965, + 50.96984807326159 + ], + [ + 6.943106947539481, + 50.96987370778756 + ], + [ + 6.943133441844534, + 50.969924947776754 + ], + [ + 6.9431630070760555, + 50.96998212196325 + ], + [ + 6.94324570333469, + 50.97012869898005 + ], + [ + 6.943331192131464, + 50.97025844206921 + ], + [ + 6.943363181862285, + 50.970303661254185 + ], + [ + 6.943407132147412, + 50.97035646146619 + ], + [ + 6.943443546340973, + 50.9704001945456 + ], + [ + 6.94349446778625, + 50.97046108865794 + ], + [ + 6.943573334485002, + 50.970580188649535 + ], + [ + 6.943610252389888, + 50.9706599252914 + ], + [ + 6.9436791954317405, + 50.970808828366366 + ], + [ + 6.943777350322248, + 50.97095932417072 + ], + [ + 6.9440131614188205, + 50.97113702247325 + ], + [ + 6.944233831134675, + 50.97129111225413 + ], + [ + 6.944450167875402, + 50.97139300751382 + ], + [ + 6.944487414676238, + 50.97141231262546 + ], + [ + 6.944527919080762, + 50.97143329754089 + ], + [ + 6.944580045413579, + 50.97146018725605 + ], + [ + 6.944698530446564, + 50.97150230582954 + ], + [ + 6.944736407364943, + 50.97151573195289 + ], + [ + 6.94493095671381, + 50.97158048809995 + ], + [ + 6.945123572779494, + 50.97164465048558 + ], + [ + 6.9451581680584535, + 50.97155339907279 + ], + [ + 6.945260506963297, + 50.97148901599414 + ], + [ + 6.945573970392374, + 50.9716086046409 + ], + [ + 6.945662131592761, + 50.971642239124364 + ], + [ + 6.945802019516533, + 50.97169560745089 + ], + [ + 6.945935813171542, + 50.971720717107516 + ], + [ + 6.946097202531194, + 50.97175118932701 + ], + [ + 6.946129999153326, + 50.97175738190666 + ], + [ + 6.9461972379296215, + 50.971770051403865 + ], + [ + 6.94631114688998, + 50.97179428653436 + ], + [ + 6.94637183883857, + 50.971800470520115 + ], + [ + 6.946415389089314, + 50.971804716138394 + ], + [ + 6.947147279171097, + 50.971911319455636 + ], + [ + 6.94753984777165, + 50.971931587059494 + ], + [ + 6.947542046379597, + 50.97187158084075 + ], + [ + 6.9475602446727756, + 50.97115230574326 + ], + [ + 6.948511975144508, + 50.971192961556184 + ], + [ + 6.948408707462502, + 50.97074442837978 + ], + [ + 6.949684212892018, + 50.9707095838569 + ], + [ + 6.949760157160755, + 50.970932207268646 + ], + [ + 6.949438296597094, + 50.97094803596918 + ], + [ + 6.949640854869049, + 50.971452864101394 + ], + [ + 6.949726483130583, + 50.97166643807781 + ], + [ + 6.949742588981247, + 50.97185081446816 + ], + [ + 6.949689064938226, + 50.97193645998589 + ], + [ + 6.9498099540231415, + 50.97221833175109 + ], + [ + 6.950288694176324, + 50.9722742540625 + ], + [ + 6.950796638810646, + 50.97234430434294 + ], + [ + 6.9508898501877345, + 50.97235717330866 + ], + [ + 6.950997103984467, + 50.97237198303559 + ], + [ + 6.951173541924774, + 50.97239632042656 + ], + [ + 6.951311003997206, + 50.9724104934227 + ], + [ + 6.951898132884149, + 50.97248210625008 + ], + [ + 6.952302757481586, + 50.972530581116764 + ], + [ + 6.952610871120765, + 50.97255942798587 + ], + [ + 6.952649489201607, + 50.97255996031596 + ], + [ + 6.952975455801953, + 50.9725643909978 + ], + [ + 6.953007290153332, + 50.972564576742165 + ], + [ + 6.953248318258032, + 50.972553630381576 + ], + [ + 6.953450134660071, + 50.972544440763016 + ], + [ + 6.95348825693675, + 50.972641782485375 + ], + [ + 6.953510692447005, + 50.972750089619566 + ], + [ + 6.9535483738965285, + 50.97293084938945 + ], + [ + 6.953564725437383, + 50.97300860971594 + ], + [ + 6.9535702627978475, + 50.973023147987924 + ], + [ + 6.953637783012128, + 50.973133476469606 + ], + [ + 6.953722147189007, + 50.97327114062549 + ], + [ + 6.953747654854479, + 50.973312760005314 + ], + [ + 6.953766479596194, + 50.9733434751933 + ], + [ + 6.953834418111559, + 50.97345432172425 + ], + [ + 6.953897504632459, + 50.97355393456992 + ], + [ + 6.954117716607013, + 50.97356983573232 + ], + [ + 6.954162954126477, + 50.97357308182288 + ], + [ + 6.954194494618138, + 50.97357510760269 + ], + [ + 6.954380259891845, + 50.97358691787509 + ], + [ + 6.954534043962556, + 50.97359749399382 + ], + [ + 6.954707267124425, + 50.97357370003168 + ], + [ + 6.954735719495998, + 50.97338163469 + ], + [ + 6.954744833120319, + 50.973320143247015 + ], + [ + 6.9551107365891625, + 50.9732534318836 + ], + [ + 6.9550040491492275, + 50.972776765896555 + ], + [ + 6.954995903186508, + 50.97270153193071 + ], + [ + 6.955030143178818, + 50.97262115480058 + ], + [ + 6.955049932042557, + 50.972611262014446 + ], + [ + 6.955065291234715, + 50.97259733890601 + ], + [ + 6.955072419187174, + 50.972578372760125 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Nippes", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "501", + "Population_rel": 0.03375335465607882, + "Population_abs": 36725 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.924286959220052, + 50.983272323745915 + ], + [ + 6.925020214276645, + 50.982805119111894 + ], + [ + 6.925193190673678, + 50.982689253066866 + ], + [ + 6.925618031447486, + 50.982413271174416 + ], + [ + 6.926269496556015, + 50.98198813825133 + ], + [ + 6.926619417407191, + 50.98182066016537 + ], + [ + 6.926658536555332, + 50.9817983172696 + ], + [ + 6.926839342900946, + 50.981689766645445 + ], + [ + 6.926859300076614, + 50.98167791914675 + ], + [ + 6.927516397272861, + 50.981235784927875 + ], + [ + 6.927603594147828, + 50.98117711215929 + ], + [ + 6.9282073307634695, + 50.98077053808322 + ], + [ + 6.9300702723118395, + 50.97951337135258 + ], + [ + 6.930108449828917, + 50.97947592271785 + ], + [ + 6.930112339512198, + 50.97945826769552 + ], + [ + 6.930151216250721, + 50.979425852648724 + ], + [ + 6.930356258745124, + 50.97926662379166 + ], + [ + 6.930383736634398, + 50.97924996243559 + ], + [ + 6.930551328213031, + 50.97911823067328 + ], + [ + 6.930726124324007, + 50.97898080649273 + ], + [ + 6.930829574429222, + 50.97889985406143 + ], + [ + 6.930907668567486, + 50.97883997338078 + ], + [ + 6.931305258685611, + 50.97855706034803 + ], + [ + 6.931331892629405, + 50.978537445564086 + ], + [ + 6.931766640211621, + 50.978227939101956 + ], + [ + 6.932732241380087, + 50.9775412901012 + ], + [ + 6.933147421709515, + 50.97724602179354 + ], + [ + 6.933233941442763, + 50.97718449176223 + ], + [ + 6.933353917514533, + 50.977098973902564 + ], + [ + 6.933514640600045, + 50.97698452916349 + ], + [ + 6.9336242527040755, + 50.97690694446858 + ], + [ + 6.933852911516186, + 50.97674502282703 + ], + [ + 6.934069909607427, + 50.97659007054362 + ], + [ + 6.934095561662786, + 50.976520186123906 + ], + [ + 6.9341474076137395, + 50.976486501760014 + ], + [ + 6.934247447134911, + 50.97641642598779 + ], + [ + 6.936342644663686, + 50.97496656147033 + ], + [ + 6.936554686617214, + 50.97481258279261 + ], + [ + 6.937747658394063, + 50.97399362479734 + ], + [ + 6.938052589255491, + 50.97378433286588 + ], + [ + 6.9383629974746395, + 50.97357105099972 + ], + [ + 6.938395501988019, + 50.9735487250332 + ], + [ + 6.938436154687269, + 50.97351954668647 + ], + [ + 6.938607199431329, + 50.97338176491627 + ], + [ + 6.939005665538358, + 50.97307702262854 + ], + [ + 6.939366746211897, + 50.9727460994952 + ], + [ + 6.939705293544924, + 50.97243468351484 + ], + [ + 6.939857119984311, + 50.97225883118379 + ], + [ + 6.939919959917161, + 50.97218506428167 + ], + [ + 6.940072292904859, + 50.97200348979826 + ], + [ + 6.940104040949432, + 50.971964222894194 + ], + [ + 6.9402852988902035, + 50.971728400908596 + ], + [ + 6.940623810659958, + 50.9712539170218 + ], + [ + 6.940869854262981, + 50.970853710508756 + ], + [ + 6.941118127573026, + 50.97037677849748 + ], + [ + 6.941262780756543, + 50.970117037337985 + ], + [ + 6.941287531853187, + 50.97007328028345 + ], + [ + 6.941585053216145, + 50.96956238821179 + ], + [ + 6.941714455071632, + 50.969393065142384 + ], + [ + 6.941926706706137, + 50.969115754715645 + ], + [ + 6.941954718146806, + 50.969076514085764 + ], + [ + 6.941929671482549, + 50.969073114569206 + ], + [ + 6.94165330990996, + 50.969044665944025 + ], + [ + 6.941626773817873, + 50.96904193352344 + ], + [ + 6.941359693288691, + 50.96900660211382 + ], + [ + 6.941428112972467, + 50.9686734029762 + ], + [ + 6.941442377350669, + 50.96860393494994 + ], + [ + 6.941452817321209, + 50.96849613560577 + ], + [ + 6.9414577732674765, + 50.96844496942355 + ], + [ + 6.941466860304749, + 50.96832769379661 + ], + [ + 6.941474293159298, + 50.96827440109023 + ], + [ + 6.94199450923545, + 50.96545467462918 + ], + [ + 6.942121691520781, + 50.96476556048201 + ], + [ + 6.942168627333323, + 50.9645112404326 + ], + [ + 6.942200536161014, + 50.964338342152374 + ], + [ + 6.9423894565880495, + 50.963468328072324 + ], + [ + 6.942468249764919, + 50.963105459792175 + ], + [ + 6.942526965777814, + 50.96272923358457 + ], + [ + 6.942547631906681, + 50.96259692462591 + ], + [ + 6.942565387309786, + 50.96248252759166 + ], + [ + 6.942573158907794, + 50.96236021010334 + ], + [ + 6.942580061724596, + 50.962251204246 + ], + [ + 6.942590587689224, + 50.96197658741055 + ], + [ + 6.942592027832461, + 50.961780609228065 + ], + [ + 6.942589060878888, + 50.96172543872892 + ], + [ + 6.942585319331366, + 50.961674229818684 + ], + [ + 6.942573705386985, + 50.96155755335673 + ], + [ + 6.942561123972647, + 50.96144933375749 + ], + [ + 6.942545483866882, + 50.96133772357212 + ], + [ + 6.942521219957478, + 50.96118680980242 + ], + [ + 6.942504290727984, + 50.96110289653898 + ], + [ + 6.942480473302415, + 50.960995128265985 + ], + [ + 6.942450993820261, + 50.96087482004324 + ], + [ + 6.94242242339091, + 50.960764302243 + ], + [ + 6.942245950442343, + 50.960167850689196 + ], + [ + 6.9420054678063, + 50.9593550930845 + ], + [ + 6.941918766753106, + 50.95907272032172 + ], + [ + 6.9418786678353825, + 50.95897931660485 + ], + [ + 6.941867232222852, + 50.95895267966538 + ], + [ + 6.941748825712824, + 50.95847622643793 + ], + [ + 6.941709211457271, + 50.95828965045472 + ], + [ + 6.941643574991943, + 50.95784589960812 + ], + [ + 6.941573731339384, + 50.95783632742341 + ], + [ + 6.941389146241642, + 50.95670201935931 + ], + [ + 6.941432148694753, + 50.956426965901215 + ], + [ + 6.9413742072415925, + 50.956130517159636 + ], + [ + 6.94133015042757, + 50.95613365889557 + ], + [ + 6.941311916131614, + 50.95605541900839 + ], + [ + 6.9411564930728975, + 50.956036066821575 + ], + [ + 6.94113205333472, + 50.956032916122126 + ], + [ + 6.941105701587235, + 50.95603520080645 + ], + [ + 6.940088181963461, + 50.95613893538078 + ], + [ + 6.939845223338792, + 50.955969255821984 + ], + [ + 6.9397634240764114, + 50.95602027390917 + ], + [ + 6.93964317352335, + 50.95614950577868 + ], + [ + 6.939775082288193, + 50.95623369210359 + ], + [ + 6.93962321600494, + 50.95632809980497 + ], + [ + 6.939469971401494, + 50.9563997683345 + ], + [ + 6.939343219632551, + 50.95631666020281 + ], + [ + 6.939283563519086, + 50.95627743502082 + ], + [ + 6.939161816004675, + 50.95633602453743 + ], + [ + 6.939509739780884, + 50.9565817898751 + ], + [ + 6.9395522098620726, + 50.95661282050664 + ], + [ + 6.939581507041617, + 50.9566329007802 + ], + [ + 6.9396580483120704, + 50.95670186126932 + ], + [ + 6.93984588992068, + 50.95686961707786 + ], + [ + 6.939889158426384, + 50.95691196773065 + ], + [ + 6.939957083311973, + 50.956941894141096 + ], + [ + 6.9401216240406525, + 50.95711864672382 + ], + [ + 6.940281658793515, + 50.9572906715924 + ], + [ + 6.940238452227797, + 50.95731484094821 + ], + [ + 6.940028252709849, + 50.957444963151005 + ], + [ + 6.940003429528917, + 50.95743877995275 + ], + [ + 6.939827466828113, + 50.9573813455757 + ], + [ + 6.9391486689562845, + 50.95716108903977 + ], + [ + 6.939026177909095, + 50.95712135356797 + ], + [ + 6.938980708282227, + 50.9571745755394 + ], + [ + 6.938688609212153, + 50.95753263099279 + ], + [ + 6.9385880447385135, + 50.95750044931928 + ], + [ + 6.938524004575898, + 50.957479660017576 + ], + [ + 6.938304083746164, + 50.95740789535688 + ], + [ + 6.938173133160208, + 50.95754882114041 + ], + [ + 6.937989926809316, + 50.95748386318534 + ], + [ + 6.937907361875178, + 50.957563933412345 + ], + [ + 6.93782039699805, + 50.95769512466829 + ], + [ + 6.937706064601705, + 50.95781982551175 + ], + [ + 6.93687195814983, + 50.95754902569109 + ], + [ + 6.936661938151599, + 50.95780663618467 + ], + [ + 6.936632767127134, + 50.95784237721383 + ], + [ + 6.936814439502004, + 50.95790186716489 + ], + [ + 6.937027631294229, + 50.95797161984248 + ], + [ + 6.937186377253851, + 50.95802347221707 + ], + [ + 6.937285238954802, + 50.95805593889389 + ], + [ + 6.936991295670194, + 50.95835152916385 + ], + [ + 6.936864919458422, + 50.95830984488938 + ], + [ + 6.936732381107498, + 50.958266052264385 + ], + [ + 6.935950340519032, + 50.958007681611974 + ], + [ + 6.93572517098546, + 50.95793321290239 + ], + [ + 6.935653031613773, + 50.95790956540181 + ], + [ + 6.935632344253233, + 50.957935439830734 + ], + [ + 6.935598994298484, + 50.95797570972539 + ], + [ + 6.935415564578527, + 50.95819705763406 + ], + [ + 6.935394912663384, + 50.958221869584925 + ], + [ + 6.935690078939138, + 50.958322415545425 + ], + [ + 6.936284133594113, + 50.95851865140115 + ], + [ + 6.936565828972409, + 50.95861158841597 + ], + [ + 6.936471082163934, + 50.958705549961714 + ], + [ + 6.936444989981742, + 50.95872163732361 + ], + [ + 6.936427715720142, + 50.95872949205002 + ], + [ + 6.936399364145788, + 50.95873457516936 + ], + [ + 6.9363713969610306, + 50.95873725025021 + ], + [ + 6.93634379520455, + 50.95873665985188 + ], + [ + 6.936313683618846, + 50.95873010718697 + ], + [ + 6.936283676071229, + 50.958720467894395 + ], + [ + 6.936257648339995, + 50.958705117749965 + ], + [ + 6.936239048038348, + 50.95868575995893 + ], + [ + 6.936227011670858, + 50.95866205278762 + ], + [ + 6.935482204612936, + 50.958411096902125 + ], + [ + 6.934925693238667, + 50.958227230874684 + ], + [ + 6.934829797773455, + 50.95836373649148 + ], + [ + 6.934806134196747, + 50.95839736651987 + ], + [ + 6.93614214814257, + 50.959038561502815 + ], + [ + 6.936160421992008, + 50.959020076769995 + ], + [ + 6.936172840263228, + 50.959007661846236 + ], + [ + 6.936772006036836, + 50.95929464711356 + ], + [ + 6.93709850845026, + 50.95945100357045 + ], + [ + 6.937116734709206, + 50.959464160605016 + ], + [ + 6.937087662203937, + 50.95948322724898 + ], + [ + 6.9362960268261205, + 50.9600048625744 + ], + [ + 6.935582459565382, + 50.960475040936394 + ], + [ + 6.9355408731892, + 50.96048094750457 + ], + [ + 6.935051332202204, + 50.96054995332625 + ], + [ + 6.935066062125789, + 50.960610062842726 + ], + [ + 6.935070558151253, + 50.9606283655237 + ], + [ + 6.93498360451325, + 50.96062915161035 + ], + [ + 6.9347582109474795, + 50.96077751385776 + ], + [ + 6.93412159847222, + 50.9611967143852 + ], + [ + 6.934152431283681, + 50.961215255563474 + ], + [ + 6.934433415047876, + 50.96138560064143 + ], + [ + 6.934562813356172, + 50.9614641191501 + ], + [ + 6.933990603187374, + 50.961840315974676 + ], + [ + 6.933945099075504, + 50.96181961206103 + ], + [ + 6.9339209312714685, + 50.96181476845753 + ], + [ + 6.93280340565808, + 50.9625337138138 + ], + [ + 6.932721141722427, + 50.962576890630935 + ], + [ + 6.932624364233275, + 50.96261326114441 + ], + [ + 6.932592992420841, + 50.962623499961325 + ], + [ + 6.932183011623841, + 50.96279351037495 + ], + [ + 6.9316656998576445, + 50.962209387644656 + ], + [ + 6.931107517741275, + 50.96168014943714 + ], + [ + 6.931043889316507, + 50.96162696150962 + ], + [ + 6.930711594435208, + 50.96134917573322 + ], + [ + 6.9303637249922065, + 50.96108622602396 + ], + [ + 6.930195213327356, + 50.960958932326264 + ], + [ + 6.930150875749747, + 50.96093411585749 + ], + [ + 6.929081595276473, + 50.960333789093376 + ], + [ + 6.928438100292697, + 50.9599725273109 + ], + [ + 6.928415381437964, + 50.9599639254846 + ], + [ + 6.928011741511426, + 50.9604602414851 + ], + [ + 6.927952001493618, + 50.960533798116394 + ], + [ + 6.927662602728778, + 50.96088982646793 + ], + [ + 6.927381797172238, + 50.961242456814055 + ], + [ + 6.927328629196964, + 50.96130922347849 + ], + [ + 6.927266560312833, + 50.96138037215843 + ], + [ + 6.926744326134426, + 50.96185313002867 + ], + [ + 6.926014148039003, + 50.962492129284335 + ], + [ + 6.925976223475135, + 50.962524881857966 + ], + [ + 6.925677317005819, + 50.96278344632919 + ], + [ + 6.924836946161492, + 50.963552128675765 + ], + [ + 6.924814856802203, + 50.96359284120386 + ], + [ + 6.924764311311705, + 50.9636361238208 + ], + [ + 6.924694853198562, + 50.963679643156155 + ], + [ + 6.9236112846556725, + 50.96466913038182 + ], + [ + 6.923273060328622, + 50.96497789069854 + ], + [ + 6.922798361655065, + 50.96542544505716 + ], + [ + 6.9225714173428585, + 50.96563929495719 + ], + [ + 6.922553442774586, + 50.965651752593196 + ], + [ + 6.922579439349867, + 50.96566341328486 + ], + [ + 6.9223828155068405, + 50.96585571898938 + ], + [ + 6.922353689443026, + 50.96588013054702 + ], + [ + 6.922297809818547, + 50.96592659722032 + ], + [ + 6.922117144171287, + 50.9660766171374 + ], + [ + 6.9218581645029325, + 50.966376836539034 + ], + [ + 6.921233220374137, + 50.967261638878455 + ], + [ + 6.920988343527791, + 50.96757001477711 + ], + [ + 6.920848553685455, + 50.96774969533831 + ], + [ + 6.9203933113305505, + 50.96833483952983 + ], + [ + 6.920280019802339, + 50.968480369853204 + ], + [ + 6.919949007289498, + 50.96903402086667 + ], + [ + 6.919290323751912, + 50.97035505719264 + ], + [ + 6.919112832340206, + 50.970710451433675 + ], + [ + 6.919100337608786, + 50.97073262324172 + ], + [ + 6.918920411875049, + 50.971051883610116 + ], + [ + 6.9180741509923065, + 50.97255342028547 + ], + [ + 6.917981871235089, + 50.97281941950674 + ], + [ + 6.917890623459378, + 50.97308248170107 + ], + [ + 6.917876196878024, + 50.973124883685074 + ], + [ + 6.917870594845805, + 50.9731402215914 + ], + [ + 6.917252524844527, + 50.97410764851225 + ], + [ + 6.917027039083566, + 50.97441334642974 + ], + [ + 6.916949579331704, + 50.97452155544541 + ], + [ + 6.9164190133160055, + 50.97526355971031 + ], + [ + 6.916259565875542, + 50.97548602803736 + ], + [ + 6.916239496422013, + 50.97551091448987 + ], + [ + 6.915333187330095, + 50.97660958754829 + ], + [ + 6.9151665305596675, + 50.976809017668586 + ], + [ + 6.914902069092558, + 50.977125354061286 + ], + [ + 6.9141380373776915, + 50.977909718028826 + ], + [ + 6.913868515163839, + 50.97818644940019 + ], + [ + 6.913279273804213, + 50.97878030544095 + ], + [ + 6.912884487133232, + 50.97918323412498 + ], + [ + 6.912539261628308, + 50.97953597460066 + ], + [ + 6.912164196162855, + 50.97993586997411 + ], + [ + 6.911812559819802, + 50.98031086119529 + ], + [ + 6.910784959032147, + 50.98128315786427 + ], + [ + 6.910169818098559, + 50.98183818651625 + ], + [ + 6.909513380730303, + 50.98243047852693 + ], + [ + 6.9090343187328775, + 50.982873922466304 + ], + [ + 6.909010730468873, + 50.98287495617591 + ], + [ + 6.908922042355718, + 50.98291031892959 + ], + [ + 6.908899180392961, + 50.982912310867476 + ], + [ + 6.908874862846974, + 50.98288807250285 + ], + [ + 6.908862920790159, + 50.98287617215042 + ], + [ + 6.90884838942676, + 50.98286171436866 + ], + [ + 6.908835392788619, + 50.98287350089244 + ], + [ + 6.908623883033208, + 50.98306596682084 + ], + [ + 6.9087165018329655, + 50.98316487244242 + ], + [ + 6.9092259391462685, + 50.98368042914648 + ], + [ + 6.909854657123024, + 50.98431277016491 + ], + [ + 6.910022285414111, + 50.98451695996957 + ], + [ + 6.910468981105963, + 50.98487886375408 + ], + [ + 6.910491446721787, + 50.98489653556317 + ], + [ + 6.910696015839551, + 50.985068945756844 + ], + [ + 6.910799177377002, + 50.98513633167364 + ], + [ + 6.91102583782467, + 50.98528669797148 + ], + [ + 6.911110620203641, + 50.985330489766206 + ], + [ + 6.911329837876483, + 50.98544241520592 + ], + [ + 6.911344576392303, + 50.985451848857856 + ], + [ + 6.91164693265419, + 50.98558011208287 + ], + [ + 6.9120898010232255, + 50.9857340809138 + ], + [ + 6.912633521655476, + 50.98585081792366 + ], + [ + 6.913071134816235, + 50.985946314183295 + ], + [ + 6.913474931526784, + 50.986021349056315 + ], + [ + 6.914018871596365, + 50.98612387155584 + ], + [ + 6.914567507216376, + 50.98624789128417 + ], + [ + 6.914936678169194, + 50.98635828130733 + ], + [ + 6.914940878120131, + 50.98641479209555 + ], + [ + 6.9149424899453145, + 50.98643653269285 + ], + [ + 6.917619748415136, + 50.987543576901274 + ], + [ + 6.917652097024636, + 50.98751620386981 + ], + [ + 6.917701252075018, + 50.98747528194009 + ], + [ + 6.917750022669459, + 50.98743734445523 + ], + [ + 6.918572948815088, + 50.98690757774698 + ], + [ + 6.91963866703184, + 50.98623731087216 + ], + [ + 6.919739025410183, + 50.986162988224464 + ], + [ + 6.919844754211726, + 50.98609468084051 + ], + [ + 6.920469503392666, + 50.98569093721211 + ], + [ + 6.920664364833218, + 50.98556765555176 + ], + [ + 6.920679638150551, + 50.985558024496626 + ], + [ + 6.92094999161074, + 50.9853876921087 + ], + [ + 6.922845071392555, + 50.98418058351943 + ], + [ + 6.92325379031806, + 50.983925083618495 + ], + [ + 6.923764536891051, + 50.98360562872745 + ], + [ + 6.923863431691136, + 50.98354377426539 + ], + [ + 6.924286959220052, + 50.983272323745915 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Bilderstoeckchen", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "507", + "Population_rel": 0.014425940222785927, + "Population_abs": 15696 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.034202162547653, + 50.93761723600497 + ], + [ + 7.034900016096277, + 50.93679766413733 + ], + [ + 7.034928627093184, + 50.93679928255431 + ], + [ + 7.035000569836196, + 50.936803354442475 + ], + [ + 7.036972743177569, + 50.936914934964065 + ], + [ + 7.036994116685201, + 50.93691763092789 + ], + [ + 7.0371007063965205, + 50.93696842978807 + ], + [ + 7.037161204208102, + 50.93705564693416 + ], + [ + 7.037671917979481, + 50.93779190786272 + ], + [ + 7.037767093072128, + 50.937794673247 + ], + [ + 7.037826284353765, + 50.93779305729281 + ], + [ + 7.037889539716387, + 50.93779133244066 + ], + [ + 7.038081219671383, + 50.93778610350369 + ], + [ + 7.038269204756695, + 50.937788205864486 + ], + [ + 7.038258694722483, + 50.937862595829145 + ], + [ + 7.038254581033457, + 50.937891713881974 + ], + [ + 7.0383060194460185, + 50.937899155341455 + ], + [ + 7.038872249290936, + 50.93798106530073 + ], + [ + 7.039004120169127, + 50.93800019765033 + ], + [ + 7.03910943357422, + 50.93801547066419 + ], + [ + 7.039742461143802, + 50.938106366938456 + ], + [ + 7.040404147859015, + 50.93820218551254 + ], + [ + 7.0404531347802175, + 50.938209279984854 + ], + [ + 7.041001874312108, + 50.938288747280495 + ], + [ + 7.0410938279860735, + 50.938036135379136 + ], + [ + 7.042083648607018, + 50.938178829062046 + ], + [ + 7.042188543450485, + 50.93819386562773 + ], + [ + 7.042314760601732, + 50.93821195866853 + ], + [ + 7.042442387778882, + 50.93823010129787 + ], + [ + 7.043167862100325, + 50.9383332261605 + ], + [ + 7.04324241265766, + 50.9383426213422 + ], + [ + 7.043335286288964, + 50.93835572229606 + ], + [ + 7.043360942809146, + 50.93836006996129 + ], + [ + 7.043405393474049, + 50.93836866734786 + ], + [ + 7.043446162786971, + 50.93837652939244 + ], + [ + 7.044282117381888, + 50.93857504923696 + ], + [ + 7.044347402918208, + 50.93859049772386 + ], + [ + 7.04454233803556, + 50.93863669262323 + ], + [ + 7.044567419907768, + 50.93864202059884 + ], + [ + 7.044652972171051, + 50.93865587474549 + ], + [ + 7.045990322027154, + 50.93731787122256 + ], + [ + 7.047226875530435, + 50.93612694786284 + ], + [ + 7.047244296150646, + 50.93611154801372 + ], + [ + 7.047261694482881, + 50.93609617027339 + ], + [ + 7.047298605528481, + 50.936063935618655 + ], + [ + 7.047367897608868, + 50.935997651127266 + ], + [ + 7.047962200359721, + 50.935428982524144 + ], + [ + 7.048550866162058, + 50.93486507777553 + ], + [ + 7.049934985649131, + 50.93353824220685 + ], + [ + 7.0499639048846205, + 50.93351047797522 + ], + [ + 7.04998011660734, + 50.933494807503955 + ], + [ + 7.050007455166021, + 50.93346784517428 + ], + [ + 7.0504091687724975, + 50.93306894207801 + ], + [ + 7.050506007872283, + 50.932972692909644 + ], + [ + 7.051107498545269, + 50.932374054563525 + ], + [ + 7.0511384228263685, + 50.932338874959925 + ], + [ + 7.051102840631903, + 50.932313657149145 + ], + [ + 7.051085201708334, + 50.93230105122979 + ], + [ + 7.051095483085316, + 50.932239740345594 + ], + [ + 7.052040470562385, + 50.93131952028186 + ], + [ + 7.052153518757652, + 50.93131130767956 + ], + [ + 7.052451283059487, + 50.93102513091791 + ], + [ + 7.053516816878166, + 50.9300010321215 + ], + [ + 7.054259658482764, + 50.92926653962844 + ], + [ + 7.054228416179011, + 50.9292121638624 + ], + [ + 7.054322886816471, + 50.92910622726708 + ], + [ + 7.054447282890942, + 50.9290862823029 + ], + [ + 7.054882576649131, + 50.92901648853526 + ], + [ + 7.05492283643204, + 50.92900987540331 + ], + [ + 7.055428659052943, + 50.928926790263176 + ], + [ + 7.055570043407005, + 50.928903566507884 + ], + [ + 7.055969552115224, + 50.92884483830961 + ], + [ + 7.055995979542571, + 50.928840736618 + ], + [ + 7.056855259137837, + 50.92870495260433 + ], + [ + 7.056954991358912, + 50.92868696964482 + ], + [ + 7.057270896698859, + 50.92862990142507 + ], + [ + 7.057583520161303, + 50.92856458720946 + ], + [ + 7.057603760074993, + 50.928560679885784 + ], + [ + 7.057879251289656, + 50.92849754673422 + ], + [ + 7.058384752525993, + 50.92837106612441 + ], + [ + 7.058765759886096, + 50.9282764156244 + ], + [ + 7.059082403410175, + 50.9281979040033 + ], + [ + 7.059307784696185, + 50.92813692919546 + ], + [ + 7.0593406115261255, + 50.928128713311985 + ], + [ + 7.059069965776778, + 50.92789120109031 + ], + [ + 7.058969894843819, + 50.9277120479957 + ], + [ + 7.058936084978418, + 50.92765131725342 + ], + [ + 7.058585291112554, + 50.92701733242086 + ], + [ + 7.058537627649516, + 50.92692676038437 + ], + [ + 7.058499049758211, + 50.926852439908686 + ], + [ + 7.05847833568487, + 50.92680805158251 + ], + [ + 7.058475022736911, + 50.9267529651104 + ], + [ + 7.058616054212761, + 50.926568571555016 + ], + [ + 7.058762027222786, + 50.92646359947185 + ], + [ + 7.058871823611269, + 50.926406778516444 + ], + [ + 7.05905441368519, + 50.92627980938527 + ], + [ + 7.059171664736066, + 50.92619433505629 + ], + [ + 7.059215119754515, + 50.92614746485203 + ], + [ + 7.0592355397452575, + 50.92608839936559 + ], + [ + 7.0592234452634965, + 50.926034694935424 + ], + [ + 7.059201543752169, + 50.92600774910234 + ], + [ + 7.059165862760446, + 50.925970111821684 + ], + [ + 7.05914752699184, + 50.92595466251533 + ], + [ + 7.0591095972326325, + 50.925919122024894 + ], + [ + 7.059124165129917, + 50.92589709591767 + ], + [ + 7.0591353682425595, + 50.925880215801854 + ], + [ + 7.059299107689905, + 50.925674849812175 + ], + [ + 7.059426039739149, + 50.92550226969324 + ], + [ + 7.059527947957811, + 50.92542394533167 + ], + [ + 7.059726307074331, + 50.92524631153664 + ], + [ + 7.059874886279232, + 50.92510634565229 + ], + [ + 7.059998638918703, + 50.92498799877081 + ], + [ + 7.060179366343572, + 50.924773218712716 + ], + [ + 7.060284497387998, + 50.924580339102576 + ], + [ + 7.0603732313764835, + 50.924398216774996 + ], + [ + 7.060445148828716, + 50.9242271245 + ], + [ + 7.0604689293059275, + 50.924031033984214 + ], + [ + 7.060482444235685, + 50.92391797604984 + ], + [ + 7.060484794900577, + 50.923878156052105 + ], + [ + 7.060486123506136, + 50.92385432151291 + ], + [ + 7.0604924779501435, + 50.923736646863176 + ], + [ + 7.060480938916213, + 50.92366888207674 + ], + [ + 7.060468188689092, + 50.92359739536775 + ], + [ + 7.060456049926043, + 50.92352817712758 + ], + [ + 7.060426172734289, + 50.923374152396704 + ], + [ + 7.060415479906665, + 50.923318307484074 + ], + [ + 7.060390693658413, + 50.923262717643134 + ], + [ + 7.060327590154395, + 50.92313571087381 + ], + [ + 7.060284240137366, + 50.92305717635393 + ], + [ + 7.060248378380601, + 50.922992240576356 + ], + [ + 7.060109462565363, + 50.922812545297234 + ], + [ + 7.059901304238597, + 50.92255859841126 + ], + [ + 7.059823819829461, + 50.922491073018776 + ], + [ + 7.059677558676305, + 50.92236340402932 + ], + [ + 7.059420012735764, + 50.922180613459034 + ], + [ + 7.059351904364776, + 50.92214005016775 + ], + [ + 7.05925098856421, + 50.92208009242429 + ], + [ + 7.059172408076417, + 50.92203340559484 + ], + [ + 7.059136270459797, + 50.92201193939678 + ], + [ + 7.059010565873142, + 50.92194872366567 + ], + [ + 7.058936972191028, + 50.92191169876198 + ], + [ + 7.058776914023963, + 50.921831384719006 + ], + [ + 7.058528796747881, + 50.92175259892477 + ], + [ + 7.058343711726968, + 50.9216937325419 + ], + [ + 7.058099548673731, + 50.92162618894316 + ], + [ + 7.057857870260502, + 50.921573244236136 + ], + [ + 7.057814900570521, + 50.92156384588384 + ], + [ + 7.0576576978979855, + 50.92153017494302 + ], + [ + 7.057471545792108, + 50.92149020940876 + ], + [ + 7.057047961275944, + 50.92141889691595 + ], + [ + 7.056625879611625, + 50.921382537551764 + ], + [ + 7.056575550277638, + 50.92137698512018 + ], + [ + 7.056514984054178, + 50.92137032238387 + ], + [ + 7.056414134172416, + 50.92135919803046 + ], + [ + 7.0563597764131, + 50.92135327714054 + ], + [ + 7.056118510400592, + 50.92132724836526 + ], + [ + 7.056095351314416, + 50.92132575286596 + ], + [ + 7.0559747452522075, + 50.92132059379596 + ], + [ + 7.055942062801362, + 50.92131920137406 + ], + [ + 7.055921846715232, + 50.921318343042266 + ], + [ + 7.0554763880716, + 50.92129947409621 + ], + [ + 7.053405556140844, + 50.92101247918941 + ], + [ + 7.053231969822785, + 50.92098906692735 + ], + [ + 7.0531835266691205, + 50.92098245624964 + ], + [ + 7.052996016432541, + 50.92095665651633 + ], + [ + 7.052645127751659, + 50.92090851479389 + ], + [ + 7.052478947873915, + 50.920885689943084 + ], + [ + 7.052449412274449, + 50.92088152592658 + ], + [ + 7.052340444086498, + 50.920866040050896 + ], + [ + 7.052303216597552, + 50.920860681000434 + ], + [ + 7.051890690210187, + 50.92079770138164 + ], + [ + 7.051385983404747, + 50.9207206199902 + ], + [ + 7.051327637024664, + 50.9207116406596 + ], + [ + 7.051219187813996, + 50.920695057971216 + ], + [ + 7.051067644376779, + 50.92067180363381 + ], + [ + 7.049742019617924, + 50.92046937948451 + ], + [ + 7.049009425122928, + 50.92035747961312 + ], + [ + 7.048983499066058, + 50.92035350635448 + ], + [ + 7.048962237029468, + 50.920350249600475 + ], + [ + 7.048793756698031, + 50.92032447966076 + ], + [ + 7.0487698607814115, + 50.92032041168106 + ], + [ + 7.048723148940375, + 50.920312274874256 + ], + [ + 7.048667828276429, + 50.92030265587097 + ], + [ + 7.048643480079945, + 50.920298413921024 + ], + [ + 7.048614921350146, + 50.92029343154517 + ], + [ + 7.048524082004048, + 50.920277626396064 + ], + [ + 7.048379087230215, + 50.920252446359214 + ], + [ + 7.047824911032898, + 50.92015564819664 + ], + [ + 7.047659916189322, + 50.920126930112275 + ], + [ + 7.047584879975782, + 50.920113869010684 + ], + [ + 7.047394733196432, + 50.92008135900248 + ], + [ + 7.047261982523937, + 50.92005864160756 + ], + [ + 7.046930110276985, + 50.92000185742305 + ], + [ + 7.045705663027959, + 50.91979246501137 + ], + [ + 7.044735314698281, + 50.91962653342133 + ], + [ + 7.044647084400097, + 50.91961144436806 + ], + [ + 7.044602272045435, + 50.919603782010846 + ], + [ + 7.044488355567529, + 50.91958431339926 + ], + [ + 7.04445079034222, + 50.919577892111754 + ], + [ + 7.044344077967498, + 50.91955964038464 + ], + [ + 7.0442643724528216, + 50.919546001552206 + ], + [ + 7.043971894136304, + 50.91949562761791 + ], + [ + 7.043889223008139, + 50.919481393812816 + ], + [ + 7.043725869758244, + 50.91945327144265 + ], + [ + 7.043626650194834, + 50.91943624905983 + ], + [ + 7.043589782517703, + 50.919429926423824 + ], + [ + 7.04304099475924, + 50.91933555117704 + ], + [ + 7.0424166337758844, + 50.9192250959896 + ], + [ + 7.041876523836588, + 50.91912967899918 + ], + [ + 7.0403338166776095, + 50.91885643766483 + ], + [ + 7.040197458725059, + 50.918832301670086 + ], + [ + 7.040102282197641, + 50.9188154556785 + ], + [ + 7.039958438135566, + 50.91879100393619 + ], + [ + 7.039937972933418, + 50.91878750618666 + ], + [ + 7.039794536920369, + 50.91876296396134 + ], + [ + 7.039492447384549, + 50.918711298510736 + ], + [ + 7.0392700181359835, + 50.918673244152714 + ], + [ + 7.039151573817333, + 50.91865297834327 + ], + [ + 7.0366422633960255, + 50.91822377086114 + ], + [ + 7.035269916899227, + 50.91799035384866 + ], + [ + 7.035102088963931, + 50.91796173210494 + ], + [ + 7.035053771667982, + 50.917953482724606 + ], + [ + 7.035004318213126, + 50.91794504961227 + ], + [ + 7.034867523108459, + 50.91792172381759 + ], + [ + 7.034631154805142, + 50.917881280888885 + ], + [ + 7.034575949788279, + 50.917870808107786 + ], + [ + 7.033267860021412, + 50.917620428686234 + ], + [ + 7.033160240612264, + 50.91760155690531 + ], + [ + 7.0330087445960245, + 50.917574989889246 + ], + [ + 7.032968662871716, + 50.9175998053009 + ], + [ + 7.032435826736685, + 50.91793010782025 + ], + [ + 7.03235606150869, + 50.917962816091176 + ], + [ + 7.032016153226112, + 50.9181803967371 + ], + [ + 7.031186734799703, + 50.918711280884025 + ], + [ + 7.031011162256245, + 50.91882366723652 + ], + [ + 7.030687039845902, + 50.91902754220948 + ], + [ + 7.029393595094565, + 50.91984057715421 + ], + [ + 7.029345559042722, + 50.91987080346607 + ], + [ + 7.0290763715437885, + 50.92003543915255 + ], + [ + 7.028948709188521, + 50.92017293421582 + ], + [ + 7.028579408178797, + 50.920407031914166 + ], + [ + 7.028541548042069, + 50.920431013651275 + ], + [ + 7.028145873570653, + 50.92060395159074 + ], + [ + 7.027885190887362, + 50.92075888821217 + ], + [ + 7.0274987233443555, + 50.92099065001575 + ], + [ + 7.027447081060936, + 50.921022112406085 + ], + [ + 7.026623475893876, + 50.92153717261583 + ], + [ + 7.026278247666763, + 50.92175351537857 + ], + [ + 7.026027242534254, + 50.92191294740134 + ], + [ + 7.026017452982628, + 50.921929047875736 + ], + [ + 7.02601065684059, + 50.92195003129397 + ], + [ + 7.025990125714383, + 50.92196199827283 + ], + [ + 7.025376578622458, + 50.92231778792956 + ], + [ + 7.025260856060065, + 50.922383971979684 + ], + [ + 7.025183224509911, + 50.92242825492431 + ], + [ + 7.024956780706754, + 50.922557537771475 + ], + [ + 7.024874901589841, + 50.92260473275652 + ], + [ + 7.024617795091673, + 50.92275513587553 + ], + [ + 7.024467236317924, + 50.92284185673045 + ], + [ + 7.0244291752441095, + 50.92286376609214 + ], + [ + 7.024527856217544, + 50.922888609414564 + ], + [ + 7.024249722927346, + 50.923079047536696 + ], + [ + 7.024246843170496, + 50.92310207935861 + ], + [ + 7.024257926698444, + 50.92313522082621 + ], + [ + 7.02445928066047, + 50.92434060605386 + ], + [ + 7.024527200525759, + 50.924747192020014 + ], + [ + 7.024770172565821, + 50.92575653338735 + ], + [ + 7.024784864384736, + 50.92584029757484 + ], + [ + 7.024813905564487, + 50.925995892689215 + ], + [ + 7.024930455304029, + 50.92622142229373 + ], + [ + 7.0250494716310135, + 50.92645183841038 + ], + [ + 7.02517189423061, + 50.92671323688009 + ], + [ + 7.025467270854689, + 50.927127094785334 + ], + [ + 7.025728195859622, + 50.92743838058701 + ], + [ + 7.02647562870386, + 50.92828254334548 + ], + [ + 7.026749499774451, + 50.92851135300533 + ], + [ + 7.026808224230004, + 50.92849070773502 + ], + [ + 7.027447843739996, + 50.92826583979264 + ], + [ + 7.027562512024099, + 50.92822552502344 + ], + [ + 7.027625185546748, + 50.92830695624223 + ], + [ + 7.027869802813505, + 50.92862778984576 + ], + [ + 7.027916124680639, + 50.9286900380817 + ], + [ + 7.028076162260298, + 50.928897091164394 + ], + [ + 7.028372852803953, + 50.928791113274755 + ], + [ + 7.0284055474576315, + 50.928829273551806 + ], + [ + 7.028477861567793, + 50.92887675941178 + ], + [ + 7.028508268186092, + 50.9288957999804 + ], + [ + 7.0279673035096994, + 50.92912089693845 + ], + [ + 7.0279108762129034, + 50.92913577706609 + ], + [ + 7.027791882942241, + 50.9291903119009 + ], + [ + 7.027755414059105, + 50.9292024524096 + ], + [ + 7.027527254190342, + 50.929278132193254 + ], + [ + 7.027518314791957, + 50.92931138194595 + ], + [ + 7.027892216935368, + 50.92964584893211 + ], + [ + 7.0281847822543515, + 50.92989422462581 + ], + [ + 7.028646756421789, + 50.93023376075592 + ], + [ + 7.028874897135749, + 50.93040114843451 + ], + [ + 7.028951527534648, + 50.93045658263788 + ], + [ + 7.029379718857131, + 50.93074310579249 + ], + [ + 7.029629668991662, + 50.93091016041513 + ], + [ + 7.029955114230271, + 50.931127414307724 + ], + [ + 7.030037054736107, + 50.931166062522365 + ], + [ + 7.0303968538188, + 50.93133575344378 + ], + [ + 7.030553574476678, + 50.93146264732173 + ], + [ + 7.0307412838472425, + 50.93161499787292 + ], + [ + 7.03078508975197, + 50.931652129838604 + ], + [ + 7.030843616440733, + 50.93170275961968 + ], + [ + 7.030856011964118, + 50.931713453564655 + ], + [ + 7.031075286304667, + 50.931899285310486 + ], + [ + 7.031102363074086, + 50.931919194464164 + ], + [ + 7.031174451507574, + 50.93194915056943 + ], + [ + 7.0313090472535595, + 50.931992625175326 + ], + [ + 7.031333309909613, + 50.93200210089819 + ], + [ + 7.031682701887435, + 50.93216687527954 + ], + [ + 7.031891555683922, + 50.93232225247694 + ], + [ + 7.031977271625144, + 50.93238877414643 + ], + [ + 7.031993809540698, + 50.932403740555415 + ], + [ + 7.032177435444781, + 50.93260909165535 + ], + [ + 7.032218958822273, + 50.93265978394849 + ], + [ + 7.032254926253402, + 50.93270369306461 + ], + [ + 7.032342516870535, + 50.93288180649402 + ], + [ + 7.032383182886741, + 50.93296441906916 + ], + [ + 7.032481082977624, + 50.93338308680063 + ], + [ + 7.032504429071239, + 50.933730589037644 + ], + [ + 7.032506539976533, + 50.93376167352913 + ], + [ + 7.032508888744657, + 50.93388049187022 + ], + [ + 7.032507412765952, + 50.93400653603031 + ], + [ + 7.032506419801974, + 50.93403872659424 + ], + [ + 7.032484756618201, + 50.934390133422056 + ], + [ + 7.032454232140689, + 50.93477919044728 + ], + [ + 7.032451075389166, + 50.9347973953275 + ], + [ + 7.032267632063054, + 50.93542250611282 + ], + [ + 7.032101493577632, + 50.93599325456049 + ], + [ + 7.031973472652681, + 50.93636872149884 + ], + [ + 7.031862559460541, + 50.93669242125994 + ], + [ + 7.03186383421337, + 50.936717849914494 + ], + [ + 7.031975560329299, + 50.936816284309955 + ], + [ + 7.031987380849296, + 50.936919647454665 + ], + [ + 7.03202233487101, + 50.93721958253777 + ], + [ + 7.032056440622831, + 50.937513322834214 + ], + [ + 7.032099677406199, + 50.93785318824624 + ], + [ + 7.03212036951875, + 50.93801661143451 + ], + [ + 7.03212191140581, + 50.93804859468317 + ], + [ + 7.032123689717052, + 50.93810872315372 + ], + [ + 7.0322162605702605, + 50.93815187127561 + ], + [ + 7.032511912587469, + 50.938289930400785 + ], + [ + 7.033089738623531, + 50.93855975663845 + ], + [ + 7.033154444330696, + 50.93858997106492 + ], + [ + 7.0332335437163485, + 50.93862558133171 + ], + [ + 7.03330633974056, + 50.93865820377716 + ], + [ + 7.033392708986852, + 50.938562420901164 + ], + [ + 7.033436106963005, + 50.93851169642626 + ], + [ + 7.033525787875901, + 50.93840687392955 + ], + [ + 7.033627673351963, + 50.93828779779739 + ], + [ + 7.033977042870106, + 50.937879728090095 + ], + [ + 7.034148232558967, + 50.93767971982176 + ], + [ + 7.034182239124508, + 50.93764019144683 + ], + [ + 7.034202162547653, + 50.93761723600497 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Ostheim", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "805", + "Population_rel": 0.01286165949781258, + "Population_abs": 13994 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.03212036951875, + 50.93801661143451 + ], + [ + 7.032099677406199, + 50.93785318824624 + ], + [ + 7.032056440622831, + 50.937513322834214 + ], + [ + 7.03202233487101, + 50.93721958253777 + ], + [ + 7.031987380849296, + 50.936919647454665 + ], + [ + 7.031975560329299, + 50.936816284309955 + ], + [ + 7.03186383421337, + 50.936717849914494 + ], + [ + 7.031862559460541, + 50.93669242125994 + ], + [ + 7.031973472652681, + 50.93636872149884 + ], + [ + 7.032101493577632, + 50.93599325456049 + ], + [ + 7.032267632063054, + 50.93542250611282 + ], + [ + 7.032451075389166, + 50.9347973953275 + ], + [ + 7.032454232140689, + 50.93477919044728 + ], + [ + 7.032484756618201, + 50.934390133422056 + ], + [ + 7.032506419801974, + 50.93403872659424 + ], + [ + 7.032507412765952, + 50.93400653603031 + ], + [ + 7.032508888744657, + 50.93388049187022 + ], + [ + 7.032506539976533, + 50.93376167352913 + ], + [ + 7.032504429071239, + 50.933730589037644 + ], + [ + 7.032481082977624, + 50.93338308680063 + ], + [ + 7.032383182886741, + 50.93296441906916 + ], + [ + 7.032342516870535, + 50.93288180649402 + ], + [ + 7.032254926253402, + 50.93270369306461 + ], + [ + 7.032218958822273, + 50.93265978394849 + ], + [ + 7.032177435444781, + 50.93260909165535 + ], + [ + 7.031993809540698, + 50.932403740555415 + ], + [ + 7.031977271625144, + 50.93238877414643 + ], + [ + 7.031891555683922, + 50.93232225247694 + ], + [ + 7.031682701887435, + 50.93216687527954 + ], + [ + 7.031333309909613, + 50.93200210089819 + ], + [ + 7.0313090472535595, + 50.931992625175326 + ], + [ + 7.031174451507574, + 50.93194915056943 + ], + [ + 7.031102363074086, + 50.931919194464164 + ], + [ + 7.031075286304667, + 50.931899285310486 + ], + [ + 7.030856011964118, + 50.931713453564655 + ], + [ + 7.030843616440733, + 50.93170275961968 + ], + [ + 7.03078508975197, + 50.931652129838604 + ], + [ + 7.0307412838472425, + 50.93161499787292 + ], + [ + 7.030553574476678, + 50.93146264732173 + ], + [ + 7.0303968538188, + 50.93133575344378 + ], + [ + 7.030037054736107, + 50.931166062522365 + ], + [ + 7.029955114230271, + 50.931127414307724 + ], + [ + 7.029629668991662, + 50.93091016041513 + ], + [ + 7.029379718857131, + 50.93074310579249 + ], + [ + 7.028951527534648, + 50.93045658263788 + ], + [ + 7.028874897135749, + 50.93040114843451 + ], + [ + 7.028646756421789, + 50.93023376075592 + ], + [ + 7.0281847822543515, + 50.92989422462581 + ], + [ + 7.027892216935368, + 50.92964584893211 + ], + [ + 7.027518314791957, + 50.92931138194595 + ], + [ + 7.027527254190342, + 50.929278132193254 + ], + [ + 7.027755414059105, + 50.9292024524096 + ], + [ + 7.027791882942241, + 50.9291903119009 + ], + [ + 7.0279108762129034, + 50.92913577706609 + ], + [ + 7.0279673035096994, + 50.92912089693845 + ], + [ + 7.028508268186092, + 50.9288957999804 + ], + [ + 7.028477861567793, + 50.92887675941178 + ], + [ + 7.0284055474576315, + 50.928829273551806 + ], + [ + 7.028372852803953, + 50.928791113274755 + ], + [ + 7.028076162260298, + 50.928897091164394 + ], + [ + 7.027916124680639, + 50.9286900380817 + ], + [ + 7.027869802813505, + 50.92862778984576 + ], + [ + 7.027625185546748, + 50.92830695624223 + ], + [ + 7.027562512024099, + 50.92822552502344 + ], + [ + 7.027447843739996, + 50.92826583979264 + ], + [ + 7.026808224230004, + 50.92849070773502 + ], + [ + 7.026749499774451, + 50.92851135300533 + ], + [ + 7.02647562870386, + 50.92828254334548 + ], + [ + 7.025728195859622, + 50.92743838058701 + ], + [ + 7.025467270854689, + 50.927127094785334 + ], + [ + 7.02517189423061, + 50.92671323688009 + ], + [ + 7.0250494716310135, + 50.92645183841038 + ], + [ + 7.024930455304029, + 50.92622142229373 + ], + [ + 7.024813905564487, + 50.925995892689215 + ], + [ + 7.024784864384736, + 50.92584029757484 + ], + [ + 7.024770172565821, + 50.92575653338735 + ], + [ + 7.024527200525759, + 50.924747192020014 + ], + [ + 7.02445928066047, + 50.92434060605386 + ], + [ + 7.024257926698444, + 50.92313522082621 + ], + [ + 7.024246843170496, + 50.92310207935861 + ], + [ + 7.023974571020678, + 50.92324333319054 + ], + [ + 7.023875668196217, + 50.92330178092331 + ], + [ + 7.023763705405372, + 50.92336791473453 + ], + [ + 7.022754943363294, + 50.92396263879093 + ], + [ + 7.022721001036363, + 50.92398281323031 + ], + [ + 7.0227305996829354, + 50.92403128645639 + ], + [ + 7.022737669709846, + 50.92406835059338 + ], + [ + 7.022661721995044, + 50.924074814855366 + ], + [ + 7.022617842980351, + 50.92410203479602 + ], + [ + 7.022445273011028, + 50.924185255777076 + ], + [ + 7.022268532346687, + 50.924292683470966 + ], + [ + 7.022206012311864, + 50.92433069555367 + ], + [ + 7.021686022574465, + 50.92465888907257 + ], + [ + 7.021474194782014, + 50.92479199694269 + ], + [ + 7.0208813748691705, + 50.92516304500466 + ], + [ + 7.020839443634754, + 50.925189317892944 + ], + [ + 7.020332477010601, + 50.9255098882351 + ], + [ + 7.020290164729134, + 50.92553670847851 + ], + [ + 7.02007269018186, + 50.92566705052731 + ], + [ + 7.019320185773244, + 50.92611824117611 + ], + [ + 7.019027930685986, + 50.92629360032848 + ], + [ + 7.018895779105033, + 50.92637293143237 + ], + [ + 7.018626104397821, + 50.92653583698902 + ], + [ + 7.018454974313919, + 50.926640242378674 + ], + [ + 7.017661681977407, + 50.92712358767678 + ], + [ + 7.017623061405495, + 50.927068497342184 + ], + [ + 7.017552995393861, + 50.92697311443387 + ], + [ + 7.01741725218291, + 50.92704908938407 + ], + [ + 7.017192229289036, + 50.92717954973969 + ], + [ + 7.017150204615775, + 50.92720304157055 + ], + [ + 7.016310255857258, + 50.92762417613404 + ], + [ + 7.0162812093359825, + 50.92763314030862 + ], + [ + 7.016190578026528, + 50.92767607309807 + ], + [ + 7.016138646882046, + 50.92770286238642 + ], + [ + 7.016263623656491, + 50.92779643983907 + ], + [ + 7.015422606625833, + 50.92810966850598 + ], + [ + 7.0154471895276345, + 50.92815064810694 + ], + [ + 7.015368907048787, + 50.92817099203876 + ], + [ + 7.015653728698664, + 50.92861427782034 + ], + [ + 7.0157010863839275, + 50.928721521679975 + ], + [ + 7.015881191528499, + 50.92871115372784 + ], + [ + 7.0159370165280714, + 50.92855200008369 + ], + [ + 7.015953722663166, + 50.9285272815089 + ], + [ + 7.016050793512174, + 50.92831290233333 + ], + [ + 7.0160733605902355, + 50.92828756385672 + ], + [ + 7.016218234968016, + 50.928056729059186 + ], + [ + 7.016269708491814, + 50.927999932521516 + ], + [ + 7.016500293699213, + 50.92810352284706 + ], + [ + 7.016318496551425, + 50.92831583304418 + ], + [ + 7.016249956466745, + 50.92847511614286 + ], + [ + 7.0161066153959695, + 50.928897302114265 + ], + [ + 7.016064524217947, + 50.92892725621212 + ], + [ + 7.016048861079799, + 50.92897003481848 + ], + [ + 7.016051249917375, + 50.92902502701219 + ], + [ + 7.016263060775069, + 50.92962991224458 + ], + [ + 7.016273470831403, + 50.92965503501467 + ], + [ + 7.016302369535146, + 50.92972098145696 + ], + [ + 7.016336134423253, + 50.92974266978151 + ], + [ + 7.0163734329657474, + 50.930162276597756 + ], + [ + 7.016616257359677, + 50.9305748709642 + ], + [ + 7.016793837719111, + 50.930951692782195 + ], + [ + 7.016896485534011, + 50.93136691888273 + ], + [ + 7.016943662044597, + 50.93158182817715 + ], + [ + 7.016998388101881, + 50.931925467637186 + ], + [ + 7.017004646855509, + 50.93200182801828 + ], + [ + 7.01701113223486, + 50.93228892383598 + ], + [ + 7.017013780562463, + 50.93243995340233 + ], + [ + 7.017007704381345, + 50.93258757274177 + ], + [ + 7.016994672717494, + 50.93299651830951 + ], + [ + 7.016947087099031, + 50.933173147702014 + ], + [ + 7.016956743640318, + 50.93330770920935 + ], + [ + 7.016958585931773, + 50.93333459301704 + ], + [ + 7.016962132876906, + 50.93340103042715 + ], + [ + 7.016967109828121, + 50.93353696311852 + ], + [ + 7.016963244634941, + 50.93356866952673 + ], + [ + 7.016958733991414, + 50.93361648439075 + ], + [ + 7.016959329906988, + 50.93365480050972 + ], + [ + 7.016980252803819, + 50.93368676252018 + ], + [ + 7.017189906522569, + 50.93373575640497 + ], + [ + 7.01716867444413, + 50.93387463722435 + ], + [ + 7.017116854581603, + 50.93419726691628 + ], + [ + 7.017108046059061, + 50.93425176484831 + ], + [ + 7.017103048112609, + 50.9342910957668 + ], + [ + 7.0170729920926735, + 50.93498549645268 + ], + [ + 7.017070910886308, + 50.93503813093361 + ], + [ + 7.0170591203501775, + 50.93516081074125 + ], + [ + 7.016976105464291, + 50.93585165048694 + ], + [ + 7.017488045563668, + 50.93590263864768 + ], + [ + 7.017557949283598, + 50.9359036531043 + ], + [ + 7.0176103468019875, + 50.93589748735457 + ], + [ + 7.017842830965282, + 50.93587818097953 + ], + [ + 7.018125263794575, + 50.93584485195798 + ], + [ + 7.018411265731798, + 50.935819830064844 + ], + [ + 7.0185489960594625, + 50.93581684276217 + ], + [ + 7.018634188693699, + 50.93583393780271 + ], + [ + 7.018801285464691, + 50.93587005499659 + ], + [ + 7.018886056410477, + 50.9358627517767 + ], + [ + 7.019007319817618, + 50.935852240947995 + ], + [ + 7.019133690111299, + 50.93582709396148 + ], + [ + 7.019206194001172, + 50.93581267249307 + ], + [ + 7.0194768296183305, + 50.935782440719606 + ], + [ + 7.019810090999149, + 50.93574528154428 + ], + [ + 7.0199477110120325, + 50.93572987311855 + ], + [ + 7.0200451909860595, + 50.935718233812096 + ], + [ + 7.0202170216461415, + 50.9356976043692 + ], + [ + 7.020508580424197, + 50.93566361403112 + ], + [ + 7.020714952206028, + 50.935629972886105 + ], + [ + 7.020782887254866, + 50.935584493278334 + ], + [ + 7.020840203462981, + 50.9355643046569 + ], + [ + 7.021355304840311, + 50.93564344104651 + ], + [ + 7.021403756244861, + 50.93565088432987 + ], + [ + 7.021467726471253, + 50.93565999723166 + ], + [ + 7.021333315399425, + 50.93605242642895 + ], + [ + 7.021311787922527, + 50.93610223648651 + ], + [ + 7.021176852612137, + 50.936383007937074 + ], + [ + 7.021116948016407, + 50.93650765422696 + ], + [ + 7.021066218179083, + 50.9366142617649 + ], + [ + 7.020976829088624, + 50.93675500872609 + ], + [ + 7.021062148834159, + 50.936767058666675 + ], + [ + 7.021431854499225, + 50.936858537012824 + ], + [ + 7.021479191492776, + 50.93684086085828 + ], + [ + 7.021978000534618, + 50.936724400353086 + ], + [ + 7.022342505204264, + 50.93663436953068 + ], + [ + 7.022488310163683, + 50.936598254768754 + ], + [ + 7.022616159376488, + 50.93671703540151 + ], + [ + 7.022875204237839, + 50.93695876662212 + ], + [ + 7.023035633383277, + 50.93710835335068 + ], + [ + 7.023213644695808, + 50.937031524514225 + ], + [ + 7.023314472852121, + 50.93698434481698 + ], + [ + 7.023368267443507, + 50.93695924232606 + ], + [ + 7.023413783652705, + 50.93695884292676 + ], + [ + 7.023573560521766, + 50.9371147557181 + ], + [ + 7.023618777365988, + 50.937158946404104 + ], + [ + 7.023644948255259, + 50.93718460599552 + ], + [ + 7.023685625472845, + 50.93722290357723 + ], + [ + 7.0239198674929, + 50.937122414365355 + ], + [ + 7.023981723913596, + 50.93717600438005 + ], + [ + 7.0240173295601505, + 50.93720695808742 + ], + [ + 7.024263416885635, + 50.93712766986501 + ], + [ + 7.024690809971937, + 50.9369667824839 + ], + [ + 7.025128156496326, + 50.936866964527184 + ], + [ + 7.025512040596182, + 50.93682095202992 + ], + [ + 7.025752416229816, + 50.936792590696754 + ], + [ + 7.025945539201271, + 50.93676976768622 + ], + [ + 7.026271399211073, + 50.93673409095077 + ], + [ + 7.0264953303796505, + 50.9367148610579 + ], + [ + 7.026626556529934, + 50.936703973809145 + ], + [ + 7.026689043291293, + 50.93670004038677 + ], + [ + 7.027125976815227, + 50.93667515152572 + ], + [ + 7.027189775260169, + 50.93667153409679 + ], + [ + 7.027240917730843, + 50.93666820730606 + ], + [ + 7.027472475583222, + 50.93665295372474 + ], + [ + 7.027626096062413, + 50.936631209730756 + ], + [ + 7.027706553150003, + 50.93661646318317 + ], + [ + 7.028007922320563, + 50.93656059160838 + ], + [ + 7.028191122143671, + 50.93668779458954 + ], + [ + 7.028263305262172, + 50.936728291946075 + ], + [ + 7.028329245506742, + 50.93676509173725 + ], + [ + 7.02844203550966, + 50.93682114317944 + ], + [ + 7.028533503724171, + 50.93686582345776 + ], + [ + 7.028570557110512, + 50.936879070950425 + ], + [ + 7.029193357393581, + 50.93709988631272 + ], + [ + 7.029442653036312, + 50.937184119652 + ], + [ + 7.029779211595069, + 50.9372978315812 + ], + [ + 7.030229697670327, + 50.937440839003244 + ], + [ + 7.030431537686192, + 50.93750485119283 + ], + [ + 7.030569796593978, + 50.93754866713421 + ], + [ + 7.0306134299681355, + 50.93756599029323 + ], + [ + 7.030795619505026, + 50.93763809472606 + ], + [ + 7.031252552632499, + 50.93781887785578 + ], + [ + 7.031373888858772, + 50.937820779268506 + ], + [ + 7.031468567325165, + 50.937853292527265 + ], + [ + 7.031600605154294, + 50.9379372472694 + ], + [ + 7.031785621729308, + 50.938030179509504 + ], + [ + 7.0318299952922825, + 50.93799733532474 + ], + [ + 7.031928283676189, + 50.93803461276391 + ], + [ + 7.032123689717052, + 50.93810872315372 + ], + [ + 7.03212191140581, + 50.93804859468317 + ], + [ + 7.03212036951875, + 50.93801661143451 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Vingst", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "803", + "Population_rel": 0.01186996801588177, + "Population_abs": 12915 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.033473259598164, + 50.960397239455276 + ], + [ + 7.033557102481874, + 50.95998785031397 + ], + [ + 7.033621755742173, + 50.95967195790251 + ], + [ + 7.033688042191126, + 50.95934657046963 + ], + [ + 7.033695922802707, + 50.959307886579424 + ], + [ + 7.034237791999316, + 50.95791663965993 + ], + [ + 7.034411538779541, + 50.95747052511836 + ], + [ + 7.03454601051314, + 50.95712533070014 + ], + [ + 7.034584037396024, + 50.957043783214104 + ], + [ + 7.03464013993764, + 50.9569261993224 + ], + [ + 7.034737711002073, + 50.95672168463632 + ], + [ + 7.034814052432325, + 50.95656155687628 + ], + [ + 7.034851076915583, + 50.956482954939744 + ], + [ + 7.036112770112055, + 50.95326017666684 + ], + [ + 7.036257137516723, + 50.952891374612484 + ], + [ + 7.036390462585219, + 50.952550832700986 + ], + [ + 7.036405750164085, + 50.95251172276996 + ], + [ + 7.036145639149426, + 50.95246954206211 + ], + [ + 7.036030902783175, + 50.9524509189268 + ], + [ + 7.035401500753315, + 50.9523487516712 + ], + [ + 7.035345239201646, + 50.95233960811636 + ], + [ + 7.0346747218063665, + 50.95222960047669 + ], + [ + 7.034563783919625, + 50.952212125367375 + ], + [ + 7.032186863524447, + 50.951826978856495 + ], + [ + 7.03212291188898, + 50.95181668604267 + ], + [ + 7.0316701719793215, + 50.951764629898335 + ], + [ + 7.031064654882517, + 50.95169546273667 + ], + [ + 7.030991619069913, + 50.95168707205314 + ], + [ + 7.030244740152573, + 50.951568523660335 + ], + [ + 7.02916799804563, + 50.95139705815318 + ], + [ + 7.028619374508683, + 50.95129626356543 + ], + [ + 7.028043552086436, + 50.951165422309344 + ], + [ + 7.027930492138984, + 50.95113966951536 + ], + [ + 7.0276374944759, + 50.95104137832309 + ], + [ + 7.027479947385733, + 50.95101491489359 + ], + [ + 7.027349322681673, + 50.95099195499656 + ], + [ + 7.027314159623655, + 50.950983171228515 + ], + [ + 7.026930732892464, + 50.95088671300027 + ], + [ + 7.02685607719283, + 50.950868611550916 + ], + [ + 7.026325578446396, + 50.950735883596195 + ], + [ + 7.0256777306435145, + 50.950552353853 + ], + [ + 7.025198572266472, + 50.95042545342659 + ], + [ + 7.023585705836699, + 50.949998281401136 + ], + [ + 7.023181728360521, + 50.94987021971211 + ], + [ + 7.022925557444654, + 50.94979046631567 + ], + [ + 7.022633194421292, + 50.94971097445979 + ], + [ + 7.021924066724932, + 50.949532681348735 + ], + [ + 7.021842804770389, + 50.94951243036418 + ], + [ + 7.02001548318355, + 50.94905724229258 + ], + [ + 7.0195784403627695, + 50.94894816669415 + ], + [ + 7.019497939597578, + 50.94892807537095 + ], + [ + 7.019279694192411, + 50.948882806775984 + ], + [ + 7.0189218908696835, + 50.94880881642939 + ], + [ + 7.018225098985124, + 50.94863942125948 + ], + [ + 7.018180551547319, + 50.94862859124029 + ], + [ + 7.0172353704201385, + 50.948398915752676 + ], + [ + 7.016657179569083, + 50.94832220057316 + ], + [ + 7.01643905376228, + 50.94829956577132 + ], + [ + 7.016369210368317, + 50.94833755919962 + ], + [ + 7.016219858177671, + 50.94845796880243 + ], + [ + 7.016072940812352, + 50.948572603374366 + ], + [ + 7.015908873209185, + 50.9486969167042 + ], + [ + 7.015444639608652, + 50.949027989385314 + ], + [ + 7.014966245072074, + 50.94936907137287 + ], + [ + 7.014463436059777, + 50.949745961883885 + ], + [ + 7.0144291112759785, + 50.94977080147632 + ], + [ + 7.01429047758136, + 50.949913318439705 + ], + [ + 7.014139790193798, + 50.95003166922944 + ], + [ + 7.013934963503424, + 50.95023544005386 + ], + [ + 7.013888496226735, + 50.95026802514646 + ], + [ + 7.013620998750293, + 50.95056421055517 + ], + [ + 7.013603831700203, + 50.95054044854645 + ], + [ + 7.0133490737274595, + 50.95087940102354 + ], + [ + 7.012991533336643, + 50.95130203743698 + ], + [ + 7.0127488905303625, + 50.951890967473716 + ], + [ + 7.012419193210786, + 50.95269163190898 + ], + [ + 7.012402437560907, + 50.952727866419295 + ], + [ + 7.01236890107645, + 50.952800389865274 + ], + [ + 7.012346782193853, + 50.95288956792631 + ], + [ + 7.01232134713369, + 50.95294350802568 + ], + [ + 7.012182263143344, + 50.95332141196641 + ], + [ + 7.012163997202086, + 50.95398705095279 + ], + [ + 7.012165946754857, + 50.9541357173697 + ], + [ + 7.01216666816255, + 50.95418200575477 + ], + [ + 7.012167473800246, + 50.95423215926024 + ], + [ + 7.01216981576465, + 50.95437920449585 + ], + [ + 7.012142436478751, + 50.95442259063632 + ], + [ + 7.012248618845292, + 50.95490107088447 + ], + [ + 7.012243506738856, + 50.95494084834943 + ], + [ + 7.012218551524717, + 50.95496920056466 + ], + [ + 7.012185390966122, + 50.954986792432344 + ], + [ + 7.012234161437212, + 50.95507955080723 + ], + [ + 7.012279470187197, + 50.95508066125735 + ], + [ + 7.012328606916898, + 50.95510171379758 + ], + [ + 7.012431690704572, + 50.95530198086098 + ], + [ + 7.012488678509364, + 50.955422992359445 + ], + [ + 7.012500985857507, + 50.955517720968935 + ], + [ + 7.012720042881107, + 50.955767340620625 + ], + [ + 7.012877481868158, + 50.95594531163777 + ], + [ + 7.012997763485598, + 50.9560605783826 + ], + [ + 7.013010649837438, + 50.956093965485074 + ], + [ + 7.012995616311989, + 50.956127864036404 + ], + [ + 7.01243048682311, + 50.95653017527772 + ], + [ + 7.012573493087246, + 50.95665954376033 + ], + [ + 7.0126151676774455, + 50.95667944925855 + ], + [ + 7.01304039861131, + 50.95702649040592 + ], + [ + 7.013103950772911, + 50.95708490483685 + ], + [ + 7.013215296121602, + 50.957178505463695 + ], + [ + 7.0134527527496155, + 50.95743596531539 + ], + [ + 7.013577978237277, + 50.957585179418665 + ], + [ + 7.013685123304738, + 50.957740752799694 + ], + [ + 7.013731260414655, + 50.95780714298084 + ], + [ + 7.014025682511835, + 50.95820955406361 + ], + [ + 7.014142797924997, + 50.95836531007402 + ], + [ + 7.014174354329701, + 50.95840261114819 + ], + [ + 7.014264289342145, + 50.9585242908683 + ], + [ + 7.014577659355007, + 50.958948263977234 + ], + [ + 7.014910416363832, + 50.95939789288597 + ], + [ + 7.015241777181974, + 50.95984186970293 + ], + [ + 7.015329876039212, + 50.95981539423772 + ], + [ + 7.015416673137365, + 50.95991199297853 + ], + [ + 7.015469352482449, + 50.95989310679829 + ], + [ + 7.015855027217532, + 50.96032744008108 + ], + [ + 7.015982699708538, + 50.9602945963691 + ], + [ + 7.016033481566882, + 50.96028004142033 + ], + [ + 7.016121887741308, + 50.96025455088892 + ], + [ + 7.016569010034419, + 50.96012588503887 + ], + [ + 7.016718821437567, + 50.960085452714786 + ], + [ + 7.016952771490454, + 50.960537310303415 + ], + [ + 7.017175350787054, + 50.96099805157573 + ], + [ + 7.017353189673264, + 50.9613958864042 + ], + [ + 7.017412556269687, + 50.9615286894871 + ], + [ + 7.017376125717456, + 50.961561641551036 + ], + [ + 7.017437831663276, + 50.96167563001379 + ], + [ + 7.017515956033619, + 50.96183883895418 + ], + [ + 7.017863330879413, + 50.96256282691783 + ], + [ + 7.018026848286582, + 50.96286801831101 + ], + [ + 7.018222062292424, + 50.96328615206242 + ], + [ + 7.018428957625843, + 50.96369254819489 + ], + [ + 7.0185718846400285, + 50.96397266660217 + ], + [ + 7.018622981754294, + 50.964072604302395 + ], + [ + 7.018645037003014, + 50.964115741635844 + ], + [ + 7.018708935634949, + 50.96423153200889 + ], + [ + 7.018868065401088, + 50.9644712358207 + ], + [ + 7.019383407635749, + 50.965018680085045 + ], + [ + 7.019727208039715, + 50.96529892956725 + ], + [ + 7.02004360777512, + 50.96561483640308 + ], + [ + 7.020079477461526, + 50.96564715268854 + ], + [ + 7.020330661885046, + 50.96591661491229 + ], + [ + 7.0205579735042, + 50.966200936800504 + ], + [ + 7.02069053382769, + 50.96640338638996 + ], + [ + 7.020897813368934, + 50.96679314779398 + ], + [ + 7.0209515504293485, + 50.966887155544 + ], + [ + 7.02101772688899, + 50.9670029885522 + ], + [ + 7.021113803996938, + 50.96717105618416 + ], + [ + 7.021169198126804, + 50.96726262314836 + ], + [ + 7.021180884757448, + 50.96729569031864 + ], + [ + 7.021267328427318, + 50.967530092742 + ], + [ + 7.021319158349131, + 50.96771284435696 + ], + [ + 7.021156559173946, + 50.96875010521585 + ], + [ + 7.021039000024717, + 50.969024227940686 + ], + [ + 7.020901439727313, + 50.969256277390365 + ], + [ + 7.020299784577499, + 50.97023624893616 + ], + [ + 7.020024219521407, + 50.97060937748743 + ], + [ + 7.019879418047434, + 50.970855780929504 + ], + [ + 7.0198048727173, + 50.97107927715371 + ], + [ + 7.0198298650496, + 50.97115265209364 + ], + [ + 7.019880495006482, + 50.97130128177725 + ], + [ + 7.020007956415171, + 50.97147842545411 + ], + [ + 7.020300563740351, + 50.97180451762617 + ], + [ + 7.020531595823193, + 50.9720363990911 + ], + [ + 7.0208035404460745, + 50.97225102221494 + ], + [ + 7.0211137681406885, + 50.97243240900138 + ], + [ + 7.021764579131568, + 50.97274412833356 + ], + [ + 7.022244304570211, + 50.972895892114494 + ], + [ + 7.0226349625149, + 50.97299836332941 + ], + [ + 7.0231948219518765, + 50.973107413052865 + ], + [ + 7.023715520456226, + 50.97322737751344 + ], + [ + 7.02518990365389, + 50.97348204261598 + ], + [ + 7.026960870760784, + 50.97377489619764 + ], + [ + 7.02801134230352, + 50.97397572903115 + ], + [ + 7.0282014762538205, + 50.97401549085281 + ], + [ + 7.028223751163604, + 50.973964511508534 + ], + [ + 7.028257904052034, + 50.9738863470961 + ], + [ + 7.02827756330178, + 50.97384135740677 + ], + [ + 7.029007708179872, + 50.97217031924611 + ], + [ + 7.029033396764188, + 50.972094889692904 + ], + [ + 7.029109529103793, + 50.9717660883123 + ], + [ + 7.0295008851198775, + 50.970715468155795 + ], + [ + 7.029552313998487, + 50.97058423740888 + ], + [ + 7.029732718296709, + 50.97011733228766 + ], + [ + 7.030144859312459, + 50.969076607337904 + ], + [ + 7.0309737291465755, + 50.966969111815935 + ], + [ + 7.031045694590731, + 50.966786084234926 + ], + [ + 7.031065920096471, + 50.96673029324647 + ], + [ + 7.031087841287674, + 50.96666983436556 + ], + [ + 7.031097354391027, + 50.96664379089093 + ], + [ + 7.03112695537811, + 50.96656214206249 + ], + [ + 7.031195364134807, + 50.96638491826946 + ], + [ + 7.031658319328533, + 50.96518911270141 + ], + [ + 7.0317374877621255, + 50.96498676453272 + ], + [ + 7.031814039917506, + 50.96479093577144 + ], + [ + 7.031966311784053, + 50.96440143782571 + ], + [ + 7.032127534468578, + 50.96398920349116 + ], + [ + 7.0322389397536265, + 50.96370424569824 + ], + [ + 7.032277797688576, + 50.9636026904364 + ], + [ + 7.032303887683933, + 50.963534770288874 + ], + [ + 7.03234884315468, + 50.963417689495714 + ], + [ + 7.032454489925135, + 50.963143363869335 + ], + [ + 7.032471287424491, + 50.963098582444644 + ], + [ + 7.032547349216336, + 50.96291336461996 + ], + [ + 7.0326635482438125, + 50.96262760490341 + ], + [ + 7.032710305965975, + 50.96250624997095 + ], + [ + 7.032725368406276, + 50.96246682736987 + ], + [ + 7.032844058653582, + 50.96215113540382 + ], + [ + 7.033078619711199, + 50.96152714404338 + ], + [ + 7.033103740657534, + 50.96146022726456 + ], + [ + 7.033436431357068, + 50.960577050706426 + ], + [ + 7.033453278559345, + 50.96049479432355 + ], + [ + 7.033473259598164, + 50.960397239455276 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Buchheim", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "903", + "Population_rel": 0.011759677953016433, + "Population_abs": 12795 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.026320275186254, + 50.99743300448358 + ], + [ + 7.026296651867899, + 50.99740168073988 + ], + [ + 7.0262171667500315, + 50.997296861485715 + ], + [ + 7.026201878713379, + 50.99727664089916 + ], + [ + 7.026169827044766, + 50.997234231262226 + ], + [ + 7.026143058449448, + 50.99719881170079 + ], + [ + 7.0261438580500295, + 50.99710693480524 + ], + [ + 7.026168749678648, + 50.99705907239661 + ], + [ + 7.026197868628809, + 50.99702302528168 + ], + [ + 7.0262377840607355, + 50.99699203425771 + ], + [ + 7.02645463085827, + 50.99682331105145 + ], + [ + 7.0264822834330865, + 50.99680179434563 + ], + [ + 7.026496728686203, + 50.99679055539836 + ], + [ + 7.026747544478442, + 50.996595260237974 + ], + [ + 7.026936884398726, + 50.9964479681381 + ], + [ + 7.027083189607472, + 50.99631301018409 + ], + [ + 7.027222996474354, + 50.99616112063325 + ], + [ + 7.027290342030489, + 50.996072812244094 + ], + [ + 7.027313945322029, + 50.996035189541395 + ], + [ + 7.027075626465026, + 50.99595808899746 + ], + [ + 7.026905186813273, + 50.9959027777951 + ], + [ + 7.0269671687293505, + 50.99582618308594 + ], + [ + 7.027225297038857, + 50.99549315908114 + ], + [ + 7.027131191108397, + 50.99545055856608 + ], + [ + 7.027531519288897, + 50.99500614605334 + ], + [ + 7.027571756438217, + 50.994964716631145 + ], + [ + 7.0273414177375955, + 50.99487222479222 + ], + [ + 7.027320693143718, + 50.9948609744781 + ], + [ + 7.027304634946894, + 50.99484715885913 + ], + [ + 7.027293683415717, + 50.99482842814833 + ], + [ + 7.027292149984185, + 50.99481283700303 + ], + [ + 7.027295284666272, + 50.99479756303855 + ], + [ + 7.027305775707072, + 50.99478205808366 + ], + [ + 7.027396039087385, + 50.994690867555384 + ], + [ + 7.027442163429661, + 50.99464466307582 + ], + [ + 7.027458508467113, + 50.99462822541377 + ], + [ + 7.027473336511671, + 50.99461462569388 + ], + [ + 7.027490400803774, + 50.994602129484385 + ], + [ + 7.027522425140154, + 50.9945826991427 + ], + [ + 7.027553920876167, + 50.994568037271385 + ], + [ + 7.027585136523158, + 50.99455698879127 + ], + [ + 7.027619779096579, + 50.99454783377457 + ], + [ + 7.027644825439528, + 50.99454296672365 + ], + [ + 7.02768840657963, + 50.9945335381446 + ], + [ + 7.0277189183174595, + 50.994523023653684 + ], + [ + 7.027761601972758, + 50.994505049450524 + ], + [ + 7.027779929630225, + 50.994496734978625 + ], + [ + 7.0278899310600496, + 50.9943884990342 + ], + [ + 7.02795262111786, + 50.994326710254185 + ], + [ + 7.028014128305615, + 50.99426784237902 + ], + [ + 7.028053620898805, + 50.994226536923215 + ], + [ + 7.028185282766819, + 50.99419891283234 + ], + [ + 7.028223590392437, + 50.994158593698366 + ], + [ + 7.02825696596193, + 50.99412942790218 + ], + [ + 7.02833034251871, + 50.994065409953485 + ], + [ + 7.028328148164476, + 50.994030640478826 + ], + [ + 7.02832353177487, + 50.99395732846227 + ], + [ + 7.028318381354558, + 50.9938206024651 + ], + [ + 7.02832975748147, + 50.99380958668359 + ], + [ + 7.028348540066831, + 50.99379180863133 + ], + [ + 7.028383304039214, + 50.99375879358953 + ], + [ + 7.028439348382019, + 50.99370467902683 + ], + [ + 7.028505773104905, + 50.9936404419833 + ], + [ + 7.028896364896645, + 50.993282644332574 + ], + [ + 7.029041023195156, + 50.993337787405245 + ], + [ + 7.029307464596206, + 50.99308387743339 + ], + [ + 7.029535927695128, + 50.993175450628165 + ], + [ + 7.02958460805456, + 50.99315544635689 + ], + [ + 7.029657497117419, + 50.99311836511813 + ], + [ + 7.0297393448292205, + 50.99303779976775 + ], + [ + 7.029805703371838, + 50.992969373451885 + ], + [ + 7.029713589808697, + 50.9929321499036 + ], + [ + 7.029684253669211, + 50.992920195318135 + ], + [ + 7.029692496177098, + 50.99290815432879 + ], + [ + 7.029671645165965, + 50.992852526914724 + ], + [ + 7.029677681316424, + 50.99282569108513 + ], + [ + 7.029584033964208, + 50.99278767889664 + ], + [ + 7.0296797135794336, + 50.99268930127345 + ], + [ + 7.029816699092279, + 50.9925475705937 + ], + [ + 7.02982924088409, + 50.99253354528387 + ], + [ + 7.02977672859362, + 50.99251245255363 + ], + [ + 7.029676175191555, + 50.99247206922856 + ], + [ + 7.029557655417554, + 50.99242447199438 + ], + [ + 7.029628474603273, + 50.9923501384859 + ], + [ + 7.029708113449211, + 50.992231121471484 + ], + [ + 7.029740769398939, + 50.99218228487698 + ], + [ + 7.029818322410458, + 50.99206633899213 + ], + [ + 7.029880498722219, + 50.991973543135586 + ], + [ + 7.02991136674578, + 50.99192529149532 + ], + [ + 7.029955260376166, + 50.99185653019579 + ], + [ + 7.029963576369553, + 50.99184288236849 + ], + [ + 7.03000785334133, + 50.991768060424505 + ], + [ + 7.0300642914617635, + 50.99176339771626 + ], + [ + 7.030093723139083, + 50.99176090018844 + ], + [ + 7.030116837544658, + 50.99175887528597 + ], + [ + 7.030148746842605, + 50.991756053495294 + ], + [ + 7.030361707327343, + 50.99173570164127 + ], + [ + 7.030415296115188, + 50.99173165893417 + ], + [ + 7.0307541811127034, + 50.99170276267378 + ], + [ + 7.031463143816203, + 50.99245017113925 + ], + [ + 7.03147842792848, + 50.99246366645897 + ], + [ + 7.0314980476726925, + 50.99248115517056 + ], + [ + 7.031849783831848, + 50.99279338048489 + ], + [ + 7.032802126585806, + 50.993402701825815 + ], + [ + 7.033415821113441, + 50.99361820135563 + ], + [ + 7.033513933330872, + 50.99365585302465 + ], + [ + 7.033866084935486, + 50.9938376061386 + ], + [ + 7.034211041174474, + 50.994012915451734 + ], + [ + 7.034414383835274, + 50.99410515788871 + ], + [ + 7.034446267236086, + 50.99412024704298 + ], + [ + 7.034470933669874, + 50.99413210384061 + ], + [ + 7.034546998408791, + 50.99417012734154 + ], + [ + 7.034940137485127, + 50.99434283225441 + ], + [ + 7.035149147525121, + 50.994453704564485 + ], + [ + 7.035175419336289, + 50.99446784741254 + ], + [ + 7.035191221507576, + 50.994476575344216 + ], + [ + 7.0355866911165785, + 50.994694871646516 + ], + [ + 7.035929911384857, + 50.99490271511437 + ], + [ + 7.036002030931797, + 50.994947758259606 + ], + [ + 7.036053172231727, + 50.994990480787955 + ], + [ + 7.036118967117084, + 50.99504477534476 + ], + [ + 7.036168351445246, + 50.99508753123149 + ], + [ + 7.036189557014449, + 50.99510590558509 + ], + [ + 7.036338199656374, + 50.99522414356207 + ], + [ + 7.0365124765029785, + 50.99536768321559 + ], + [ + 7.036559314405916, + 50.995411224430484 + ], + [ + 7.036670434246316, + 50.995513974610326 + ], + [ + 7.036951375917511, + 50.995783943559864 + ], + [ + 7.036969992942393, + 50.99580112757306 + ], + [ + 7.036998349560045, + 50.99582712443055 + ], + [ + 7.037083903642924, + 50.995914480938616 + ], + [ + 7.037343570577694, + 50.99617773375547 + ], + [ + 7.037366123607811, + 50.99620270035446 + ], + [ + 7.037406727286734, + 50.99624429905758 + ], + [ + 7.037454483245271, + 50.99629321101269 + ], + [ + 7.037623456093871, + 50.99628883294127 + ], + [ + 7.037664324151859, + 50.996288199360094 + ], + [ + 7.037804029012659, + 50.99624741782153 + ], + [ + 7.037828323423525, + 50.99623891872933 + ], + [ + 7.03806113857579, + 50.99613922552214 + ], + [ + 7.038383012244094, + 50.99597707244719 + ], + [ + 7.038449360169058, + 50.99594367118198 + ], + [ + 7.038572605176409, + 50.9958492658551 + ], + [ + 7.0398784078564525, + 50.994848460312824 + ], + [ + 7.039961887087257, + 50.99485175989458 + ], + [ + 7.040314277674154, + 50.99498166273937 + ], + [ + 7.040445556557811, + 50.9950301141476 + ], + [ + 7.040537916067668, + 50.995019851574526 + ], + [ + 7.040726073899889, + 50.99470103302218 + ], + [ + 7.04130583629737, + 50.994748916679946 + ], + [ + 7.041885055325496, + 50.99479704016133 + ], + [ + 7.0426823331298705, + 50.994863091020356 + ], + [ + 7.042825143671212, + 50.99501283539157 + ], + [ + 7.042854676832329, + 50.99500223401122 + ], + [ + 7.042885238154605, + 50.9949929719113 + ], + [ + 7.042916532003092, + 50.99498469158804 + ], + [ + 7.042948713367076, + 50.99497784172027 + ], + [ + 7.04298149329007, + 50.994972244788315 + ], + [ + 7.043014725832961, + 50.99496781290703 + ], + [ + 7.043048416290425, + 50.9949647251373 + ], + [ + 7.0430821388492655, + 50.99496307597139 + ], + [ + 7.043067453962313, + 50.99478467940536 + ], + [ + 7.043463835137682, + 50.99440826176576 + ], + [ + 7.043673879476611, + 50.99420888940128 + ], + [ + 7.044195851301081, + 50.994027671757834 + ], + [ + 7.044244741891263, + 50.993788029668615 + ], + [ + 7.044180280307614, + 50.993175536824616 + ], + [ + 7.04420034567923, + 50.993155670539416 + ], + [ + 7.044221666250801, + 50.99313462462594 + ], + [ + 7.044421626938428, + 50.99305112462241 + ], + [ + 7.044692566752388, + 50.99293803567808 + ], + [ + 7.04475723941542, + 50.99291098287131 + ], + [ + 7.044824358008953, + 50.9928826956852 + ], + [ + 7.044867707559739, + 50.99286312645645 + ], + [ + 7.044938475432846, + 50.9928312497973 + ], + [ + 7.0449927286581975, + 50.99280671691757 + ], + [ + 7.0449016993519455, + 50.99272033040719 + ], + [ + 7.044865671479645, + 50.9926861388943 + ], + [ + 7.045062272944334, + 50.992601013085824 + ], + [ + 7.045208588048546, + 50.99253771362314 + ], + [ + 7.044917269398899, + 50.99242705720136 + ], + [ + 7.044887329802545, + 50.992415678240086 + ], + [ + 7.0449835491282355, + 50.99237771716575 + ], + [ + 7.045281588193421, + 50.99248959481633 + ], + [ + 7.045330137709274, + 50.99250758876092 + ], + [ + 7.045466872344008, + 50.992558052290576 + ], + [ + 7.04562960518576, + 50.99261817095742 + ], + [ + 7.045810743085069, + 50.99263524644245 + ], + [ + 7.045997450686592, + 50.99265299042358 + ], + [ + 7.0462609520612105, + 50.99267786644464 + ], + [ + 7.047108687115012, + 50.992763933569265 + ], + [ + 7.047260947213243, + 50.99277632120257 + ], + [ + 7.047323592858104, + 50.992781422056325 + ], + [ + 7.047392658155279, + 50.99278700524107 + ], + [ + 7.047537500724462, + 50.992223424970966 + ], + [ + 7.047756065723986, + 50.99134123232085 + ], + [ + 7.047835634283831, + 50.991035331330295 + ], + [ + 7.047837204317725, + 50.99102929499275 + ], + [ + 7.047838780084956, + 50.99102325785167 + ], + [ + 7.048007921804914, + 50.9903755882624 + ], + [ + 7.048051486541964, + 50.99018507390982 + ], + [ + 7.048226110750532, + 50.98948377864233 + ], + [ + 7.048410943076566, + 50.98874274906991 + ], + [ + 7.048516293068962, + 50.988323710833 + ], + [ + 7.048522836762565, + 50.98829812187518 + ], + [ + 7.0486547231811345, + 50.987773850352845 + ], + [ + 7.048693512493622, + 50.98764882284601 + ], + [ + 7.048743858023065, + 50.98748661731371 + ], + [ + 7.048761476447859, + 50.98742985900016 + ], + [ + 7.048867275655442, + 50.98721424420841 + ], + [ + 7.0488799730042855, + 50.98718291579776 + ], + [ + 7.048889932827436, + 50.9871579477895 + ], + [ + 7.048953144702146, + 50.98717152384863 + ], + [ + 7.049015874561607, + 50.987185042355954 + ], + [ + 7.049235740362216, + 50.98674160120837 + ], + [ + 7.04940097414188, + 50.98649659565218 + ], + [ + 7.049425652488369, + 50.98645412457144 + ], + [ + 7.0494024686493315, + 50.98642458368927 + ], + [ + 7.0493900224276045, + 50.98640877910295 + ], + [ + 7.049362709754423, + 50.98637409685907 + ], + [ + 7.0493539581066225, + 50.98636298568295 + ], + [ + 7.049303656532458, + 50.98629880715372 + ], + [ + 7.04940697664674, + 50.98614264131326 + ], + [ + 7.0494070774716615, + 50.98614251348949 + ], + [ + 7.049407419100825, + 50.986141977781 + ], + [ + 7.049408858867261, + 50.98613985505707 + ], + [ + 7.049408890878495, + 50.98613980522761 + ], + [ + 7.0494094674795225, + 50.98613896676207 + ], + [ + 7.049411920537765, + 50.98613530956709 + ], + [ + 7.049532844814886, + 50.9859528183984 + ], + [ + 7.0495329300519085, + 50.98595268851549 + ], + [ + 7.0500540656507065, + 50.98524235929209 + ], + [ + 7.050054815823731, + 50.98524135644064 + ], + [ + 7.0500549187090265, + 50.985241213361604 + ], + [ + 7.050055539953285, + 50.98524036304729 + ], + [ + 7.050056998781816, + 50.98523836204728 + ], + [ + 7.050177977804305, + 50.98507331601229 + ], + [ + 7.050231805136296, + 50.984997424668514 + ], + [ + 7.050314189124382, + 50.98488122948432 + ], + [ + 7.050335582658117, + 50.98485110824179 + ], + [ + 7.050335782503917, + 50.98485082738046 + ], + [ + 7.050335941533802, + 50.98485060249741 + ], + [ + 7.050341163362569, + 50.984843193510486 + ], + [ + 7.050361071648254, + 50.9848152275157 + ], + [ + 7.050374871686012, + 50.984794300460564 + ], + [ + 7.050379700609967, + 50.98478701891714 + ], + [ + 7.05040236900013, + 50.98475272163269 + ], + [ + 7.050469891492138, + 50.98465029295993 + ], + [ + 7.051405614445285, + 50.98326779563532 + ], + [ + 7.051493767040068, + 50.983137545345954 + ], + [ + 7.051577973967992, + 50.98301416772149 + ], + [ + 7.052040054671683, + 50.98233632033446 + ], + [ + 7.052081645519806, + 50.982273739611195 + ], + [ + 7.052510035859605, + 50.981626781718454 + ], + [ + 7.052666067998219, + 50.98141088957294 + ], + [ + 7.052866995056909, + 50.981133824847625 + ], + [ + 7.053046465908935, + 50.98090271101294 + ], + [ + 7.053161917388549, + 50.980754048721344 + ], + [ + 7.053398884264389, + 50.98044889432105 + ], + [ + 7.053423542566665, + 50.980417088473345 + ], + [ + 7.053557276638146, + 50.9802152743727 + ], + [ + 7.053841823148064, + 50.97978588845945 + ], + [ + 7.05410618820776, + 50.979386624199975 + ], + [ + 7.054108190133965, + 50.979299768560864 + ], + [ + 7.054108198009704, + 50.97929940984734 + ], + [ + 7.054108199404475, + 50.97929934241855 + ], + [ + 7.05410820012281, + 50.97929929116698 + ], + [ + 7.054108202887793, + 50.979299054681306 + ], + [ + 7.054109036097763, + 50.979261376374566 + ], + [ + 7.054105770352554, + 50.97921457230728 + ], + [ + 7.054105717297166, + 50.9792137287226 + ], + [ + 7.05410566131063, + 50.979212955239134 + ], + [ + 7.054103195260783, + 50.97917908740563 + ], + [ + 7.054093068725922, + 50.97911544450783 + ], + [ + 7.054093043981816, + 50.979115286707476 + ], + [ + 7.054093012424414, + 50.979115087422976 + ], + [ + 7.054092957358664, + 50.9791147348555 + ], + [ + 7.054081092441055, + 50.979039413573624 + ], + [ + 7.054078102160287, + 50.97895011122265 + ], + [ + 7.054078068018854, + 50.978945203743585 + ], + [ + 7.054078035265714, + 50.97893675370717 + ], + [ + 7.054077934816682, + 50.978910944887545 + ], + [ + 7.054077931777682, + 50.97891009763946 + ], + [ + 7.054077928033369, + 50.97890919911604 + ], + [ + 7.054077927867255, + 50.978909032731615 + ], + [ + 7.054077686204482, + 50.97890769135574 + ], + [ + 7.0540772883497285, + 50.97890548578989 + ], + [ + 7.054076645049873, + 50.978901927093496 + ], + [ + 7.0540763037637895, + 50.97890003814577 + ], + [ + 7.05407589898316, + 50.978897793792015 + ], + [ + 7.054075739347019, + 50.97889690975871 + ], + [ + 7.0540755704261215, + 50.97889597520655 + ], + [ + 7.05407542475472, + 50.97889516605286 + ], + [ + 7.054075103048538, + 50.97889338805273 + ], + [ + 7.053989866023739, + 50.97873630815756 + ], + [ + 7.053941575293291, + 50.97864731482391 + ], + [ + 7.053941503627055, + 50.978647291145585 + ], + [ + 7.053940965329018, + 50.97864708161752 + ], + [ + 7.053940879614274, + 50.9786470532083 + ], + [ + 7.05394078857633, + 50.97864704989244 + ], + [ + 7.053923798865564, + 50.97864131483642 + ], + [ + 7.053912416422537, + 50.97863748993206 + ], + [ + 7.053887998961055, + 50.97862892041367 + ], + [ + 7.053757556850626, + 50.97858374355656 + ], + [ + 7.053757290079861, + 50.97858365007373 + ], + [ + 7.053757187056158, + 50.97858362677205 + ], + [ + 7.053756553319865, + 50.97858355325467 + ], + [ + 7.053756458386985, + 50.97858354088012 + ], + [ + 7.053576035850701, + 50.97856184142207 + ], + [ + 7.053136768975868, + 50.97850902472523 + ], + [ + 7.052752736729937, + 50.978462828472225 + ], + [ + 7.052342325076327, + 50.97841347401307 + ], + [ + 7.052342221602398, + 50.97841346149493 + ], + [ + 7.052197208627496, + 50.97839596860297 + ], + [ + 7.052197075558251, + 50.978395948396184 + ], + [ + 7.052088995312064, + 50.97837605853853 + ], + [ + 7.052088896334885, + 50.978376040699004 + ], + [ + 7.051859527586844, + 50.97833355809634 + ], + [ + 7.051859201436779, + 50.97833348790129 + ], + [ + 7.051792080798794, + 50.97831724087603 + ], + [ + 7.050481343243667, + 50.97799861199516 + ], + [ + 7.050434020449402, + 50.977991026377985 + ], + [ + 7.049976698768322, + 50.97791861310653 + ], + [ + 7.048499561992476, + 50.977644975046125 + ], + [ + 7.047521845863353, + 50.97746533556085 + ], + [ + 7.047199031159918, + 50.977406270043616 + ], + [ + 7.046193996172256, + 50.97724090125385 + ], + [ + 7.045802752961495, + 50.97716992786202 + ], + [ + 7.045802522652141, + 50.977169882637206 + ], + [ + 7.04553833319991, + 50.97711480373245 + ], + [ + 7.045529319912612, + 50.97708332091768 + ], + [ + 7.044795983890696, + 50.97694071183802 + ], + [ + 7.044132831680033, + 50.97682480744438 + ], + [ + 7.042937426435757, + 50.976625496854645 + ], + [ + 7.042593087337775, + 50.97656617380181 + ], + [ + 7.0422950969601334, + 50.97650774458831 + ], + [ + 7.042134899858765, + 50.976478413379056 + ], + [ + 7.042123104153643, + 50.97647635392811 + ], + [ + 7.042114322068867, + 50.97647482076646 + ], + [ + 7.041999098725832, + 50.976454702814095 + ], + [ + 7.0402256562319465, + 50.97613482513068 + ], + [ + 7.040107332500485, + 50.97611347330365 + ], + [ + 7.039981096310878, + 50.976090714150324 + ], + [ + 7.039978682362776, + 50.97609035975504 + ], + [ + 7.039977747700518, + 50.976090228049095 + ], + [ + 7.03939598085059, + 50.97600250227631 + ], + [ + 7.03881820999194, + 50.975880645142055 + ], + [ + 7.03650624465362, + 50.97546662753366 + ], + [ + 7.0358315291513085, + 50.97534683885248 + ], + [ + 7.035236170586987, + 50.97522711970018 + ], + [ + 7.034867522343055, + 50.9751596841457 + ], + [ + 7.034353424862487, + 50.97507117062443 + ], + [ + 7.032603345756262, + 50.974802575315636 + ], + [ + 7.032330895053568, + 50.974760751935776 + ], + [ + 7.032313143539979, + 50.974758036221544 + ], + [ + 7.032312043157809, + 50.974757849498324 + ], + [ + 7.032212973859072, + 50.97475878551935 + ], + [ + 7.032210864639832, + 50.97475880753484 + ], + [ + 7.032210652309602, + 50.97475880935292 + ], + [ + 7.032210317367954, + 50.97475881360161 + ], + [ + 7.032208755382606, + 50.974758830449034 + ], + [ + 7.0321232801660045, + 50.97475976883616 + ], + [ + 7.0320316898099815, + 50.974744123267484 + ], + [ + 7.031940585291704, + 50.974728510997 + ], + [ + 7.031522322191988, + 50.97465670579702 + ], + [ + 7.031122551523091, + 50.97458787480633 + ], + [ + 7.03005432264515, + 50.974404570790355 + ], + [ + 7.0287511345267175, + 50.97418056612982 + ], + [ + 7.02875742299305, + 50.97415064702606 + ], + [ + 7.02876173031729, + 50.974130137797964 + ], + [ + 7.028765248471653, + 50.97411302563515 + ], + [ + 7.028358807310322, + 50.97404267220536 + ], + [ + 7.028204035726123, + 50.97401583535912 + ], + [ + 7.028203114104919, + 50.974015700181155 + ], + [ + 7.0282030698163345, + 50.97401577048306 + ], + [ + 7.027732525424696, + 50.97477857246604 + ], + [ + 7.0273847063227874, + 50.97522462762505 + ], + [ + 7.027022686579889, + 50.97565336740097 + ], + [ + 7.026957415985122, + 50.97572721215694 + ], + [ + 7.026512591430463, + 50.97623110237332 + ], + [ + 7.026357066127287, + 50.976373065467534 + ], + [ + 7.025811346057404, + 50.97687119337136 + ], + [ + 7.025541088898798, + 50.97709074999244 + ], + [ + 7.025026267840942, + 50.9774426196506 + ], + [ + 7.023819274182415, + 50.97823474258106 + ], + [ + 7.02319519214392, + 50.97863107060769 + ], + [ + 7.0216459838405365, + 50.97961234176833 + ], + [ + 7.02164117259613, + 50.97961539454141 + ], + [ + 7.021636381348516, + 50.979618412577864 + ], + [ + 7.021518023848644, + 50.97969277593347 + ], + [ + 7.020993124959708, + 50.98001645736393 + ], + [ + 7.02045402561606, + 50.98034865194655 + ], + [ + 7.0186100000952445, + 50.98158056092299 + ], + [ + 7.018054070134196, + 50.98199036367946 + ], + [ + 7.017811181099366, + 50.982169406471854 + ], + [ + 7.017337155617503, + 50.982529604841424 + ], + [ + 7.016582535994702, + 50.983239682083365 + ], + [ + 7.016374537660936, + 50.98345465142644 + ], + [ + 7.016254767040738, + 50.98357850448218 + ], + [ + 7.016171727588147, + 50.98366441488491 + ], + [ + 7.01605988277057, + 50.9837802640415 + ], + [ + 7.015716683064328, + 50.98413581177856 + ], + [ + 7.014949291808999, + 50.985003900153295 + ], + [ + 7.014708890072793, + 50.985218358924804 + ], + [ + 7.014248892120415, + 50.98588882648108 + ], + [ + 7.014040443667157, + 50.98622762915487 + ], + [ + 7.013678615534669, + 50.986824963804715 + ], + [ + 7.013533996943511, + 50.987093987661886 + ], + [ + 7.013222141641785, + 50.98767409911 + ], + [ + 7.012906375516007, + 50.988379711432074 + ], + [ + 7.012582978413856, + 50.98918669789038 + ], + [ + 7.012208285488014, + 50.99041204051821 + ], + [ + 7.012176415269529, + 50.9905507330034 + ], + [ + 7.012158911683011, + 50.99062673616375 + ], + [ + 7.0120664666519, + 50.99102922408214 + ], + [ + 7.01205484954992, + 50.9910797828057 + ], + [ + 7.0120500637116185, + 50.991100604343664 + ], + [ + 7.01203331345771, + 50.99117330794939 + ], + [ + 7.012026517776951, + 50.99120297828584 + ], + [ + 7.012015852691276, + 50.991249531257395 + ], + [ + 7.0118872301055575, + 50.99225744542143 + ], + [ + 7.011859286355388, + 50.99273321671799 + ], + [ + 7.011855602097833, + 50.99280107570461 + ], + [ + 7.011850739212365, + 50.99288467326724 + ], + [ + 7.011867737704442, + 50.99329719653289 + ], + [ + 7.011871057443449, + 50.99339733597188 + ], + [ + 7.011871514769158, + 50.993429146135625 + ], + [ + 7.011871726459685, + 50.99344366456031 + ], + [ + 7.0118683700932225, + 50.99369499289305 + ], + [ + 7.011885364512545, + 50.99401783065515 + ], + [ + 7.0119364078656075, + 50.99451755103213 + ], + [ + 7.012030406710017, + 50.99501031928146 + ], + [ + 7.0121278698956475, + 50.99552164176921 + ], + [ + 7.012132593687304, + 50.99554799795611 + ], + [ + 7.012228563416678, + 50.99595732873911 + ], + [ + 7.012240009804033, + 50.99599975853003 + ], + [ + 7.01274026161159, + 50.99604414825234 + ], + [ + 7.0129645838953145, + 50.996044354113344 + ], + [ + 7.012972364843055, + 50.9960443659824 + ], + [ + 7.012974127425356, + 50.99604437438588 + ], + [ + 7.013019574076067, + 50.99604482562413 + ], + [ + 7.0131192073914, + 50.99604610877315 + ], + [ + 7.013125950847254, + 50.996046219898716 + ], + [ + 7.013401710535071, + 50.99605076343073 + ], + [ + 7.013736221433473, + 50.99606031847725 + ], + [ + 7.013943503658581, + 50.996066047928856 + ], + [ + 7.013983336484148, + 50.996068703895126 + ], + [ + 7.013984106142893, + 50.99606876914627 + ], + [ + 7.014341733009459, + 50.996099101392055 + ], + [ + 7.0144042313210235, + 50.996103907120876 + ], + [ + 7.01451367035504, + 50.99611225929627 + ], + [ + 7.014643858120879, + 50.996137916169836 + ], + [ + 7.014720229339185, + 50.996158377128296 + ], + [ + 7.014768949247863, + 50.99617152746197 + ], + [ + 7.014816950763011, + 50.99618441374244 + ], + [ + 7.014944174791385, + 50.99622438901364 + ], + [ + 7.014965506821422, + 50.99623103543419 + ], + [ + 7.015271916529826, + 50.9963468492566 + ], + [ + 7.015519638344789, + 50.9964335087248 + ], + [ + 7.015674760581001, + 50.996496792038485 + ], + [ + 7.0157830473078695, + 50.996541065550346 + ], + [ + 7.015985221099624, + 50.99662353528531 + ], + [ + 7.016445706504711, + 50.996718767858546 + ], + [ + 7.016593803069367, + 50.99674940608032 + ], + [ + 7.01703174280678, + 50.99684230002355 + ], + [ + 7.017577133356854, + 50.996918001044364 + ], + [ + 7.017997554680238, + 50.996976359767125 + ], + [ + 7.0180238001072155, + 50.99697936205088 + ], + [ + 7.018161663657604, + 50.99699833886198 + ], + [ + 7.018280392029891, + 50.99701445102408 + ], + [ + 7.018487115588727, + 50.99704246797206 + ], + [ + 7.018662295544509, + 50.99706629801361 + ], + [ + 7.019018849424042, + 50.99709222136483 + ], + [ + 7.019792441124579, + 50.99719729287579 + ], + [ + 7.020371072323543, + 50.997257947655264 + ], + [ + 7.0206999648175925, + 50.99728575511251 + ], + [ + 7.021380661441457, + 50.997304817725166 + ], + [ + 7.021598068972908, + 50.99732542223406 + ], + [ + 7.021875362041439, + 50.997322654467915 + ], + [ + 7.021924648320329, + 50.99732256379261 + ], + [ + 7.0220704055427, + 50.997297915732254 + ], + [ + 7.0222365801329785, + 50.997256009145055 + ], + [ + 7.022298704625809, + 50.99725672299995 + ], + [ + 7.022624076901787, + 50.99735068989194 + ], + [ + 7.022681769466372, + 50.99736735152716 + ], + [ + 7.02277967834912, + 50.99737584337085 + ], + [ + 7.022806639181413, + 50.99737560729494 + ], + [ + 7.022909000581059, + 50.99737470952954 + ], + [ + 7.023168127862108, + 50.99745137753531 + ], + [ + 7.023231690356001, + 50.997454043462554 + ], + [ + 7.023319374793489, + 50.99746388171607 + ], + [ + 7.023756099065348, + 50.997512661032864 + ], + [ + 7.023770618684393, + 50.99751428274383 + ], + [ + 7.023771597444708, + 50.9975143919397 + ], + [ + 7.023777726671831, + 50.99751494353442 + ], + [ + 7.023794294189294, + 50.99751643441244 + ], + [ + 7.023851366789813, + 50.99752157225268 + ], + [ + 7.0246626332537, + 50.9976159735497 + ], + [ + 7.024686371177092, + 50.997620080404154 + ], + [ + 7.024748000070054, + 50.997630595700166 + ], + [ + 7.02481849539719, + 50.99764265222513 + ], + [ + 7.0250143732256864, + 50.99767518140294 + ], + [ + 7.025190208454336, + 50.99770321180949 + ], + [ + 7.025564362866645, + 50.99784523602025 + ], + [ + 7.025582234735937, + 50.99785132374349 + ], + [ + 7.025736062410409, + 50.997903396221545 + ], + [ + 7.025897413599255, + 50.99796142621976 + ], + [ + 7.0261186515690435, + 50.99804522305456 + ], + [ + 7.026200601097109, + 50.998076486610884 + ], + [ + 7.026235966114497, + 50.998089937046196 + ], + [ + 7.026356188690758, + 50.9981306133651 + ], + [ + 7.026357795303097, + 50.99811220091996 + ], + [ + 7.026361125499478, + 50.99807399658797 + ], + [ + 7.0263631493192715, + 50.9980508578569 + ], + [ + 7.026429112320946, + 50.99784924131033 + ], + [ + 7.026461675715827, + 50.997745165324055 + ], + [ + 7.026466634703791, + 50.99769235411079 + ], + [ + 7.026462736921407, + 50.99765130796866 + ], + [ + 7.026442829461198, + 50.99759485055269 + ], + [ + 7.02641246345882, + 50.997555025455284 + ], + [ + 7.02640277841447, + 50.99754221228189 + ], + [ + 7.026320275186254, + 50.99743300448358 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Hoehenhaus", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "906", + "Population_rel": 0.01447005624793206, + "Population_abs": 15744 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.108830335754282, + 50.856132004242305 + ], + [ + 7.109015392278593, + 50.85610656650185 + ], + [ + 7.109020614059029, + 50.85610909472667 + ], + [ + 7.109025035196708, + 50.85606302863185 + ], + [ + 7.109060989882359, + 50.85607692206159 + ], + [ + 7.109098739428181, + 50.85608859614094 + ], + [ + 7.109138141834812, + 50.8560980485669 + ], + [ + 7.109185659603902, + 50.85610358532797 + ], + [ + 7.109233948954842, + 50.85610409809424 + ], + [ + 7.109281735548805, + 50.85609947627655 + ], + [ + 7.1101053681517925, + 50.855951915943756 + ], + [ + 7.110647490387612, + 50.85581352485891 + ], + [ + 7.110919314979178, + 50.855744129386295 + ], + [ + 7.111191979330649, + 50.85569844890699 + ], + [ + 7.111277522989779, + 50.855633285675275 + ], + [ + 7.111469784322846, + 50.85548682708337 + ], + [ + 7.111522292352132, + 50.85543892658797 + ], + [ + 7.111562576834379, + 50.85540216929128 + ], + [ + 7.111613902132284, + 50.8554340840936 + ], + [ + 7.111764247083042, + 50.855527567937486 + ], + [ + 7.11193168112256, + 50.8555531656938 + ], + [ + 7.11195695150869, + 50.855557029119375 + ], + [ + 7.111960887006249, + 50.85554978991198 + ], + [ + 7.112021754526482, + 50.85543783815248 + ], + [ + 7.112106384805969, + 50.85528214143049 + ], + [ + 7.112199853633434, + 50.855109908820516 + ], + [ + 7.112217568763481, + 50.85507845665007 + ], + [ + 7.112227103380455, + 50.85506137537392 + ], + [ + 7.112242531934508, + 50.85502940503866 + ], + [ + 7.112244101110946, + 50.85502372661616 + ], + [ + 7.112245241013278, + 50.85498209428141 + ], + [ + 7.112245303233995, + 50.854948922881555 + ], + [ + 7.11224116527329, + 50.85493619727941 + ], + [ + 7.112202731364702, + 50.854819069962566 + ], + [ + 7.11204132826548, + 50.85430281205497 + ], + [ + 7.112010431235989, + 50.85421590857675 + ], + [ + 7.112008000848625, + 50.854209278654714 + ], + [ + 7.112004861855302, + 50.85418476765719 + ], + [ + 7.112003287253747, + 50.85417228678324 + ], + [ + 7.112002224016809, + 50.85412761938917 + ], + [ + 7.112018579724704, + 50.85408683045813 + ], + [ + 7.112038406143486, + 50.85406659525968 + ], + [ + 7.112055389726114, + 50.85405222922082 + ], + [ + 7.112116099035865, + 50.854019288206814 + ], + [ + 7.11215791611113, + 50.85403390241252 + ], + [ + 7.1122076070674725, + 50.854039271658515 + ], + [ + 7.112304931048307, + 50.854035106584995 + ], + [ + 7.11247201721176, + 50.85402038814934 + ], + [ + 7.112972137365475, + 50.85397615273987 + ], + [ + 7.113394352796822, + 50.853940479299425 + ], + [ + 7.113949081346966, + 50.85389347038832 + ], + [ + 7.114027957992149, + 50.85388399706717 + ], + [ + 7.114080561601784, + 50.85387450552113 + ], + [ + 7.114101769235075, + 50.85384670430887 + ], + [ + 7.114096685864029, + 50.853800277544465 + ], + [ + 7.114095982692923, + 50.85379411088202 + ], + [ + 7.114095011184917, + 50.85378829153616 + ], + [ + 7.114075764093327, + 50.85372685285791 + ], + [ + 7.114042730756896, + 50.853619000519714 + ], + [ + 7.114041663042775, + 50.85361345302689 + ], + [ + 7.1140406845466195, + 50.853607807146076 + ], + [ + 7.114025981046106, + 50.853521018478745 + ], + [ + 7.11402362435187, + 50.8534698007654 + ], + [ + 7.114023674257079, + 50.85343024632723 + ], + [ + 7.114023675991255, + 50.853427280229006 + ], + [ + 7.114024008163632, + 50.85342436444092 + ], + [ + 7.114050504674936, + 50.85335762591432 + ], + [ + 7.11405229834973, + 50.8533530672162 + ], + [ + 7.114054531658737, + 50.853348634341614 + ], + [ + 7.114092518618422, + 50.85329780165481 + ], + [ + 7.114132306282463, + 50.853245192125115 + ], + [ + 7.114159379984753, + 50.85321922420574 + ], + [ + 7.114226430042145, + 50.85315449019226 + ], + [ + 7.114340557414411, + 50.85306898518418 + ], + [ + 7.114726230303224, + 50.85281745814521 + ], + [ + 7.11488431890184, + 50.8527114881794 + ], + [ + 7.114918276390535, + 50.852688423859526 + ], + [ + 7.114993658531946, + 50.852640048691185 + ], + [ + 7.114997933330068, + 50.85263727304707 + ], + [ + 7.115001973904805, + 50.85263438659333 + ], + [ + 7.11505806179583, + 50.85258396566231 + ], + [ + 7.115063180124101, + 50.85257926190165 + ], + [ + 7.115068884007737, + 50.85257356660095 + ], + [ + 7.115179632710581, + 50.852428820372424 + ], + [ + 7.115211481394287, + 50.85237633044815 + ], + [ + 7.1152145598274394, + 50.852369044908386 + ], + [ + 7.115216987680351, + 50.85236309521719 + ], + [ + 7.115324656303934, + 50.852189280879855 + ], + [ + 7.115335721342442, + 50.852172678256245 + ], + [ + 7.1153700439973, + 50.85223732009248 + ], + [ + 7.115426860268183, + 50.85227947763567 + ], + [ + 7.115502434018003, + 50.85230428437435 + ], + [ + 7.115579646634742, + 50.852308490455805 + ], + [ + 7.115667897206361, + 50.852299196224905 + ], + [ + 7.115721207253218, + 50.85227180707858 + ], + [ + 7.115768553186906, + 50.85223845229018 + ], + [ + 7.1157889701559185, + 50.85219546651155 + ], + [ + 7.115789105308947, + 50.85212975254029 + ], + [ + 7.11622910338417, + 50.8520902127145 + ], + [ + 7.1162099640765515, + 50.851318553463805 + ], + [ + 7.116207431533945, + 50.851218434133784 + ], + [ + 7.117579341366895, + 50.85120556517793 + ], + [ + 7.117709253221868, + 50.85106201524675 + ], + [ + 7.118434995071054, + 50.850175430903846 + ], + [ + 7.118469159378699, + 50.85016701245774 + ], + [ + 7.118476951191091, + 50.85016621896097 + ], + [ + 7.118484740561538, + 50.850165415531215 + ], + [ + 7.118501597420805, + 50.850163644911284 + ], + [ + 7.118536724739516, + 50.85015989172499 + ], + [ + 7.1185888774854496, + 50.85010212794058 + ], + [ + 7.11853330975678, + 50.850088637932046 + ], + [ + 7.118480463389481, + 50.85007566035721 + ], + [ + 7.11852678410393, + 50.85003530251033 + ], + [ + 7.118634949667417, + 50.849944549196294 + ], + [ + 7.118685779342437, + 50.84990270988439 + ], + [ + 7.1188238310937395, + 50.84971238957008 + ], + [ + 7.118828423140849, + 50.84970694237364 + ], + [ + 7.118833183678578, + 50.84970154466113 + ], + [ + 7.118842730721543, + 50.84969066871078 + ], + [ + 7.119002626368874, + 50.84950682691487 + ], + [ + 7.119049790546093, + 50.84946016797578 + ], + [ + 7.119090432354914, + 50.84941986404753 + ], + [ + 7.119149421096461, + 50.84935709010372 + ], + [ + 7.119425574958166, + 50.84907675320965 + ], + [ + 7.119454704724212, + 50.84904788616451 + ], + [ + 7.119497988732442, + 50.84900530970342 + ], + [ + 7.119523437816635, + 50.84897692833272 + ], + [ + 7.119581260903103, + 50.84891290684272 + ], + [ + 7.119639062085858, + 50.84881939908462 + ], + [ + 7.119634731802708, + 50.84881717619677 + ], + [ + 7.119467816459326, + 50.84873149274414 + ], + [ + 7.119344618486027, + 50.84866826507391 + ], + [ + 7.11926988835442, + 50.848629891185226 + ], + [ + 7.119202840738728, + 50.84859541486139 + ], + [ + 7.119050421487075, + 50.84851708661505 + ], + [ + 7.118649328603811, + 50.84831096154725 + ], + [ + 7.118433129257299, + 50.84819985343585 + ], + [ + 7.118141662372335, + 50.84805006393073 + ], + [ + 7.1174212289716845, + 50.8476798344123 + ], + [ + 7.117207168448211, + 50.84756980266927 + ], + [ + 7.116665499910317, + 50.8472915198152 + ], + [ + 7.11609553723275, + 50.84699812494032 + ], + [ + 7.113796458186883, + 50.84582357302258 + ], + [ + 7.113656319502404, + 50.845744320922556 + ], + [ + 7.113604258184476, + 50.845717847015266 + ], + [ + 7.113491227697485, + 50.84566034816091 + ], + [ + 7.113424224370265, + 50.845417589818865 + ], + [ + 7.113398414052177, + 50.84532456765689 + ], + [ + 7.1133742254578864, + 50.84524127953894 + ], + [ + 7.113340989450881, + 50.84511626801338 + ], + [ + 7.113328379465448, + 50.84507059541287 + ], + [ + 7.113313176945362, + 50.845015629039445 + ], + [ + 7.113290957995275, + 50.84493599092732 + ], + [ + 7.1132805411447935, + 50.84489479668792 + ], + [ + 7.113262457276758, + 50.84482333238604 + ], + [ + 7.113254773786544, + 50.8447932239448 + ], + [ + 7.113226435413292, + 50.84468235507 + ], + [ + 7.113210737443058, + 50.84462027472353 + ], + [ + 7.113209291201767, + 50.84461457449411 + ], + [ + 7.113208507840217, + 50.84461149226635 + ], + [ + 7.1132078236560465, + 50.84460880376902 + ], + [ + 7.113207124830049, + 50.844606055676316 + ], + [ + 7.1131687886976644, + 50.84445555072801 + ], + [ + 7.113199518666489, + 50.844398312513114 + ], + [ + 7.113246815422264, + 50.84431021493837 + ], + [ + 7.113246121443317, + 50.844305586336134 + ], + [ + 7.113245537906768, + 50.84430170599925 + ], + [ + 7.113241453401888, + 50.84427450227395 + ], + [ + 7.113237177171901, + 50.844246030030405 + ], + [ + 7.11322064275188, + 50.84413641600401 + ], + [ + 7.113213377004075, + 50.8441242639902 + ], + [ + 7.11321079684286, + 50.84411994574437 + ], + [ + 7.113208594850693, + 50.844116183131305 + ], + [ + 7.11315809880711, + 50.84403015808311 + ], + [ + 7.113156238304035, + 50.84402698018803 + ], + [ + 7.113154350538861, + 50.84402380904695 + ], + [ + 7.113141825212685, + 50.84400291190298 + ], + [ + 7.113139578317459, + 50.84399917104655 + ], + [ + 7.1131375869600175, + 50.843995750902245 + ], + [ + 7.113110982045859, + 50.84395030160245 + ], + [ + 7.1131097213832595, + 50.84394764245325 + ], + [ + 7.113108976849678, + 50.84394486573975 + ], + [ + 7.113073085531558, + 50.84380951603839 + ], + [ + 7.1129091741980135, + 50.84319034118612 + ], + [ + 7.112724049938219, + 50.842827192672765 + ], + [ + 7.112708308522494, + 50.8427963143716 + ], + [ + 7.112637951284576, + 50.84276849444676 + ], + [ + 7.1120727760493265, + 50.842545072172214 + ], + [ + 7.1119462699616784, + 50.842495080175816 + ], + [ + 7.111844797894398, + 50.842455059849485 + ], + [ + 7.111794246531564, + 50.84241881446296 + ], + [ + 7.111367343610785, + 50.84211292728052 + ], + [ + 7.111362756960207, + 50.84210965575519 + ], + [ + 7.111355659292964, + 50.84210623475404 + ], + [ + 7.11119468617595, + 50.84203208347807 + ], + [ + 7.111164243303401, + 50.842073294513604 + ], + [ + 7.111151606188233, + 50.842067544372085 + ], + [ + 7.1111388644627835, + 50.842061746667376 + ], + [ + 7.11110219462923, + 50.842044988503034 + ], + [ + 7.111018998033967, + 50.84200698205309 + ], + [ + 7.110749298472963, + 50.841883850699176 + ], + [ + 7.110340945692967, + 50.84169723726348 + ], + [ + 7.1103024324900534, + 50.841679745674774 + ], + [ + 7.110231251253264, + 50.84164715414361 + ], + [ + 7.110227266586612, + 50.8416453340195 + ], + [ + 7.110223248036612, + 50.84164354392508 + ], + [ + 7.110165256924931, + 50.84161763700997 + ], + [ + 7.1101616151517195, + 50.84161647088642 + ], + [ + 7.110157374462264, + 50.84161581939512 + ], + [ + 7.10843695259072, + 50.84134491864282 + ], + [ + 7.108282256661058, + 50.84132048801066 + ], + [ + 7.108073952494489, + 50.84128762406103 + ], + [ + 7.105624038787341, + 50.84090109974033 + ], + [ + 7.105618675891729, + 50.84089985695905 + ], + [ + 7.105614316391841, + 50.84089884542168 + ], + [ + 7.105470330163645, + 50.84086541133872 + ], + [ + 7.105465268789657, + 50.840864229208194 + ], + [ + 7.105459893200497, + 50.840862949339105 + ], + [ + 7.105453342464783, + 50.840861014527995 + ], + [ + 7.104844017711183, + 50.840601487246445 + ], + [ + 7.104756312057918, + 50.84056410453841 + ], + [ + 7.104710929179383, + 50.84054466745311 + ], + [ + 7.104695838843444, + 50.840538214808596 + ], + [ + 7.1046870859701166, + 50.84053447151062 + ], + [ + 7.104679235074843, + 50.84053111340825 + ], + [ + 7.104267493420319, + 50.840355325621054 + ], + [ + 7.10414741881817, + 50.840303826897475 + ], + [ + 7.104014350969512, + 50.8402466432862 + ], + [ + 7.10394175344706, + 50.840215686897714 + ], + [ + 7.1036831695787575, + 50.840105181399885 + ], + [ + 7.1035659757809855, + 50.84005507436068 + ], + [ + 7.103226841272672, + 50.83991049954544 + ], + [ + 7.10205533900793, + 50.83941002069374 + ], + [ + 7.101878999752517, + 50.839334751990954 + ], + [ + 7.101402888650418, + 50.83913158008295 + ], + [ + 7.101284617314993, + 50.839081194159725 + ], + [ + 7.1012127620015075, + 50.8390707394764 + ], + [ + 7.101260299055782, + 50.83901916241738 + ], + [ + 7.101262657348832, + 50.83901628143173 + ], + [ + 7.101266102104939, + 50.83901287850482 + ], + [ + 7.101238159442232, + 50.83898292331718 + ], + [ + 7.101155427887866, + 50.83889425463893 + ], + [ + 7.101141181009085, + 50.83888870743578 + ], + [ + 7.101135279486469, + 50.83888639621541 + ], + [ + 7.101130651389709, + 50.838884625561214 + ], + [ + 7.101106021412885, + 50.83887586586025 + ], + [ + 7.100287492966028, + 50.83858215477369 + ], + [ + 7.099989962813948, + 50.83848341450208 + ], + [ + 7.0999773395237895, + 50.83843752066623 + ], + [ + 7.099707385009559, + 50.83864186390644 + ], + [ + 7.099121306843111, + 50.839117722411096 + ], + [ + 7.09854427342516, + 50.83958630198609 + ], + [ + 7.097591964945215, + 50.840366117384114 + ], + [ + 7.097324171071527, + 50.84058049774133 + ], + [ + 7.097018881520857, + 50.840824858982074 + ], + [ + 7.096227320681757, + 50.84146735710266 + ], + [ + 7.095856423291561, + 50.841771510735036 + ], + [ + 7.095478140460538, + 50.84208172942802 + ], + [ + 7.095295366061185, + 50.842231548273766 + ], + [ + 7.095108501222031, + 50.84238460344818 + ], + [ + 7.094768734577227, + 50.84266305779241 + ], + [ + 7.0941171828045215, + 50.843197133169895 + ], + [ + 7.0940123459336375, + 50.843282908875715 + ], + [ + 7.093969771447548, + 50.84331774488694 + ], + [ + 7.093927206981154, + 50.843352577448975 + ], + [ + 7.093617321680365, + 50.84360644032355 + ], + [ + 7.093239485172733, + 50.84391580831427 + ], + [ + 7.092751266324532, + 50.8442416386474 + ], + [ + 7.092285836964631, + 50.84461702912713 + ], + [ + 7.091781015961878, + 50.84503410701991 + ], + [ + 7.091721485340383, + 50.84508324912912 + ], + [ + 7.090576890621331, + 50.846021758822495 + ], + [ + 7.089245210998246, + 50.84711627390221 + ], + [ + 7.088108450135454, + 50.848031214583756 + ], + [ + 7.087707805097195, + 50.8483528227672 + ], + [ + 7.088133648656767, + 50.848543912228926 + ], + [ + 7.0882082052652, + 50.84856766694738 + ], + [ + 7.08822936698517, + 50.848575425469754 + ], + [ + 7.088478954550871, + 50.84865117013212 + ], + [ + 7.088565327002338, + 50.848677152603834 + ], + [ + 7.089730199932615, + 50.84902611267029 + ], + [ + 7.090182782526758, + 50.849161682294074 + ], + [ + 7.09020834509962, + 50.84917120421843 + ], + [ + 7.090236213731353, + 50.84918158861262 + ], + [ + 7.091913860112783, + 50.84968818495286 + ], + [ + 7.092028126899155, + 50.849734302048454 + ], + [ + 7.092097139736478, + 50.849762229321904 + ], + [ + 7.092103802145911, + 50.84976496085039 + ], + [ + 7.092111408350695, + 50.84976834277086 + ], + [ + 7.0921537696799675, + 50.849792981349204 + ], + [ + 7.0921577615716735, + 50.84979535532187 + ], + [ + 7.0921659106121755, + 50.849800405460776 + ], + [ + 7.09250949663235, + 50.84991022147194 + ], + [ + 7.092866678743245, + 50.85002140091982 + ], + [ + 7.094606622108449, + 50.85057798064584 + ], + [ + 7.094620339368181, + 50.85058236787492 + ], + [ + 7.094626729329574, + 50.850584400491464 + ], + [ + 7.09462841396257, + 50.85066587887808 + ], + [ + 7.0946558812593405, + 50.85068054386221 + ], + [ + 7.094671882639176, + 50.85068940409874 + ], + [ + 7.09477124117612, + 50.85063424296428 + ], + [ + 7.0952815314659565, + 50.85051940773643 + ], + [ + 7.095898027169107, + 50.85038092967518 + ], + [ + 7.09604058712858, + 50.85056328568436 + ], + [ + 7.096100678490573, + 50.850623660962384 + ], + [ + 7.096434447907119, + 50.85052097923141 + ], + [ + 7.096644281508874, + 50.8504582493283 + ], + [ + 7.0974695010276605, + 50.85027806714092 + ], + [ + 7.097686439082163, + 50.85024591030651 + ], + [ + 7.097668745518504, + 50.8506417283035 + ], + [ + 7.097622014187027, + 50.851687089383475 + ], + [ + 7.097644036964093, + 50.85168772549023 + ], + [ + 7.098332404605422, + 50.85170790915607 + ], + [ + 7.099070722641633, + 50.85179911938118 + ], + [ + 7.099495581606117, + 50.851906404768016 + ], + [ + 7.09957155601351, + 50.851925504799546 + ], + [ + 7.099802315552065, + 50.85199664447255 + ], + [ + 7.1000689673807456, + 50.85207934953461 + ], + [ + 7.100520546232208, + 50.85226575780466 + ], + [ + 7.100623870524592, + 50.85231152813413 + ], + [ + 7.101321768114471, + 50.85262712947834 + ], + [ + 7.101430997885677, + 50.8526765243257 + ], + [ + 7.101456018241924, + 50.85271377428243 + ], + [ + 7.101477947299666, + 50.852746468972136 + ], + [ + 7.101488985681025, + 50.8527629047562 + ], + [ + 7.101793975561268, + 50.85289324887578 + ], + [ + 7.101974448842139, + 50.85297047140952 + ], + [ + 7.102284670917591, + 50.85309977603 + ], + [ + 7.102330809371712, + 50.853135208099644 + ], + [ + 7.102528651775491, + 50.8531781035255 + ], + [ + 7.102819132306853, + 50.85324098266059 + ], + [ + 7.102927714446564, + 50.853262610022206 + ], + [ + 7.103031157657664, + 50.85328311675025 + ], + [ + 7.103085520627573, + 50.853293928815354 + ], + [ + 7.10350640389221, + 50.85337750559034 + ], + [ + 7.10355323277483, + 50.853386771260915 + ], + [ + 7.1036038927612495, + 50.85342719408298 + ], + [ + 7.103677100622858, + 50.85346030633082 + ], + [ + 7.10371455644125, + 50.853542920787106 + ], + [ + 7.103699882151235, + 50.85387171671687 + ], + [ + 7.1041644381308515, + 50.85388475893445 + ], + [ + 7.1047279047033705, + 50.85390063825606 + ], + [ + 7.106126554941103, + 50.85394014900852 + ], + [ + 7.106157370240909, + 50.85352004621781 + ], + [ + 7.106554277051715, + 50.853531022965036 + ], + [ + 7.106823001803512, + 50.853538451572085 + ], + [ + 7.10682130384796, + 50.8535746956902 + ], + [ + 7.1068067815438365, + 50.853818989372286 + ], + [ + 7.106804558434965, + 50.85384508005202 + ], + [ + 7.107295600722852, + 50.85386109469566 + ], + [ + 7.107355883128749, + 50.85386393792038 + ], + [ + 7.107554718025361, + 50.85387049995536 + ], + [ + 7.107757104156741, + 50.85387711834819 + ], + [ + 7.107792183102305, + 50.85387714405847 + ], + [ + 7.107847497065506, + 50.85388012499566 + ], + [ + 7.10798109629904, + 50.85388451936992 + ], + [ + 7.10829928484564, + 50.85389363167854 + ], + [ + 7.108418985388146, + 50.853898876743294 + ], + [ + 7.108430840424104, + 50.853764011194755 + ], + [ + 7.108450018522002, + 50.853662426905196 + ], + [ + 7.1084508589717394, + 50.853650013012285 + ], + [ + 7.108454393841382, + 50.853595412802264 + ], + [ + 7.108712588803691, + 50.85360194773537 + ], + [ + 7.108835621004228, + 50.853689082016025 + ], + [ + 7.108815195697556, + 50.85391030215482 + ], + [ + 7.108803062922408, + 50.85404535120019 + ], + [ + 7.108793713571207, + 50.854148086867966 + ], + [ + 7.108730576777372, + 50.85487890368007 + ], + [ + 7.108721417853952, + 50.85496017172057 + ], + [ + 7.108706162380011, + 50.85513372167768 + ], + [ + 7.108681798508371, + 50.85541702807278 + ], + [ + 7.108650440656597, + 50.85575831507337 + ], + [ + 7.108639917984692, + 50.85587419218715 + ], + [ + 7.108637604989167, + 50.85590154324952 + ], + [ + 7.108624803410294, + 50.85605772741928 + ], + [ + 7.10861600729153, + 50.856153439828894 + ], + [ + 7.10881256820546, + 50.85613420120522 + ], + [ + 7.108820496199421, + 50.85613333680707 + ], + [ + 7.108830335754282, + 50.856132004242305 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Lind", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "712", + "Population_rel": 0.00332064997610382, + "Population_abs": 3613 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.977479683511139, + 50.970721880850355 + ], + [ + 6.980119012497131, + 50.97048841023769 + ], + [ + 6.981596362866539, + 50.9703861934855 + ], + [ + 6.982657748963986, + 50.970300338411924 + ], + [ + 6.983427841420929, + 50.97023307606834 + ], + [ + 6.983825325349047, + 50.970198258787754 + ], + [ + 6.984737656708249, + 50.97011901158084 + ], + [ + 6.985896896595708, + 50.96996791456337 + ], + [ + 6.986205229391666, + 50.96989231639894 + ], + [ + 6.986601863890959, + 50.96976455311553 + ], + [ + 6.9869491913128, + 50.969634688317264 + ], + [ + 6.987212171498334, + 50.969501759577774 + ], + [ + 6.987563640874519, + 50.969278729466524 + ], + [ + 6.987830242376384, + 50.969054976914514 + ], + [ + 6.988097217069494, + 50.968748339834356 + ], + [ + 6.988322897177964, + 50.96843477067262 + ], + [ + 6.988436151961165, + 50.96820368539382 + ], + [ + 6.988550977771627, + 50.96787235639431 + ], + [ + 6.988608862565332, + 50.96771080424992 + ], + [ + 6.988697336512682, + 50.96751091544881 + ], + [ + 6.988858642316579, + 50.96722332985074 + ], + [ + 6.989021445721937, + 50.96700416865461 + ], + [ + 6.989139654484342, + 50.96685356982134 + ], + [ + 6.989388556410648, + 50.9666420101665 + ], + [ + 6.989764435800932, + 50.96637242159141 + ], + [ + 6.989768642361881, + 50.96636940378076 + ], + [ + 6.989772881822593, + 50.9663662507316 + ], + [ + 6.9899214790745, + 50.9662372878869 + ], + [ + 6.989990217267994, + 50.96618951134187 + ], + [ + 6.990069741421544, + 50.96614011449241 + ], + [ + 6.990123490723723, + 50.96611044317326 + ], + [ + 6.990292384006146, + 50.96603148430198 + ], + [ + 6.990327945918004, + 50.96601809770633 + ], + [ + 6.990401379148537, + 50.96599041629499 + ], + [ + 6.990707810454515, + 50.96589469254371 + ], + [ + 6.990963971940801, + 50.96581536284206 + ], + [ + 6.991015366727338, + 50.96579953776377 + ], + [ + 6.991207141077942, + 50.96574037785535 + ], + [ + 6.992202058359401, + 50.965433355959064 + ], + [ + 6.992330940894343, + 50.96540759004557 + ], + [ + 6.992335369151622, + 50.96541319820718 + ], + [ + 6.992338928617689, + 50.96541781561463 + ], + [ + 6.992343383494098, + 50.96542366526454 + ], + [ + 6.992348003885425, + 50.96542422317421 + ], + [ + 6.992431729320474, + 50.965434329979445 + ], + [ + 6.992440285009399, + 50.965423720629104 + ], + [ + 6.99247194824281, + 50.96538445715728 + ], + [ + 6.9924672199860165, + 50.965378242164924 + ], + [ + 6.992461112922153, + 50.965370345928605 + ], + [ + 6.9936654307614985, + 50.96500049967901 + ], + [ + 6.993873255827238, + 50.96493646323524 + ], + [ + 6.9953965753727, + 50.96445720693167 + ], + [ + 6.99537666053063, + 50.96443617054403 + ], + [ + 6.995230691038044, + 50.96428198128663 + ], + [ + 6.995155248099924, + 50.96420544110875 + ], + [ + 6.994675735564738, + 50.9637189473388 + ], + [ + 6.9941309234129, + 50.963217041430156 + ], + [ + 6.9940288975399945, + 50.96312559184244 + ], + [ + 6.994016581267253, + 50.963114650768674 + ], + [ + 6.994004230312866, + 50.96310368841221 + ], + [ + 6.993793593423799, + 50.962918502888826 + ], + [ + 6.993576611152492, + 50.96273624869724 + ], + [ + 6.993436357166224, + 50.96262094240945 + ], + [ + 6.993431133502933, + 50.96261667596662 + ], + [ + 6.993425783020478, + 50.96261231201097 + ], + [ + 6.993381604061434, + 50.96257646116596 + ], + [ + 6.993320345227802, + 50.96252736044582 + ], + [ + 6.9933120019097945, + 50.96252063366891 + ], + [ + 6.99330367877876, + 50.96251393421944 + ], + [ + 6.992577768001359, + 50.961955036827966 + ], + [ + 6.991792079985001, + 50.961429458958236 + ], + [ + 6.990822460046702, + 50.960828218758905 + ], + [ + 6.990631636699784, + 50.960728043963925 + ], + [ + 6.989777695362318, + 50.960279745776184 + ], + [ + 6.9896653340953625, + 50.960223526097344 + ], + [ + 6.98945892823867, + 50.960122348955835 + ], + [ + 6.98833076011595, + 50.95959947060215 + ], + [ + 6.987143788552275, + 50.95914162167101 + ], + [ + 6.986859961910564, + 50.95904037501348 + ], + [ + 6.986777782116531, + 50.95901104604511 + ], + [ + 6.98610128322848, + 50.95877665901404 + ], + [ + 6.985425346604223, + 50.95854154382769 + ], + [ + 6.985362396626701, + 50.95851960301618 + ], + [ + 6.985331008119418, + 50.95850870783824 + ], + [ + 6.985320362535327, + 50.95850501030074 + ], + [ + 6.985299451475739, + 50.95849774949255 + ], + [ + 6.983591816436568, + 50.95790177903035 + ], + [ + 6.981887703498118, + 50.9573017960764 + ], + [ + 6.981870802504502, + 50.95729557618132 + ], + [ + 6.981864588985375, + 50.9572932905008 + ], + [ + 6.981853360287701, + 50.95728916165791 + ], + [ + 6.981841369202503, + 50.95728474982416 + ], + [ + 6.981794897330517, + 50.957267790212946 + ], + [ + 6.981733504049977, + 50.957245296931866 + ], + [ + 6.981719443908217, + 50.957240195475606 + ], + [ + 6.981712301006591, + 50.957237603224016 + ], + [ + 6.981702797300591, + 50.957234152632644 + ], + [ + 6.981695924741425, + 50.957231663984246 + ], + [ + 6.9816719749766865, + 50.957222981144895 + ], + [ + 6.980952616308613, + 50.956964921370655 + ], + [ + 6.980225207834553, + 50.956716369903866 + ], + [ + 6.980208101840479, + 50.956710618388556 + ], + [ + 6.980198430220859, + 50.956707367126874 + ], + [ + 6.980193947537619, + 50.95670585687841 + ], + [ + 6.980162570166968, + 50.95669531843544 + ], + [ + 6.980099929554972, + 50.95667427047951 + ], + [ + 6.9800828178033925, + 50.9566685539215 + ], + [ + 6.9800657046331605, + 50.9566628373364 + ], + [ + 6.980031416555086, + 50.956651383304276 + ], + [ + 6.979962902239429, + 50.95662849516623 + ], + [ + 6.979369351607968, + 50.95641656523052 + ], + [ + 6.978788891182463, + 50.95619058941915 + ], + [ + 6.977726572486742, + 50.95575011761814 + ], + [ + 6.976825351259695, + 50.95532159234505 + ], + [ + 6.976466943923584, + 50.955143367062256 + ], + [ + 6.976115829967424, + 50.954959501211945 + ], + [ + 6.976102067384369, + 50.95495216928711 + ], + [ + 6.976088303382801, + 50.95494483733604 + ], + [ + 6.976060697860926, + 50.95493012261963 + ], + [ + 6.976005430692517, + 50.95490074075993 + ], + [ + 6.975785896766818, + 50.95478176019551 + ], + [ + 6.9755544743115445, + 50.95465236069026 + ], + [ + 6.974110349909748, + 50.95558570570644 + ], + [ + 6.974103174941297, + 50.95559034787996 + ], + [ + 6.974089144629962, + 50.95559938774641 + ], + [ + 6.9740665517725215, + 50.95561396846094 + ], + [ + 6.97377383769922, + 50.95580671477242 + ], + [ + 6.973609554932431, + 50.95589498976502 + ], + [ + 6.973496574522748, + 50.9559558229761 + ], + [ + 6.972968554476648, + 50.95623904640751 + ], + [ + 6.972815112880437, + 50.95632134961196 + ], + [ + 6.971807296388209, + 50.95686190988104 + ], + [ + 6.970587601103418, + 50.95734939069407 + ], + [ + 6.969886119587091, + 50.957695644903545 + ], + [ + 6.9698033160734205, + 50.957736516974656 + ], + [ + 6.96908536399038, + 50.95806987081045 + ], + [ + 6.96807855534625, + 50.95850332932253 + ], + [ + 6.967676896198608, + 50.958654264669256 + ], + [ + 6.9674373238103415, + 50.95874169265558 + ], + [ + 6.967297034228105, + 50.95879288708715 + ], + [ + 6.967327607858018, + 50.95892855823917 + ], + [ + 6.967348676654283, + 50.95902017181194 + ], + [ + 6.967361760114114, + 50.95910592994527 + ], + [ + 6.967408737455439, + 50.95934301392163 + ], + [ + 6.967461252673232, + 50.959602954700486 + ], + [ + 6.967630517224155, + 50.9603987414107 + ], + [ + 6.967647608928845, + 50.96047043561965 + ], + [ + 6.967729209426294, + 50.96086984634872 + ], + [ + 6.967741215577825, + 50.96093221636073 + ], + [ + 6.967750812006913, + 50.96096773413231 + ], + [ + 6.967774449992313, + 50.96110689536587 + ], + [ + 6.96778158645889, + 50.96114216525941 + ], + [ + 6.967872633543881, + 50.96164375966892 + ], + [ + 6.967867294142132, + 50.961644224348674 + ], + [ + 6.96777527672083, + 50.96165522477306 + ], + [ + 6.967223593417511, + 50.96170199825489 + ], + [ + 6.966753431141441, + 50.961746606597735 + ], + [ + 6.966789423605194, + 50.96198257398279 + ], + [ + 6.966790045635106, + 50.96198564717817 + ], + [ + 6.9662795317873405, + 50.9620386238104 + ], + [ + 6.965778580773766, + 50.96208457074457 + ], + [ + 6.965607822336409, + 50.96213524492921 + ], + [ + 6.964792636622981, + 50.96237651579681 + ], + [ + 6.965008874093944, + 50.96268977695712 + ], + [ + 6.9651966194233905, + 50.96296139214826 + ], + [ + 6.965472631747718, + 50.96335481189603 + ], + [ + 6.965513175326375, + 50.963413450543065 + ], + [ + 6.965853631635767, + 50.96346598159834 + ], + [ + 6.965861184664968, + 50.9634635886474 + ], + [ + 6.966319964822035, + 50.96341907424998 + ], + [ + 6.9671127492363905, + 50.96333961884303 + ], + [ + 6.967125040983052, + 50.96333838756343 + ], + [ + 6.967143476486875, + 50.96333654015512 + ], + [ + 6.967563525718147, + 50.963294422392615 + ], + [ + 6.968058316205722, + 50.96324477203082 + ], + [ + 6.968155467293306, + 50.96323858600585 + ], + [ + 6.968165754995001, + 50.963237782918945 + ], + [ + 6.96818099708718, + 50.96323852123128 + ], + [ + 6.96824754353952, + 50.96324171272842 + ], + [ + 6.96827933126033, + 50.96342429429894 + ], + [ + 6.968314176167443, + 50.963624290530674 + ], + [ + 6.968362765502533, + 50.963915402952246 + ], + [ + 6.96828321874685, + 50.96392035396709 + ], + [ + 6.968217757173134, + 50.96392442671636 + ], + [ + 6.968065792765794, + 50.96396034728241 + ], + [ + 6.967944373472046, + 50.9639896969167 + ], + [ + 6.967907950474484, + 50.96399855138648 + ], + [ + 6.967902663383143, + 50.96399983450895 + ], + [ + 6.967898476185007, + 50.964000847176145 + ], + [ + 6.967568476364907, + 50.96408074062946 + ], + [ + 6.967575320404516, + 50.96410963157747 + ], + [ + 6.96770320446282, + 50.96465988276071 + ], + [ + 6.967737393475362, + 50.96480771493641 + ], + [ + 6.967765405827974, + 50.96493534852049 + ], + [ + 6.967887148749318, + 50.965557285780044 + ], + [ + 6.968068974383894, + 50.96560042183876 + ], + [ + 6.968073984282798, + 50.96560161075426 + ], + [ + 6.968078995151116, + 50.96560251638433 + ], + [ + 6.968156192017516, + 50.96560180650982 + ], + [ + 6.968283896431404, + 50.96560120919828 + ], + [ + 6.968283737698732, + 50.96560703346637 + ], + [ + 6.968281569338801, + 50.96568795808715 + ], + [ + 6.968280838105677, + 50.9658820369958 + ], + [ + 6.968280817377578, + 50.96588740768353 + ], + [ + 6.968530949393775, + 50.965861896251134 + ], + [ + 6.9685400585465445, + 50.9659522914047 + ], + [ + 6.968557121039864, + 50.96613450418849 + ], + [ + 6.9685875772679875, + 50.96662326879095 + ], + [ + 6.968589137668638, + 50.9666510289634 + ], + [ + 6.968589909736632, + 50.966662614610996 + ], + [ + 6.968438205884856, + 50.96667278042826 + ], + [ + 6.968352130858603, + 50.96669213288835 + ], + [ + 6.9678935641583175, + 50.966794824216365 + ], + [ + 6.967884283961498, + 50.96679690213982 + ], + [ + 6.9678955678454475, + 50.967598502535466 + ], + [ + 6.968095741195746, + 50.967551266977544 + ], + [ + 6.968232730711298, + 50.9675189386544 + ], + [ + 6.968566594870576, + 50.967440196898764 + ], + [ + 6.968636898526445, + 50.96742361696506 + ], + [ + 6.968705324058416, + 50.967407415328566 + ], + [ + 6.968745138663659, + 50.96807552796171 + ], + [ + 6.968619116622649, + 50.968078412509634 + ], + [ + 6.96844118970844, + 50.96808262517809 + ], + [ + 6.968385552215344, + 50.96808397390611 + ], + [ + 6.9682919557629415, + 50.96808644736775 + ], + [ + 6.968276091759619, + 50.96808686834068 + ], + [ + 6.9682704558811235, + 50.96808692946238 + ], + [ + 6.968260684546285, + 50.96808958346223 + ], + [ + 6.968031339981264, + 50.96814230687248 + ], + [ + 6.968027427405765, + 50.96814318672117 + ], + [ + 6.967961010670988, + 50.9681585307491 + ], + [ + 6.9679151871654215, + 50.968169201152804 + ], + [ + 6.967797744347092, + 50.96819591907373 + ], + [ + 6.96757336028848, + 50.96824696425692 + ], + [ + 6.967576730707503, + 50.968327930389236 + ], + [ + 6.96757975022611, + 50.96840535228484 + ], + [ + 6.967579939669203, + 50.96841018071068 + ], + [ + 6.967716322876662, + 50.968412657098895 + ], + [ + 6.967930790646456, + 50.96840923705954 + ], + [ + 6.968060013064724, + 50.96840715991862 + ], + [ + 6.968076779578062, + 50.968406916566906 + ], + [ + 6.968089330453967, + 50.96840672936171 + ], + [ + 6.968145403607312, + 50.96840581825338 + ], + [ + 6.968230792022926, + 50.968404394645866 + ], + [ + 6.96827192248968, + 50.96840377657434 + ], + [ + 6.9683403449257515, + 50.968402564915095 + ], + [ + 6.968346633976303, + 50.96840245309825 + ], + [ + 6.9683533758573475, + 50.96840234376399 + ], + [ + 6.968367101130911, + 50.968606910776415 + ], + [ + 6.968366799339699, + 50.96863455130346 + ], + [ + 6.96836660900037, + 50.96863731355876 + ], + [ + 6.968366763985729, + 50.96864094252098 + ], + [ + 6.968366220881816, + 50.968726953449924 + ], + [ + 6.96836620704552, + 50.968730110002824 + ], + [ + 6.9683662008661535, + 50.968732666808215 + ], + [ + 6.968366189911395, + 50.96874189326884 + ], + [ + 6.968366299204745, + 50.96876481385197 + ], + [ + 6.968370227394475, + 50.968857052479535 + ], + [ + 6.968370578319411, + 50.96893210752992 + ], + [ + 6.968369976865639, + 50.96897568779674 + ], + [ + 6.968372202244443, + 50.96907185942322 + ], + [ + 6.968372408120834, + 50.969131960798066 + ], + [ + 6.968367422957113, + 50.96952465559802 + ], + [ + 6.96836874353692, + 50.96955063083355 + ], + [ + 6.968824104484575, + 50.96954434292376 + ], + [ + 6.968826094035839, + 50.9695820872699 + ], + [ + 6.96882815691436, + 50.96962121972175 + ], + [ + 6.968757728602529, + 50.969622692676026 + ], + [ + 6.968374045936673, + 50.96963148663419 + ], + [ + 6.968381593835759, + 50.96974574817781 + ], + [ + 6.968382936949346, + 50.96979930842027 + ], + [ + 6.9683528642805435, + 50.96980148958154 + ], + [ + 6.968378052456288, + 50.970107479328014 + ], + [ + 6.968319185747961, + 50.970107763657026 + ], + [ + 6.968322788377941, + 50.97023657223104 + ], + [ + 6.96832641318776, + 50.970366145653784 + ], + [ + 6.968447486582577, + 50.97039010875467 + ], + [ + 6.968503470237217, + 50.9703951218598 + ], + [ + 6.968800144556005, + 50.970387266488395 + ], + [ + 6.968805104031255, + 50.97043193009169 + ], + [ + 6.968813125269433, + 50.97079476080803 + ], + [ + 6.968831802174679, + 50.971049092369995 + ], + [ + 6.969136759821947, + 50.971045469649944 + ], + [ + 6.969144373206773, + 50.971045374526184 + ], + [ + 6.9691516318005045, + 50.971045314602264 + ], + [ + 6.97286845691505, + 50.971021901633556 + ], + [ + 6.974059945346716, + 50.97098706430809 + ], + [ + 6.974837500547227, + 50.970949470260656 + ], + [ + 6.9769325730581215, + 50.9707702378347 + ], + [ + 6.9774667491257265, + 50.97072304633689 + ], + [ + 6.977474365180314, + 50.97072236342763 + ], + [ + 6.977479683511139, + 50.970721880850355 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Riehl", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "503", + "Population_rel": 0.010873681114664902, + "Population_abs": 11831 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.824248633505448, + 50.957046203103104 + ], + [ + 6.8243597470933715, + 50.95699961683254 + ], + [ + 6.824469232008251, + 50.957025079027936 + ], + [ + 6.824548091629028, + 50.95704341929175 + ], + [ + 6.824612677890047, + 50.9569613833301 + ], + [ + 6.824612791440178, + 50.956961238845345 + ], + [ + 6.8246401464444695, + 50.956926491572744 + ], + [ + 6.8246415027651395, + 50.95692477022999 + ], + [ + 6.824642179502671, + 50.956923909532065 + ], + [ + 6.8246428577049265, + 50.95692304796205 + ], + [ + 6.824719615686032, + 50.956929065080836 + ], + [ + 6.825069079296766, + 50.95656594826329 + ], + [ + 6.825797432576806, + 50.95571122765651 + ], + [ + 6.826644565501834, + 50.954910765180834 + ], + [ + 6.8267257501036145, + 50.95483701915369 + ], + [ + 6.826786290773458, + 50.95478202600382 + ], + [ + 6.826810136454167, + 50.95476035299216 + ], + [ + 6.826930712561647, + 50.9546508374451 + ], + [ + 6.827148977911672, + 50.954455483665505 + ], + [ + 6.827308102837622, + 50.95428796582385 + ], + [ + 6.827343525864709, + 50.95427908523922 + ], + [ + 6.827471083778414, + 50.95428132687762 + ], + [ + 6.828830094207103, + 50.954801331349636 + ], + [ + 6.8290611715681315, + 50.95485434587543 + ], + [ + 6.830867755923358, + 50.95552997740535 + ], + [ + 6.832117885826771, + 50.95599805151752 + ], + [ + 6.832163560171595, + 50.95597354496789 + ], + [ + 6.832478630009329, + 50.956091498531094 + ], + [ + 6.833507676671135, + 50.9564767363082 + ], + [ + 6.834396377180857, + 50.95680942301803 + ], + [ + 6.834484641225302, + 50.9568590372562 + ], + [ + 6.834703193385267, + 50.95698188943382 + ], + [ + 6.834703382290297, + 50.95698202244944 + ], + [ + 6.834704034669394, + 50.95698247794783 + ], + [ + 6.834704316018109, + 50.95698267473583 + ], + [ + 6.835375300991585, + 50.95671915362923 + ], + [ + 6.835659406435316, + 50.95657190082547 + ], + [ + 6.835933262397028, + 50.95645270085347 + ], + [ + 6.836093576269028, + 50.95633892815524 + ], + [ + 6.836493482072279, + 50.95607330967411 + ], + [ + 6.837963482020989, + 50.954889402053055 + ], + [ + 6.838829947713742, + 50.95419153030819 + ], + [ + 6.8401127011754586, + 50.95313393740444 + ], + [ + 6.840192549957248, + 50.95310335956272 + ], + [ + 6.840441604156819, + 50.95310505200808 + ], + [ + 6.840711682324818, + 50.953150845769 + ], + [ + 6.840879113324929, + 50.953121887352594 + ], + [ + 6.841017650562157, + 50.95301954118187 + ], + [ + 6.8413349006166175, + 50.95304165255376 + ], + [ + 6.846484377901195, + 50.95429887881616 + ], + [ + 6.84686572669938, + 50.95439212081547 + ], + [ + 6.848093629338935, + 50.95469234047482 + ], + [ + 6.848240882572968, + 50.954730879036745 + ], + [ + 6.848249041349588, + 50.95473301436134 + ], + [ + 6.848257194186955, + 50.954735154972205 + ], + [ + 6.848968805431632, + 50.95492150051111 + ], + [ + 6.849866304141048, + 50.95515650363921 + ], + [ + 6.850350605869406, + 50.95524144285739 + ], + [ + 6.849856597643121, + 50.951271246116974 + ], + [ + 6.84963305656809, + 50.94817673359648 + ], + [ + 6.8496128203437685, + 50.94789659444328 + ], + [ + 6.8496068095160645, + 50.94781337485156 + ], + [ + 6.849596723996982, + 50.94438935296891 + ], + [ + 6.849132203427369, + 50.94431279678597 + ], + [ + 6.848849738010724, + 50.944266246195234 + ], + [ + 6.847135285944305, + 50.94407536052395 + ], + [ + 6.84541790925182, + 50.94388601268518 + ], + [ + 6.8449711771198425, + 50.943836844288846 + ], + [ + 6.844072176834563, + 50.94373822022519 + ], + [ + 6.844071911296527, + 50.94373817484857 + ], + [ + 6.844071645800057, + 50.94373812857332 + ], + [ + 6.84402712365908, + 50.943733520775474 + ], + [ + 6.843200607307791, + 50.943646824356264 + ], + [ + 6.843200060471595, + 50.94364676658523 + ], + [ + 6.843199768624895, + 50.94364673601016 + ], + [ + 6.843198636797693, + 50.94364661436686 + ], + [ + 6.841090616444165, + 50.94342094489739 + ], + [ + 6.840639313427317, + 50.94337137582077 + ], + [ + 6.840418691885361, + 50.943347142818006 + ], + [ + 6.8403152846129585, + 50.94333578525185 + ], + [ + 6.840101593601923, + 50.9433123166355 + ], + [ + 6.839616729760447, + 50.94325903861124 + ], + [ + 6.839258493828581, + 50.94322424115761 + ], + [ + 6.8392037803380825, + 50.94321891402997 + ], + [ + 6.839128410453868, + 50.94321334391329 + ], + [ + 6.838936474952558, + 50.943205824526274 + ], + [ + 6.835733914787644, + 50.94289330612969 + ], + [ + 6.834875468433076, + 50.94279913575509 + ], + [ + 6.83487522198775, + 50.94279910869937 + ], + [ + 6.834875117193035, + 50.94279909686239 + ], + [ + 6.834376222028583, + 50.942744290178474 + ], + [ + 6.83437336651651, + 50.94274397997776 + ], + [ + 6.834369503932186, + 50.942743560255416 + ], + [ + 6.834114765378741, + 50.94271586545749 + ], + [ + 6.833412652799567, + 50.9426395299772 + ], + [ + 6.832782892132762, + 50.94257094798431 + ], + [ + 6.830813871594488, + 50.942356726845055 + ], + [ + 6.830813414104776, + 50.94235667697178 + ], + [ + 6.830792088919203, + 50.94235435689839 + ], + [ + 6.830530223988861, + 50.94232586436259 + ], + [ + 6.8304512086637095, + 50.94231728166248 + ], + [ + 6.830201316009897, + 50.942290079373024 + ], + [ + 6.829435919271341, + 50.94220679373913 + ], + [ + 6.8293904957843745, + 50.94220185418526 + ], + [ + 6.829291345357605, + 50.94219102465633 + ], + [ + 6.829211456287297, + 50.942182352914394 + ], + [ + 6.829211250887055, + 50.94218233110692 + ], + [ + 6.8292110470766145, + 50.942182305731414 + ], + [ + 6.829094435555273, + 50.9421673163182 + ], + [ + 6.829081113583793, + 50.94216582560722 + ], + [ + 6.829076682381098, + 50.942165329478634 + ], + [ + 6.829040476380647, + 50.942161278922725 + ], + [ + 6.828889089982691, + 50.94214434024836 + ], + [ + 6.8288103335320445, + 50.94213586647635 + ], + [ + 6.828708773223352, + 50.94212497723721 + ], + [ + 6.828341195548289, + 50.94208549791086 + ], + [ + 6.8279289417843945, + 50.94204265524583 + ], + [ + 6.825581425196167, + 50.94179101148874 + ], + [ + 6.823533798661464, + 50.941571444214 + ], + [ + 6.8191399154585595, + 50.94110313677239 + ], + [ + 6.815894173083516, + 50.94075834574089 + ], + [ + 6.8158676455511795, + 50.940777636045134 + ], + [ + 6.815425797691721, + 50.940725747304384 + ], + [ + 6.815436800560003, + 50.94070967419829 + ], + [ + 6.814922494063372, + 50.94065480858493 + ], + [ + 6.814423335436517, + 50.94060175328253 + ], + [ + 6.814423311310045, + 50.94060184277014 + ], + [ + 6.8144232593695895, + 50.94060203966422 + ], + [ + 6.814423116285851, + 50.940602571224964 + ], + [ + 6.814327084136366, + 50.94096211887921 + ], + [ + 6.814308823503425, + 50.9410316085725 + ], + [ + 6.814308816001836, + 50.94103164710595 + ], + [ + 6.814308786174936, + 50.94103176706619 + ], + [ + 6.814216338400236, + 50.94109964458258 + ], + [ + 6.814174325207334, + 50.941130427491565 + ], + [ + 6.814116630590579, + 50.941172796828376 + ], + [ + 6.813599774170386, + 50.94155236476856 + ], + [ + 6.813512651521495, + 50.94161632208597 + ], + [ + 6.812756595678101, + 50.9421713662275 + ], + [ + 6.812668609907505, + 50.942235646721656 + ], + [ + 6.812663021815168, + 50.94223990496954 + ], + [ + 6.812663011298637, + 50.942239947044 + ], + [ + 6.8126630042594885, + 50.942239975692694 + ], + [ + 6.812662983250315, + 50.94223999868324 + ], + [ + 6.812643750179443, + 50.942283074499976 + ], + [ + 6.812643734100185, + 50.942283113772014 + ], + [ + 6.8126174923440646, + 50.94234351368272 + ], + [ + 6.812605898081811, + 50.94237018379207 + ], + [ + 6.812194337384596, + 50.94331331070118 + ], + [ + 6.812118090242957, + 50.94348807012812 + ], + [ + 6.812117766681244, + 50.94348883664268 + ], + [ + 6.812117365479053, + 50.94348980136738 + ], + [ + 6.812116377067982, + 50.94349217522846 + ], + [ + 6.8121162776579345, + 50.94349241260389 + ], + [ + 6.812115169628397, + 50.943495029757386 + ], + [ + 6.812103371428624, + 50.94352260438096 + ], + [ + 6.81209841066419, + 50.943533750222656 + ], + [ + 6.81209602321868, + 50.943539056866086 + ], + [ + 6.812094832382625, + 50.9435417093425 + ], + [ + 6.812093649953944, + 50.94354436467467 + ], + [ + 6.812091279034182, + 50.943549561901726 + ], + [ + 6.812088093575854, + 50.94355658312152 + ], + [ + 6.812050892793713, + 50.94363975070454 + ], + [ + 6.812045906895037, + 50.94365091585958 + ], + [ + 6.812045811426124, + 50.943651129924575 + ], + [ + 6.812044423214756, + 50.943654286858305 + ], + [ + 6.812043735910497, + 50.943655856908386 + ], + [ + 6.8120436991874795, + 50.943655941662456 + ], + [ + 6.812043053198451, + 50.943657450428795 + ], + [ + 6.812043006844145, + 50.94365755838656 + ], + [ + 6.812042304489688, + 50.94365920640179 + ], + [ + 6.812037771992921, + 50.94366984131801 + ], + [ + 6.812032922716068, + 50.94368121949123 + ], + [ + 6.812031918029836, + 50.94368357595805 + ], + [ + 6.812031906722992, + 50.9436836045267 + ], + [ + 6.81203090535795, + 50.94368592058307 + ], + [ + 6.812030235922777, + 50.943687473879535 + ], + [ + 6.81202868615896, + 50.943691009127825 + ], + [ + 6.811993085259662, + 50.94377299519633 + ], + [ + 6.811353261424535, + 50.94524245100165 + ], + [ + 6.811352959790004, + 50.94524314417491 + ], + [ + 6.811352945468679, + 50.94524317628454 + ], + [ + 6.81135271576567, + 50.94524373229988 + ], + [ + 6.8113332716347506, + 50.94528576154325 + ], + [ + 6.811332991121071, + 50.945286368770695 + ], + [ + 6.811332978475405, + 50.945286395515396 + ], + [ + 6.811332750304512, + 50.945286888601885 + ], + [ + 6.811441116817214, + 50.945305425985865 + ], + [ + 6.811445548626898, + 50.9453061845182 + ], + [ + 6.811446216612922, + 50.9453062995725 + ], + [ + 6.811446371980104, + 50.94530632586956 + ], + [ + 6.811451492943252, + 50.94530720345036 + ], + [ + 6.811452615736036, + 50.94530739538524 + ], + [ + 6.811454053446014, + 50.94530764179139 + ], + [ + 6.811539938751401, + 50.94532233631106 + ], + [ + 6.8115415078597605, + 50.94532260406675 + ], + [ + 6.811544205409112, + 50.94532306476166 + ], + [ + 6.811548919719786, + 50.94532387085767 + ], + [ + 6.811554061938613, + 50.94532475063125 + ], + [ + 6.812351315443932, + 50.94546103665853 + ], + [ + 6.812483061927656, + 50.94547815396734 + ], + [ + 6.812492113013862, + 50.94547931830552 + ], + [ + 6.812496642824386, + 50.945479900554346 + ], + [ + 6.812501168325604, + 50.945480483621594 + ], + [ + 6.809540971122143, + 50.94849289882888 + ], + [ + 6.809499688975459, + 50.948534931716715 + ], + [ + 6.809755662765911, + 50.94849821772737 + ], + [ + 6.810996324827863, + 50.94832026471611 + ], + [ + 6.811556782693347, + 50.94823992962884 + ], + [ + 6.811565001762262, + 50.948238752607715 + ], + [ + 6.8115691112543555, + 50.94823816499552 + ], + [ + 6.8115732193660685, + 50.94823757645795 + ], + [ + 6.811717891112159, + 50.94821686737989 + ], + [ + 6.811801536983006, + 50.94828508122677 + ], + [ + 6.812340001234602, + 50.94872464319943 + ], + [ + 6.812484665697834, + 50.948842734497774 + ], + [ + 6.812539281657535, + 50.94888639002626 + ], + [ + 6.813516268319543, + 50.94966602772658 + ], + [ + 6.813562360747382, + 50.94970282264148 + ], + [ + 6.81359737546129, + 50.949730774097645 + ], + [ + 6.813681368951182, + 50.94979773300836 + ], + [ + 6.813947337973297, + 50.95001002377921 + ], + [ + 6.814288930625835, + 50.95028264003993 + ], + [ + 6.814318407583546, + 50.95030655544539 + ], + [ + 6.814332155060682, + 50.95031770987133 + ], + [ + 6.815131924681378, + 50.95096657875366 + ], + [ + 6.815632003659017, + 50.95135844300068 + ], + [ + 6.815825201061314, + 50.95150983330688 + ], + [ + 6.8161184143901545, + 50.95173971712191 + ], + [ + 6.816132586932259, + 50.95174962822562 + ], + [ + 6.816160031224754, + 50.95176880220376 + ], + [ + 6.816328655054243, + 50.95188674675833 + ], + [ + 6.816402692438921, + 50.95193866305222 + ], + [ + 6.816403111559317, + 50.951938955998905 + ], + [ + 6.816403530595477, + 50.9519392507428 + ], + [ + 6.8164330148438825, + 50.951959927021164 + ], + [ + 6.816353372437449, + 50.95198829713782 + ], + [ + 6.816340992539957, + 50.951992961859055 + ], + [ + 6.816337043791083, + 50.951994427755636 + ], + [ + 6.81633121418562, + 50.95199662115442 + ], + [ + 6.816331180412275, + 50.95199664300749 + ], + [ + 6.816331051313978, + 50.95199669365678 + ], + [ + 6.816237421000822, + 50.95207741646463 + ], + [ + 6.816120583290863, + 50.952136839170244 + ], + [ + 6.816005092062817, + 50.95219790585543 + ], + [ + 6.815999351335384, + 50.952201755781395 + ], + [ + 6.81599628322428, + 50.95220381375238 + ], + [ + 6.815955833265925, + 50.952230945343615 + ], + [ + 6.815955792126298, + 50.9522309724551 + ], + [ + 6.815955749479791, + 50.95223100133719 + ], + [ + 6.815954704245004, + 50.95223170219528 + ], + [ + 6.815953347343897, + 50.95223261217719 + ], + [ + 6.815950026447686, + 50.95223483810093 + ], + [ + 6.815949960280779, + 50.95223488273203 + ], + [ + 6.815949539885319, + 50.952235163571856 + ], + [ + 6.815945993953802, + 50.95223754267897 + ], + [ + 6.815853541708932, + 50.95229922101693 + ], + [ + 6.815695814839237, + 50.95240464576039 + ], + [ + 6.8156637678597605, + 50.95242768664925 + ], + [ + 6.815663666158574, + 50.95242776029525 + ], + [ + 6.815662810197131, + 50.95242837205488 + ], + [ + 6.815662067528593, + 50.95242890588845 + ], + [ + 6.81531828879699, + 50.952676033096665 + ], + [ + 6.815816782653218, + 50.95277943714184 + ], + [ + 6.8167009623201285, + 50.9530752374857 + ], + [ + 6.816781647968533, + 50.95311510998217 + ], + [ + 6.816785332124813, + 50.953116951581144 + ], + [ + 6.816785862192054, + 50.95311721692123 + ], + [ + 6.816799011987695, + 50.953123715407486 + ], + [ + 6.816866011427541, + 50.95315684098785 + ], + [ + 6.817120817631912, + 50.95328293362739 + ], + [ + 6.817565388383633, + 50.953522389093145 + ], + [ + 6.817910375348596, + 50.95373569793661 + ], + [ + 6.817850331649371, + 50.95377441775276 + ], + [ + 6.8178495065107345, + 50.95377494915919 + ], + [ + 6.8178486181342475, + 50.953775523453785 + ], + [ + 6.817806278766904, + 50.95380282812473 + ], + [ + 6.8177121551425595, + 50.95386357369457 + ], + [ + 6.81788625220994, + 50.95397097750129 + ], + [ + 6.8196561940255425, + 50.95506281028829 + ], + [ + 6.820430317801655, + 50.9555057352833 + ], + [ + 6.820689766643834, + 50.95563658254934 + ], + [ + 6.8211809866314335, + 50.95588418066542 + ], + [ + 6.821640799882389, + 50.95609098699481 + ], + [ + 6.822019412458175, + 50.9562498680885 + ], + [ + 6.822566719261707, + 50.956458589850904 + ], + [ + 6.822780914538947, + 50.95654027488524 + ], + [ + 6.82305659711742, + 50.956653072872896 + ], + [ + 6.823944318959378, + 50.95694556289233 + ], + [ + 6.824063525479367, + 50.9569850096148 + ], + [ + 6.824248633505448, + 50.957046203103104 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Loevenich", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "308", + "Population_rel": 0.008442704312341459, + "Population_abs": 9186 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.141531140384075, + 50.946741612323365 + ], + [ + 7.141567470372736, + 50.946549013575044 + ], + [ + 7.142708205536939, + 50.946404685765565 + ], + [ + 7.142871020889278, + 50.946200696504874 + ], + [ + 7.142824020509712, + 50.94612210247518 + ], + [ + 7.1428207723695945, + 50.9461166591713 + ], + [ + 7.142817806824617, + 50.946111697920315 + ], + [ + 7.143198335940077, + 50.945984729480514 + ], + [ + 7.143268589100949, + 50.94609857824972 + ], + [ + 7.14345597282439, + 50.946167910749004 + ], + [ + 7.1438840025225625, + 50.94609530148054 + ], + [ + 7.1440917167234606, + 50.946163198826056 + ], + [ + 7.14418787884227, + 50.946172550891 + ], + [ + 7.144195513145547, + 50.94617574713643 + ], + [ + 7.144203193227651, + 50.946178937813535 + ], + [ + 7.144218713491148, + 50.946185445822 + ], + [ + 7.144225586921216, + 50.94618808676067 + ], + [ + 7.144230588370958, + 50.94619011785972 + ], + [ + 7.1442357999724395, + 50.94619223414024 + ], + [ + 7.144406149408898, + 50.94617039831299 + ], + [ + 7.144442062178202, + 50.94617982593752 + ], + [ + 7.144466165646743, + 50.94619583980947 + ], + [ + 7.144538488604537, + 50.946285038784325 + ], + [ + 7.144562622438885, + 50.946341691379935 + ], + [ + 7.144555939467634, + 50.946393361947855 + ], + [ + 7.1445618649048965, + 50.946394141424605 + ], + [ + 7.144568450981938, + 50.946394811785744 + ], + [ + 7.144614716683079, + 50.94640266453227 + ], + [ + 7.144623219890057, + 50.94640366933881 + ], + [ + 7.1446671366268895, + 50.94640951964456 + ], + [ + 7.144670161102501, + 50.94639362843632 + ], + [ + 7.144708435592859, + 50.94618132152462 + ], + [ + 7.144731604567469, + 50.946049617594895 + ], + [ + 7.14452717510151, + 50.94579919459123 + ], + [ + 7.144465687763055, + 50.94572387218535 + ], + [ + 7.145301926683319, + 50.94486172721916 + ], + [ + 7.145353546015149, + 50.94478808061554 + ], + [ + 7.145131452894471, + 50.94452383102148 + ], + [ + 7.145109029749784, + 50.94449712725757 + ], + [ + 7.145076843944756, + 50.94445854618299 + ], + [ + 7.145074151896128, + 50.944453648691564 + ], + [ + 7.14493189199624, + 50.94394711171064 + ], + [ + 7.144922071779175, + 50.943911759398844 + ], + [ + 7.144871513204164, + 50.94372970534035 + ], + [ + 7.144825199608348, + 50.943562679485346 + ], + [ + 7.144814363354456, + 50.943523745971206 + ], + [ + 7.144725073795802, + 50.943202250056174 + ], + [ + 7.144675915740879, + 50.94302474369794 + ], + [ + 7.144651192634793, + 50.94294224053896 + ], + [ + 7.144415443259664, + 50.94215783599427 + ], + [ + 7.144413618281784, + 50.9421517597202 + ], + [ + 7.144411790459132, + 50.942145683400895 + ], + [ + 7.144348006794484, + 50.94193346400204 + ], + [ + 7.144194111484056, + 50.94155941387592 + ], + [ + 7.144191218539798, + 50.9415523825931 + ], + [ + 7.1441875170311055, + 50.94154338595577 + ], + [ + 7.144087917920628, + 50.941301312231865 + ], + [ + 7.144078051825674, + 50.94127729188249 + ], + [ + 7.144074028987691, + 50.941267500498334 + ], + [ + 7.144071832038012, + 50.94126215217887 + ], + [ + 7.144070433122926, + 50.94125874746278 + ], + [ + 7.144021347037647, + 50.94113926923893 + ], + [ + 7.1439724549449055, + 50.94102064486563 + ], + [ + 7.14396918544925, + 50.94101288360849 + ], + [ + 7.1439660315327425, + 50.941007081187216 + ], + [ + 7.143842475055175, + 50.94084223807015 + ], + [ + 7.14319236927937, + 50.939981759591085 + ], + [ + 7.142903040379438, + 50.939598779503925 + ], + [ + 7.142425159970127, + 50.93904068527345 + ], + [ + 7.142089425703924, + 50.9385917631188 + ], + [ + 7.142086079054967, + 50.93858530644111 + ], + [ + 7.14208362255816, + 50.93857937206592 + ], + [ + 7.141757505075435, + 50.93780019090915 + ], + [ + 7.14116214725713, + 50.936416725124374 + ], + [ + 7.141109056768511, + 50.93629289272498 + ], + [ + 7.141150119268556, + 50.93616374057312 + ], + [ + 7.141166014615427, + 50.9361137456973 + ], + [ + 7.141179418651592, + 50.93565970741732 + ], + [ + 7.141114088016348, + 50.93540947513675 + ], + [ + 7.141112603789585, + 50.93540379364835 + ], + [ + 7.141111489971259, + 50.93539953094782 + ], + [ + 7.141089448280775, + 50.935315031634396 + ], + [ + 7.141088557259386, + 50.93531242729818 + ], + [ + 7.141087428349998, + 50.9353096851698 + ], + [ + 7.141060360494404, + 50.93527116818621 + ], + [ + 7.140853439486206, + 50.93499085942319 + ], + [ + 7.140627396481648, + 50.93468471475667 + ], + [ + 7.140588372313593, + 50.93463192868639 + ], + [ + 7.140536299858175, + 50.93456022813919 + ], + [ + 7.140417707686495, + 50.93439699444885 + ], + [ + 7.140108323648406, + 50.93397126284437 + ], + [ + 7.140077568637663, + 50.93392909843737 + ], + [ + 7.14001209383522, + 50.93384622634189 + ], + [ + 7.139847661474786, + 50.93349805348629 + ], + [ + 7.139801070777973, + 50.93335548692572 + ], + [ + 7.1398329759447785, + 50.93304881527657 + ], + [ + 7.139910300394169, + 50.93274376756709 + ], + [ + 7.139812961352225, + 50.93246409923245 + ], + [ + 7.139783605615546, + 50.93237976636537 + ], + [ + 7.139750162093224, + 50.932335389763075 + ], + [ + 7.139601669972856, + 50.93213837456715 + ], + [ + 7.139388563691944, + 50.93185562784571 + ], + [ + 7.139042006407241, + 50.93139581033583 + ], + [ + 7.138916928390812, + 50.931229847249604 + ], + [ + 7.13884621379978, + 50.93110365516958 + ], + [ + 7.13884336153776, + 50.93109856339909 + ], + [ + 7.1388412731101045, + 50.93109483644059 + ], + [ + 7.13878481417268, + 50.93099403922673 + ], + [ + 7.1387400739600855, + 50.93091416172301 + ], + [ + 7.138675069288244, + 50.93079811089096 + ], + [ + 7.138532280453146, + 50.930543033585565 + ], + [ + 7.13845310492889, + 50.93035898373159 + ], + [ + 7.1383437697935195, + 50.930104929777556 + ], + [ + 7.137907704762029, + 50.929332675940934 + ], + [ + 7.137297468331378, + 50.92875831329256 + ], + [ + 7.137293756895818, + 50.92875478704449 + ], + [ + 7.137289820020741, + 50.92875095501465 + ], + [ + 7.1372830222155015, + 50.928743431335135 + ], + [ + 7.136917361504969, + 50.9282417410742 + ], + [ + 7.1368642309557195, + 50.928102531303225 + ], + [ + 7.136807908621683, + 50.927955098988576 + ], + [ + 7.136725532222158, + 50.92774010287418 + ], + [ + 7.1367091717081665, + 50.92769753860589 + ], + [ + 7.136681984428812, + 50.92762652658551 + ], + [ + 7.1366795806867565, + 50.927620228681526 + ], + [ + 7.136678843519974, + 50.92761634787434 + ], + [ + 7.136673811043326, + 50.927605963594935 + ], + [ + 7.1367162827636275, + 50.92749737754869 + ], + [ + 7.136744817429946, + 50.92742435271145 + ], + [ + 7.136854946582385, + 50.927315510955594 + ], + [ + 7.136933611949173, + 50.927238001540736 + ], + [ + 7.136969861782492, + 50.927202302648396 + ], + [ + 7.137143309915334, + 50.92703140722199 + ], + [ + 7.137183914238001, + 50.926991390681586 + ], + [ + 7.137257922343896, + 50.92686105575106 + ], + [ + 7.137413840876501, + 50.92658645486063 + ], + [ + 7.137501248720403, + 50.926432560830314 + ], + [ + 7.137544028158999, + 50.926397884186095 + ], + [ + 7.137583139199633, + 50.926366159152884 + ], + [ + 7.1375860147847545, + 50.9263638163344 + ], + [ + 7.1375883475825805, + 50.926361560188056 + ], + [ + 7.137656695642443, + 50.92623874147665 + ], + [ + 7.137694272490291, + 50.926170781052775 + ], + [ + 7.137697944312014, + 50.92616414300625 + ], + [ + 7.137701099405154, + 50.92615843564649 + ], + [ + 7.1378789443799455, + 50.925836831796836 + ], + [ + 7.137954882411876, + 50.92570414660501 + ], + [ + 7.137980818933121, + 50.92565883242894 + ], + [ + 7.138075094626274, + 50.92549424981476 + ], + [ + 7.138134399753392, + 50.92539067675759 + ], + [ + 7.139007639311603, + 50.92386544788849 + ], + [ + 7.139101098361888, + 50.923702173477274 + ], + [ + 7.1392298802954635, + 50.92347740630098 + ], + [ + 7.139248685549034, + 50.923451808128 + ], + [ + 7.139350844449937, + 50.92331295308569 + ], + [ + 7.139622382680247, + 50.923072925164796 + ], + [ + 7.13981536843864, + 50.9228615908142 + ], + [ + 7.139817255711143, + 50.92285458700311 + ], + [ + 7.139818909795276, + 50.92284814966956 + ], + [ + 7.139909177929163, + 50.922478792324085 + ], + [ + 7.139898901621432, + 50.92225740785303 + ], + [ + 7.139892309081049, + 50.9221284921105 + ], + [ + 7.139890859487031, + 50.92212309713987 + ], + [ + 7.1398884826035305, + 50.92211687077481 + ], + [ + 7.139705455070431, + 50.921653440868475 + ], + [ + 7.139622377528454, + 50.92144257068186 + ], + [ + 7.139548861732923, + 50.92125604108607 + ], + [ + 7.1394974403771965, + 50.921125443089025 + ], + [ + 7.1393789029754275, + 50.920824589625084 + ], + [ + 7.139350974390302, + 50.92075371203176 + ], + [ + 7.139317079038224, + 50.92066766336028 + ], + [ + 7.139605270479266, + 50.920143101715055 + ], + [ + 7.139663095722669, + 50.92003762730176 + ], + [ + 7.139719031635302, + 50.920018072719984 + ], + [ + 7.1397935990696935, + 50.91999231985511 + ], + [ + 7.139732830804076, + 50.919987808850145 + ], + [ + 7.1397189362584745, + 50.91998679058402 + ], + [ + 7.13970812810885, + 50.91998601486608 + ], + [ + 7.139587930906015, + 50.91997741069879 + ], + [ + 7.137898293734762, + 50.91978094167788 + ], + [ + 7.137444536274211, + 50.919719023895 + ], + [ + 7.137073256273838, + 50.91966843683837 + ], + [ + 7.135079702856593, + 50.91940665891237 + ], + [ + 7.134999716254935, + 50.91940411017213 + ], + [ + 7.134850470512183, + 50.919413293095396 + ], + [ + 7.134498524252003, + 50.919467327095006 + ], + [ + 7.132964051551782, + 50.91970265923968 + ], + [ + 7.132864020251542, + 50.9197180130582 + ], + [ + 7.131769766715316, + 50.91988612812356 + ], + [ + 7.1316876981647495, + 50.91989159846442 + ], + [ + 7.131572855023482, + 50.91988264452944 + ], + [ + 7.127909909086855, + 50.919376229523905 + ], + [ + 7.1274181891957245, + 50.919308076968186 + ], + [ + 7.12724630153714, + 50.9192924782897 + ], + [ + 7.126987414682878, + 50.919301901220045 + ], + [ + 7.126895991817737, + 50.91930524039399 + ], + [ + 7.126030159517777, + 50.91933685458596 + ], + [ + 7.124461490632182, + 50.91939415324819 + ], + [ + 7.12444665379621, + 50.91939471348636 + ], + [ + 7.1244392416685365, + 50.91939504946621 + ], + [ + 7.124431845579811, + 50.9193954819349 + ], + [ + 7.1241536465526885, + 50.919414009981054 + ], + [ + 7.123781506105859, + 50.91942730408073 + ], + [ + 7.121987979839055, + 50.919484133398065 + ], + [ + 7.121982650187321, + 50.91948430486719 + ], + [ + 7.121977320318417, + 50.919484481728745 + ], + [ + 7.121942221332052, + 50.919485637495306 + ], + [ + 7.120913453691379, + 50.919521775326984 + ], + [ + 7.116780853657464, + 50.91971908031116 + ], + [ + 7.115760323946486, + 50.91990116775961 + ], + [ + 7.114453321377654, + 50.92013435442127 + ], + [ + 7.109707071076077, + 50.92098109199395 + ], + [ + 7.105419437377991, + 50.920135346462246 + ], + [ + 7.104666170291031, + 50.92014967246611 + ], + [ + 7.103928594053837, + 50.92023216478604 + ], + [ + 7.1035303177517335, + 50.92025320977689 + ], + [ + 7.102515014895777, + 50.92030683935682 + ], + [ + 7.101354510635362, + 50.920258289765826 + ], + [ + 7.0999957984667486, + 50.91996645608254 + ], + [ + 7.099879222984473, + 50.91994141606188 + ], + [ + 7.0997568547379135, + 50.919915132234735 + ], + [ + 7.099066065587783, + 50.919920414852264 + ], + [ + 7.099057332388276, + 50.91992048128125 + ], + [ + 7.09903387287914, + 50.91992145547155 + ], + [ + 7.098358090502325, + 50.919985979246654 + ], + [ + 7.098073624804934, + 50.92001350850117 + ], + [ + 7.0982350618871095, + 50.91941706904622 + ], + [ + 7.098381518385376, + 50.91867765894048 + ], + [ + 7.098393676277107, + 50.91861627396802 + ], + [ + 7.098460416298026, + 50.91827931283256 + ], + [ + 7.098509563012986, + 50.917631294328714 + ], + [ + 7.098572460396093, + 50.916801933428125 + ], + [ + 7.0985727024198955, + 50.91679875362182 + ], + [ + 7.098572943058523, + 50.916795572893584 + ], + [ + 7.098574671966685, + 50.916772776096174 + ], + [ + 7.098585662184001, + 50.91653462543637 + ], + [ + 7.098585796422296, + 50.91653171638143 + ], + [ + 7.098585900658385, + 50.91652790297681 + ], + [ + 7.098599436377409, + 50.91623641381248 + ], + [ + 7.0985949433978055, + 50.916226747105235 + ], + [ + 7.098590765493407, + 50.91621769260113 + ], + [ + 7.098589499653687, + 50.91621202937001 + ], + [ + 7.098585501216019, + 50.91620625057536 + ], + [ + 7.098590261429578, + 50.9155571679305 + ], + [ + 7.098606951132283, + 50.91525757286771 + ], + [ + 7.098618287177038, + 50.91505664168285 + ], + [ + 7.098627458903841, + 50.91490876920929 + ], + [ + 7.098638702056976, + 50.91485481691837 + ], + [ + 7.098660674205286, + 50.91459499232121 + ], + [ + 7.098661041703014, + 50.914590443926315 + ], + [ + 7.09866139651505, + 50.91458589262669 + ], + [ + 7.098662114243641, + 50.91457673080136 + ], + [ + 7.098665566365863, + 50.91452833737561 + ], + [ + 7.098759452956845, + 50.91397448848231 + ], + [ + 7.098760905752422, + 50.91396826875836 + ], + [ + 7.098763081566029, + 50.913962111175806 + ], + [ + 7.098810857769508, + 50.91382669142052 + ], + [ + 7.09866857430554, + 50.9138291107369 + ], + [ + 7.098519884314995, + 50.91385139680095 + ], + [ + 7.098510208514268, + 50.913852802270014 + ], + [ + 7.098501206422648, + 50.91385401365851 + ], + [ + 7.098430914593399, + 50.91386358354833 + ], + [ + 7.095485650426754, + 50.91423646088269 + ], + [ + 7.095477747998349, + 50.91423746064352 + ], + [ + 7.0954698469913255, + 50.91423846042702 + ], + [ + 7.0954540418760175, + 50.914240466237345 + ], + [ + 7.095376351451743, + 50.91425037314523 + ], + [ + 7.095275284458652, + 50.91426333140833 + ], + [ + 7.095172526242673, + 50.914276350122186 + ], + [ + 7.094402494360591, + 50.91437404145906 + ], + [ + 7.093901161234223, + 50.914437848885676 + ], + [ + 7.093597918783471, + 50.91447645450097 + ], + [ + 7.09358852252793, + 50.91447766177191 + ], + [ + 7.093578195738598, + 50.914478976157284 + ], + [ + 7.092728112128082, + 50.9145870667883 + ], + [ + 7.092612095009074, + 50.91462429065465 + ], + [ + 7.092570178135583, + 50.91463780754379 + ], + [ + 7.091906697223879, + 50.91472384557965 + ], + [ + 7.091491546310532, + 50.91477636236295 + ], + [ + 7.091428612898231, + 50.91478432338216 + ], + [ + 7.091115027668091, + 50.9147950772817 + ], + [ + 7.091119673368885, + 50.91478181567266 + ], + [ + 7.091120931039127, + 50.9147782342832 + ], + [ + 7.0911225069663235, + 50.914773724557534 + ], + [ + 7.091124491727228, + 50.91476801996607 + ], + [ + 7.090391440925479, + 50.91486574827848 + ], + [ + 7.0903933841966085, + 50.914878261461574 + ], + [ + 7.090394153235014, + 50.91488456690173 + ], + [ + 7.090395154101908, + 50.91489083926071 + ], + [ + 7.090130256713908, + 50.9149396639457 + ], + [ + 7.089750712416294, + 50.91499400008621 + ], + [ + 7.089688145571482, + 50.91500317401625 + ], + [ + 7.089383384759767, + 50.915047861345826 + ], + [ + 7.088916560453441, + 50.91510363864115 + ], + [ + 7.088822403367528, + 50.915114945309035 + ], + [ + 7.088808505521897, + 50.91511660281833 + ], + [ + 7.088800688486055, + 50.91511051113131 + ], + [ + 7.088761639356223, + 50.91508261107352 + ], + [ + 7.088732351389527, + 50.91508665261068 + ], + [ + 7.088723934313164, + 50.91508780987098 + ], + [ + 7.088453197439152, + 50.91512495221617 + ], + [ + 7.088436352881807, + 50.914959217400394 + ], + [ + 7.088426616385952, + 50.914863428418485 + ], + [ + 7.087934264027161, + 50.914544131413834 + ], + [ + 7.087755069440286, + 50.914476133910654 + ], + [ + 7.087422244806612, + 50.91440570341443 + ], + [ + 7.087298110361897, + 50.91438762282107 + ], + [ + 7.087167316394279, + 50.91436448015222 + ], + [ + 7.087033677816069, + 50.91435349960402 + ], + [ + 7.0869328706306725, + 50.91433574157419 + ], + [ + 7.086710896266206, + 50.91433565119323 + ], + [ + 7.086338761972795, + 50.91432347538199 + ], + [ + 7.085941975996969, + 50.914296875719344 + ], + [ + 7.085444138665894, + 50.91430303595307 + ], + [ + 7.085292852534193, + 50.9142852965968 + ], + [ + 7.085138121992552, + 50.9142523147439 + ], + [ + 7.085130812526514, + 50.91425088984886 + ], + [ + 7.085113703862751, + 50.91424956680645 + ], + [ + 7.085112472412713, + 50.9142455327338 + ], + [ + 7.085058201720365, + 50.91407649692725 + ], + [ + 7.084009250949031, + 50.913901065605806 + ], + [ + 7.083441702984106, + 50.91380152163062 + ], + [ + 7.0827785300399, + 50.91368667988015 + ], + [ + 7.082005144449445, + 50.91356293722879 + ], + [ + 7.081818406771133, + 50.913533058425 + ], + [ + 7.08184177290032, + 50.913289857141294 + ], + [ + 7.081852957180389, + 50.913108196255656 + ], + [ + 7.081876500039736, + 50.91272616805687 + ], + [ + 7.081876841022955, + 50.912720816134616 + ], + [ + 7.081877128020212, + 50.912715462425766 + ], + [ + 7.081891429127648, + 50.91242065847912 + ], + [ + 7.08185567950628, + 50.91217908393136 + ], + [ + 7.081809157100958, + 50.911865335328606 + ], + [ + 7.081779141683496, + 50.91164402416482 + ], + [ + 7.081733455940656, + 50.91146438931231 + ], + [ + 7.081692957801024, + 50.9110915235284 + ], + [ + 7.081730248567082, + 50.9108908032831 + ], + [ + 7.081764320077475, + 50.91055742928096 + ], + [ + 7.08175813441429, + 50.910511459916414 + ], + [ + 7.081745026272633, + 50.910166927310684 + ], + [ + 7.08126649783244, + 50.910176127189295 + ], + [ + 7.081130705520851, + 50.910212714175486 + ], + [ + 7.080931154470821, + 50.91022012140487 + ], + [ + 7.080833790941975, + 50.910223735942296 + ], + [ + 7.0807259170917005, + 50.91028749720832 + ], + [ + 7.080718354625618, + 50.9102883675526 + ], + [ + 7.080713251446379, + 50.910288414944354 + ], + [ + 7.0807043646719015, + 50.91028904136734 + ], + [ + 7.080697573286675, + 50.91028935688936 + ], + [ + 7.080692205628455, + 50.91028957440826 + ], + [ + 7.080640103211735, + 50.91029145259746 + ], + [ + 7.080633634827478, + 50.91029131654897 + ], + [ + 7.080627392068455, + 50.91029181646533 + ], + [ + 7.080625192375276, + 50.91030507023698 + ], + [ + 7.080611564424518, + 50.9103979431949 + ], + [ + 7.080575555842298, + 50.91041059151797 + ], + [ + 7.080491550468044, + 50.910438697560274 + ], + [ + 7.079891478104151, + 50.910424566183586 + ], + [ + 7.079079630365804, + 50.91039558124242 + ], + [ + 7.078932045363689, + 50.91039013124355 + ], + [ + 7.078587100964639, + 50.91037739322242 + ], + [ + 7.078129620295465, + 50.910337663001016 + ], + [ + 7.078046131779115, + 50.910330434268246 + ], + [ + 7.078002532726171, + 50.9103265217746 + ], + [ + 7.077619420355804, + 50.91029311536373 + ], + [ + 7.077181031961334, + 50.91025500264887 + ], + [ + 7.076136429726342, + 50.91016441145502 + ], + [ + 7.075825108460364, + 50.91013644905384 + ], + [ + 7.07554562458606, + 50.910109884050556 + ], + [ + 7.0753078384863874, + 50.910087281485445 + ], + [ + 7.074840374297375, + 50.910041723873626 + ], + [ + 7.074810416872603, + 50.91013425492884 + ], + [ + 7.074722962991449, + 50.91019376612618 + ], + [ + 7.0746955782736265, + 50.91021240078407 + ], + [ + 7.072733700871874, + 50.91243473681885 + ], + [ + 7.072547326866512, + 50.91263769805149 + ], + [ + 7.072220544363456, + 50.9129929538921 + ], + [ + 7.071624955380595, + 50.91358677086138 + ], + [ + 7.070940521686516, + 50.91417070921668 + ], + [ + 7.070167238388571, + 50.91467528580263 + ], + [ + 7.069325606329896, + 50.915138751703694 + ], + [ + 7.068622909578822, + 50.91545297169727 + ], + [ + 7.067895477346968, + 50.915737359738614 + ], + [ + 7.066842908908022, + 50.91602354924807 + ], + [ + 7.066378567383201, + 50.916137777940946 + ], + [ + 7.066377447646492, + 50.91614961935235 + ], + [ + 7.066376395229909, + 50.916160454587235 + ], + [ + 7.06637611075714, + 50.91616642437385 + ], + [ + 7.066376113327906, + 50.91617240251308 + ], + [ + 7.066376154955638, + 50.91626337333882 + ], + [ + 7.066383743324112, + 50.916350451707515 + ], + [ + 7.066390059009394, + 50.91640618131972 + ], + [ + 7.066221763968753, + 50.91640485201185 + ], + [ + 7.066020941095013, + 50.91640173788532 + ], + [ + 7.065956806828754, + 50.91640078854247 + ], + [ + 7.0649048782729045, + 50.91639295538446 + ], + [ + 7.064466773535015, + 50.91637555910004 + ], + [ + 7.063953007585139, + 50.91638032485464 + ], + [ + 7.062721433117124, + 50.91639173977877 + ], + [ + 7.061986310246042, + 50.91632500047515 + ], + [ + 7.0617555412663044, + 50.916304108519036 + ], + [ + 7.061748533031283, + 50.91630348939569 + ], + [ + 7.0617415151828835, + 50.91630289619394 + ], + [ + 7.061727475373332, + 50.916301740299424 + ], + [ + 7.061592394827521, + 50.91629071026037 + ], + [ + 7.061074379783347, + 50.916248379195984 + ], + [ + 7.061042234392778, + 50.91632857519558 + ], + [ + 7.0609385360351204, + 50.91659930983163 + ], + [ + 7.060835649745269, + 50.91686848216941 + ], + [ + 7.060833541281825, + 50.91687416172566 + ], + [ + 7.06083193000422, + 50.91688157093245 + ], + [ + 7.060796373558151, + 50.91733089180539 + ], + [ + 7.060791936078315, + 50.91738653033698 + ], + [ + 7.06079159732106, + 50.917390058326106 + ], + [ + 7.060790996487668, + 50.917394619831875 + ], + [ + 7.060696640605824, + 50.91806394836233 + ], + [ + 7.062433528598667, + 50.918167074473494 + ], + [ + 7.0628291188897485, + 50.918839204923444 + ], + [ + 7.063071163484927, + 50.919200981116695 + ], + [ + 7.063134847305892, + 50.91925586501887 + ], + [ + 7.063236539971056, + 50.91932487636506 + ], + [ + 7.06327191692213, + 50.9193437897672 + ], + [ + 7.063278624555584, + 50.91934737621813 + ], + [ + 7.06328655013742, + 50.919351613333696 + ], + [ + 7.063301181973105, + 50.919359435976034 + ], + [ + 7.063219547661515, + 50.91950275193034 + ], + [ + 7.062971488431198, + 50.91990036607345 + ], + [ + 7.0629070568511105, + 50.919996689332685 + ], + [ + 7.062903277017938, + 50.92000236007274 + ], + [ + 7.062901539040613, + 50.92000487733971 + ], + [ + 7.06289765171231, + 50.920010224322105 + ], + [ + 7.062570129045505, + 50.92043592547807 + ], + [ + 7.062218581690198, + 50.92085766898848 + ], + [ + 7.0616899560793005, + 50.92149183541327 + ], + [ + 7.061573825560385, + 50.92157622282926 + ], + [ + 7.061550951324028, + 50.921592822121895 + ], + [ + 7.061545686037884, + 50.92159663613826 + ], + [ + 7.061542474893509, + 50.92159895624197 + ], + [ + 7.061539783018817, + 50.92160090183852 + ], + [ + 7.0615163923316135, + 50.92161787567833 + ], + [ + 7.061445267576423, + 50.921669566495716 + ], + [ + 7.061395079376249, + 50.921712933287516 + ], + [ + 7.061385643880351, + 50.92172112091249 + ], + [ + 7.061380935972439, + 50.92172521758625 + ], + [ + 7.061376232142624, + 50.92172931882437 + ], + [ + 7.061153844988941, + 50.92192341133846 + ], + [ + 7.06107554813518, + 50.92199145561681 + ], + [ + 7.060894142136381, + 50.92200679467091 + ], + [ + 7.060339909450901, + 50.92200843172382 + ], + [ + 7.059203891949006, + 50.92201178034996 + ], + [ + 7.059136195659751, + 50.922011958838496 + ], + [ + 7.059420168550319, + 50.92218069879127 + ], + [ + 7.059677561520158, + 50.92236340407659 + ], + [ + 7.059823822673323, + 50.92249107306605 + ], + [ + 7.059901307082463, + 50.92255859845854 + ], + [ + 7.060109465409244, + 50.922812545344506 + ], + [ + 7.060248381224507, + 50.922992240623614 + ], + [ + 7.060284248669083, + 50.923057176495696 + ], + [ + 7.060327592998296, + 50.923135710921066 + ], + [ + 7.060390703724272, + 50.92326271511229 + ], + [ + 7.060418223826979, + 50.92331809046252 + ], + [ + 7.060492890608057, + 50.92373110462388 + ], + [ + 7.0604925882643474, + 50.923736628910035 + ], + [ + 7.06049227717176, + 50.92374232932677 + ], + [ + 7.060485872537977, + 50.92385895268157 + ], + [ + 7.0604829221598395, + 50.9239124726686 + ], + [ + 7.060482491200149, + 50.923918899580954 + ], + [ + 7.060482087805872, + 50.92392237163067 + ], + [ + 7.060468925303108, + 50.92403106179808 + ], + [ + 7.0604451502506995, + 50.92422712452361 + ], + [ + 7.060373232798472, + 50.92439821679863 + ], + [ + 7.060284498809993, + 50.92458033912621 + ], + [ + 7.0601793677655715, + 50.924773218736355 + ], + [ + 7.059998640340723, + 50.924987998794435 + ], + [ + 7.059874887701243, + 50.92510634567593 + ], + [ + 7.059726308496345, + 50.92524631156026 + ], + [ + 7.059527949379832, + 50.92542394535532 + ], + [ + 7.059426041161171, + 50.92550226971687 + ], + [ + 7.059299109111944, + 50.92567484983581 + ], + [ + 7.059135369664593, + 50.9258802158255 + ], + [ + 7.059124086318935, + 50.925897074821194 + ], + [ + 7.0591125493979945, + 50.92591431632744 + ], + [ + 7.059110492055322, + 50.92591806845515 + ], + [ + 7.059107561510839, + 50.925922149622146 + ], + [ + 7.059145377002367, + 50.92595322195642 + ], + [ + 7.059148507873932, + 50.9259556780211 + ], + [ + 7.059160628211882, + 50.92596520508033 + ], + [ + 7.059172660501042, + 50.925974762152144 + ], + [ + 7.059205126068057, + 50.92601129101241 + ], + [ + 7.059222707283666, + 50.926030954789184 + ], + [ + 7.0592234762156085, + 50.926034976951954 + ], + [ + 7.059224310439062, + 50.92603828520338 + ], + [ + 7.059235542589338, + 50.926088399412876 + ], + [ + 7.059215122598597, + 50.92614746489933 + ], + [ + 7.059171667580153, + 50.92619433510357 + ], + [ + 7.059054416529281, + 50.92627980943256 + ], + [ + 7.058871826455367, + 50.92640677856375 + ], + [ + 7.0587620300669, + 50.926463599519145 + ], + [ + 7.058616057056881, + 50.92656857160231 + ], + [ + 7.05847502558103, + 50.92675296515771 + ], + [ + 7.058476736695854, + 50.92680393826357 + ], + [ + 7.058480417499134, + 50.926813590334405 + ], + [ + 7.058499052602349, + 50.92685243995599 + ], + [ + 7.058536414516303, + 50.92692445311728 + ], + [ + 7.05854055171378, + 50.92693233832555 + ], + [ + 7.058585293956702, + 50.92701733246817 + ], + [ + 7.0589360878226035, + 50.92765131730069 + ], + [ + 7.058969897687999, + 50.927712048043 + ], + [ + 7.059069972999508, + 50.92789119851232 + ], + [ + 7.059330327814175, + 50.92811952799279 + ], + [ + 7.059336779013588, + 50.92812519512907 + ], + [ + 7.059345395809824, + 50.928132785139184 + ], + [ + 7.059498088573221, + 50.92809388431333 + ], + [ + 7.05958791040033, + 50.92807242559795 + ], + [ + 7.059720831641691, + 50.92803859022451 + ], + [ + 7.059758449401211, + 50.928029256800116 + ], + [ + 7.059787381440685, + 50.92802291329091 + ], + [ + 7.059809787500549, + 50.92801700722274 + ], + [ + 7.059816843145329, + 50.92801570799108 + ], + [ + 7.059821514084217, + 50.92801470728519 + ], + [ + 7.059826692995389, + 50.92801305848429 + ], + [ + 7.060076339099705, + 50.92796380762515 + ], + [ + 7.0602410223661725, + 50.92791708904229 + ], + [ + 7.0602842564341906, + 50.927904823307045 + ], + [ + 7.0602979983615635, + 50.92790101079913 + ], + [ + 7.060420086661068, + 50.92786627243383 + ], + [ + 7.060568222724398, + 50.927829346857806 + ], + [ + 7.060599346307984, + 50.92787794049785 + ], + [ + 7.060625241483019, + 50.92791664866504 + ], + [ + 7.060665812467523, + 50.92797750381945 + ], + [ + 7.060666978733388, + 50.927980769908814 + ], + [ + 7.0606687197555855, + 50.92798410850258 + ], + [ + 7.060672987312327, + 50.92799136803919 + ], + [ + 7.060696355577386, + 50.92803102531042 + ], + [ + 7.060781137770029, + 50.92817478193947 + ], + [ + 7.060822919638869, + 50.92824488914824 + ], + [ + 7.060832942019599, + 50.928262999803344 + ], + [ + 7.06088903526188, + 50.92835454639474 + ], + [ + 7.060959570099712, + 50.92846768920438 + ], + [ + 7.061139495083174, + 50.92876048246033 + ], + [ + 7.0611655232962605, + 50.92880278927327 + ], + [ + 7.06117086755371, + 50.928811469684696 + ], + [ + 7.061176094251273, + 50.92881993139595 + ], + [ + 7.061180910032582, + 50.928827734241366 + ], + [ + 7.061315467311368, + 50.92879420932161 + ], + [ + 7.061515707556986, + 50.92874251867436 + ], + [ + 7.06121865579266, + 50.92826730575824 + ], + [ + 7.06148366555603, + 50.92820186304377 + ], + [ + 7.061744833334022, + 50.92861874283048 + ], + [ + 7.061865057242145, + 50.9285868337795 + ], + [ + 7.062454230210023, + 50.92843872618823 + ], + [ + 7.062461522549852, + 50.928447346239736 + ], + [ + 7.062472940606382, + 50.928461510112 + ], + [ + 7.062522332181886, + 50.92852349041328 + ], + [ + 7.062526130760244, + 50.92852248951001 + ], + [ + 7.0625732023876795, + 50.92851009865437 + ], + [ + 7.062590205435262, + 50.92853777285603 + ], + [ + 7.062652179216959, + 50.92863827313318 + ], + [ + 7.062694516535864, + 50.92870481658401 + ], + [ + 7.0631610154628115, + 50.92860672567762 + ], + [ + 7.063186411903744, + 50.928601353337385 + ], + [ + 7.063182640268004, + 50.928794328934195 + ], + [ + 7.063179816799438, + 50.92896266413228 + ], + [ + 7.0631700211444, + 50.92896363210681 + ], + [ + 7.063165395334553, + 50.92896409407578 + ], + [ + 7.063147041975015, + 50.9289658967703 + ], + [ + 7.062762961666429, + 50.929008890527 + ], + [ + 7.062764732365738, + 50.92903802790157 + ], + [ + 7.062766651127033, + 50.92906980107753 + ], + [ + 7.062817160218872, + 50.92971369511601 + ], + [ + 7.062835628796097, + 50.92994914807166 + ], + [ + 7.063027174527316, + 50.93070690727096 + ], + [ + 7.063062444162896, + 50.93084410798629 + ], + [ + 7.063064303129046, + 50.930851465066745 + ], + [ + 7.063078915752372, + 50.9309080635984 + ], + [ + 7.063082983743248, + 50.93091048203917 + ], + [ + 7.063086855714039, + 50.9309126858763 + ], + [ + 7.063959272813682, + 50.93137008772503 + ], + [ + 7.064001961568131, + 50.93139293899164 + ], + [ + 7.063781420000985, + 50.931603196260646 + ], + [ + 7.063713952438689, + 50.93175480659666 + ], + [ + 7.063553329440685, + 50.93211830372472 + ], + [ + 7.063540078280148, + 50.9321483079952 + ], + [ + 7.063538771781236, + 50.93215125422943 + ], + [ + 7.06353782541784, + 50.932153959112156 + ], + [ + 7.0635377035731395, + 50.9321903993909 + ], + [ + 7.063537743072946, + 50.93223261717331 + ], + [ + 7.063533397960404, + 50.93228335835928 + ], + [ + 7.063552252729376, + 50.93251736051686 + ], + [ + 7.063563724036099, + 50.93265847870997 + ], + [ + 7.063610380033742, + 50.93266461645363 + ], + [ + 7.064055850571507, + 50.9327237490526 + ], + [ + 7.063939571982277, + 50.933113872092555 + ], + [ + 7.064180152543612, + 50.93314196663464 + ], + [ + 7.064259921781942, + 50.933169775719115 + ], + [ + 7.064321577540581, + 50.933191277537475 + ], + [ + 7.064445761518154, + 50.9332345248793 + ], + [ + 7.0646113920202875, + 50.933292204242555 + ], + [ + 7.0646820839074245, + 50.933310527126906 + ], + [ + 7.064834318552209, + 50.933370557170896 + ], + [ + 7.065159551443931, + 50.933500251244276 + ], + [ + 7.0653752188658, + 50.933573792620315 + ], + [ + 7.066816142427756, + 50.933984062171156 + ], + [ + 7.066871220269045, + 50.93399977330556 + ], + [ + 7.066962523244763, + 50.93402395910625 + ], + [ + 7.067173869292419, + 50.934079853770044 + ], + [ + 7.0681835213470325, + 50.93428458386416 + ], + [ + 7.068256393707731, + 50.934299129138296 + ], + [ + 7.069003292835258, + 50.93444546009871 + ], + [ + 7.069084767251261, + 50.934461466509184 + ], + [ + 7.069634413346813, + 50.934568948086095 + ], + [ + 7.069639543153906, + 50.9345699376727 + ], + [ + 7.0696434067230225, + 50.93457070935995 + ], + [ + 7.069807905531188, + 50.934602950108435 + ], + [ + 7.0698925687459235, + 50.93461936662322 + ], + [ + 7.070199844777458, + 50.93472442088679 + ], + [ + 7.070426787401099, + 50.934825898114006 + ], + [ + 7.07050540089976, + 50.93476072095638 + ], + [ + 7.070516786002654, + 50.93475132910095 + ], + [ + 7.070519746450655, + 50.934748887691356 + ], + [ + 7.070522690202604, + 50.93474643701206 + ], + [ + 7.070533339538052, + 50.93473728391684 + ], + [ + 7.070769823394904, + 50.93452916170825 + ], + [ + 7.071366475307463, + 50.934004181889286 + ], + [ + 7.071438870685501, + 50.933941412405545 + ], + [ + 7.071877855098024, + 50.933563230306575 + ], + [ + 7.071982031422271, + 50.933478582229824 + ], + [ + 7.072238160137569, + 50.93327118084601 + ], + [ + 7.072745938855789, + 50.932859923311646 + ], + [ + 7.073422145213076, + 50.932313081530076 + ], + [ + 7.07361409406465, + 50.9321581355317 + ], + [ + 7.073626035618108, + 50.9321480933245 + ], + [ + 7.0736381813964035, + 50.93213813722773 + ], + [ + 7.073960544466295, + 50.93187340054804 + ], + [ + 7.07432598675801, + 50.93157155624615 + ], + [ + 7.0745665631478065, + 50.931368459329484 + ], + [ + 7.074612875589125, + 50.93132874908879 + ], + [ + 7.074977007562464, + 50.93103144183663 + ], + [ + 7.075104737915362, + 50.93092616756117 + ], + [ + 7.075330859239256, + 50.93076888989185 + ], + [ + 7.075432830995282, + 50.93068852116929 + ], + [ + 7.075552077598623, + 50.930616405517206 + ], + [ + 7.07609692832319, + 50.930354685789496 + ], + [ + 7.076331509296155, + 50.9302466707191 + ], + [ + 7.0768978979447095, + 50.92997635173008 + ], + [ + 7.077669951978688, + 50.929623042035644 + ], + [ + 7.0778558945131325, + 50.92953808220341 + ], + [ + 7.078496133939307, + 50.929255022386094 + ], + [ + 7.078781726388016, + 50.929124463118946 + ], + [ + 7.079579304709663, + 50.92875049876588 + ], + [ + 7.079790024739269, + 50.92862404570577 + ], + [ + 7.079816760079036, + 50.92863435331337 + ], + [ + 7.079877001084576, + 50.928657580106915 + ], + [ + 7.079501900685743, + 50.92902584107203 + ], + [ + 7.0795241450685245, + 50.92907732421012 + ], + [ + 7.079715578419296, + 50.929159064426045 + ], + [ + 7.081840078929341, + 50.929974680948476 + ], + [ + 7.082194869120076, + 50.930104524449554 + ], + [ + 7.082499019464312, + 50.93021586794798 + ], + [ + 7.083007322921773, + 50.93040181637423 + ], + [ + 7.083391832084162, + 50.93054315603392 + ], + [ + 7.0834331512564335, + 50.93055823413596 + ], + [ + 7.083558837086041, + 50.93060453099519 + ], + [ + 7.083571033920106, + 50.93060909224472 + ], + [ + 7.083708910904208, + 50.93065968028608 + ], + [ + 7.084071898457852, + 50.93079285790474 + ], + [ + 7.084088255297235, + 50.93079890837042 + ], + [ + 7.084811993833077, + 50.9310667181227 + ], + [ + 7.084919559633106, + 50.93111668780507 + ], + [ + 7.084951364851936, + 50.93113248346477 + ], + [ + 7.085046642299667, + 50.93118005069453 + ], + [ + 7.085103077811794, + 50.931202897544594 + ], + [ + 7.085181914716237, + 50.93123470613676 + ], + [ + 7.085416016318011, + 50.931324490841554 + ], + [ + 7.085507347068759, + 50.93136750963226 + ], + [ + 7.08562270170576, + 50.931421990790916 + ], + [ + 7.085990411634481, + 50.93155432785021 + ], + [ + 7.086008085292325, + 50.93156069372554 + ], + [ + 7.08605522223982, + 50.93158400011667 + ], + [ + 7.086178922184161, + 50.93164253786672 + ], + [ + 7.086204679259142, + 50.9316551528045 + ], + [ + 7.08623489513795, + 50.931669884187315 + ], + [ + 7.086330215987223, + 50.93170702204577 + ], + [ + 7.086342968874012, + 50.93171094817289 + ], + [ + 7.0864335252971955, + 50.931738961146856 + ], + [ + 7.087010502615395, + 50.93194645653177 + ], + [ + 7.087189101745031, + 50.932010859110996 + ], + [ + 7.087310200933327, + 50.93205504236137 + ], + [ + 7.08741819201245, + 50.93209251102813 + ], + [ + 7.087498658630622, + 50.93212088668278 + ], + [ + 7.08756702512602, + 50.93214281257925 + ], + [ + 7.087718036854033, + 50.93219507246488 + ], + [ + 7.087836746371861, + 50.93223459778697 + ], + [ + 7.087895291924744, + 50.932274593609826 + ], + [ + 7.08800261686202, + 50.93232006863967 + ], + [ + 7.088202134823706, + 50.93239039281726 + ], + [ + 7.088473514691612, + 50.93248611592677 + ], + [ + 7.088866253179775, + 50.932606774295486 + ], + [ + 7.089164313099894, + 50.932687414954955 + ], + [ + 7.089180631686898, + 50.93269175708063 + ], + [ + 7.089388762331879, + 50.93273485077202 + ], + [ + 7.089457929050741, + 50.93274229541302 + ], + [ + 7.08981376674409, + 50.93278122230785 + ], + [ + 7.08998277546417, + 50.932787735334855 + ], + [ + 7.090000574641542, + 50.93278842227685 + ], + [ + 7.090018372397257, + 50.932789109192875 + ], + [ + 7.090130000699875, + 50.93279337100177 + ], + [ + 7.090204444286198, + 50.93279527331816 + ], + [ + 7.090220740068142, + 50.93279562445187 + ], + [ + 7.090237035703098, + 50.93279597917832 + ], + [ + 7.090320024958982, + 50.932798144435836 + ], + [ + 7.090328205148836, + 50.9327982611653 + ], + [ + 7.090336382701461, + 50.932798407530036 + ], + [ + 7.090680889596688, + 50.93280269542859 + ], + [ + 7.0907924416797155, + 50.93279158434844 + ], + [ + 7.091184381054858, + 50.9326711476275 + ], + [ + 7.091318465228091, + 50.9326747376176 + ], + [ + 7.091331844324802, + 50.93267489161365 + ], + [ + 7.09136643794838, + 50.932676123645045 + ], + [ + 7.091452578666291, + 50.932679247080564 + ], + [ + 7.091507102139469, + 50.932674870907874 + ], + [ + 7.091536285299595, + 50.93276080634542 + ], + [ + 7.091509839058328, + 50.93279170778503 + ], + [ + 7.091537469426894, + 50.93287208405622 + ], + [ + 7.091568027368311, + 50.93295593924776 + ], + [ + 7.091575948600473, + 50.932978338760876 + ], + [ + 7.09157883867753, + 50.932986312090314 + ], + [ + 7.0916007996060095, + 50.93304327968394 + ], + [ + 7.091603844161194, + 50.93305179065875 + ], + [ + 7.091610374468679, + 50.93306943858209 + ], + [ + 7.09164111927369, + 50.93306411691129 + ], + [ + 7.091660551918548, + 50.93306168792935 + ], + [ + 7.091682119393778, + 50.93305932891749 + ], + [ + 7.091690186959648, + 50.93306365812321 + ], + [ + 7.091744233686786, + 50.933093537060145 + ], + [ + 7.091847597934793, + 50.933255098244054 + ], + [ + 7.09188014132184, + 50.933277986534385 + ], + [ + 7.091931672204639, + 50.933309775875856 + ], + [ + 7.0919443770947606, + 50.93331774773155 + ], + [ + 7.0920875293608585, + 50.933361984234935 + ], + [ + 7.092247828174898, + 50.933385204769515 + ], + [ + 7.09277882444904, + 50.9334619467271 + ], + [ + 7.092865267150783, + 50.93346590145779 + ], + [ + 7.092997628756217, + 50.9334746398916 + ], + [ + 7.093013399652583, + 50.933473772416995 + ], + [ + 7.09302462469032, + 50.93347321830676 + ], + [ + 7.093060855231796, + 50.93347126045205 + ], + [ + 7.093094613317795, + 50.93347310157685 + ], + [ + 7.093114980421048, + 50.933474169048296 + ], + [ + 7.0931296614739, + 50.9334753801694 + ], + [ + 7.093169429480714, + 50.93347869366757 + ], + [ + 7.093332671185593, + 50.93349999746792 + ], + [ + 7.093541395109105, + 50.933543797595654 + ], + [ + 7.093727711050796, + 50.933590504219325 + ], + [ + 7.094033734289304, + 50.93368256286845 + ], + [ + 7.094114395413182, + 50.933706797327275 + ], + [ + 7.0942722388425485, + 50.933752601134756 + ], + [ + 7.094314636636483, + 50.933764878844336 + ], + [ + 7.0943361118224475, + 50.93377070023182 + ], + [ + 7.094369336422193, + 50.933780096812924 + ], + [ + 7.094549405994297, + 50.933815174821405 + ], + [ + 7.094595986620122, + 50.933823907064365 + ], + [ + 7.094971997128704, + 50.93392771261603 + ], + [ + 7.095052719184459, + 50.93395455286654 + ], + [ + 7.095341826297519, + 50.9340166530651 + ], + [ + 7.095367133685314, + 50.93402207811102 + ], + [ + 7.095579607787149, + 50.93407995320738 + ], + [ + 7.095643189667099, + 50.93410380724752 + ], + [ + 7.09568945024536, + 50.93411101390813 + ], + [ + 7.095713214261531, + 50.93413551165416 + ], + [ + 7.095768272689509, + 50.9341537827492 + ], + [ + 7.09579019966463, + 50.93416067787953 + ], + [ + 7.095811855417818, + 50.934168115393796 + ], + [ + 7.095927585779221, + 50.934207481284346 + ], + [ + 7.096017686834842, + 50.93423989519004 + ], + [ + 7.0960755039283505, + 50.9342605674598 + ], + [ + 7.096092700244658, + 50.934265889740246 + ], + [ + 7.096150457970109, + 50.93428404458951 + ], + [ + 7.096240542873459, + 50.93430971734003 + ], + [ + 7.096443915511372, + 50.93436767625549 + ], + [ + 7.096680067131891, + 50.934440158820884 + ], + [ + 7.09669697478713, + 50.93444530362755 + ], + [ + 7.09682668520639, + 50.93449235765076 + ], + [ + 7.096905800985887, + 50.93452334615575 + ], + [ + 7.097102169946957, + 50.934579841594235 + ], + [ + 7.097251874243238, + 50.9346240993609 + ], + [ + 7.097459457614825, + 50.93468552290864 + ], + [ + 7.097520850479671, + 50.93470094649536 + ], + [ + 7.097712043365724, + 50.934749132780766 + ], + [ + 7.097720848463904, + 50.93475138346522 + ], + [ + 7.097729652067256, + 50.93475363592337 + ], + [ + 7.09797080609716, + 50.93481492386577 + ], + [ + 7.0983660901472385, + 50.934945146261825 + ], + [ + 7.098421861117024, + 50.93496340881171 + ], + [ + 7.098535072141146, + 50.93500441375596 + ], + [ + 7.098592755048657, + 50.93502535508544 + ], + [ + 7.0986752349260716, + 50.93506017628675 + ], + [ + 7.0986875258527835, + 50.93506860112795 + ], + [ + 7.098712537561993, + 50.935085625088504 + ], + [ + 7.098729456390524, + 50.93509724158527 + ], + [ + 7.098734298375367, + 50.93510348916439 + ], + [ + 7.098743394611294, + 50.93511517971444 + ], + [ + 7.098758508465448, + 50.9351347234621 + ], + [ + 7.098780171526635, + 50.935184680552695 + ], + [ + 7.098788447895639, + 50.9352038404345 + ], + [ + 7.098821612559719, + 50.935276971610236 + ], + [ + 7.098838699359989, + 50.93530171071151 + ], + [ + 7.09888672369485, + 50.93537155566653 + ], + [ + 7.098917294251392, + 50.93540102283674 + ], + [ + 7.098931558826108, + 50.935414732062426 + ], + [ + 7.098908419426362, + 50.93542888352951 + ], + [ + 7.098900848873089, + 50.935433629387326 + ], + [ + 7.098875745249654, + 50.935448968395015 + ], + [ + 7.0989081157061555, + 50.93548839652729 + ], + [ + 7.098890463201905, + 50.93553018388623 + ], + [ + 7.098941651259195, + 50.935577255441075 + ], + [ + 7.098988577352204, + 50.93563066012452 + ], + [ + 7.099012551954262, + 50.935657942333094 + ], + [ + 7.0990289947959155, + 50.93568556416328 + ], + [ + 7.099075832415819, + 50.93576539870167 + ], + [ + 7.09907290636331, + 50.935792125045104 + ], + [ + 7.099069115231835, + 50.93585454644664 + ], + [ + 7.099056172451011, + 50.93591039918555 + ], + [ + 7.099054436752836, + 50.93591680225569 + ], + [ + 7.0990526968236995, + 50.93592320435754 + ], + [ + 7.099041043066523, + 50.935943087439966 + ], + [ + 7.099020789245629, + 50.93597707816324 + ], + [ + 7.098992623557118, + 50.93602543685257 + ], + [ + 7.098980455715318, + 50.936046406979735 + ], + [ + 7.098960364785398, + 50.93609936427915 + ], + [ + 7.098950713647004, + 50.93612444499605 + ], + [ + 7.098945398329058, + 50.936206748035644 + ], + [ + 7.098951663498825, + 50.93621900492885 + ], + [ + 7.098982597995934, + 50.93628199899787 + ], + [ + 7.099040193725998, + 50.93634141604895 + ], + [ + 7.0991046431179665, + 50.93638980068241 + ], + [ + 7.099186829829284, + 50.936442244207406 + ], + [ + 7.099240019006993, + 50.93645954246747 + ], + [ + 7.099282644168707, + 50.9364813444852 + ], + [ + 7.099308493073352, + 50.93648550578405 + ], + [ + 7.099360478332158, + 50.936494004822414 + ], + [ + 7.099420948215078, + 50.93650026765607 + ], + [ + 7.099466174515229, + 50.936505684220165 + ], + [ + 7.099497960739486, + 50.93650826122942 + ], + [ + 7.099586385309132, + 50.93652963235836 + ], + [ + 7.099639678458451, + 50.93655133360114 + ], + [ + 7.099710992936924, + 50.93659515926255 + ], + [ + 7.099734224099796, + 50.93660896397586 + ], + [ + 7.099807511693712, + 50.93665205184124 + ], + [ + 7.099873868874611, + 50.936708868026685 + ], + [ + 7.099961853989988, + 50.936783909187604 + ], + [ + 7.100108069108241, + 50.93690289910428 + ], + [ + 7.100137435190953, + 50.936923477735796 + ], + [ + 7.100170472845046, + 50.93695489855089 + ], + [ + 7.10018869380822, + 50.93697342512391 + ], + [ + 7.100199484410872, + 50.93698456034052 + ], + [ + 7.100244801636175, + 50.93702997896355 + ], + [ + 7.100279367697113, + 50.93706588005337 + ], + [ + 7.1002997895904, + 50.93708726192068 + ], + [ + 7.1004083082701115, + 50.93714008538772 + ], + [ + 7.100494400909497, + 50.93717711891851 + ], + [ + 7.100660527195717, + 50.93724755721758 + ], + [ + 7.100751205414244, + 50.937303963650244 + ], + [ + 7.10078054418202, + 50.93732337430071 + ], + [ + 7.1008140759149825, + 50.93734562138901 + ], + [ + 7.10083912376272, + 50.93737001572803 + ], + [ + 7.100907558773524, + 50.93743643071237 + ], + [ + 7.1009503032531835, + 50.93747522207894 + ], + [ + 7.101007584851254, + 50.93752717911224 + ], + [ + 7.101059021721713, + 50.937566606480935 + ], + [ + 7.101092578098704, + 50.93758381926491 + ], + [ + 7.101116482687484, + 50.93759599961154 + ], + [ + 7.101205517123154, + 50.93762500419619 + ], + [ + 7.101268807412458, + 50.93763618287384 + ], + [ + 7.10149008579282, + 50.93765027534519 + ], + [ + 7.101581923580517, + 50.93765938639888 + ], + [ + 7.1016031303086296, + 50.93766574887627 + ], + [ + 7.101632647655108, + 50.937674638790455 + ], + [ + 7.101676190264063, + 50.93769301568016 + ], + [ + 7.101763409858395, + 50.93772940825332 + ], + [ + 7.101822458268061, + 50.937747728730976 + ], + [ + 7.101912753235545, + 50.93777582152911 + ], + [ + 7.102005718002805, + 50.93779651814944 + ], + [ + 7.102058639705325, + 50.937808423586816 + ], + [ + 7.102214102254601, + 50.93784282336445 + ], + [ + 7.10229787686414, + 50.93785389828541 + ], + [ + 7.102348197962878, + 50.93786049555922 + ], + [ + 7.102353109109293, + 50.937861252608556 + ], + [ + 7.1023598168294395, + 50.93786231766271 + ], + [ + 7.102477948054017, + 50.93787610847943 + ], + [ + 7.102499925774512, + 50.93787895693051 + ], + [ + 7.102570911976974, + 50.937884669558315 + ], + [ + 7.102655225110009, + 50.9379064355813 + ], + [ + 7.102740877522059, + 50.93794275248087 + ], + [ + 7.102805337945868, + 50.937961290818244 + ], + [ + 7.102846290185554, + 50.93798436659977 + ], + [ + 7.102854478235999, + 50.93798770498291 + ], + [ + 7.102906701177615, + 50.93801045845799 + ], + [ + 7.102915693422511, + 50.93801355268793 + ], + [ + 7.102927037155788, + 50.93801811421312 + ], + [ + 7.103006406040783, + 50.938053059809235 + ], + [ + 7.1030339910201095, + 50.93806439570447 + ], + [ + 7.103128807070541, + 50.938103142893816 + ], + [ + 7.103282178813902, + 50.93816335938654 + ], + [ + 7.103314202342695, + 50.93817591221365 + ], + [ + 7.103367049569883, + 50.93819662687871 + ], + [ + 7.103425323333394, + 50.93823023567355 + ], + [ + 7.103479845469101, + 50.93826163222194 + ], + [ + 7.103643389154631, + 50.93833676569 + ], + [ + 7.1039062667077415, + 50.93843711782409 + ], + [ + 7.104013386671078, + 50.93848464671607 + ], + [ + 7.1040864267171395, + 50.93851694718863 + ], + [ + 7.104138619127642, + 50.93854009532672 + ], + [ + 7.1041911906280895, + 50.93855514995664 + ], + [ + 7.104313036149712, + 50.938581683798304 + ], + [ + 7.104408282412728, + 50.93860847002881 + ], + [ + 7.1044524974331065, + 50.93862513091441 + ], + [ + 7.1045169554305865, + 50.9386434883838 + ], + [ + 7.1046007808438985, + 50.93867460740906 + ], + [ + 7.104653859337719, + 50.93870502843776 + ], + [ + 7.104821488551011, + 50.93880232474353 + ], + [ + 7.104835617627942, + 50.93881019237768 + ], + [ + 7.104958455161311, + 50.93887851693136 + ], + [ + 7.1049965812280425, + 50.93889640442553 + ], + [ + 7.105023057394768, + 50.93890891889381 + ], + [ + 7.105076090765879, + 50.9389374521359 + ], + [ + 7.105083165235733, + 50.938941790361156 + ], + [ + 7.105188124380428, + 50.9390061487888 + ], + [ + 7.105230057690711, + 50.93904054100334 + ], + [ + 7.105241425832474, + 50.939049065277835 + ], + [ + 7.105247939958051, + 50.939053812600925 + ], + [ + 7.105257273403053, + 50.939061512413595 + ], + [ + 7.1053321702382135, + 50.939128748200766 + ], + [ + 7.10539739645822, + 50.93918548255482 + ], + [ + 7.105440690002971, + 50.93922318752502 + ], + [ + 7.1054511478007525, + 50.939232258205806 + ], + [ + 7.105539628952615, + 50.93927960281016 + ], + [ + 7.1057461354973315, + 50.93939028335846 + ], + [ + 7.106122896762734, + 50.93963661776192 + ], + [ + 7.1062661620739105, + 50.93972623278101 + ], + [ + 7.106390605201536, + 50.9397960693787 + ], + [ + 7.106412274905489, + 50.93980386396623 + ], + [ + 7.106503542124123, + 50.9398367094624 + ], + [ + 7.106566327427507, + 50.93983242784171 + ], + [ + 7.106696728279832, + 50.939823640648875 + ], + [ + 7.10677326592568, + 50.93982929683206 + ], + [ + 7.1069329144546955, + 50.939901765092856 + ], + [ + 7.106992099646841, + 50.939931587954206 + ], + [ + 7.107005747420111, + 50.939967056968435 + ], + [ + 7.107037753428512, + 50.93997879904966 + ], + [ + 7.107177267480698, + 50.94003015268985 + ], + [ + 7.10727759454944, + 50.94006695685106 + ], + [ + 7.107324034944341, + 50.94006336944562 + ], + [ + 7.107342394589418, + 50.94007560069966 + ], + [ + 7.1073762305613295, + 50.94009847225453 + ], + [ + 7.107443408210821, + 50.94011734164146 + ], + [ + 7.107541749775552, + 50.94014247746721 + ], + [ + 7.1075679006023185, + 50.940147263270624 + ], + [ + 7.107624350076929, + 50.940157784366136 + ], + [ + 7.107681903000797, + 50.940202724735066 + ], + [ + 7.107776062750647, + 50.9402732965901 + ], + [ + 7.107861392599014, + 50.940337570038075 + ], + [ + 7.108039221231484, + 50.94040851560491 + ], + [ + 7.108241324013814, + 50.94048911944694 + ], + [ + 7.108384441291458, + 50.940566237310726 + ], + [ + 7.108441342855977, + 50.94060165421344 + ], + [ + 7.108452463652613, + 50.9406086506447 + ], + [ + 7.108486733671654, + 50.94063772009557 + ], + [ + 7.108492019095466, + 50.9406445913995 + ], + [ + 7.108516236479989, + 50.94067573467554 + ], + [ + 7.108526677479411, + 50.94071393056619 + ], + [ + 7.108534278972526, + 50.94076428925912 + ], + [ + 7.108534126742235, + 50.94076986372235 + ], + [ + 7.108532043185591, + 50.94083775320822 + ], + [ + 7.1085302927484575, + 50.94089575153636 + ], + [ + 7.108528873012982, + 50.94093774571997 + ], + [ + 7.1085469556577285, + 50.941093809583194 + ], + [ + 7.108552825883442, + 50.94114319589475 + ], + [ + 7.1085782795783095, + 50.94127410986073 + ], + [ + 7.108658979273867, + 50.941442613615045 + ], + [ + 7.108721303272503, + 50.941514565662395 + ], + [ + 7.108733551937056, + 50.9415211009772 + ], + [ + 7.108802161564571, + 50.94155820479271 + ], + [ + 7.108826750332153, + 50.941563095410814 + ], + [ + 7.108898375317653, + 50.941577426765654 + ], + [ + 7.109029680101423, + 50.94159442723053 + ], + [ + 7.1090883321515745, + 50.94161491670582 + ], + [ + 7.109119890320895, + 50.94162570302535 + ], + [ + 7.1091280948527045, + 50.94162841617242 + ], + [ + 7.109137160727346, + 50.94163130155684 + ], + [ + 7.109294705179988, + 50.94165222701364 + ], + [ + 7.109317937769085, + 50.941659916855045 + ], + [ + 7.109367986228536, + 50.941676341150334 + ], + [ + 7.109442734406595, + 50.94170232898129 + ], + [ + 7.109494731897401, + 50.941722959610395 + ], + [ + 7.109527456338317, + 50.94173394997242 + ], + [ + 7.109539188589653, + 50.94173763936006 + ], + [ + 7.10955098886874, + 50.94174123091849 + ], + [ + 7.109622178151663, + 50.94176912250756 + ], + [ + 7.109675271243429, + 50.94178794419628 + ], + [ + 7.1097466640323335, + 50.94180443512575 + ], + [ + 7.109792994760092, + 50.94181415277613 + ], + [ + 7.109815161653057, + 50.94181888615642 + ], + [ + 7.109826437108867, + 50.94182039706544 + ], + [ + 7.109900655229754, + 50.9418302298182 + ], + [ + 7.109915370652302, + 50.94183249341447 + ], + [ + 7.110021278647565, + 50.94185910584835 + ], + [ + 7.110031889272836, + 50.94186195231566 + ], + [ + 7.11004249078081, + 50.94186481302415 + ], + [ + 7.1100891663374925, + 50.94187722792113 + ], + [ + 7.11011292900635, + 50.941889227819686 + ], + [ + 7.110155550564577, + 50.94191048611782 + ], + [ + 7.1101840589796845, + 50.9419245980741 + ], + [ + 7.1102269352187895, + 50.9419564621166 + ], + [ + 7.11031180803449, + 50.94201921000255 + ], + [ + 7.110343842923369, + 50.94204991821766 + ], + [ + 7.110360584984868, + 50.94206585064672 + ], + [ + 7.110387073881088, + 50.94209670111751 + ], + [ + 7.110395117285422, + 50.942105884255625 + ], + [ + 7.110403273635596, + 50.94213169567718 + ], + [ + 7.110423387268059, + 50.942193531106035 + ], + [ + 7.110407889107885, + 50.94227161715746 + ], + [ + 7.110403949054886, + 50.942291341089586 + ], + [ + 7.110397447689024, + 50.94232304620066 + ], + [ + 7.110389169844624, + 50.94235180053964 + ], + [ + 7.110384028224045, + 50.942368929257846 + ], + [ + 7.1103841507467225, + 50.942374052192825 + ], + [ + 7.110384434736252, + 50.94238600567697 + ], + [ + 7.11038543180345, + 50.94245170831974 + ], + [ + 7.110398532504751, + 50.94247603488184 + ], + [ + 7.110411777669642, + 50.94250045011899 + ], + [ + 7.110452730735274, + 50.942541142532875 + ], + [ + 7.110511616742908, + 50.942600001732266 + ], + [ + 7.110538433216423, + 50.942626715016914 + ], + [ + 7.110608142460741, + 50.94276952194473 + ], + [ + 7.110839761652634, + 50.943015003510084 + ], + [ + 7.1108420669553585, + 50.943012495627116 + ], + [ + 7.110844685138369, + 50.943009573705666 + ], + [ + 7.110848964433228, + 50.94300479450604 + ], + [ + 7.110863082903257, + 50.94298875085833 + ], + [ + 7.1108986389977735, + 50.942948462018485 + ], + [ + 7.111143393144514, + 50.94266514075953 + ], + [ + 7.111150640961891, + 50.94266754779057 + ], + [ + 7.1111562607348775, + 50.942669592120794 + ], + [ + 7.1111657867631095, + 50.942673144020375 + ], + [ + 7.111665104062235, + 50.942859454523315 + ], + [ + 7.111677046085485, + 50.9428639151385 + ], + [ + 7.111686982604996, + 50.94286763192166 + ], + [ + 7.111719155783112, + 50.94287968208145 + ], + [ + 7.111726634004067, + 50.94288248222533 + ], + [ + 7.111731868773627, + 50.94288443845875 + ], + [ + 7.111763408609396, + 50.942896204957336 + ], + [ + 7.111804927058571, + 50.942911704190195 + ], + [ + 7.111812490245274, + 50.94291451559564 + ], + [ + 7.111819613182705, + 50.94291716069377 + ], + [ + 7.111835586792834, + 50.94292309399316 + ], + [ + 7.112020172162916, + 50.94299209301497 + ], + [ + 7.112524171596169, + 50.943180289519084 + ], + [ + 7.113266990587299, + 50.94345760818358 + ], + [ + 7.113388909675604, + 50.94350171608286 + ], + [ + 7.113392011265815, + 50.943497258617164 + ], + [ + 7.113394760778657, + 50.94349172252684 + ], + [ + 7.1133974646253595, + 50.943486962744565 + ], + [ + 7.113401151694879, + 50.94348013953309 + ], + [ + 7.113433547472788, + 50.9434187448742 + ], + [ + 7.114085835141562, + 50.94217216338184 + ], + [ + 7.114156376893828, + 50.942037585123835 + ], + [ + 7.114160212677769, + 50.94203024715894 + ], + [ + 7.114163177091861, + 50.94202456702677 + ], + [ + 7.114175834301183, + 50.94200030981706 + ], + [ + 7.11418116836627, + 50.941990103715014 + ], + [ + 7.114183265821211, + 50.94198607788908 + ], + [ + 7.114186679906148, + 50.94197945169937 + ], + [ + 7.114212180432269, + 50.94192936190459 + ], + [ + 7.114213282916856, + 50.94192621396933 + ], + [ + 7.114214625217298, + 50.94192294399749 + ], + [ + 7.114225147655546, + 50.9419046537221 + ], + [ + 7.114234602638027, + 50.94188811794064 + ], + [ + 7.114261463709482, + 50.941836661501156 + ], + [ + 7.114265513271697, + 50.94182892946912 + ], + [ + 7.114267233418833, + 50.941825644015154 + ], + [ + 7.114269748415602, + 50.94182083259669 + ], + [ + 7.114272988972456, + 50.94181462450154 + ], + [ + 7.11452114992814, + 50.94133568224354 + ], + [ + 7.11456037115468, + 50.941260881034 + ], + [ + 7.114583238654221, + 50.94121895888216 + ], + [ + 7.114615015514604, + 50.94116064409338 + ], + [ + 7.114619501894089, + 50.94115231563339 + ], + [ + 7.114623027866257, + 50.94114566515621 + ], + [ + 7.114740008647871, + 50.94092227382642 + ], + [ + 7.114782063731944, + 50.940841655382165 + ], + [ + 7.114783689853502, + 50.940838440350895 + ], + [ + 7.114905388415222, + 50.94088737450887 + ], + [ + 7.115353620988633, + 50.94106732775878 + ], + [ + 7.1160160291884, + 50.941333308542525 + ], + [ + 7.116366900890669, + 50.94147420407074 + ], + [ + 7.117367178693568, + 50.94179821163372 + ], + [ + 7.117372868092413, + 50.94180005173288 + ], + [ + 7.117378634897944, + 50.94180191376527 + ], + [ + 7.117257108346184, + 50.94226319203926 + ], + [ + 7.117237513484542, + 50.94233859753306 + ], + [ + 7.117225697211924, + 50.942383970277284 + ], + [ + 7.117188494318533, + 50.94252537722103 + ], + [ + 7.117124165376499, + 50.94277020189677 + ], + [ + 7.117057351775818, + 50.94302376059979 + ], + [ + 7.117010241035947, + 50.94320269529854 + ], + [ + 7.116978922920786, + 50.94332092707742 + ], + [ + 7.116978007894561, + 50.94332426602674 + ], + [ + 7.1169770969181245, + 50.94332761043751 + ], + [ + 7.116974396490281, + 50.94333764959015 + ], + [ + 7.116973070809905, + 50.94334392911367 + ], + [ + 7.116971761737045, + 50.943349234000465 + ], + [ + 7.116970275649615, + 50.94335500909472 + ], + [ + 7.116969161368177, + 50.94335929815012 + ], + [ + 7.116967443420351, + 50.943365843852284 + ], + [ + 7.116963602493299, + 50.9433802570762 + ], + [ + 7.1169622766915035, + 50.943385447474505 + ], + [ + 7.116961179867107, + 50.9433896567685 + ], + [ + 7.1169583904504, + 50.94340024219469 + ], + [ + 7.116950632003739, + 50.943429413659324 + ], + [ + 7.116943659080182, + 50.94345397688949 + ], + [ + 7.116942695282976, + 50.943458381690974 + ], + [ + 7.1169411913847185, + 50.94346435075895 + ], + [ + 7.116938787761716, + 50.94347296291922 + ], + [ + 7.11692188178155, + 50.943538377579145 + ], + [ + 7.116919370953694, + 50.94354788107273 + ], + [ + 7.116918112839408, + 50.943552629178505 + ], + [ + 7.116916856401704, + 50.94355737101583 + ], + [ + 7.116907627179611, + 50.94359246531236 + ], + [ + 7.116906148012916, + 50.943598068739824 + ], + [ + 7.11690493276795, + 50.94360267184084 + ], + [ + 7.116902099653221, + 50.94361342204262 + ], + [ + 7.1167525643428275, + 50.94418534028795 + ], + [ + 7.116723336571988, + 50.9442990864307 + ], + [ + 7.116710962589144, + 50.94434763024931 + ], + [ + 7.116701448262577, + 50.944384698516316 + ], + [ + 7.116689561540905, + 50.944431294087956 + ], + [ + 7.116682602801052, + 50.9444582462249 + ], + [ + 7.1166858031506095, + 50.944460708131174 + ], + [ + 7.116688959059544, + 50.944463107264745 + ], + [ + 7.1166918179869025, + 50.9444652111148 + ], + [ + 7.116697274244444, + 50.94446933994808 + ], + [ + 7.116733510781893, + 50.94449661833686 + ], + [ + 7.116739047956744, + 50.94450054162095 + ], + [ + 7.116743061800454, + 50.944504009539585 + ], + [ + 7.116749488471985, + 50.94450864327483 + ], + [ + 7.116754742632365, + 50.94450604344379 + ], + [ + 7.116811938618582, + 50.944485275318605 + ], + [ + 7.116817383310757, + 50.944483808152135 + ], + [ + 7.116821941176246, + 50.944482938244406 + ], + [ + 7.116829604640274, + 50.94448183783036 + ], + [ + 7.116906615949451, + 50.9444711293309 + ], + [ + 7.116963003832887, + 50.94446116108295 + ], + [ + 7.116967687334963, + 50.944460352553584 + ], + [ + 7.1169721801568615, + 50.94445658295911 + ], + [ + 7.116976605785473, + 50.94445447609359 + ], + [ + 7.1169845440181705, + 50.94444935907008 + ], + [ + 7.117002741045178, + 50.944437747758286 + ], + [ + 7.117010015430348, + 50.94443338178261 + ], + [ + 7.1170143791361635, + 50.94443118667917 + ], + [ + 7.117072587903302, + 50.94442227031712 + ], + [ + 7.11708540179501, + 50.94442892178063 + ], + [ + 7.117088295151057, + 50.94443151272899 + ], + [ + 7.117097843933166, + 50.944434908916875 + ], + [ + 7.117098453415614, + 50.9444740444299 + ], + [ + 7.1170979008144615, + 50.9444781725658 + ], + [ + 7.117095899993688, + 50.94448393216441 + ], + [ + 7.117070190449816, + 50.94455762464629 + ], + [ + 7.117059739893626, + 50.94458750006199 + ], + [ + 7.11703404241159, + 50.94462876276972 + ], + [ + 7.117031821313408, + 50.94463324442374 + ], + [ + 7.117028681479495, + 50.94463714016756 + ], + [ + 7.117025205782647, + 50.94463934239886 + ], + [ + 7.117016559676922, + 50.944643516273054 + ], + [ + 7.117016419098864, + 50.944691981322656 + ], + [ + 7.11702163229207, + 50.94469863881295 + ], + [ + 7.117027453679487, + 50.94470771909043 + ], + [ + 7.117062459264946, + 50.94471871982138 + ], + [ + 7.117072442652559, + 50.94471647055355 + ], + [ + 7.117082120564194, + 50.94471480543781 + ], + [ + 7.11717771569106, + 50.94465445600974 + ], + [ + 7.117230045328534, + 50.94465100009066 + ], + [ + 7.117321622151285, + 50.9446741352261 + ], + [ + 7.117329509361862, + 50.94467704592755 + ], + [ + 7.117339556640146, + 50.94468117771461 + ], + [ + 7.117393098780054, + 50.94468928903451 + ], + [ + 7.117397776959162, + 50.94468801363507 + ], + [ + 7.117404516805161, + 50.944686272336305 + ], + [ + 7.117413401799254, + 50.94468397205139 + ], + [ + 7.117506301048142, + 50.94465985989563 + ], + [ + 7.117511675855165, + 50.94465804351831 + ], + [ + 7.117517038504895, + 50.94465617568133 + ], + [ + 7.117529425750734, + 50.94465164928733 + ], + [ + 7.117546806028098, + 50.94464517174916 + ], + [ + 7.117558593689449, + 50.944640722022804 + ], + [ + 7.117566592798323, + 50.944636704957325 + ], + [ + 7.11757018018959, + 50.944635014447094 + ], + [ + 7.117582920080666, + 50.944626727221184 + ], + [ + 7.117589863342297, + 50.94462030263587 + ], + [ + 7.117594227133162, + 50.944614933677094 + ], + [ + 7.117597279809883, + 50.944611044607285 + ], + [ + 7.117599494572485, + 50.94460826892315 + ], + [ + 7.1176116037837245, + 50.94458708462139 + ], + [ + 7.1176177760172985, + 50.94458501578579 + ], + [ + 7.117620404674693, + 50.94458270724604 + ], + [ + 7.117624816739887, + 50.94458033662542 + ], + [ + 7.117630890933582, + 50.94457776976265 + ], + [ + 7.117635403523437, + 50.94457477840653 + ], + [ + 7.117639554201754, + 50.94457249980231 + ], + [ + 7.117644060741119, + 50.944570116314466 + ], + [ + 7.117647214446062, + 50.9445684835633 + ], + [ + 7.117650718555728, + 50.94456663432017 + ], + [ + 7.117655632702176, + 50.94456406314237 + ], + [ + 7.117658913444857, + 50.94456235149689 + ], + [ + 7.1176652783691265, + 50.94455903655697 + ], + [ + 7.117675336418317, + 50.94455380976715 + ], + [ + 7.117680143731165, + 50.94455131061324 + ], + [ + 7.117683750335237, + 50.94454942614794 + ], + [ + 7.117719024989611, + 50.944530895196856 + ], + [ + 7.117753684251061, + 50.944509060863915 + ], + [ + 7.1177573322427286, + 50.94450675076784 + ], + [ + 7.117762606164465, + 50.94450457660674 + ], + [ + 7.117769816605191, + 50.94450147495015 + ], + [ + 7.117773270788919, + 50.944500121344255 + ], + [ + 7.1177786728976695, + 50.9444996724194 + ], + [ + 7.117782447065104, + 50.94449395668843 + ], + [ + 7.117790562630483, + 50.94448554002615 + ], + [ + 7.117795967655105, + 50.94448036681877 + ], + [ + 7.1177992532094425, + 50.94447737276215 + ], + [ + 7.117803744500978, + 50.94447036182433 + ], + [ + 7.117812824735225, + 50.94446766714054 + ], + [ + 7.11781942262351, + 50.94446492793986 + ], + [ + 7.1178330752505135, + 50.944457196815335 + ], + [ + 7.117873935818298, + 50.94445273009898 + ], + [ + 7.117881299418027, + 50.94445207446096 + ], + [ + 7.117919489825387, + 50.944446538515066 + ], + [ + 7.1179247313274745, + 50.94444932558333 + ], + [ + 7.117932298705923, + 50.944453387662875 + ], + [ + 7.11793862603027, + 50.94445717073638 + ], + [ + 7.117944061392057, + 50.944460022085266 + ], + [ + 7.117949290542678, + 50.94446286831092 + ], + [ + 7.117958279703509, + 50.9444678913392 + ], + [ + 7.11810721155285, + 50.94454642545586 + ], + [ + 7.11811032429165, + 50.94455454826947 + ], + [ + 7.118113606069159, + 50.94455809787331 + ], + [ + 7.11811688042512, + 50.94456429866536 + ], + [ + 7.118091889461485, + 50.94459355486611 + ], + [ + 7.118089404583671, + 50.94459730920384 + ], + [ + 7.118086829649545, + 50.944601107957155 + ], + [ + 7.118084788068872, + 50.944606399248656 + ], + [ + 7.118081569202424, + 50.94460901126161 + ], + [ + 7.1180793785072325, + 50.94461471655222 + ], + [ + 7.118055768211886, + 50.94466297505559 + ], + [ + 7.1180601895851945, + 50.9446647443143 + ], + [ + 7.1180715067435445, + 50.94466891179693 + ], + [ + 7.118079273649231, + 50.94467085459756 + ], + [ + 7.11808450866974, + 50.94467151187375 + ], + [ + 7.1180917932264665, + 50.94467200342854 + ], + [ + 7.118101247012464, + 50.9446721854949 + ], + [ + 7.118107168505342, + 50.94467241225056 + ], + [ + 7.118112295603729, + 50.94467260461644 + ], + [ + 7.118123278215513, + 50.944673071238746 + ], + [ + 7.118167228676866, + 50.94467123448339 + ], + [ + 7.1181829678403, + 50.944680222741994 + ], + [ + 7.118188940563254, + 50.944683411006295 + ], + [ + 7.118196063816476, + 50.944686980256265 + ], + [ + 7.118363409420477, + 50.94475902787603 + ], + [ + 7.118499779380946, + 50.944766352899094 + ], + [ + 7.118653809919123, + 50.94473106207344 + ], + [ + 7.118771280100089, + 50.944755811264734 + ], + [ + 7.118782120442536, + 50.94475800409865 + ], + [ + 7.118794375129781, + 50.94475936802914 + ], + [ + 7.118804534727589, + 50.94475924034044 + ], + [ + 7.118811186145902, + 50.944759194624545 + ], + [ + 7.118820422070955, + 50.94475870849648 + ], + [ + 7.118844495673341, + 50.944757349838376 + ], + [ + 7.118853494324784, + 50.94475678164043 + ], + [ + 7.1188624729770495, + 50.94475600356909 + ], + [ + 7.118899901688518, + 50.94475237695714 + ], + [ + 7.1189338833485, + 50.94474830537225 + ], + [ + 7.118939392745046, + 50.94474745610918 + ], + [ + 7.118946479488435, + 50.944746042281025 + ], + [ + 7.1189505692848725, + 50.9447449884746 + ], + [ + 7.118958395602656, + 50.944741793241704 + ], + [ + 7.118985382811716, + 50.94473067759583 + ], + [ + 7.119071268899631, + 50.944692701819 + ], + [ + 7.119078405236938, + 50.94468928321344 + ], + [ + 7.1190824062774105, + 50.94468725396772 + ], + [ + 7.119086770046705, + 50.944684843841756 + ], + [ + 7.119090909457745, + 50.94468252543299 + ], + [ + 7.119133029336809, + 50.94465663157233 + ], + [ + 7.119185605091196, + 50.94462587782909 + ], + [ + 7.119228943781288, + 50.94460061063575 + ], + [ + 7.119293379938467, + 50.94457844611452 + ], + [ + 7.119334226250865, + 50.94456442028015 + ], + [ + 7.119486344461352, + 50.94455140163584 + ], + [ + 7.1194913104562865, + 50.94454789588409 + ], + [ + 7.119496745531363, + 50.944546171221724 + ], + [ + 7.119501793474613, + 50.9445440212227 + ], + [ + 7.119515221120311, + 50.94453713167555 + ], + [ + 7.119558629852693, + 50.94451805936777 + ], + [ + 7.119584439767551, + 50.94450623121715 + ], + [ + 7.119592588121978, + 50.944502638216505 + ], + [ + 7.119597035684365, + 50.94450058466763 + ], + [ + 7.11960522961429, + 50.94449706165075 + ], + [ + 7.119635679033285, + 50.944511336534546 + ], + [ + 7.119686774359424, + 50.94451094263496 + ], + [ + 7.119701565946102, + 50.9445057064691 + ], + [ + 7.119705910878608, + 50.94449970488023 + ], + [ + 7.11970937930482, + 50.94449429264395 + ], + [ + 7.119722250643043, + 50.94447508190242 + ], + [ + 7.119781153658084, + 50.944453569971 + ], + [ + 7.119795664400165, + 50.94444876635834 + ], + [ + 7.119805398013829, + 50.94444695172182 + ], + [ + 7.11981066809917, + 50.94444409389484 + ], + [ + 7.119815257596215, + 50.944444872903155 + ], + [ + 7.119856902337433, + 50.94445194339511 + ], + [ + 7.119864956590702, + 50.944456820812604 + ], + [ + 7.119867612276743, + 50.944458990561614 + ], + [ + 7.119871036674522, + 50.94446211341842 + ], + [ + 7.119873955486617, + 50.94446570029609 + ], + [ + 7.119906274346204, + 50.94450544355533 + ], + [ + 7.119983155890269, + 50.94454419113183 + ], + [ + 7.120016921959435, + 50.94454972630043 + ], + [ + 7.120029677347101, + 50.94455191118359 + ], + [ + 7.120033885913217, + 50.944552675955 + ], + [ + 7.120041923300751, + 50.94455447908287 + ], + [ + 7.120048197860733, + 50.94454895373561 + ], + [ + 7.120066852732589, + 50.94453246850687 + ], + [ + 7.1200680526488425, + 50.944507596297655 + ], + [ + 7.12007834987638, + 50.94449488150161 + ], + [ + 7.120082264673368, + 50.94449004843372 + ], + [ + 7.120104229530755, + 50.94448947217819 + ], + [ + 7.120170833238533, + 50.944484915531866 + ], + [ + 7.120177656173894, + 50.94448785117354 + ], + [ + 7.120185017430408, + 50.94449113454047 + ], + [ + 7.120243129443843, + 50.94451682143689 + ], + [ + 7.120246989365338, + 50.94452149998912 + ], + [ + 7.120251356134184, + 50.94452684772995 + ], + [ + 7.120273293303436, + 50.944554342656424 + ], + [ + 7.120321693168996, + 50.94458614976041 + ], + [ + 7.12037787811752, + 50.94459083163596 + ], + [ + 7.1204484979823945, + 50.94457649601678 + ], + [ + 7.1204562137623375, + 50.94457042635528 + ], + [ + 7.120460830708907, + 50.944568266678274 + ], + [ + 7.120467274616529, + 50.944564012129746 + ], + [ + 7.12046507854439, + 50.94454663535584 + ], + [ + 7.1204602165113196, + 50.94454008350388 + ], + [ + 7.1204567409344754, + 50.94453466377993 + ], + [ + 7.1204804050037716, + 50.94451634889256 + ], + [ + 7.120533222313064, + 50.94451589780457 + ], + [ + 7.120598127801906, + 50.944526832896095 + ], + [ + 7.120606786457425, + 50.94453190435975 + ], + [ + 7.120614697779998, + 50.94453623351381 + ], + [ + 7.120626739943447, + 50.94454276064199 + ], + [ + 7.120635862735613, + 50.944547760431384 + ], + [ + 7.120664683164546, + 50.944563430706886 + ], + [ + 7.120669646806366, + 50.944565487396204 + ], + [ + 7.120676887042084, + 50.9445680663852 + ], + [ + 7.120692257973409, + 50.94457288884528 + ], + [ + 7.120764765346782, + 50.944595440903655 + ], + [ + 7.120876904321129, + 50.94460732138366 + ], + [ + 7.120884301989961, + 50.94460811497016 + ], + [ + 7.12088839186067, + 50.944608540541 + ], + [ + 7.1208947768327935, + 50.94460924138175 + ], + [ + 7.1208991689869725, + 50.944609760853965 + ], + [ + 7.120908164075871, + 50.94461097406847 + ], + [ + 7.120915811762632, + 50.944612027994 + ], + [ + 7.120922987860956, + 50.94461295021745 + ], + [ + 7.121084632923526, + 50.94464510737765 + ], + [ + 7.121203031296909, + 50.94462857323954 + ], + [ + 7.12121234870809, + 50.944624264164226 + ], + [ + 7.121223673153604, + 50.944619960405475 + ], + [ + 7.121229495370921, + 50.944617883049006 + ], + [ + 7.121271547126885, + 50.94459936745718 + ], + [ + 7.121286331923671, + 50.944599415608714 + ], + [ + 7.121293615014206, + 50.9445990966185 + ], + [ + 7.121300497877426, + 50.944598959153275 + ], + [ + 7.121365840103757, + 50.944598009534744 + ], + [ + 7.121429052471313, + 50.94461899242357 + ], + [ + 7.121506727653039, + 50.94463445209508 + ], + [ + 7.121631176788533, + 50.944633756339485 + ], + [ + 7.121825895280562, + 50.94465559562766 + ], + [ + 7.121902056772769, + 50.94468389149973 + ], + [ + 7.121945071822829, + 50.944683325255625 + ], + [ + 7.121971410630503, + 50.944675562990184 + ], + [ + 7.121975273480125, + 50.94467445146603 + ], + [ + 7.121980175661671, + 50.944672665953604 + ], + [ + 7.121989243897235, + 50.94467040514279 + ], + [ + 7.122002458130888, + 50.944671946055486 + ], + [ + 7.122010382400266, + 50.944672884743525 + ], + [ + 7.122067972296361, + 50.944681214613674 + ], + [ + 7.122079135074421, + 50.94468265147038 + ], + [ + 7.122093792184666, + 50.944684596909134 + ], + [ + 7.122105533361002, + 50.94468665912686 + ], + [ + 7.12210968379106, + 50.944687419290595 + ], + [ + 7.122123643344665, + 50.944689929993835 + ], + [ + 7.122156391826314, + 50.94469355952246 + ], + [ + 7.122166468191646, + 50.94469454270796 + ], + [ + 7.122176628158428, + 50.94469550025654 + ], + [ + 7.122185611711523, + 50.94470805768507 + ], + [ + 7.122189365053123, + 50.94471330195225 + ], + [ + 7.122211160391972, + 50.94474371084272 + ], + [ + 7.122228497565761, + 50.944764675818114 + ], + [ + 7.122233280607937, + 50.94477022713778 + ], + [ + 7.122238818124346, + 50.94477726284055 + ], + [ + 7.122268953835119, + 50.94477861001406 + ], + [ + 7.122277517991215, + 50.94477599931761 + ], + [ + 7.12228681870261, + 50.944773586633794 + ], + [ + 7.1223022230287025, + 50.94476970813169 + ], + [ + 7.1223573586140185, + 50.94473289379752 + ], + [ + 7.122361066751799, + 50.94473039296287 + ], + [ + 7.122400590639208, + 50.94470330860181 + ], + [ + 7.122406212036413, + 50.944700596608136 + ], + [ + 7.122415570534066, + 50.94469777383701 + ], + [ + 7.122438779475804, + 50.944682929053506 + ], + [ + 7.122452868940744, + 50.94468430052159 + ], + [ + 7.122460222838013, + 50.94468533343252 + ], + [ + 7.1224684517611125, + 50.94468606024356 + ], + [ + 7.122500917002184, + 50.94471321951246 + ], + [ + 7.122547735242133, + 50.94481605040406 + ], + [ + 7.122576001351957, + 50.94486316452397 + ], + [ + 7.122579671708499, + 50.94487008114832 + ], + [ + 7.122583140170888, + 50.94487617880852 + ], + [ + 7.122583222017279, + 50.944882309247106 + ], + [ + 7.122583073466961, + 50.944885360177565 + ], + [ + 7.1225830024753085, + 50.944888429443 + ], + [ + 7.122582823015044, + 50.94489267152529 + ], + [ + 7.122577709577922, + 50.944920228356864 + ], + [ + 7.1225835263832975, + 50.94492496258092 + ], + [ + 7.122586310098861, + 50.94492780974347 + ], + [ + 7.122595034835586, + 50.94493651282712 + ], + [ + 7.122779260066295, + 50.9448713955626 + ], + [ + 7.12292380078384, + 50.944860242675674 + ], + [ + 7.122974557943906, + 50.94482852986261 + ], + [ + 7.123012653640396, + 50.944775683618694 + ], + [ + 7.1230181265191295, + 50.94476810548192 + ], + [ + 7.12302265111192, + 50.9447622280737 + ], + [ + 7.123043056244706, + 50.94473474618808 + ], + [ + 7.1230522270947585, + 50.94473082043492 + ], + [ + 7.123060289874837, + 50.944727367016924 + ], + [ + 7.12310842974122, + 50.94470697635192 + ], + [ + 7.123143766195709, + 50.94468166450897 + ], + [ + 7.123147624362741, + 50.94467893672522 + ], + [ + 7.12315048786636, + 50.94467701136671 + ], + [ + 7.123254282634522, + 50.94460706586475 + ], + [ + 7.1232886737431835, + 50.94460720139498 + ], + [ + 7.123296780093333, + 50.944610017183784 + ], + [ + 7.123303923192031, + 50.94461327975799 + ], + [ + 7.1233106539501945, + 50.944623599258264 + ], + [ + 7.123315144338781, + 50.94462998672821 + ], + [ + 7.123326977652345, + 50.94463071655653 + ], + [ + 7.123333319929813, + 50.944631347326805 + ], + [ + 7.123351120653877, + 50.944634522196715 + ], + [ + 7.123411928572105, + 50.944600703471934 + ], + [ + 7.123417321168919, + 50.944597838458854 + ], + [ + 7.123421479163692, + 50.944595689275616 + ], + [ + 7.1234267227733, + 50.944594190689656 + ], + [ + 7.123434648758746, + 50.94459275410506 + ], + [ + 7.123472407821363, + 50.94458511840531 + ], + [ + 7.123481294850684, + 50.944586082360885 + ], + [ + 7.123487800378398, + 50.944585946795975 + ], + [ + 7.123502781465869, + 50.94458748356044 + ], + [ + 7.12353647740219, + 50.94459501855088 + ], + [ + 7.123584683302095, + 50.94460734108592 + ], + [ + 7.123710108281977, + 50.944635438240084 + ], + [ + 7.123750136891672, + 50.94462411648368 + ], + [ + 7.1237533701936515, + 50.9446160823213 + ], + [ + 7.123755362215519, + 50.944611015876454 + ], + [ + 7.123760026744832, + 50.944576523130934 + ], + [ + 7.12371907491609, + 50.94452235322402 + ], + [ + 7.123685098001815, + 50.944504862378594 + ], + [ + 7.123679343603826, + 50.944501900047584 + ], + [ + 7.123664964490083, + 50.94449450017519 + ], + [ + 7.123663363624032, + 50.9444902060957 + ], + [ + 7.123657769949611, + 50.9444752273317 + ], + [ + 7.123651097265538, + 50.9444438080567 + ], + [ + 7.123650147899389, + 50.94444076376242 + ], + [ + 7.1236486158399455, + 50.944435114557244 + ], + [ + 7.123648870346532, + 50.94442996083169 + ], + [ + 7.123649589895857, + 50.94442612674291 + ], + [ + 7.123643536640334, + 50.944404036566 + ], + [ + 7.1236464174750935, + 50.944398922351866 + ], + [ + 7.123650784168682, + 50.944391165422545 + ], + [ + 7.123664299302007, + 50.944391596679125 + ], + [ + 7.1236807488198854, + 50.94439240695671 + ], + [ + 7.123717412372147, + 50.94439599284421 + ], + [ + 7.1237267648220985, + 50.94439635719472 + ], + [ + 7.123733895478399, + 50.944396428621964 + ], + [ + 7.12381709650117, + 50.94438956446726 + ], + [ + 7.1238980453805265, + 50.94436290067953 + ], + [ + 7.123930413707174, + 50.944335166600325 + ], + [ + 7.124009224278967, + 50.94426766092379 + ], + [ + 7.124050434833406, + 50.94421827206268 + ], + [ + 7.124104073474747, + 50.9442227988104 + ], + [ + 7.124111832117708, + 50.944226330240745 + ], + [ + 7.124120813535575, + 50.94423106577162 + ], + [ + 7.124130342186466, + 50.94423543326362 + ], + [ + 7.124133088690664, + 50.94423832206121 + ], + [ + 7.124135259062874, + 50.944240882329765 + ], + [ + 7.124161285668462, + 50.94427158997313 + ], + [ + 7.124265652807418, + 50.94434519653977 + ], + [ + 7.124392801820047, + 50.944401683700434 + ], + [ + 7.124410750833266, + 50.944399900834405 + ], + [ + 7.12441856122627, + 50.94439921239048 + ], + [ + 7.1244264472973775, + 50.94439848289195 + ], + [ + 7.124453419951143, + 50.94437817701942 + ], + [ + 7.124452978636839, + 50.94437057305676 + ], + [ + 7.124452252370036, + 50.94436767894856 + ], + [ + 7.1244519018176, + 50.944364646079556 + ], + [ + 7.124451972353991, + 50.94435907389409 + ], + [ + 7.124451097401573, + 50.94434445337246 + ], + [ + 7.124413611082124, + 50.944261607607615 + ], + [ + 7.1243377142816255, + 50.94420450581104 + ], + [ + 7.124331106124025, + 50.94419994242962 + ], + [ + 7.1243273903805004, + 50.94419779082736 + ], + [ + 7.124317614351169, + 50.94419295530862 + ], + [ + 7.124344515723944, + 50.94416303058593 + ], + [ + 7.124348288967423, + 50.94415724628088 + ], + [ + 7.124355549524435, + 50.944149350549836 + ], + [ + 7.1244364693861675, + 50.9441306398437 + ], + [ + 7.124445360665638, + 50.94413022328072 + ], + [ + 7.124456605244419, + 50.94412969702762 + ], + [ + 7.124464825776684, + 50.944128331657836 + ], + [ + 7.124470292719743, + 50.94412810830471 + ], + [ + 7.124517133894005, + 50.94415282776138 + ], + [ + 7.124564805479056, + 50.944200102935355 + ], + [ + 7.12457928607306, + 50.9442062560188 + ], + [ + 7.124583548574277, + 50.9442080161818 + ], + [ + 7.124588200568965, + 50.94420961352206 + ], + [ + 7.124634731053775, + 50.944220373508166 + ], + [ + 7.124704722248032, + 50.94420926650864 + ], + [ + 7.124712972012986, + 50.94420749328259 + ], + [ + 7.124721036363501, + 50.94420530427266 + ], + [ + 7.124774685431948, + 50.94419071863263 + ], + [ + 7.1248487498970485, + 50.94417050712277 + ], + [ + 7.124895053253611, + 50.94416954203057 + ], + [ + 7.124972427985719, + 50.9441713216364 + ], + [ + 7.124982594881587, + 50.94417493575439 + ], + [ + 7.124989660679338, + 50.94417760880406 + ], + [ + 7.125006942711952, + 50.944183837403926 + ], + [ + 7.125114599820358, + 50.94416848753218 + ], + [ + 7.125118801438555, + 50.94416790477091 + ], + [ + 7.125190868264746, + 50.944157640235225 + ], + [ + 7.1252252143127555, + 50.94415149246091 + ], + [ + 7.1252377437488645, + 50.944144860341865 + ], + [ + 7.125241166443092, + 50.94414332793768 + ], + [ + 7.125246564776197, + 50.944140953082716 + ], + [ + 7.125259997614155, + 50.94413214103588 + ], + [ + 7.1252963234352835, + 50.944120942762574 + ], + [ + 7.125308246336097, + 50.94412213250146 + ], + [ + 7.125317337297607, + 50.94412287385347 + ], + [ + 7.125376074622072, + 50.9441280862561 + ], + [ + 7.125389602393027, + 50.94413117421809 + ], + [ + 7.125401594406392, + 50.9441333354638 + ], + [ + 7.125440328441321, + 50.94415696835637 + ], + [ + 7.125455636564982, + 50.94416555478856 + ], + [ + 7.125460112870841, + 50.94416755668196 + ], + [ + 7.125463608530883, + 50.94416902300123 + ], + [ + 7.125472081451068, + 50.944172494759954 + ], + [ + 7.12547568442517, + 50.944173947512816 + ], + [ + 7.125488596114731, + 50.94417961122404 + ], + [ + 7.125507289908131, + 50.94418836442894 + ], + [ + 7.125521050358531, + 50.94418920771775 + ], + [ + 7.1255349781036, + 50.94419006808062 + ], + [ + 7.12557973855111, + 50.94417904651165 + ], + [ + 7.125604269898933, + 50.944156881780266 + ], + [ + 7.1256079828181855, + 50.944152770171016 + ], + [ + 7.125588569212689, + 50.94409640513405 + ], + [ + 7.125597213902206, + 50.94408895334784 + ], + [ + 7.125603156570607, + 50.94408263633852 + ], + [ + 7.125657601509263, + 50.944071682985964 + ], + [ + 7.125669572673707, + 50.94407117727466 + ], + [ + 7.1256836405859625, + 50.944070569420866 + ], + [ + 7.125720820878085, + 50.94406944584571 + ], + [ + 7.125735609619858, + 50.94407041803717 + ], + [ + 7.125741312062461, + 50.94407212572822 + ], + [ + 7.125750560048618, + 50.94407193603434 + ], + [ + 7.125826813143087, + 50.94410729796074 + ], + [ + 7.125874687708234, + 50.944145310671274 + ], + [ + 7.125880075327731, + 50.9441857108523 + ], + [ + 7.125868357465033, + 50.94427824469953 + ], + [ + 7.125868605405801, + 50.944288892574384 + ], + [ + 7.125869148038326, + 50.94429203644493 + ], + [ + 7.125869966896048, + 50.94429471888249 + ], + [ + 7.125872289808257, + 50.94431100935808 + ], + [ + 7.125883828861527, + 50.94431632902064 + ], + [ + 7.12589288947187, + 50.94432150726968 + ], + [ + 7.125938858990268, + 50.94432187284877 + ], + [ + 7.126006823900253, + 50.94429622680817 + ], + [ + 7.126058928371373, + 50.94427972263925 + ], + [ + 7.126068014866855, + 50.94426839898169 + ], + [ + 7.126071752503704, + 50.94426374274408 + ], + [ + 7.126076886930727, + 50.94425734528623 + ], + [ + 7.126071264025232, + 50.94423079144283 + ], + [ + 7.126065886838444, + 50.944224888989815 + ], + [ + 7.126058647489497, + 50.9442212554044 + ], + [ + 7.126052718546152, + 50.944210842810804 + ], + [ + 7.12605065652137, + 50.94420848847168 + ], + [ + 7.126025075489776, + 50.94418008716555 + ], + [ + 7.126021814748053, + 50.94414523958811 + ], + [ + 7.126029783870033, + 50.944138549474474 + ], + [ + 7.126036978134749, + 50.94413070204097 + ], + [ + 7.126073197467989, + 50.9440870314181 + ], + [ + 7.12614769917885, + 50.94407876147761 + ], + [ + 7.126216381596048, + 50.944112258681486 + ], + [ + 7.126267531977699, + 50.944172896775356 + ], + [ + 7.126297027421143, + 50.94420817977742 + ], + [ + 7.126300695742763, + 50.944213672567344 + ], + [ + 7.126302760526983, + 50.94421857842309 + ], + [ + 7.126334771699358, + 50.94423013537241 + ], + [ + 7.126345518436381, + 50.9442294219755 + ], + [ + 7.126354478123344, + 50.944228826493415 + ], + [ + 7.126374407094232, + 50.94422750589353 + ], + [ + 7.1265026874517865, + 50.94418375034328 + ], + [ + 7.126640100173803, + 50.94416508936402 + ], + [ + 7.1268942338114325, + 50.94419066156417 + ], + [ + 7.1269722036622065, + 50.94419173350297 + ], + [ + 7.126985618674365, + 50.944187004954706 + ], + [ + 7.1269914339927745, + 50.944184666388026 + ], + [ + 7.126995679123511, + 50.944183000531815 + ], + [ + 7.127085021936075, + 50.94414787315089 + ], + [ + 7.1272913881927655, + 50.944055200536965 + ], + [ + 7.127307011266935, + 50.94401362832585 + ], + [ + 7.127314154214446, + 50.94401289660574 + ], + [ + 7.127318237182333, + 50.944013635716196 + ], + [ + 7.127327362557295, + 50.944011076822385 + ], + [ + 7.127353200730545, + 50.94402966098303 + ], + [ + 7.127356889820938, + 50.94403655257297 + ], + [ + 7.127359129136895, + 50.944042714913095 + ], + [ + 7.127363709787419, + 50.94406571390225 + ], + [ + 7.12740365462716, + 50.94410610619533 + ], + [ + 7.127419897047597, + 50.9441383181796 + ], + [ + 7.127422840742495, + 50.9441442399961 + ], + [ + 7.127424629817454, + 50.944148287019836 + ], + [ + 7.1274271515780105, + 50.944155498042434 + ], + [ + 7.127403206477602, + 50.94419873280405 + ], + [ + 7.1274421498413405, + 50.94422543699047 + ], + [ + 7.127612875488829, + 50.94412843824296 + ], + [ + 7.127564341843923, + 50.94408291504333 + ], + [ + 7.1275696677538845, + 50.9440811702688 + ], + [ + 7.127573837993351, + 50.94407984404699 + ], + [ + 7.127688202861974, + 50.944040907618145 + ], + [ + 7.127699502713021, + 50.944049420479494 + ], + [ + 7.127704937048284, + 50.94405231092613 + ], + [ + 7.127712124769014, + 50.94405691308804 + ], + [ + 7.127707408945947, + 50.944080002205126 + ], + [ + 7.127700536202965, + 50.94411411522798 + ], + [ + 7.127695065500897, + 50.9441413589605 + ], + [ + 7.127705175954136, + 50.944141280972985 + ], + [ + 7.1277135969952665, + 50.94414207974578 + ], + [ + 7.1277967595732115, + 50.94410620607361 + ], + [ + 7.12784244297546, + 50.944023477400556 + ], + [ + 7.127962860785778, + 50.94396553991699 + ], + [ + 7.12798494035811, + 50.9438936386963 + ], + [ + 7.128103909122258, + 50.94390553180832 + ], + [ + 7.128074900051638, + 50.94401509674588 + ], + [ + 7.1280453741635394, + 50.94405555937289 + ], + [ + 7.128043344196291, + 50.94405924386768 + ], + [ + 7.12804110235784, + 50.944064587876696 + ], + [ + 7.128036366279251, + 50.9440757826825 + ], + [ + 7.128056682931507, + 50.94408837387291 + ], + [ + 7.128073729932539, + 50.94409893854594 + ], + [ + 7.128086124243277, + 50.944106042537086 + ], + [ + 7.128092076512718, + 50.94410380144357 + ], + [ + 7.12809755164571, + 50.94410163723912 + ], + [ + 7.128110228433145, + 50.94409674833198 + ], + [ + 7.1281680625341, + 50.94407455492308 + ], + [ + 7.12821947495272, + 50.94405484058463 + ], + [ + 7.1282265097111335, + 50.944052123991575 + ], + [ + 7.128490372356398, + 50.94403569042834 + ], + [ + 7.12849647644543, + 50.94403920313701 + ], + [ + 7.12850121634033, + 50.944042123784754 + ], + [ + 7.128508304755896, + 50.94404668383429 + ], + [ + 7.128512749975368, + 50.94404949813052 + ], + [ + 7.128645528701186, + 50.94413896396774 + ], + [ + 7.1286550605090255, + 50.94413624420462 + ], + [ + 7.128664649024388, + 50.94413579892447 + ], + [ + 7.128755085486571, + 50.9439703871429 + ], + [ + 7.12873233803315, + 50.94387397480068 + ], + [ + 7.128815307302762, + 50.94386964855698 + ], + [ + 7.128946923724138, + 50.943913540288506 + ], + [ + 7.129154664434246, + 50.94393883801285 + ], + [ + 7.129143822732791, + 50.94399613319762 + ], + [ + 7.1292107081795235, + 50.94400458691361 + ], + [ + 7.1292141596311644, + 50.944001235455076 + ], + [ + 7.129234790159077, + 50.9439854495578 + ], + [ + 7.129231601160291, + 50.94397963987444 + ], + [ + 7.129231993522005, + 50.943976993957556 + ], + [ + 7.129230006808697, + 50.94396630654002 + ], + [ + 7.129262541071398, + 50.943957294674924 + ], + [ + 7.129374817092699, + 50.943901624768 + ], + [ + 7.129374247289423, + 50.94389365542877 + ], + [ + 7.129374355198201, + 50.94388830778182 + ], + [ + 7.12931811045492, + 50.94387713682086 + ], + [ + 7.1293136017086844, + 50.94387601053009 + ], + [ + 7.129309260870585, + 50.94387488603023 + ], + [ + 7.129305313558289, + 50.943873852375326 + ], + [ + 7.129254876449003, + 50.94386453807982 + ], + [ + 7.1292531344113454, + 50.943855308843546 + ], + [ + 7.129250662780487, + 50.94385304782687 + ], + [ + 7.129248313765623, + 50.943847165265154 + ], + [ + 7.129384852207328, + 50.94376157578675 + ], + [ + 7.129442842088306, + 50.943716787000106 + ], + [ + 7.129447037551739, + 50.943713553579485 + ], + [ + 7.129451451157082, + 50.94371016986372 + ], + [ + 7.129460454906566, + 50.943703295538604 + ], + [ + 7.12954455673383, + 50.94364028049051 + ], + [ + 7.129573416965996, + 50.943620369726354 + ], + [ + 7.129583699041282, + 50.94362069454015 + ], + [ + 7.129591492067992, + 50.94362199395134 + ], + [ + 7.1296088455487086, + 50.94362013959107 + ], + [ + 7.129584925997746, + 50.94370677277748 + ], + [ + 7.129766782410381, + 50.943834308238166 + ], + [ + 7.129771533825664, + 50.94383311266142 + ], + [ + 7.129997185725729, + 50.94377632729546 + ], + [ + 7.130128539680176, + 50.94374327079558 + ], + [ + 7.13024242905926, + 50.94395515942497 + ], + [ + 7.130290984423143, + 50.94404086151768 + ], + [ + 7.130314020831083, + 50.94410535458876 + ], + [ + 7.130395020973994, + 50.94411924453755 + ], + [ + 7.130459059494653, + 50.944063338930825 + ], + [ + 7.130465810456262, + 50.944035652409596 + ], + [ + 7.130478654457459, + 50.943982981290915 + ], + [ + 7.130473515759822, + 50.94397665656744 + ], + [ + 7.1304692246180315, + 50.94396960884248 + ], + [ + 7.13041825146176, + 50.94395899319265 + ], + [ + 7.1303631966465755, + 50.94394767631078 + ], + [ + 7.13036169661711, + 50.94393982518539 + ], + [ + 7.130360017056389, + 50.94393428433104 + ], + [ + 7.130430912669344, + 50.94392155875499 + ], + [ + 7.130438782965894, + 50.94391965673633 + ], + [ + 7.130445231618838, + 50.94391823918905 + ], + [ + 7.130449363814085, + 50.94391743298343 + ], + [ + 7.130428897620229, + 50.943872612260115 + ], + [ + 7.1304264835124425, + 50.94386646786706 + ], + [ + 7.1304253938635815, + 50.94386375144756 + ], + [ + 7.130412648381676, + 50.94383576620852 + ], + [ + 7.130484303214254, + 50.943826857038665 + ], + [ + 7.130621468574777, + 50.943870218770655 + ], + [ + 7.130626550575814, + 50.94390801287816 + ], + [ + 7.1307544345736575, + 50.943973521796266 + ], + [ + 7.130792136518007, + 50.94402667395335 + ], + [ + 7.130795720739179, + 50.944031720970486 + ], + [ + 7.130798501722578, + 50.94403500228069 + ], + [ + 7.130801112638329, + 50.9440378033095 + ], + [ + 7.130803500429269, + 50.944043327616065 + ], + [ + 7.130806875082971, + 50.94404813384735 + ], + [ + 7.130828807315877, + 50.94405499813037 + ], + [ + 7.130833948302097, + 50.944057327931084 + ], + [ + 7.1308431837590405, + 50.94406075034979 + ], + [ + 7.130893735602581, + 50.94407892895468 + ], + [ + 7.130900031806104, + 50.944081241272706 + ], + [ + 7.130908561344103, + 50.944084340307924 + ], + [ + 7.130988885334213, + 50.94411299725114 + ], + [ + 7.130992950575482, + 50.94411435740446 + ], + [ + 7.131091204185594, + 50.944081830263706 + ], + [ + 7.131068401180352, + 50.94400900674774 + ], + [ + 7.131180965236356, + 50.94400953424114 + ], + [ + 7.131226682787618, + 50.94398213415621 + ], + [ + 7.13127475213402, + 50.9439524945256 + ], + [ + 7.1313164317293145, + 50.94394552161916 + ], + [ + 7.131421840836615, + 50.943927943624274 + ], + [ + 7.131528629947348, + 50.94391084629238 + ], + [ + 7.131578336763978, + 50.94390288296155 + ], + [ + 7.131579141341549, + 50.94381287561311 + ], + [ + 7.131402691581092, + 50.94371276728954 + ], + [ + 7.131397847838721, + 50.94371001867409 + ], + [ + 7.131391977039452, + 50.94370668342775 + ], + [ + 7.131383513062382, + 50.943701879396805 + ], + [ + 7.131370464083963, + 50.94369447748506 + ], + [ + 7.131424307323865, + 50.94360373256833 + ], + [ + 7.131531711662641, + 50.94361437315593 + ], + [ + 7.131567634258518, + 50.9436425439285 + ], + [ + 7.131716474705361, + 50.943652989489195 + ], + [ + 7.1317226583106175, + 50.94365342300345 + ], + [ + 7.131728998081858, + 50.94365386711062 + ], + [ + 7.131726441675441, + 50.94359229220481 + ], + [ + 7.1317820225819135, + 50.943601704830456 + ], + [ + 7.131844073025621, + 50.94361258617565 + ], + [ + 7.131910234404986, + 50.943624185300216 + ], + [ + 7.131921536218228, + 50.943626167550924 + ], + [ + 7.1319293478443155, + 50.943627537253064 + ], + [ + 7.132030562023885, + 50.943645298369766 + ], + [ + 7.13212969002073, + 50.943716846231304 + ], + [ + 7.132129334972971, + 50.94372126448704 + ], + [ + 7.132131524518884, + 50.94372470628125 + ], + [ + 7.132135419581416, + 50.943733756770314 + ], + [ + 7.132031973137293, + 50.943767450006796 + ], + [ + 7.1321793024163975, + 50.94387374582726 + ], + [ + 7.132220586179029, + 50.94393936324461 + ], + [ + 7.132224166738223, + 50.94394379499848 + ], + [ + 7.132228522599731, + 50.94394873739933 + ], + [ + 7.132231194433874, + 50.943951086094486 + ], + [ + 7.132235077922963, + 50.943954317556305 + ], + [ + 7.132236450444012, + 50.94395708255216 + ], + [ + 7.132238940540397, + 50.94395941934611 + ], + [ + 7.132273689236861, + 50.943996188752386 + ], + [ + 7.132282748742363, + 50.94398571228058 + ], + [ + 7.132286797753158, + 50.943980729865196 + ], + [ + 7.132290324936237, + 50.943976087152755 + ], + [ + 7.1323675667218165, + 50.943846993426845 + ], + [ + 7.132500369830139, + 50.943878618500314 + ], + [ + 7.1325011902753355, + 50.943909332066035 + ], + [ + 7.132674444979302, + 50.94390750667762 + ], + [ + 7.132780723486747, + 50.943950210854894 + ], + [ + 7.1327848880137585, + 50.94396358883855 + ], + [ + 7.132777128733203, + 50.94396634627997 + ], + [ + 7.13276991962016, + 50.94396890926541 + ], + [ + 7.132740720108084, + 50.943970529665776 + ], + [ + 7.132736398463183, + 50.94397123309373 + ], + [ + 7.132731681177846, + 50.943971933791126 + ], + [ + 7.132726259699454, + 50.94397265830048 + ], + [ + 7.13267675337126, + 50.94397643882067 + ], + [ + 7.132674495512544, + 50.94398784432394 + ], + [ + 7.132674945841566, + 50.94399142017411 + ], + [ + 7.132671502936826, + 50.943997299962064 + ], + [ + 7.13275087008148, + 50.944133023188165 + ], + [ + 7.132765935275305, + 50.94413139886905 + ], + [ + 7.132775282806719, + 50.94412957697886 + ], + [ + 7.132783774512258, + 50.94412758401295 + ], + [ + 7.13286647662109, + 50.94410249885969 + ], + [ + 7.133013935116899, + 50.944143606703406 + ], + [ + 7.1334697295943394, + 50.944202525770685 + ], + [ + 7.133474843227591, + 50.944207816598194 + ], + [ + 7.133479027811508, + 50.94421188563584 + ], + [ + 7.1334902310617485, + 50.944262392741486 + ], + [ + 7.133460841451496, + 50.94436399895067 + ], + [ + 7.1334710095993215, + 50.944372681118885 + ], + [ + 7.133475735112822, + 50.944378848009855 + ], + [ + 7.133480827458147, + 50.94438392444965 + ], + [ + 7.133523922589848, + 50.94439048082201 + ], + [ + 7.133530719406127, + 50.94439085479273 + ], + [ + 7.1335356699651475, + 50.94439207881787 + ], + [ + 7.1335403485178315, + 50.94439284341982 + ], + [ + 7.133566778839428, + 50.94437755419553 + ], + [ + 7.133576129049186, + 50.94437243164535 + ], + [ + 7.133585164682139, + 50.9443670594405 + ], + [ + 7.133700875688453, + 50.94429799313141 + ], + [ + 7.133846912830901, + 50.94425618529817 + ], + [ + 7.1339572954436115, + 50.94427551046537 + ], + [ + 7.134171434969493, + 50.94424883236243 + ], + [ + 7.134387069298379, + 50.94453664314495 + ], + [ + 7.134444462005338, + 50.94461103496666 + ], + [ + 7.134458334499831, + 50.94461153993293 + ], + [ + 7.134464746566867, + 50.94461181776548 + ], + [ + 7.134471645762633, + 50.944612088991725 + ], + [ + 7.134483128964967, + 50.94461253599103 + ], + [ + 7.1344667771397745, + 50.944833222299806 + ], + [ + 7.1344664622214715, + 50.94484521288359 + ], + [ + 7.134466335722548, + 50.94484840807433 + ], + [ + 7.134466178116745, + 50.944850957929454 + ], + [ + 7.134597332162853, + 50.94491111509894 + ], + [ + 7.134603399102596, + 50.94490828013295 + ], + [ + 7.134608576876218, + 50.94490564410735 + ], + [ + 7.134902761412187, + 50.94475103842138 + ], + [ + 7.134929043191955, + 50.94474774123372 + ], + [ + 7.134934378999023, + 50.94474681109933 + ], + [ + 7.13495126293259, + 50.94475313618325 + ], + [ + 7.134930435546876, + 50.944813786127035 + ], + [ + 7.135109857531501, + 50.94489736587129 + ], + [ + 7.135141327859465, + 50.94485427765137 + ], + [ + 7.135167569831515, + 50.94481697421143 + ], + [ + 7.135185169035049, + 50.944791946532995 + ], + [ + 7.135197143389893, + 50.944788445937604 + ], + [ + 7.135205399743706, + 50.94478539768884 + ], + [ + 7.1354051318554, + 50.9448431993616 + ], + [ + 7.135432294625968, + 50.944985093822105 + ], + [ + 7.135352455603311, + 50.9449979664935 + ], + [ + 7.135335043578732, + 50.9449605800599 + ], + [ + 7.135214440139968, + 50.944933681363324 + ], + [ + 7.135208129032209, + 50.944972676477825 + ], + [ + 7.135200745530618, + 50.945017693640565 + ], + [ + 7.135133127836296, + 50.945004317593884 + ], + [ + 7.135081166909714, + 50.945064319165404 + ], + [ + 7.1350834726019965, + 50.94507023688648 + ], + [ + 7.135083317681784, + 50.94507289830524 + ], + [ + 7.135084956892277, + 50.94508344605877 + ], + [ + 7.135240770952816, + 50.94510574228017 + ], + [ + 7.1353130664269075, + 50.945103082805794 + ], + [ + 7.135359781816358, + 50.945114961147254 + ], + [ + 7.135371520750925, + 50.94510873622105 + ], + [ + 7.135378210925971, + 50.945104520763905 + ], + [ + 7.135386773797122, + 50.945100857741174 + ], + [ + 7.135389288636768, + 50.94505224273066 + ], + [ + 7.135594546649397, + 50.94502665767219 + ], + [ + 7.135803198758476, + 50.9449586453562 + ], + [ + 7.136101449760982, + 50.94492382929865 + ], + [ + 7.136104044997393, + 50.944930305624986 + ], + [ + 7.1361090622020935, + 50.94493840798122 + ], + [ + 7.136058606000853, + 50.94502250077639 + ], + [ + 7.135933664622689, + 50.94505715745939 + ], + [ + 7.136055212855861, + 50.94512842853889 + ], + [ + 7.136094362116108, + 50.94516418511005 + ], + [ + 7.136103249475162, + 50.94516696480704 + ], + [ + 7.1361130185884925, + 50.94517065613782 + ], + [ + 7.13628941214543, + 50.94512776679717 + ], + [ + 7.136358129611808, + 50.945100773237684 + ], + [ + 7.136362828572715, + 50.94509889484372 + ], + [ + 7.13637016279202, + 50.945095837189314 + ], + [ + 7.136373725098105, + 50.94509393885231 + ], + [ + 7.136381556823376, + 50.94509157624675 + ], + [ + 7.136408520619795, + 50.94508147968726 + ], + [ + 7.136403182688477, + 50.94506929274531 + ], + [ + 7.136400841304757, + 50.945064619190454 + ], + [ + 7.136397798025285, + 50.94505845229271 + ], + [ + 7.136426252741502, + 50.94500573745374 + ], + [ + 7.136427597698549, + 50.945003254215074 + ], + [ + 7.136441786584993, + 50.944976594444704 + ], + [ + 7.136447082768828, + 50.94497473277507 + ], + [ + 7.136456071296037, + 50.94497110254998 + ], + [ + 7.13646698529209, + 50.944970941296674 + ], + [ + 7.136476886646639, + 50.94497011544312 + ], + [ + 7.136755675189466, + 50.945010919701666 + ], + [ + 7.136799963783908, + 50.94505715011422 + ], + [ + 7.136743534660998, + 50.945079597741724 + ], + [ + 7.136696269691208, + 50.945098400813805 + ], + [ + 7.136674898415376, + 50.94512560611134 + ], + [ + 7.136655271967926, + 50.9451490853401 + ], + [ + 7.136608494361618, + 50.945123375328095 + ], + [ + 7.136602905234066, + 50.94512540680461 + ], + [ + 7.136598230540687, + 50.94512710572426 + ], + [ + 7.136594374137582, + 50.94512874035953 + ], + [ + 7.136587500109496, + 50.945131005845305 + ], + [ + 7.136582015139177, + 50.945161580949936 + ], + [ + 7.136592720326788, + 50.945168742507036 + ], + [ + 7.136599721388817, + 50.94517358845878 + ], + [ + 7.136631819327485, + 50.94519526530301 + ], + [ + 7.1367906361660705, + 50.945287464859476 + ], + [ + 7.136794346674741, + 50.945289621373504 + ], + [ + 7.1367982617911485, + 50.94529189447155 + ], + [ + 7.136804034260844, + 50.945295246759166 + ], + [ + 7.136846983905586, + 50.945320177916265 + ], + [ + 7.136895138033422, + 50.945348106024184 + ], + [ + 7.136988345977738, + 50.94532626769957 + ], + [ + 7.137114767420994, + 50.945323739617535 + ], + [ + 7.13711098468533, + 50.94525829787201 + ], + [ + 7.137198084441235, + 50.94525730792058 + ], + [ + 7.137265172485278, + 50.94529335787294 + ], + [ + 7.137255269376852, + 50.945348781872866 + ], + [ + 7.137445954528024, + 50.945344273087784 + ], + [ + 7.1375776666332245, + 50.94534151773022 + ], + [ + 7.137693227562131, + 50.945404062251484 + ], + [ + 7.137674046975972, + 50.94543919182309 + ], + [ + 7.1377051531767925, + 50.94549050791217 + ], + [ + 7.137767729498054, + 50.94554243478244 + ], + [ + 7.137770795362205, + 50.945544978497885 + ], + [ + 7.137773588368481, + 50.94554729661948 + ], + [ + 7.137794517781373, + 50.94556469123359 + ], + [ + 7.1378008633267305, + 50.945562398360984 + ], + [ + 7.137804858137385, + 50.94556089809893 + ], + [ + 7.137808318897482, + 50.9455595808814 + ], + [ + 7.137892213536633, + 50.9455273064532 + ], + [ + 7.137957071293717, + 50.945542633443985 + ], + [ + 7.137955566437451, + 50.945546804039346 + ], + [ + 7.137949470131758, + 50.945595441109866 + ], + [ + 7.137933082576585, + 50.945718458959554 + ], + [ + 7.137866281984158, + 50.945703472403665 + ], + [ + 7.137800284894385, + 50.94568907781053 + ], + [ + 7.137757189053505, + 50.94569538920344 + ], + [ + 7.137807702531783, + 50.945746412248575 + ], + [ + 7.137849279189964, + 50.945788409792534 + ], + [ + 7.138008338570143, + 50.94589132195707 + ], + [ + 7.138021912264448, + 50.94589108515948 + ], + [ + 7.138032203276156, + 50.94589205510575 + ], + [ + 7.138175864309173, + 50.94584543108287 + ], + [ + 7.138199789836226, + 50.94577288564974 + ], + [ + 7.138353665320394, + 50.94578863813917 + ], + [ + 7.138353029328433, + 50.9458615666582 + ], + [ + 7.138428526898862, + 50.94592555540678 + ], + [ + 7.138543439446101, + 50.945805550071206 + ], + [ + 7.138695396106723, + 50.945792008275234 + ], + [ + 7.13875181449654, + 50.94577927167925 + ], + [ + 7.138751531132055, + 50.945776101429324 + ], + [ + 7.138750372524969, + 50.9457696453697 + ], + [ + 7.138749718204877, + 50.945765854046606 + ], + [ + 7.138748874774004, + 50.945760809604046 + ], + [ + 7.138746409547065, + 50.94574832411782 + ], + [ + 7.138745593958335, + 50.94574425771888 + ], + [ + 7.138727440331335, + 50.94566598786352 + ], + [ + 7.138731636738831, + 50.94565851366482 + ], + [ + 7.138736103983298, + 50.94564867847783 + ], + [ + 7.138768097125653, + 50.94563758592403 + ], + [ + 7.138777058197194, + 50.94563382197845 + ], + [ + 7.1387890541348415, + 50.94562945887701 + ], + [ + 7.138906513602303, + 50.94558817843284 + ], + [ + 7.1390472896180315, + 50.94553921130005 + ], + [ + 7.1391855184409465, + 50.94549113693203 + ], + [ + 7.139198119742248, + 50.945501593129684 + ], + [ + 7.139202141999196, + 50.94550500104228 + ], + [ + 7.139206139604227, + 50.94550842025339 + ], + [ + 7.139226011423988, + 50.94552575278417 + ], + [ + 7.139229799330523, + 50.94552886197196 + ], + [ + 7.139233560734732, + 50.9455318861978 + ], + [ + 7.139242312900412, + 50.945538841906576 + ], + [ + 7.139192699325423, + 50.94562933757585 + ], + [ + 7.139219320377659, + 50.94564977523097 + ], + [ + 7.13927668009895, + 50.94569381172974 + ], + [ + 7.139230282642733, + 50.94571132828239 + ], + [ + 7.139264375967995, + 50.94573580261278 + ], + [ + 7.139349112800359, + 50.94570302613288 + ], + [ + 7.139356341625915, + 50.945700216632844 + ], + [ + 7.139360753617349, + 50.945698499926095 + ], + [ + 7.13936836876433, + 50.94569553469805 + ], + [ + 7.139473415778501, + 50.94574434039742 + ], + [ + 7.139469572377345, + 50.945748645521704 + ], + [ + 7.1394679172855176, + 50.94575126954776 + ], + [ + 7.139436092548523, + 50.9457950826397 + ], + [ + 7.139423386515, + 50.94581277283641 + ], + [ + 7.139398393049873, + 50.94584786580739 + ], + [ + 7.1393978706907815, + 50.94585146389941 + ], + [ + 7.139401659090981, + 50.945966863949465 + ], + [ + 7.1394034528154995, + 50.946015671791315 + ], + [ + 7.13953420662271, + 50.94604990293509 + ], + [ + 7.1395391520595926, + 50.94605418712925 + ], + [ + 7.139543318196602, + 50.94605627526926 + ], + [ + 7.139552579275632, + 50.946062219193685 + ], + [ + 7.139515800742902, + 50.94610844278309 + ], + [ + 7.139511443037048, + 50.946114040181335 + ], + [ + 7.139537700045204, + 50.9461345493034 + ], + [ + 7.139525177017297, + 50.9462209945722 + ], + [ + 7.139522232779815, + 50.94625451340771 + ], + [ + 7.13953532744503, + 50.946259858295605 + ], + [ + 7.139541006847653, + 50.94626216211254 + ], + [ + 7.139741122754626, + 50.94634387357161 + ], + [ + 7.139744073671011, + 50.94634056419467 + ], + [ + 7.1397488908339035, + 50.94633529697735 + ], + [ + 7.139784774293729, + 50.94629127326872 + ], + [ + 7.1397886888387845, + 50.94629228266105 + ], + [ + 7.139793836150682, + 50.94629368672627 + ], + [ + 7.139916461869239, + 50.94632724561762 + ], + [ + 7.140219725954764, + 50.94627133524289 + ], + [ + 7.14028203248529, + 50.94629252276125 + ], + [ + 7.140267363885019, + 50.94632889197991 + ], + [ + 7.140287368075632, + 50.94637613360303 + ], + [ + 7.140304051730394, + 50.94641554470355 + ], + [ + 7.14028738482804, + 50.94645182993126 + ], + [ + 7.140274133703571, + 50.946480719304574 + ], + [ + 7.140289115684182, + 50.946480799663455 + ], + [ + 7.140295499287543, + 50.94648083479391 + ], + [ + 7.140303751726012, + 50.946480879906254 + ], + [ + 7.140418672670674, + 50.94648150165051 + ], + [ + 7.140457103567173, + 50.94653665337712 + ], + [ + 7.140543171194108, + 50.94656475841493 + ], + [ + 7.140581753657523, + 50.94664690397047 + ], + [ + 7.140606268446863, + 50.94669475068874 + ], + [ + 7.140718366804453, + 50.94670272258262 + ], + [ + 7.14071681888975, + 50.94669734586739 + ], + [ + 7.140709624723258, + 50.946666177453395 + ], + [ + 7.140704238758032, + 50.94666140513947 + ], + [ + 7.140701616753889, + 50.94665718677657 + ], + [ + 7.140693169183842, + 50.946646939893604 + ], + [ + 7.14083270751663, + 50.94662702616119 + ], + [ + 7.140838924783087, + 50.946628376168825 + ], + [ + 7.140845030651941, + 50.94663091245088 + ], + [ + 7.1408560232582206, + 50.94663289340231 + ], + [ + 7.14090744839554, + 50.94667248799103 + ], + [ + 7.140912233070053, + 50.946675810852724 + ], + [ + 7.140915607373014, + 50.946677730745684 + ], + [ + 7.14122846679429, + 50.946718056773236 + ], + [ + 7.141500447524924, + 50.94683502994209 + ], + [ + 7.141505649586638, + 50.946836991503616 + ], + [ + 7.141510604936582, + 50.94683874948077 + ], + [ + 7.141531140384075, + 50.946741612323365 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Rath/Heumar", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "808", + "Population_rel": 0.01082313150251829, + "Population_abs": 11776 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.92647179953876, + 50.93748386401248 + ], + [ + 6.926381165753358, + 50.93708235080994 + ], + [ + 6.926380187763221, + 50.93707806677591 + ], + [ + 6.926324812081402, + 50.93684323154655 + ], + [ + 6.92839366281827, + 50.93682247540846 + ], + [ + 6.928396367063231, + 50.93703398750117 + ], + [ + 6.928396415816193, + 50.93703730977786 + ], + [ + 6.928396484525726, + 50.9370414319578 + ], + [ + 6.928396541673673, + 50.937044309190235 + ], + [ + 6.928398805999163, + 50.93710035468518 + ], + [ + 6.928406246705629, + 50.93723294476261 + ], + [ + 6.928410410514887, + 50.93723293591181 + ], + [ + 6.92849772468687, + 50.937232730689956 + ], + [ + 6.928507756318331, + 50.93723270814437 + ], + [ + 6.928511897371364, + 50.93723269888613 + ], + [ + 6.928518002832146, + 50.93723268671292 + ], + [ + 6.928800460304241, + 50.937232207063936 + ], + [ + 6.928800623302835, + 50.9371908096846 + ], + [ + 6.928808294353384, + 50.93715592122632 + ], + [ + 6.928874214552156, + 50.93715655569053 + ], + [ + 6.9290095778720975, + 50.93715622225517 + ], + [ + 6.929071593190211, + 50.93715606782655 + ], + [ + 6.929206028678985, + 50.937156145807926 + ], + [ + 6.929213255196066, + 50.9371561462903 + ], + [ + 6.929219278939646, + 50.93715614702091 + ], + [ + 6.929547275066231, + 50.937156324086956 + ], + [ + 6.929550052069046, + 50.937231362759675 + ], + [ + 6.9297809386082525, + 50.93723069183702 + ], + [ + 6.9297714988248345, + 50.93702266148666 + ], + [ + 6.929771541407924, + 50.93701715263903 + ], + [ + 6.929771661504922, + 50.93701233409126 + ], + [ + 6.929771731443072, + 50.93700963809047 + ], + [ + 6.929771842559374, + 50.937005278067325 + ], + [ + 6.929771933348901, + 50.937001824258864 + ], + [ + 6.9297721606465394, + 50.93699308631475 + ], + [ + 6.92977296268735, + 50.936967980850724 + ], + [ + 6.92981994238371, + 50.93696709349466 + ], + [ + 6.9299226744965745, + 50.93696630262501 + ], + [ + 6.930081914138016, + 50.936965079157886 + ], + [ + 6.9302385528819945, + 50.93696392807608 + ], + [ + 6.930241891863689, + 50.93690313342106 + ], + [ + 6.930396795398142, + 50.93689938363151 + ], + [ + 6.930396332676158, + 50.93692829859238 + ], + [ + 6.930396264107852, + 50.93693243902206 + ], + [ + 6.930394562758635, + 50.93701171619474 + ], + [ + 6.930394477649313, + 50.93701600472883 + ], + [ + 6.930394362075833, + 50.93702181267513 + ], + [ + 6.930394200759597, + 50.93703009310567 + ], + [ + 6.9303941326349, + 50.93703367862566 + ], + [ + 6.930393935025913, + 50.93704405846524 + ], + [ + 6.930393885118437, + 50.93704665678883 + ], + [ + 6.930393815647925, + 50.93705033671984 + ], + [ + 6.930393366979134, + 50.93707428735119 + ], + [ + 6.930392912604059, + 50.93709871904961 + ], + [ + 6.930392830231423, + 50.937103426743285 + ], + [ + 6.9303927665601455, + 50.9371175215983 + ], + [ + 6.9303935053114865, + 50.93712152794336 + ], + [ + 6.930396396627511, + 50.93712565339603 + ], + [ + 6.930712578149685, + 50.93712362379674 + ], + [ + 6.930906811891112, + 50.93712179906152 + ], + [ + 6.930996817299119, + 50.9371200900407 + ], + [ + 6.930997014812197, + 50.93711612187935 + ], + [ + 6.930997173046093, + 50.937112814066104 + ], + [ + 6.930998469414562, + 50.93708479887148 + ], + [ + 6.930998689358671, + 50.93707984448782 + ], + [ + 6.930998895921724, + 50.937075319770635 + ], + [ + 6.930999274675572, + 50.937067461405555 + ], + [ + 6.931001320844076, + 50.93702784670554 + ], + [ + 6.9310021810180835, + 50.93701087536099 + ], + [ + 6.931002034639387, + 50.93699650607021 + ], + [ + 6.931001020773234, + 50.93689500475658 + ], + [ + 6.931001445360345, + 50.93686716477805 + ], + [ + 6.9310023341068465, + 50.9368202122066 + ], + [ + 6.931002763442584, + 50.93679463785027 + ], + [ + 6.931002856071044, + 50.936789088518374 + ], + [ + 6.9310029387835455, + 50.936784179369326 + ], + [ + 6.931003297978615, + 50.936762942379055 + ], + [ + 6.931003417350455, + 50.93675611730086 + ], + [ + 6.9310035874746, + 50.93674657789382 + ], + [ + 6.931006066055926, + 50.93672595047334 + ], + [ + 6.9310063966232835, + 50.936723089108725 + ], + [ + 6.931006739607874, + 50.93672010834668 + ], + [ + 6.931007197324177, + 50.936716114218044 + ], + [ + 6.931007559504092, + 50.93671305375136 + ], + [ + 6.931007898750388, + 50.93671022132074 + ], + [ + 6.931008325500085, + 50.93670666823884 + ], + [ + 6.931010906444856, + 50.93668511357284 + ], + [ + 6.931012095775979, + 50.93667566867751 + ], + [ + 6.93101244152055, + 50.9366728822304 + ], + [ + 6.9310747459045015, + 50.936668734119934 + ], + [ + 6.931097611950788, + 50.936667653608446 + ], + [ + 6.931171229513835, + 50.93666417363064 + ], + [ + 6.931217679614629, + 50.93666170960785 + ], + [ + 6.9312283854915755, + 50.936662399395246 + ], + [ + 6.93123457553078, + 50.93666371876231 + ], + [ + 6.931249780887498, + 50.93666786725888 + ], + [ + 6.931254795124812, + 50.93666906055981 + ], + [ + 6.93131111957669, + 50.93668072897089 + ], + [ + 6.931325332840698, + 50.93668365920384 + ], + [ + 6.931340274804155, + 50.93668671926792 + ], + [ + 6.9315083843216, + 50.9366842992763 + ], + [ + 6.931493392437838, + 50.93712435836476 + ], + [ + 6.931652080657803, + 50.93712270926558 + ], + [ + 6.931652143397314, + 50.93711135300753 + ], + [ + 6.931652183137047, + 50.93710436373087 + ], + [ + 6.9317934661155345, + 50.937105697774186 + ], + [ + 6.931793920979358, + 50.93703771271157 + ], + [ + 6.931930301603416, + 50.937037250912 + ], + [ + 6.93192874251123, + 50.93695690866503 + ], + [ + 6.932188122060298, + 50.936956017366406 + ], + [ + 6.932188995070957, + 50.93670641443619 + ], + [ + 6.932189061829133, + 50.93667391922345 + ], + [ + 6.932405533159418, + 50.93667108198606 + ], + [ + 6.932409642224936, + 50.9366738780885 + ], + [ + 6.932415816306559, + 50.93667754718969 + ], + [ + 6.932432243599568, + 50.936682934035424 + ], + [ + 6.932432257989813, + 50.936677091019114 + ], + [ + 6.932432311817865, + 50.93665130045526 + ], + [ + 6.93277426081912, + 50.936648387895325 + ], + [ + 6.932773624313929, + 50.93665452298543 + ], + [ + 6.93277259142482, + 50.93666449230735 + ], + [ + 6.932834026860331, + 50.93666337227094 + ], + [ + 6.932925616600635, + 50.93666183102635 + ], + [ + 6.932934858231614, + 50.93687092330452 + ], + [ + 6.93294358449937, + 50.93687192863818 + ], + [ + 6.932950685790437, + 50.93687240873944 + ], + [ + 6.93299554507382, + 50.93687234236561 + ], + [ + 6.9330573191633, + 50.93687193691784 + ], + [ + 6.933058567347642, + 50.9369123789454 + ], + [ + 6.933059673494839, + 50.936946619932236 + ], + [ + 6.933059823024188, + 50.936951432462934 + ], + [ + 6.933059928439642, + 50.93695579542205 + ], + [ + 6.9330594563080625, + 50.93699725206768 + ], + [ + 6.933059414622485, + 50.937000631198764 + ], + [ + 6.933059358789005, + 50.937004939138674 + ], + [ + 6.933059315038972, + 50.937008140156024 + ], + [ + 6.933059262930417, + 50.937012011063274 + ], + [ + 6.93305896329945, + 50.937033851692604 + ], + [ + 6.933058877989004, + 50.937040108066505 + ], + [ + 6.933058820743351, + 50.93704428737007 + ], + [ + 6.933058473188967, + 50.9370693909999 + ], + [ + 6.933058334506509, + 50.93707951466113 + ], + [ + 6.933058232566335, + 50.9370868841727 + ], + [ + 6.933058156237005, + 50.937092392421604 + ], + [ + 6.933057413321961, + 50.93714646976481 + ], + [ + 6.933225484607589, + 50.93714613407303 + ], + [ + 6.933342296440884, + 50.937144011059374 + ], + [ + 6.933343231576672, + 50.93707586542409 + ], + [ + 6.933343304982879, + 50.937071096413575 + ], + [ + 6.933485380232325, + 50.9370640305361 + ], + [ + 6.933485985518971, + 50.93703031631057 + ], + [ + 6.9337011588803, + 50.93703364231378 + ], + [ + 6.933822977995059, + 50.93703552964893 + ], + [ + 6.933828916557235, + 50.93703562127004 + ], + [ + 6.933830104298964, + 50.937058787828974 + ], + [ + 6.93384101606764, + 50.93709785934957 + ], + [ + 6.933901584569132, + 50.93709691407177 + ], + [ + 6.933959499318542, + 50.93709601353124 + ], + [ + 6.9339688844724305, + 50.93709586755134 + ], + [ + 6.933981817131316, + 50.937095647650644 + ], + [ + 6.9341638827470256, + 50.93709168735637 + ], + [ + 6.934260222251585, + 50.937091706796366 + ], + [ + 6.934269168312326, + 50.93709189748445 + ], + [ + 6.93428051618735, + 50.937092139668096 + ], + [ + 6.9342974427479565, + 50.937092500356584 + ], + [ + 6.9342956541281815, + 50.937007931517456 + ], + [ + 6.934297965652823, + 50.93692466108723 + ], + [ + 6.9342981527465595, + 50.936919990322 + ], + [ + 6.934299446624679, + 50.93688492122324 + ], + [ + 6.93430256780065, + 50.936822241126734 + ], + [ + 6.934310302798411, + 50.936662528557335 + ], + [ + 6.93431090307814, + 50.936650012619594 + ], + [ + 6.934311148616265, + 50.93664485812273 + ], + [ + 6.934311431002899, + 50.93663896858536 + ], + [ + 6.934468714853351, + 50.93663582212699 + ], + [ + 6.934565658848746, + 50.93663412790574 + ], + [ + 6.934658679894754, + 50.93663250090184 + ], + [ + 6.9347302444668655, + 50.936631304555156 + ], + [ + 6.934700697362772, + 50.93665207191365 + ], + [ + 6.934700577851703, + 50.93665589306204 + ], + [ + 6.934700376634727, + 50.93665995199981 + ], + [ + 6.934700540404902, + 50.93668394405019 + ], + [ + 6.934701046646567, + 50.93675873102626 + ], + [ + 6.934717525267341, + 50.936758437075454 + ], + [ + 6.934733395707138, + 50.93675815214862 + ], + [ + 6.934918206734259, + 50.93675474470874 + ], + [ + 6.934918368027375, + 50.93681326389637 + ], + [ + 6.934919962782177, + 50.936933971759544 + ], + [ + 6.934939872055005, + 50.93699258756987 + ], + [ + 6.934940634129344, + 50.93699665455489 + ], + [ + 6.934941052621518, + 50.93700397841085 + ], + [ + 6.9349411219295405, + 50.93700736130406 + ], + [ + 6.934941207173205, + 50.93701594199364 + ], + [ + 6.934941409356445, + 50.937037399370226 + ], + [ + 6.934941937090152, + 50.937095615651046 + ], + [ + 6.935166524769712, + 50.93709290876589 + ], + [ + 6.935295417594475, + 50.937089831894546 + ], + [ + 6.935637272290891, + 50.93707609961498 + ], + [ + 6.935735901970192, + 50.93707843286741 + ], + [ + 6.935966547685347, + 50.93707777692768 + ], + [ + 6.935966342811709, + 50.93706642943248 + ], + [ + 6.936026572498941, + 50.93705725493445 + ], + [ + 6.936073607255571, + 50.93705348352276 + ], + [ + 6.936073541338686, + 50.93705060074563 + ], + [ + 6.936073370250502, + 50.93704405023851 + ], + [ + 6.9360731413209145, + 50.937035302424185 + ], + [ + 6.936290732133844, + 50.93703656184413 + ], + [ + 6.936293563664633, + 50.93711218945038 + ], + [ + 6.936398209239148, + 50.93710901277046 + ], + [ + 6.936396880028498, + 50.93708152222679 + ], + [ + 6.936502872499638, + 50.93707836746488 + ], + [ + 6.936537039646829, + 50.937077526127055 + ], + [ + 6.936541850304451, + 50.937077406104635 + ], + [ + 6.936547454678774, + 50.93707726593578 + ], + [ + 6.936552088934996, + 50.937077143694154 + ], + [ + 6.936556781305363, + 50.93707702697652 + ], + [ + 6.936563011051148, + 50.93707687537675 + ], + [ + 6.936571576394613, + 50.937076663431625 + ], + [ + 6.936607384860407, + 50.93707578633035 + ], + [ + 6.936616947822183, + 50.937075546147476 + ], + [ + 6.936624407493865, + 50.93707535962362 + ], + [ + 6.936729163380891, + 50.937072743111926 + ], + [ + 6.93682041533654, + 50.93707148333485 + ], + [ + 6.9368834125499825, + 50.93701351651484 + ], + [ + 6.936892633077391, + 50.937002940885755 + ], + [ + 6.936895482610401, + 50.93699969502193 + ], + [ + 6.936902609131363, + 50.936991503512644 + ], + [ + 6.936923732878831, + 50.93697013524537 + ], + [ + 6.936949628316449, + 50.9369440279336 + ], + [ + 6.937046363650564, + 50.936853547528486 + ], + [ + 6.937121306444612, + 50.93677780230136 + ], + [ + 6.937122221187117, + 50.93677495124504 + ], + [ + 6.937122244335499, + 50.93677140540139 + ], + [ + 6.937115519182863, + 50.93666157936492 + ], + [ + 6.937115342235145, + 50.93665866314823 + ], + [ + 6.937115187009359, + 50.93665577069926 + ], + [ + 6.93711454364019, + 50.93659003988147 + ], + [ + 6.937136043356503, + 50.936589692218895 + ], + [ + 6.937144570855173, + 50.93658956140698 + ], + [ + 6.9371543436731, + 50.93658940133635 + ], + [ + 6.9371717585108055, + 50.936589113690395 + ], + [ + 6.93717804589649, + 50.93658900894511 + ], + [ + 6.93736676596002, + 50.93658569908632 + ], + [ + 6.937896429538523, + 50.93657685967241 + ], + [ + 6.937773362466899, + 50.93665650395542 + ], + [ + 6.937770540168091, + 50.93665833200036 + ], + [ + 6.93776771150404, + 50.93666017522223 + ], + [ + 6.9377166918536295, + 50.93669318678596 + ], + [ + 6.937719488447485, + 50.936695864178354 + ], + [ + 6.93772226520954, + 50.93669853942158 + ], + [ + 6.937730579632729, + 50.936706505511545 + ], + [ + 6.937740655249373, + 50.93671616566704 + ], + [ + 6.937769325253327, + 50.93674362745387 + ], + [ + 6.937772169405526, + 50.93674635605037 + ], + [ + 6.93777507939173, + 50.936749173049584 + ], + [ + 6.93779553107759, + 50.9367687810645 + ], + [ + 6.937816997223996, + 50.93678849513597 + ], + [ + 6.937820938874124, + 50.93678687933113 + ], + [ + 6.93782505575914, + 50.93678519557084 + ], + [ + 6.937917861992564, + 50.93674766704736 + ], + [ + 6.937953628785378, + 50.936733216266184 + ], + [ + 6.937957516842355, + 50.93673178208409 + ], + [ + 6.937962294962253, + 50.93673020893109 + ], + [ + 6.937977981142609, + 50.936729712551625 + ], + [ + 6.93800908138123, + 50.93672940120593 + ], + [ + 6.9380525915988, + 50.936729034747806 + ], + [ + 6.938202703264442, + 50.93672874700359 + ], + [ + 6.938206720405898, + 50.93683388613309 + ], + [ + 6.938317670762666, + 50.9368329937918 + ], + [ + 6.938317043047709, + 50.93674939890004 + ], + [ + 6.93844539865027, + 50.93673704096474 + ], + [ + 6.938443182651073, + 50.93670469702839 + ], + [ + 6.938442828077363, + 50.936699294491355 + ], + [ + 6.93844246923693, + 50.93669389187896 + ], + [ + 6.938440404951342, + 50.9366625588257 + ], + [ + 6.938439844721815, + 50.936654758509235 + ], + [ + 6.938439553286373, + 50.93665079249641 + ], + [ + 6.938439340664098, + 50.9366480051628 + ], + [ + 6.938433723494367, + 50.93656705626766 + ], + [ + 6.938665368271688, + 50.93656267483169 + ], + [ + 6.9390632195263695, + 50.936547737647466 + ], + [ + 6.939262387620367, + 50.9365471445336 + ], + [ + 6.939266487693885, + 50.93654712697556 + ], + [ + 6.939267497004983, + 50.93612235363258 + ], + [ + 6.939280075005958, + 50.93600170181179 + ], + [ + 6.939495702740916, + 50.936015833014736 + ], + [ + 6.9395173533552885, + 50.93588849793811 + ], + [ + 6.939516213372277, + 50.935849538295024 + ], + [ + 6.939731744849687, + 50.93586380407239 + ], + [ + 6.939763329972399, + 50.93567985479016 + ], + [ + 6.939338772115072, + 50.93565232006655 + ], + [ + 6.939358297317104, + 50.935545892235204 + ], + [ + 6.939570560217909, + 50.93556036413883 + ], + [ + 6.939565213958576, + 50.935591599647765 + ], + [ + 6.939650119214952, + 50.935597388306086 + ], + [ + 6.9397653520042955, + 50.93563259752249 + ], + [ + 6.939811712133149, + 50.935406053568876 + ], + [ + 6.9396385298922265, + 50.93536232256158 + ], + [ + 6.939673930571114, + 50.93515555233243 + ], + [ + 6.939733801328188, + 50.93502040973778 + ], + [ + 6.939787208658567, + 50.93479213833334 + ], + [ + 6.939696076661837, + 50.934779260681175 + ], + [ + 6.939493350346784, + 50.93476489166463 + ], + [ + 6.939502852196976, + 50.93471402590538 + ], + [ + 6.9395148929180595, + 50.934685607599754 + ], + [ + 6.939551196309178, + 50.93459992147397 + ], + [ + 6.939584027338191, + 50.93452082135932 + ], + [ + 6.939855892880359, + 50.93454236344104 + ], + [ + 6.939886354483733, + 50.934423279091725 + ], + [ + 6.940148851759396, + 50.93446710006946 + ], + [ + 6.940209936920078, + 50.93430767743054 + ], + [ + 6.940323400767511, + 50.934325909700036 + ], + [ + 6.940342944421516, + 50.93427217665852 + ], + [ + 6.940362081291869, + 50.93421943474722 + ], + [ + 6.940165102763282, + 50.934186682455625 + ], + [ + 6.9402086560458525, + 50.93408196548032 + ], + [ + 6.940228924024349, + 50.93408530815795 + ], + [ + 6.940294608819926, + 50.933829572052176 + ], + [ + 6.940270326908106, + 50.933764429656016 + ], + [ + 6.940254151623207, + 50.933721037886826 + ], + [ + 6.940483453772931, + 50.93323385621013 + ], + [ + 6.9404239055226995, + 50.93322606651764 + ], + [ + 6.940143517836511, + 50.93318014244719 + ], + [ + 6.94019074486508, + 50.933067216004595 + ], + [ + 6.940410756136069, + 50.93309960211019 + ], + [ + 6.940439396839896, + 50.933017388814996 + ], + [ + 6.9406347617653585, + 50.933047995970696 + ], + [ + 6.940700127663045, + 50.93287532337731 + ], + [ + 6.940737094053873, + 50.9328814077652 + ], + [ + 6.941056718136914, + 50.93211941291131 + ], + [ + 6.941220425673917, + 50.932146409122176 + ], + [ + 6.941248340982784, + 50.93207058371867 + ], + [ + 6.941166272186566, + 50.932057042295526 + ], + [ + 6.941270696300639, + 50.93182517487766 + ], + [ + 6.941121970977092, + 50.93180039553977 + ], + [ + 6.9411543058574745, + 50.931725073514016 + ], + [ + 6.941222649588874, + 50.931650360496604 + ], + [ + 6.94131818767317, + 50.931577585845645 + ], + [ + 6.941066571752214, + 50.931529544265985 + ], + [ + 6.941073356561893, + 50.931414696246414 + ], + [ + 6.941122211398437, + 50.93129211271409 + ], + [ + 6.94112507651612, + 50.93128492234396 + ], + [ + 6.941156737316054, + 50.931218505773316 + ], + [ + 6.941407311691608, + 50.931257385709124 + ], + [ + 6.941594127574743, + 50.93128761119693 + ], + [ + 6.94159725781813, + 50.93126655076242 + ], + [ + 6.941635323652183, + 50.93118340882786 + ], + [ + 6.941678234325665, + 50.931085302093614 + ], + [ + 6.941689157052237, + 50.931062650455914 + ], + [ + 6.941738078383476, + 50.931040951251255 + ], + [ + 6.941446157364785, + 50.93096547830399 + ], + [ + 6.94126950577643, + 50.93093506219103 + ], + [ + 6.941280487469692, + 50.930908275383125 + ], + [ + 6.941321004415104, + 50.930813980397396 + ], + [ + 6.941344750287357, + 50.930758713196724 + ], + [ + 6.9415417378564, + 50.930672894040086 + ], + [ + 6.941447468506947, + 50.93058340178351 + ], + [ + 6.9414614784141575, + 50.93054472549925 + ], + [ + 6.941673319316215, + 50.930377342504016 + ], + [ + 6.94182771932668, + 50.93026076319639 + ], + [ + 6.941869841704956, + 50.93014895572629 + ], + [ + 6.941759230144878, + 50.93013061149871 + ], + [ + 6.9418563411990135, + 50.92993134301099 + ], + [ + 6.941840811108136, + 50.929915011658714 + ], + [ + 6.9418239346514, + 50.9298972634256 + ], + [ + 6.9417691396998205, + 50.92983963633221 + ], + [ + 6.941770971994119, + 50.92976132457094 + ], + [ + 6.941772309459661, + 50.92973983139307 + ], + [ + 6.941774194503812, + 50.92970961039614 + ], + [ + 6.9417854304097695, + 50.929660258086784 + ], + [ + 6.941758467596174, + 50.92957741026538 + ], + [ + 6.94175701585448, + 50.92957290035951 + ], + [ + 6.941745254583222, + 50.929541286632464 + ], + [ + 6.941735268589348, + 50.929514945792874 + ], + [ + 6.941785980305107, + 50.929504811789165 + ], + [ + 6.941811204807926, + 50.929499770343746 + ], + [ + 6.941827058617646, + 50.92947653110228 + ], + [ + 6.941901832379839, + 50.92936689572459 + ], + [ + 6.941933338096662, + 50.92940190285942 + ], + [ + 6.941948250957747, + 50.92941847964222 + ], + [ + 6.942023584786023, + 50.929371779168115 + ], + [ + 6.942044772669815, + 50.92935865662843 + ], + [ + 6.9421679957751, + 50.92943854983786 + ], + [ + 6.942203175606704, + 50.92941715141528 + ], + [ + 6.942265826085895, + 50.92945689142121 + ], + [ + 6.942299476262738, + 50.929478659614865 + ], + [ + 6.94244957117487, + 50.92938593519927 + ], + [ + 6.942402808735765, + 50.929352512893125 + ], + [ + 6.942522899850057, + 50.929308619251394 + ], + [ + 6.942773346247691, + 50.92916227221111 + ], + [ + 6.942923387571723, + 50.92905588107356 + ], + [ + 6.942995192884703, + 50.92900496446057 + ], + [ + 6.9427924627653175, + 50.92889783173208 + ], + [ + 6.942970522149721, + 50.9287909477046 + ], + [ + 6.943121283167363, + 50.928696236652534 + ], + [ + 6.9431605599862545, + 50.92867156174818 + ], + [ + 6.94324540888161, + 50.9287173512854 + ], + [ + 6.9432101393942744, + 50.92874577259431 + ], + [ + 6.943256167157494, + 50.92877939568737 + ], + [ + 6.943279366398929, + 50.92879634495015 + ], + [ + 6.943318904492391, + 50.92882523265726 + ], + [ + 6.94338356703683, + 50.92887246607285 + ], + [ + 6.94340627110509, + 50.928864285112105 + ], + [ + 6.943521353571961, + 50.928801417931105 + ], + [ + 6.943439636380473, + 50.928741760476825 + ], + [ + 6.943552865256417, + 50.92866470527122 + ], + [ + 6.943659357819066, + 50.9285921091284 + ], + [ + 6.943785350264378, + 50.92850614085323 + ], + [ + 6.9439054524950174, + 50.92842435513371 + ], + [ + 6.943942212071182, + 50.92839933703475 + ], + [ + 6.943876142598586, + 50.928283460068926 + ], + [ + 6.943921423971621, + 50.9281672447881 + ], + [ + 6.94387848694231, + 50.92813934158939 + ], + [ + 6.943911619219427, + 50.928124252613905 + ], + [ + 6.944007306646618, + 50.9280806785824 + ], + [ + 6.943945763783989, + 50.92804090414903 + ], + [ + 6.943983598970589, + 50.92800571950827 + ], + [ + 6.944079417994871, + 50.92794705254741 + ], + [ + 6.944129577088216, + 50.92797963823197 + ], + [ + 6.944250397641902, + 50.927958876934554 + ], + [ + 6.944334573962624, + 50.92815685766162 + ], + [ + 6.944421909101976, + 50.92809813994378 + ], + [ + 6.944874430408095, + 50.92779383535348 + ], + [ + 6.944643561706214, + 50.92777267855671 + ], + [ + 6.9445495106492885, + 50.927764090916554 + ], + [ + 6.944517637748984, + 50.927759276491045 + ], + [ + 6.944616621804126, + 50.92767859854737 + ], + [ + 6.9447247610845295, + 50.92768050987172 + ], + [ + 6.944721432902693, + 50.92764260177552 + ], + [ + 6.944724229775828, + 50.927595233925885 + ], + [ + 6.9446836635723, + 50.92756865618039 + ], + [ + 6.94469506173863, + 50.9275614756698 + ], + [ + 6.944702400645062, + 50.927556891243476 + ], + [ + 6.94478606343282, + 50.92750490160973 + ], + [ + 6.944833761139894, + 50.927536538879565 + ], + [ + 6.944867800208224, + 50.92755894005453 + ], + [ + 6.9449053974330095, + 50.92755382618564 + ], + [ + 6.945034967625439, + 50.92749731219536 + ], + [ + 6.945016008324617, + 50.927474183637095 + ], + [ + 6.945004787643057, + 50.92746097027165 + ], + [ + 6.944970746327045, + 50.92741656937019 + ], + [ + 6.945042791842587, + 50.92737103852916 + ], + [ + 6.945170229432315, + 50.927293507916254 + ], + [ + 6.945261044894554, + 50.92723990715829 + ], + [ + 6.945267879733991, + 50.927235875935935 + ], + [ + 6.94534446411537, + 50.92719067213808 + ], + [ + 6.9454869190403805, + 50.927150814321415 + ], + [ + 6.945565225921766, + 50.92725892467053 + ], + [ + 6.945657432635601, + 50.927232387942375 + ], + [ + 6.94574624660752, + 50.927186182259106 + ], + [ + 6.945903476382895, + 50.92709087908136 + ], + [ + 6.945923711096648, + 50.92707866992979 + ], + [ + 6.945998401665686, + 50.92713541483399 + ], + [ + 6.946097335409211, + 50.927090386171905 + ], + [ + 6.946239750333691, + 50.92702208115932 + ], + [ + 6.946207926428241, + 50.92699435635977 + ], + [ + 6.946181807839574, + 50.92697014868097 + ], + [ + 6.946268158821601, + 50.92692908059357 + ], + [ + 6.946298823292212, + 50.92694015904635 + ], + [ + 6.946306495514921, + 50.92694292741662 + ], + [ + 6.9464149541627185, + 50.92690146212805 + ], + [ + 6.946447512806458, + 50.926886724797576 + ], + [ + 6.946507583535655, + 50.92685728904021 + ], + [ + 6.946461210070169, + 50.92681218325867 + ], + [ + 6.946431892440943, + 50.92677592342978 + ], + [ + 6.946533384008413, + 50.92673069297265 + ], + [ + 6.946469298348582, + 50.92667349012317 + ], + [ + 6.94661392439452, + 50.926613357549456 + ], + [ + 6.9464948229932615, + 50.92650582263454 + ], + [ + 6.946481381426549, + 50.92649369186549 + ], + [ + 6.946462947434565, + 50.92647704561768 + ], + [ + 6.946626527448016, + 50.92640047845027 + ], + [ + 6.947220350702386, + 50.92628074698981 + ], + [ + 6.947262807882457, + 50.926319846795394 + ], + [ + 6.947356941437882, + 50.92640653763451 + ], + [ + 6.947428037896338, + 50.92638030911878 + ], + [ + 6.9474349695949575, + 50.926365278263425 + ], + [ + 6.9474429177002, + 50.92636135912744 + ], + [ + 6.947515114209056, + 50.92633276744661 + ], + [ + 6.948746601254412, + 50.92584452831502 + ], + [ + 6.94889545573664, + 50.925785516821996 + ], + [ + 6.949400878249293, + 50.925579414824035 + ], + [ + 6.94982474528678, + 50.92540561754508 + ], + [ + 6.949869877931648, + 50.92538691171085 + ], + [ + 6.950406377806208, + 50.92516374318078 + ], + [ + 6.950755437784021, + 50.92501850815219 + ], + [ + 6.950947385928112, + 50.92493873656872 + ], + [ + 6.950967836439061, + 50.924930210600216 + ], + [ + 6.950985184217121, + 50.9249230574768 + ], + [ + 6.951062329887688, + 50.924890965573866 + ], + [ + 6.951740465230879, + 50.924583574239826 + ], + [ + 6.95187526953801, + 50.92452265397249 + ], + [ + 6.952026855835212, + 50.92445529704538 + ], + [ + 6.952073758267514, + 50.924432800855165 + ], + [ + 6.952113966740999, + 50.924417857109226 + ], + [ + 6.952124752930733, + 50.92441348559716 + ], + [ + 6.952128746792148, + 50.9244117470162 + ], + [ + 6.9521325212900855, + 50.92441014309089 + ], + [ + 6.952166222804089, + 50.92439505998254 + ], + [ + 6.952315960598479, + 50.92432771702051 + ], + [ + 6.952578680097748, + 50.92421050829312 + ], + [ + 6.952625150355731, + 50.92418990289235 + ], + [ + 6.952754023505788, + 50.92413275750672 + ], + [ + 6.952972213913653, + 50.92433521389816 + ], + [ + 6.953004945268291, + 50.924356970094045 + ], + [ + 6.95303464691156, + 50.92436275054009 + ], + [ + 6.953057943483614, + 50.92436480764795 + ], + [ + 6.953078770849207, + 50.92436437603808 + ], + [ + 6.953095655631217, + 50.92436198748929 + ], + [ + 6.953104244943953, + 50.92436026650583 + ], + [ + 6.953115079997706, + 50.9243572754073 + ], + [ + 6.953124344316863, + 50.92435405170484 + ], + [ + 6.9531330830073825, + 50.924350062406354 + ], + [ + 6.953142321172952, + 50.92434523015392 + ], + [ + 6.953150856769328, + 50.92433977310341 + ], + [ + 6.953161384534241, + 50.924330815526964 + ], + [ + 6.953167281983491, + 50.92432435167637 + ], + [ + 6.953174757743547, + 50.92431276116021 + ], + [ + 6.9531775016665796, + 50.92430636612429 + ], + [ + 6.953180125631407, + 50.92429761441013 + ], + [ + 6.9531820347235875, + 50.92429085217818 + ], + [ + 6.9531888161477635, + 50.924285126928375 + ], + [ + 6.953197552538946, + 50.92427982808876 + ], + [ + 6.953383675078809, + 50.92418883225078 + ], + [ + 6.954337803168326, + 50.92376806214483 + ], + [ + 6.954254364781277, + 50.92368703082547 + ], + [ + 6.954230405506987, + 50.923663046269034 + ], + [ + 6.954301468262058, + 50.9236257884214 + ], + [ + 6.954379056372859, + 50.923587758102855 + ], + [ + 6.954448614197639, + 50.92365074377069 + ], + [ + 6.9547174885101395, + 50.92353590726445 + ], + [ + 6.954645592525461, + 50.923462963331666 + ], + [ + 6.955281207810523, + 50.92318285905154 + ], + [ + 6.955315237371212, + 50.92321321022425 + ], + [ + 6.95545882630199, + 50.92314152667289 + ], + [ + 6.955555087275162, + 50.92322757451473 + ], + [ + 6.955857613361414, + 50.92309436861148 + ], + [ + 6.955769256106038, + 50.92301628403943 + ], + [ + 6.955927117826014, + 50.92294682851785 + ], + [ + 6.955889176705454, + 50.92291306153352 + ], + [ + 6.956042920574948, + 50.922836740733274 + ], + [ + 6.956166959053582, + 50.9229555522996 + ], + [ + 6.956423527123655, + 50.922837487090966 + ], + [ + 6.956425779870123, + 50.9228225464755 + ], + [ + 6.956324579321042, + 50.92272853880206 + ], + [ + 6.956450601945629, + 50.922687503101244 + ], + [ + 6.956632908631957, + 50.92260321664343 + ], + [ + 6.9568157717835595, + 50.922518295688924 + ], + [ + 6.956868619791295, + 50.92245970525798 + ], + [ + 6.956894201233605, + 50.92243135492285 + ], + [ + 6.9579090178108, + 50.9220187772333 + ], + [ + 6.958471131192189, + 50.92179311328225 + ], + [ + 6.958852530679523, + 50.92161837343375 + ], + [ + 6.958803517228147, + 50.921572570749724 + ], + [ + 6.958906435737862, + 50.921528755817725 + ], + [ + 6.958970773725401, + 50.92146916739848 + ], + [ + 6.958982526096993, + 50.92145790492338 + ], + [ + 6.9590587814026605, + 50.9213814267524 + ], + [ + 6.9590393252968274, + 50.92135215263141 + ], + [ + 6.9591218324005855, + 50.92131807343156 + ], + [ + 6.959240297643597, + 50.92133175212428 + ], + [ + 6.959284790639209, + 50.92132374489941 + ], + [ + 6.9593508276832035, + 50.92132607853426 + ], + [ + 6.959578823352318, + 50.92133419972001 + ], + [ + 6.959912721439347, + 50.921346088073165 + ], + [ + 6.960016916496813, + 50.92144717001182 + ], + [ + 6.960059965135494, + 50.92148645896087 + ], + [ + 6.960074149257706, + 50.92150531050505 + ], + [ + 6.960104093186084, + 50.92150910846468 + ], + [ + 6.960138028586377, + 50.92151332423237 + ], + [ + 6.960094405954688, + 50.92161885853628 + ], + [ + 6.960270298137695, + 50.92165166047515 + ], + [ + 6.960228865027035, + 50.92175987366415 + ], + [ + 6.960399908376772, + 50.92178516449766 + ], + [ + 6.96043816425255, + 50.92179204138622 + ], + [ + 6.960595762271431, + 50.921820498440866 + ], + [ + 6.9606297502703685, + 50.92173059500681 + ], + [ + 6.96080591910152, + 50.921756112401944 + ], + [ + 6.961069243248613, + 50.92179421617124 + ], + [ + 6.961232851478424, + 50.92183134303228 + ], + [ + 6.961280567585524, + 50.92172442552365 + ], + [ + 6.96148775774551, + 50.921757686839 + ], + [ + 6.961547186202191, + 50.92159817575737 + ], + [ + 6.96155284353946, + 50.92158284751747 + ], + [ + 6.961993302604191, + 50.92165877298137 + ], + [ + 6.961959939512048, + 50.92166857646773 + ], + [ + 6.961906443402921, + 50.92182606160724 + ], + [ + 6.9621018463946225, + 50.921853216085886 + ], + [ + 6.96228269933113, + 50.921878243717885 + ], + [ + 6.962197815434088, + 50.92207230465746 + ], + [ + 6.962296156777605, + 50.922089292060825 + ], + [ + 6.962472283373174, + 50.922119571993406 + ], + [ + 6.9624811523637335, + 50.92210475665857 + ], + [ + 6.962515485343913, + 50.92202150153019 + ], + [ + 6.962641527071128, + 50.922071340800805 + ], + [ + 6.962673728242283, + 50.92199844163368 + ], + [ + 6.962817969421746, + 50.922027365849345 + ], + [ + 6.962836956461902, + 50.92198262218831 + ], + [ + 6.9630003870704265, + 50.92201102758141 + ], + [ + 6.9630119340181755, + 50.92198477388043 + ], + [ + 6.963067876564089, + 50.92199411077472 + ], + [ + 6.963140714869764, + 50.922022634823776 + ], + [ + 6.963235144673212, + 50.92192602824727 + ], + [ + 6.963190058689661, + 50.92186392458487 + ], + [ + 6.963462917169394, + 50.92194601871266 + ], + [ + 6.963584081649264, + 50.921982472756945 + ], + [ + 6.963726008547015, + 50.922025173517966 + ], + [ + 6.963654362153337, + 50.92205426141907 + ], + [ + 6.963661581294118, + 50.922225020105444 + ], + [ + 6.963755278049389, + 50.92222332610188 + ], + [ + 6.963876833783396, + 50.92222115386909 + ], + [ + 6.963985545800744, + 50.922326958967936 + ], + [ + 6.964022120322641, + 50.92236252429087 + ], + [ + 6.964134049936267, + 50.92239692797548 + ], + [ + 6.964068157677339, + 50.922484219921046 + ], + [ + 6.9639848220505405, + 50.92259466784257 + ], + [ + 6.96407221860666, + 50.92261875678138 + ], + [ + 6.964150603404122, + 50.9226403123166 + ], + [ + 6.96416126435793, + 50.922626290785416 + ], + [ + 6.96490627342312, + 50.922848281863 + ], + [ + 6.965075631847742, + 50.922894884956264 + ], + [ + 6.965113564967127, + 50.922844860022344 + ], + [ + 6.9661696858539, + 50.92316566939452 + ], + [ + 6.966367200444123, + 50.92322570054434 + ], + [ + 6.96640450615852, + 50.9231797258588 + ], + [ + 6.9665196394332165, + 50.92320277983249 + ], + [ + 6.966682739473572, + 50.92322116149122 + ], + [ + 6.966818399151682, + 50.92323644775714 + ], + [ + 6.966880717238329, + 50.92324347003883 + ], + [ + 6.967057676407206, + 50.92326343534352 + ], + [ + 6.96714344452701, + 50.92327346870419 + ], + [ + 6.967281768240511, + 50.92298179194985 + ], + [ + 6.9675026053189715, + 50.92302113242635 + ], + [ + 6.967592093162339, + 50.92307881900225 + ], + [ + 6.967701825945062, + 50.92314955631196 + ], + [ + 6.967948207414054, + 50.923193472434214 + ], + [ + 6.968008428751952, + 50.923204269172636 + ], + [ + 6.968028815993854, + 50.92320801114016 + ], + [ + 6.968050828199178, + 50.92321208088461 + ], + [ + 6.968144403910194, + 50.923229239387446 + ], + [ + 6.967976121356958, + 50.92361995487994 + ], + [ + 6.967843558219275, + 50.92392124362381 + ], + [ + 6.967801392833261, + 50.92401951389893 + ], + [ + 6.969632003471946, + 50.92432723604037 + ], + [ + 6.969846511580185, + 50.9243632907286 + ], + [ + 6.969871489147075, + 50.924306001322144 + ], + [ + 6.970052342682558, + 50.92389287530364 + ], + [ + 6.970404659392833, + 50.92311488430038 + ], + [ + 6.970443820639805, + 50.923028439849276 + ], + [ + 6.970653056591378, + 50.922571838520305 + ], + [ + 6.970676583865318, + 50.922520134038976 + ], + [ + 6.970840106552451, + 50.92216333475848 + ], + [ + 6.971221803708609, + 50.92135641987279 + ], + [ + 6.9712463261114115, + 50.92130470648908 + ], + [ + 6.971271943359132, + 50.92125091657992 + ], + [ + 6.9712971808936155, + 50.92119937750294 + ], + [ + 6.971667146950547, + 50.920444517372914 + ], + [ + 6.971720269021799, + 50.920338899326985 + ], + [ + 6.971763281616911, + 50.92025323275796 + ], + [ + 6.972096626069309, + 50.91959108667435 + ], + [ + 6.972527943001229, + 50.918737817610236 + ], + [ + 6.972715173854855, + 50.918380368012166 + ], + [ + 6.972759752303805, + 50.918294957610314 + ], + [ + 6.972836615604135, + 50.91814832965637 + ], + [ + 6.972863282268633, + 50.918097316910256 + ], + [ + 6.972974062192805, + 50.91788595250745 + ], + [ + 6.973181147421972, + 50.917512605096526 + ], + [ + 6.973212122358623, + 50.91745679245544 + ], + [ + 6.973339984089739, + 50.9172264947258 + ], + [ + 6.971352282351642, + 50.91675820566895 + ], + [ + 6.9706475558583945, + 50.91659629922759 + ], + [ + 6.970631674832068, + 50.91659512822468 + ], + [ + 6.970615795267364, + 50.916593956345615 + ], + [ + 6.970285423925711, + 50.916531082274645 + ], + [ + 6.97018522483719, + 50.91651069386586 + ], + [ + 6.970012515990516, + 50.91647555001114 + ], + [ + 6.966336341282966, + 50.91568589302957 + ], + [ + 6.966015664367078, + 50.91561252795317 + ], + [ + 6.965856156671311, + 50.91557603583868 + ], + [ + 6.9656620116204655, + 50.91555112457621 + ], + [ + 6.964925709616859, + 50.91547974005082 + ], + [ + 6.964013393180421, + 50.915432299773094 + ], + [ + 6.963686208391739, + 50.91543163746656 + ], + [ + 6.963679408386251, + 50.915431624056325 + ], + [ + 6.963672609476766, + 50.915431715892176 + ], + [ + 6.962915704789202, + 50.915442049138356 + ], + [ + 6.96238987396722, + 50.915472300174514 + ], + [ + 6.962144850593223, + 50.915486395774955 + ], + [ + 6.96141219854315, + 50.91556343867215 + ], + [ + 6.961440460984252, + 50.91560051366226 + ], + [ + 6.961424410613482, + 50.915602936861475 + ], + [ + 6.961416138694706, + 50.91560414594955 + ], + [ + 6.961400799753123, + 50.915607511529736 + ], + [ + 6.9613415963771175, + 50.9156190246966 + ], + [ + 6.961215471762719, + 50.91564288565767 + ], + [ + 6.9612016057263535, + 50.91564539554843 + ], + [ + 6.961187077526328, + 50.91564791905344 + ], + [ + 6.960941170564997, + 50.91569033164751 + ], + [ + 6.96080693807303, + 50.91570516375436 + ], + [ + 6.960444291239574, + 50.91574520377628 + ], + [ + 6.960257451055411, + 50.915765872090645 + ], + [ + 6.959657053786774, + 50.91583231901281 + ], + [ + 6.957976466015326, + 50.91601851679682 + ], + [ + 6.957962361587254, + 50.91602009577215 + ], + [ + 6.957950428996147, + 50.91602143033854 + ], + [ + 6.95790045708163, + 50.916026980300174 + ], + [ + 6.9578859067729875, + 50.91602860452847 + ], + [ + 6.957871136309797, + 50.9160302527838 + ], + [ + 6.957277701432808, + 50.916096291271074 + ], + [ + 6.955946571696391, + 50.91626875310056 + ], + [ + 6.954745191511728, + 50.91640265782797 + ], + [ + 6.954732413929959, + 50.91640408248672 + ], + [ + 6.954719671148854, + 50.91640562197517 + ], + [ + 6.95363116015086, + 50.916540382331945 + ], + [ + 6.953299593858086, + 50.916597169053944 + ], + [ + 6.952972658632819, + 50.91664716209624 + ], + [ + 6.952715570508121, + 50.916707908338715 + ], + [ + 6.952415586120512, + 50.91676974162299 + ], + [ + 6.952341426801543, + 50.91678703170226 + ], + [ + 6.952279006332548, + 50.91680150936495 + ], + [ + 6.952012634316061, + 50.91687119831245 + ], + [ + 6.951766075401781, + 50.91693621131208 + ], + [ + 6.95141527850541, + 50.91704057151877 + ], + [ + 6.951194806205003, + 50.91711062712074 + ], + [ + 6.950989077376505, + 50.91717611775942 + ], + [ + 6.950718113140287, + 50.91727850287065 + ], + [ + 6.950551901953444, + 50.91734156572389 + ], + [ + 6.950348461706754, + 50.91741907067751 + ], + [ + 6.950023469437253, + 50.91754620070148 + ], + [ + 6.949480199363447, + 50.917754271790535 + ], + [ + 6.949308636639278, + 50.91782690901 + ], + [ + 6.948996360190185, + 50.91796234594002 + ], + [ + 6.948651118075197, + 50.91810458388318 + ], + [ + 6.948396719702163, + 50.91820319769255 + ], + [ + 6.947923555855023, + 50.91844642929058 + ], + [ + 6.9477439997918164, + 50.918512161253865 + ], + [ + 6.946925059904185, + 50.91903291114814 + ], + [ + 6.946495797109329, + 50.919267869552385 + ], + [ + 6.945927848664544, + 50.91955078532267 + ], + [ + 6.94529877739972, + 50.91987752216275 + ], + [ + 6.945253317381338, + 50.91990099347311 + ], + [ + 6.944859949847698, + 50.92011147341052 + ], + [ + 6.944559347277225, + 50.92024685949982 + ], + [ + 6.944316165448077, + 50.92034555319785 + ], + [ + 6.943709193183597, + 50.92050049691069 + ], + [ + 6.943367473970342, + 50.92057211798474 + ], + [ + 6.943042883440857, + 50.92061177823358 + ], + [ + 6.942583898925905, + 50.921059560516674 + ], + [ + 6.942179972111845, + 50.921719763332604 + ], + [ + 6.942112076727247, + 50.92175222382698 + ], + [ + 6.94205687280473, + 50.92176516484286 + ], + [ + 6.9420011965555535, + 50.92176885007148 + ], + [ + 6.941990829445161, + 50.9217977001918 + ], + [ + 6.941821613802222, + 50.92166628759784 + ], + [ + 6.941788964033823, + 50.9217784672431 + ], + [ + 6.94177719692183, + 50.92181794942142 + ], + [ + 6.941753350012769, + 50.92189825823087 + ], + [ + 6.94175101750253, + 50.92190661551759 + ], + [ + 6.941749057301893, + 50.92191501624414 + ], + [ + 6.94170437523752, + 50.92210645836943 + ], + [ + 6.941520810565099, + 50.92222901398786 + ], + [ + 6.941369023708406, + 50.92233125426716 + ], + [ + 6.94099267904777, + 50.922573659965195 + ], + [ + 6.940984932388792, + 50.92257865877576 + ], + [ + 6.94098199463115, + 50.922506589933626 + ], + [ + 6.940593311493125, + 50.922110663276364 + ], + [ + 6.9402527812152135, + 50.92216684222278 + ], + [ + 6.940464382723625, + 50.92293323039403 + ], + [ + 6.940379892234025, + 50.922949433063835 + ], + [ + 6.940366419445817, + 50.92295201668621 + ], + [ + 6.940215315413626, + 50.92298099407545 + ], + [ + 6.940126912630592, + 50.92296264346241 + ], + [ + 6.939991807303148, + 50.9229345961523 + ], + [ + 6.939734291722684, + 50.92288113188512 + ], + [ + 6.939369299319438, + 50.923124466676825 + ], + [ + 6.939208734654744, + 50.92323386297765 + ], + [ + 6.939172171863217, + 50.923254979756436 + ], + [ + 6.9391676533163835, + 50.923257537861815 + ], + [ + 6.938885938000638, + 50.92341692635511 + ], + [ + 6.938811425162319, + 50.923459046165185 + ], + [ + 6.938668627416953, + 50.923539745043165 + ], + [ + 6.93849570215887, + 50.92363743429117 + ], + [ + 6.938290603107925, + 50.92375339342702 + ], + [ + 6.938185224570293, + 50.92381096493533 + ], + [ + 6.937967195248187, + 50.92369079646583 + ], + [ + 6.937901681332842, + 50.923722976426426 + ], + [ + 6.937874167805864, + 50.923736432554875 + ], + [ + 6.937857191199034, + 50.92372701650349 + ], + [ + 6.937797021429617, + 50.92368951594234 + ], + [ + 6.937670692605903, + 50.92361294470965 + ], + [ + 6.937563435020421, + 50.92365559500532 + ], + [ + 6.9366484706373175, + 50.924014417738164 + ], + [ + 6.936594142569865, + 50.92403579977292 + ], + [ + 6.936604588008325, + 50.924046008927235 + ], + [ + 6.9366156481866765, + 50.92405592855447 + ], + [ + 6.936968910797587, + 50.92435597997955 + ], + [ + 6.936697972557479, + 50.92451567154623 + ], + [ + 6.936349628240803, + 50.92472001801451 + ], + [ + 6.936317478430552, + 50.924738854651636 + ], + [ + 6.9361351894955705, + 50.92484691203638 + ], + [ + 6.935973618591399, + 50.92494298339988 + ], + [ + 6.9359611048167515, + 50.92495043653612 + ], + [ + 6.935949123999111, + 50.92495819409242 + ], + [ + 6.935843405490631, + 50.9250318986888 + ], + [ + 6.935737940569508, + 50.925105749777494 + ], + [ + 6.935685149116714, + 50.92514278351803 + ], + [ + 6.9355240498004935, + 50.92525563786239 + ], + [ + 6.935490182928529, + 50.92527949213077 + ], + [ + 6.935478851625379, + 50.92528755342629 + ], + [ + 6.9354732054015775, + 50.92529159520985 + ], + [ + 6.935467575961156, + 50.92529564358565 + ], + [ + 6.935449735443883, + 50.92530856422421 + ], + [ + 6.9354454977036015, + 50.92531164879485 + ], + [ + 6.935441272242651, + 50.92531474527446 + ], + [ + 6.935372882758662, + 50.92536385688166 + ], + [ + 6.935230541920838, + 50.925471725486084 + ], + [ + 6.935078542995449, + 50.92559429432789 + ], + [ + 6.935005453492989, + 50.92565398473868 + ], + [ + 6.935001799572889, + 50.92565712369159 + ], + [ + 6.934997171179444, + 50.925660544898555 + ], + [ + 6.934943337921021, + 50.92570388342506 + ], + [ + 6.934792032623423, + 50.92588224018685 + ], + [ + 6.934789561810095, + 50.925885237277996 + ], + [ + 6.934787198607514, + 50.92588818231017 + ], + [ + 6.934457333743303, + 50.926306325446866 + ], + [ + 6.933801236596567, + 50.92714115509665 + ], + [ + 6.933735582454388, + 50.927224679525054 + ], + [ + 6.933656441497232, + 50.92732753299855 + ], + [ + 6.933709025081034, + 50.92735230914176 + ], + [ + 6.934254380918507, + 50.9275215605817 + ], + [ + 6.9342477496939825, + 50.927531411963805 + ], + [ + 6.934241108632194, + 50.92754126047329 + ], + [ + 6.934218326656568, + 50.92757497619999 + ], + [ + 6.934183846248818, + 50.92762078031986 + ], + [ + 6.934181235665878, + 50.92762423091062 + ], + [ + 6.9341781285517445, + 50.92762828878956 + ], + [ + 6.933951476957174, + 50.92792320000666 + ], + [ + 6.933804688880687, + 50.928114140441124 + ], + [ + 6.933741780639014, + 50.92809801350547 + ], + [ + 6.933653430415093, + 50.9280755218219 + ], + [ + 6.933646226910361, + 50.928073685477656 + ], + [ + 6.933641611764831, + 50.92807249753899 + ], + [ + 6.933465274723134, + 50.928027412459436 + ], + [ + 6.933429964217031, + 50.928018431163075 + ], + [ + 6.933412518794331, + 50.928013990543946 + ], + [ + 6.933395076418205, + 50.92800954547925 + ], + [ + 6.933337751844415, + 50.92811661814997 + ], + [ + 6.933314714770681, + 50.92815950197253 + ], + [ + 6.933297304426379, + 50.92819218210712 + ], + [ + 6.933266040430985, + 50.928250502931505 + ], + [ + 6.933240958045741, + 50.92829717829073 + ], + [ + 6.9332232777162055, + 50.928330520974484 + ], + [ + 6.933221796608013, + 50.92833314522529 + ], + [ + 6.932531315790879, + 50.928153341119184 + ], + [ + 6.932497805197846, + 50.92814436893616 + ], + [ + 6.932278719950996, + 50.92808472117492 + ], + [ + 6.932115257352216, + 50.92799793206233 + ], + [ + 6.932013369672032, + 50.928130889367985 + ], + [ + 6.931980368791708, + 50.928181041485985 + ], + [ + 6.931947587542733, + 50.92823089259572 + ], + [ + 6.931262159604689, + 50.92927332685792 + ], + [ + 6.931207588488889, + 50.92935639964987 + ], + [ + 6.931066413521537, + 50.929571026039916 + ], + [ + 6.930970391916513, + 50.92971698623686 + ], + [ + 6.930937425492172, + 50.9297666628996 + ], + [ + 6.930446047225421, + 50.93051043429848 + ], + [ + 6.930414332834618, + 50.93056009343968 + ], + [ + 6.930410285200676, + 50.93056477580287 + ], + [ + 6.930322513434798, + 50.93070337370672 + ], + [ + 6.9302902794996735, + 50.93075325294455 + ], + [ + 6.930288682112606, + 50.93075573389407 + ], + [ + 6.9302870959423375, + 50.93075821863999 + ], + [ + 6.930316656025154, + 50.930768082838405 + ], + [ + 6.930325004424478, + 50.93077090472135 + ], + [ + 6.930388125816471, + 50.93079164568555 + ], + [ + 6.931506082374379, + 50.93115910493515 + ], + [ + 6.931532698692425, + 50.931167903054536 + ], + [ + 6.931446544978363, + 50.93126630204976 + ], + [ + 6.931381235160237, + 50.93131322826644 + ], + [ + 6.931299648349674, + 50.931371851130415 + ], + [ + 6.93116974908559, + 50.93134231659673 + ], + [ + 6.931056014682744, + 50.931316600298814 + ], + [ + 6.931042858481225, + 50.9313136195043 + ], + [ + 6.931029694572677, + 50.93131065206239 + ], + [ + 6.930986702442624, + 50.931300996958754 + ], + [ + 6.930893219975841, + 50.93128555243929 + ], + [ + 6.9308494042342845, + 50.931278261547774 + ], + [ + 6.9307249534986815, + 50.93125776923749 + ], + [ + 6.930611919324693, + 50.93123908368473 + ], + [ + 6.93036565314227, + 50.93119757673704 + ], + [ + 6.93035316406843, + 50.931195567332004 + ], + [ + 6.930343468084794, + 50.93119424600898 + ], + [ + 6.929993999628518, + 50.931161692875556 + ], + [ + 6.9299890545373595, + 50.93116123193859 + ], + [ + 6.929974277388236, + 50.931160078599866 + ], + [ + 6.9299693363604025, + 50.93115971846478 + ], + [ + 6.929963218978828, + 50.93115927990792 + ], + [ + 6.929812606668312, + 50.931149480393366 + ], + [ + 6.929806942865272, + 50.93114911552731 + ], + [ + 6.929800858724175, + 50.931148729715524 + ], + [ + 6.929760267283996, + 50.93114617147804 + ], + [ + 6.929704347278447, + 50.93114535867156 + ], + [ + 6.92957372094873, + 50.931143253165565 + ], + [ + 6.929461712473853, + 50.93114747123448 + ], + [ + 6.929415930720234, + 50.93115022968805 + ], + [ + 6.92939818155156, + 50.93115065503425 + ], + [ + 6.929386260405206, + 50.93115082400719 + ], + [ + 6.929378026092592, + 50.93115113662507 + ], + [ + 6.92936979236859, + 50.93115162822962 + ], + [ + 6.9291405733241875, + 50.93116468163789 + ], + [ + 6.92889029645721, + 50.93119022661606 + ], + [ + 6.928564915219414, + 50.93120872722971 + ], + [ + 6.928487259004772, + 50.93120934486255 + ], + [ + 6.92818090238237, + 50.93121178180921 + ], + [ + 6.928018146990376, + 50.93120365764534 + ], + [ + 6.928013395168751, + 50.93120342759857 + ], + [ + 6.928006192385541, + 50.93120307400078 + ], + [ + 6.927808688448487, + 50.93119298815865 + ], + [ + 6.927662148204804, + 50.931177522800084 + ], + [ + 6.9274758370633105, + 50.93115778957788 + ], + [ + 6.926896029051356, + 50.93107196354816 + ], + [ + 6.926744370426534, + 50.93104538960759 + ], + [ + 6.9267395547003, + 50.931044804916894 + ], + [ + 6.9267355794685415, + 50.931044298111125 + ], + [ + 6.926727040147094, + 50.93104289270246 + ], + [ + 6.926549860023394, + 50.93099464430116 + ], + [ + 6.926544789920202, + 50.930993283414665 + ], + [ + 6.926530850070214, + 50.93098946705367 + ], + [ + 6.926516927224461, + 50.930985620414084 + ], + [ + 6.926226821552942, + 50.9314407153212 + ], + [ + 6.926177405075736, + 50.93151025534907 + ], + [ + 6.926107616728395, + 50.93160787724907 + ], + [ + 6.925657634024945, + 50.93223948476489 + ], + [ + 6.925638368037381, + 50.93226717251323 + ], + [ + 6.925596559165095, + 50.93232799667812 + ], + [ + 6.9252484690791585, + 50.93282348421086 + ], + [ + 6.925243874432785, + 50.93283001569597 + ], + [ + 6.9252302755460855, + 50.932849353518186 + ], + [ + 6.925228347658893, + 50.93285208934591 + ], + [ + 6.924865458875267, + 50.93336749482475 + ], + [ + 6.92477983428571, + 50.9335975812797 + ], + [ + 6.924776637652457, + 50.93365154218435 + ], + [ + 6.924764377069302, + 50.934035484989316 + ], + [ + 6.924763564454833, + 50.93406092932466 + ], + [ + 6.924697004029356, + 50.93563376804721 + ], + [ + 6.924696324082712, + 50.9356503171594 + ], + [ + 6.9246950273324, + 50.93622052407753 + ], + [ + 6.924720956891273, + 50.936865686405 + ], + [ + 6.924934675691997, + 50.93686517945893 + ], + [ + 6.924932014950381, + 50.936870304499855 + ], + [ + 6.9249277751387615, + 50.93687844677408 + ], + [ + 6.924924052528678, + 50.93700681216891 + ], + [ + 6.924926124794109, + 50.937094538625914 + ], + [ + 6.924936571320032, + 50.937233948457305 + ], + [ + 6.924973357886893, + 50.93737319693448 + ], + [ + 6.924992219942154, + 50.93744188515011 + ], + [ + 6.92500497686365, + 50.937437783191754 + ], + [ + 6.925011481477616, + 50.93743526452807 + ], + [ + 6.925016385002462, + 50.93743251684224 + ], + [ + 6.9250628663535, + 50.937402488902784 + ], + [ + 6.925100791133362, + 50.93736901892095 + ], + [ + 6.925151402339559, + 50.937368165612995 + ], + [ + 6.92522239181553, + 50.93736697116436 + ], + [ + 6.9253868802073, + 50.937364232997645 + ], + [ + 6.925968216507715, + 50.9373554873041 + ], + [ + 6.925973499384529, + 50.93735540848487 + ], + [ + 6.925979728008141, + 50.937355315889626 + ], + [ + 6.92600094158762, + 50.93771318126184 + ], + [ + 6.92622479621657, + 50.937734230284455 + ], + [ + 6.926533553143585, + 50.93775745071027 + ], + [ + 6.926532335296644, + 50.93775199861943 + ], + [ + 6.926529735971843, + 50.9377405492048 + ], + [ + 6.92647179953876, + 50.93748386401248 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Neustadt/Sued", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "102", + "Population_rel": 0.03501709495974413, + "Population_abs": 38100 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.957309453436568, + 50.94997807058628 + ], + [ + 6.957297948722723, + 50.949854472310335 + ], + [ + 6.957421660125043, + 50.949849861824006 + ], + [ + 6.957484407058026, + 50.94980089410065 + ], + [ + 6.957550344643177, + 50.9498171634832 + ], + [ + 6.957920315892694, + 50.94992667328253 + ], + [ + 6.958105054941418, + 50.949962462798666 + ], + [ + 6.958364572366668, + 50.94999458081258 + ], + [ + 6.95834255610995, + 50.95003808979617 + ], + [ + 6.958653522587173, + 50.950025558042164 + ], + [ + 6.958789405093561, + 50.95009365933915 + ], + [ + 6.9589532284153925, + 50.95008808829535 + ], + [ + 6.9589499331596905, + 50.95001800894383 + ], + [ + 6.958946566738945, + 50.9499511463111 + ], + [ + 6.958911288831843, + 50.94995188580639 + ], + [ + 6.958900802384699, + 50.94992635268536 + ], + [ + 6.959123718487849, + 50.949922543015596 + ], + [ + 6.959128132609791, + 50.95001252260537 + ], + [ + 6.959209585415229, + 50.950015056302064 + ], + [ + 6.959357244658988, + 50.95002624798875 + ], + [ + 6.9593402341649595, + 50.94983599456415 + ], + [ + 6.959540731487263, + 50.94982850321603 + ], + [ + 6.959560795427741, + 50.9498076628132 + ], + [ + 6.959546681211829, + 50.94973047100257 + ], + [ + 6.959690451006453, + 50.94972551346972 + ], + [ + 6.95968600281163, + 50.94966154593094 + ], + [ + 6.959790118565546, + 50.9496590718481 + ], + [ + 6.960040588684237, + 50.94965269667112 + ], + [ + 6.960221542312689, + 50.94964985958756 + ], + [ + 6.960216290581643, + 50.94957457199094 + ], + [ + 6.960735212580795, + 50.949550615080106 + ], + [ + 6.960736578793188, + 50.949568582372656 + ], + [ + 6.960916697693836, + 50.94955972810412 + ], + [ + 6.960920832813143, + 50.94961533852393 + ], + [ + 6.961090622100241, + 50.94960935514816 + ], + [ + 6.961083088511937, + 50.94950630991361 + ], + [ + 6.961214487969355, + 50.94950190163147 + ], + [ + 6.961217667377691, + 50.94954565418022 + ], + [ + 6.961349216433362, + 50.94954160361136 + ], + [ + 6.961353139880187, + 50.949593798987976 + ], + [ + 6.961486488730331, + 50.94958730731075 + ], + [ + 6.961615160209322, + 50.9496024276335 + ], + [ + 6.961732197409081, + 50.949598497394454 + ], + [ + 6.9617362534974525, + 50.949650241786095 + ], + [ + 6.961830522089976, + 50.94968767010034 + ], + [ + 6.961950189477056, + 50.949735315234165 + ], + [ + 6.962127750543528, + 50.94979551879531 + ], + [ + 6.962277009624815, + 50.94974637408157 + ], + [ + 6.962432892370743, + 50.949928201662495 + ], + [ + 6.962450564085505, + 50.94995007978603 + ], + [ + 6.962552789103104, + 50.94994706208985 + ], + [ + 6.96267029382832, + 50.949943593248676 + ], + [ + 6.962531993332925, + 50.94978625252691 + ], + [ + 6.962644100114021, + 50.94975035968903 + ], + [ + 6.9625972827338085, + 50.949674695805804 + ], + [ + 6.962828688747801, + 50.94959287247234 + ], + [ + 6.96282328915895, + 50.94952441858406 + ], + [ + 6.963187595477165, + 50.949510894349906 + ], + [ + 6.963473755896025, + 50.949503228701296 + ], + [ + 6.963764433223149, + 50.9494938172019 + ], + [ + 6.96377389745451, + 50.949614196269856 + ], + [ + 6.963859959111232, + 50.94959883220892 + ], + [ + 6.9639365945285325, + 50.94969186808623 + ], + [ + 6.9639407046901205, + 50.94974836022749 + ], + [ + 6.96403628518188, + 50.94974822476771 + ], + [ + 6.964173672312211, + 50.949726573134384 + ], + [ + 6.964222206168832, + 50.94985697974438 + ], + [ + 6.964223245718187, + 50.94987202731784 + ], + [ + 6.9642266910126205, + 50.94989571845866 + ], + [ + 6.964420225537311, + 50.949890082233914 + ], + [ + 6.964412662605682, + 50.94985945078206 + ], + [ + 6.964338952236965, + 50.94966031756119 + ], + [ + 6.964632459875316, + 50.94961573284403 + ], + [ + 6.96462824051099, + 50.94952884087058 + ], + [ + 6.964762191327021, + 50.949503372852135 + ], + [ + 6.965450172622129, + 50.949664974429226 + ], + [ + 6.965726652605715, + 50.949574771650276 + ], + [ + 6.9658893789067005, + 50.949543849884655 + ], + [ + 6.966081578821772, + 50.94947942344485 + ], + [ + 6.966510624524476, + 50.94998673356356 + ], + [ + 6.9665508559182046, + 50.95003269530954 + ], + [ + 6.966572780227241, + 50.9500263111848 + ], + [ + 6.966591598183913, + 50.95000044647032 + ], + [ + 6.9666256740380295, + 50.949976162385205 + ], + [ + 6.966646244132926, + 50.94996619403829 + ], + [ + 6.96667661270317, + 50.949955245144814 + ], + [ + 6.966710065849316, + 50.949948944867764 + ], + [ + 6.966740730670182, + 50.94994536519276 + ], + [ + 6.966772049576329, + 50.94994591513524 + ], + [ + 6.966828295315083, + 50.94995443773268 + ], + [ + 6.966877513692766, + 50.9499740765019 + ], + [ + 6.966915376275507, + 50.950001899661935 + ], + [ + 6.966938531001832, + 50.949993778619536 + ], + [ + 6.966961620543949, + 50.94998574817361 + ], + [ + 6.968849090399558, + 50.94934679343066 + ], + [ + 6.968830683190592, + 50.949326797576084 + ], + [ + 6.96827877264527, + 50.948705843608984 + ], + [ + 6.967768793008776, + 50.94807057386825 + ], + [ + 6.967663848401655, + 50.94793587884385 + ], + [ + 6.9676502005317635, + 50.94791819429409 + ], + [ + 6.967632526959176, + 50.94789524307607 + ], + [ + 6.967601228259667, + 50.94785451146218 + ], + [ + 6.967531296010864, + 50.94776241132253 + ], + [ + 6.967461786290151, + 50.94767012872631 + ], + [ + 6.967199009274541, + 50.94730931754311 + ], + [ + 6.966955053115072, + 50.946943316719164 + ], + [ + 6.9665123809110625, + 50.946230804828616 + ], + [ + 6.96614181511739, + 50.9455021435385 + ], + [ + 6.966129051152733, + 50.94547581681389 + ], + [ + 6.9661227246799795, + 50.945462670157085 + ], + [ + 6.9661164194995004, + 50.94544949239279 + ], + [ + 6.966096802271157, + 50.94540721637068 + ], + [ + 6.966088961499715, + 50.9453891354411 + ], + [ + 6.966066983238292, + 50.945338168091745 + ], + [ + 6.965993824311107, + 50.9451724715542 + ], + [ + 6.965917120791922, + 50.94500743360301 + ], + [ + 6.965483586446276, + 50.94388277160117 + ], + [ + 6.9652223685252554, + 50.94273699631692 + ], + [ + 6.965190284242493, + 50.94256188003059 + ], + [ + 6.965162178278916, + 50.942386551569136 + ], + [ + 6.965148846052508, + 50.942297216266205 + ], + [ + 6.9651457548136415, + 50.94227526169457 + ], + [ + 6.965142792193937, + 50.94225384988928 + ], + [ + 6.965128766158246, + 50.942152565078864 + ], + [ + 6.96512577654468, + 50.94212948985704 + ], + [ + 6.965122888016489, + 50.94210631656638 + ], + [ + 6.965083439814868, + 50.94174518176128 + ], + [ + 6.965078178229076, + 50.94168338209714 + ], + [ + 6.96507334293358, + 50.94162166541049 + ], + [ + 6.965067507739529, + 50.941539099958746 + ], + [ + 6.965060663423586, + 50.941442253719345 + ], + [ + 6.9650584583215895, + 50.94138553573856 + ], + [ + 6.9650442455099215, + 50.941020520164166 + ], + [ + 6.965043920312713, + 50.94077817145583 + ], + [ + 6.965046483845483, + 50.94039358647558 + ], + [ + 6.965060005773045, + 50.940009181704596 + ], + [ + 6.965066811033674, + 50.93986376785512 + ], + [ + 6.965077068558289, + 50.93971329133671 + ], + [ + 6.965148040356986, + 50.93888793378826 + ], + [ + 6.965266433002924, + 50.93806479130875 + ], + [ + 6.965275011071791, + 50.93801186325646 + ], + [ + 6.965283737580625, + 50.93795902323129 + ], + [ + 6.965287463187723, + 50.93793615588128 + ], + [ + 6.965291216423069, + 50.937913209867546 + ], + [ + 6.9652989361317275, + 50.93786738900947 + ], + [ + 6.965301904073751, + 50.93785000813662 + ], + [ + 6.965304885726501, + 50.93783263919449 + ], + [ + 6.965310849495628, + 50.9377978905255 + ], + [ + 6.965314467088205, + 50.937776551130035 + ], + [ + 6.965318116801942, + 50.93775522578492 + ], + [ + 6.965325871123941, + 50.937712458009585 + ], + [ + 6.965329885417609, + 50.93768985650836 + ], + [ + 6.965333924759455, + 50.93766726803481 + ], + [ + 6.965342193009603, + 50.93762188933339 + ], + [ + 6.965384846059166, + 50.93739392683563 + ], + [ + 6.965431345979832, + 50.9371662921827 + ], + [ + 6.965499079433718, + 50.93685110546994 + ], + [ + 6.96557408075656, + 50.93653657690237 + ], + [ + 6.965601791270258, + 50.936425239501716 + ], + [ + 6.965615689972923, + 50.93637026992122 + ], + [ + 6.965619574853553, + 50.936354800902286 + ], + [ + 6.965635627478354, + 50.9362921908824 + ], + [ + 6.965640435351577, + 50.936273673773464 + ], + [ + 6.965648515601597, + 50.936242730351985 + ], + [ + 6.965667368754869, + 50.93617083900438 + ], + [ + 6.965686648997603, + 50.93609894430359 + ], + [ + 6.965706213944454, + 50.936027047365634 + ], + [ + 6.965726065360697, + 50.93595523815872 + ], + [ + 6.966037373872788, + 50.93487028695601 + ], + [ + 6.966066650249063, + 50.93476825467863 + ], + [ + 6.963825257079631, + 50.93474705388605 + ], + [ + 6.963551580227137, + 50.934744294433074 + ], + [ + 6.963527609620579, + 50.934742485819775 + ], + [ + 6.963470506287801, + 50.93473780036599 + ], + [ + 6.963432348130394, + 50.934734656869836 + ], + [ + 6.9633971141204904, + 50.93473175864307 + ], + [ + 6.963302218550345, + 50.934723960253855 + ], + [ + 6.962682028888773, + 50.93470720648683 + ], + [ + 6.962565210662678, + 50.934705846656044 + ], + [ + 6.962537064389818, + 50.93470552987307 + ], + [ + 6.962402241237062, + 50.93469391660749 + ], + [ + 6.96240343298943, + 50.93467420868243 + ], + [ + 6.9623826719965995, + 50.934671684192466 + ], + [ + 6.962330778480049, + 50.93467070281421 + ], + [ + 6.9622012245063924, + 50.93466566669853 + ], + [ + 6.962201609224425, + 50.93463518544275 + ], + [ + 6.962202178062496, + 50.93460133923512 + ], + [ + 6.962073086819922, + 50.93460141501677 + ], + [ + 6.9619293936382896, + 50.9346014317819 + ], + [ + 6.961933567599731, + 50.934572898179134 + ], + [ + 6.961877385266517, + 50.934571798549 + ], + [ + 6.961614353495875, + 50.93456668326206 + ], + [ + 6.960928627592697, + 50.93453424811388 + ], + [ + 6.960893532936204, + 50.93454238871655 + ], + [ + 6.960822386188309, + 50.93456142414547 + ], + [ + 6.960783464052358, + 50.93455824754827 + ], + [ + 6.960642614378798, + 50.93454760262073 + ], + [ + 6.960622239240257, + 50.93454045906201 + ], + [ + 6.960590742299797, + 50.934525739108416 + ], + [ + 6.960455621477457, + 50.93445472533131 + ], + [ + 6.960395469709648, + 50.934455512677125 + ], + [ + 6.960396847620097, + 50.93447021098703 + ], + [ + 6.960341514449695, + 50.93446457370636 + ], + [ + 6.960330996535473, + 50.934497352992956 + ], + [ + 6.960321013376376, + 50.93451436655041 + ], + [ + 6.960303974847376, + 50.934525917226416 + ], + [ + 6.960165345610705, + 50.93462071300397 + ], + [ + 6.960066344948896, + 50.93468630495283 + ], + [ + 6.960148806982149, + 50.934811972405555 + ], + [ + 6.960174799464227, + 50.93490612549537 + ], + [ + 6.960122259853932, + 50.93490442133827 + ], + [ + 6.960033332441454, + 50.934900361661086 + ], + [ + 6.959973700928628, + 50.93489858206895 + ], + [ + 6.959756843353611, + 50.93488909182038 + ], + [ + 6.959739254091847, + 50.935040613619435 + ], + [ + 6.9597290690129485, + 50.93513051450222 + ], + [ + 6.959725261978324, + 50.93516253413459 + ], + [ + 6.959937169350548, + 50.935172148377305 + ], + [ + 6.959946962875108, + 50.93519543981328 + ], + [ + 6.960052587955664, + 50.935209643124516 + ], + [ + 6.960139866253637, + 50.93521350937991 + ], + [ + 6.960067100488245, + 50.93541763750465 + ], + [ + 6.96006444563191, + 50.93543146669708 + ], + [ + 6.960053271888383, + 50.93549157825042 + ], + [ + 6.960041376730986, + 50.935526708695114 + ], + [ + 6.959978199830504, + 50.935528387314456 + ], + [ + 6.959918273903609, + 50.9355268121086 + ], + [ + 6.95972803688017, + 50.935504835125364 + ], + [ + 6.959733012864196, + 50.93546981581759 + ], + [ + 6.959732151776402, + 50.93540247611045 + ], + [ + 6.959545828577991, + 50.93539407767214 + ], + [ + 6.959455596936473, + 50.93541042500939 + ], + [ + 6.959435664613215, + 50.935447780263985 + ], + [ + 6.959418201944478, + 50.93548012418799 + ], + [ + 6.959344018662953, + 50.93546440588288 + ], + [ + 6.9592358262992295, + 50.93544072528482 + ], + [ + 6.959232062423768, + 50.935463461387975 + ], + [ + 6.9592203803137975, + 50.935477621107225 + ], + [ + 6.9591940183311785, + 50.93548975690858 + ], + [ + 6.959120106587819, + 50.93548880468214 + ], + [ + 6.959073862855761, + 50.93548593751029 + ], + [ + 6.959091640017311, + 50.93537045263214 + ], + [ + 6.9589259180325485, + 50.93534870147924 + ], + [ + 6.958255900674077, + 50.93540060091255 + ], + [ + 6.957852615117697, + 50.93539510241964 + ], + [ + 6.957857278783184, + 50.93542084413487 + ], + [ + 6.957861450346261, + 50.93544053522545 + ], + [ + 6.957864899209832, + 50.935455832807 + ], + [ + 6.957865857102032, + 50.93554799434693 + ], + [ + 6.957281466790284, + 50.93552833691767 + ], + [ + 6.9570383831472284, + 50.93551657674958 + ], + [ + 6.95704666122781, + 50.93538688213371 + ], + [ + 6.9570497707479335, + 50.93533678727936 + ], + [ + 6.956200081177346, + 50.93524873504885 + ], + [ + 6.9561149219906415, + 50.935244489234464 + ], + [ + 6.955457136979391, + 50.935183714913535 + ], + [ + 6.955202152674198, + 50.93517178384015 + ], + [ + 6.954887171199166, + 50.935165854019445 + ], + [ + 6.954564680054744, + 50.935174298720995 + ], + [ + 6.9545104799451645, + 50.93518130399186 + ], + [ + 6.9541906664785955, + 50.935208640138576 + ], + [ + 6.9537192653119515, + 50.935301668246574 + ], + [ + 6.953618937812278, + 50.93534177104024 + ], + [ + 6.953558329763101, + 50.935346080524134 + ], + [ + 6.953389429883349, + 50.93535808957383 + ], + [ + 6.952924712419911, + 50.93539113075439 + ], + [ + 6.952680514282036, + 50.93546926353402 + ], + [ + 6.952704755948631, + 50.935610425113374 + ], + [ + 6.952435590931598, + 50.93561967686619 + ], + [ + 6.952273103440311, + 50.935611564381595 + ], + [ + 6.952167432682892, + 50.93564864383162 + ], + [ + 6.952072575110984, + 50.93565679013844 + ], + [ + 6.952055799133491, + 50.9356840122885 + ], + [ + 6.952047276125676, + 50.93574115492428 + ], + [ + 6.951570154971505, + 50.93573883353692 + ], + [ + 6.950718464746948, + 50.93574110993125 + ], + [ + 6.950722556771947, + 50.93567306558305 + ], + [ + 6.950460184881689, + 50.93568069084138 + ], + [ + 6.950469992547226, + 50.935823414440144 + ], + [ + 6.950384774952717, + 50.9358249500187 + ], + [ + 6.950376141149033, + 50.935686513671094 + ], + [ + 6.950319264327225, + 50.93568551500539 + ], + [ + 6.950203608677603, + 50.9355838466032 + ], + [ + 6.950075356894699, + 50.93558722818083 + ], + [ + 6.9498902441302475, + 50.93559278042825 + ], + [ + 6.9498862294119395, + 50.93562616318505 + ], + [ + 6.949873159670967, + 50.93577360432221 + ], + [ + 6.949900171609131, + 50.93577441867985 + ], + [ + 6.949900865504084, + 50.93591089258808 + ], + [ + 6.9497534233480245, + 50.9359135923287 + ], + [ + 6.9497601828122, + 50.93600733000044 + ], + [ + 6.949765779706996, + 50.93605132873839 + ], + [ + 6.949817777297301, + 50.93604906897249 + ], + [ + 6.949827963526491, + 50.93609817133456 + ], + [ + 6.9498281849523345, + 50.93614552477451 + ], + [ + 6.949828273296335, + 50.936196583112725 + ], + [ + 6.949762604923958, + 50.93619911812391 + ], + [ + 6.949756766316863, + 50.93627276187174 + ], + [ + 6.949753917429379, + 50.936319145819155 + ], + [ + 6.949662272381679, + 50.93631346739839 + ], + [ + 6.949605640001792, + 50.936310001192176 + ], + [ + 6.949559295367465, + 50.93630715635906 + ], + [ + 6.949348512811393, + 50.9362937386765 + ], + [ + 6.949357538960302, + 50.936378287671936 + ], + [ + 6.94926362698855, + 50.93639219983911 + ], + [ + 6.94871470227027, + 50.93648608356417 + ], + [ + 6.948711114600462, + 50.93659123875577 + ], + [ + 6.948687517402222, + 50.93659801192525 + ], + [ + 6.948615264382012, + 50.936600600567715 + ], + [ + 6.948490926722244, + 50.93660359501785 + ], + [ + 6.94829411067965, + 50.93660744161634 + ], + [ + 6.948223077129745, + 50.936610296080225 + ], + [ + 6.948160299871197, + 50.93661329472286 + ], + [ + 6.948135164556134, + 50.93661452485988 + ], + [ + 6.948111677971936, + 50.93661503299127 + ], + [ + 6.948029299412171, + 50.93661651423204 + ], + [ + 6.947852712925332, + 50.93662108712603 + ], + [ + 6.947810293716906, + 50.93662176601781 + ], + [ + 6.947788846862788, + 50.936622208313 + ], + [ + 6.94766361539074, + 50.93662451972947 + ], + [ + 6.947530983259596, + 50.936630883898076 + ], + [ + 6.94750565088758, + 50.9366322570335 + ], + [ + 6.9470613437687625, + 50.936691615055864 + ], + [ + 6.947059150436593, + 50.93680768440825 + ], + [ + 6.947057212860508, + 50.93688734603202 + ], + [ + 6.946930544753874, + 50.93689187984609 + ], + [ + 6.946819621215548, + 50.936887966478466 + ], + [ + 6.9468395238187375, + 50.93669039936499 + ], + [ + 6.9468105025542535, + 50.936692503417966 + ], + [ + 6.946701334888825, + 50.93670043864819 + ], + [ + 6.946621124232152, + 50.93670627404373 + ], + [ + 6.946566369898192, + 50.936710250275866 + ], + [ + 6.946492601939768, + 50.936714490095824 + ], + [ + 6.946398947080187, + 50.93672052863291 + ], + [ + 6.946339704310822, + 50.936724419502056 + ], + [ + 6.946184183409805, + 50.936734638022685 + ], + [ + 6.946157366254804, + 50.93673640115486 + ], + [ + 6.946131310058324, + 50.936738112014865 + ], + [ + 6.946092641817069, + 50.93674065233732 + ], + [ + 6.946023215621751, + 50.93674520209148 + ], + [ + 6.946000801353056, + 50.93674643917505 + ], + [ + 6.945900493701147, + 50.936750697302664 + ], + [ + 6.945778896429571, + 50.9367557355053 + ], + [ + 6.945773683873463, + 50.936740948834974 + ], + [ + 6.9457685635240765, + 50.936662680267126 + ], + [ + 6.94580357888181, + 50.936555905274105 + ], + [ + 6.94581638530363, + 50.93651698159045 + ], + [ + 6.946062785710553, + 50.93646617009029 + ], + [ + 6.946113481147422, + 50.93645868795539 + ], + [ + 6.946190391768313, + 50.93644733652315 + ], + [ + 6.94623817352535, + 50.936418019228675 + ], + [ + 6.946246736423484, + 50.93638901383334 + ], + [ + 6.945988942363968, + 50.93639287105674 + ], + [ + 6.945857328161727, + 50.93639772138878 + ], + [ + 6.945652233644533, + 50.93640594532246 + ], + [ + 6.945464037628774, + 50.936415774009966 + ], + [ + 6.945447314843565, + 50.93631195942926 + ], + [ + 6.945442393300886, + 50.93625925467289 + ], + [ + 6.9454380061228145, + 50.936217127017635 + ], + [ + 6.945432515943224, + 50.93620179671587 + ], + [ + 6.94477769373121, + 50.93620771314527 + ], + [ + 6.944695036709074, + 50.93620219175923 + ], + [ + 6.944691538428416, + 50.93616193514002 + ], + [ + 6.944686507280125, + 50.93612600182546 + ], + [ + 6.944684340474616, + 50.936100997825655 + ], + [ + 6.944682866021106, + 50.93606455422875 + ], + [ + 6.944629028023411, + 50.936065193698425 + ], + [ + 6.944546406978826, + 50.93606622121416 + ], + [ + 6.944202211259549, + 50.93604516923604 + ], + [ + 6.94408110180957, + 50.936037991695216 + ], + [ + 6.944074318485764, + 50.93608018889035 + ], + [ + 6.944050939747321, + 50.936218004436995 + ], + [ + 6.943812500827216, + 50.936211287371506 + ], + [ + 6.943556512905566, + 50.936205097988235 + ], + [ + 6.943324721977665, + 50.936199491752376 + ], + [ + 6.943302702323748, + 50.93619901565698 + ], + [ + 6.943090927335387, + 50.93620255393637 + ], + [ + 6.9430714003124265, + 50.93624796395156 + ], + [ + 6.9429159148550434, + 50.936239531916094 + ], + [ + 6.942899706206558, + 50.93621094733344 + ], + [ + 6.942903833722113, + 50.93618205737555 + ], + [ + 6.942866301061513, + 50.9361786114866 + ], + [ + 6.942715405186804, + 50.93616043165076 + ], + [ + 6.9427381128420445, + 50.93609243678562 + ], + [ + 6.942701525634852, + 50.93606215655184 + ], + [ + 6.942633459456144, + 50.93604490752565 + ], + [ + 6.942597265922562, + 50.93605607667235 + ], + [ + 6.942505634570888, + 50.93608423019143 + ], + [ + 6.942426909985366, + 50.93610842003245 + ], + [ + 6.942432508491435, + 50.93613517000517 + ], + [ + 6.9424382935008415, + 50.9361628541219 + ], + [ + 6.942336345265738, + 50.93618146672618 + ], + [ + 6.942181940481796, + 50.93620523972883 + ], + [ + 6.9421601597426195, + 50.93625302739778 + ], + [ + 6.942154002739135, + 50.93627848460112 + ], + [ + 6.94214973353445, + 50.936296130701315 + ], + [ + 6.942145793445055, + 50.936312415547356 + ], + [ + 6.942029067057313, + 50.93632626597477 + ], + [ + 6.94196739396937, + 50.93629200869362 + ], + [ + 6.941757330128794, + 50.936316091353646 + ], + [ + 6.941608155028322, + 50.936333202374385 + ], + [ + 6.941529380716891, + 50.936342287467745 + ], + [ + 6.941521872696563, + 50.936363262594696 + ], + [ + 6.941529660940286, + 50.9363896653929 + ], + [ + 6.941403000093723, + 50.936415158750236 + ], + [ + 6.941390221074855, + 50.93646607567262 + ], + [ + 6.941376516152646, + 50.93652883457534 + ], + [ + 6.941251768874208, + 50.93653555100742 + ], + [ + 6.941106949547833, + 50.9365372985739 + ], + [ + 6.941083357392627, + 50.93647955695211 + ], + [ + 6.9410788530114385, + 50.93644590638811 + ], + [ + 6.941061133765467, + 50.93643897443 + ], + [ + 6.941035507170004, + 50.936431958759954 + ], + [ + 6.941014219251391, + 50.936426838155505 + ], + [ + 6.940961511923057, + 50.93641385859576 + ], + [ + 6.940932613204533, + 50.9364074192488 + ], + [ + 6.940870477804498, + 50.93633715288837 + ], + [ + 6.9408228341878395, + 50.93635386114824 + ], + [ + 6.940693075792277, + 50.936391209571724 + ], + [ + 6.940639026446214, + 50.93640277452636 + ], + [ + 6.940692214769971, + 50.936409987805355 + ], + [ + 6.940814047779834, + 50.9365939338704 + ], + [ + 6.940822738872727, + 50.93660672345506 + ], + [ + 6.940880300720542, + 50.936691274041515 + ], + [ + 6.94091546374824, + 50.93674291695674 + ], + [ + 6.940925528081973, + 50.936767538701396 + ], + [ + 6.940917836511155, + 50.93678512169286 + ], + [ + 6.940757519272683, + 50.93676849366057 + ], + [ + 6.940580111220356, + 50.93674727025732 + ], + [ + 6.940501249271409, + 50.93673792843808 + ], + [ + 6.940414641591331, + 50.93672758290306 + ], + [ + 6.940272380845812, + 50.93680463101419 + ], + [ + 6.940279332936571, + 50.93687985991865 + ], + [ + 6.940111663073193, + 50.93689703213613 + ], + [ + 6.940093513118453, + 50.93692828096192 + ], + [ + 6.94010351420159, + 50.93696559639716 + ], + [ + 6.9396723182793645, + 50.937008711667204 + ], + [ + 6.939543453470916, + 50.93701438767481 + ], + [ + 6.9396118477824755, + 50.937234111592005 + ], + [ + 6.939723711646787, + 50.937595929277805 + ], + [ + 6.939768677677221, + 50.93777274662633 + ], + [ + 6.93988814659236, + 50.938053059914004 + ], + [ + 6.939870780184086, + 50.93822183935311 + ], + [ + 6.939691523483292, + 50.938215012542834 + ], + [ + 6.939657351052449, + 50.93821367012457 + ], + [ + 6.939702343031844, + 50.938387781707334 + ], + [ + 6.939739043780058, + 50.93835791981693 + ], + [ + 6.93998010801687, + 50.93835903437939 + ], + [ + 6.93997367967021, + 50.93842830441444 + ], + [ + 6.940021668110317, + 50.938423333174306 + ], + [ + 6.940051736854467, + 50.93853159226856 + ], + [ + 6.9401322448457785, + 50.93852366206785 + ], + [ + 6.94015004979562, + 50.93858815141593 + ], + [ + 6.940314738011958, + 50.938570913911605 + ], + [ + 6.940350017388713, + 50.938746999766295 + ], + [ + 6.940368703635394, + 50.93881993180411 + ], + [ + 6.940179563515959, + 50.93883808610259 + ], + [ + 6.940123418949369, + 50.93899585193818 + ], + [ + 6.940175997470008, + 50.93903753774998 + ], + [ + 6.940284037306485, + 50.939123195120644 + ], + [ + 6.940230868337613, + 50.93927949805018 + ], + [ + 6.940250358295409, + 50.939371121678036 + ], + [ + 6.940385282170305, + 50.94002202885399 + ], + [ + 6.940395093135392, + 50.940078222439645 + ], + [ + 6.9404569058890795, + 50.94037032668944 + ], + [ + 6.94021513348676, + 50.94039636640702 + ], + [ + 6.940247682045753, + 50.94052462637196 + ], + [ + 6.940298197623451, + 50.94071940208402 + ], + [ + 6.940317676510708, + 50.94079628287003 + ], + [ + 6.940501546998623, + 50.940790511515246 + ], + [ + 6.940536451231107, + 50.9409193795531 + ], + [ + 6.9406965908377565, + 50.94156367898849 + ], + [ + 6.940804597855659, + 50.94162288091285 + ], + [ + 6.940795528150684, + 50.941674013369095 + ], + [ + 6.940771886510496, + 50.941827920652095 + ], + [ + 6.940973999158565, + 50.94183851702008 + ], + [ + 6.940992905689607, + 50.941908121499274 + ], + [ + 6.941115003641736, + 50.94189500173238 + ], + [ + 6.941143540635524, + 50.9418919848622 + ], + [ + 6.941162936927624, + 50.94197174293503 + ], + [ + 6.9411853712016445, + 50.941969404481235 + ], + [ + 6.94119514071913, + 50.94200932839253 + ], + [ + 6.9412419489178925, + 50.94212536243561 + ], + [ + 6.9412573893465535, + 50.942217108686705 + ], + [ + 6.941216788139049, + 50.94222166121507 + ], + [ + 6.941263170477834, + 50.94236241883304 + ], + [ + 6.9413332378226995, + 50.94259791278766 + ], + [ + 6.941237368722773, + 50.94263464354935 + ], + [ + 6.941249309982313, + 50.94277755935545 + ], + [ + 6.941252192867113, + 50.942812062671166 + ], + [ + 6.941054850726002, + 50.94281940720271 + ], + [ + 6.941182632313098, + 50.942953756083654 + ], + [ + 6.9412712737520055, + 50.9429184322419 + ], + [ + 6.941462801692336, + 50.9429119426544 + ], + [ + 6.941471169981413, + 50.942988104746334 + ], + [ + 6.941592803939866, + 50.943071622541126 + ], + [ + 6.941691194770482, + 50.94303289436039 + ], + [ + 6.941716521081783, + 50.9430328696282 + ], + [ + 6.94180789754599, + 50.943125800828284 + ], + [ + 6.941872953390406, + 50.943099206473846 + ], + [ + 6.941879699287184, + 50.94317250508799 + ], + [ + 6.941931506259545, + 50.943222516373694 + ], + [ + 6.942075294382678, + 50.94316658444877 + ], + [ + 6.942464380706503, + 50.94356780822958 + ], + [ + 6.942531870104733, + 50.943541913844456 + ], + [ + 6.942616919093805, + 50.943634895657524 + ], + [ + 6.942715696071189, + 50.94374538468594 + ], + [ + 6.942609375461367, + 50.943785976893096 + ], + [ + 6.942739520386553, + 50.943903134479434 + ], + [ + 6.942929533935566, + 50.944102870059446 + ], + [ + 6.942820980134552, + 50.944145727315835 + ], + [ + 6.942917025484315, + 50.94423709132022 + ], + [ + 6.942833881607183, + 50.944269944666786 + ], + [ + 6.942927588511853, + 50.944358271624836 + ], + [ + 6.942640765702944, + 50.944472416222084 + ], + [ + 6.942670714598159, + 50.94450390599217 + ], + [ + 6.942734704188101, + 50.944560303120774 + ], + [ + 6.942751980300091, + 50.9445883407764 + ], + [ + 6.942832917896133, + 50.94467231373499 + ], + [ + 6.942990238370361, + 50.944606410300764 + ], + [ + 6.943094899374867, + 50.944708671718 + ], + [ + 6.943133148856745, + 50.944714384856944 + ], + [ + 6.943286494440639, + 50.94464896230985 + ], + [ + 6.943371095952465, + 50.94473026083318 + ], + [ + 6.943470854662678, + 50.944695744547595 + ], + [ + 6.943669085347979, + 50.944871655205226 + ], + [ + 6.943768465841588, + 50.944957518174334 + ], + [ + 6.943798693687738, + 50.94498380786213 + ], + [ + 6.943865328292808, + 50.94504205869055 + ], + [ + 6.94409837260775, + 50.94517402479481 + ], + [ + 6.944178633734209, + 50.945216523581685 + ], + [ + 6.94421082397149, + 50.94522909533764 + ], + [ + 6.94427752529797, + 50.945321797747795 + ], + [ + 6.944354652356308, + 50.945300947541355 + ], + [ + 6.944399534879598, + 50.945367105491506 + ], + [ + 6.944353401041456, + 50.94537961382985 + ], + [ + 6.944433884023724, + 50.94547514812633 + ], + [ + 6.94446077231994, + 50.94546791930004 + ], + [ + 6.944611773737685, + 50.94557456847115 + ], + [ + 6.94475804806526, + 50.94573582085393 + ], + [ + 6.944800112133512, + 50.94576820147534 + ], + [ + 6.944762649505321, + 50.94578729227748 + ], + [ + 6.945200226729922, + 50.945979965388844 + ], + [ + 6.94513824521436, + 50.94588951590665 + ], + [ + 6.945321034658765, + 50.94583751591151 + ], + [ + 6.945461655195499, + 50.94570603214117 + ], + [ + 6.945571580685916, + 50.94574945493275 + ], + [ + 6.945840481402945, + 50.94586216236173 + ], + [ + 6.945748307097844, + 50.94594785827833 + ], + [ + 6.945864525909382, + 50.94599518959684 + ], + [ + 6.9459200329245565, + 50.94605883305146 + ], + [ + 6.946046594071544, + 50.94611093388023 + ], + [ + 6.9464008355884115, + 50.94619840475842 + ], + [ + 6.946961329375394, + 50.94643602927872 + ], + [ + 6.947263168070484, + 50.9465494520194 + ], + [ + 6.947551151079461, + 50.946723125154215 + ], + [ + 6.947617375887056, + 50.94680286168159 + ], + [ + 6.9477319080609385, + 50.94681601482108 + ], + [ + 6.947809190871759, + 50.946851734066364 + ], + [ + 6.947893078001119, + 50.94689033583303 + ], + [ + 6.947988100378073, + 50.94694466819865 + ], + [ + 6.947875411895272, + 50.947057141182455 + ], + [ + 6.947836730845709, + 50.94709323225314 + ], + [ + 6.948340312248218, + 50.94729544571268 + ], + [ + 6.9485065888782, + 50.947361874533456 + ], + [ + 6.9485751355704215, + 50.94739475690211 + ], + [ + 6.94856577100965, + 50.94736813538634 + ], + [ + 6.94862307959046, + 50.94731040772005 + ], + [ + 6.948809238134365, + 50.94711634377397 + ], + [ + 6.949116291486136, + 50.94723385460355 + ], + [ + 6.949092029255379, + 50.94725823228121 + ], + [ + 6.949256323101109, + 50.94733204685031 + ], + [ + 6.949420042594323, + 50.94740559567284 + ], + [ + 6.949748629743758, + 50.947553133689134 + ], + [ + 6.949858477175228, + 50.947455064709736 + ], + [ + 6.950123648381106, + 50.94755601372395 + ], + [ + 6.950107730809468, + 50.94757097596144 + ], + [ + 6.950034821136566, + 50.94764860790798 + ], + [ + 6.949977808646284, + 50.94771037875665 + ], + [ + 6.950157225818471, + 50.947779035258606 + ], + [ + 6.950290031556855, + 50.94782982184376 + ], + [ + 6.950144024716725, + 50.94798292951583 + ], + [ + 6.950102604072996, + 50.94798938014525 + ], + [ + 6.950305156551744, + 50.94806198258203 + ], + [ + 6.95029653782465, + 50.9480371523762 + ], + [ + 6.9508251718567475, + 50.94747874532208 + ], + [ + 6.950864194500611, + 50.947473393656814 + ], + [ + 6.951552936528354, + 50.94776667428053 + ], + [ + 6.951566920638577, + 50.947795287774944 + ], + [ + 6.951063555914195, + 50.9483236851515 + ], + [ + 6.951022589917553, + 50.94833148056055 + ], + [ + 6.95122693776339, + 50.94840829138774 + ], + [ + 6.951215295564479, + 50.94838168858769 + ], + [ + 6.951279123003549, + 50.94830880443097 + ], + [ + 6.951479181202647, + 50.94837755937252 + ], + [ + 6.951656378864466, + 50.948225903892435 + ], + [ + 6.951783765111278, + 50.94826900203503 + ], + [ + 6.951757646583072, + 50.94829303740563 + ], + [ + 6.951906018185422, + 50.94835331382946 + ], + [ + 6.951877250247759, + 50.948380066529445 + ], + [ + 6.951800720945628, + 50.94845107690899 + ], + [ + 6.951986501040365, + 50.94853837653091 + ], + [ + 6.952256408228635, + 50.94851018585327 + ], + [ + 6.952375758600694, + 50.948562877233 + ], + [ + 6.952320553231441, + 50.94860764582136 + ], + [ + 6.952463212497918, + 50.94867107797047 + ], + [ + 6.952316983617848, + 50.94880562849661 + ], + [ + 6.952642366408946, + 50.948920733476115 + ], + [ + 6.952874100412456, + 50.94900037441469 + ], + [ + 6.95299578042565, + 50.94886876632268 + ], + [ + 6.953055353457751, + 50.94889398878012 + ], + [ + 6.953104346143876, + 50.948923793292984 + ], + [ + 6.953209462444289, + 50.948963296716144 + ], + [ + 6.953411305843212, + 50.94902861790506 + ], + [ + 6.953646956300176, + 50.9491187434225 + ], + [ + 6.953698639413294, + 50.94907139692227 + ], + [ + 6.953746078084473, + 50.949025253118585 + ], + [ + 6.953998578597997, + 50.94910427367309 + ], + [ + 6.954076990902857, + 50.949000255405124 + ], + [ + 6.954394761070747, + 50.94910472004148 + ], + [ + 6.95500781349713, + 50.949306279018344 + ], + [ + 6.9549775463316745, + 50.94934311339302 + ], + [ + 6.9551259837753925, + 50.94939232809937 + ], + [ + 6.955097457845503, + 50.94942384441689 + ], + [ + 6.955087539341429, + 50.949440367592224 + ], + [ + 6.955059031815141, + 50.94949656758458 + ], + [ + 6.955092295148403, + 50.949553782105525 + ], + [ + 6.955167493191295, + 50.94966778020225 + ], + [ + 6.955001327420516, + 50.94971174959905 + ], + [ + 6.9552929763806235, + 50.94980509837705 + ], + [ + 6.955294198396388, + 50.949774434887146 + ], + [ + 6.955612199724107, + 50.94969560298512 + ], + [ + 6.95566415112124, + 50.94977931731398 + ], + [ + 6.955809391205807, + 50.949818219568314 + ], + [ + 6.955818542450964, + 50.94980645858263 + ], + [ + 6.955810732701452, + 50.94979348864866 + ], + [ + 6.955881235912464, + 50.94977565186279 + ], + [ + 6.955968481401921, + 50.94980051191699 + ], + [ + 6.956147184598872, + 50.949850871277505 + ], + [ + 6.956189057673263, + 50.94979713096718 + ], + [ + 6.956302158396483, + 50.94977471984686 + ], + [ + 6.956401337330639, + 50.94993373694218 + ], + [ + 6.95678563521397, + 50.949921917283916 + ], + [ + 6.9568027695297845, + 50.95007129220511 + ], + [ + 6.956936207895602, + 50.95006556635615 + ], + [ + 6.9570837998154635, + 50.950061727586416 + ], + [ + 6.957081230854018, + 50.94998677366923 + ], + [ + 6.957309453436568, + 50.94997807058628 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Altstadt/Nord", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "103", + "Population_rel": 0.01683945443182236, + "Population_abs": 18322 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.071036271757088, + 50.95452249988625 + ], + [ + 7.0713712504951065, + 50.95387816472509 + ], + [ + 7.07137930201343, + 50.95388003349303 + ], + [ + 7.0715585743739435, + 50.95392196851685 + ], + [ + 7.072929151399896, + 50.95424271417964 + ], + [ + 7.073540885023933, + 50.95458929470664 + ], + [ + 7.073693471640343, + 50.95467742159857 + ], + [ + 7.073938038756655, + 50.9547230842012 + ], + [ + 7.074459621960948, + 50.954827918999676 + ], + [ + 7.07446509267518, + 50.95482901920546 + ], + [ + 7.074551302788297, + 50.95484634615379 + ], + [ + 7.0752329930309426, + 50.95498039205417 + ], + [ + 7.0753982761581256, + 50.95501208781402 + ], + [ + 7.075398779084809, + 50.95501218424163 + ], + [ + 7.075399272088069, + 50.955012279606315 + ], + [ + 7.075529242874726, + 50.955037211777906 + ], + [ + 7.075741918641649, + 50.955078000099284 + ], + [ + 7.076005038047583, + 50.955130099544675 + ], + [ + 7.076011119548104, + 50.955131651328855 + ], + [ + 7.076015863767466, + 50.95513324313214 + ], + [ + 7.076018213277251, + 50.95513403461413 + ], + [ + 7.0760798581180975, + 50.955154800391284 + ], + [ + 7.076168549240817, + 50.95519892931098 + ], + [ + 7.07622763912425, + 50.95525184104738 + ], + [ + 7.076231273403747, + 50.955255415632166 + ], + [ + 7.076234325376961, + 50.95525891946574 + ], + [ + 7.0762385481143575, + 50.95526372597798 + ], + [ + 7.07624322650512, + 50.95526908411125 + ], + [ + 7.076261110759612, + 50.95528956584385 + ], + [ + 7.0762836827594935, + 50.955315628001436 + ], + [ + 7.076295169374995, + 50.95533790287029 + ], + [ + 7.0762960658601495, + 50.955339640816966 + ], + [ + 7.076297804486179, + 50.9553429845082 + ], + [ + 7.076312282858141, + 50.95537073901061 + ], + [ + 7.076320094197021, + 50.95543304594382 + ], + [ + 7.076329449785613, + 50.95552084912577 + ], + [ + 7.076326687337235, + 50.95552746967676 + ], + [ + 7.076081294959196, + 50.95596790772 + ], + [ + 7.0760861464570075, + 50.95596986912613 + ], + [ + 7.076144720230083, + 50.95599327334481 + ], + [ + 7.076285154142161, + 50.95605003276919 + ], + [ + 7.076285526713115, + 50.95605018280551 + ], + [ + 7.076285914330441, + 50.95605031330381 + ], + [ + 7.076585708208915, + 50.956150605336894 + ], + [ + 7.076918868546858, + 50.956278918046756 + ], + [ + 7.0771975806309335, + 50.956379628408904 + ], + [ + 7.078124339572862, + 50.95673354392095 + ], + [ + 7.078402602711882, + 50.95683981012199 + ], + [ + 7.0784458250121, + 50.95685622070572 + ], + [ + 7.079564446794037, + 50.95728240153744 + ], + [ + 7.079639294485568, + 50.9573123626766 + ], + [ + 7.079666179435199, + 50.957283311228764 + ], + [ + 7.079699186918748, + 50.95725399622998 + ], + [ + 7.0797256656222585, + 50.95723047904741 + ], + [ + 7.079803817787958, + 50.95715065552589 + ], + [ + 7.080044190070984, + 50.956891025631336 + ], + [ + 7.080369189451369, + 50.95656057338506 + ], + [ + 7.080395739350123, + 50.95653306496105 + ], + [ + 7.0804549670783, + 50.956479238865974 + ], + [ + 7.080461541231934, + 50.95648197397978 + ], + [ + 7.080476724493418, + 50.9564869920067 + ], + [ + 7.081026690655475, + 50.95668632976115 + ], + [ + 7.081414338427265, + 50.956818771740956 + ], + [ + 7.08148554732029, + 50.95684353745376 + ], + [ + 7.081493051844211, + 50.95684595143529 + ], + [ + 7.081499552672817, + 50.956847807509256 + ], + [ + 7.081515630593245, + 50.95685219885595 + ], + [ + 7.081723514597811, + 50.95690517282367 + ], + [ + 7.082953154065601, + 50.95721509398134 + ], + [ + 7.0830097367747715, + 50.95722935510931 + ], + [ + 7.083197952939055, + 50.95727462246323 + ], + [ + 7.085924116597551, + 50.957912536250454 + ], + [ + 7.085931341226892, + 50.95791421687409 + ], + [ + 7.08594017160686, + 50.95791632583456 + ], + [ + 7.085985027976184, + 50.95792684620053 + ], + [ + 7.085988423700018, + 50.95792845236225 + ], + [ + 7.086014702455494, + 50.95789777788483 + ], + [ + 7.086022963470993, + 50.95788813456514 + ], + [ + 7.086058820883814, + 50.9578499527518 + ], + [ + 7.0861361758100685, + 50.95776946894132 + ], + [ + 7.086410227352286, + 50.9575082071358 + ], + [ + 7.086576985495984, + 50.95734946180717 + ], + [ + 7.086592783751732, + 50.9573344028094 + ], + [ + 7.0865963596356565, + 50.957331553779646 + ], + [ + 7.086603727597874, + 50.95733119966117 + ], + [ + 7.087040294497886, + 50.95734260710112 + ], + [ + 7.087448342215751, + 50.95745523545574 + ], + [ + 7.0875043128013475, + 50.95746786731912 + ], + [ + 7.087507406538312, + 50.95746600865352 + ], + [ + 7.087605970530351, + 50.95740655925147 + ], + [ + 7.087975345871437, + 50.95718374322277 + ], + [ + 7.088146951578659, + 50.95708022829312 + ], + [ + 7.088265213443871, + 50.957009113314626 + ], + [ + 7.088841827824565, + 50.95666238593751 + ], + [ + 7.088845837926516, + 50.95665998553269 + ], + [ + 7.088846958965656, + 50.956659316771635 + ], + [ + 7.0889606737956345, + 50.95661356145733 + ], + [ + 7.089451775374488, + 50.95641618479349 + ], + [ + 7.0900630113922105, + 50.956170662594324 + ], + [ + 7.090079760205272, + 50.95616384602098 + ], + [ + 7.09009648676167, + 50.9561570164901 + ], + [ + 7.090209440216642, + 50.95611101637933 + ], + [ + 7.090372536162248, + 50.956044589804094 + ], + [ + 7.0910868489897565, + 50.95575365944301 + ], + [ + 7.091176624242183, + 50.95571708516946 + ], + [ + 7.091297644796984, + 50.955668968400374 + ], + [ + 7.091895098087594, + 50.95543090359229 + ], + [ + 7.091908913504351, + 50.95542539775174 + ], + [ + 7.092360011603001, + 50.95524565805772 + ], + [ + 7.092411999951264, + 50.95522466021918 + ], + [ + 7.09249359053106, + 50.955192973241985 + ], + [ + 7.092596598896778, + 50.955152919510276 + ], + [ + 7.092696911275247, + 50.95512361935701 + ], + [ + 7.092939450322881, + 50.9550529370045 + ], + [ + 7.093210267776019, + 50.95497393103424 + ], + [ + 7.093414719872506, + 50.95491428318267 + ], + [ + 7.093724859128151, + 50.95482383972921 + ], + [ + 7.093733037346144, + 50.95482145504743 + ], + [ + 7.093865360234251, + 50.954782867208884 + ], + [ + 7.094109470430176, + 50.954711664877735 + ], + [ + 7.094186551668935, + 50.95469043371553 + ], + [ + 7.094199502178481, + 50.95468948942839 + ], + [ + 7.094213347640984, + 50.954688805272944 + ], + [ + 7.094347460354072, + 50.954682635632494 + ], + [ + 7.094657580941987, + 50.9546652128885 + ], + [ + 7.094990681733728, + 50.954646635359246 + ], + [ + 7.095086728843821, + 50.95464127736267 + ], + [ + 7.095237432065528, + 50.95463285467487 + ], + [ + 7.095364865389599, + 50.95462611802501 + ], + [ + 7.095412100740781, + 50.95462356182853 + ], + [ + 7.095859887304058, + 50.95459974763229 + ], + [ + 7.095952524431316, + 50.95459173146605 + ], + [ + 7.095953384643079, + 50.954591657357014 + ], + [ + 7.095948931746161, + 50.95458031127294 + ], + [ + 7.0959265617702485, + 50.954529680381754 + ], + [ + 7.095920802401859, + 50.95451716900556 + ], + [ + 7.095906671246418, + 50.95448339335476 + ], + [ + 7.095902359443979, + 50.95447378623215 + ], + [ + 7.095898059257141, + 50.95446413882766 + ], + [ + 7.095885028535318, + 50.95443413144778 + ], + [ + 7.095864288656141, + 50.954386853856676 + ], + [ + 7.095852838421673, + 50.95436085371128 + ], + [ + 7.095836309976141, + 50.95432316631316 + ], + [ + 7.095832337058571, + 50.95431415199595 + ], + [ + 7.095828431461269, + 50.95430512798424 + ], + [ + 7.095811959479347, + 50.95426404012641 + ], + [ + 7.095359466805361, + 50.95333978247159 + ], + [ + 7.095352075832807, + 50.953324663285464 + ], + [ + 7.095359587357287, + 50.953322487058955 + ], + [ + 7.095367200180628, + 50.95332037543958 + ], + [ + 7.095424495577067, + 50.95330454062908 + ], + [ + 7.0954816227183315, + 50.95328878039092 + ], + [ + 7.0957812692081825, + 50.95320487678943 + ], + [ + 7.09611622145082, + 50.953111085897824 + ], + [ + 7.096176820405538, + 50.953078161901644 + ], + [ + 7.0961808268821205, + 50.95307597253761 + ], + [ + 7.096187677511567, + 50.95307223228798 + ], + [ + 7.096188481353234, + 50.953071794816374 + ], + [ + 7.096199307463855, + 50.95306592675201 + ], + [ + 7.096212200660015, + 50.953058952004454 + ], + [ + 7.0963148646382015, + 50.953003158711944 + ], + [ + 7.096363204246986, + 50.9529768842526 + ], + [ + 7.0963776821204005, + 50.952969038663035 + ], + [ + 7.096391855781039, + 50.95296145971822 + ], + [ + 7.096398493593152, + 50.95295787427374 + ], + [ + 7.096417843488953, + 50.952947633076626 + ], + [ + 7.096426530916612, + 50.95294274100212 + ], + [ + 7.0964364501051795, + 50.952937148622624 + ], + [ + 7.096448182416667, + 50.95293349334419 + ], + [ + 7.0964585633332575, + 50.95293026031537 + ], + [ + 7.096487479013822, + 50.95292126238925 + ], + [ + 7.0965257271747895, + 50.952909286834334 + ], + [ + 7.096591200026398, + 50.952888926091326 + ], + [ + 7.09659701917358, + 50.95288711611503 + ], + [ + 7.096601678818441, + 50.95288566676537 + ], + [ + 7.09664773574554, + 50.95287134433498 + ], + [ + 7.09684314904457, + 50.95281049452907 + ], + [ + 7.096977708760363, + 50.95276853018568 + ], + [ + 7.097183803033228, + 50.952704258266095 + ], + [ + 7.09727768560926, + 50.95267502929169 + ], + [ + 7.0973221065940075, + 50.95266118357776 + ], + [ + 7.097505117567553, + 50.95260417857437 + ], + [ + 7.0975553056080365, + 50.9525885380904 + ], + [ + 7.097638261670128, + 50.95256271563335 + ], + [ + 7.097814193637169, + 50.952507707400734 + ], + [ + 7.0978152673072765, + 50.95250735615579 + ], + [ + 7.09781874789665, + 50.952505873158785 + ], + [ + 7.0978232196539945, + 50.95250393234755 + ], + [ + 7.097918204281936, + 50.95247531079573 + ], + [ + 7.097925892353656, + 50.95247298888707 + ], + [ + 7.097933524345149, + 50.95247068045401 + ], + [ + 7.098086453951558, + 50.95242236244419 + ], + [ + 7.098289717307837, + 50.95235812790913 + ], + [ + 7.0983274004332495, + 50.952346647104996 + ], + [ + 7.09851200622559, + 50.95229037970129 + ], + [ + 7.09874697606749, + 50.952215663383384 + ], + [ + 7.098786560904625, + 50.952203073012285 + ], + [ + 7.098850288867818, + 50.95218313407544 + ], + [ + 7.0988515089761615, + 50.95218275282859 + ], + [ + 7.098856393459413, + 50.95218105882749 + ], + [ + 7.098926159203095, + 50.9521584472382 + ], + [ + 7.098925290224961, + 50.95215643471288 + ], + [ + 7.098923510463092, + 50.952152387396886 + ], + [ + 7.0989206850628594, + 50.95214399264067 + ], + [ + 7.098921159746329, + 50.95214268820474 + ], + [ + 7.098958263912587, + 50.952040822066834 + ], + [ + 7.098959019937696, + 50.952038764051856 + ], + [ + 7.098959147997972, + 50.95203841718561 + ], + [ + 7.0989593851001915, + 50.9520377708095 + ], + [ + 7.09900059983266, + 50.95192571169738 + ], + [ + 7.099094489954484, + 50.95167096617554 + ], + [ + 7.099136860895296, + 50.95155637615369 + ], + [ + 7.099210524063833, + 50.9513569850456 + ], + [ + 7.09921064196958, + 50.95135667758556 + ], + [ + 7.099212988517886, + 50.95135105612022 + ], + [ + 7.099254086635427, + 50.95125278129313 + ], + [ + 7.099254234970379, + 50.951252460838035 + ], + [ + 7.099251532286333, + 50.95125020081729 + ], + [ + 7.099250653592475, + 50.95124947332034 + ], + [ + 7.09920093561289, + 50.95120855967503 + ], + [ + 7.099200639603302, + 50.95120831202889 + ], + [ + 7.099136909473099, + 50.95119927465988 + ], + [ + 7.099069815091335, + 50.95118978046728 + ], + [ + 7.098369778981357, + 50.95109097108869 + ], + [ + 7.098159505187046, + 50.95105698942609 + ], + [ + 7.0980758030102615, + 50.951043932473105 + ], + [ + 7.097992711372862, + 50.95103063898148 + ], + [ + 7.097981772693108, + 50.95102888960067 + ], + [ + 7.097957634804641, + 50.95102663559678 + ], + [ + 7.097953656301665, + 50.951026263201776 + ], + [ + 7.097953195678302, + 50.95102621162909 + ], + [ + 7.09794602204344, + 50.95102929558273 + ], + [ + 7.097929098785514, + 50.951036483666016 + ], + [ + 7.097881411266128, + 50.951056937043425 + ], + [ + 7.097874577918414, + 50.95105963711393 + ], + [ + 7.097867868029636, + 50.95106248669035 + ], + [ + 7.097834369253581, + 50.95107671380758 + ], + [ + 7.097826640940068, + 50.95107999197228 + ], + [ + 7.097803690492808, + 50.95108973225363 + ], + [ + 7.097643664415155, + 50.95115764911074 + ], + [ + 7.097601156685913, + 50.951175689251436 + ], + [ + 7.097433342215599, + 50.95124690997383 + ], + [ + 7.0974295605461, + 50.95124851576192 + ], + [ + 7.097425763004847, + 50.95125012668743 + ], + [ + 7.0974160626148715, + 50.95125424326896 + ], + [ + 7.097412315753103, + 50.95125583343523 + ], + [ + 7.0974081240766305, + 50.95125761241316 + ], + [ + 7.097392265787311, + 50.95126434381126 + ], + [ + 7.097367518532747, + 50.95127484616334 + ], + [ + 7.097362492282311, + 50.95127697937737 + ], + [ + 7.0973560953916985, + 50.95127969372519 + ], + [ + 7.097302994481866, + 50.951302229704304 + ], + [ + 7.097246675493793, + 50.95132613150396 + ], + [ + 7.097191659007014, + 50.95134948071299 + ], + [ + 7.097125639464523, + 50.9513774990143 + ], + [ + 7.097087170885682, + 50.951393824967575 + ], + [ + 7.097047346081432, + 50.951410726877455 + ], + [ + 7.0970025732309, + 50.951429728172194 + ], + [ + 7.0969677210525175, + 50.95144451936579 + ], + [ + 7.096190328128681, + 50.95177443599828 + ], + [ + 7.096182935638465, + 50.951777573834796 + ], + [ + 7.096160887110246, + 50.95178693278447 + ], + [ + 7.096047945761819, + 50.95183485352902 + ], + [ + 7.096013890972311, + 50.951849314787495 + ], + [ + 7.0960394432004765, + 50.95180164452543 + ], + [ + 7.0964226812748645, + 50.95108566103781 + ], + [ + 7.096423245331846, + 50.95108460988937 + ], + [ + 7.096415348146371, + 50.95108762799099 + ], + [ + 7.096449729847756, + 50.95102344095952 + ], + [ + 7.096511347693583, + 50.95090898847274 + ], + [ + 7.096536399435704, + 50.950862634697714 + ], + [ + 7.096536598147173, + 50.95086226650185 + ], + [ + 7.096596107059323, + 50.9507522368136 + ], + [ + 7.096596296682041, + 50.95075188195984 + ], + [ + 7.096596401504137, + 50.95075158148391 + ], + [ + 7.096598548636748, + 50.95074757206788 + ], + [ + 7.0966128569200055, + 50.95072103409353 + ], + [ + 7.0966158642581485, + 50.950715450431694 + ], + [ + 7.096645977768585, + 50.950659606369 + ], + [ + 7.096708937780269, + 50.950581627602475 + ], + [ + 7.096709249736476, + 50.950581240567146 + ], + [ + 7.0971784575111325, + 50.94999146375255 + ], + [ + 7.097178687203924, + 50.949991173405486 + ], + [ + 7.097607900081852, + 50.94947085262051 + ], + [ + 7.097835979348047, + 50.94919433279784 + ], + [ + 7.0978971494850365, + 50.94911915541786 + ], + [ + 7.09845125168489, + 50.94902234658365 + ], + [ + 7.098487988926218, + 50.949015938908204 + ], + [ + 7.099115753863537, + 50.94891227376947 + ], + [ + 7.099802774319632, + 50.94879871622542 + ], + [ + 7.099966567870526, + 50.94877163561815 + ], + [ + 7.099972440422735, + 50.94877066454817 + ], + [ + 7.100424142073869, + 50.94869596343043 + ], + [ + 7.100702824503556, + 50.948650115199115 + ], + [ + 7.10073209890129, + 50.94863715589494 + ], + [ + 7.1007929475307865, + 50.94861020983468 + ], + [ + 7.100834256059392, + 50.94859191700232 + ], + [ + 7.100908959539646, + 50.94855883688319 + ], + [ + 7.101080536106008, + 50.9484828608324 + ], + [ + 7.10109081983554, + 50.94847834692678 + ], + [ + 7.1011005104449945, + 50.94847409857746 + ], + [ + 7.10115123323841, + 50.94845225339021 + ], + [ + 7.1012099969084685, + 50.94842698828305 + ], + [ + 7.101246810895433, + 50.948411165597385 + ], + [ + 7.101347782200095, + 50.948368380211825 + ], + [ + 7.101399978965076, + 50.94834606423987 + ], + [ + 7.101404964377648, + 50.94834023921854 + ], + [ + 7.101410051001772, + 50.948335004923315 + ], + [ + 7.1014508289829035, + 50.94830344668891 + ], + [ + 7.1015061079549255, + 50.94826149471247 + ], + [ + 7.10160020401015, + 50.94819008492004 + ], + [ + 7.1018248747377175, + 50.94801958233455 + ], + [ + 7.102178889776531, + 50.94775876554268 + ], + [ + 7.102515315755752, + 50.94757551487354 + ], + [ + 7.1031677556364965, + 50.94722010088791 + ], + [ + 7.103270113812321, + 50.94716429747505 + ], + [ + 7.103651068948912, + 50.94695680255733 + ], + [ + 7.104062653076583, + 50.9467326602156 + ], + [ + 7.1048205860740845, + 50.94632356041603 + ], + [ + 7.104824699581337, + 50.94632134011888 + ], + [ + 7.105542756097131, + 50.94593121867844 + ], + [ + 7.105615687985524, + 50.945891661119504 + ], + [ + 7.10571279585528, + 50.94583882821481 + ], + [ + 7.10595167944362, + 50.94570914635323 + ], + [ + 7.107176109860046, + 50.945040364725635 + ], + [ + 7.107283993265211, + 50.94498140701397 + ], + [ + 7.107838604470076, + 50.94468398617891 + ], + [ + 7.108946953369128, + 50.94408179544896 + ], + [ + 7.109124210786056, + 50.943985485144566 + ], + [ + 7.109162526621131, + 50.94396466678429 + ], + [ + 7.109210001401986, + 50.94393887219655 + ], + [ + 7.109268810318994, + 50.943906908072755 + ], + [ + 7.109334334418044, + 50.943871322126235 + ], + [ + 7.10950283990391, + 50.943779811498445 + ], + [ + 7.109510398965944, + 50.94377570691367 + ], + [ + 7.109511314580188, + 50.94377520910538 + ], + [ + 7.1097347564873, + 50.943653817037735 + ], + [ + 7.109816629089784, + 50.94363655735106 + ], + [ + 7.109856091688859, + 50.94362823324226 + ], + [ + 7.10986555978938, + 50.9436262316655 + ], + [ + 7.109866702730117, + 50.94362599025478 + ], + [ + 7.109911716740949, + 50.94361648341055 + ], + [ + 7.110004680354854, + 50.94359683098267 + ], + [ + 7.110081240556682, + 50.943580647082364 + ], + [ + 7.11018218161317, + 50.94355930964524 + ], + [ + 7.1103904357770045, + 50.943515287877815 + ], + [ + 7.110915168739119, + 50.94340436820627 + ], + [ + 7.11108114926027, + 50.943369373357385 + ], + [ + 7.111149645895747, + 50.94335483632781 + ], + [ + 7.111145239267157, + 50.9433441085275 + ], + [ + 7.111140821186774, + 50.943333382340434 + ], + [ + 7.111135234029127, + 50.943320065971 + ], + [ + 7.111129176809711, + 50.9433056330863 + ], + [ + 7.111111659375002, + 50.94326347371057 + ], + [ + 7.11110829091586, + 50.94325519457243 + ], + [ + 7.111104921583497, + 50.94324693700466 + ], + [ + 7.111066230883668, + 50.943154548499926 + ], + [ + 7.110819232441694, + 50.94303903135487 + ], + [ + 7.110839752150478, + 50.94301541346409 + ], + [ + 7.110839983511832, + 50.94301514919885 + ], + [ + 7.110608142460741, + 50.94276952194473 + ], + [ + 7.110538433216423, + 50.942626715016914 + ], + [ + 7.110511616742908, + 50.942600001732266 + ], + [ + 7.110452730735274, + 50.942541142532875 + ], + [ + 7.110411777669642, + 50.94250045011899 + ], + [ + 7.110398532504751, + 50.94247603488184 + ], + [ + 7.11038543180345, + 50.94245170831974 + ], + [ + 7.110384434736252, + 50.94238600567697 + ], + [ + 7.1103841507467225, + 50.942374052192825 + ], + [ + 7.110384028224045, + 50.942368929257846 + ], + [ + 7.110389169844624, + 50.94235180053964 + ], + [ + 7.110397447689024, + 50.94232304620066 + ], + [ + 7.110403949054886, + 50.942291341089586 + ], + [ + 7.110407889107885, + 50.94227161715746 + ], + [ + 7.110423387268059, + 50.942193531106035 + ], + [ + 7.110403273635596, + 50.94213169567718 + ], + [ + 7.110395117285422, + 50.942105884255625 + ], + [ + 7.110387073881088, + 50.94209670111751 + ], + [ + 7.110360584984868, + 50.94206585064672 + ], + [ + 7.110343842923369, + 50.94204991821766 + ], + [ + 7.11031180803449, + 50.94201921000255 + ], + [ + 7.1102269352187895, + 50.9419564621166 + ], + [ + 7.1101840589796845, + 50.9419245980741 + ], + [ + 7.110155550564577, + 50.94191048611782 + ], + [ + 7.11011292900635, + 50.941889227819686 + ], + [ + 7.1100891663374925, + 50.94187722792113 + ], + [ + 7.110042489285344, + 50.94186481479867 + ], + [ + 7.110031889272836, + 50.94186195231566 + ], + [ + 7.110021283170425, + 50.94185909962607 + ], + [ + 7.1099153691932715, + 50.94183249429021 + ], + [ + 7.109900648810426, + 50.94183024770145 + ], + [ + 7.109826437108867, + 50.94182039706544 + ], + [ + 7.109815161653057, + 50.94181888615642 + ], + [ + 7.109792994760092, + 50.94181415277613 + ], + [ + 7.1097466640323335, + 50.94180443512575 + ], + [ + 7.109675271243429, + 50.94178794419628 + ], + [ + 7.109622178151663, + 50.94176912250756 + ], + [ + 7.1095509751541845, + 50.94174125318041 + ], + [ + 7.109539188589653, + 50.94173763936006 + ], + [ + 7.109527450319925, + 50.941733957969205 + ], + [ + 7.109494731897401, + 50.941722959610395 + ], + [ + 7.109442734406595, + 50.94170232898129 + ], + [ + 7.109367986228536, + 50.941676341150334 + ], + [ + 7.109317937769085, + 50.941659916855045 + ], + [ + 7.109294705179988, + 50.94165222701364 + ], + [ + 7.109136302485879, + 50.94163112307362 + ], + [ + 7.1091280948527045, + 50.94162841617242 + ], + [ + 7.10911989936679, + 50.94162569058082 + ], + [ + 7.109088342255347, + 50.94161491327205 + ], + [ + 7.109029680101423, + 50.94159442723053 + ], + [ + 7.108898375317653, + 50.941577426765654 + ], + [ + 7.108826750332153, + 50.941563095410814 + ], + [ + 7.108802161564571, + 50.94155820479271 + ], + [ + 7.108733551937056, + 50.9415211009772 + ], + [ + 7.108721303272503, + 50.941514565662395 + ], + [ + 7.108658979273867, + 50.941442613615045 + ], + [ + 7.1085782795783095, + 50.94127410986073 + ], + [ + 7.108552825883442, + 50.94114319589475 + ], + [ + 7.1085469556577285, + 50.941093809583194 + ], + [ + 7.108528873012982, + 50.94093774571997 + ], + [ + 7.1085302927484575, + 50.94089575153636 + ], + [ + 7.108532043185591, + 50.94083775320822 + ], + [ + 7.108534126742235, + 50.94076986372235 + ], + [ + 7.108534278972526, + 50.94076428925912 + ], + [ + 7.108526677479411, + 50.94071393056619 + ], + [ + 7.108516236479989, + 50.94067573467554 + ], + [ + 7.108492019095466, + 50.9406445913995 + ], + [ + 7.108486733671654, + 50.94063772009557 + ], + [ + 7.108452463652613, + 50.9406086506447 + ], + [ + 7.108441342855977, + 50.94060165421344 + ], + [ + 7.108384441291458, + 50.940566237310726 + ], + [ + 7.108241324013814, + 50.94048911944694 + ], + [ + 7.108039221231484, + 50.94040851560491 + ], + [ + 7.107861392599014, + 50.940337570038075 + ], + [ + 7.107776062750647, + 50.9402732965901 + ], + [ + 7.107681903000797, + 50.940202724735066 + ], + [ + 7.107624350076929, + 50.940157784366136 + ], + [ + 7.1075679006023185, + 50.940147263270624 + ], + [ + 7.107541749775552, + 50.94014247746721 + ], + [ + 7.107443408210821, + 50.94011734164146 + ], + [ + 7.1073762305613295, + 50.94009847225453 + ], + [ + 7.107342394589418, + 50.94007560069966 + ], + [ + 7.107324034944341, + 50.94006336944562 + ], + [ + 7.10727759454944, + 50.94006695685106 + ], + [ + 7.107177267480698, + 50.94003015268985 + ], + [ + 7.107037753428512, + 50.93997879904966 + ], + [ + 7.107005747420111, + 50.939967056968435 + ], + [ + 7.106992099646841, + 50.939931587954206 + ], + [ + 7.1069329144546955, + 50.939901765092856 + ], + [ + 7.10677326592568, + 50.93982929683206 + ], + [ + 7.106696728279832, + 50.939823640648875 + ], + [ + 7.106566327427507, + 50.93983242784171 + ], + [ + 7.106503542124123, + 50.9398367094624 + ], + [ + 7.106412274905489, + 50.93980386396623 + ], + [ + 7.106390605201536, + 50.9397960693787 + ], + [ + 7.1062661620739105, + 50.93972623278101 + ], + [ + 7.106122896762734, + 50.93963661776192 + ], + [ + 7.1057461354973315, + 50.93939028335846 + ], + [ + 7.105539628952615, + 50.93927960281016 + ], + [ + 7.1054511478007525, + 50.939232258205806 + ], + [ + 7.105440690002971, + 50.93922318752502 + ], + [ + 7.10539739645822, + 50.93918548255482 + ], + [ + 7.1053321702382135, + 50.939128748200766 + ], + [ + 7.105257096387188, + 50.9390616300549 + ], + [ + 7.105247919495305, + 50.93905382575925 + ], + [ + 7.105241434550024, + 50.939049060922514 + ], + [ + 7.105230057690711, + 50.93904054100334 + ], + [ + 7.105188124380428, + 50.9390061487888 + ], + [ + 7.105083165235733, + 50.938941790361156 + ], + [ + 7.105076090765879, + 50.9389374521359 + ], + [ + 7.105023057394768, + 50.93890891889381 + ], + [ + 7.1049965812280425, + 50.93889640442553 + ], + [ + 7.104958455161311, + 50.93887851693136 + ], + [ + 7.104835617627942, + 50.93881019237768 + ], + [ + 7.104821488551011, + 50.93880232474353 + ], + [ + 7.104653859337719, + 50.93870502843776 + ], + [ + 7.1046007808438985, + 50.93867460740906 + ], + [ + 7.1045169554305865, + 50.9386434883838 + ], + [ + 7.1044524974331065, + 50.93862513091441 + ], + [ + 7.104408282412728, + 50.93860847002881 + ], + [ + 7.104313036149712, + 50.938581683798304 + ], + [ + 7.1041911906280895, + 50.93855514995664 + ], + [ + 7.104138619127642, + 50.93854009532672 + ], + [ + 7.1040864267171395, + 50.93851694718863 + ], + [ + 7.104013386671078, + 50.93848464671607 + ], + [ + 7.1039062667077415, + 50.93843711782409 + ], + [ + 7.103643389154631, + 50.93833676569 + ], + [ + 7.103479845469101, + 50.93826163222194 + ], + [ + 7.103425323333394, + 50.93823023567355 + ], + [ + 7.103367049569883, + 50.93819662687871 + ], + [ + 7.103314202342695, + 50.93817591221365 + ], + [ + 7.103282178813902, + 50.93816335938654 + ], + [ + 7.103128807070541, + 50.938103142893816 + ], + [ + 7.1030339910201095, + 50.93806439570447 + ], + [ + 7.103006406040783, + 50.938053059809235 + ], + [ + 7.102926978131994, + 50.938018200491975 + ], + [ + 7.10291562525933, + 50.938013513807135 + ], + [ + 7.102906746558027, + 50.93801039264276 + ], + [ + 7.102854478235999, + 50.93798770498291 + ], + [ + 7.102846290185554, + 50.93798436659977 + ], + [ + 7.102805337945868, + 50.937961290818244 + ], + [ + 7.102740877522059, + 50.93794275248087 + ], + [ + 7.102655225110009, + 50.9379064355813 + ], + [ + 7.102570911976974, + 50.937884669558315 + ], + [ + 7.102499925774512, + 50.93787895693051 + ], + [ + 7.102477948054017, + 50.93787610847943 + ], + [ + 7.102359996688032, + 50.937862235147044 + ], + [ + 7.1023481601697265, + 50.93786054980588 + ], + [ + 7.10229787686414, + 50.93785389828541 + ], + [ + 7.102214102254601, + 50.93784282336445 + ], + [ + 7.102058639705325, + 50.937808423586816 + ], + [ + 7.102005718002805, + 50.93779651814944 + ], + [ + 7.101912753235545, + 50.93777582152911 + ], + [ + 7.101822458268061, + 50.937747728730976 + ], + [ + 7.101763409858395, + 50.93772940825332 + ], + [ + 7.101676190264063, + 50.93769301568016 + ], + [ + 7.101632647655108, + 50.937674638790455 + ], + [ + 7.1016031303086296, + 50.93766574887627 + ], + [ + 7.101581923580517, + 50.93765938639888 + ], + [ + 7.10149008579282, + 50.93765027534519 + ], + [ + 7.101268807412458, + 50.93763618287384 + ], + [ + 7.101205517123154, + 50.93762500419619 + ], + [ + 7.101116482687484, + 50.93759599961154 + ], + [ + 7.101092578098704, + 50.93758381926491 + ], + [ + 7.101059021721713, + 50.937566606480935 + ], + [ + 7.101007584851254, + 50.93752717911224 + ], + [ + 7.1009503032531835, + 50.93747522207894 + ], + [ + 7.100907558773524, + 50.93743643071237 + ], + [ + 7.10083912376272, + 50.93737001572803 + ], + [ + 7.1008140759149825, + 50.93734562138901 + ], + [ + 7.10078054418202, + 50.93732337430071 + ], + [ + 7.100751205414244, + 50.937303963650244 + ], + [ + 7.100660527195717, + 50.93724755721758 + ], + [ + 7.100494400909497, + 50.93717711891851 + ], + [ + 7.1004083082701115, + 50.93714008538772 + ], + [ + 7.1002997895904, + 50.93708726192068 + ], + [ + 7.100279367697113, + 50.93706588005337 + ], + [ + 7.100244801636175, + 50.93702997896355 + ], + [ + 7.100199484410872, + 50.93698456034052 + ], + [ + 7.10018869380822, + 50.93697342512391 + ], + [ + 7.100170472845046, + 50.93695489855089 + ], + [ + 7.100137435190953, + 50.936923477735796 + ], + [ + 7.100108069108241, + 50.93690289910428 + ], + [ + 7.099961853989988, + 50.936783909187604 + ], + [ + 7.099873868874611, + 50.936708868026685 + ], + [ + 7.099807511693712, + 50.93665205184124 + ], + [ + 7.099734224099796, + 50.93660896397586 + ], + [ + 7.099710992936924, + 50.93659515926255 + ], + [ + 7.099639678458451, + 50.93655133360114 + ], + [ + 7.099586385309132, + 50.93652963235836 + ], + [ + 7.099497960739486, + 50.93650826122942 + ], + [ + 7.099466174515229, + 50.936505684220165 + ], + [ + 7.099420948215078, + 50.93650026765607 + ], + [ + 7.099360478332158, + 50.936494004822414 + ], + [ + 7.099308493073352, + 50.93648550578405 + ], + [ + 7.099282644168707, + 50.9364813444852 + ], + [ + 7.099240019006993, + 50.93645954246747 + ], + [ + 7.099186829829284, + 50.936442244207406 + ], + [ + 7.0991046431179665, + 50.93638980068241 + ], + [ + 7.099040193725998, + 50.93634141604895 + ], + [ + 7.098982597995934, + 50.93628199899787 + ], + [ + 7.098951663498825, + 50.93621900492885 + ], + [ + 7.098945398329058, + 50.936206748035644 + ], + [ + 7.098950713647004, + 50.93612444499605 + ], + [ + 7.098960364785398, + 50.93609936427915 + ], + [ + 7.098980455715318, + 50.936046406979735 + ], + [ + 7.098992623557118, + 50.93602543685257 + ], + [ + 7.099020789245629, + 50.93597707816324 + ], + [ + 7.099041043066523, + 50.935943087439966 + ], + [ + 7.099052688326104, + 50.93592320331982 + ], + [ + 7.099054436752836, + 50.93591680225569 + ], + [ + 7.099056182370976, + 50.935910400246435 + ], + [ + 7.099069115231835, + 50.93585454644664 + ], + [ + 7.09907290636331, + 50.935792125045104 + ], + [ + 7.099075832415819, + 50.93576539870167 + ], + [ + 7.0990289947959155, + 50.93568556416328 + ], + [ + 7.099012551954262, + 50.935657942333094 + ], + [ + 7.098988577352204, + 50.93563066012452 + ], + [ + 7.098941651259195, + 50.935577255441075 + ], + [ + 7.098890463201905, + 50.93553018388623 + ], + [ + 7.0989081157061555, + 50.93548839652729 + ], + [ + 7.098875745249654, + 50.935448968395015 + ], + [ + 7.098900848873089, + 50.935433629387326 + ], + [ + 7.098908419426362, + 50.93542888352951 + ], + [ + 7.098931558826108, + 50.935414732062426 + ], + [ + 7.098917294251392, + 50.93540102283674 + ], + [ + 7.09888672369485, + 50.93537155566653 + ], + [ + 7.098838699359989, + 50.93530171071151 + ], + [ + 7.098821612559719, + 50.935276971610236 + ], + [ + 7.098788447895639, + 50.9352038404345 + ], + [ + 7.098780171526635, + 50.935184680552695 + ], + [ + 7.098758508465448, + 50.9351347234621 + ], + [ + 7.098743394611294, + 50.93511517971444 + ], + [ + 7.098734298375367, + 50.93510348916439 + ], + [ + 7.098729456390524, + 50.93509724158527 + ], + [ + 7.098712537561993, + 50.935085625088504 + ], + [ + 7.0986875258527835, + 50.93506860112795 + ], + [ + 7.0986752349260716, + 50.93506017628675 + ], + [ + 7.098592755048657, + 50.93502535508544 + ], + [ + 7.098535072141146, + 50.93500441375596 + ], + [ + 7.098421861117024, + 50.93496340881171 + ], + [ + 7.0983660901472385, + 50.934945146261825 + ], + [ + 7.09797080609716, + 50.93481492386577 + ], + [ + 7.097729652030579, + 50.93475363682214 + ], + [ + 7.097720848463904, + 50.93475138346522 + ], + [ + 7.09771204482474, + 50.93474913190517 + ], + [ + 7.097520850479671, + 50.93470094649536 + ], + [ + 7.097459457614825, + 50.93468552290864 + ], + [ + 7.097251874243238, + 50.9346240993609 + ], + [ + 7.097102169946957, + 50.934579841594235 + ], + [ + 7.096905800985887, + 50.93452334615575 + ], + [ + 7.09682668520639, + 50.93449235765076 + ], + [ + 7.09669697478713, + 50.93444530362755 + ], + [ + 7.096680067131891, + 50.934440158820884 + ], + [ + 7.096443915511372, + 50.93436767625549 + ], + [ + 7.096240542873459, + 50.93430971734003 + ], + [ + 7.096150457970109, + 50.93428404458951 + ], + [ + 7.096092700244658, + 50.934265889740246 + ], + [ + 7.0960755039283505, + 50.9342605674598 + ], + [ + 7.096017686834842, + 50.93423989519004 + ], + [ + 7.095927585779221, + 50.934207481284346 + ], + [ + 7.095811855417818, + 50.934168115393796 + ], + [ + 7.09579019966463, + 50.93416067787953 + ], + [ + 7.095768272689509, + 50.9341537827492 + ], + [ + 7.095713214261531, + 50.93413551165416 + ], + [ + 7.09568945024536, + 50.93411101390813 + ], + [ + 7.095643189667099, + 50.93410380724752 + ], + [ + 7.095579607787149, + 50.93407995320738 + ], + [ + 7.095367133685314, + 50.93402207811102 + ], + [ + 7.095341826297519, + 50.9340166530651 + ], + [ + 7.095052719184459, + 50.93395455286654 + ], + [ + 7.094971997128704, + 50.93392771261603 + ], + [ + 7.094595986620122, + 50.933823907064365 + ], + [ + 7.094549405994297, + 50.933815174821405 + ], + [ + 7.094369336422193, + 50.933780096812924 + ], + [ + 7.0943361118224475, + 50.93377070023182 + ], + [ + 7.094314636636483, + 50.933764878844336 + ], + [ + 7.0942722388425485, + 50.933752601134756 + ], + [ + 7.094114395413182, + 50.933706797327275 + ], + [ + 7.094033734289304, + 50.93368256286845 + ], + [ + 7.093727711050796, + 50.933590504219325 + ], + [ + 7.093541395109105, + 50.933543797595654 + ], + [ + 7.093332671185593, + 50.93349999746792 + ], + [ + 7.093169429480714, + 50.93347869366757 + ], + [ + 7.0931296614739, + 50.9334753801694 + ], + [ + 7.093114980421048, + 50.933474169048296 + ], + [ + 7.093094613317795, + 50.93347310157685 + ], + [ + 7.093060855231796, + 50.93347126045205 + ], + [ + 7.09302462469032, + 50.93347321830676 + ], + [ + 7.093013399652583, + 50.933473772416995 + ], + [ + 7.092997628756217, + 50.9334746398916 + ], + [ + 7.092865267150783, + 50.93346590145779 + ], + [ + 7.09277882444904, + 50.9334619467271 + ], + [ + 7.092247828174898, + 50.933385204769515 + ], + [ + 7.0920875293608585, + 50.933361984234935 + ], + [ + 7.0919443770947606, + 50.93331774773155 + ], + [ + 7.091931672204639, + 50.933309775875856 + ], + [ + 7.09188014132184, + 50.933277986534385 + ], + [ + 7.091847597934793, + 50.933255098244054 + ], + [ + 7.091744233686786, + 50.933093537060145 + ], + [ + 7.091690186959648, + 50.93306365812321 + ], + [ + 7.091682119393778, + 50.93305932891749 + ], + [ + 7.091660551918548, + 50.93306168792935 + ], + [ + 7.09164111927369, + 50.93306411691129 + ], + [ + 7.091610374468679, + 50.93306943858209 + ], + [ + 7.091603844161194, + 50.93305179065875 + ], + [ + 7.0916007996060095, + 50.93304327968394 + ], + [ + 7.09157883867753, + 50.932986312090314 + ], + [ + 7.091575948600473, + 50.932978338760876 + ], + [ + 7.091568027368311, + 50.93295593924776 + ], + [ + 7.091537469426894, + 50.93287208405622 + ], + [ + 7.091509839058328, + 50.93279170778503 + ], + [ + 7.091536285299595, + 50.93276080634542 + ], + [ + 7.091507102139469, + 50.932674870907874 + ], + [ + 7.091452578666291, + 50.932679247080564 + ], + [ + 7.091366438389964, + 50.9326761128599 + ], + [ + 7.091331844324802, + 50.93267489161365 + ], + [ + 7.091317385112675, + 50.932674700171496 + ], + [ + 7.091184381054858, + 50.9326711476275 + ], + [ + 7.0907924416797155, + 50.93279158434844 + ], + [ + 7.090680889596688, + 50.93280269542859 + ], + [ + 7.090336384676013, + 50.9327983940719 + ], + [ + 7.090328205148836, + 50.9327982611653 + ], + [ + 7.090320024774888, + 50.93279814892964 + ], + [ + 7.090237035850382, + 50.932795975583254 + ], + [ + 7.090220740068142, + 50.93279562445187 + ], + [ + 7.0902044441757335, + 50.93279527601446 + ], + [ + 7.090130000699875, + 50.93279337100177 + ], + [ + 7.090018372360433, + 50.932789110091626 + ], + [ + 7.090000574641542, + 50.93278842227685 + ], + [ + 7.08998277546417, + 50.932787735334855 + ], + [ + 7.08981376674409, + 50.93278122230785 + ], + [ + 7.089457929050741, + 50.93274229541302 + ], + [ + 7.089388762331879, + 50.93273485077202 + ], + [ + 7.089180631686898, + 50.93269175708063 + ], + [ + 7.089164313099894, + 50.932687414954955 + ], + [ + 7.088866253179775, + 50.932606774295486 + ], + [ + 7.088473514691612, + 50.93248611592677 + ], + [ + 7.088202134823706, + 50.93239039281726 + ], + [ + 7.08800261686202, + 50.93232006863967 + ], + [ + 7.087895291924744, + 50.932274593609826 + ], + [ + 7.087836746371861, + 50.93223459778697 + ], + [ + 7.087718036854033, + 50.93219507246488 + ], + [ + 7.08756702512602, + 50.93214281257925 + ], + [ + 7.087498658630622, + 50.93212088668278 + ], + [ + 7.08741819201245, + 50.93209251102813 + ], + [ + 7.087310200933327, + 50.93205504236137 + ], + [ + 7.087189004910516, + 50.93201096454852 + ], + [ + 7.087010502615395, + 50.93194645653177 + ], + [ + 7.0864335252971955, + 50.931738961146856 + ], + [ + 7.086342968874012, + 50.93171094817289 + ], + [ + 7.086330215987223, + 50.93170702204577 + ], + [ + 7.08623489513795, + 50.931669884187315 + ], + [ + 7.086204679259142, + 50.9316551528045 + ], + [ + 7.086178922184161, + 50.93164253786672 + ], + [ + 7.08605522223982, + 50.93158400011667 + ], + [ + 7.086007838390081, + 50.93156095319085 + ], + [ + 7.085990175241302, + 50.931554573997325 + ], + [ + 7.08562270170576, + 50.931421990790916 + ], + [ + 7.085507347068759, + 50.93136750963226 + ], + [ + 7.085416016318011, + 50.931324490841554 + ], + [ + 7.085181914716237, + 50.93123470613676 + ], + [ + 7.085103077811794, + 50.931202897544594 + ], + [ + 7.085046642299667, + 50.93118005069453 + ], + [ + 7.084951364851936, + 50.93113248346477 + ], + [ + 7.084919559633106, + 50.93111668780507 + ], + [ + 7.084811993833077, + 50.9310667181227 + ], + [ + 7.084088255297235, + 50.93079890837042 + ], + [ + 7.084071898457852, + 50.93079285790474 + ], + [ + 7.083708910904208, + 50.93065968028608 + ], + [ + 7.083571033920106, + 50.93060909224472 + ], + [ + 7.083558837086041, + 50.93060453099519 + ], + [ + 7.0834331512564335, + 50.93055823413596 + ], + [ + 7.083391832084162, + 50.93054315603392 + ], + [ + 7.083007322921773, + 50.93040181637423 + ], + [ + 7.082499019464312, + 50.93021586794798 + ], + [ + 7.082194869120076, + 50.930104524449554 + ], + [ + 7.081840078929341, + 50.929974680948476 + ], + [ + 7.079715578419296, + 50.929159064426045 + ], + [ + 7.0795241450685245, + 50.92907732421012 + ], + [ + 7.079501900685743, + 50.92902584107203 + ], + [ + 7.079877001084576, + 50.928657580106915 + ], + [ + 7.079790024739269, + 50.92862404570577 + ], + [ + 7.079579304709663, + 50.92875049876588 + ], + [ + 7.078781726388016, + 50.929124463118946 + ], + [ + 7.078496133939307, + 50.929255022386094 + ], + [ + 7.0778558945131325, + 50.92953808220341 + ], + [ + 7.077669951978688, + 50.929623042035644 + ], + [ + 7.0768978979447095, + 50.92997635173008 + ], + [ + 7.076331509296155, + 50.9302466707191 + ], + [ + 7.07609692832319, + 50.930354685789496 + ], + [ + 7.075552077598623, + 50.930616405517206 + ], + [ + 7.075432830995282, + 50.93068852116929 + ], + [ + 7.075330077130798, + 50.930768529842084 + ], + [ + 7.075104737915362, + 50.93092616756117 + ], + [ + 7.074977007562464, + 50.93103144183663 + ], + [ + 7.074612875589125, + 50.93132874908879 + ], + [ + 7.0745665631478065, + 50.931368459329484 + ], + [ + 7.074326558916971, + 50.931571830997065 + ], + [ + 7.073960544466295, + 50.93187340054804 + ], + [ + 7.073638181359264, + 50.932138138126504 + ], + [ + 7.073626035618108, + 50.9321480933245 + ], + [ + 7.073614054910474, + 50.932158118697004 + ], + [ + 7.073422145213076, + 50.932313081530076 + ], + [ + 7.072745938855789, + 50.932859923311646 + ], + [ + 7.072238160137569, + 50.93327118084601 + ], + [ + 7.071982031422271, + 50.933478582229824 + ], + [ + 7.071877855098024, + 50.933563230306575 + ], + [ + 7.071438288596389, + 50.93394113657724 + ], + [ + 7.071366475307463, + 50.934004181889286 + ], + [ + 7.070769820587487, + 50.9345291607625 + ], + [ + 7.070533336730617, + 50.934737282971085 + ], + [ + 7.070522709742986, + 50.93474644632867 + ], + [ + 7.070516787424967, + 50.93475132912447 + ], + [ + 7.07050540089976, + 50.93476072095638 + ], + [ + 7.070426785904374, + 50.93482589988796 + ], + [ + 7.070370135842174, + 50.93484230505228 + ], + [ + 7.070259190340215, + 50.93487400033701 + ], + [ + 7.070220636509998, + 50.93491112104373 + ], + [ + 7.070140055125194, + 50.93498898879117 + ], + [ + 7.06996381825242, + 50.935132637464875 + ], + [ + 7.069256476523858, + 50.93570868916984 + ], + [ + 7.069088142004567, + 50.935848457864424 + ], + [ + 7.069083260030854, + 50.935852511493856 + ], + [ + 7.069078376596709, + 50.93585656599827 + ], + [ + 7.068489060913242, + 50.93634587530536 + ], + [ + 7.068373583269053, + 50.936447074075225 + ], + [ + 7.068273267003801, + 50.93653480020785 + ], + [ + 7.068232719415941, + 50.936570260322995 + ], + [ + 7.06718021075038, + 50.93753231553803 + ], + [ + 7.066737187199381, + 50.93794888988563 + ], + [ + 7.066543124600577, + 50.93816002695697 + ], + [ + 7.066503972221225, + 50.93820227550509 + ], + [ + 7.066025627609919, + 50.93874969621767 + ], + [ + 7.065996348616955, + 50.93877341846679 + ], + [ + 7.065877841860397, + 50.93886943463611 + ], + [ + 7.065655643869545, + 50.93908864807192 + ], + [ + 7.065613346157881, + 50.93913047007216 + ], + [ + 7.0655718987946745, + 50.93919425873717 + ], + [ + 7.065501397097202, + 50.93930274551849 + ], + [ + 7.065461209208273, + 50.93936454403547 + ], + [ + 7.065436329925676, + 50.93940275766574 + ], + [ + 7.06543049158904, + 50.93941159070763 + ], + [ + 7.065424395558188, + 50.93942066500538 + ], + [ + 7.065408429363691, + 50.93944078272155 + ], + [ + 7.065001255274864, + 50.939945832319744 + ], + [ + 7.064765876629396, + 50.9402376822282 + ], + [ + 7.064661781325741, + 50.94036675118487 + ], + [ + 7.064614445462617, + 50.94043160297254 + ], + [ + 7.064471750345536, + 50.94062709834973 + ], + [ + 7.0644091546554035, + 50.940795512495185 + ], + [ + 7.064400788063807, + 50.940883953982244 + ], + [ + 7.064406694712202, + 50.940998783836385 + ], + [ + 7.064407259105911, + 50.94100839750679 + ], + [ + 7.064408059220507, + 50.94101799080257 + ], + [ + 7.064439479677886, + 50.94115453341934 + ], + [ + 7.064442185383636, + 50.941160847748094 + ], + [ + 7.064445098850696, + 50.94116716372263 + ], + [ + 7.064591875532628, + 50.94148836422967 + ], + [ + 7.064749891999099, + 50.94185314966915 + ], + [ + 7.064807693018083, + 50.94200638637159 + ], + [ + 7.064809001802445, + 50.94201525061577 + ], + [ + 7.064810582582049, + 50.94202555205584 + ], + [ + 7.064824490215743, + 50.94213761134085 + ], + [ + 7.0647875914609415, + 50.942213909727336 + ], + [ + 7.0647830327685375, + 50.94222335033315 + ], + [ + 7.064778285880039, + 50.94223272936048 + ], + [ + 7.064728649559566, + 50.942306587958164 + ], + [ + 7.064619181868538, + 50.9424164482209 + ], + [ + 7.064478327837304, + 50.94252263845616 + ], + [ + 7.064309119453351, + 50.942620908063674 + ], + [ + 7.064071545771525, + 50.94274119521225 + ], + [ + 7.063911194740303, + 50.94282239369668 + ], + [ + 7.063788795214952, + 50.94291070580881 + ], + [ + 7.0635627377057055, + 50.94302243570963 + ], + [ + 7.063555276697956, + 50.94302610637245 + ], + [ + 7.063547735842121, + 50.94302981438302 + ], + [ + 7.0634785499576624, + 50.94306383551667 + ], + [ + 7.063369990304198, + 50.94298190766279 + ], + [ + 7.063361363751538, + 50.94297539706159 + ], + [ + 7.063352607007584, + 50.942968970639036 + ], + [ + 7.063159941822833, + 50.94285054426698 + ], + [ + 7.063045988561313, + 50.942810966724956 + ], + [ + 7.063025834096679, + 50.942803673052744 + ], + [ + 7.062882604701178, + 50.94278097633672 + ], + [ + 7.0627498698341675, + 50.94279423120347 + ], + [ + 7.062583907701872, + 50.94284146110731 + ], + [ + 7.062495709868034, + 50.94289866474423 + ], + [ + 7.062308901478043, + 50.943088187485166 + ], + [ + 7.062280257084642, + 50.9431172471796 + ], + [ + 7.062244829337538, + 50.94315319043166 + ], + [ + 7.0617314889188005, + 50.94360913385698 + ], + [ + 7.061338306949016, + 50.94395834718053 + ], + [ + 7.0610150194454695, + 50.94424544168339 + ], + [ + 7.060477197049489, + 50.94469933709553 + ], + [ + 7.060423953387159, + 50.944744270658134 + ], + [ + 7.060418355547337, + 50.94474899645217 + ], + [ + 7.060323963171967, + 50.944828663302445 + ], + [ + 7.06031395601932, + 50.94483716061599 + ], + [ + 7.060303962827262, + 50.94484566445621 + ], + [ + 7.060257237831055, + 50.94488525520088 + ], + [ + 7.06025162629657, + 50.94489013814827 + ], + [ + 7.06024599240889, + 50.94489494247928 + ], + [ + 7.060204026812961, + 50.94493076210171 + ], + [ + 7.059990397422646, + 50.94511299136342 + ], + [ + 7.059797373750817, + 50.94527759878023 + ], + [ + 7.059547421604912, + 50.945490768796255 + ], + [ + 7.059246161267327, + 50.94574761469852 + ], + [ + 7.058995066192509, + 50.9459616809974 + ], + [ + 7.0589326939144375, + 50.94601485498572 + ], + [ + 7.058762256392114, + 50.946160142847646 + ], + [ + 7.058575219363383, + 50.94633280178722 + ], + [ + 7.058491018926368, + 50.94641108255325 + ], + [ + 7.058341010433113, + 50.94655248432443 + ], + [ + 7.05808502202128, + 50.94682205971242 + ], + [ + 7.057741435990238, + 50.947319949573675 + ], + [ + 7.057674135197582, + 50.947448885194866 + ], + [ + 7.057637387745124, + 50.94751928763344 + ], + [ + 7.057591067718101, + 50.947624068184 + ], + [ + 7.057551867045388, + 50.94771266978654 + ], + [ + 7.057549461846956, + 50.947718386599945 + ], + [ + 7.057511601411658, + 50.94780837122529 + ], + [ + 7.057465976255859, + 50.94791682279932 + ], + [ + 7.057458335351649, + 50.94794837217381 + ], + [ + 7.057337304665721, + 50.94844836095701 + ], + [ + 7.057335264590997, + 50.948596165394044 + ], + [ + 7.0573352067965525, + 50.94860434594819 + ], + [ + 7.057335151847482, + 50.9486125265497 + ], + [ + 7.057334093605407, + 50.94874931482035 + ], + [ + 7.057331791364435, + 50.94904728441302 + ], + [ + 7.05733151608837, + 50.94908980446548 + ], + [ + 7.057339958017682, + 50.94928894632688 + ], + [ + 7.057352070817695, + 50.94957469956018 + ], + [ + 7.0573654899432325, + 50.9498912687381 + ], + [ + 7.057370118074788, + 50.950000436798064 + ], + [ + 7.057373539146158, + 50.950044418657704 + ], + [ + 7.057374045386607, + 50.95005020369581 + ], + [ + 7.057374553274808, + 50.95005598336513 + ], + [ + 7.0573919351384395, + 50.950251440853656 + ], + [ + 7.057401000667194, + 50.95035099389145 + ], + [ + 7.057472085712514, + 50.9510885748685 + ], + [ + 7.057472489203714, + 50.95109607328236 + ], + [ + 7.057472879252674, + 50.95110358676175 + ], + [ + 7.057481422596298, + 50.95127617381983 + ], + [ + 7.057482138772582, + 50.951286587777055 + ], + [ + 7.057482804853574, + 50.951296939744076 + ], + [ + 7.057491954901496, + 50.95146832904465 + ], + [ + 7.0575053366612615, + 50.951718966030164 + ], + [ + 7.057508001071873, + 50.95174613427023 + ], + [ + 7.057562252796901, + 50.95229898086378 + ], + [ + 7.057563225505717, + 50.95230887745576 + ], + [ + 7.057564198327307, + 50.952318771351486 + ], + [ + 7.057567174773333, + 50.95234900891059 + ], + [ + 7.057573185032261, + 50.95244737607101 + ], + [ + 7.057589346029776, + 50.95271185817893 + ], + [ + 7.0576327652091635, + 50.953422431070145 + ], + [ + 7.057642369448134, + 50.9535795999242 + ], + [ + 7.057674139980512, + 50.95367596733047 + ], + [ + 7.057744797247074, + 50.953891051855415 + ], + [ + 7.057755703407776, + 50.953890796192496 + ], + [ + 7.057867370249132, + 50.95388814793923 + ], + [ + 7.058008944710537, + 50.95388480358501 + ], + [ + 7.058600084079624, + 50.95387072320933 + ], + [ + 7.058951720894059, + 50.95386212684222 + ], + [ + 7.059161158327469, + 50.95387218200708 + ], + [ + 7.059266288143823, + 50.95389523007765 + ], + [ + 7.059409270859174, + 50.95391191017063 + ], + [ + 7.059850369117175, + 50.95406413997828 + ], + [ + 7.060272684277571, + 50.95419145846368 + ], + [ + 7.060360975567729, + 50.95425627910608 + ], + [ + 7.060951095289847, + 50.95463988435363 + ], + [ + 7.061052041582271, + 50.95474782773141 + ], + [ + 7.061379040886681, + 50.95508312873578 + ], + [ + 7.061388539591979, + 50.95509404732907 + ], + [ + 7.061398031861841, + 50.95510498380191 + ], + [ + 7.061792551786809, + 50.95555966369025 + ], + [ + 7.061962985565439, + 50.95575623805719 + ], + [ + 7.06214358815185, + 50.95597429403328 + ], + [ + 7.062386980390011, + 50.95626818813105 + ], + [ + 7.062981365030131, + 50.95693652782143 + ], + [ + 7.063316441177684, + 50.957313510351725 + ], + [ + 7.0633248589957915, + 50.95732297996416 + ], + [ + 7.063333276817298, + 50.95733244957602 + ], + [ + 7.06351178913498, + 50.95753326294039 + ], + [ + 7.064139644653716, + 50.95821724373858 + ], + [ + 7.064148398745615, + 50.958226716165775 + ], + [ + 7.064156907292384, + 50.95823616923202 + ], + [ + 7.0647178712477405, + 50.95886492755901 + ], + [ + 7.0647989204176005, + 50.958955932809175 + ], + [ + 7.064841426141532, + 50.95901381963418 + ], + [ + 7.064932063228484, + 50.959087154745646 + ], + [ + 7.065150759304834, + 50.95918350322923 + ], + [ + 7.067459628758038, + 50.96004449966045 + ], + [ + 7.067578029734264, + 50.960088596180704 + ], + [ + 7.067690819041023, + 50.960130556360646 + ], + [ + 7.067913625356738, + 50.96021369303847 + ], + [ + 7.067963826570227, + 50.960232435411214 + ], + [ + 7.067970951591641, + 50.9602351029984 + ], + [ + 7.0680797785719545, + 50.960276235473906 + ], + [ + 7.068112891272916, + 50.96029311935253 + ], + [ + 7.068182315332674, + 50.96034257270265 + ], + [ + 7.06818504319801, + 50.96034471694491 + ], + [ + 7.068190733919217, + 50.9603487646909 + ], + [ + 7.068358387972778, + 50.960446761894936 + ], + [ + 7.068363183916413, + 50.96044422949173 + ], + [ + 7.068406907691832, + 50.960421147635316 + ], + [ + 7.068461344768463, + 50.96038505205772 + ], + [ + 7.0684656699380914, + 50.960380479305805 + ], + [ + 7.068467624162841, + 50.96037786031672 + ], + [ + 7.068500414616421, + 50.9603312735219 + ], + [ + 7.068624006038492, + 50.96000663483904 + ], + [ + 7.068628371837446, + 50.95999486606351 + ], + [ + 7.068630541291313, + 50.959988979654554 + ], + [ + 7.068632710744601, + 50.95998309324554 + ], + [ + 7.068644768879457, + 50.95995035449138 + ], + [ + 7.068915405937312, + 50.95921479401596 + ], + [ + 7.069148811292302, + 50.958593828988484 + ], + [ + 7.069423263666263, + 50.95782677176893 + ], + [ + 7.069604975386583, + 50.95733561567054 + ], + [ + 7.06962209984394, + 50.957289688693216 + ], + [ + 7.069641301006037, + 50.9572385941397 + ], + [ + 7.069643367911845, + 50.95723400739177 + ], + [ + 7.069650623583421, + 50.95721970248811 + ], + [ + 7.069718364332185, + 50.95708623564967 + ], + [ + 7.0698262937401095, + 50.95687407348213 + ], + [ + 7.069935232338751, + 50.95665990343278 + ], + [ + 7.070327926817674, + 50.95588770079229 + ], + [ + 7.070464074220857, + 50.95561995796493 + ], + [ + 7.071036271757088, + 50.95452249988625 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Brueck", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "807", + "Population_rel": 0.009427962207271792, + "Population_abs": 10258 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.934511512642596, + 51.000893416334 + ], + [ + 6.93456321479912, + 51.000818437281346 + ], + [ + 6.934675141352005, + 51.000656589937066 + ], + [ + 6.934744815845017, + 51.00055601325325 + ], + [ + 6.934964332990251, + 51.00023834367774 + ], + [ + 6.935002960348463, + 51.00018266128899 + ], + [ + 6.935288130612348, + 50.99977019893455 + ], + [ + 6.935567483551756, + 50.999366143806206 + ], + [ + 6.935704107290967, + 50.99916827513843 + ], + [ + 6.935791319652501, + 50.99904226692471 + ], + [ + 6.935986499736361, + 50.99875992428036 + ], + [ + 6.936096827075676, + 50.998600515194106 + ], + [ + 6.936120618446757, + 50.9985580743094 + ], + [ + 6.936134912611552, + 50.998532250549474 + ], + [ + 6.9362354606812495, + 50.998352211418116 + ], + [ + 6.936372086668393, + 50.99810713671997 + ], + [ + 6.936528600708063, + 50.99783574960128 + ], + [ + 6.936780065046475, + 50.99739955895205 + ], + [ + 6.936903093210294, + 50.99719910044249 + ], + [ + 6.9371437866410055, + 50.99719671930755 + ], + [ + 6.9383105137300305, + 50.996902839732634 + ], + [ + 6.938589915706576, + 50.996828050671695 + ], + [ + 6.938820459635259, + 50.996760485798035 + ], + [ + 6.939408569559542, + 50.99658801643878 + ], + [ + 6.939852875810951, + 50.99648969414384 + ], + [ + 6.93997672667205, + 50.996196816820245 + ], + [ + 6.940076141743502, + 50.996125721342544 + ], + [ + 6.940215921796812, + 50.995866964463126 + ], + [ + 6.940270644438104, + 50.995741303569325 + ], + [ + 6.940320354500556, + 50.99555797291458 + ], + [ + 6.94033442441422, + 50.99549996879525 + ], + [ + 6.94041209950943, + 50.995311917642155 + ], + [ + 6.940455950976866, + 50.99521223393655 + ], + [ + 6.940618747003528, + 50.99492964890793 + ], + [ + 6.94067154598568, + 50.99484274737254 + ], + [ + 6.940723923946666, + 50.99475620893027 + ], + [ + 6.940892862075221, + 50.994509801102254 + ], + [ + 6.9412195320227825, + 50.99403361529601 + ], + [ + 6.94133352271846, + 50.99382441556069 + ], + [ + 6.941023220464585, + 50.99370142790232 + ], + [ + 6.940854067101956, + 50.993634293341415 + ], + [ + 6.940557357893009, + 50.993514251207074 + ], + [ + 6.940955823822113, + 50.993010429976025 + ], + [ + 6.941066312019438, + 50.99305053020902 + ], + [ + 6.941136842966765, + 50.99316430480796 + ], + [ + 6.941114167594982, + 50.993261481429016 + ], + [ + 6.941136670919072, + 50.9933599114234 + ], + [ + 6.9411902535072105, + 50.99345269804918 + ], + [ + 6.9412567266296765, + 50.99354187427496 + ], + [ + 6.941330711355361, + 50.993629192566914 + ], + [ + 6.941363314431576, + 50.99366362771627 + ], + [ + 6.941411345486445, + 50.993714299548834 + ], + [ + 6.941502123726077, + 50.99377271656579 + ], + [ + 6.941627903512, + 50.99385736992002 + ], + [ + 6.941863160819189, + 50.993995344419204 + ], + [ + 6.942149046873467, + 50.994143247451625 + ], + [ + 6.942456243634405, + 50.99426733664847 + ], + [ + 6.942658442395526, + 50.99433420199857 + ], + [ + 6.9428726888258, + 50.99438398071158 + ], + [ + 6.943088842004967, + 50.99442951790185 + ], + [ + 6.943310071540473, + 50.99446539580823 + ], + [ + 6.9437572137429555, + 50.99452227897509 + ], + [ + 6.944971720625078, + 50.99459425793497 + ], + [ + 6.945127061756887, + 50.9946121475196 + ], + [ + 6.945200942817929, + 50.994616852479254 + ], + [ + 6.946041982758776, + 50.994514485444874 + ], + [ + 6.946151398903551, + 50.994516108467494 + ], + [ + 6.946173860300134, + 50.99451604930332 + ], + [ + 6.9462518684494095, + 50.994517818683875 + ], + [ + 6.9462938948416575, + 50.99451109566556 + ], + [ + 6.946367933944103, + 50.99448856163394 + ], + [ + 6.946446323967328, + 50.9944488226593 + ], + [ + 6.94651355915091, + 50.99432296793262 + ], + [ + 6.946786897964084, + 50.993937810439675 + ], + [ + 6.9470255851564255, + 50.99373280764525 + ], + [ + 6.947228485671233, + 50.99361708809972 + ], + [ + 6.947458612410307, + 50.99353045300135 + ], + [ + 6.947655174889817, + 50.99346728126687 + ], + [ + 6.948010810376282, + 50.993433076037114 + ], + [ + 6.948206184412349, + 50.99342792876395 + ], + [ + 6.948326386803089, + 50.993378231426085 + ], + [ + 6.94846724391386, + 50.99324476520463 + ], + [ + 6.948704946673639, + 50.992992034624415 + ], + [ + 6.948987364877798, + 50.992766896425444 + ], + [ + 6.949302109956581, + 50.99250661571109 + ], + [ + 6.950226524355741, + 50.991837397655765 + ], + [ + 6.950927258839281, + 50.991284876819485 + ], + [ + 6.9504021022255476, + 50.99092412604473 + ], + [ + 6.95012674085106, + 50.99072118050333 + ], + [ + 6.950001472244935, + 50.99062800216274 + ], + [ + 6.949899715850257, + 50.99055366634535 + ], + [ + 6.949769271518173, + 50.99046154448448 + ], + [ + 6.949692991222165, + 50.99047187280615 + ], + [ + 6.949668918870351, + 50.990476130494834 + ], + [ + 6.94955638357804, + 50.99049598867822 + ], + [ + 6.949417273482129, + 50.990519231230486 + ], + [ + 6.9490794515832235, + 50.990561802832495 + ], + [ + 6.94898380909245, + 50.990572198965275 + ], + [ + 6.948701880963529, + 50.99059723307697 + ], + [ + 6.948500288619168, + 50.99060813397172 + ], + [ + 6.948416768156187, + 50.99061269072242 + ], + [ + 6.948373852795092, + 50.99061506929766 + ], + [ + 6.947978139194331, + 50.990636642037536 + ], + [ + 6.947725593562786, + 50.99063510463456 + ], + [ + 6.9475482459287825, + 50.99063402762854 + ], + [ + 6.946727702157259, + 50.99063421203293 + ], + [ + 6.946651360263787, + 50.99063429165522 + ], + [ + 6.946397266409419, + 50.990634286362834 + ], + [ + 6.94528999360723, + 50.990665675415336 + ], + [ + 6.945265932250478, + 50.9906661883103 + ], + [ + 6.945086082112533, + 50.9906724671556 + ], + [ + 6.944622886056752, + 50.990688744437335 + ], + [ + 6.944578762439712, + 50.99069017759823 + ], + [ + 6.944555421698883, + 50.99069108706162 + ], + [ + 6.944163904323948, + 50.9907063882676 + ], + [ + 6.943958434456594, + 50.990719734902875 + ], + [ + 6.943805375462928, + 50.9907295350233 + ], + [ + 6.9434786842006675, + 50.99075055312418 + ], + [ + 6.943299090666109, + 50.99076039344964 + ], + [ + 6.943042869182169, + 50.99077477649923 + ], + [ + 6.942949692220561, + 50.990775554574476 + ], + [ + 6.942605689620606, + 50.99078573276451 + ], + [ + 6.9423030172191575, + 50.99077647878 + ], + [ + 6.942048474622249, + 50.990780894515865 + ], + [ + 6.940692614232269, + 50.99080507638952 + ], + [ + 6.939774201585765, + 50.99082379119034 + ], + [ + 6.939455294009384, + 50.99083049414911 + ], + [ + 6.939248409083546, + 50.990839163179714 + ], + [ + 6.939219007623051, + 50.99086277899203 + ], + [ + 6.939184938073539, + 50.990890761612526 + ], + [ + 6.9388704365349065, + 50.99087465351445 + ], + [ + 6.938774983499754, + 50.990877135566336 + ], + [ + 6.938461806948707, + 50.99088576539081 + ], + [ + 6.938149183307399, + 50.99089349217452 + ], + [ + 6.9376399706275285, + 50.99090675192685 + ], + [ + 6.937004346981206, + 50.99092336151611 + ], + [ + 6.936856143456717, + 50.99092670796933 + ], + [ + 6.936596011350021, + 50.990931133588795 + ], + [ + 6.936485379818229, + 50.99093301011403 + ], + [ + 6.936306565692273, + 50.990937049816246 + ], + [ + 6.935520703013573, + 50.990954679218675 + ], + [ + 6.935405566380787, + 50.990962120438226 + ], + [ + 6.935029301672749, + 50.99098703844129 + ], + [ + 6.9349781959919214, + 50.99099804154799 + ], + [ + 6.934769446986075, + 50.991043072679155 + ], + [ + 6.934608134504824, + 50.99110022863444 + ], + [ + 6.934539884838846, + 50.99110466511179 + ], + [ + 6.932977429419943, + 50.9911108797157 + ], + [ + 6.932906660827216, + 50.99111087452123 + ], + [ + 6.9322908437816, + 50.99111285248769 + ], + [ + 6.932200833765311, + 50.99111321218514 + ], + [ + 6.9312058642384855, + 50.99111629933522 + ], + [ + 6.9311074624250395, + 50.99111726140278 + ], + [ + 6.930880189008686, + 50.991119881168814 + ], + [ + 6.930630615428575, + 50.991118009590096 + ], + [ + 6.930382462177173, + 50.991116212114456 + ], + [ + 6.9303197908979355, + 50.99111581642485 + ], + [ + 6.930155263472375, + 50.99112269190129 + ], + [ + 6.929861111404547, + 50.99113546268953 + ], + [ + 6.92971908718499, + 50.99114171746747 + ], + [ + 6.929576919797113, + 50.991147794156866 + ], + [ + 6.929434894087831, + 50.99115404856306 + ], + [ + 6.929292708300036, + 50.99115922430817 + ], + [ + 6.929150036303797, + 50.99116117240268 + ], + [ + 6.9288913004492105, + 50.991164400461344 + ], + [ + 6.928677279154554, + 50.99116709177629 + ], + [ + 6.928532746689234, + 50.99116896024964 + ], + [ + 6.928489885320246, + 50.991169481570566 + ], + [ + 6.928265172501365, + 50.99117180710097 + ], + [ + 6.928019392827558, + 50.991174750431334 + ], + [ + 6.927762790439645, + 50.99117777820632 + ], + [ + 6.927548624447264, + 50.99118029130568 + ], + [ + 6.926963037491922, + 50.99120012475161 + ], + [ + 6.926807683760546, + 50.99119417590806 + ], + [ + 6.9264048377907095, + 50.99117031589284 + ], + [ + 6.926096859725635, + 50.99114061332121 + ], + [ + 6.92606487080999, + 50.991136034022475 + ], + [ + 6.925890054736698, + 50.99111112128993 + ], + [ + 6.925550896420544, + 50.9910368040827 + ], + [ + 6.9253280348740685, + 50.99099306305396 + ], + [ + 6.925032840366846, + 50.99092178548837 + ], + [ + 6.9248275785456235, + 50.990863552521745 + ], + [ + 6.9246854846616825, + 50.99082323577197 + ], + [ + 6.924517962017886, + 50.990771885787325 + ], + [ + 6.924193821499512, + 50.9906588535559 + ], + [ + 6.923842694295232, + 50.99052008172844 + ], + [ + 6.923883724260101, + 50.99048947788785 + ], + [ + 6.923374736265327, + 50.99025321201 + ], + [ + 6.922474321906198, + 50.98983646389412 + ], + [ + 6.922284359154029, + 50.989746210145 + ], + [ + 6.922224542588904, + 50.98971773926266 + ], + [ + 6.922123863638372, + 50.98966988736868 + ], + [ + 6.921951066987894, + 50.98958832606709 + ], + [ + 6.920742175015068, + 50.989014379053586 + ], + [ + 6.920657584437001, + 50.98897318439195 + ], + [ + 6.920192685296851, + 50.98874732800908 + ], + [ + 6.9201141882184665, + 50.988703948065776 + ], + [ + 6.919757093059867, + 50.98850551706497 + ], + [ + 6.919718372998602, + 50.98848419026843 + ], + [ + 6.91957627237175, + 50.988416529707045 + ], + [ + 6.9191839062555545, + 50.98823041144959 + ], + [ + 6.918757753721862, + 50.98804422393168 + ], + [ + 6.918670244848291, + 50.98800603726255 + ], + [ + 6.91860374079739, + 50.98797703248553 + ], + [ + 6.918579078886745, + 50.98796624471484 + ], + [ + 6.9185284280755015, + 50.987944423359494 + ], + [ + 6.9183455862078, + 50.98786675893425 + ], + [ + 6.918264543264545, + 50.98783159039759 + ], + [ + 6.917623129548021, + 50.987545460226535 + ], + [ + 6.9149424899453145, + 50.98643653269285 + ], + [ + 6.914940878120131, + 50.98641479209555 + ], + [ + 6.914936678169194, + 50.98635828130733 + ], + [ + 6.914567507216376, + 50.98624789128417 + ], + [ + 6.914018871596365, + 50.98612387155584 + ], + [ + 6.913474931526784, + 50.986021349056315 + ], + [ + 6.913071134816235, + 50.985946314183295 + ], + [ + 6.912633521655476, + 50.98585081792366 + ], + [ + 6.9120898010232255, + 50.9857340809138 + ], + [ + 6.91164693265419, + 50.98558011208287 + ], + [ + 6.911344576392303, + 50.985451848857856 + ], + [ + 6.911328296675165, + 50.985441515245036 + ], + [ + 6.911117891878089, + 50.98533415798752 + ], + [ + 6.911099401708964, + 50.9853246940702 + ], + [ + 6.91102583782467, + 50.98528669797148 + ], + [ + 6.910798658894679, + 50.985136645273464 + ], + [ + 6.910696015839551, + 50.985068945756844 + ], + [ + 6.910489248825517, + 50.98489759976934 + ], + [ + 6.910466935091657, + 50.98487990909253 + ], + [ + 6.910022289564087, + 50.98451696274197 + ], + [ + 6.909854657123024, + 50.98431277016491 + ], + [ + 6.9092259391462685, + 50.98368042914648 + ], + [ + 6.908717135815697, + 50.98316427132106 + ], + [ + 6.908681925047004, + 50.983196756666345 + ], + [ + 6.908552380178547, + 50.98331604752295 + ], + [ + 6.9085219233643, + 50.98334816108234 + ], + [ + 6.908498337166458, + 50.9833730740703 + ], + [ + 6.908466723444126, + 50.983406453002615 + ], + [ + 6.908418705773546, + 50.98345717128247 + ], + [ + 6.908382415951434, + 50.9834955209317 + ], + [ + 6.908267332399327, + 50.983617132773546 + ], + [ + 6.90818828590349, + 50.983700180842234 + ], + [ + 6.908163146290922, + 50.98372335082553 + ], + [ + 6.908065141999596, + 50.98380643514647 + ], + [ + 6.907931687180245, + 50.98391954131771 + ], + [ + 6.907582553050097, + 50.98419229220345 + ], + [ + 6.90705318973725, + 50.98461476529218 + ], + [ + 6.906636675612746, + 50.984982414876406 + ], + [ + 6.906456367009804, + 50.98513115095977 + ], + [ + 6.906365554659764, + 50.985206580506116 + ], + [ + 6.905630227403918, + 50.98581730826189 + ], + [ + 6.905511265070402, + 50.98591609813011 + ], + [ + 6.905392770789522, + 50.986014513139835 + ], + [ + 6.905243274136233, + 50.98613863639366 + ], + [ + 6.905092787670431, + 50.98625845887113 + ], + [ + 6.905021671846923, + 50.986315052536234 + ], + [ + 6.904924879449987, + 50.986392143666066 + ], + [ + 6.904864040356577, + 50.986440588888506 + ], + [ + 6.904750121844295, + 50.98653137229857 + ], + [ + 6.904629272748841, + 50.98664023821664 + ], + [ + 6.904597083549327, + 50.9866692609014 + ], + [ + 6.90438816793088, + 50.9868573804468 + ], + [ + 6.9043736501794015, + 50.98686903755364 + ], + [ + 6.904007288573502, + 50.98716738875696 + ], + [ + 6.903991989327314, + 50.98717990958148 + ], + [ + 6.903942463541063, + 50.98722019498911 + ], + [ + 6.903807805806044, + 50.98732489092989 + ], + [ + 6.903777574047546, + 50.98734830314275 + ], + [ + 6.903763422692127, + 50.98735947479288 + ], + [ + 6.903462347297497, + 50.98759419616175 + ], + [ + 6.90337355829095, + 50.98766337039791 + ], + [ + 6.903221683866391, + 50.9877816150507 + ], + [ + 6.902999182041909, + 50.98795503521669 + ], + [ + 6.902556806811252, + 50.98829959661437 + ], + [ + 6.902283065751148, + 50.988526982257234 + ], + [ + 6.902111760344694, + 50.988770924947964 + ], + [ + 6.901977056981688, + 50.988888950342 + ], + [ + 6.901949689197638, + 50.988894725505105 + ], + [ + 6.9017412418667785, + 50.98896543699151 + ], + [ + 6.9016845754002745, + 50.98900415324838 + ], + [ + 6.901631456616424, + 50.98904044645022 + ], + [ + 6.901405820448497, + 50.98923708406141 + ], + [ + 6.901354402421355, + 50.989281878030496 + ], + [ + 6.90130121824927, + 50.989324503318095 + ], + [ + 6.901255376112474, + 50.98936124100702 + ], + [ + 6.9005252033213464, + 50.98994624095037 + ], + [ + 6.900439151471134, + 50.99001519058194 + ], + [ + 6.900324579982176, + 50.99011632330497 + ], + [ + 6.9001335170164815, + 50.99028495385591 + ], + [ + 6.899913321943478, + 50.990479316603476 + ], + [ + 6.899797383292486, + 50.99058366108575 + ], + [ + 6.899700695230991, + 50.990670702318326 + ], + [ + 6.899556322105829, + 50.99080063596517 + ], + [ + 6.899465821283043, + 50.990882014295146 + ], + [ + 6.899115602199416, + 50.99114825506189 + ], + [ + 6.899088879116207, + 50.9911685561981 + ], + [ + 6.8983276126439845, + 50.99174694747177 + ], + [ + 6.8966596434347585, + 50.993014213246845 + ], + [ + 6.896174030050234, + 50.99338310778496 + ], + [ + 6.896144299571255, + 50.9934056915571 + ], + [ + 6.895499226912845, + 50.993895702150944 + ], + [ + 6.895342307156268, + 50.99401673276691 + ], + [ + 6.895208689120754, + 50.994119873642354 + ], + [ + 6.894315801250463, + 50.994809915822294 + ], + [ + 6.894270840136724, + 50.994844639495916 + ], + [ + 6.894025050721876, + 50.99503468944934 + ], + [ + 6.893948587215239, + 50.995094403388016 + ], + [ + 6.8936623093758636, + 50.99531798506535 + ], + [ + 6.89280607679741, + 50.995986630556956 + ], + [ + 6.89217690654025, + 50.996470115182944 + ], + [ + 6.891479040218822, + 50.9970062468335 + ], + [ + 6.892347315541503, + 50.99725150132335 + ], + [ + 6.892571897327629, + 50.99731495713415 + ], + [ + 6.8950475700357625, + 50.998203822823925 + ], + [ + 6.896173217494323, + 50.998616511065414 + ], + [ + 6.896615514952064, + 50.99880055594114 + ], + [ + 6.897045283419965, + 50.998993896096536 + ], + [ + 6.8972271278281445, + 50.999075675106965 + ], + [ + 6.897633105360485, + 50.99928110400179 + ], + [ + 6.8983337646342875, + 50.99962314726594 + ], + [ + 6.898396031699436, + 50.999702215761516 + ], + [ + 6.898436285586938, + 50.999753330337725 + ], + [ + 6.898482863778095, + 50.99977517520754 + ], + [ + 6.898505434216947, + 50.99978578925882 + ], + [ + 6.898524878446451, + 50.99979493233495 + ], + [ + 6.8987748454463365, + 50.99991239064131 + ], + [ + 6.899163523898667, + 51.00009878865416 + ], + [ + 6.899495878652077, + 51.00025932979836 + ], + [ + 6.89967160206973, + 51.00021011685811 + ], + [ + 6.899980337989075, + 51.000380428052786 + ], + [ + 6.900850136688881, + 51.00085793016878 + ], + [ + 6.9011751868249736, + 51.001031878837054 + ], + [ + 6.901268042434297, + 51.00105237684024 + ], + [ + 6.9018731901090336, + 51.00140322628981 + ], + [ + 6.903088814163485, + 51.00209903128592 + ], + [ + 6.903668977654513, + 51.00243109786305 + ], + [ + 6.9048754903773535, + 51.003204981112326 + ], + [ + 6.905149481610261, + 51.003396394692764 + ], + [ + 6.9065060420885205, + 51.00434434291413 + ], + [ + 6.906525399791498, + 51.00435807977843 + ], + [ + 6.906612572159538, + 51.00446653198123 + ], + [ + 6.906680996043365, + 51.00451229539113 + ], + [ + 6.9068648630641585, + 51.004581971774925 + ], + [ + 6.907320213102619, + 51.004903392503074 + ], + [ + 6.907857631742952, + 51.00528305361104 + ], + [ + 6.908508582344373, + 51.00574129279461 + ], + [ + 6.909726848621314, + 51.006582993010404 + ], + [ + 6.911081934706429, + 51.007555214182304 + ], + [ + 6.91119758421338, + 51.00765463158141 + ], + [ + 6.91136054863749, + 51.00778361287701 + ], + [ + 6.9116471612473855, + 51.00796196800453 + ], + [ + 6.912932175386149, + 51.00883736203813 + ], + [ + 6.912956588273078, + 51.00886153181918 + ], + [ + 6.913026479188833, + 51.0089305618967 + ], + [ + 6.9134706886042325, + 51.009239012026754 + ], + [ + 6.9155309917611225, + 51.010667796418915 + ], + [ + 6.915759049260095, + 51.010823228798785 + ], + [ + 6.91647253974978, + 51.011308889822736 + ], + [ + 6.916567432839262, + 51.01137349630442 + ], + [ + 6.916602963306912, + 51.01139766754455 + ], + [ + 6.916757503652105, + 51.01150270601206 + ], + [ + 6.916815130298389, + 51.011541806042054 + ], + [ + 6.9174247869582315, + 51.0119564527906 + ], + [ + 6.91775348839801, + 51.012135001545815 + ], + [ + 6.918626103834004, + 51.01260906074536 + ], + [ + 6.918943209568526, + 51.012842082109465 + ], + [ + 6.918988324900666, + 51.0128752570042 + ], + [ + 6.919137401952672, + 51.01298447050584 + ], + [ + 6.919526429478788, + 51.01321521633673 + ], + [ + 6.919691471275822, + 51.013310190434126 + ], + [ + 6.919829993817322, + 51.01339000166997 + ], + [ + 6.922417960894913, + 51.014869700167715 + ], + [ + 6.922492792711571, + 51.01479872450643 + ], + [ + 6.923039009343063, + 51.01428152979509 + ], + [ + 6.9230550854032815, + 51.01426616751123 + ], + [ + 6.9239159539693675, + 51.013449433103474 + ], + [ + 6.924021689583164, + 51.013349086415204 + ], + [ + 6.924073575376835, + 51.01329968432996 + ], + [ + 6.9244393739589425, + 51.012912860796405 + ], + [ + 6.924624572694673, + 51.01271695908435 + ], + [ + 6.924672287083483, + 51.01266570186236 + ], + [ + 6.925348375319985, + 51.0119395040911 + ], + [ + 6.925533791195144, + 51.01174054155579 + ], + [ + 6.925685434167415, + 51.01154876928474 + ], + [ + 6.925988744934913, + 51.01123992362352 + ], + [ + 6.926003724818225, + 51.01122470336067 + ], + [ + 6.926033472931925, + 51.011194532479635 + ], + [ + 6.926071044261224, + 51.0111563899801 + ], + [ + 6.926198101577874, + 51.0110253089151 + ], + [ + 6.926255555838729, + 51.01096601903128 + ], + [ + 6.926480835343288, + 51.010733613678255 + ], + [ + 6.926873921066169, + 51.01033802600721 + ], + [ + 6.926969747271842, + 51.01024162081107 + ], + [ + 6.927313792252458, + 51.00989523190903 + ], + [ + 6.9278648420989075, + 51.00934062661037 + ], + [ + 6.928031341860608, + 51.00917300309202 + ], + [ + 6.928087078150852, + 51.00911709675208 + ], + [ + 6.928569804150369, + 51.00863098903601 + ], + [ + 6.929074711103806, + 51.00786504852948 + ], + [ + 6.929091002101928, + 51.00783894085723 + ], + [ + 6.929291277740086, + 51.007558142248875 + ], + [ + 6.929420595678566, + 51.00737004801776 + ], + [ + 6.9297384822576475, + 51.006907450091724 + ], + [ + 6.929822658858581, + 51.006784886541766 + ], + [ + 6.930475550468766, + 51.006032683669574 + ], + [ + 6.930537663646235, + 51.00596117356375 + ], + [ + 6.930582640806943, + 51.00590903803417 + ], + [ + 6.930724738220613, + 51.00574771733088 + ], + [ + 6.930761381468754, + 51.00570634524461 + ], + [ + 6.9315861621406, + 51.004774059688046 + ], + [ + 6.932298764974068, + 51.00396860290499 + ], + [ + 6.9325475339521665, + 51.00362125124134 + ], + [ + 6.933179195214556, + 51.00273840891341 + ], + [ + 6.933278964029355, + 51.002591447282654 + ], + [ + 6.933327116902098, + 51.00252040726652 + ], + [ + 6.933369183754378, + 51.00245849517795 + ], + [ + 6.933607736377175, + 51.00210690792791 + ], + [ + 6.934119422892159, + 51.001437793986874 + ], + [ + 6.934277273471765, + 51.00123220631511 + ], + [ + 6.934433856109684, + 51.00100613351827 + ], + [ + 6.934478011860307, + 51.00094195648757 + ], + [ + 6.934511512642596, + 51.000893416334 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Longerich", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "506", + "Population_rel": 0.012702657990515055, + "Population_abs": 13821 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.017229402570007, + 50.86191477681513 + ], + [ + 7.0189546672138405, + 50.8611425316513 + ], + [ + 7.018997596532556, + 50.86117667614174 + ], + [ + 7.019087297016926, + 50.86113240629991 + ], + [ + 7.019092420859663, + 50.86112990307921 + ], + [ + 7.01964946118577, + 50.86093851068627 + ], + [ + 7.019657974570884, + 50.86093160494681 + ], + [ + 7.020837975799423, + 50.85997450962669 + ], + [ + 7.022008513975883, + 50.859041486664566 + ], + [ + 7.022152850156474, + 50.85893909013878 + ], + [ + 7.022716828137844, + 50.858503279148096 + ], + [ + 7.023196992152894, + 50.85813202662107 + ], + [ + 7.0232895775671755, + 50.85805992796975 + ], + [ + 7.0233052193915935, + 50.85804783459984 + ], + [ + 7.023335933934716, + 50.85802356356322 + ], + [ + 7.024187928867597, + 50.85736146975142 + ], + [ + 7.024273808441621, + 50.85729455231411 + ], + [ + 7.0245214001696255, + 50.8571021601306 + ], + [ + 7.024585021101192, + 50.85706950880355 + ], + [ + 7.024561401336565, + 50.85703510690531 + ], + [ + 7.024550838362601, + 50.85701973751955 + ], + [ + 7.024526919735215, + 50.85698470908161 + ], + [ + 7.024234059395413, + 50.85686124846427 + ], + [ + 7.024212986516297, + 50.8568523546788 + ], + [ + 7.024514452204942, + 50.85662982374634 + ], + [ + 7.024860359667401, + 50.856374538913045 + ], + [ + 7.025141837609944, + 50.85616692508097 + ], + [ + 7.025417272813253, + 50.85633044731956 + ], + [ + 7.025521413095826, + 50.85632000432909 + ], + [ + 7.025534448230455, + 50.85631863123098 + ], + [ + 7.025593545754052, + 50.856312897706026 + ], + [ + 7.0265273691572565, + 50.85562246973385 + ], + [ + 7.027159871568378, + 50.855154750659764 + ], + [ + 7.027291983458943, + 50.855046521804326 + ], + [ + 7.027319079174021, + 50.855025786960795 + ], + [ + 7.0273450618670905, + 50.85500614042877 + ], + [ + 7.027375930987478, + 50.85498258596107 + ], + [ + 7.0274650423801255, + 50.85491455974403 + ], + [ + 7.027526640602558, + 50.85486763094466 + ], + [ + 7.027560520244921, + 50.85481959852892 + ], + [ + 7.028371486171553, + 50.85409239149915 + ], + [ + 7.028965812075885, + 50.85356315110425 + ], + [ + 7.029088059562783, + 50.85345878280467 + ], + [ + 7.029448800688024, + 50.853137640547665 + ], + [ + 7.030683074063518, + 50.852038559803354 + ], + [ + 7.030727105927584, + 50.85203250733927 + ], + [ + 7.030779397483678, + 50.8520275503177 + ], + [ + 7.0308115874567445, + 50.85203832230844 + ], + [ + 7.030839053896393, + 50.852047428955466 + ], + [ + 7.03273456991748, + 50.85290758448711 + ], + [ + 7.032868263020003, + 50.85296815818803 + ], + [ + 7.034129397399946, + 50.85352961280651 + ], + [ + 7.034182921044081, + 50.85361229078655 + ], + [ + 7.0342677225261445, + 50.85361962947382 + ], + [ + 7.034309209545954, + 50.85362043011709 + ], + [ + 7.034310770188572, + 50.85354337687358 + ], + [ + 7.0343120645410515, + 50.8534029488474 + ], + [ + 7.034564373725794, + 50.85232943242807 + ], + [ + 7.034831479500009, + 50.85119358034235 + ], + [ + 7.034843820860033, + 50.85098109835167 + ], + [ + 7.034841901947403, + 50.850969425353156 + ], + [ + 7.0348135022769105, + 50.85077042681906 + ], + [ + 7.034495588462273, + 50.849071223521555 + ], + [ + 7.034493300235942, + 50.849054956551974 + ], + [ + 7.034490022170401, + 50.84903459151783 + ], + [ + 7.034487474136717, + 50.84901977356939 + ], + [ + 7.03448487183579, + 50.849011924004564 + ], + [ + 7.034479346790462, + 50.848982320452585 + ], + [ + 7.034474506454157, + 50.84898269398941 + ], + [ + 7.03446777188791, + 50.84898321368937 + ], + [ + 7.034454603477835, + 50.84898423027392 + ], + [ + 7.034395768754574, + 50.848989030114815 + ], + [ + 7.0343719478952735, + 50.848990861925145 + ], + [ + 7.0343669984257104, + 50.84899116166833 + ], + [ + 7.034358682451721, + 50.84899165201891 + ], + [ + 7.034239693374273, + 50.848374231704746 + ], + [ + 7.034143439134686, + 50.84787473073985 + ], + [ + 7.034142295030804, + 50.84786879533572 + ], + [ + 7.034141143883052, + 50.84786282473702 + ], + [ + 7.034148046138218, + 50.84783053816557 + ], + [ + 7.034150633062874, + 50.84781817300468 + ], + [ + 7.034151941444525, + 50.84781192277238 + ], + [ + 7.03415322144351, + 50.847805806968886 + ], + [ + 7.034209670404618, + 50.84753721652424 + ], + [ + 7.034411348795402, + 50.846573498178934 + ], + [ + 7.034354703002932, + 50.84655015816796 + ], + [ + 7.034212769133553, + 50.8465581904211 + ], + [ + 7.031549515465949, + 50.84670783065585 + ], + [ + 7.0315431403752235, + 50.84670818716731 + ], + [ + 7.031380511602745, + 50.84671729500033 + ], + [ + 7.029977044751966, + 50.84679611123572 + ], + [ + 7.029074835712231, + 50.84684677268165 + ], + [ + 7.028092830308102, + 50.84690187040614 + ], + [ + 7.027479535278154, + 50.8469363103775 + ], + [ + 7.027428114841407, + 50.846939198554246 + ], + [ + 7.027414155653306, + 50.84694065066128 + ], + [ + 7.027400194968933, + 50.84694210454008 + ], + [ + 7.027381636543409, + 50.84694390967883 + ], + [ + 7.027371413720301, + 50.846944887129 + ], + [ + 7.027365670365296, + 50.84694508411142 + ], + [ + 7.027358753319212, + 50.846945219875806 + ], + [ + 7.027275876521236, + 50.84694668299241 + ], + [ + 7.027265931787438, + 50.84694628818292 + ], + [ + 7.027258946762861, + 50.846945981195624 + ], + [ + 7.027236948059544, + 50.846947371081484 + ], + [ + 7.027236831722465, + 50.84694389930084 + ], + [ + 7.027236696968423, + 50.84694042630937 + ], + [ + 7.0272352626511765, + 50.84690694506719 + ], + [ + 7.027235116553671, + 50.84690219206416 + ], + [ + 7.02723480273684, + 50.84689794617416 + ], + [ + 7.027251509819238, + 50.84688779677019 + ], + [ + 7.027256830297876, + 50.84688371630876 + ], + [ + 7.027289276424809, + 50.846862723888634 + ], + [ + 7.027284553555763, + 50.846772331743644 + ], + [ + 7.027276333168951, + 50.84661742358687 + ], + [ + 7.027258560906628, + 50.84629761869801 + ], + [ + 7.027245938088688, + 50.84604540214861 + ], + [ + 7.027238731692611, + 50.84590538868668 + ], + [ + 7.0272353207230935, + 50.84584010246115 + ], + [ + 7.027215930886856, + 50.8454701260501 + ], + [ + 7.027201260541766, + 50.84519196814885 + ], + [ + 7.027196859122591, + 50.845107262805236 + ], + [ + 7.027196718979996, + 50.845104591070594 + ], + [ + 7.027196575998302, + 50.84510191928795 + ], + [ + 7.0271864758657765, + 50.8449141662535 + ], + [ + 7.027182593961453, + 50.84483630679041 + ], + [ + 7.02717047887987, + 50.844604528214155 + ], + [ + 7.027165748800982, + 50.84451431488573 + ], + [ + 7.027144387044854, + 50.84411022026384 + ], + [ + 7.027136943092845, + 50.84396870975982 + ], + [ + 7.027135338701793, + 50.84393909386527 + ], + [ + 7.027127914322208, + 50.84379866924156 + ], + [ + 7.027073949683431, + 50.84373352544779 + ], + [ + 7.026862279292376, + 50.843478293023 + ], + [ + 7.026630218657716, + 50.843198378895956 + ], + [ + 7.026538445696517, + 50.84308772780134 + ], + [ + 7.026160470889639, + 50.842631910967924 + ], + [ + 7.025786672219758, + 50.84218165064062 + ], + [ + 7.025676250200132, + 50.84204864206185 + ], + [ + 7.025273054895141, + 50.84156297924327 + ], + [ + 7.025195874153833, + 50.84146993841643 + ], + [ + 7.025189129441608, + 50.84146180714426 + ], + [ + 7.025183501173229, + 50.841455022259844 + ], + [ + 7.025099368454725, + 50.8413536208387 + ], + [ + 7.024778469876168, + 50.84096692519686 + ], + [ + 7.024708898107554, + 50.84088308493504 + ], + [ + 7.024581969803634, + 50.840730128963436 + ], + [ + 7.02451964987492, + 50.840654968108446 + ], + [ + 7.024413854628244, + 50.8405274293116 + ], + [ + 7.0243641411364806, + 50.840467475468316 + ], + [ + 7.024361233926769, + 50.840463969005896 + ], + [ + 7.0243583267174765, + 50.840460462543426 + ], + [ + 7.024325953986631, + 50.840421420706576 + ], + [ + 7.024095372312318, + 50.84014364972193 + ], + [ + 7.024052967029657, + 50.84009255253038 + ], + [ + 7.023960571729463, + 50.83998111347573 + ], + [ + 7.023484013879996, + 50.83940631549058 + ], + [ + 7.023421300665132, + 50.83933069496009 + ], + [ + 7.0234182057357, + 50.83932699552227 + ], + [ + 7.023415109463334, + 50.839323294262854 + ], + [ + 7.023374970108778, + 50.83927484341404 + ], + [ + 7.023372943954303, + 50.83927257411572 + ], + [ + 7.023348243368959, + 50.839243268298894 + ], + [ + 7.023275064683527, + 50.839218675816106 + ], + [ + 7.023265037719923, + 50.83921576278868 + ], + [ + 7.023260729112546, + 50.83921611248782 + ], + [ + 7.023255743768485, + 50.839217082086 + ], + [ + 7.023202895365689, + 50.83921936945279 + ], + [ + 7.023198618207941, + 50.839219613555414 + ], + [ + 7.023194342331451, + 50.8392198945543 + ], + [ + 7.0218095763228705, + 50.83930804800968 + ], + [ + 7.021676412510077, + 50.83931649782346 + ], + [ + 7.021667964401501, + 50.83931702639137 + ], + [ + 7.0216626450299655, + 50.83931736248752 + ], + [ + 7.0215287232877825, + 50.83932586493414 + ], + [ + 7.021498930793987, + 50.839327774487124 + ], + [ + 7.021492564228175, + 50.8393281863505 + ], + [ + 7.021488054783265, + 50.839328548766844 + ], + [ + 7.0214720960910055, + 50.8393297719728 + ], + [ + 7.021330749562599, + 50.83933848373256 + ], + [ + 7.017453782844994, + 50.83958441631765 + ], + [ + 7.017223552194588, + 50.83959864835239 + ], + [ + 7.017208765470927, + 50.8395995617216 + ], + [ + 7.017193980166116, + 50.83960047511306 + ], + [ + 7.017137437238201, + 50.839604019031 + ], + [ + 7.017133174070747, + 50.83960430002398 + ], + [ + 7.017128907950164, + 50.83960458366477 + ], + [ + 7.0170807371994925, + 50.839607784197426 + ], + [ + 7.017026370188508, + 50.83961106285561 + ], + [ + 7.017021471895723, + 50.8396076635635 + ], + [ + 7.017016083873975, + 50.839601945430076 + ], + [ + 7.017001118854399, + 50.83958552282323 + ], + [ + 7.016997086472499, + 50.83958109766294 + ], + [ + 7.016993274008376, + 50.83957691277877 + ], + [ + 7.016989414153139, + 50.839572673125865 + ], + [ + 7.016985554298607, + 50.839568433472806 + ], + [ + 7.017015001199421, + 50.83953357747676 + ], + [ + 7.016669560239339, + 50.83911794299173 + ], + [ + 7.016606821568098, + 50.83904241992498 + ], + [ + 7.016584960894017, + 50.83901615048606 + ], + [ + 7.016240361651328, + 50.838599299506974 + ], + [ + 7.015977931078722, + 50.838281745624016 + ], + [ + 7.015613763007326, + 50.83784132517272 + ], + [ + 7.015584997982639, + 50.837806378647436 + ], + [ + 7.015551489350366, + 50.83776616916791 + ], + [ + 7.015545471013283, + 50.83776229387023 + ], + [ + 7.015539265140557, + 50.837762805274814 + ], + [ + 7.015405788212469, + 50.837770909811105 + ], + [ + 7.014800019823281, + 50.8378087319793 + ], + [ + 7.01367290566608, + 50.837879253335814 + ], + [ + 7.013587044504065, + 50.83791439711206 + ], + [ + 7.013515812522426, + 50.83799302334275 + ], + [ + 7.013087614527204, + 50.83846467795216 + ], + [ + 7.0126372991513, + 50.83896124488335 + ], + [ + 7.012611441394175, + 50.83898975192983 + ], + [ + 7.012519529072525, + 50.83909111871508 + ], + [ + 7.012486153720503, + 50.83912786642135 + ], + [ + 7.012458317362292, + 50.83915847486093 + ], + [ + 7.01245529096604, + 50.83916180677989 + ], + [ + 7.012452267331692, + 50.839165140544594 + ], + [ + 7.012346332071136, + 50.83928208573726 + ], + [ + 7.0118734178619855, + 50.839804643618386 + ], + [ + 7.01187125925473, + 50.839807006385925 + ], + [ + 7.011869675679763, + 50.83980977558201 + ], + [ + 7.011873432993807, + 50.83982052699844 + ], + [ + 7.0118745389837, + 50.83982398059542 + ], + [ + 7.011875747604159, + 50.83982729204009 + ], + [ + 7.011876897645632, + 50.839830377640375 + ], + [ + 7.011878609847274, + 50.8398348407846 + ], + [ + 7.011883302624828, + 50.83984720994663 + ], + [ + 7.011886316326259, + 50.839855005005305 + ], + [ + 7.011888965314016, + 50.83986185668995 + ], + [ + 7.012018257274354, + 50.8398826908598 + ], + [ + 7.011929297358162, + 50.83993414401733 + ], + [ + 7.01183687115945, + 50.839939760283606 + ], + [ + 7.01167474814034, + 50.8398888476395 + ], + [ + 7.011671131069234, + 50.8398872606323 + ], + [ + 7.011667602191004, + 50.8398856706313 + ], + [ + 7.011656352349164, + 50.83988036318373 + ], + [ + 7.011457690920401, + 50.839786595059564 + ], + [ + 7.010817096579857, + 50.83948425311711 + ], + [ + 7.010069764677479, + 50.839131218809285 + ], + [ + 7.010014233689381, + 50.83907656028589 + ], + [ + 7.010011428412459, + 50.839073823271406 + ], + [ + 7.010008655781002, + 50.83907108681374 + ], + [ + 7.009983125472682, + 50.839045890337154 + ], + [ + 7.009979276275563, + 50.839042217241875 + ], + [ + 7.009649772693437, + 50.838882311670496 + ], + [ + 7.009590853027839, + 50.83885373033259 + ], + [ + 7.0095843693951325, + 50.83885014987916 + ], + [ + 7.009579001479774, + 50.83884715327607 + ], + [ + 7.009538497779889, + 50.83882452977455 + ], + [ + 7.009438461410504, + 50.83876831020719 + ], + [ + 7.008990843852199, + 50.838444768685356 + ], + [ + 7.008675460440179, + 50.83821643958427 + ], + [ + 7.008406106245906, + 50.83801773873446 + ], + [ + 7.0084050248776295, + 50.83801471452875 + ], + [ + 7.008380295551153, + 50.8380047642422 + ], + [ + 7.00837207065348, + 50.838001453485845 + ], + [ + 7.008337011523588, + 50.8379874243962 + ], + [ + 7.008332697285557, + 50.83798577141729 + ], + [ + 7.008318194910959, + 50.837980181463934 + ], + [ + 7.008307305943314, + 50.83797589165606 + ], + [ + 7.008283965587247, + 50.837966645897986 + ], + [ + 7.008278186900943, + 50.83796436082839 + ], + [ + 7.0082738415919295, + 50.83796267044198 + ], + [ + 7.008267442376684, + 50.83796018140912 + ], + [ + 7.008259657165606, + 50.83795715246437 + ], + [ + 7.008253122535981, + 50.83795460805495 + ], + [ + 7.008230417135177, + 50.83794576166157 + ], + [ + 7.008224283802878, + 50.837943332928006 + ], + [ + 7.008220571265346, + 50.83794185930296 + ], + [ + 7.008217170643363, + 50.837940498929775 + ], + [ + 7.008199466482249, + 50.837933416176085 + ], + [ + 7.008189865703589, + 50.837929562069554 + ], + [ + 7.008176173226491, + 50.837924065972345 + ], + [ + 7.008171795312497, + 50.8379223075715 + ], + [ + 7.008167327455674, + 50.837920660057826 + ], + [ + 7.008048291603215, + 50.83787708487858 + ], + [ + 7.007736160667668, + 50.83779270757473 + ], + [ + 7.007559259512531, + 50.837682274466886 + ], + [ + 7.007497608586452, + 50.83764378724227 + ], + [ + 7.007398261908206, + 50.83761877013106 + ], + [ + 7.007352739758109, + 50.83760730693775 + ], + [ + 7.0071512971384715, + 50.83751253318024 + ], + [ + 7.007036746544691, + 50.83747617469522 + ], + [ + 7.006284433053107, + 50.837237384664874 + ], + [ + 7.006021311560115, + 50.83726383513212 + ], + [ + 7.005951572386164, + 50.83727085440994 + ], + [ + 7.005947194613054, + 50.837271294923376 + ], + [ + 7.004413890839973, + 50.837425439736535 + ], + [ + 7.002737216603388, + 50.83759397416402 + ], + [ + 7.002365203127872, + 50.836590843067 + ], + [ + 7.002414572163849, + 50.83654620027734 + ], + [ + 7.002220184253678, + 50.836562366393515 + ], + [ + 7.002302115882988, + 50.8365962616436 + ], + [ + 7.002559218732674, + 50.83728933551036 + ], + [ + 6.999027263035434, + 50.83763611922339 + ], + [ + 6.9990281737319, + 50.83762751423253 + ], + [ + 6.999029158412389, + 50.83761824226711 + ], + [ + 6.998933673862446, + 50.83769235780275 + ], + [ + 6.998872217590232, + 50.8376352430362 + ], + [ + 6.998795478453202, + 50.83758828993362 + ], + [ + 6.996880038850129, + 50.83684555642207 + ], + [ + 6.996729713407297, + 50.83678726336531 + ], + [ + 6.995330724406254, + 50.8362485900939 + ], + [ + 6.995208035442117, + 50.83624648157644 + ], + [ + 6.992696541385387, + 50.837115950696834 + ], + [ + 6.992579979535066, + 50.83715486514931 + ], + [ + 6.99239676633541, + 50.83721997196085 + ], + [ + 6.990443741067545, + 50.83795024994502 + ], + [ + 6.990104326905735, + 50.83807719228926 + ], + [ + 6.98998126159801, + 50.83812316291983 + ], + [ + 6.989833493302003, + 50.83817851554752 + ], + [ + 6.98951157771311, + 50.83829891068836 + ], + [ + 6.989254576852114, + 50.83839502433369 + ], + [ + 6.988680476867542, + 50.838609722804236 + ], + [ + 6.9878236773813915, + 50.83892964264532 + ], + [ + 6.987689283687253, + 50.838979851243806 + ], + [ + 6.987647948111263, + 50.83899535591772 + ], + [ + 6.987565566139663, + 50.83902640978385 + ], + [ + 6.987557618370669, + 50.83902939714154 + ], + [ + 6.98754900933163, + 50.83903263391282 + ], + [ + 6.987532452519218, + 50.83903885803938 + ], + [ + 6.987494119780039, + 50.83905326774562 + ], + [ + 6.9874830564472115, + 50.83905742541332 + ], + [ + 6.987472626873554, + 50.83906134578305 + ], + [ + 6.987427491296983, + 50.83907831018031 + ], + [ + 6.9874226027862685, + 50.83908014782941 + ], + [ + 6.987417714313836, + 50.83908198457955 + ], + [ + 6.987255231098158, + 50.839143061912786 + ], + [ + 6.987176000515244, + 50.83917292602879 + ], + [ + 6.987159005197245, + 50.83918659755407 + ], + [ + 6.987147261265339, + 50.83919623780068 + ], + [ + 6.987144183880939, + 50.83919876504069 + ], + [ + 6.987141402574421, + 50.83920104646059 + ], + [ + 6.9871386811388305, + 50.8392033558951 + ], + [ + 6.9871122458456485, + 50.839225773850266 + ], + [ + 6.98710982033217, + 50.83922902914906 + ], + [ + 6.987108594146521, + 50.83923190941261 + ], + [ + 6.987087255885587, + 50.8392823637606 + ], + [ + 6.987075137477843, + 50.83931123182546 + ], + [ + 6.987019030295878, + 50.839447697143854 + ], + [ + 6.986991656566013, + 50.83951399165395 + ], + [ + 6.986953189999825, + 50.83960723372855 + ], + [ + 6.986944939578107, + 50.839610220319116 + ], + [ + 6.98693767178635, + 50.83961285062077 + ], + [ + 6.9869333676159435, + 50.83961440963038 + ], + [ + 6.986929238087887, + 50.83961590419963 + ], + [ + 6.986891303669798, + 50.83970106815055 + ], + [ + 6.986807596972288, + 50.8398892385917 + ], + [ + 6.986729328535938, + 50.84006569118182 + ], + [ + 6.986715709921345, + 50.84009643551987 + ], + [ + 6.986678403151218, + 50.8401834656672 + ], + [ + 6.986674175676597, + 50.840184825427905 + ], + [ + 6.986669948201747, + 50.84018618518847 + ], + [ + 6.986661493135238, + 50.84018890740526 + ], + [ + 6.9866032941741825, + 50.84020768133615 + ], + [ + 6.986519612979343, + 50.840234665708486 + ], + [ + 6.986509099940596, + 50.84023804222244 + ], + [ + 6.986503854259391, + 50.8402397261692 + ], + [ + 6.9865001812024055, + 50.840240910219556 + ], + [ + 6.986433489420763, + 50.84026242180819 + ], + [ + 6.9864988291741525, + 50.84037993657615 + ], + [ + 6.986521667424572, + 50.84042386918989 + ], + [ + 6.986605940806771, + 50.84048436399508 + ], + [ + 6.986562424748687, + 50.84050926792113 + ], + [ + 6.986488388519718, + 50.84055075047305 + ], + [ + 6.9864571388681975, + 50.84056820600905 + ], + [ + 6.986191084356475, + 50.84071734643534 + ], + [ + 6.985345835587736, + 50.84118873264273 + ], + [ + 6.985169078131524, + 50.84128742656774 + ], + [ + 6.985158958260685, + 50.84129307710621 + ], + [ + 6.985148836967998, + 50.84129872761928 + ], + [ + 6.985101639850988, + 50.84132506130785 + ], + [ + 6.985068154174899, + 50.841343849418685 + ], + [ + 6.985063547013405, + 50.84134640234539 + ], + [ + 6.985051710198386, + 50.841352933397665 + ], + [ + 6.985037987679108, + 50.84136050394606 + ], + [ + 6.985033806815238, + 50.84136282229998 + ], + [ + 6.985028622426569, + 50.84136571691508 + ], + [ + 6.985024047752127, + 50.841368273998945 + ], + [ + 6.985010509010443, + 50.84137586480687 + ], + [ + 6.985003415844132, + 50.84137983989094 + ], + [ + 6.984996324057284, + 50.84138381589777 + ], + [ + 6.985017431576908, + 50.84141521293591 + ], + [ + 6.98502279155979, + 50.84142314457507 + ], + [ + 6.9850271807800315, + 50.84142963931412 + ], + [ + 6.9850519552639785, + 50.841465932090514 + ], + [ + 6.985056344286398, + 50.84147236566667 + ], + [ + 6.985061112762287, + 50.84147935532221 + ], + [ + 6.985305567857397, + 50.84183840893914 + ], + [ + 6.9853459126719795, + 50.84186754432103 + ], + [ + 6.985418963791648, + 50.84192049096811 + ], + [ + 6.985426150909197, + 50.84192564625616 + ], + [ + 6.985434655232997, + 50.84193174796142 + ], + [ + 6.985456829272098, + 50.841947764033925 + ], + [ + 6.985463632380943, + 50.841952732810675 + ], + [ + 6.985470446536859, + 50.84195770897289 + ], + [ + 6.98550961394195, + 50.84198611974373 + ], + [ + 6.985571168992791, + 50.8420306689588 + ], + [ + 6.985781589930945, + 50.84218330557159 + ], + [ + 6.985838648748173, + 50.84222477575366 + ], + [ + 6.985905196969476, + 50.84227306250878 + ], + [ + 6.986108533761523, + 50.84242060709152 + ], + [ + 6.986120227319948, + 50.84242908242169 + ], + [ + 6.986123646248408, + 50.842431560794395 + ], + [ + 6.986142262091029, + 50.84244504469058 + ], + [ + 6.986180883935409, + 50.84247275058507 + ], + [ + 6.986208854181561, + 50.84249249199746 + ], + [ + 6.9862122145091865, + 50.842494945971836 + ], + [ + 6.986217249427149, + 50.84249865741612 + ], + [ + 6.986220948785211, + 50.84250138615941 + ], + [ + 6.986224103604032, + 50.842503730458205 + ], + [ + 6.9862272497517415, + 50.84250607820473 + ], + [ + 6.98612763575226, + 50.84256107747073 + ], + [ + 6.986082434013056, + 50.8425860843315 + ], + [ + 6.986075505467455, + 50.842589895936094 + ], + [ + 6.986068582443678, + 50.84259371123313 + ], + [ + 6.986038906963431, + 50.842610135259044 + ], + [ + 6.986032033007458, + 50.84261393251394 + ], + [ + 6.986026686929126, + 50.842616885540146 + ], + [ + 6.986021773029099, + 50.84261959959548 + ], + [ + 6.986018332940054, + 50.84262150446449 + ], + [ + 6.985981363437499, + 50.842642078231975 + ], + [ + 6.985971527846515, + 50.842647686980875 + ], + [ + 6.98596044947709, + 50.84265467731548 + ], + [ + 6.985946856754461, + 50.84266328540551 + ], + [ + 6.985750522977833, + 50.84278906182462 + ], + [ + 6.9854509352633976, + 50.84298096572102 + ], + [ + 6.983946422107591, + 50.84394476535949 + ], + [ + 6.984235503811183, + 50.84410242549304 + ], + [ + 6.985021590871137, + 50.844569350780276 + ], + [ + 6.985912748132012, + 50.844995923305504 + ], + [ + 6.986472231569821, + 50.84524065042576 + ], + [ + 6.986667608463293, + 50.8453214308711 + ], + [ + 6.987299554182916, + 50.845581363001656 + ], + [ + 6.988010424163489, + 50.845873704181756 + ], + [ + 6.988402182274763, + 50.84603516170474 + ], + [ + 6.988521644262446, + 50.84608431163363 + ], + [ + 6.9887200269569165, + 50.8461660514937 + ], + [ + 6.989115226940243, + 50.846328915903676 + ], + [ + 6.98927351143676, + 50.846394186588675 + ], + [ + 6.989429641534545, + 50.84645839462555 + ], + [ + 6.990139981890123, + 50.8467511766839 + ], + [ + 6.99077126736004, + 50.847011724100675 + ], + [ + 6.990849762802447, + 50.847043958205795 + ], + [ + 6.992280312043809, + 50.84764415930145 + ], + [ + 6.99371438305286, + 50.84824116805672 + ], + [ + 6.993832430604279, + 50.84829023237586 + ], + [ + 6.994005062419042, + 50.848361933732704 + ], + [ + 6.994240153627327, + 50.84845935546325 + ], + [ + 6.996312126413415, + 50.849315810184144 + ], + [ + 6.997234518144501, + 50.84969294685118 + ], + [ + 6.998497713075231, + 50.850209192519856 + ], + [ + 7.0014021372797615, + 50.85139031790555 + ], + [ + 7.002125449793656, + 50.85169828757943 + ], + [ + 7.0028355407617076, + 50.852018411766764 + ], + [ + 7.003990017253618, + 50.85256447777004 + ], + [ + 7.005437113780009, + 50.8533042510153 + ], + [ + 7.006348817872675, + 50.85380465297996 + ], + [ + 7.006889596744204, + 50.85411389816381 + ], + [ + 7.007317571521189, + 50.854368110075804 + ], + [ + 7.008035152118779, + 50.85480805844078 + ], + [ + 7.008163788105567, + 50.85489103003588 + ], + [ + 7.00890130569482, + 50.85536672559999 + ], + [ + 7.009308104300076, + 50.85564309275083 + ], + [ + 7.009605547659622, + 50.855845164708924 + ], + [ + 7.009782381817794, + 50.855968748104594 + ], + [ + 7.009823575558211, + 50.855997536719855 + ], + [ + 7.010039219169023, + 50.856151276975034 + ], + [ + 7.0101296724273485, + 50.85621629635362 + ], + [ + 7.010805852420997, + 50.856713325271556 + ], + [ + 7.010946649417074, + 50.85681681629558 + ], + [ + 7.01172699691799, + 50.85743670655238 + ], + [ + 7.012006559157246, + 50.85766881620619 + ], + [ + 7.01228739378271, + 50.85790037393746 + ], + [ + 7.012292093437729, + 50.857904236804835 + ], + [ + 7.012296794628096, + 50.85790809700003 + ], + [ + 7.012331058434835, + 50.8579362243092 + ], + [ + 7.013322545262167, + 50.85874817304551 + ], + [ + 7.014282202491866, + 50.85951859012495 + ], + [ + 7.014293620919417, + 50.85952770542525 + ], + [ + 7.01430503938959, + 50.859536819825735 + ], + [ + 7.01432787630507, + 50.859555049522186 + ], + [ + 7.014430206336463, + 50.859636683097634 + ], + [ + 7.017229402570007, + 50.86191477681513 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Langel", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "715", + "Population_rel": 0.003217712584096173, + "Population_abs": 3501 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.040848709773109, + 50.943539582142165 + ], + [ + 7.041381130601666, + 50.9428150858372 + ], + [ + 7.04167888361118, + 50.942409903998374 + ], + [ + 7.0414275820743555, + 50.94236988177153 + ], + [ + 7.041337149075176, + 50.94235689134746 + ], + [ + 7.04123485446761, + 50.9423407375224 + ], + [ + 7.041150198496452, + 50.94232946813808 + ], + [ + 7.0404945042895335, + 50.942183862402956 + ], + [ + 7.040386912738849, + 50.94216376423583 + ], + [ + 7.04000056103554, + 50.942095221214316 + ], + [ + 7.039890733018508, + 50.94207598170787 + ], + [ + 7.039729351745692, + 50.9420478918828 + ], + [ + 7.039458768199183, + 50.942009183865245 + ], + [ + 7.03803340437707, + 50.941812539847255 + ], + [ + 7.037074227466308, + 50.94167682183612 + ], + [ + 7.036989078738809, + 50.94166256782521 + ], + [ + 7.03697477338867, + 50.94162642273847 + ], + [ + 7.036941513938096, + 50.94154239858778 + ], + [ + 7.036810484159919, + 50.94124993067797 + ], + [ + 7.036671112175475, + 50.940938559698054 + ], + [ + 7.036491159337245, + 50.94053659801834 + ], + [ + 7.036326356559945, + 50.94052593139509 + ], + [ + 7.036245275150411, + 50.9404735832745 + ], + [ + 7.036207408985004, + 50.940449137349304 + ], + [ + 7.036167719800566, + 50.94042356711362 + ], + [ + 7.0361333660856635, + 50.940401435864246 + ], + [ + 7.036077069057781, + 50.940365166139834 + ], + [ + 7.035927179960009, + 50.94023566096823 + ], + [ + 7.035764307239976, + 50.94009493517604 + ], + [ + 7.035561492375319, + 50.93995825152249 + ], + [ + 7.035215852753269, + 50.93974465119238 + ], + [ + 7.0350202631016865, + 50.93963316255079 + ], + [ + 7.0349135939925, + 50.939570552695265 + ], + [ + 7.034750333614891, + 50.939474959991074 + ], + [ + 7.034593324718564, + 50.939382494177444 + ], + [ + 7.034469388782292, + 50.93931688700883 + ], + [ + 7.034020476162265, + 50.939090770703075 + ], + [ + 7.033620509130822, + 50.938847723563676 + ], + [ + 7.033354769715142, + 50.93868725352121 + ], + [ + 7.03330633974056, + 50.93865820377716 + ], + [ + 7.0332335548300735, + 50.93862558781451 + ], + [ + 7.033154444330696, + 50.93858997106492 + ], + [ + 7.033089738661461, + 50.93855975573972 + ], + [ + 7.032511915546083, + 50.93828992775257 + ], + [ + 7.032216263566829, + 50.93815186772862 + ], + [ + 7.032123689717052, + 50.93810872315372 + ], + [ + 7.031928283676189, + 50.93803461276391 + ], + [ + 7.0318299952922825, + 50.93799733532474 + ], + [ + 7.031785621729308, + 50.938030179509504 + ], + [ + 7.031600605154294, + 50.9379372472694 + ], + [ + 7.031467987767891, + 50.93785286005119 + ], + [ + 7.0313703200290405, + 50.937819979804715 + ], + [ + 7.031252552632499, + 50.93781887785578 + ], + [ + 7.030795599591851, + 50.93763809439016 + ], + [ + 7.0306134299681355, + 50.93756599029323 + ], + [ + 7.030569796593978, + 50.93754866713421 + ], + [ + 7.030431537686192, + 50.93750485119283 + ], + [ + 7.030224843476485, + 50.937439301018905 + ], + [ + 7.029779211595069, + 50.9372978315812 + ], + [ + 7.029442653036312, + 50.937184119652 + ], + [ + 7.029193321546996, + 50.93709992617913 + ], + [ + 7.028570532930632, + 50.93687907054208 + ], + [ + 7.028533503724171, + 50.93686582345776 + ], + [ + 7.02844203550966, + 50.93682114317944 + ], + [ + 7.02832913502923, + 50.93676517980823 + ], + [ + 7.028263305262172, + 50.936728291946075 + ], + [ + 7.028191122143671, + 50.93668779458954 + ], + [ + 7.028007922320563, + 50.93656059160838 + ], + [ + 7.027706553150003, + 50.93661646318317 + ], + [ + 7.027626121519724, + 50.93663131448767 + ], + [ + 7.027472475583222, + 50.93665295372474 + ], + [ + 7.027240917730843, + 50.93666820730606 + ], + [ + 7.027189775260169, + 50.93667153409679 + ], + [ + 7.027125976815227, + 50.93667515152572 + ], + [ + 7.026689043291293, + 50.93670004038677 + ], + [ + 7.026626543623944, + 50.93670390883641 + ], + [ + 7.0264953303796505, + 50.9367148610579 + ], + [ + 7.026271399211073, + 50.93673409095077 + ], + [ + 7.025945539201271, + 50.93676976768622 + ], + [ + 7.025752416229816, + 50.936792590696754 + ], + [ + 7.025512040596182, + 50.93682095202992 + ], + [ + 7.025128001150538, + 50.936866666906035 + ], + [ + 7.024690809971937, + 50.9369667824839 + ], + [ + 7.024263416885635, + 50.93712766986501 + ], + [ + 7.0240173295601505, + 50.93720695808742 + ], + [ + 7.023980970858801, + 50.937175335093485 + ], + [ + 7.0239198674929, + 50.937122414365355 + ], + [ + 7.023685625472845, + 50.93722290357723 + ], + [ + 7.023644948255259, + 50.93718460599552 + ], + [ + 7.023618777365988, + 50.937158946404104 + ], + [ + 7.023573560521766, + 50.9371147557181 + ], + [ + 7.023413783652705, + 50.93695884292676 + ], + [ + 7.023368267443507, + 50.93695924232606 + ], + [ + 7.023314472852121, + 50.93698434481698 + ], + [ + 7.023213644695808, + 50.937031524514225 + ], + [ + 7.023035633383277, + 50.93710835335068 + ], + [ + 7.022875204237839, + 50.93695876662212 + ], + [ + 7.022616159376488, + 50.93671703540151 + ], + [ + 7.022488693273992, + 50.93659804810796 + ], + [ + 7.022342505204264, + 50.93663436953068 + ], + [ + 7.021978000534618, + 50.936724400353086 + ], + [ + 7.021479191492776, + 50.93684086085828 + ], + [ + 7.0214327752187256, + 50.93685797162507 + ], + [ + 7.021062148834159, + 50.936767058666675 + ], + [ + 7.020976829088624, + 50.93675500872609 + ], + [ + 7.021066218179083, + 50.9366142617649 + ], + [ + 7.021116948016407, + 50.93650765422696 + ], + [ + 7.021176852612137, + 50.936383007937074 + ], + [ + 7.021311787922527, + 50.93610223648651 + ], + [ + 7.021333315399425, + 50.93605242642895 + ], + [ + 7.0214805344460895, + 50.9356618538602 + ], + [ + 7.021403756244861, + 50.93565088432987 + ], + [ + 7.021355304840311, + 50.93564344104651 + ], + [ + 7.020840203462981, + 50.9355643046569 + ], + [ + 7.020782887254866, + 50.935584493278334 + ], + [ + 7.020721607026041, + 50.93563806582895 + ], + [ + 7.020508983726889, + 50.93566356870642 + ], + [ + 7.020217023355395, + 50.935697664656 + ], + [ + 7.0200451909860595, + 50.935718233812096 + ], + [ + 7.0199477110120325, + 50.93572987311855 + ], + [ + 7.019810118022902, + 50.93574528200268 + ], + [ + 7.0194768296183305, + 50.935782440719606 + ], + [ + 7.019206194001172, + 50.93581267249307 + ], + [ + 7.019133680842677, + 50.93582707761554 + ], + [ + 7.019007319970408, + 50.9358522373531 + ], + [ + 7.018886056410477, + 50.9358627517767 + ], + [ + 7.018801285464691, + 50.93587005499659 + ], + [ + 7.018634188693699, + 50.93583393780271 + ], + [ + 7.018540921525635, + 50.93581376206887 + ], + [ + 7.018411248027083, + 50.93581974432414 + ], + [ + 7.018125263794575, + 50.93584485195798 + ], + [ + 7.017857542434544, + 50.935881195439165 + ], + [ + 7.017565587476844, + 50.935912239595844 + ], + [ + 7.017488045563668, + 50.93590263864768 + ], + [ + 7.016976322312054, + 50.935851672157966 + ], + [ + 7.016970137751443, + 50.935895668625314 + ], + [ + 7.016961733143885, + 50.935956918674165 + ], + [ + 7.016937197157333, + 50.93637911329421 + ], + [ + 7.0168667129783495, + 50.93681449095051 + ], + [ + 7.016850262491314, + 50.936990997999764 + ], + [ + 7.016835538482516, + 50.937122076604474 + ], + [ + 7.016805561692092, + 50.93738805703522 + ], + [ + 7.016781695958036, + 50.93759457688206 + ], + [ + 7.016773941225133, + 50.93766231610842 + ], + [ + 7.01673510443391, + 50.93791461585992 + ], + [ + 7.01671315992425, + 50.93799532845466 + ], + [ + 7.016719140111723, + 50.93808512693101 + ], + [ + 7.0167230715249795, + 50.938151489888845 + ], + [ + 7.0167108809066745, + 50.938184919222834 + ], + [ + 7.016553825323684, + 50.93861981870464 + ], + [ + 7.0164942731608315, + 50.93913869490492 + ], + [ + 7.016515669696084, + 50.93919740237702 + ], + [ + 7.016483403802391, + 50.93923953015811 + ], + [ + 7.016484104049805, + 50.93961266905886 + ], + [ + 7.016522732183676, + 50.939672667603425 + ], + [ + 7.016621169888412, + 50.93970342569359 + ], + [ + 7.016617899556158, + 50.9397698992199 + ], + [ + 7.016613356027761, + 50.939939836208005 + ], + [ + 7.016606109216314, + 50.94002783244491 + ], + [ + 7.016880130167418, + 50.940064343356795 + ], + [ + 7.016844573764477, + 50.94018398867994 + ], + [ + 7.016765774868781, + 50.9401902479163 + ], + [ + 7.017016316871688, + 50.94052639387494 + ], + [ + 7.01725891285474, + 50.94079414034599 + ], + [ + 7.0174480208360865, + 50.94100347134926 + ], + [ + 7.017646843896852, + 50.9412015710871 + ], + [ + 7.0178103675732135, + 50.941353412824924 + ], + [ + 7.018038780128812, + 50.94166292361424 + ], + [ + 7.018177625296249, + 50.94195130720443 + ], + [ + 7.018201466925648, + 50.94199651492499 + ], + [ + 7.018283726021378, + 50.94199916863261 + ], + [ + 7.0184376594675175, + 50.94256950216846 + ], + [ + 7.018509870329568, + 50.94256252648702 + ], + [ + 7.018513304424257, + 50.94263850683083 + ], + [ + 7.018503322827753, + 50.94281780205145 + ], + [ + 7.018421525866405, + 50.94336726562705 + ], + [ + 7.018317835542836, + 50.94403949550294 + ], + [ + 7.01828720863655, + 50.94422017870635 + ], + [ + 7.018244035273422, + 50.944400897146295 + ], + [ + 7.018018523694165, + 50.945344752856556 + ], + [ + 7.017928953223506, + 50.945719311403316 + ], + [ + 7.017851137013296, + 50.94604576433419 + ], + [ + 7.017795336992505, + 50.94627934445088 + ], + [ + 7.017784123111053, + 50.94632618744587 + ], + [ + 7.0177614381194955, + 50.946421132677756 + ], + [ + 7.017745143600068, + 50.94648941399821 + ], + [ + 7.017613235456121, + 50.9470301051945 + ], + [ + 7.0174611060063485, + 50.9472380065697 + ], + [ + 7.017310890808723, + 50.94741631594977 + ], + [ + 7.016976298629622, + 50.94779229018807 + ], + [ + 7.016914307070017, + 50.94786158223229 + ], + [ + 7.016785565356017, + 50.94798100258185 + ], + [ + 7.016612458122432, + 50.94813542079305 + ], + [ + 7.016560931187575, + 50.94818137193904 + ], + [ + 7.016494297478803, + 50.948235575331644 + ], + [ + 7.01643905376228, + 50.94829956577132 + ], + [ + 7.016657179569083, + 50.94832220057316 + ], + [ + 7.0172353704201385, + 50.948398915752676 + ], + [ + 7.018180551547319, + 50.94862859124029 + ], + [ + 7.018225098985124, + 50.94863942125948 + ], + [ + 7.0189218908696835, + 50.94880881642939 + ], + [ + 7.019279694192411, + 50.948882806775984 + ], + [ + 7.019497939597578, + 50.94892807537095 + ], + [ + 7.0195784403627695, + 50.94894816669415 + ], + [ + 7.02001548318355, + 50.94905724229258 + ], + [ + 7.021842804770389, + 50.94951243036418 + ], + [ + 7.021924066724932, + 50.949532681348735 + ], + [ + 7.022633194421292, + 50.94971097445979 + ], + [ + 7.022925557444654, + 50.94979046631567 + ], + [ + 7.023181728360521, + 50.94987021971211 + ], + [ + 7.023585705836699, + 50.949998281401136 + ], + [ + 7.025198572266472, + 50.95042545342659 + ], + [ + 7.0256777306435145, + 50.950552353853 + ], + [ + 7.026325578446396, + 50.950735883596195 + ], + [ + 7.02685607719283, + 50.950868611550916 + ], + [ + 7.026930732892464, + 50.95088671300027 + ], + [ + 7.027314159623655, + 50.950983171228515 + ], + [ + 7.027349322681673, + 50.95099195499656 + ], + [ + 7.027479947385733, + 50.95101491489359 + ], + [ + 7.0276374944759, + 50.95104137832309 + ], + [ + 7.027930492138984, + 50.95113966951536 + ], + [ + 7.028043552086436, + 50.951165422309344 + ], + [ + 7.028619374508683, + 50.95129626356543 + ], + [ + 7.02916799804563, + 50.95139705815318 + ], + [ + 7.030244740152573, + 50.951568523660335 + ], + [ + 7.030991619069913, + 50.95168707205314 + ], + [ + 7.031064654882517, + 50.95169546273667 + ], + [ + 7.0316701719793215, + 50.951764629898335 + ], + [ + 7.03212291188898, + 50.95181668604267 + ], + [ + 7.032186863524447, + 50.951826978856495 + ], + [ + 7.034563783919625, + 50.952212125367375 + ], + [ + 7.0346747218063665, + 50.95222960047669 + ], + [ + 7.035345239201646, + 50.95233960811636 + ], + [ + 7.035401500753315, + 50.9523487516712 + ], + [ + 7.036030902783175, + 50.9524509189268 + ], + [ + 7.036145639149426, + 50.95246954206211 + ], + [ + 7.036405750164085, + 50.95251172276996 + ], + [ + 7.036460480017577, + 50.95238551785416 + ], + [ + 7.0364717013143085, + 50.95235910153013 + ], + [ + 7.036495370202058, + 50.95230848845194 + ], + [ + 7.036530057426946, + 50.95223424455965 + ], + [ + 7.0365972638419345, + 50.952091480723 + ], + [ + 7.0366422566624935, + 50.95199621744445 + ], + [ + 7.036946641242787, + 50.9513327416587 + ], + [ + 7.038091911655901, + 50.948836183265485 + ], + [ + 7.03834177958157, + 50.948291463593385 + ], + [ + 7.0384565965674435, + 50.948041151968155 + ], + [ + 7.038532945608764, + 50.947849306592005 + ], + [ + 7.0393236273978985, + 50.94586244214141 + ], + [ + 7.0395386012532954, + 50.94532221612538 + ], + [ + 7.040848709773109, + 50.943539582142165 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Hoehenberg", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "804", + "Population_rel": 0.011558398588287196, + "Population_abs": 12576 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.038738441966381, + 50.90215456182204 + ], + [ + 7.041180338904137, + 50.90083452905426 + ], + [ + 7.041184413851092, + 50.90083225458278 + ], + [ + 7.04118435451, + 50.900832211316306 + ], + [ + 7.040808334255879, + 50.90055713380702 + ], + [ + 7.040808284600113, + 50.90055709699853 + ], + [ + 7.0408104461269625, + 50.900555714974004 + ], + [ + 7.040876655193294, + 50.900521451399634 + ], + [ + 7.041196119435926, + 50.90035073633752 + ], + [ + 7.04119948163549, + 50.90034894006094 + ], + [ + 7.041199922540081, + 50.90034826213916 + ], + [ + 7.041226009013141, + 50.90030825068846 + ], + [ + 7.041180744765717, + 50.90019060042685 + ], + [ + 7.041180133075465, + 50.900189010861965 + ], + [ + 7.041184549090025, + 50.90018813074633 + ], + [ + 7.041438984529862, + 50.900137438468924 + ], + [ + 7.0417866242538345, + 50.90007050916025 + ], + [ + 7.04212928118099, + 50.89999058833473 + ], + [ + 7.042463918735256, + 50.8998953667802 + ], + [ + 7.04279061242721, + 50.89978825985073 + ], + [ + 7.043063362526972, + 50.89968451052503 + ], + [ + 7.043182932695059, + 50.899666271441745 + ], + [ + 7.043305694161954, + 50.89968270258549 + ], + [ + 7.0435927560004705, + 50.89978675003518 + ], + [ + 7.044120460442305, + 50.899832458455364 + ], + [ + 7.044564046793507, + 50.899765471279764 + ], + [ + 7.045140055126632, + 50.89972102820204 + ], + [ + 7.046062059885781, + 50.89944550433493 + ], + [ + 7.046373600307494, + 50.89928884633469 + ], + [ + 7.0463776071106174, + 50.89928683136068 + ], + [ + 7.046529209573092, + 50.89921220290281 + ], + [ + 7.0466399591931514, + 50.89915859593356 + ], + [ + 7.046766781044229, + 50.89909614990974 + ], + [ + 7.048111220163663, + 50.8985186423663 + ], + [ + 7.048874184627723, + 50.89816011799854 + ], + [ + 7.051822282376063, + 50.89665380383272 + ], + [ + 7.051826520457801, + 50.89665165403081 + ], + [ + 7.051826368709019, + 50.896651541774276 + ], + [ + 7.051622174985642, + 50.89650092734445 + ], + [ + 7.05162200947669, + 50.896500804065425 + ], + [ + 7.051624067990037, + 50.89649969712928 + ], + [ + 7.0516259799568015, + 50.89649845553887 + ], + [ + 7.052081145020656, + 50.89627815367366 + ], + [ + 7.053318173763737, + 50.895677552479405 + ], + [ + 7.0537206206619745, + 50.8955915746617 + ], + [ + 7.053719909974302, + 50.895590065355364 + ], + [ + 7.053429777432282, + 50.89497357078105 + ], + [ + 7.053402195651487, + 50.89488509368582 + ], + [ + 7.053290892640361, + 50.89489733566135 + ], + [ + 7.053280540313799, + 50.89489841759886 + ], + [ + 7.052984200731233, + 50.89493084829318 + ], + [ + 7.052505951925845, + 50.89495835766538 + ], + [ + 7.052022442522767, + 50.89489116242634 + ], + [ + 7.051829880303385, + 50.89484237867732 + ], + [ + 7.05156098054776, + 50.89477423554607 + ], + [ + 7.051471993272824, + 50.89474298867918 + ], + [ + 7.051275439072659, + 50.894673970731475 + ], + [ + 7.051163805666255, + 50.89474095894234 + ], + [ + 7.051042601398376, + 50.89461026618117 + ], + [ + 7.050733868817583, + 50.89418694761584 + ], + [ + 7.050585305167632, + 50.8939835957535 + ], + [ + 7.050368996295406, + 50.89368781305601 + ], + [ + 7.050328580881768, + 50.89364143175683 + ], + [ + 7.04834261982019, + 50.89451904734833 + ], + [ + 7.048299701907257, + 50.89448779051356 + ], + [ + 7.047925310419915, + 50.894354874538664 + ], + [ + 7.048484630066835, + 50.89374153299753 + ], + [ + 7.047462873643188, + 50.89337054826188 + ], + [ + 7.047922341216473, + 50.89290607210603 + ], + [ + 7.048191522531796, + 50.892658421775685 + ], + [ + 7.04839834338903, + 50.89250104490663 + ], + [ + 7.048559801432772, + 50.89233005260252 + ], + [ + 7.0485886782044105, + 50.892305791924144 + ], + [ + 7.04862911381122, + 50.89227099859618 + ], + [ + 7.049139878647889, + 50.89185118298774 + ], + [ + 7.049454335848483, + 50.89161390992659 + ], + [ + 7.049235600277817, + 50.891493890173216 + ], + [ + 7.04911428785854, + 50.89142729086534 + ], + [ + 7.048921445846358, + 50.89157393484636 + ], + [ + 7.048710423987573, + 50.891721191896785 + ], + [ + 7.048709587333861, + 50.89172191899074 + ], + [ + 7.048632672729932, + 50.891777805146624 + ], + [ + 7.048593700564686, + 50.891801888031985 + ], + [ + 7.048405855407623, + 50.891918011763046 + ], + [ + 7.048335479917304, + 50.89196134480819 + ], + [ + 7.048181554395081, + 50.89205639742722 + ], + [ + 7.047418601231955, + 50.89250625127328 + ], + [ + 7.047222229298243, + 50.89235216493923 + ], + [ + 7.047220884136457, + 50.89235110995013 + ], + [ + 7.045936969944672, + 50.89134363598891 + ], + [ + 7.045574504668071, + 50.89154501291148 + ], + [ + 7.04456138244366, + 50.89206460022149 + ], + [ + 7.04346952924191, + 50.89251575484339 + ], + [ + 7.043000602327923, + 50.89269236623043 + ], + [ + 7.041604843909168, + 50.89316293994455 + ], + [ + 7.0401275102265215, + 50.893520418646496 + ], + [ + 7.039231555125096, + 50.893702079603706 + ], + [ + 7.0372663722290305, + 50.89404040439401 + ], + [ + 7.035435152542343, + 50.89424212586862 + ], + [ + 7.035266217024488, + 50.89425791869988 + ], + [ + 7.035063217615211, + 50.89427590152555 + ], + [ + 7.034906724107759, + 50.89428870605152 + ], + [ + 7.0332131451544955, + 50.89439738926389 + ], + [ + 7.031583685863577, + 50.894410642772684 + ], + [ + 7.028023967135323, + 50.894377524863394 + ], + [ + 7.026785547025254, + 50.894365779042666 + ], + [ + 7.023976747775647, + 50.89433904959066 + ], + [ + 7.023976571095474, + 50.894343995861135 + ], + [ + 7.023976307323924, + 50.89435136897011 + ], + [ + 7.023891915979841, + 50.896239722332034 + ], + [ + 7.023879533075033, + 50.896390251501764 + ], + [ + 7.024817155436631, + 50.89642072396232 + ], + [ + 7.0248120107234335, + 50.89653601319477 + ], + [ + 7.0248190256765755, + 50.89660948583523 + ], + [ + 7.02490870219024, + 50.896660476371935 + ], + [ + 7.0249976366970035, + 50.896748870072365 + ], + [ + 7.02503296026239, + 50.89678451739348 + ], + [ + 7.025076420030872, + 50.89682809457264 + ], + [ + 7.025147211138993, + 50.89689938799261 + ], + [ + 7.0250722004109205, + 50.89693366732644 + ], + [ + 7.025027178755172, + 50.89695482859335 + ], + [ + 7.025155974091135, + 50.89708476251254 + ], + [ + 7.025100251814445, + 50.89711060205453 + ], + [ + 7.0249639509034925, + 50.89718566865387 + ], + [ + 7.024968286937522, + 50.89718940159062 + ], + [ + 7.0249839844769495, + 50.89720291593613 + ], + [ + 7.024895186215964, + 50.89724446800792 + ], + [ + 7.024878070134495, + 50.89725247776278 + ], + [ + 7.0249753678308595, + 50.89733596751407 + ], + [ + 7.02508181664882, + 50.89735107968714 + ], + [ + 7.025130827543331, + 50.897426287352054 + ], + [ + 7.025604348949455, + 50.89784995702255 + ], + [ + 7.025750202254592, + 50.897992684632094 + ], + [ + 7.025308195130021, + 50.898125479264515 + ], + [ + 7.02523295472274, + 50.89815310934074 + ], + [ + 7.025493438726878, + 50.89834642944906 + ], + [ + 7.025561280141442, + 50.898425659124875 + ], + [ + 7.025720139627486, + 50.89836454501093 + ], + [ + 7.0257914894339475, + 50.89844170328307 + ], + [ + 7.025805764880363, + 50.89846387151963 + ], + [ + 7.025983147953166, + 50.89874089432998 + ], + [ + 7.026033199190974, + 50.898819111398836 + ], + [ + 7.026207507336939, + 50.89906613535959 + ], + [ + 7.026374866116137, + 50.89935259420207 + ], + [ + 7.026510268645285, + 50.89932362528192 + ], + [ + 7.026556772333081, + 50.89938910903845 + ], + [ + 7.026807985231202, + 50.89977155522918 + ], + [ + 7.026969411992314, + 50.90001428691545 + ], + [ + 7.0270013949478045, + 50.90007838098854 + ], + [ + 7.027176761873919, + 50.90030236943931 + ], + [ + 7.027236326591972, + 50.90037996341424 + ], + [ + 7.027257737964675, + 50.90040332683409 + ], + [ + 7.027381227485811, + 50.90060144533072 + ], + [ + 7.027463814834616, + 50.9007496721241 + ], + [ + 7.02747454378595, + 50.90076566895216 + ], + [ + 7.027589176577711, + 50.900935907117216 + ], + [ + 7.0276159183574824, + 50.90097540538478 + ], + [ + 7.027648820767087, + 50.90104927840468 + ], + [ + 7.027701449554331, + 50.901102300928905 + ], + [ + 7.027725989283548, + 50.90113858176931 + ], + [ + 7.027802030166403, + 50.901215400702256 + ], + [ + 7.027862671400098, + 50.90127716375906 + ], + [ + 7.028821896588929, + 50.90091335562629 + ], + [ + 7.029052094511584, + 50.90113453214104 + ], + [ + 7.029306313366873, + 50.901458515586725 + ], + [ + 7.029407157217273, + 50.9016220426724 + ], + [ + 7.029495226227229, + 50.901773456158246 + ], + [ + 7.029677119127567, + 50.90216315972339 + ], + [ + 7.029680248212685, + 50.90216969433532 + ], + [ + 7.029769850399286, + 50.902409819798024 + ], + [ + 7.029834426879725, + 50.902952390330015 + ], + [ + 7.029840752226101, + 50.90299422533748 + ], + [ + 7.0299505944187315, + 50.90373254490269 + ], + [ + 7.030005029192318, + 50.904079594750854 + ], + [ + 7.030066115567075, + 50.9044767475827 + ], + [ + 7.030116373631788, + 50.904595952482765 + ], + [ + 7.030185506799355, + 50.90482951644481 + ], + [ + 7.0301948946448505, + 50.90490054009748 + ], + [ + 7.030199569583393, + 50.90498347105074 + ], + [ + 7.0302128219700455, + 50.90524881102251 + ], + [ + 7.029962608544667, + 50.905397277947124 + ], + [ + 7.029880234718661, + 50.905446188516954 + ], + [ + 7.029861147189347, + 50.90545741426228 + ], + [ + 7.029805297086168, + 50.905490718700314 + ], + [ + 7.029790704670082, + 50.90549947688887 + ], + [ + 7.029747204332377, + 50.90552539097287 + ], + [ + 7.029644441400666, + 50.90558463993207 + ], + [ + 7.030991113411917, + 50.906499014385645 + ], + [ + 7.03035388734462, + 50.906840219200326 + ], + [ + 7.030301643063922, + 50.90690162897276 + ], + [ + 7.030300518970631, + 50.906945474214346 + ], + [ + 7.030647431484658, + 50.907212236422644 + ], + [ + 7.0306856774549775, + 50.907192410237734 + ], + [ + 7.030741523060967, + 50.90716345916643 + ], + [ + 7.0315583719582815, + 50.9067907783206 + ], + [ + 7.031728669678023, + 50.90670236406712 + ], + [ + 7.032394538661517, + 50.90625557796102 + ], + [ + 7.032765717651904, + 50.905870301144404 + ], + [ + 7.032981714288501, + 50.90567284194404 + ], + [ + 7.033140126568014, + 50.905444324314466 + ], + [ + 7.033148586490783, + 50.90543212119436 + ], + [ + 7.033267972611373, + 50.90528921083987 + ], + [ + 7.033331705060241, + 50.90520756229067 + ], + [ + 7.033486591299337, + 50.90500933860718 + ], + [ + 7.033487099488834, + 50.90500868792966 + ], + [ + 7.033490393694752, + 50.905006866444246 + ], + [ + 7.03350114424641, + 50.90500092285584 + ], + [ + 7.033614769568085, + 50.90493815891975 + ], + [ + 7.03373794635347, + 50.90487018563634 + ], + [ + 7.03381786517731, + 50.90482614877858 + ], + [ + 7.0340814959236, + 50.904680790250254 + ], + [ + 7.034138095342568, + 50.904649455238896 + ], + [ + 7.034141907472322, + 50.904646986816395 + ], + [ + 7.034163574996709, + 50.904632964513944 + ], + [ + 7.034167387085891, + 50.904630496989306 + ], + [ + 7.034171238026381, + 50.90462805260324 + ], + [ + 7.034183788370141, + 50.904620101289 + ], + [ + 7.034187749799907, + 50.90461773521011 + ], + [ + 7.034223068812943, + 50.90459673436221 + ], + [ + 7.034306396661795, + 50.90455315751098 + ], + [ + 7.034307685257172, + 50.90455248399899 + ], + [ + 7.0343101990145405, + 50.904550684421515 + ], + [ + 7.03431130557563, + 50.90454990891258 + ], + [ + 7.0343461966690155, + 50.90452494987616 + ], + [ + 7.034348296196467, + 50.904523461699284 + ], + [ + 7.034349985106571, + 50.90452246935605 + ], + [ + 7.034352297390592, + 50.90452113046075 + ], + [ + 7.034411429540917, + 50.90448736739774 + ], + [ + 7.0345413752466595, + 50.90441620028041 + ], + [ + 7.034585907466242, + 50.90439207266718 + ], + [ + 7.035175390396772, + 50.904078848131626 + ], + [ + 7.035456712520631, + 50.903929363945004 + ], + [ + 7.035794492760007, + 50.90374420232801 + ], + [ + 7.036166938395698, + 50.90354640227248 + ], + [ + 7.036166840464393, + 50.90353183078748 + ], + [ + 7.036864624772774, + 50.90317229377132 + ], + [ + 7.037670913379358, + 50.902728147340525 + ], + [ + 7.037766568962695, + 50.90267614673788 + ], + [ + 7.037875441619054, + 50.90261755641725 + ], + [ + 7.0380323649544465, + 50.90253336729651 + ], + [ + 7.038738441966381, + 50.90215456182204 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Ensen", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "703", + "Population_rel": 0.007082460203668982, + "Population_abs": 7706 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.885187361300442, + 51.03021792914314 + ], + [ + 6.885273604235295, + 51.02984386736144 + ], + [ + 6.885332750665575, + 51.029484302128544 + ], + [ + 6.885298062517222, + 51.0292573199557 + ], + [ + 6.885306917726309, + 51.02918345196952 + ], + [ + 6.885329622039432, + 51.02903594849968 + ], + [ + 6.885343613835758, + 51.02896231110142 + ], + [ + 6.885358606086627, + 51.02888884560495 + ], + [ + 6.8853755974129704, + 51.02881554580466 + ], + [ + 6.885414000044062, + 51.02866900102559 + ], + [ + 6.885481758803131, + 51.02852196415218 + ], + [ + 6.885547109143289, + 51.028383305373204 + ], + [ + 6.885667803924186, + 51.028126919378714 + ], + [ + 6.885752671012603, + 51.027950268068864 + ], + [ + 6.885845845107111, + 51.02777571148968 + ], + [ + 6.8859468965288295, + 51.02760316270074 + ], + [ + 6.8860876696340245, + 51.02738329894671 + ], + [ + 6.886636830381541, + 51.026700630274966 + ], + [ + 6.887243976250496, + 51.02592780690834 + ], + [ + 6.887381851393741, + 51.02590752217557 + ], + [ + 6.887419241515008, + 51.025850157355634 + ], + [ + 6.888349476479721, + 51.02450999428712 + ], + [ + 6.888392556193483, + 51.02447451843306 + ], + [ + 6.888553039216322, + 51.02427274997849 + ], + [ + 6.889711805581105, + 51.02300589573031 + ], + [ + 6.889717566472258, + 51.02300153711844 + ], + [ + 6.890554505844477, + 51.022317735421225 + ], + [ + 6.8910013783292, + 51.02192635441743 + ], + [ + 6.891261124044556, + 51.021699283567585 + ], + [ + 6.891854410161115, + 51.02120664330444 + ], + [ + 6.891864268480346, + 51.02119308420193 + ], + [ + 6.892263921144833, + 51.02063719801154 + ], + [ + 6.892779691595687, + 51.020183797906206 + ], + [ + 6.893095267445786, + 51.02005212125686 + ], + [ + 6.893359152613405, + 51.01989315176807 + ], + [ + 6.893562169690933, + 51.01979298767648 + ], + [ + 6.893745019129307, + 51.01971122499181 + ], + [ + 6.893867955510721, + 51.01965634954063 + ], + [ + 6.89399883635181, + 51.01961444676163 + ], + [ + 6.894260882410001, + 51.019530548761445 + ], + [ + 6.894430285779735, + 51.019483406812746 + ], + [ + 6.8946617998986826, + 51.01942742809132 + ], + [ + 6.895018375379098, + 51.01935314219997 + ], + [ + 6.895161834042587, + 51.01932058084386 + ], + [ + 6.895338898817026, + 51.01927913107387 + ], + [ + 6.895342875402467, + 51.01927838159915 + ], + [ + 6.895535264591681, + 51.01923348875024 + ], + [ + 6.8957500946627865, + 51.019184557862076 + ], + [ + 6.895811231118155, + 51.01916961621538 + ], + [ + 6.896983522583249, + 51.01883413101089 + ], + [ + 6.897396765374798, + 51.01869740110328 + ], + [ + 6.897447120612249, + 51.018644586198086 + ], + [ + 6.896968990302438, + 51.01856861366724 + ], + [ + 6.896701193432077, + 51.018528563267786 + ], + [ + 6.896665981397114, + 51.01852329742185 + ], + [ + 6.8963753420210026, + 51.01844687439675 + ], + [ + 6.896141327089013, + 51.018394915434314 + ], + [ + 6.896108949006003, + 51.01835659993288 + ], + [ + 6.895996669895623, + 51.01832824652772 + ], + [ + 6.895668243743604, + 51.01822846965539 + ], + [ + 6.895306175281493, + 51.01802458576286 + ], + [ + 6.895204787475145, + 51.01794751721681 + ], + [ + 6.894566949346584, + 51.01703991550083 + ], + [ + 6.894532207015345, + 51.01698966270767 + ], + [ + 6.8943619605163775, + 51.016748169780506 + ], + [ + 6.894131661644537, + 51.01638515336036 + ], + [ + 6.893932521521904, + 51.016071158336665 + ], + [ + 6.893835812682016, + 51.01591845372633 + ], + [ + 6.893432247626119, + 51.015281873202866 + ], + [ + 6.893271419204961, + 51.01507006046836 + ], + [ + 6.893180727253084, + 51.0149335796759 + ], + [ + 6.893151488394566, + 51.01492481490013 + ], + [ + 6.893168708128294, + 51.01490140092243 + ], + [ + 6.893135472089889, + 51.014892306820585 + ], + [ + 6.89318697841143, + 51.014821347126855 + ], + [ + 6.8931142493477715, + 51.01463331078945 + ], + [ + 6.892958148109975, + 51.01422972296634 + ], + [ + 6.892878101233061, + 51.014194737647344 + ], + [ + 6.892847759808747, + 51.014128540451495 + ], + [ + 6.892826446555934, + 51.01402793507992 + ], + [ + 6.892734307728829, + 51.01359338416947 + ], + [ + 6.892666286290715, + 51.01336090440858 + ], + [ + 6.892583355066489, + 51.013079189141 + ], + [ + 6.892484467426458, + 51.012560101792324 + ], + [ + 6.892452528666666, + 51.01238101134792 + ], + [ + 6.8923858612617686, + 51.01192936653706 + ], + [ + 6.892325541809731, + 51.01130364173372 + ], + [ + 6.8923156706492215, + 51.01112348435051 + ], + [ + 6.892306260798608, + 51.01040325448729 + ], + [ + 6.892311538818189, + 51.01023286965455 + ], + [ + 6.892323177596698, + 51.01013398927384 + ], + [ + 6.892323335492059, + 51.010127425788056 + ], + [ + 6.892324699838036, + 51.009946104076505 + ], + [ + 6.892353306360022, + 51.00962524220545 + ], + [ + 6.892365648374357, + 51.009503614024325 + ], + [ + 6.892386991864471, + 51.00932393713708 + ], + [ + 6.892401486634355, + 51.00921802389919 + ], + [ + 6.892411332004623, + 51.0091445067836 + ], + [ + 6.89245362280148, + 51.00884619269235 + ], + [ + 6.892326552489796, + 51.00878828500576 + ], + [ + 6.892289754163738, + 51.00877148705077 + ], + [ + 6.891425430000963, + 51.00866734162112 + ], + [ + 6.890467044581385, + 51.009655193979896 + ], + [ + 6.89041241049328, + 51.0097115225505 + ], + [ + 6.889873839286634, + 51.01025677626925 + ], + [ + 6.889822958085456, + 51.0103082231095 + ], + [ + 6.889303791999927, + 51.01083328040543 + ], + [ + 6.889213629218916, + 51.01092448807293 + ], + [ + 6.8891157771570946, + 51.01102339475553 + ], + [ + 6.888417101299164, + 51.01172986788892 + ], + [ + 6.88805265825137, + 51.0120984087508 + ], + [ + 6.887966006325415, + 51.012186068860366 + ], + [ + 6.887863655565452, + 51.01228960768206 + ], + [ + 6.886153113391996, + 51.01154175930331 + ], + [ + 6.88174202807593, + 51.009888156933116 + ], + [ + 6.879232017519217, + 51.00895854786478 + ], + [ + 6.878808454638171, + 51.008825550326804 + ], + [ + 6.878607510937702, + 51.00875568854426 + ], + [ + 6.87820549402691, + 51.0085863909696 + ], + [ + 6.8778455087897905, + 51.00840176406782 + ], + [ + 6.877778238196828, + 51.00835552612747 + ], + [ + 6.87757761330701, + 51.008234421848165 + ], + [ + 6.877401985650581, + 51.008139287737116 + ], + [ + 6.877200458021125, + 51.00803059487622 + ], + [ + 6.876970566772588, + 51.00820086834578 + ], + [ + 6.875718485110574, + 51.009127341029405 + ], + [ + 6.874176311656035, + 51.010254272127185 + ], + [ + 6.873809460263153, + 51.01052282710242 + ], + [ + 6.873664605766874, + 51.01062458969527 + ], + [ + 6.872804530914424, + 51.01119392357564 + ], + [ + 6.870279395784652, + 51.0129665555322 + ], + [ + 6.869767178203001, + 51.01332796107097 + ], + [ + 6.86790090626814, + 51.01460491284877 + ], + [ + 6.867599362512373, + 51.01481839906461 + ], + [ + 6.866470877994906, + 51.01559840739373 + ], + [ + 6.866372520015807, + 51.01566574670598 + ], + [ + 6.864969000225994, + 51.01658621293442 + ], + [ + 6.863467921624637, + 51.01755907177248 + ], + [ + 6.863311206993417, + 51.01764607620291 + ], + [ + 6.862977590834812, + 51.01785367468425 + ], + [ + 6.8623788331272655, + 51.018249935496144 + ], + [ + 6.86216998458646, + 51.01837705614604 + ], + [ + 6.861894729593022, + 51.018550600863534 + ], + [ + 6.861466781540388, + 51.01882118565288 + ], + [ + 6.86100757684745, + 51.01911258458929 + ], + [ + 6.860576214867616, + 51.01938400031649 + ], + [ + 6.860196363315004, + 51.01961278600822 + ], + [ + 6.859185050088898, + 51.02024497661175 + ], + [ + 6.85886580294616, + 51.02043771551553 + ], + [ + 6.858788005736069, + 51.02048503113964 + ], + [ + 6.85837187296109, + 51.02075668652663 + ], + [ + 6.857787940189964, + 51.02116494898558 + ], + [ + 6.8570495832178215, + 51.021639423426066 + ], + [ + 6.856704486498136, + 51.02186129065049 + ], + [ + 6.856255428832348, + 51.02213425820326 + ], + [ + 6.856207228714921, + 51.02216373654958 + ], + [ + 6.856055574154218, + 51.022256268166174 + ], + [ + 6.855689875769089, + 51.02245886645774 + ], + [ + 6.855554571807528, + 51.022533838655725 + ], + [ + 6.8554933043054165, + 51.02257403571901 + ], + [ + 6.855294669091387, + 51.0227043581467 + ], + [ + 6.855158987694634, + 51.02279337663578 + ], + [ + 6.855110462717104, + 51.02279986767381 + ], + [ + 6.855083633220287, + 51.02280345637668 + ], + [ + 6.854840406736162, + 51.0229700081545 + ], + [ + 6.8545466318728945, + 51.02318573980589 + ], + [ + 6.854500184422425, + 51.02322545218856 + ], + [ + 6.854354270723954, + 51.023398032747586 + ], + [ + 6.854208615274254, + 51.02347613555607 + ], + [ + 6.853976543966133, + 51.023520980749296 + ], + [ + 6.853702613416316, + 51.02359156998339 + ], + [ + 6.853501711131365, + 51.02368050335143 + ], + [ + 6.853368114023293, + 51.02378674249708 + ], + [ + 6.853268754694044, + 51.02392563128276 + ], + [ + 6.853116634779859, + 51.02410985112404 + ], + [ + 6.8528763933604, + 51.024400876332905 + ], + [ + 6.852747641688529, + 51.02452272080994 + ], + [ + 6.8525803481718635, + 51.02466480129115 + ], + [ + 6.852081872252014, + 51.02504382633862 + ], + [ + 6.851882558852584, + 51.02518883629312 + ], + [ + 6.851667429386241, + 51.02533423225334 + ], + [ + 6.851453778730976, + 51.025451570156946 + ], + [ + 6.851175572140141, + 51.02556182737819 + ], + [ + 6.85111710804129, + 51.025583917111064 + ], + [ + 6.850390233474163, + 51.025852234085384 + ], + [ + 6.850092817006718, + 51.02601135008125 + ], + [ + 6.849872659643104, + 51.026139609723856 + ], + [ + 6.849286232716263, + 51.026567263942475 + ], + [ + 6.849230913593995, + 51.02662888164089 + ], + [ + 6.849186291541204, + 51.02668305157006 + ], + [ + 6.849066351373149, + 51.026812198052426 + ], + [ + 6.84864348332758, + 51.02704125895555 + ], + [ + 6.848504755016382, + 51.02710959546005 + ], + [ + 6.852987736557446, + 51.02732098994563 + ], + [ + 6.853046638529842, + 51.027291614271476 + ], + [ + 6.853215608627031, + 51.02730251562826 + ], + [ + 6.854674606730379, + 51.027190269051204 + ], + [ + 6.854818654810739, + 51.02717914690089 + ], + [ + 6.855635548439956, + 51.02711635278147 + ], + [ + 6.85610954526871, + 51.02707233821865 + ], + [ + 6.856191367147903, + 51.027064726548545 + ], + [ + 6.8564452427189995, + 51.027049740594066 + ], + [ + 6.856697407597674, + 51.027034766768786 + ], + [ + 6.856795765732772, + 51.02702721346473 + ], + [ + 6.857062368609262, + 51.02700673965351 + ], + [ + 6.85709025256585, + 51.02700383806517 + ], + [ + 6.857107468285933, + 51.027002093421515 + ], + [ + 6.857269649082272, + 51.02698490273594 + ], + [ + 6.857452675957843, + 51.02697735687437 + ], + [ + 6.857903465010427, + 51.02694267389192 + ], + [ + 6.858062886489209, + 51.02693044553054 + ], + [ + 6.85945923052501, + 51.026823004513446 + ], + [ + 6.859613955453232, + 51.02681125817833 + ], + [ + 6.859863489295733, + 51.02679279100091 + ], + [ + 6.859868755860069, + 51.026792392836136 + ], + [ + 6.8598765843764085, + 51.02679179608039 + ], + [ + 6.860214658711102, + 51.02676692338771 + ], + [ + 6.86147004052234, + 51.026668137137854 + ], + [ + 6.861643591536905, + 51.02665705835847 + ], + [ + 6.8617477808125305, + 51.02664891871684 + ], + [ + 6.86184328719114, + 51.026641471753756 + ], + [ + 6.86333921342971, + 51.02652435006503 + ], + [ + 6.863434716160681, + 51.02651672276046 + ], + [ + 6.863443402155424, + 51.02651620890353 + ], + [ + 6.86365519443207, + 51.026499630805155 + ], + [ + 6.866138711395708, + 51.026738595065844 + ], + [ + 6.868561530047597, + 51.027320534854724 + ], + [ + 6.868972983741008, + 51.027484581826755 + ], + [ + 6.8700788331683125, + 51.027925803544115 + ], + [ + 6.870183240811461, + 51.0279673643108 + ], + [ + 6.8702490578715, + 51.0279957290655 + ], + [ + 6.870313581318488, + 51.028023474811086 + ], + [ + 6.870968465586901, + 51.02822291449781 + ], + [ + 6.871689693779079, + 51.02837960773576 + ], + [ + 6.872061704266951, + 51.02846878864015 + ], + [ + 6.872236618519089, + 51.02849211281129 + ], + [ + 6.875347548594659, + 51.0292028874001 + ], + [ + 6.875537539339359, + 51.02924685793759 + ], + [ + 6.878886883665358, + 51.03001606863844 + ], + [ + 6.8789667712626335, + 51.02999658990393 + ], + [ + 6.879070022340949, + 51.03002152188983 + ], + [ + 6.878727079815389, + 51.03043032148323 + ], + [ + 6.879155494291162, + 51.03056822638698 + ], + [ + 6.88016505474076, + 51.03087667945413 + ], + [ + 6.883123771354236, + 51.031784358230695 + ], + [ + 6.8841691425568845, + 51.032106529091294 + ], + [ + 6.884224741141431, + 51.03205415114766 + ], + [ + 6.884335240480999, + 51.03195020906705 + ], + [ + 6.884479165972943, + 51.03177508969711 + ], + [ + 6.88462339366702, + 51.031623249594226 + ], + [ + 6.884721829655251, + 51.03147741895711 + ], + [ + 6.884847004906626, + 51.03129093509527 + ], + [ + 6.884917928136099, + 51.03114513314953 + ], + [ + 6.8850582535821925, + 51.03070647840747 + ], + [ + 6.885081329919024, + 51.030653177565455 + ], + [ + 6.885134181439897, + 51.03048674764853 + ], + [ + 6.885204511585746, + 51.030265082574225 + ], + [ + 6.885187361300442, + 51.03021792914314 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Volkhoven/Weiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "608", + "Population_rel": 0.005511745891695158, + "Population_abs": 5997 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.897662380510503, + 51.03449636807337 + ], + [ + 6.897692750702037, + 51.03446709959117 + ], + [ + 6.898059866711641, + 51.03463722851683 + ], + [ + 6.898132808107118, + 51.03458291217164 + ], + [ + 6.898725041298296, + 51.03414175416645 + ], + [ + 6.898726306246208, + 51.034140845171805 + ], + [ + 6.899889378003986, + 51.03327441514092 + ], + [ + 6.899863786702602, + 51.033219149206374 + ], + [ + 6.89989539067864, + 51.03319481470355 + ], + [ + 6.900393722644965, + 51.0327889620866 + ], + [ + 6.9009811775856145, + 51.032310514332764 + ], + [ + 6.900991615906243, + 51.03230201127493 + ], + [ + 6.9017679971069406, + 51.03167020196553 + ], + [ + 6.901768057810713, + 51.03167015269112 + ], + [ + 6.901768118555095, + 51.031670102518085 + ], + [ + 6.902313513782813, + 51.03122598521708 + ], + [ + 6.903610853996581, + 51.03016951377841 + ], + [ + 6.903610916162075, + 51.030169463629946 + ], + [ + 6.903610976861926, + 51.03016941435454 + ], + [ + 6.906759830624654, + 51.03054304622408 + ], + [ + 6.9067734081155585, + 51.03054482834562 + ], + [ + 6.9067745514103, + 51.03054499902741 + ], + [ + 6.906779272051763, + 51.03054595420797 + ], + [ + 6.906931122594746, + 51.03057668333533 + ], + [ + 6.906938618675634, + 51.030566466796486 + ], + [ + 6.907020268770313, + 51.030455177507044 + ], + [ + 6.907291494756333, + 51.03008029027742 + ], + [ + 6.907796025925316, + 51.029396790189494 + ], + [ + 6.9082874464762964, + 51.028918341654645 + ], + [ + 6.9083579210122, + 51.02884830780011 + ], + [ + 6.908397939225912, + 51.02880997189625 + ], + [ + 6.908524984476666, + 51.02868780976345 + ], + [ + 6.908818810290887, + 51.02840551182042 + ], + [ + 6.908924728094934, + 51.02830382923006 + ], + [ + 6.9092202235603635, + 51.02801971916808 + ], + [ + 6.909300947881296, + 51.02794205178086 + ], + [ + 6.909301050737791, + 51.0279419528923 + ], + [ + 6.909301187664096, + 51.027941825833665 + ], + [ + 6.909301236631254, + 51.02794178354029 + ], + [ + 6.909301411164964, + 51.02794161308562 + ], + [ + 6.909301919423812, + 51.02794112572995 + ], + [ + 6.909302425691404, + 51.027940650929835 + ], + [ + 6.909302480803539, + 51.02794059885339 + ], + [ + 6.909302649556247, + 51.02794043009395 + ], + [ + 6.909302933212762, + 51.02794014827169 + ], + [ + 6.909303443624597, + 51.02793964476589 + ], + [ + 6.9093035336154225, + 51.02793954654645 + ], + [ + 6.909436810948822, + 51.02781164187379 + ], + [ + 6.909674380407878, + 51.02758335486602 + ], + [ + 6.91024212555496, + 51.02703742439758 + ], + [ + 6.910438025902732, + 51.026850720154854 + ], + [ + 6.908866562148322, + 51.02619056872695 + ], + [ + 6.908834220427953, + 51.02617698124785 + ], + [ + 6.908753763664688, + 51.026144526972566 + ], + [ + 6.906481005296235, + 51.02522597142588 + ], + [ + 6.906213918806864, + 51.02511774760586 + ], + [ + 6.9062070244550124, + 51.02511510398828 + ], + [ + 6.9060044527615005, + 51.02504790879811 + ], + [ + 6.905605472567404, + 51.02491517747312 + ], + [ + 6.905603471201326, + 51.02491481062003 + ], + [ + 6.905603348164282, + 51.024914787728406 + ], + [ + 6.904670087545236, + 51.0247432634154 + ], + [ + 6.904669209193436, + 51.02474310286073 + ], + [ + 6.904668207325593, + 51.02474296167529 + ], + [ + 6.904658671344307, + 51.02474162952955 + ], + [ + 6.904658440378851, + 51.02474159660659 + ], + [ + 6.9046573480050375, + 51.024741438508244 + ], + [ + 6.9041937164042215, + 51.02467666825179 + ], + [ + 6.904064568972828, + 51.024265965319195 + ], + [ + 6.9039545889051475, + 51.02400514285445 + ], + [ + 6.90393525643527, + 51.023934547835395 + ], + [ + 6.903926809611651, + 51.023903420107516 + ], + [ + 6.9039145302342115, + 51.023858306730006 + ], + [ + 6.903898725530168, + 51.02382966503534 + ], + [ + 6.903880700335381, + 51.02379707572243 + ], + [ + 6.903718628303361, + 51.023554634906866 + ], + [ + 6.903710863187896, + 51.023546171866954 + ], + [ + 6.903710651164002, + 51.02354594052086 + ], + [ + 6.903710606291738, + 51.02354589204889 + ], + [ + 6.903679457747207, + 51.02351196995066 + ], + [ + 6.9036639448716235, + 51.02349851575067 + ], + [ + 6.9036405358990285, + 51.02348215696771 + ], + [ + 6.903615860741243, + 51.02346661726722 + ], + [ + 6.903589919438826, + 51.02345189574976 + ], + [ + 6.903213143773505, + 51.02325057729072 + ], + [ + 6.9030221821732365, + 51.02334742918131 + ], + [ + 6.902661272388887, + 51.02352236171836 + ], + [ + 6.9020991141487045, + 51.02307392354192 + ], + [ + 6.901948433629665, + 51.02294042782054 + ], + [ + 6.902034700874786, + 51.0228835792716 + ], + [ + 6.902103859756306, + 51.02284852725269 + ], + [ + 6.902094222441027, + 51.02284401739212 + ], + [ + 6.90203510140257, + 51.02281615785645 + ], + [ + 6.9019119724933065, + 51.022758230197695 + ], + [ + 6.901828029133918, + 51.02270719037178 + ], + [ + 6.90175901982314, + 51.022661787999795 + ], + [ + 6.90175338872463, + 51.02265805698156 + ], + [ + 6.901611176248364, + 51.02256422952233 + ], + [ + 6.901404433075314, + 51.0223912561759 + ], + [ + 6.901395307980016, + 51.02238377583948 + ], + [ + 6.901221676241861, + 51.02223518273812 + ], + [ + 6.900102704256352, + 51.02132323083656 + ], + [ + 6.900065293224917, + 51.02129052622333 + ], + [ + 6.900029071251881, + 51.021259972688576 + ], + [ + 6.89940349357381, + 51.0207500734372 + ], + [ + 6.899288509766066, + 51.02068542810524 + ], + [ + 6.899232409792897, + 51.02065143196495 + ], + [ + 6.899171341113915, + 51.02059625884351 + ], + [ + 6.898955394361035, + 51.02038874414258 + ], + [ + 6.898925874605675, + 51.020365689261986 + ], + [ + 6.898871709169084, + 51.02024007807371 + ], + [ + 6.898536436324303, + 51.01958833835872 + ], + [ + 6.898035194255312, + 51.019131050277224 + ], + [ + 6.897657110057698, + 51.01878436196485 + ], + [ + 6.897655767036074, + 51.01878312903459 + ], + [ + 6.897447120612249, + 51.018644586198086 + ], + [ + 6.897396765374798, + 51.01869740110328 + ], + [ + 6.896983522583249, + 51.01883413101089 + ], + [ + 6.895811231118155, + 51.01916961621538 + ], + [ + 6.8957500946627865, + 51.019184557862076 + ], + [ + 6.895535264591681, + 51.01923348875024 + ], + [ + 6.895342875402467, + 51.01927838159915 + ], + [ + 6.895338898817026, + 51.01927913107387 + ], + [ + 6.895161834042587, + 51.01932058084386 + ], + [ + 6.895018375379098, + 51.01935314219997 + ], + [ + 6.8946617998986826, + 51.01942742809132 + ], + [ + 6.894430285779735, + 51.019483406812746 + ], + [ + 6.894260882410001, + 51.019530548761445 + ], + [ + 6.89399883635181, + 51.01961444676163 + ], + [ + 6.893867955510721, + 51.01965634954063 + ], + [ + 6.893745019129307, + 51.01971122499181 + ], + [ + 6.893562169690933, + 51.01979298767648 + ], + [ + 6.893359152613405, + 51.01989315176807 + ], + [ + 6.893095267445786, + 51.02005212125686 + ], + [ + 6.892779691595687, + 51.020183797906206 + ], + [ + 6.892263921144833, + 51.02063719801154 + ], + [ + 6.891864268480346, + 51.02119308420193 + ], + [ + 6.891854410161115, + 51.02120664330444 + ], + [ + 6.891261124044556, + 51.021699283567585 + ], + [ + 6.8910013783292, + 51.02192635441743 + ], + [ + 6.890554505844477, + 51.022317735421225 + ], + [ + 6.889717566472258, + 51.02300153711844 + ], + [ + 6.889711805581105, + 51.02300589573031 + ], + [ + 6.888553039216322, + 51.02427274997849 + ], + [ + 6.888392556193483, + 51.02447451843306 + ], + [ + 6.888349476479721, + 51.02450999428712 + ], + [ + 6.887419241515008, + 51.025850157355634 + ], + [ + 6.887381851393741, + 51.02590752217557 + ], + [ + 6.887243976250496, + 51.02592780690834 + ], + [ + 6.886636830381541, + 51.026700630274966 + ], + [ + 6.8860876696340245, + 51.02738329894671 + ], + [ + 6.8859468965288295, + 51.02760316270074 + ], + [ + 6.885845845107111, + 51.02777571148968 + ], + [ + 6.885752671012603, + 51.027950268068864 + ], + [ + 6.885667803924186, + 51.028126919378714 + ], + [ + 6.885547109143289, + 51.028383305373204 + ], + [ + 6.885481758803131, + 51.02852196415218 + ], + [ + 6.885414000044062, + 51.02866900102559 + ], + [ + 6.8853755974129704, + 51.02881554580466 + ], + [ + 6.885358606086627, + 51.02888884560495 + ], + [ + 6.885343613835758, + 51.02896231110142 + ], + [ + 6.885329622039432, + 51.02903594849968 + ], + [ + 6.885306917726309, + 51.02918345196952 + ], + [ + 6.885298062517222, + 51.0292573199557 + ], + [ + 6.885332750665575, + 51.029484302128544 + ], + [ + 6.885273604235295, + 51.02984386736144 + ], + [ + 6.885187361300442, + 51.03021792914314 + ], + [ + 6.885204511585746, + 51.030265082574225 + ], + [ + 6.885134181439897, + 51.03048674764853 + ], + [ + 6.885081329919024, + 51.030653177565455 + ], + [ + 6.8850582535821925, + 51.03070647840747 + ], + [ + 6.884917928136099, + 51.03114513314953 + ], + [ + 6.884847004906626, + 51.03129093509527 + ], + [ + 6.884721829655251, + 51.03147741895711 + ], + [ + 6.88462339366702, + 51.031623249594226 + ], + [ + 6.884479165972943, + 51.03177508969711 + ], + [ + 6.884335240480999, + 51.03195020906705 + ], + [ + 6.884224741141431, + 51.03205415114766 + ], + [ + 6.8841691425568845, + 51.032106529091294 + ], + [ + 6.884355289466185, + 51.032157167101715 + ], + [ + 6.88551507877334, + 51.032542731575084 + ], + [ + 6.885516515251902, + 51.03254326032621 + ], + [ + 6.885546244507207, + 51.03255481037224 + ], + [ + 6.886617307271286, + 51.032973847608766 + ], + [ + 6.886631987723067, + 51.03301850172489 + ], + [ + 6.886842021884894, + 51.03310284285481 + ], + [ + 6.887578598417625, + 51.03334714532413 + ], + [ + 6.8876450223489085, + 51.03336902303726 + ], + [ + 6.887713315798064, + 51.03339169538594 + ], + [ + 6.8881182072818214, + 51.03352677990085 + ], + [ + 6.889839870126401, + 51.03409652998686 + ], + [ + 6.890696996917197, + 51.03438070433535 + ], + [ + 6.891897478844026, + 51.03477865996485 + ], + [ + 6.892489652497846, + 51.03497657154159 + ], + [ + 6.894020688432164, + 51.035488297359954 + ], + [ + 6.8961975371922035, + 51.036218340239465 + ], + [ + 6.896745399940248, + 51.035574198312354 + ], + [ + 6.896928438482676, + 51.03535912105007 + ], + [ + 6.897662380510503, + 51.03449636807337 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Chorweiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "609", + "Population_rel": 0.011839638248593801, + "Population_abs": 12882 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.983330026050496, + 50.945002813962844 + ], + [ + 6.983458388222803, + 50.94495761183727 + ], + [ + 6.98434713299508, + 50.94598364991985 + ], + [ + 6.984630245286649, + 50.94630931330257 + ], + [ + 6.985221502047061, + 50.946987023985585 + ], + [ + 6.985260270039792, + 50.94703157161671 + ], + [ + 6.9853270152243665, + 50.94710738755816 + ], + [ + 6.985433934813375, + 50.947217231956735 + ], + [ + 6.9854700086930945, + 50.94725409555433 + ], + [ + 6.98549542987759, + 50.94728136159202 + ], + [ + 6.985615776839339, + 50.94742094501897 + ], + [ + 6.985788422027026, + 50.947352715996104 + ], + [ + 6.985840272283797, + 50.947331980654866 + ], + [ + 6.985926220237023, + 50.94729763425446 + ], + [ + 6.986098934665058, + 50.94725264844902 + ], + [ + 6.9862699833670465, + 50.947208610375895 + ], + [ + 6.986367602045403, + 50.94719103229651 + ], + [ + 6.986538813168312, + 50.94715883956704 + ], + [ + 6.986784159891034, + 50.94713454352489 + ], + [ + 6.986909266641658, + 50.94713050778759 + ], + [ + 6.987141269878835, + 50.94712385053399 + ], + [ + 6.987537420827812, + 50.94712213335156 + ], + [ + 6.987654897282908, + 50.94712164011801 + ], + [ + 6.987679060688471, + 50.9471472354439 + ], + [ + 6.987827301355103, + 50.94712548502113 + ], + [ + 6.988077865728967, + 50.94704888417072 + ], + [ + 6.988149188620078, + 50.94702522586379 + ], + [ + 6.988278588294162, + 50.946980711751365 + ], + [ + 6.988337538752503, + 50.946949019191464 + ], + [ + 6.988715677209756, + 50.94676489627624 + ], + [ + 6.988802178124322, + 50.94672277773111 + ], + [ + 6.988842497644093, + 50.94669834386459 + ], + [ + 6.989234255993103, + 50.94662526734075 + ], + [ + 6.989349128007406, + 50.946596452194264 + ], + [ + 6.989391787439987, + 50.9465873630527 + ], + [ + 6.989447097414037, + 50.94657256939636 + ], + [ + 6.989480177734191, + 50.94655574254071 + ], + [ + 6.989538786201617, + 50.946526202882374 + ], + [ + 6.98984393443219, + 50.946519761105854 + ], + [ + 6.989881976376402, + 50.94653925706344 + ], + [ + 6.990616372549955, + 50.94692574961169 + ], + [ + 6.990732274666293, + 50.94698657323625 + ], + [ + 6.991097079749405, + 50.94717961115712 + ], + [ + 6.9911516917889465, + 50.94721069152845 + ], + [ + 6.991240290090265, + 50.94726178218643 + ], + [ + 6.991493002689097, + 50.947397908799644 + ], + [ + 6.991531781821204, + 50.947414339241334 + ], + [ + 6.9917678340797895, + 50.94756728916928 + ], + [ + 6.991797773496245, + 50.947585772721034 + ], + [ + 6.991849135327527, + 50.94761654232786 + ], + [ + 6.9927441379136095, + 50.948133742674436 + ], + [ + 6.993422564279541, + 50.948626513883184 + ], + [ + 6.993874197523159, + 50.948970361447145 + ], + [ + 6.993901661280076, + 50.94899757527021 + ], + [ + 6.994071511726806, + 50.94916588089121 + ], + [ + 6.994099442819794, + 50.94919676223633 + ], + [ + 6.994271552516137, + 50.94938570826331 + ], + [ + 6.994523991637523, + 50.949502196476274 + ], + [ + 6.994559564229132, + 50.94951836665113 + ], + [ + 6.994694414486889, + 50.949579669119345 + ], + [ + 6.994786301170092, + 50.94956040983918 + ], + [ + 6.994886793866091, + 50.94953676276566 + ], + [ + 6.994991592629743, + 50.949511841400906 + ], + [ + 6.995100003386176, + 50.949485529487035 + ], + [ + 6.9952028504001715, + 50.94946043231579 + ], + [ + 6.99538895271274, + 50.94941782836119 + ], + [ + 6.995604704796191, + 50.949372531400556 + ], + [ + 6.995540654973534, + 50.94929290855794 + ], + [ + 6.995509956174155, + 50.94925485522749 + ], + [ + 6.995486625496598, + 50.94922619461588 + ], + [ + 6.995459595846385, + 50.94919462487861 + ], + [ + 6.9954240054848125, + 50.94918005735171 + ], + [ + 6.995374428898319, + 50.949154093864735 + ], + [ + 6.9953451711442405, + 50.94911676854057 + ], + [ + 6.9952594207260494, + 50.94901304391032 + ], + [ + 6.9951883211839245, + 50.94891817958228 + ], + [ + 6.995012978630014, + 50.948684185648794 + ], + [ + 6.9943938919468405, + 50.94785819099156 + ], + [ + 6.994329444213196, + 50.947772263207966 + ], + [ + 6.9938795902592545, + 50.94719399163803 + ], + [ + 6.99361119959138, + 50.94684897357849 + ], + [ + 6.993528403112039, + 50.946769601177195 + ], + [ + 6.993477539714751, + 50.94672084085156 + ], + [ + 6.993398474099693, + 50.946630583527686 + ], + [ + 6.993306911321323, + 50.946526059556575 + ], + [ + 6.993223712913064, + 50.94644811092037 + ], + [ + 6.99300430690484, + 50.94624852716195 + ], + [ + 6.992738667642617, + 50.945962678973515 + ], + [ + 6.992603733136285, + 50.94584345944166 + ], + [ + 6.992504877604893, + 50.94575611422368 + ], + [ + 6.99246702182567, + 50.94571788121378 + ], + [ + 6.992424594509958, + 50.94567502954851 + ], + [ + 6.992189907672313, + 50.94543423571574 + ], + [ + 6.992474903215197, + 50.94546871537644 + ], + [ + 6.992658034035977, + 50.94549790925008 + ], + [ + 6.992716724987455, + 50.94550728614509 + ], + [ + 6.993059874852465, + 50.94557115832033 + ], + [ + 6.993829895919623, + 50.94574115363153 + ], + [ + 6.994268981882512, + 50.94584845918475 + ], + [ + 6.994768202910068, + 50.94598114196761 + ], + [ + 6.994703722316641, + 50.945814582436796 + ], + [ + 6.994689638697063, + 50.94578056822444 + ], + [ + 6.9946680351395205, + 50.94572843471072 + ], + [ + 6.994580558151673, + 50.945516852370204 + ], + [ + 6.994303708790242, + 50.944846000124365 + ], + [ + 6.994179317815938, + 50.94455122090721 + ], + [ + 6.994157430544005, + 50.94449908960294 + ], + [ + 6.993729206529962, + 50.94337511426041 + ], + [ + 6.993634222331648, + 50.94318454000887 + ], + [ + 6.993542156755866, + 50.94303744920604 + ], + [ + 6.993419837875829, + 50.94287281771213 + ], + [ + 6.993283924351892, + 50.94271791923977 + ], + [ + 6.992517850637404, + 50.942015441636435 + ], + [ + 6.992105218795576, + 50.941667377029574 + ], + [ + 6.9918329814350235, + 50.94143767585171 + ], + [ + 6.991204420159947, + 50.94100469619229 + ], + [ + 6.990576293114814, + 50.94063166821086 + ], + [ + 6.9896517582181, + 50.94016244877026 + ], + [ + 6.988799119498331, + 50.93986206048368 + ], + [ + 6.988595203905453, + 50.939806704649975 + ], + [ + 6.988385920412089, + 50.93975993490835 + ], + [ + 6.988174311164063, + 50.93971758919548 + ], + [ + 6.987958621216339, + 50.93968417908615 + ], + [ + 6.987948936406172, + 50.939630232349735 + ], + [ + 6.98792968033492, + 50.93952300726537 + ], + [ + 6.988226732130223, + 50.939449194197316 + ], + [ + 6.98867424634382, + 50.93931760691931 + ], + [ + 6.988879958072235, + 50.93924899701049 + ], + [ + 6.989283289180893, + 50.939114607358995 + ], + [ + 6.989917328755488, + 50.93885769224416 + ], + [ + 6.9900386069456575, + 50.938784737654544 + ], + [ + 6.990113620499099, + 50.93873957657628 + ], + [ + 6.990157068729452, + 50.938721300182245 + ], + [ + 6.990353543990299, + 50.93864244040869 + ], + [ + 6.990572587555574, + 50.93866976831805 + ], + [ + 6.991274572313103, + 50.93836918437793 + ], + [ + 6.9916437215043885, + 50.93821156663498 + ], + [ + 6.991681770078584, + 50.93819529501913 + ], + [ + 6.993671399825458, + 50.93734086740877 + ], + [ + 6.99369783711389, + 50.93731604940141 + ], + [ + 6.99378680559495, + 50.937232852113745 + ], + [ + 6.99390801315873, + 50.937178723397736 + ], + [ + 6.9939899096171425, + 50.93714324746041 + ], + [ + 6.994030991531218, + 50.93712408895987 + ], + [ + 6.993598700662072, + 50.93707883758299 + ], + [ + 6.993523718894497, + 50.93707172627761 + ], + [ + 6.993408037831056, + 50.937060765745656 + ], + [ + 6.993356078524078, + 50.93702024623545 + ], + [ + 6.993315415502133, + 50.93698854586908 + ], + [ + 6.993131437276275, + 50.93684512596364 + ], + [ + 6.992975331165236, + 50.93668302741789 + ], + [ + 6.992793427822563, + 50.9363650941188 + ], + [ + 6.992638053709202, + 50.9358235891581 + ], + [ + 6.992604409923472, + 50.93570634483995 + ], + [ + 6.992582354372461, + 50.93564040576383 + ], + [ + 6.9923985364257435, + 50.935090887105815 + ], + [ + 6.992145013056439, + 50.93453570377307 + ], + [ + 6.991865763515085, + 50.934168345790646 + ], + [ + 6.991370597848386, + 50.93361503378038 + ], + [ + 6.9909853423413315, + 50.93324596729736 + ], + [ + 6.989804586155237, + 50.93224648465423 + ], + [ + 6.989710726192941, + 50.932120440812334 + ], + [ + 6.989683250576997, + 50.931988243533404 + ], + [ + 6.989699633902049, + 50.93193278517948 + ], + [ + 6.989742011061077, + 50.93178577120935 + ], + [ + 6.989632654787488, + 50.931678143120315 + ], + [ + 6.987257828223306, + 50.92951892735689 + ], + [ + 6.987228424556434, + 50.9294738698339 + ], + [ + 6.987249746401102, + 50.929394718381 + ], + [ + 6.9869566629446025, + 50.929094120926386 + ], + [ + 6.986885041027082, + 50.92902263740072 + ], + [ + 6.986784832945844, + 50.929026985345324 + ], + [ + 6.986694107436763, + 50.929007270299834 + ], + [ + 6.986635670400883, + 50.92896882681161 + ], + [ + 6.9855539865652485, + 50.927889177573064 + ], + [ + 6.985218835722011, + 50.92753084628408 + ], + [ + 6.984988321976673, + 50.92728438585627 + ], + [ + 6.984689005943073, + 50.92683599834412 + ], + [ + 6.984574346701753, + 50.92667433280962 + ], + [ + 6.984540939703413, + 50.92662766930912 + ], + [ + 6.984512715070754, + 50.92658809421902 + ], + [ + 6.984445700779595, + 50.92649374561846 + ], + [ + 6.984372190951999, + 50.92638408087265 + ], + [ + 6.984283431421692, + 50.926242174545926 + ], + [ + 6.984045342379684, + 50.92574410516161 + ], + [ + 6.983874560861897, + 50.92535513725189 + ], + [ + 6.983800564965606, + 50.92511297400228 + ], + [ + 6.9837848208600946, + 50.92504797849144 + ], + [ + 6.983773681452981, + 50.925010630175784 + ], + [ + 6.983763444893365, + 50.924975438867186 + ], + [ + 6.9837499902921945, + 50.924924335079865 + ], + [ + 6.983728307995594, + 50.92482156483975 + ], + [ + 6.983709356967665, + 50.92473023596261 + ], + [ + 6.98370396674679, + 50.924703908066 + ], + [ + 6.983702443923437, + 50.924671565395855 + ], + [ + 6.983705192437108, + 50.92452073541406 + ], + [ + 6.983703865055511, + 50.92395900110125 + ], + [ + 6.983775190266885, + 50.92299401395089 + ], + [ + 6.983785421991157, + 50.9228557776418 + ], + [ + 6.9837878037356385, + 50.92282428936256 + ], + [ + 6.9837932182011455, + 50.92274569739208 + ], + [ + 6.983798643477938, + 50.92267629992702 + ], + [ + 6.983859128580224, + 50.922547906508015 + ], + [ + 6.98386542325947, + 50.92245224339189 + ], + [ + 6.983886362987219, + 50.92202387256425 + ], + [ + 6.983882316753007, + 50.92189366297071 + ], + [ + 6.983866553808532, + 50.921832973320484 + ], + [ + 6.983813205807099, + 50.921604713864 + ], + [ + 6.98378575738812, + 50.92151030980153 + ], + [ + 6.9837678167162585, + 50.92143568805504 + ], + [ + 6.983736182974242, + 50.92130042857334 + ], + [ + 6.983723424105954, + 50.92125194855445 + ], + [ + 6.983687811929947, + 50.92119876934445 + ], + [ + 6.983644322225149, + 50.921076166103774 + ], + [ + 6.9834859588274885, + 50.92080970802652 + ], + [ + 6.983285186581829, + 50.920528324825696 + ], + [ + 6.98297259822542, + 50.92019799235415 + ], + [ + 6.982945115262237, + 50.92017823120088 + ], + [ + 6.982845791255823, + 50.9201167475938 + ], + [ + 6.98275108559971, + 50.92003876281446 + ], + [ + 6.982716159028732, + 50.92001375820711 + ], + [ + 6.982433426487408, + 50.91981859755307 + ], + [ + 6.982007652046142, + 50.91956958094799 + ], + [ + 6.981629602805992, + 50.91937158044987 + ], + [ + 6.981321072146999, + 50.919239874327914 + ], + [ + 6.980982855253583, + 50.919116597274055 + ], + [ + 6.9805510797932335, + 50.91898053209176 + ], + [ + 6.980401562999823, + 50.91894421309184 + ], + [ + 6.980324445652502, + 50.91891537577189 + ], + [ + 6.97938960673252, + 50.918694986173655 + ], + [ + 6.978510039143165, + 50.9185040232663 + ], + [ + 6.978436933058043, + 50.91847311993531 + ], + [ + 6.978402105922189, + 50.91841947776713 + ], + [ + 6.978418735253632, + 50.918385711773595 + ], + [ + 6.978362021708302, + 50.91837295573841 + ], + [ + 6.97830161881173, + 50.91835938029565 + ], + [ + 6.978178936152838, + 50.91833318791806 + ], + [ + 6.978146687901091, + 50.91836975829459 + ], + [ + 6.97808969324076, + 50.918374220328815 + ], + [ + 6.978021209884473, + 50.918358455983004 + ], + [ + 6.97795619430971, + 50.91832883471038 + ], + [ + 6.977971150294844, + 50.91830193711287 + ], + [ + 6.977749884800161, + 50.91823266236208 + ], + [ + 6.9775106844058215, + 50.91818077076399 + ], + [ + 6.977488478774474, + 50.918213743888884 + ], + [ + 6.977358188927321, + 50.91819674446787 + ], + [ + 6.977239519095381, + 50.9181668873196 + ], + [ + 6.97719402611544, + 50.918152987791615 + ], + [ + 6.977162611716229, + 50.91813288910025 + ], + [ + 6.977137936491329, + 50.91810001192554 + ], + [ + 6.976570239654718, + 50.91796728178524 + ], + [ + 6.976482302511423, + 50.917954263243715 + ], + [ + 6.9764222570460115, + 50.91797248061096 + ], + [ + 6.976353327337415, + 50.917986900537635 + ], + [ + 6.976314371679037, + 50.91794849354984 + ], + [ + 6.9762917664449455, + 50.91790452048678 + ], + [ + 6.976149959218042, + 50.91786312136738 + ], + [ + 6.975592143385113, + 50.91774032679828 + ], + [ + 6.975570679599015, + 50.91777752152046 + ], + [ + 6.975421849405439, + 50.91776771085101 + ], + [ + 6.97545735563659, + 50.91770430813655 + ], + [ + 6.975352324480896, + 50.91768001623028 + ], + [ + 6.973339984089739, + 50.9172264947258 + ], + [ + 6.973212122358623, + 50.91745679245544 + ], + [ + 6.973181147421972, + 50.917512605096526 + ], + [ + 6.972974062192805, + 50.91788595250745 + ], + [ + 6.972863282268633, + 50.918097316910256 + ], + [ + 6.972836615604135, + 50.91814832965637 + ], + [ + 6.972759752303805, + 50.918294957610314 + ], + [ + 6.972715173854855, + 50.918380368012166 + ], + [ + 6.972527943001229, + 50.918737817610236 + ], + [ + 6.972096626069309, + 50.91959108667435 + ], + [ + 6.971763281616911, + 50.92025323275796 + ], + [ + 6.971720269021799, + 50.920338899326985 + ], + [ + 6.971667146950547, + 50.920444517372914 + ], + [ + 6.9712971808936155, + 50.92119937750294 + ], + [ + 6.971271943359132, + 50.92125091657992 + ], + [ + 6.9712463261114115, + 50.92130470648908 + ], + [ + 6.971221803708609, + 50.92135641987279 + ], + [ + 6.970840106552451, + 50.92216333475848 + ], + [ + 6.970676583865318, + 50.922520134038976 + ], + [ + 6.970653056591378, + 50.922571838520305 + ], + [ + 6.970443820639805, + 50.923028439849276 + ], + [ + 6.970404659392833, + 50.92311488430038 + ], + [ + 6.970052342682558, + 50.92389287530364 + ], + [ + 6.969871489147075, + 50.924306001322144 + ], + [ + 6.969846511580185, + 50.9243632907286 + ], + [ + 6.96981817115473, + 50.92442986796799 + ], + [ + 6.969674025017136, + 50.924768526021175 + ], + [ + 6.969532172233665, + 50.92510123213412 + ], + [ + 6.969495147038553, + 50.92518801741985 + ], + [ + 6.96930568976394, + 50.925632406317234 + ], + [ + 6.968946403774617, + 50.92650115471366 + ], + [ + 6.968685900328224, + 50.927168529133816 + ], + [ + 6.968603159300515, + 50.92738110137519 + ], + [ + 6.96858165342871, + 50.92743610804385 + ], + [ + 6.968501929775032, + 50.92764054839181 + ], + [ + 6.968264568103515, + 50.928249218431674 + ], + [ + 6.96793667040397, + 50.92912444492628 + ], + [ + 6.967908226926579, + 50.929200010963235 + ], + [ + 6.967887380851243, + 50.92925789619811 + ], + [ + 6.9677478835020885, + 50.929643707005766 + ], + [ + 6.967715991277385, + 50.92973134734225 + ], + [ + 6.967618474644385, + 50.93000165701855 + ], + [ + 6.967406504771846, + 50.93061046423885 + ], + [ + 6.967369200203139, + 50.93071837481734 + ], + [ + 6.967313341099572, + 50.93087821966544 + ], + [ + 6.967116124960906, + 50.93144429483522 + ], + [ + 6.967085511897863, + 50.931532014826786 + ], + [ + 6.967005645502932, + 50.931762084752144 + ], + [ + 6.966988529819804, + 50.931814723967584 + ], + [ + 6.966720403280587, + 50.93264540293276 + ], + [ + 6.966545974581681, + 50.93319978187607 + ], + [ + 6.966527690176628, + 50.93325791473659 + ], + [ + 6.966510378941653, + 50.933312889748066 + ], + [ + 6.966500072787711, + 50.933345880114686 + ], + [ + 6.966415849098428, + 50.93361669819708 + ], + [ + 6.966292686179945, + 50.934012717236705 + ], + [ + 6.966092712040699, + 50.93468039271776 + ], + [ + 6.966066650249063, + 50.93476825467863 + ], + [ + 6.966037373872788, + 50.93487028695601 + ], + [ + 6.965726065360697, + 50.93595523815872 + ], + [ + 6.965706213944454, + 50.936027047365634 + ], + [ + 6.965686648997603, + 50.93609894430359 + ], + [ + 6.965667368754869, + 50.93617083900438 + ], + [ + 6.965648515640824, + 50.9362427294533 + ], + [ + 6.965638822336851, + 50.936279845062685 + ], + [ + 6.965616978400758, + 50.93636511106942 + ], + [ + 6.965601791270258, + 50.936425239501716 + ], + [ + 6.96557408075656, + 50.93653657690237 + ], + [ + 6.965499079433718, + 50.93685110546994 + ], + [ + 6.965431345979832, + 50.9371662921827 + ], + [ + 6.965384846059166, + 50.93739392683563 + ], + [ + 6.965342193009603, + 50.93762188933339 + ], + [ + 6.965333885052346, + 50.937667264644574 + ], + [ + 6.965325858362343, + 50.93771245688778 + ], + [ + 6.965318065755467, + 50.93775522129767 + ], + [ + 6.9653108409617195, + 50.93779789037676 + ], + [ + 6.965304872964872, + 50.93783263807268 + ], + [ + 6.965298906341467, + 50.93786738669151 + ], + [ + 6.965291176715769, + 50.937913206477305 + ], + [ + 6.965283734735972, + 50.937959023181705 + ], + [ + 6.965275011071791, + 50.93801186325646 + ], + [ + 6.965266433002924, + 50.93806479130875 + ], + [ + 6.965148040356986, + 50.93888793378826 + ], + [ + 6.965077068558289, + 50.93971329133671 + ], + [ + 6.965066811033674, + 50.93986376785512 + ], + [ + 6.965060005773045, + 50.940009181704596 + ], + [ + 6.965046483845483, + 50.94039358647558 + ], + [ + 6.965043920312713, + 50.94077817145583 + ], + [ + 6.9650442455099215, + 50.941020520164166 + ], + [ + 6.965060663423586, + 50.941442253719345 + ], + [ + 6.965067507739529, + 50.941539099958746 + ], + [ + 6.96507334293358, + 50.94162166541049 + ], + [ + 6.965078178229076, + 50.94168338209714 + ], + [ + 6.965083522316305, + 50.94174518319938 + ], + [ + 6.965122965064232, + 50.942106312513154 + ], + [ + 6.9651273056273, + 50.94214102491762 + ], + [ + 6.965144261967525, + 50.94226442877893 + ], + [ + 6.965148903146941, + 50.94229721276453 + ], + [ + 6.965162178278916, + 50.942386551569136 + ], + [ + 6.965190284242493, + 50.94256188003059 + ], + [ + 6.9652223685252554, + 50.94273699631692 + ], + [ + 6.965483586446276, + 50.94388277160117 + ], + [ + 6.965917120791922, + 50.94500743360301 + ], + [ + 6.965993824311107, + 50.9451724715542 + ], + [ + 6.966066983238292, + 50.945338168091745 + ], + [ + 6.966094546260219, + 50.945401922918464 + ], + [ + 6.966121352954373, + 50.94545968731593 + ], + [ + 6.96614181511739, + 50.9455021435385 + ], + [ + 6.9665123809110625, + 50.946230804828616 + ], + [ + 6.966955053115072, + 50.946943316719164 + ], + [ + 6.967199009274541, + 50.94730931754311 + ], + [ + 6.967461786290151, + 50.94767012872631 + ], + [ + 6.967531296010864, + 50.94776241132253 + ], + [ + 6.967601228259667, + 50.94785451146218 + ], + [ + 6.967632526959176, + 50.94789524307607 + ], + [ + 6.967655768209704, + 50.94792538458383 + ], + [ + 6.967768793008776, + 50.94807057386825 + ], + [ + 6.96827877264527, + 50.948705843608984 + ], + [ + 6.968838101579479, + 50.9493348159507 + ], + [ + 6.969159736609209, + 50.949682231891245 + ], + [ + 6.969435531933425, + 50.94996618934956 + ], + [ + 6.969463364868972, + 50.94999451805484 + ], + [ + 6.96950117113275, + 50.95003294570223 + ], + [ + 6.9703563504218, + 50.95086903599704 + ], + [ + 6.971372726794044, + 50.951742432471455 + ], + [ + 6.97166242956549, + 50.9519790465353 + ], + [ + 6.971768407592412, + 50.95206454200645 + ], + [ + 6.971800880222077, + 50.95209065553226 + ], + [ + 6.9723313835045255, + 50.952507889035346 + ], + [ + 6.972822702960039, + 50.95287136768028 + ], + [ + 6.972879295946374, + 50.95291255409075 + ], + [ + 6.972913409835197, + 50.952937167758805 + ], + [ + 6.973328963307236, + 50.95323436067021 + ], + [ + 6.973756157534219, + 50.95352501688527 + ], + [ + 6.973852142985552, + 50.95358929884576 + ], + [ + 6.974053613315882, + 50.95372290646286 + ], + [ + 6.974269626131921, + 50.95386291775885 + ], + [ + 6.974355574351307, + 50.95391833090171 + ], + [ + 6.97441374578818, + 50.953957398029026 + ], + [ + 6.974547116125982, + 50.95404662726427 + ], + [ + 6.974782492051637, + 50.95419523244496 + ], + [ + 6.97507339375815, + 50.954371959443634 + ], + [ + 6.9752190883153045, + 50.954458387843594 + ], + [ + 6.97532989540042, + 50.95452344364111 + ], + [ + 6.9755544743115445, + 50.95465236069026 + ], + [ + 6.97594421753768, + 50.95438768211211 + ], + [ + 6.977620922031844, + 50.953247977803755 + ], + [ + 6.9776604920431335, + 50.95321857833271 + ], + [ + 6.977701904823003, + 50.95318726902305 + ], + [ + 6.9779696645003515, + 50.95298089508474 + ], + [ + 6.978131844384365, + 50.952856526262515 + ], + [ + 6.979049074769255, + 50.95224277820107 + ], + [ + 6.979196123449156, + 50.952144409466186 + ], + [ + 6.97926671744097, + 50.95209871738828 + ], + [ + 6.979904671737999, + 50.95168911751395 + ], + [ + 6.980098751295107, + 50.951564348206915 + ], + [ + 6.980910424103743, + 50.95104285169912 + ], + [ + 6.981528622655347, + 50.95064455095525 + ], + [ + 6.981771083469175, + 50.95049474311455 + ], + [ + 6.982021071108649, + 50.95034024783859 + ], + [ + 6.982166954959025, + 50.95024968160793 + ], + [ + 6.982197898509626, + 50.950230636188074 + ], + [ + 6.982251838882104, + 50.95019722591868 + ], + [ + 6.982322855740223, + 50.95015277505942 + ], + [ + 6.982363460296478, + 50.95012588675102 + ], + [ + 6.982392250326074, + 50.95010678967303 + ], + [ + 6.982432260165453, + 50.95008015278054 + ], + [ + 6.982705855562407, + 50.949897995517595 + ], + [ + 6.982750063962851, + 50.949868624123816 + ], + [ + 6.9828414122548645, + 50.94980774106598 + ], + [ + 6.982675369033338, + 50.94973904699409 + ], + [ + 6.982639953084586, + 50.9497240513598 + ], + [ + 6.982557700158292, + 50.949689943233984 + ], + [ + 6.982519270290836, + 50.9496799751358 + ], + [ + 6.9824802267829105, + 50.949669875904576 + ], + [ + 6.982343381529773, + 50.94963428637308 + ], + [ + 6.982290483061128, + 50.949620581280854 + ], + [ + 6.982177134186298, + 50.94958677097342 + ], + [ + 6.982107787511327, + 50.949565793386704 + ], + [ + 6.9819119888074, + 50.94949587160463 + ], + [ + 6.981881927576898, + 50.94947411597982 + ], + [ + 6.981838741559781, + 50.949457830989154 + ], + [ + 6.981736745062858, + 50.9494352580887 + ], + [ + 6.981311120458189, + 50.949292544656295 + ], + [ + 6.981253303755192, + 50.94925692177775 + ], + [ + 6.98109493415446, + 50.949175193099116 + ], + [ + 6.9807192997430265, + 50.949042174688074 + ], + [ + 6.980452323685045, + 50.94881986982277 + ], + [ + 6.980417031167964, + 50.94879352015844 + ], + [ + 6.980222501843967, + 50.94865008563977 + ], + [ + 6.98019115220267, + 50.948627242421054 + ], + [ + 6.980133776312078, + 50.94858424904571 + ], + [ + 6.980056676229394, + 50.948522965591415 + ], + [ + 6.980021437226699, + 50.94849493220421 + ], + [ + 6.979953494228304, + 50.9484408204271 + ], + [ + 6.979924122672948, + 50.94841718303856 + ], + [ + 6.979690172965135, + 50.94823019779163 + ], + [ + 6.979662788732184, + 50.94820831072946 + ], + [ + 6.979578737554574, + 50.948141059833226 + ], + [ + 6.979540972952675, + 50.94811096979082 + ], + [ + 6.97948107867262, + 50.948063076784855 + ], + [ + 6.978960199614299, + 50.94764745421485 + ], + [ + 6.978933001803229, + 50.94762571590113 + ], + [ + 6.978653792956947, + 50.947402289333894 + ], + [ + 6.978494527983627, + 50.94727467170648 + ], + [ + 6.97838004928948, + 50.94716964640225 + ], + [ + 6.978352292169043, + 50.94714411010318 + ], + [ + 6.9783150838303545, + 50.9471097347757 + ], + [ + 6.978180769800973, + 50.94692557978075 + ], + [ + 6.978234557625713, + 50.94689831952916 + ], + [ + 6.978274745594471, + 50.946882824075225 + ], + [ + 6.978685206533484, + 50.94672611068633 + ], + [ + 6.979158188723745, + 50.94654955150912 + ], + [ + 6.979209766842773, + 50.94653031364414 + ], + [ + 6.979520295438402, + 50.946414620120876 + ], + [ + 6.979984867193477, + 50.946242366657636 + ], + [ + 6.980211313753695, + 50.94615836550988 + ], + [ + 6.980622982093632, + 50.94600568285246 + ], + [ + 6.980688742631721, + 50.945981291621436 + ], + [ + 6.980825087240276, + 50.94593072537746 + ], + [ + 6.981729203720897, + 50.945595403235714 + ], + [ + 6.98276663130148, + 50.9452105855447 + ], + [ + 6.983263898991215, + 50.945026298267166 + ], + [ + 6.983330026050496, + 50.945002813962844 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Deutz", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "105", + "Population_rel": 0.014260505128487923, + "Population_abs": 15516 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.994359341598065, + 50.85835989408827 + ], + [ + 6.994368616073224, + 50.858355230130975 + ], + [ + 6.9943830127650966, + 50.85835097260926 + ], + [ + 6.994429308042759, + 50.85833736302331 + ], + [ + 6.994423362408377, + 50.85832491857686 + ], + [ + 6.994420388661454, + 50.858318651818074 + ], + [ + 6.994405808435618, + 50.858287582004785 + ], + [ + 6.994297086371133, + 50.8583242875237 + ], + [ + 6.994257056811482, + 50.858338742270774 + ], + [ + 6.99420886297326, + 50.85835659211912 + ], + [ + 6.9941382416330065, + 50.85818144978725 + ], + [ + 6.994008536615451, + 50.85781263908451 + ], + [ + 6.993868174513637, + 50.85751035043936 + ], + [ + 6.993839112131934, + 50.85744605382348 + ], + [ + 6.993828088913321, + 50.85742187591315 + ], + [ + 6.993687995074239, + 50.85711203321205 + ], + [ + 6.993610674481355, + 50.85675527066671 + ], + [ + 6.993601371679355, + 50.85671184132866 + ], + [ + 6.99357946310333, + 50.85660990703572 + ], + [ + 6.9935558746018405, + 50.85653585532173 + ], + [ + 6.993518967276937, + 50.85645652270193 + ], + [ + 6.993507199875084, + 50.856437475532594 + ], + [ + 6.993502928842432, + 50.856430320329295 + ], + [ + 6.993489399181701, + 50.856408500628575 + ], + [ + 6.993427046020798, + 50.85628803412191 + ], + [ + 6.9932660461504295, + 50.85597648128168 + ], + [ + 6.993254818736712, + 50.85596273354843 + ], + [ + 6.993154605050067, + 50.855838273537096 + ], + [ + 6.9930420365809445, + 50.85571382844548 + ], + [ + 6.992995757153646, + 50.85567466909005 + ], + [ + 6.992948897926178, + 50.85563488456238 + ], + [ + 6.9929220001744925, + 50.85561219085484 + ], + [ + 6.992847075959709, + 50.8555616785805 + ], + [ + 6.992825894310076, + 50.8555472954663 + ], + [ + 6.992715957782294, + 50.85547316909483 + ], + [ + 6.992400786477917, + 50.85521093140661 + ], + [ + 6.992504501780114, + 50.855079162061905 + ], + [ + 6.990627448105891, + 50.85434641651843 + ], + [ + 6.990626247735949, + 50.85434594795051 + ], + [ + 6.990738242581328, + 50.85422948186811 + ], + [ + 6.991238526479954, + 50.85389297975209 + ], + [ + 6.99125126833698, + 50.85388442115184 + ], + [ + 6.991641434998333, + 50.853619151108845 + ], + [ + 6.992424029537203, + 50.85315573923774 + ], + [ + 6.992893512078234, + 50.8533223633846 + ], + [ + 6.993188711488518, + 50.853440488857615 + ], + [ + 6.9935142249078215, + 50.85357498568667 + ], + [ + 6.994563505968116, + 50.85290495525936 + ], + [ + 6.9940509394823325, + 50.852568983184966 + ], + [ + 6.9941069612425935, + 50.85255223485047 + ], + [ + 6.995151899575942, + 50.85176645203105 + ], + [ + 6.995273765163726, + 50.85164747021097 + ], + [ + 6.995273815592497, + 50.85164742071203 + ], + [ + 6.995288095777952, + 50.85163350439579 + ], + [ + 6.99530242638355, + 50.85161953857873 + ], + [ + 6.995302469366802, + 50.85161949704627 + ], + [ + 6.997234518144501, + 50.84969294685118 + ], + [ + 6.996312126451932, + 50.84931580928541 + ], + [ + 6.994240153627327, + 50.84845935546325 + ], + [ + 6.994005062457603, + 50.84836193283396 + ], + [ + 6.9938324320239085, + 50.84829023240025 + ], + [ + 6.99371438305286, + 50.84824116805672 + ], + [ + 6.992280312043809, + 50.84764415930145 + ], + [ + 6.990849762802447, + 50.847043958205795 + ], + [ + 6.990771268779617, + 50.84701172412512 + ], + [ + 6.990139981890123, + 50.8467511766839 + ], + [ + 6.989429641534545, + 50.84645839462555 + ], + [ + 6.989273512856329, + 50.846394186613125 + ], + [ + 6.989115226978892, + 50.846328915004975 + ], + [ + 6.988720026995575, + 50.846166050594974 + ], + [ + 6.988521644262446, + 50.84608431163363 + ], + [ + 6.988402183694319, + 50.84603516172921 + ], + [ + 6.988010424202158, + 50.845873703283054 + ], + [ + 6.987299554182916, + 50.845581363001656 + ], + [ + 6.986667608501989, + 50.845321429972394 + ], + [ + 6.98647223160852, + 50.845240649527035 + ], + [ + 6.985912748170722, + 50.84499592240678 + ], + [ + 6.985021590909863, + 50.84456934988156 + ], + [ + 6.9842355038499235, + 50.84410242459432 + ], + [ + 6.983946422107591, + 50.84394476535949 + ], + [ + 6.983871036630024, + 50.84389759380372 + ], + [ + 6.9838335607446655, + 50.843873921816304 + ], + [ + 6.983776175307827, + 50.84383758411458 + ], + [ + 6.983719223552668, + 50.84380107400234 + ], + [ + 6.983662421584092, + 50.843764386573206 + ], + [ + 6.983467118286546, + 50.84363545631016 + ], + [ + 6.983275315802602, + 50.8435044277047 + ], + [ + 6.983087010251418, + 50.84337139064565 + ], + [ + 6.982781634687457, + 50.84314333234645 + ], + [ + 6.98269990924149, + 50.84307863825251 + ], + [ + 6.982677632132184, + 50.8430610036755 + ], + [ + 6.982486722501544, + 50.84290987798507 + ], + [ + 6.982203546264558, + 50.84267228181267 + ], + [ + 6.982202265878821, + 50.8426712073829 + ], + [ + 6.9819285408795775, + 50.84242750526939 + ], + [ + 6.981665961610719, + 50.842179048700935 + ], + [ + 6.981414524091126, + 50.84192592762275 + ], + [ + 6.981174500453452, + 50.841668416632686 + ], + [ + 6.980946162812415, + 50.841406790327405 + ], + [ + 6.980729652967322, + 50.841141051230395 + ], + [ + 6.980686801340324, + 50.84108077001997 + ], + [ + 6.980644529218782, + 50.84102022900809 + ], + [ + 6.980603085755756, + 50.840959908284376 + ], + [ + 6.980469508699412, + 50.84099111690684 + ], + [ + 6.978118819142935, + 50.84154615180062 + ], + [ + 6.978008400223507, + 50.84156699243402 + ], + [ + 6.977968733072263, + 50.84157439935286 + ], + [ + 6.97787994518608, + 50.84159102793107 + ], + [ + 6.977871343950749, + 50.841591297948135 + ], + [ + 6.977864421136834, + 50.841588690238616 + ], + [ + 6.977749856665983, + 50.84154443304447 + ], + [ + 6.977454928045959, + 50.84143040408858 + ], + [ + 6.976888827670327, + 50.84121147998507 + ], + [ + 6.9768615345265355, + 50.8412086682302 + ], + [ + 6.976809641201891, + 50.84120318134578 + ], + [ + 6.976789985556383, + 50.84120113160722 + ], + [ + 6.976761560801617, + 50.84119821026366 + ], + [ + 6.976668944618119, + 50.841188419459385 + ], + [ + 6.976576690527261, + 50.84128845010814 + ], + [ + 6.976551217384248, + 50.841315799339775 + ], + [ + 6.976390115904978, + 50.841489953036195 + ], + [ + 6.976389629537235, + 50.841490491426846 + ], + [ + 6.9761375258852265, + 50.84176344317987 + ], + [ + 6.975704105821748, + 50.84223349772971 + ], + [ + 6.975658930488693, + 50.84228280969074 + ], + [ + 6.975648539368111, + 50.84229315220578 + ], + [ + 6.975644354908056, + 50.84229793628461 + ], + [ + 6.9755672964785695, + 50.842382065144406 + ], + [ + 6.975386425911308, + 50.842579375393036 + ], + [ + 6.975348248072476, + 50.84262125382411 + ], + [ + 6.975301279167734, + 50.84267260311058 + ], + [ + 6.975230548751799, + 50.84274125789058 + ], + [ + 6.975197175583901, + 50.84277386603501 + ], + [ + 6.975163963769496, + 50.84280602727686 + ], + [ + 6.974665983177923, + 50.843290336910286 + ], + [ + 6.974311430201064, + 50.843608230104614 + ], + [ + 6.974004449607065, + 50.84379876231859 + ], + [ + 6.974003708037393, + 50.843799222517404 + ], + [ + 6.973676045801456, + 50.84413233077942 + ], + [ + 6.9736664740659675, + 50.84412790771465 + ], + [ + 6.973626620492728, + 50.84410948941016 + ], + [ + 6.973421051235688, + 50.84401448841598 + ], + [ + 6.97237441755541, + 50.84347672484903 + ], + [ + 6.972051746733893, + 50.84328179476457 + ], + [ + 6.971693921318667, + 50.84306556660276 + ], + [ + 6.971653482810999, + 50.84303660110929 + ], + [ + 6.97143821934405, + 50.84288241194344 + ], + [ + 6.971326345241556, + 50.84280239956501 + ], + [ + 6.970695650089909, + 50.842350459718276 + ], + [ + 6.970691709268523, + 50.842346343916695 + ], + [ + 6.970625163093085, + 50.84227260562754 + ], + [ + 6.970497357458787, + 50.8421309769911 + ], + [ + 6.9701938981819405, + 50.84179490206547 + ], + [ + 6.96959872680229, + 50.84134977997493 + ], + [ + 6.969512052376724, + 50.84128495437937 + ], + [ + 6.969484696264855, + 50.84126397215036 + ], + [ + 6.969421875096359, + 50.84121575067802 + ], + [ + 6.969340083147818, + 50.84115298859458 + ], + [ + 6.9692012301812225, + 50.84104021641561 + ], + [ + 6.969130761600929, + 50.84098493635528 + ], + [ + 6.968849543949242, + 50.84072911070385 + ], + [ + 6.968790729641819, + 50.84066826827207 + ], + [ + 6.96846063218304, + 50.84032678714764 + ], + [ + 6.968347396563836, + 50.84019008660683 + ], + [ + 6.968209526024399, + 50.839992697817536 + ], + [ + 6.968163202589522, + 50.83990483012275 + ], + [ + 6.967992915627286, + 50.83958069215657 + ], + [ + 6.967878601332136, + 50.83938389315203 + ], + [ + 6.967716789215769, + 50.8392080317461 + ], + [ + 6.967444853304336, + 50.83897763706916 + ], + [ + 6.967418149774222, + 50.83896378437014 + ], + [ + 6.9671944039596845, + 50.83884771818286 + ], + [ + 6.966837225608137, + 50.83869956967944 + ], + [ + 6.966753244639332, + 50.838664468745655 + ], + [ + 6.966447604532994, + 50.838575677643696 + ], + [ + 6.9663781697412945, + 50.83855558000088 + ], + [ + 6.966323472714139, + 50.83854015615522 + ], + [ + 6.966142194752026, + 50.83848814889332 + ], + [ + 6.966044130945633, + 50.83846008695366 + ], + [ + 6.966417123989567, + 50.839678671632335 + ], + [ + 6.966555403660694, + 50.84022121028078 + ], + [ + 6.9669100292455095, + 50.84161361868096 + ], + [ + 6.966923656169856, + 50.841682095503074 + ], + [ + 6.967162311124938, + 50.8428826403385 + ], + [ + 6.967167752736778, + 50.84291918198837 + ], + [ + 6.967177386617966, + 50.84300737932593 + ], + [ + 6.96728542165205, + 50.844228153646384 + ], + [ + 6.967361598929247, + 50.845089292658535 + ], + [ + 6.967365123363167, + 50.84512922754864 + ], + [ + 6.967375891916768, + 50.84525166543003 + ], + [ + 6.967383473512001, + 50.84533673216037 + ], + [ + 6.967397366827748, + 50.84549343271202 + ], + [ + 6.967418066347715, + 50.84584183412101 + ], + [ + 6.967430513189011, + 50.84605217504355 + ], + [ + 6.967473258229637, + 50.846772776535694 + ], + [ + 6.967490374192718, + 50.847057780519364 + ], + [ + 6.96752074655872, + 50.84757154722502 + ], + [ + 6.9675207834885935, + 50.8475733448455 + ], + [ + 6.967520823609665, + 50.84757523246038 + ], + [ + 6.967527765150432, + 50.84769104886168 + ], + [ + 6.967540863376666, + 50.84782308595754 + ], + [ + 6.967560780180093, + 50.84805808504609 + ], + [ + 6.967596704889833, + 50.84838041925195 + ], + [ + 6.967635863424412, + 50.84876295632185 + ], + [ + 6.967636777857867, + 50.848772837636716 + ], + [ + 6.9676343524238655, + 50.8487928139548 + ], + [ + 6.967610596050514, + 50.8489005253771 + ], + [ + 6.967589698394899, + 50.84900227958673 + ], + [ + 6.967689156420307, + 50.84945776055475 + ], + [ + 6.967762728364374, + 50.8498287750674 + ], + [ + 6.9677705192987975, + 50.84986898300024 + ], + [ + 6.967966825810197, + 50.85218241250134 + ], + [ + 6.968026740983214, + 50.85225715728036 + ], + [ + 6.968068864815051, + 50.85230948611424 + ], + [ + 6.9680988120573435, + 50.85266360178182 + ], + [ + 6.968101612259895, + 50.852694137079354 + ], + [ + 6.968219808119867, + 50.85390736960568 + ], + [ + 6.9682284686333675, + 50.854045046596 + ], + [ + 6.96826474905916, + 50.85462174925056 + ], + [ + 6.968407445886852, + 50.855951857755244 + ], + [ + 6.968412759789492, + 50.855986811417786 + ], + [ + 6.968672780667303, + 50.860260508483144 + ], + [ + 6.968717696369347, + 50.86098135963427 + ], + [ + 6.9688650802881815, + 50.861348792952555 + ], + [ + 6.9689191484056, + 50.8614834558166 + ], + [ + 6.96895884418547, + 50.861863380101205 + ], + [ + 6.968964996808703, + 50.861920322096054 + ], + [ + 6.969010204771992, + 50.8623535976197 + ], + [ + 6.969048091150326, + 50.862714658980025 + ], + [ + 6.969052836303446, + 50.86277907374024 + ], + [ + 6.969060822991029, + 50.86294495335874 + ], + [ + 6.969068572657765, + 50.86316108471702 + ], + [ + 6.969072493846504, + 50.86326793702949 + ], + [ + 6.969136336440264, + 50.86373665598372 + ], + [ + 6.969382712964779, + 50.863804507467876 + ], + [ + 6.969726638580777, + 50.86389922347115 + ], + [ + 6.969776591778097, + 50.863910673990624 + ], + [ + 6.969783870368333, + 50.86391232150641 + ], + [ + 6.970029310463894, + 50.863966374933476 + ], + [ + 6.970030451720524, + 50.863966634926 + ], + [ + 6.971250924714397, + 50.86420000230014 + ], + [ + 6.972292876573402, + 50.86430458778026 + ], + [ + 6.973120314965365, + 50.86433966819397 + ], + [ + 6.973578271364096, + 50.8643669499461 + ], + [ + 6.973961383443751, + 50.86438802319684 + ], + [ + 6.9743638277881645, + 50.86441657374297 + ], + [ + 6.974519604725478, + 50.864434690042366 + ], + [ + 6.975330788940512, + 50.86449492335744 + ], + [ + 6.975987590218274, + 50.864545532377896 + ], + [ + 6.975993630291019, + 50.86454612012872 + ], + [ + 6.976989701317228, + 50.86464303586843 + ], + [ + 6.978335580321781, + 50.8648299228681 + ], + [ + 6.980055673642483, + 50.86519735384002 + ], + [ + 6.980142385905879, + 50.865220627323914 + ], + [ + 6.9809615472656334, + 50.86542867876334 + ], + [ + 6.981848597647495, + 50.86568990918398 + ], + [ + 6.982963185341165, + 50.86605735980704 + ], + [ + 6.983597259142531, + 50.86623737687849 + ], + [ + 6.98367244046365, + 50.86625939885077 + ], + [ + 6.983675727798563, + 50.866260451278656 + ], + [ + 6.983686165593703, + 50.86626350518981 + ], + [ + 6.984363768075279, + 50.8664327231002 + ], + [ + 6.984538989136958, + 50.86646971973268 + ], + [ + 6.984662558715571, + 50.86649591452664 + ], + [ + 6.98466384229061, + 50.866496173235724 + ], + [ + 6.984665698160298, + 50.86649660731659 + ], + [ + 6.984667267921455, + 50.86649695281283 + ], + [ + 6.984670261163297, + 50.86649737775919 + ], + [ + 6.985130011183256, + 50.8665948966871 + ], + [ + 6.985325053447146, + 50.866622014728506 + ], + [ + 6.987354142025981, + 50.86688415884459 + ], + [ + 6.988022343989318, + 50.8669503262628 + ], + [ + 6.9896909992317795, + 50.86710859640841 + ], + [ + 6.990125175627981, + 50.86715649734387 + ], + [ + 6.9905013274830665, + 50.86719799473088 + ], + [ + 6.990591163265293, + 50.86717386005404 + ], + [ + 6.990650759949777, + 50.86714395754842 + ], + [ + 6.990723452403289, + 50.86708185239379 + ], + [ + 6.990841744165695, + 50.86699293036807 + ], + [ + 6.99098871813561, + 50.86693684659705 + ], + [ + 6.9911488291812836, + 50.866910854628415 + ], + [ + 6.991338912780729, + 50.86688478844892 + ], + [ + 6.993215226046443, + 50.866627278228805 + ], + [ + 6.993223583900836, + 50.8666261286688 + ], + [ + 6.99394612004985, + 50.866528551196055 + ], + [ + 6.994416868063639, + 50.86640767527732 + ], + [ + 6.995152366773298, + 50.86621864633756 + ], + [ + 6.996108328727747, + 50.86590331638822 + ], + [ + 6.996673129441987, + 50.865717174067925 + ], + [ + 6.99699838683495, + 50.86556229235406 + ], + [ + 6.997022010752934, + 50.86555103292482 + ], + [ + 6.997203550735243, + 50.865464530371106 + ], + [ + 6.996963354393782, + 50.865172179293225 + ], + [ + 6.9967218887757525, + 50.864733578924664 + ], + [ + 6.996566427325003, + 50.864178099701164 + ], + [ + 6.996541036251767, + 50.863918744091116 + ], + [ + 6.996528106182295, + 50.863786666297365 + ], + [ + 6.996590169548004, + 50.86332012236299 + ], + [ + 6.996756966398868, + 50.86260960778172 + ], + [ + 6.997192343042415, + 50.861658934911354 + ], + [ + 6.997316581062776, + 50.861404010473194 + ], + [ + 6.997220152102472, + 50.86139800220416 + ], + [ + 6.997161643321915, + 50.86139185066216 + ], + [ + 6.99715353274279, + 50.86139120058246 + ], + [ + 6.996278675106495, + 50.86132226641393 + ], + [ + 6.99578564553988, + 50.861301396463226 + ], + [ + 6.995660678911046, + 50.861295991219286 + ], + [ + 6.9954317923191285, + 50.8612862587488 + ], + [ + 6.995381691634347, + 50.86128138219708 + ], + [ + 6.995340784783063, + 50.861161361799624 + ], + [ + 6.99526257164316, + 50.86086366941182 + ], + [ + 6.995207981858688, + 50.86068137889882 + ], + [ + 6.995206599043967, + 50.86067644630484 + ], + [ + 6.995203387209775, + 50.86066568665779 + ], + [ + 6.995179680696179, + 50.86058633235288 + ], + [ + 6.99501646184432, + 50.86010516996328 + ], + [ + 6.994963215829542, + 50.85993922889953 + ], + [ + 6.994938123892662, + 50.859861413851036 + ], + [ + 6.994913175972594, + 50.85978368851098 + ], + [ + 6.994711802118121, + 50.85915128881856 + ], + [ + 6.994659810235895, + 50.85907747857949 + ], + [ + 6.994572963146779, + 50.8589542542649 + ], + [ + 6.994515482846281, + 50.85882277918751 + ], + [ + 6.994510715966551, + 50.858812302174144 + ], + [ + 6.994490853854911, + 50.85876662553398 + ], + [ + 6.994488312428652, + 50.85876071427036 + ], + [ + 6.99448353684773, + 50.85874987735278 + ], + [ + 6.9944581032147095, + 50.858682673526 + ], + [ + 6.994454421215346, + 50.85866310800273 + ], + [ + 6.994452970343996, + 50.85865502908384 + ], + [ + 6.994448719575693, + 50.8586288163336 + ], + [ + 6.994453035977178, + 50.85860468812544 + ], + [ + 6.994455949353464, + 50.85858812209804 + ], + [ + 6.9944100086512195, + 50.85856505104185 + ], + [ + 6.9943718945164255, + 50.8584892352635 + ], + [ + 6.994304942308029, + 50.85842652058809 + ], + [ + 6.994311675288304, + 50.858382504490415 + ], + [ + 6.9943329112679, + 50.85837261479248 + ], + [ + 6.994359341598065, + 50.85835989408827 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Godorf", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "211", + "Population_rel": 0.002508179846329179, + "Population_abs": 2729 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.09505454086833, + 50.87629296174316 + ], + [ + 7.095155510156514, + 50.875206262465085 + ], + [ + 7.095241361524474, + 50.87258456840254 + ], + [ + 7.0954655042647, + 50.870383810195655 + ], + [ + 7.09550824485441, + 50.86981958689318 + ], + [ + 7.0961062151936956, + 50.864807890787 + ], + [ + 7.095963781632232, + 50.86480356635822 + ], + [ + 7.095780945036224, + 50.86479665412617 + ], + [ + 7.0954856333506875, + 50.86479102028996 + ], + [ + 7.095083174945195, + 50.86478334146899 + ], + [ + 7.0950112761473045, + 50.864782397856416 + ], + [ + 7.094884080029854, + 50.86478574969481 + ], + [ + 7.092326775733031, + 50.86480973385091 + ], + [ + 7.091665768081162, + 50.86483164920029 + ], + [ + 7.091480301545007, + 50.86483374478437 + ], + [ + 7.091278524097696, + 50.86483689172779 + ], + [ + 7.091020136022649, + 50.86485504090925 + ], + [ + 7.0907341932359556, + 50.86487335740103 + ], + [ + 7.090534205331224, + 50.86488619429535 + ], + [ + 7.0898156153490355, + 50.864930307550225 + ], + [ + 7.088793111408539, + 50.864995772271044 + ], + [ + 7.088621943746486, + 50.86500797803299 + ], + [ + 7.088620787591928, + 50.86503190038361 + ], + [ + 7.0886200613403005, + 50.865043054193364 + ], + [ + 7.088671140964923, + 50.86507709756805 + ], + [ + 7.088616010225751, + 50.86555189851471 + ], + [ + 7.088560384526729, + 50.8660177146651 + ], + [ + 7.0885234133515285, + 50.86632702904036 + ], + [ + 7.088452356893283, + 50.86692926987415 + ], + [ + 7.088026820816246, + 50.86691966608409 + ], + [ + 7.083782983335625, + 50.86682379762801 + ], + [ + 7.0838363739392145, + 50.866020808014994 + ], + [ + 7.0836907079358085, + 50.8660242292764 + ], + [ + 7.083535099747305, + 50.866027742477556 + ], + [ + 7.082093675459711, + 50.86601751364213 + ], + [ + 7.082081864562294, + 50.86601742922461 + ], + [ + 7.0820808174448, + 50.86601742190571 + ], + [ + 7.08161509203801, + 50.86601800116842 + ], + [ + 7.0816103521306495, + 50.86601800687882 + ], + [ + 7.081308644855215, + 50.86601838103579 + ], + [ + 7.081245424107307, + 50.866011955064 + ], + [ + 7.079923167779596, + 50.86612093276385 + ], + [ + 7.079036460642368, + 50.86620015674787 + ], + [ + 7.078927036490003, + 50.86621060824133 + ], + [ + 7.078075684534914, + 50.86629786733968 + ], + [ + 7.0780764570142285, + 50.866187936182264 + ], + [ + 7.078019435905269, + 50.86618941803901 + ], + [ + 7.077311851421498, + 50.866202342005145 + ], + [ + 7.077174116428442, + 50.8662047849895 + ], + [ + 7.077129814393127, + 50.86620555595675 + ], + [ + 7.076471452232971, + 50.86621945418019 + ], + [ + 7.076099014112945, + 50.86622729718024 + ], + [ + 7.075801274750539, + 50.86623363950078 + ], + [ + 7.075621378795212, + 50.86623727763565 + ], + [ + 7.075011052947239, + 50.86625288172459 + ], + [ + 7.074856148047608, + 50.86625149786654 + ], + [ + 7.074717633325764, + 50.86625585244366 + ], + [ + 7.074567265936852, + 50.866258409480785 + ], + [ + 7.074288818777318, + 50.86672060802578 + ], + [ + 7.07424603091598, + 50.86679345710432 + ], + [ + 7.073615130795671, + 50.86786722038298 + ], + [ + 7.073609698701439, + 50.86787646080015 + ], + [ + 7.072823274999194, + 50.86921498446235 + ], + [ + 7.072779842517821, + 50.86928928923168 + ], + [ + 7.07268753861622, + 50.869445597456625 + ], + [ + 7.072331527014278, + 50.87005286782968 + ], + [ + 7.072059819048049, + 50.870513559792265 + ], + [ + 7.071631213063261, + 50.87123207357139 + ], + [ + 7.071627247144863, + 50.871238762321646 + ], + [ + 7.071220146987884, + 50.87194161485906 + ], + [ + 7.071094634437582, + 50.8721617518079 + ], + [ + 7.070248626285472, + 50.873551471753274 + ], + [ + 7.070250054715592, + 50.87355181825169 + ], + [ + 7.070430681930174, + 50.87359115259798 + ], + [ + 7.07168499759396, + 50.873798888159754 + ], + [ + 7.072172578449505, + 50.87387836845946 + ], + [ + 7.072216217020522, + 50.873885518144235 + ], + [ + 7.072247443842082, + 50.87389035552962 + ], + [ + 7.073956495565858, + 50.87418171199464 + ], + [ + 7.073991879463079, + 50.8742252554735 + ], + [ + 7.074073324938015, + 50.874239157714 + ], + [ + 7.0741479265471465, + 50.87421491877267 + ], + [ + 7.07621858062021, + 50.874610605276665 + ], + [ + 7.076234564148496, + 50.87461369461962 + ], + [ + 7.0763029235795285, + 50.87462690737916 + ], + [ + 7.076415380217619, + 50.8746485231937 + ], + [ + 7.076699372524697, + 50.87470307466511 + ], + [ + 7.0769889441588845, + 50.87475919325867 + ], + [ + 7.077800714071612, + 50.874916381689665 + ], + [ + 7.077932850837914, + 50.87494114065479 + ], + [ + 7.078102090240255, + 50.87497292669598 + ], + [ + 7.079978253861845, + 50.87533573519426 + ], + [ + 7.080019195476943, + 50.875342817780506 + ], + [ + 7.08002747047618, + 50.87534435965562 + ], + [ + 7.081008779235102, + 50.875532857551526 + ], + [ + 7.080803865064247, + 50.87589361694254 + ], + [ + 7.080787436712669, + 50.87592046819054 + ], + [ + 7.080950528321537, + 50.87594421649019 + ], + [ + 7.081125993980875, + 50.875974683094086 + ], + [ + 7.0811292955979654, + 50.875963864884504 + ], + [ + 7.08129046926406, + 50.87566544785355 + ], + [ + 7.081415733304753, + 50.87569386270228 + ], + [ + 7.081440435932435, + 50.87564392114067 + ], + [ + 7.081491384128365, + 50.87565369676601 + ], + [ + 7.081642692812783, + 50.87569013926745 + ], + [ + 7.081778712156834, + 50.875728971686016 + ], + [ + 7.08184420223244, + 50.875716318448 + ], + [ + 7.081932799375762, + 50.87571981098329 + ], + [ + 7.0821484566979205, + 50.87576788175679 + ], + [ + 7.082406276574034, + 50.87582050511814 + ], + [ + 7.082433564811317, + 50.87583930972833 + ], + [ + 7.0824309034140684, + 50.875877719518485 + ], + [ + 7.082220920952736, + 50.87600093609925 + ], + [ + 7.082130891465874, + 50.87605831578636 + ], + [ + 7.082127466645463, + 50.876063831102606 + ], + [ + 7.082079826971525, + 50.87612333386046 + ], + [ + 7.082132772664977, + 50.87613336057995 + ], + [ + 7.082212731913933, + 50.87615032741004 + ], + [ + 7.082203260383694, + 50.87618304736697 + ], + [ + 7.082178653775569, + 50.876267777448504 + ], + [ + 7.08217392300419, + 50.87628436145108 + ], + [ + 7.08233424683438, + 50.876305078199444 + ], + [ + 7.082350111927957, + 50.87626007356409 + ], + [ + 7.0824061968530705, + 50.87626458643779 + ], + [ + 7.082574348838337, + 50.87628585960023 + ], + [ + 7.082681526565375, + 50.87630014714293 + ], + [ + 7.082769036728701, + 50.8763118297382 + ], + [ + 7.082791697805682, + 50.87631485611044 + ], + [ + 7.082944753395838, + 50.876303996187076 + ], + [ + 7.083091784472595, + 50.87588021485384 + ], + [ + 7.085205468280936, + 50.87626851078478 + ], + [ + 7.085976829051288, + 50.876384217580544 + ], + [ + 7.087681356667164, + 50.876363840115154 + ], + [ + 7.089198808480217, + 50.87635165709558 + ], + [ + 7.0931458602620365, + 50.876295854159345 + ], + [ + 7.09505454086833, + 50.87629296174316 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Elsdorf", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "708", + "Population_rel": 0.0015753097312598801, + "Population_abs": 1714 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.955816566257614, + 50.8677559896183 + ], + [ + 6.955897290099025, + 50.86772980172618 + ], + [ + 6.955937736517349, + 50.86774870761266 + ], + [ + 6.958341205109696, + 50.86696029658849 + ], + [ + 6.960271908223002, + 50.8663269323504 + ], + [ + 6.960277830493332, + 50.86632481530054 + ], + [ + 6.960300945753613, + 50.86628830769566 + ], + [ + 6.960308242268398, + 50.86627701124986 + ], + [ + 6.960372249815913, + 50.866253470840356 + ], + [ + 6.960442072474366, + 50.86627096491354 + ], + [ + 6.963570315653972, + 50.86524382857071 + ], + [ + 6.965176913975745, + 50.86471580859421 + ], + [ + 6.965185098457684, + 50.864713133558794 + ], + [ + 6.965216495807673, + 50.86464464427639 + ], + [ + 6.9651502065900015, + 50.86455754555095 + ], + [ + 6.9652404393650755, + 50.864538550280855 + ], + [ + 6.96525826037485, + 50.864534806644535 + ], + [ + 6.965483175396881, + 50.86455811604941 + ], + [ + 6.965936430199026, + 50.86441304870356 + ], + [ + 6.966046621357512, + 50.86448683873779 + ], + [ + 6.966261784432982, + 50.8644026232497 + ], + [ + 6.96662235438784, + 50.86428861589724 + ], + [ + 6.967057902031763, + 50.864153129761426 + ], + [ + 6.967219109386616, + 50.86410441817308 + ], + [ + 6.967496317281254, + 50.864012134662026 + ], + [ + 6.9678509459769415, + 50.86394078312893 + ], + [ + 6.968244182397379, + 50.863929787881524 + ], + [ + 6.968323198256894, + 50.86393164952159 + ], + [ + 6.968367110178908, + 50.8639326327256 + ], + [ + 6.968432906749422, + 50.8639340644374 + ], + [ + 6.968902461629142, + 50.86404145447398 + ], + [ + 6.969000867810123, + 50.86403991716176 + ], + [ + 6.969006158725249, + 50.864027917925334 + ], + [ + 6.9690764754539885, + 50.86387064683992 + ], + [ + 6.969123577809139, + 50.863765259205735 + ], + [ + 6.969136336440264, + 50.86373665598372 + ], + [ + 6.969072493846504, + 50.86326793702949 + ], + [ + 6.969068572657765, + 50.86316108471702 + ], + [ + 6.969060822991029, + 50.86294495335874 + ], + [ + 6.969052836303446, + 50.86277907374024 + ], + [ + 6.969048091150326, + 50.862714658980025 + ], + [ + 6.969010204771992, + 50.8623535976197 + ], + [ + 6.968964996808703, + 50.861920322096054 + ], + [ + 6.96895884418547, + 50.861863380101205 + ], + [ + 6.9689191484056, + 50.8614834558166 + ], + [ + 6.9688650802881815, + 50.861348792952555 + ], + [ + 6.968717696369347, + 50.86098135963427 + ], + [ + 6.968672780667303, + 50.860260508483144 + ], + [ + 6.968412759789492, + 50.855986811417786 + ], + [ + 6.968407445886852, + 50.855951857755244 + ], + [ + 6.96826474905916, + 50.85462174925056 + ], + [ + 6.9682284686333675, + 50.854045046596 + ], + [ + 6.968219808119867, + 50.85390736960568 + ], + [ + 6.968108724881366, + 50.852768206772026 + ], + [ + 6.9681061863544285, + 50.85274217656593 + ], + [ + 6.968101502667178, + 50.852694141466316 + ], + [ + 6.9680988120573435, + 50.85266360178182 + ], + [ + 6.968068864815051, + 50.85230948611424 + ], + [ + 6.968026740983214, + 50.85225715728036 + ], + [ + 6.967966825810197, + 50.85218241250134 + ], + [ + 6.9677705192987975, + 50.84986898300024 + ], + [ + 6.967762728364374, + 50.8498287750674 + ], + [ + 6.967689156420307, + 50.84945776055475 + ], + [ + 6.967589698394899, + 50.84900227958673 + ], + [ + 6.967610596050514, + 50.8489005253771 + ], + [ + 6.9676343524238655, + 50.8487928139548 + ], + [ + 6.967636777857867, + 50.848772837636716 + ], + [ + 6.967635863424412, + 50.84876295632185 + ], + [ + 6.967596704889833, + 50.84838041925195 + ], + [ + 6.967560780180093, + 50.84805808504609 + ], + [ + 6.967540863376666, + 50.84782308595754 + ], + [ + 6.967527765150432, + 50.84769104886168 + ], + [ + 6.967520823609665, + 50.84757523246038 + ], + [ + 6.9675207834885935, + 50.8475733448455 + ], + [ + 6.96752074655872, + 50.84757154722502 + ], + [ + 6.967490374192718, + 50.847057780519364 + ], + [ + 6.967473258229637, + 50.846772776535694 + ], + [ + 6.967430513189011, + 50.84605217504355 + ], + [ + 6.967418066347715, + 50.84584183412101 + ], + [ + 6.967397366827748, + 50.84549343271202 + ], + [ + 6.967383473512001, + 50.84533673216037 + ], + [ + 6.967375891916768, + 50.84525166543003 + ], + [ + 6.967365123363167, + 50.84512922754864 + ], + [ + 6.967361598929247, + 50.845089292658535 + ], + [ + 6.96728542165205, + 50.844228153646384 + ], + [ + 6.967177386617966, + 50.84300737932593 + ], + [ + 6.967167752736778, + 50.84291918198837 + ], + [ + 6.967162311124938, + 50.8428826403385 + ], + [ + 6.966923656169856, + 50.841682095503074 + ], + [ + 6.9669100292455095, + 50.84161361868096 + ], + [ + 6.966555403660694, + 50.84022121028078 + ], + [ + 6.966417123989567, + 50.839678671632335 + ], + [ + 6.966044130945633, + 50.83846008695366 + ], + [ + 6.965410293352114, + 50.83827877900535 + ], + [ + 6.965402439149567, + 50.838276483479014 + ], + [ + 6.9652811522649385, + 50.83824028108593 + ], + [ + 6.964906646954501, + 50.83812824963193 + ], + [ + 6.964563654405992, + 50.83803628358935 + ], + [ + 6.964523137971385, + 50.83809259790445 + ], + [ + 6.963477153235074, + 50.837747503149906 + ], + [ + 6.9633505336776755, + 50.83770661874062 + ], + [ + 6.9633001247412025, + 50.83768999929202 + ], + [ + 6.962992088748344, + 50.83758802611894 + ], + [ + 6.961328443445481, + 50.83703713651746 + ], + [ + 6.961208873055901, + 50.836997542160546 + ], + [ + 6.9611503633023, + 50.83697781219788 + ], + [ + 6.961122873110071, + 50.836933981104785 + ], + [ + 6.961072770498955, + 50.83690711298871 + ], + [ + 6.960447369320478, + 50.8365690715893 + ], + [ + 6.960082601566217, + 50.83641995996378 + ], + [ + 6.959482861149834, + 50.83620701753891 + ], + [ + 6.959106121367616, + 50.83606875589092 + ], + [ + 6.958672758216447, + 50.835916460957016 + ], + [ + 6.958521983864343, + 50.835866244562695 + ], + [ + 6.9581907490672545, + 50.835756117774686 + ], + [ + 6.958182911345128, + 50.83575346228878 + ], + [ + 6.958013797545062, + 50.83569716811213 + ], + [ + 6.957853503513131, + 50.835643816206066 + ], + [ + 6.957642951099452, + 50.8355737548487 + ], + [ + 6.957579130182367, + 50.8355521312966 + ], + [ + 6.957494201831098, + 50.83552600092114 + ], + [ + 6.957343572590918, + 50.835479023332454 + ], + [ + 6.9572028943652775, + 50.83543509786581 + ], + [ + 6.957124152033657, + 50.835410424637 + ], + [ + 6.956971142318124, + 50.83536268535936 + ], + [ + 6.956808394842477, + 50.83531027835865 + ], + [ + 6.956701527591862, + 50.835275938415975 + ], + [ + 6.9565721138255086, + 50.835234278096614 + ], + [ + 6.956541591056845, + 50.83522454802209 + ], + [ + 6.956538078985121, + 50.83522333887384 + ], + [ + 6.956429355985136, + 50.83519247379359 + ], + [ + 6.955820363249145, + 50.835019732856495 + ], + [ + 6.955624019029225, + 50.83496592596185 + ], + [ + 6.955598196742079, + 50.83495881789932 + ], + [ + 6.955542061875145, + 50.83494335384787 + ], + [ + 6.955511067203931, + 50.83493435632793 + ], + [ + 6.955413876789453, + 50.83490612078006 + ], + [ + 6.955342492979129, + 50.834885352757354 + ], + [ + 6.955173359299376, + 50.8348361592551 + ], + [ + 6.95482180317693, + 50.83475912390076 + ], + [ + 6.95476651292012, + 50.83474709196727 + ], + [ + 6.95469968415743, + 50.83473584702023 + ], + [ + 6.95466513679984, + 50.834729533720356 + ], + [ + 6.95465488057939, + 50.83472759647246 + ], + [ + 6.954647134969299, + 50.83473258718585 + ], + [ + 6.954654152911102, + 50.83474238679148 + ], + [ + 6.954672968913505, + 50.834768656059005 + ], + [ + 6.954232240230674, + 50.83536666723898 + ], + [ + 6.95421517747873, + 50.83538984209683 + ], + [ + 6.954155530636844, + 50.83547091038696 + ], + [ + 6.953567698556048, + 50.836268971782964 + ], + [ + 6.953471813649215, + 50.83639914029556 + ], + [ + 6.953392380850934, + 50.83650711261023 + ], + [ + 6.953360220539225, + 50.836550708447476 + ], + [ + 6.953306467474857, + 50.83662360531769 + ], + [ + 6.953301721449583, + 50.83662819887773 + ], + [ + 6.9518621480090985, + 50.837992310709794 + ], + [ + 6.951767458048415, + 50.8380820262222 + ], + [ + 6.950075170122822, + 50.839687662035445 + ], + [ + 6.950004522475597, + 50.839766646183165 + ], + [ + 6.9498943124386745, + 50.83988945484952 + ], + [ + 6.949717785931257, + 50.840086376861656 + ], + [ + 6.9490565511976055, + 50.8408254746311 + ], + [ + 6.948577297641229, + 50.84135965006659 + ], + [ + 6.948372247646188, + 50.841588087666736 + ], + [ + 6.948364782993562, + 50.84159641065589 + ], + [ + 6.948256783723788, + 50.84171709723585 + ], + [ + 6.948003166028612, + 50.84200017146807 + ], + [ + 6.9478715398743605, + 50.84214787440124 + ], + [ + 6.9478053716331525, + 50.84222171956454 + ], + [ + 6.9471758007317534, + 50.84292412903884 + ], + [ + 6.946754564670375, + 50.84339447194121 + ], + [ + 6.9465476893399805, + 50.84362521175643 + ], + [ + 6.946464021452602, + 50.843718984413805 + ], + [ + 6.9463978408226845, + 50.84379300844718 + ], + [ + 6.946174499349217, + 50.84404279463557 + ], + [ + 6.946106827289123, + 50.844118411150774 + ], + [ + 6.9460941030641274, + 50.84412673133155 + ], + [ + 6.9459963452569315, + 50.84419069709893 + ], + [ + 6.945783302497245, + 50.84433009727193 + ], + [ + 6.945777884506375, + 50.84433701711252 + ], + [ + 6.9450909064695105, + 50.8452129762885 + ], + [ + 6.945012665825282, + 50.8453124197409 + ], + [ + 6.944922354014238, + 50.84542792946115 + ], + [ + 6.944907548117449, + 50.845425420152736 + ], + [ + 6.944651995753425, + 50.84538314344533 + ], + [ + 6.942907449277091, + 50.8450939981932 + ], + [ + 6.942844263907377, + 50.84508362023759 + ], + [ + 6.942829166435279, + 50.845081285400205 + ], + [ + 6.9427737486861645, + 50.8450719437764 + ], + [ + 6.942770126105084, + 50.84512845158943 + ], + [ + 6.942766864352796, + 50.8451835384316 + ], + [ + 6.942766828514349, + 50.8451841592788 + ], + [ + 6.942756854294903, + 50.845352615603765 + ], + [ + 6.9427657233472875, + 50.84604984499185 + ], + [ + 6.942746082463965, + 50.84640661617364 + ], + [ + 6.942719476103695, + 50.84688713849525 + ], + [ + 6.942706701473529, + 50.84712222622369 + ], + [ + 6.942693930939031, + 50.84735731401544 + ], + [ + 6.942996742538912, + 50.847607559757094 + ], + [ + 6.943234190487606, + 50.84780385715613 + ], + [ + 6.943396960125048, + 50.84793963065909 + ], + [ + 6.943266069242105, + 50.848370206042404 + ], + [ + 6.943176995956653, + 50.84866371305166 + ], + [ + 6.9431728683181255, + 50.848677320905665 + ], + [ + 6.943081395977554, + 50.84897866779537 + ], + [ + 6.942884141959739, + 50.84984352146151 + ], + [ + 6.942845564998956, + 50.85000069951042 + ], + [ + 6.942844249662334, + 50.85000592425883 + ], + [ + 6.942842399333708, + 50.850026794362336 + ], + [ + 6.942651397656376, + 50.85118096753868 + ], + [ + 6.942624217629156, + 50.85126263131523 + ], + [ + 6.942621911649932, + 50.85127496535821 + ], + [ + 6.942459888004886, + 50.851754064996605 + ], + [ + 6.942440966911272, + 50.8518650578024 + ], + [ + 6.942422050037332, + 50.8520888683818 + ], + [ + 6.942422150868181, + 50.852150266129655 + ], + [ + 6.942420395590885, + 50.85223217411046 + ], + [ + 6.942419543942389, + 50.85224629390513 + ], + [ + 6.942418399549507, + 50.85230221758627 + ], + [ + 6.942416771579405, + 50.85232713165973 + ], + [ + 6.942406014795276, + 50.85248381536194 + ], + [ + 6.942402551878729, + 50.85254677005277 + ], + [ + 6.942397051289445, + 50.8526378774879 + ], + [ + 6.9423653772427, + 50.85317983811133 + ], + [ + 6.9423184363887325, + 50.85388022586775 + ], + [ + 6.942315310638107, + 50.85400691276345 + ], + [ + 6.942392203495972, + 50.85578449633385 + ], + [ + 6.94242201668905, + 50.85731183305091 + ], + [ + 6.9424249482669085, + 50.857464180166836 + ], + [ + 6.942429391858947, + 50.85763521357775 + ], + [ + 6.942442201195379, + 50.85811532667686 + ], + [ + 6.942484145739286, + 50.858842773859685 + ], + [ + 6.942542234289928, + 50.858877902226205 + ], + [ + 6.942543527865934, + 50.85891385024203 + ], + [ + 6.9424880249953915, + 50.8589506160851 + ], + [ + 6.942464377900765, + 50.859432911120805 + ], + [ + 6.94247248644782, + 50.85966585200849 + ], + [ + 6.942473980567154, + 50.85970476434678 + ], + [ + 6.942479279659468, + 50.85985475538633 + ], + [ + 6.942500708154668, + 50.86036778955624 + ], + [ + 6.942503105773584, + 50.860423235102864 + ], + [ + 6.942510551309451, + 50.860496618945504 + ], + [ + 6.942661871773861, + 50.861006086828404 + ], + [ + 6.942694610059529, + 50.86111513313341 + ], + [ + 6.94271974327301, + 50.861199250969634 + ], + [ + 6.9428039578813765, + 50.86148012029732 + ], + [ + 6.942866456246042, + 50.86150127956977 + ], + [ + 6.942869603971119, + 50.861537661386095 + ], + [ + 6.942829803126352, + 50.86158535751499 + ], + [ + 6.94304130797949, + 50.86235988623227 + ], + [ + 6.9431752909501165, + 50.8628543011896 + ], + [ + 6.943229230961362, + 50.86305648670821 + ], + [ + 6.9433942507756345, + 50.8636738057852 + ], + [ + 6.943545895134475, + 50.864244931842414 + ], + [ + 6.9435459911146244, + 50.86424520514947 + ], + [ + 6.943546101295377, + 50.86424547870681 + ], + [ + 6.943546292733963, + 50.86424610175971 + ], + [ + 6.943546607888901, + 50.86424762728101 + ], + [ + 6.943547976661723, + 50.86425211147404 + ], + [ + 6.943548435706114, + 50.86425372587283 + ], + [ + 6.943740170684636, + 50.864976543939555 + ], + [ + 6.943838611123204, + 50.865335145296754 + ], + [ + 6.943845364198245, + 50.86535999118849 + ], + [ + 6.944092657839125, + 50.86617450079122 + ], + [ + 6.9441553210773685, + 50.866196557113526 + ], + [ + 6.944168165193852, + 50.86624166919269 + ], + [ + 6.945990834860186, + 50.86579999254203 + ], + [ + 6.946062996769174, + 50.86582107103903 + ], + [ + 6.946116575419016, + 50.86580832105769 + ], + [ + 6.946149859180512, + 50.86576139590879 + ], + [ + 6.947804629690303, + 50.86536375174732 + ], + [ + 6.947859550080649, + 50.86534712482522 + ], + [ + 6.947928715505266, + 50.86536750819984 + ], + [ + 6.947998399323079, + 50.865350490617864 + ], + [ + 6.948031012828846, + 50.8653056379344 + ], + [ + 6.952129915548481, + 50.8643131653409 + ], + [ + 6.952162489307477, + 50.86432196917653 + ], + [ + 6.9522064739739236, + 50.86433384502868 + ], + [ + 6.952269788439034, + 50.86431804600849 + ], + [ + 6.952288991983594, + 50.86429065673778 + ], + [ + 6.9523026419573615, + 50.86427130225453 + ], + [ + 6.955550261952982, + 50.86348169774016 + ], + [ + 6.955553242522924, + 50.86348097289864 + ], + [ + 6.955574009282589, + 50.863515313842 + ], + [ + 6.955587644786751, + 50.86353786387154 + ], + [ + 6.955736693193441, + 50.86377612123608 + ], + [ + 6.95591789655826, + 50.86414176521002 + ], + [ + 6.956044285026476, + 50.8643970183807 + ], + [ + 6.956155375958731, + 50.86465428516258 + ], + [ + 6.956185432351713, + 50.86474860783992 + ], + [ + 6.956244499794338, + 50.86493474445169 + ], + [ + 6.9562790173922595, + 50.86515677003438 + ], + [ + 6.956291703292847, + 50.86522139014283 + ], + [ + 6.956294040931069, + 50.86524573252157 + ], + [ + 6.95629463807605, + 50.86525076335858 + ], + [ + 6.956330814294754, + 50.86563305540797 + ], + [ + 6.956333506341877, + 50.86565498194358 + ], + [ + 6.95626506302347, + 50.866102037399045 + ], + [ + 6.955801752757862, + 50.86776078912922 + ], + [ + 6.955816566257614, + 50.8677559896183 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Immendorf", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "212", + "Population_rel": 0.001895150913569354, + "Population_abs": 2062 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.896183257686744, + 50.96783112017695 + ], + [ + 6.896232268621682, + 50.967781107356814 + ], + [ + 6.896240212699209, + 50.96779341820508 + ], + [ + 6.896254324040204, + 50.96782331872412 + ], + [ + 6.896254563886792, + 50.96783903431421 + ], + [ + 6.896262469287327, + 50.96785651949618 + ], + [ + 6.896348080625396, + 50.96794205688405 + ], + [ + 6.896371353159999, + 50.96796553268814 + ], + [ + 6.896633341540382, + 50.96774888912041 + ], + [ + 6.897022319040571, + 50.96812185612042 + ], + [ + 6.897400871595878, + 50.96802185886894 + ], + [ + 6.897464458203775, + 50.96794308143393 + ], + [ + 6.897609513451031, + 50.96788386106294 + ], + [ + 6.89767014211104, + 50.96785902811937 + ], + [ + 6.897734405114114, + 50.967831840350705 + ], + [ + 6.897797436033668, + 50.967806985839395 + ], + [ + 6.897923157205675, + 50.967759391319895 + ], + [ + 6.897710908100194, + 50.9674670659265 + ], + [ + 6.897796913015941, + 50.96743378506731 + ], + [ + 6.897968910196765, + 50.96767338530746 + ], + [ + 6.8982559615738035, + 50.96758833601307 + ], + [ + 6.8980329519925565, + 50.96731515597347 + ], + [ + 6.898314551673782, + 50.96722243831958 + ], + [ + 6.898541755096511, + 50.96749869183146 + ], + [ + 6.898580922768269, + 50.9675463641848 + ], + [ + 6.89862990805438, + 50.96760603466436 + ], + [ + 6.898665190718704, + 50.967649091601906 + ], + [ + 6.898696693748578, + 50.96768731019638 + ], + [ + 6.898812319032781, + 50.96765203260879 + ], + [ + 6.8988791697619165, + 50.967631267385194 + ], + [ + 6.898951760063952, + 50.96762206170433 + ], + [ + 6.8990227143183445, + 50.967609498834385 + ], + [ + 6.899091467706846, + 50.967588041028016 + ], + [ + 6.899195291462174, + 50.96779795633752 + ], + [ + 6.899289598787699, + 50.967778837897825 + ], + [ + 6.899373831424303, + 50.967761431321705 + ], + [ + 6.8994567227784875, + 50.967743824276454 + ], + [ + 6.89948059784241, + 50.96774097285994 + ], + [ + 6.899568948810294, + 50.96772339200463 + ], + [ + 6.899560013481382, + 50.96770815586184 + ], + [ + 6.899480174205467, + 50.9675708062154 + ], + [ + 6.899553065969748, + 50.967542381345936 + ], + [ + 6.899614604085282, + 50.967522265717264 + ], + [ + 6.899569909762488, + 50.96746368555138 + ], + [ + 6.899628054665172, + 50.96744480937672 + ], + [ + 6.899429771059748, + 50.96720290847462 + ], + [ + 6.899198246371552, + 50.96692031836944 + ], + [ + 6.899152041881725, + 50.96686379112471 + ], + [ + 6.899296789756214, + 50.96681883450766 + ], + [ + 6.899382012998995, + 50.9667941760704 + ], + [ + 6.899508848495923, + 50.966757236874045 + ], + [ + 6.899915523131855, + 50.96662429942443 + ], + [ + 6.90001745091096, + 50.96659295370329 + ], + [ + 6.900062593765511, + 50.9665790310867 + ], + [ + 6.900774266351825, + 50.96635986693446 + ], + [ + 6.900819125410142, + 50.966346036957404 + ], + [ + 6.900734389881524, + 50.96585875491878 + ], + [ + 6.900734221043553, + 50.96582055162986 + ], + [ + 6.900733904134719, + 50.96571591929188 + ], + [ + 6.900742682237849, + 50.96561227341062 + ], + [ + 6.9007529205911275, + 50.96559513633845 + ], + [ + 6.900734945873908, + 50.96557632191142 + ], + [ + 6.900725416995383, + 50.965556908354614 + ], + [ + 6.900912186610749, + 50.965453945221626 + ], + [ + 6.900946413542366, + 50.96543507279747 + ], + [ + 6.901605029410951, + 50.965072125615784 + ], + [ + 6.901940038025536, + 50.9648934854013 + ], + [ + 6.90296467591155, + 50.96438427481799 + ], + [ + 6.903001853546771, + 50.96442210222035 + ], + [ + 6.903057467035306, + 50.964478573887256 + ], + [ + 6.903454697342307, + 50.96431191495819 + ], + [ + 6.903587840691537, + 50.964288827163045 + ], + [ + 6.90411997164033, + 50.96419267024731 + ], + [ + 6.904244109439464, + 50.964178494787824 + ], + [ + 6.904290771812671, + 50.964169682919454 + ], + [ + 6.904634820582517, + 50.964133945923514 + ], + [ + 6.904796381340211, + 50.964117257681266 + ], + [ + 6.90488583054234, + 50.96410801900799 + ], + [ + 6.904905928498012, + 50.96410597471097 + ], + [ + 6.904931623269489, + 50.96410327356238 + ], + [ + 6.905460045543405, + 50.96404591519094 + ], + [ + 6.905540306470661, + 50.96403738178361 + ], + [ + 6.905599981410833, + 50.96403401742422 + ], + [ + 6.905660942280132, + 50.96402299360259 + ], + [ + 6.905652703343934, + 50.96395380855512 + ], + [ + 6.905600046436225, + 50.963537385785216 + ], + [ + 6.905343593462009, + 50.9630059529391 + ], + [ + 6.90533038583671, + 50.96297827861412 + ], + [ + 6.905403091075414, + 50.96296189397924 + ], + [ + 6.906168823245725, + 50.96270137560256 + ], + [ + 6.906656326602781, + 50.962575605172965 + ], + [ + 6.906696712451801, + 50.962566213040496 + ], + [ + 6.9068859474769475, + 50.96251808834153 + ], + [ + 6.906667419664165, + 50.9622900208476 + ], + [ + 6.905952996054059, + 50.96154397589415 + ], + [ + 6.905858853193706, + 50.96144600515828 + ], + [ + 6.905571753170289, + 50.961146104243305 + ], + [ + 6.906025477549646, + 50.96110662591661 + ], + [ + 6.905965447154979, + 50.96090703636345 + ], + [ + 6.905992447744422, + 50.960835480313634 + ], + [ + 6.9063292698760375, + 50.960786856545354 + ], + [ + 6.906301020885463, + 50.9607103074129 + ], + [ + 6.9062727689100365, + 50.96063366828067 + ], + [ + 6.906249100134642, + 50.960638547469486 + ], + [ + 6.906214458620386, + 50.96054445009744 + ], + [ + 6.906330241929637, + 50.96049648314831 + ], + [ + 6.906226966420926, + 50.960399266281875 + ], + [ + 6.906290897923022, + 50.96037397550394 + ], + [ + 6.906277919028973, + 50.96036335671722 + ], + [ + 6.906410515844514, + 50.96030719296551 + ], + [ + 6.906222827296837, + 50.96013114179867 + ], + [ + 6.905862718840869, + 50.9599181604542 + ], + [ + 6.90585345562517, + 50.960019991176786 + ], + [ + 6.905842980255007, + 50.960069386095626 + ], + [ + 6.905535908394413, + 50.96004321187902 + ], + [ + 6.905343328887292, + 50.959844792982025 + ], + [ + 6.90520904706988, + 50.95971000670941 + ], + [ + 6.905151268414837, + 50.959651934936886 + ], + [ + 6.905194514645568, + 50.95963604806985 + ], + [ + 6.905436041155701, + 50.95954733871149 + ], + [ + 6.905461056567104, + 50.95953815513258 + ], + [ + 6.905391288261521, + 50.9594710976285 + ], + [ + 6.905479912403221, + 50.95935867316899 + ], + [ + 6.904386629596138, + 50.95828106782691 + ], + [ + 6.90434402468361, + 50.958293263154616 + ], + [ + 6.90400480314191, + 50.95796104129941 + ], + [ + 6.903790449969798, + 50.95774821733745 + ], + [ + 6.90355459875115, + 50.95782746836798 + ], + [ + 6.903453026819343, + 50.95786040908545 + ], + [ + 6.903399221060676, + 50.95778684396617 + ], + [ + 6.902743596719851, + 50.958004423064295 + ], + [ + 6.902623438792255, + 50.95784138784446 + ], + [ + 6.9025959590859065, + 50.957804115809914 + ], + [ + 6.90212265637436, + 50.957162076609094 + ], + [ + 6.902931311440898, + 50.95689513437066 + ], + [ + 6.90284712176963, + 50.95678316108404 + ], + [ + 6.902679589867385, + 50.956560343871864 + ], + [ + 6.902143769448659, + 50.95598926413506 + ], + [ + 6.902093968803035, + 50.95593849948837 + ], + [ + 6.902028253223381, + 50.955868090555356 + ], + [ + 6.9019819086807725, + 50.95589142320045 + ], + [ + 6.901980581407153, + 50.95590780045862 + ], + [ + 6.901967095865624, + 50.95591969885995 + ], + [ + 6.9018521918651565, + 50.955964453891355 + ], + [ + 6.901831525821002, + 50.955971249656436 + ], + [ + 6.901801773181703, + 50.955973720679395 + ], + [ + 6.901778095469304, + 50.955972076482105 + ], + [ + 6.901622876534882, + 50.95595328767915 + ], + [ + 6.9015800987396245, + 50.955897704237465 + ], + [ + 6.901499078724521, + 50.955792795777135 + ], + [ + 6.901441847690931, + 50.95571844772697 + ], + [ + 6.901415431259585, + 50.955684582469644 + ], + [ + 6.901353289795128, + 50.95562851956114 + ], + [ + 6.901314770448103, + 50.95559438815298 + ], + [ + 6.901264225142079, + 50.955534550289926 + ], + [ + 6.901103426534417, + 50.95534461709221 + ], + [ + 6.900991132019667, + 50.95521214658058 + ], + [ + 6.9008837535981, + 50.95508353005406 + ], + [ + 6.900856551704297, + 50.95505317611381 + ], + [ + 6.901113546481957, + 50.954962918221455 + ], + [ + 6.900967946675688, + 50.954809254878825 + ], + [ + 6.900892175722135, + 50.9548357140085 + ], + [ + 6.900743637658751, + 50.95477942661111 + ], + [ + 6.900611038245535, + 50.95478062807946 + ], + [ + 6.900529931167751, + 50.95474448852231 + ], + [ + 6.900491562306192, + 50.954704520752976 + ], + [ + 6.900315582796251, + 50.95475279153827 + ], + [ + 6.900194217986269, + 50.954738270139856 + ], + [ + 6.900017894546769, + 50.95453269651719 + ], + [ + 6.900118835419337, + 50.954497758920844 + ], + [ + 6.9001244004711255, + 50.95443218439575 + ], + [ + 6.900080863975172, + 50.95438137053506 + ], + [ + 6.900130300289418, + 50.95436193191328 + ], + [ + 6.9001350230132585, + 50.9543043647174 + ], + [ + 6.900177117799744, + 50.95425194592433 + ], + [ + 6.900188119305202, + 50.95423804149861 + ], + [ + 6.900204313827046, + 50.95422975896972 + ], + [ + 6.900170089198837, + 50.954167367600846 + ], + [ + 6.900156327613225, + 50.95414227827038 + ], + [ + 6.9002262175755344, + 50.95410345887674 + ], + [ + 6.90024541819886, + 50.95409570708114 + ], + [ + 6.90010753612085, + 50.95395732160377 + ], + [ + 6.899946848567545, + 50.953810243327204 + ], + [ + 6.899828137560863, + 50.95386014429065 + ], + [ + 6.899759953651658, + 50.95388677064561 + ], + [ + 6.89972491071838, + 50.95387308031097 + ], + [ + 6.899495471080678, + 50.95395268397945 + ], + [ + 6.899109968174533, + 50.953548897996995 + ], + [ + 6.898629764733205, + 50.95304605078677 + ], + [ + 6.898707988234898, + 50.953013986457314 + ], + [ + 6.898679018862037, + 50.9529139790362 + ], + [ + 6.8986317554407774, + 50.95275091764469 + ], + [ + 6.898770377508815, + 50.952729175256174 + ], + [ + 6.898658682061132, + 50.95258279162108 + ], + [ + 6.898582585989062, + 50.95242364068212 + ], + [ + 6.897546903039231, + 50.95261183634154 + ], + [ + 6.89687534976625, + 50.95225652196744 + ], + [ + 6.897360837281635, + 50.95214275033881 + ], + [ + 6.897044700793483, + 50.95151066803897 + ], + [ + 6.8968798126464685, + 50.951132676092676 + ], + [ + 6.897078697767688, + 50.95110160739703 + ], + [ + 6.896889483548057, + 50.95067545872285 + ], + [ + 6.8972542059018584, + 50.950616191958346 + ], + [ + 6.897040033634055, + 50.949991142565054 + ], + [ + 6.897345055545946, + 50.9499425028742 + ], + [ + 6.897417000202576, + 50.949931002232 + ], + [ + 6.897419947006055, + 50.949837703026816 + ], + [ + 6.897400035045668, + 50.94983421005757 + ], + [ + 6.897210853283162, + 50.94980168425057 + ], + [ + 6.897128322423406, + 50.949794588219945 + ], + [ + 6.896960417384656, + 50.94977383863122 + ], + [ + 6.896964703487075, + 50.94975988727696 + ], + [ + 6.896973818596362, + 50.9497034011856 + ], + [ + 6.896911776981169, + 50.94969341563271 + ], + [ + 6.896257642061978, + 50.94962242881982 + ], + [ + 6.896197628337706, + 50.94961638005016 + ], + [ + 6.893507083012127, + 50.94934288170055 + ], + [ + 6.890486865326232, + 50.94903282318066 + ], + [ + 6.890376136514097, + 50.94902449871152 + ], + [ + 6.889506206690048, + 50.948932819517985 + ], + [ + 6.889311267313246, + 50.94891227435806 + ], + [ + 6.889287986236156, + 50.94890981992934 + ], + [ + 6.8892518597265155, + 50.94890696416131 + ], + [ + 6.8891236537890785, + 50.948968605715095 + ], + [ + 6.888901370264878, + 50.94917705209878 + ], + [ + 6.888706311804068, + 50.94941037091849 + ], + [ + 6.88857065670261, + 50.94962462931786 + ], + [ + 6.88838064266547, + 50.95024948101698 + ], + [ + 6.888329471208582, + 50.95038686708297 + ], + [ + 6.88805492040983, + 50.95193717697853 + ], + [ + 6.887987081529851, + 50.952320186857676 + ], + [ + 6.888049369371932, + 50.954967228745794 + ], + [ + 6.8880306976178, + 50.95530168166533 + ], + [ + 6.888034079814199, + 50.95532905709957 + ], + [ + 6.888047847692775, + 50.95544050942329 + ], + [ + 6.88863621368421, + 50.960203416869014 + ], + [ + 6.888645988224567, + 50.960283017148406 + ], + [ + 6.888653357949817, + 50.9603430708412 + ], + [ + 6.888663649923603, + 50.960362890467444 + ], + [ + 6.88949926005942, + 50.9626386167809 + ], + [ + 6.889642866966058, + 50.96278748979556 + ], + [ + 6.889457897796353, + 50.96287052468109 + ], + [ + 6.886094740108093, + 50.9643801931295 + ], + [ + 6.885543487775345, + 50.96457583230408 + ], + [ + 6.883744646189508, + 50.96539917387566 + ], + [ + 6.882380744500389, + 50.966067001023475 + ], + [ + 6.882501283179068, + 50.96617305588477 + ], + [ + 6.882606456468491, + 50.96652445852627 + ], + [ + 6.882561285082082, + 50.9665296543977 + ], + [ + 6.882215065778557, + 50.9665705215414 + ], + [ + 6.882221234145761, + 50.9665842725506 + ], + [ + 6.88194552312722, + 50.966616110864216 + ], + [ + 6.881950697021564, + 50.96663378044194 + ], + [ + 6.881852401163206, + 50.96664513002327 + ], + [ + 6.8819077625409495, + 50.96683968851114 + ], + [ + 6.8818359581362865, + 50.9668441859993 + ], + [ + 6.881895973512292, + 50.96690117403653 + ], + [ + 6.881826069115671, + 50.967028539956225 + ], + [ + 6.8832974133866305, + 50.96840517339113 + ], + [ + 6.884486720566619, + 50.96951451800365 + ], + [ + 6.886936252054565, + 50.97188940336053 + ], + [ + 6.887218674909287, + 50.97200486177149 + ], + [ + 6.888505714830807, + 50.97155907242616 + ], + [ + 6.888823499202394, + 50.971462715684886 + ], + [ + 6.88925848673509, + 50.97133076764961 + ], + [ + 6.889219465980206, + 50.97129240519592 + ], + [ + 6.8896526988176365, + 50.971136293610044 + ], + [ + 6.8899340845133095, + 50.97101594157281 + ], + [ + 6.890616150835267, + 50.97072407184478 + ], + [ + 6.891040161538549, + 50.97052514623581 + ], + [ + 6.891040093535717, + 50.97046886089357 + ], + [ + 6.892330784620337, + 50.96991857602918 + ], + [ + 6.892644152663803, + 50.96980830848277 + ], + [ + 6.893047070522228, + 50.96963110532187 + ], + [ + 6.894278637060859, + 50.96912584341839 + ], + [ + 6.894380868201015, + 50.96908428299513 + ], + [ + 6.894603289496232, + 50.96899329506473 + ], + [ + 6.894957282213744, + 50.96884801523278 + ], + [ + 6.894981780876647, + 50.96883810145192 + ], + [ + 6.89499869546112, + 50.968829873979864 + ], + [ + 6.895019379855681, + 50.968819010932584 + ], + [ + 6.895425189876733, + 50.968613671511314 + ], + [ + 6.8957516826268455, + 50.96827680774597 + ], + [ + 6.895769049145723, + 50.968258889394974 + ], + [ + 6.89595749434721, + 50.96806444429189 + ], + [ + 6.896183257686744, + 50.96783112017695 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Bickendorf", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "403", + "Population_rel": 0.015218190507701923, + "Population_abs": 16558 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.088523531085024, + 50.86632703456659 + ], + [ + 7.0885602171591895, + 50.86601770652707 + ], + [ + 7.088615380454982, + 50.86555186841191 + ], + [ + 7.088671140964923, + 50.86507709756805 + ], + [ + 7.0886200613403005, + 50.865043054193364 + ], + [ + 7.0886204244477895, + 50.865037477737886 + ], + [ + 7.088620766288797, + 50.86503190003464 + ], + [ + 7.088621943746486, + 50.86500797803299 + ], + [ + 7.088793111408539, + 50.864995772271044 + ], + [ + 7.0898156153490355, + 50.864930307550225 + ], + [ + 7.090534205331224, + 50.86488619429535 + ], + [ + 7.0907341932359556, + 50.86487335740103 + ], + [ + 7.091020136022649, + 50.86485504090925 + ], + [ + 7.091278524097696, + 50.86483689172779 + ], + [ + 7.091480301545007, + 50.86483374478437 + ], + [ + 7.091665768081162, + 50.86483164920029 + ], + [ + 7.092326775733031, + 50.86480973385091 + ], + [ + 7.094884080029854, + 50.86478574969481 + ], + [ + 7.0950112761473045, + 50.864782397856416 + ], + [ + 7.095083174945195, + 50.86478334146899 + ], + [ + 7.0954856333506875, + 50.86479102028996 + ], + [ + 7.095780945036224, + 50.86479665412617 + ], + [ + 7.095963781632232, + 50.86480356635822 + ], + [ + 7.0961062151936956, + 50.864807890787 + ], + [ + 7.096112880488927, + 50.86474876513957 + ], + [ + 7.096278460594903, + 50.86327994289466 + ], + [ + 7.096307632904873, + 50.863055563345945 + ], + [ + 7.0965077957190985, + 50.86151593145081 + ], + [ + 7.096541480907152, + 50.8612384671403 + ], + [ + 7.096838214324027, + 50.858794482036416 + ], + [ + 7.096841066302235, + 50.85877099378363 + ], + [ + 7.096995230073496, + 50.85748494073142 + ], + [ + 7.097052056457827, + 50.85702648792358 + ], + [ + 7.097125264016678, + 50.85643733470237 + ], + [ + 7.097177362608676, + 50.85601739494536 + ], + [ + 7.097427698228291, + 50.85396506799604 + ], + [ + 7.097513332034, + 50.85296121010989 + ], + [ + 7.097622014187027, + 50.851687089383475 + ], + [ + 7.097668745518504, + 50.8506417283035 + ], + [ + 7.097686439082163, + 50.85024591030651 + ], + [ + 7.0974695010276605, + 50.85027806714092 + ], + [ + 7.096644281508874, + 50.8504582493283 + ], + [ + 7.096434447907119, + 50.85052097923141 + ], + [ + 7.096100678490573, + 50.850623660962384 + ], + [ + 7.09604058712858, + 50.85056328568436 + ], + [ + 7.095898027169107, + 50.85038092967518 + ], + [ + 7.0952815314659565, + 50.85051940773643 + ], + [ + 7.09477124117612, + 50.85063424296428 + ], + [ + 7.094671882639176, + 50.85068940409874 + ], + [ + 7.0946558812593405, + 50.85068054386221 + ], + [ + 7.09462841396257, + 50.85066587887808 + ], + [ + 7.094626729329574, + 50.850584400491464 + ], + [ + 7.094620339368181, + 50.85058236787492 + ], + [ + 7.094606622108449, + 50.85057798064584 + ], + [ + 7.092866678743245, + 50.85002140091982 + ], + [ + 7.09250949663235, + 50.84991022147194 + ], + [ + 7.0921659106121755, + 50.849800405460776 + ], + [ + 7.0921577615716735, + 50.84979535532187 + ], + [ + 7.0921537696799675, + 50.849792981349204 + ], + [ + 7.092111408350695, + 50.84976834277086 + ], + [ + 7.092103802145911, + 50.84976496085039 + ], + [ + 7.092097139736478, + 50.849762229321904 + ], + [ + 7.092028126899155, + 50.849734302048454 + ], + [ + 7.091913860112783, + 50.84968818495286 + ], + [ + 7.090236213731353, + 50.84918158861262 + ], + [ + 7.09020834509962, + 50.84917120421843 + ], + [ + 7.090182782526758, + 50.849161682294074 + ], + [ + 7.089730199932615, + 50.84902611267029 + ], + [ + 7.088565327002338, + 50.848677152603834 + ], + [ + 7.088478954550871, + 50.84865117013212 + ], + [ + 7.08822936698517, + 50.848575425469754 + ], + [ + 7.0882082052652, + 50.84856766694738 + ], + [ + 7.088133648656767, + 50.848543912228926 + ], + [ + 7.087707805097195, + 50.8483528227672 + ], + [ + 7.085931985082011, + 50.849713626363545 + ], + [ + 7.084657855709279, + 50.850695732363455 + ], + [ + 7.084129164536021, + 50.85111290543083 + ], + [ + 7.083565468664899, + 50.85158090398655 + ], + [ + 7.083014117377865, + 50.85204586223602 + ], + [ + 7.082062351182414, + 50.85296111928701 + ], + [ + 7.081845065896396, + 50.8531901541431 + ], + [ + 7.081616000540738, + 50.85343160413102 + ], + [ + 7.0813099581888554, + 50.85378065616274 + ], + [ + 7.081170693073182, + 50.85394969664507 + ], + [ + 7.080883613555007, + 50.85427621532793 + ], + [ + 7.080704130332723, + 50.85452200196577 + ], + [ + 7.080620278303047, + 50.85462826325702 + ], + [ + 7.080515517270054, + 50.85476717494419 + ], + [ + 7.0797400209232135, + 50.85559119718066 + ], + [ + 7.07970231737094, + 50.855632026091506 + ], + [ + 7.079699203948352, + 50.85563538797344 + ], + [ + 7.079696407810084, + 50.855638393529 + ], + [ + 7.07966008406859, + 50.85567755701092 + ], + [ + 7.07962848922809, + 50.8557115603612 + ], + [ + 7.079262402123687, + 50.85619921423942 + ], + [ + 7.0791382716343705, + 50.85626670486964 + ], + [ + 7.07861808321015, + 50.85699445457387 + ], + [ + 7.0783734586914715, + 50.85733661028499 + ], + [ + 7.0784667434402895, + 50.85735390641872 + ], + [ + 7.078097896439451, + 50.857889226611675 + ], + [ + 7.07789787834539, + 50.858207506520486 + ], + [ + 7.077094885210215, + 50.859681564045395 + ], + [ + 7.076958095830186, + 50.85997687379722 + ], + [ + 7.076848324184036, + 50.86024271913533 + ], + [ + 7.076833933754456, + 50.86027773110857 + ], + [ + 7.076822227532803, + 50.860305976363875 + ], + [ + 7.076582200766294, + 50.86095372869168 + ], + [ + 7.076548408125705, + 50.86104060965728 + ], + [ + 7.076411927277938, + 50.861392730100725 + ], + [ + 7.076399326362032, + 50.861425298242374 + ], + [ + 7.076383581875104, + 50.861469402090435 + ], + [ + 7.076290830206464, + 50.86172834688349 + ], + [ + 7.076228614560539, + 50.86190089037244 + ], + [ + 7.076223551836724, + 50.861915410932674 + ], + [ + 7.076093627810585, + 50.862274931218636 + ], + [ + 7.076078125944898, + 50.86231723487934 + ], + [ + 7.076007715572657, + 50.86251026036602 + ], + [ + 7.075910969830008, + 50.86277481492547 + ], + [ + 7.075708959921112, + 50.863328903712244 + ], + [ + 7.075700002565076, + 50.86335316768841 + ], + [ + 7.07567794873966, + 50.863413241887635 + ], + [ + 7.075543595656628, + 50.86377819624313 + ], + [ + 7.07542180466629, + 50.86409035574793 + ], + [ + 7.0753547252212785, + 50.86426168530497 + ], + [ + 7.075117227359647, + 50.86474948746945 + ], + [ + 7.07461296625109, + 50.86563294862915 + ], + [ + 7.074464534201746, + 50.865720161329584 + ], + [ + 7.074383529808175, + 50.86576774772797 + ], + [ + 7.074064786674289, + 50.86618258255576 + ], + [ + 7.074085681888618, + 50.8661857361993 + ], + [ + 7.07455873653524, + 50.866257083354526 + ], + [ + 7.074566550270697, + 50.86625815304128 + ], + [ + 7.074717638540344, + 50.86625600182572 + ], + [ + 7.074856154658968, + 50.86625168234724 + ], + [ + 7.075011052947239, + 50.86625288172459 + ], + [ + 7.075621378795212, + 50.86623727763565 + ], + [ + 7.075801270522409, + 50.86623353510372 + ], + [ + 7.076099014112945, + 50.86622729718024 + ], + [ + 7.076471456493678, + 50.86621945425043 + ], + [ + 7.077129814393127, + 50.86620555595675 + ], + [ + 7.077174116428442, + 50.8662047849895 + ], + [ + 7.077311851384515, + 50.86620234290389 + ], + [ + 7.078019435794365, + 50.866189420735324 + ], + [ + 7.078075108191771, + 50.86618797332332 + ], + [ + 7.078076142013537, + 50.86620095032073 + ], + [ + 7.078075946376067, + 50.866234074612244 + ], + [ + 7.078075683628028, + 50.866279196336436 + ], + [ + 7.078075648094013, + 50.86629439965562 + ], + [ + 7.078075684534914, + 50.86629786733968 + ], + [ + 7.078550128654325, + 50.86624926095648 + ], + [ + 7.078927036490003, + 50.86621060824133 + ], + [ + 7.079036460642368, + 50.86620015674787 + ], + [ + 7.079923167779596, + 50.86612093276385 + ], + [ + 7.081245424107307, + 50.866011955064 + ], + [ + 7.081308644855215, + 50.86601838103579 + ], + [ + 7.081612127292647, + 50.866018004587154 + ], + [ + 7.0820813271977645, + 50.86601743298289 + ], + [ + 7.082087463840111, + 50.86601746909897 + ], + [ + 7.082093675459711, + 50.86601751364213 + ], + [ + 7.083535099747305, + 50.866027742477556 + ], + [ + 7.083690707567218, + 50.86602423826408 + ], + [ + 7.0838363739392145, + 50.866020808014994 + ], + [ + 7.083782986618437, + 50.86682378688945 + ], + [ + 7.08488045497466, + 50.86684854063733 + ], + [ + 7.0880268332923135, + 50.866919430653034 + ], + [ + 7.088452460337762, + 50.866929034134635 + ], + [ + 7.088523531085024, + 50.86632703456659 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Wahn", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "711", + "Population_rel": 0.006638542700636006, + "Population_abs": 7223 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.9550040491492275, + 50.972776765896555 + ], + [ + 6.9551107365891625, + 50.9732534318836 + ], + [ + 6.95526013178685, + 50.97322766929815 + ], + [ + 6.955311843673789, + 50.97343714556161 + ], + [ + 6.955343190591977, + 50.973570109947374 + ], + [ + 6.955357536615891, + 50.97363084933394 + ], + [ + 6.955653642800141, + 50.97365647215079 + ], + [ + 6.955655405968493, + 50.973721540221554 + ], + [ + 6.955658122014235, + 50.97381914087649 + ], + [ + 6.955658982431598, + 50.973854102845365 + ], + [ + 6.955665141023575, + 50.973959855420986 + ], + [ + 6.955665086810674, + 50.97405433351693 + ], + [ + 6.955755848363086, + 50.97405053347715 + ], + [ + 6.95588773837671, + 50.97404585787762 + ], + [ + 6.956132378291475, + 50.974040438729766 + ], + [ + 6.956170978680002, + 50.974149235089484 + ], + [ + 6.956223360893987, + 50.974296876404 + ], + [ + 6.956831276617941, + 50.97437055122945 + ], + [ + 6.956921201820335, + 50.97438149973626 + ], + [ + 6.957052063279718, + 50.97450672629095 + ], + [ + 6.9569165504430766, + 50.97485482255243 + ], + [ + 6.956833377642411, + 50.9750682802606 + ], + [ + 6.956874555119462, + 50.97506965100762 + ], + [ + 6.956767967136055, + 50.975342539567606 + ], + [ + 6.956681124982273, + 50.97556474679794 + ], + [ + 6.956508597454693, + 50.976398117318105 + ], + [ + 6.956825489985252, + 50.9766512650043 + ], + [ + 6.956962421865702, + 50.97675981192481 + ], + [ + 6.95705112735156, + 50.97682893100106 + ], + [ + 6.9570972897936985, + 50.97686495892014 + ], + [ + 6.9571851315162565, + 50.97693354564073 + ], + [ + 6.957292357878784, + 50.97700314232991 + ], + [ + 6.957529765167178, + 50.977157518984555 + ], + [ + 6.957568156577237, + 50.97718255357221 + ], + [ + 6.957843765685176, + 50.97717975266782 + ], + [ + 6.958290490100226, + 50.97717509735358 + ], + [ + 6.958346233014931, + 50.977233789158305 + ], + [ + 6.958418862893507, + 50.97731032112091 + ], + [ + 6.958462670782993, + 50.977356346105 + ], + [ + 6.958540959143599, + 50.97735507426868 + ], + [ + 6.9597705033395085, + 50.977334468467845 + ], + [ + 6.959787280270592, + 50.977334192293924 + ], + [ + 6.959810902517896, + 50.97741538474426 + ], + [ + 6.959953205825154, + 50.977411158046536 + ], + [ + 6.960061954682976, + 50.97837553070142 + ], + [ + 6.960378369856752, + 50.98118413955448 + ], + [ + 6.9602763307395685, + 50.98118030488514 + ], + [ + 6.959932804147258, + 50.98120533307773 + ], + [ + 6.959981728685711, + 50.98155434316831 + ], + [ + 6.960022285177824, + 50.981842834981656 + ], + [ + 6.959959573366826, + 50.981847125756794 + ], + [ + 6.959544592110169, + 50.9818740001373 + ], + [ + 6.959494512693551, + 50.9819384148757 + ], + [ + 6.958279505244989, + 50.983493377775964 + ], + [ + 6.958103133616706, + 50.98371820883165 + ], + [ + 6.957956278379398, + 50.983723638987584 + ], + [ + 6.957920750545342, + 50.983997023544724 + ], + [ + 6.957901364690753, + 50.98415521388623 + ], + [ + 6.957859195963818, + 50.984511129031226 + ], + [ + 6.957757937140373, + 50.985364726051735 + ], + [ + 6.957756476895204, + 50.98537682852396 + ], + [ + 6.957915400674931, + 50.985582235871924 + ], + [ + 6.957930794782572, + 50.98558331000382 + ], + [ + 6.958524698834848, + 50.98562472857075 + ], + [ + 6.958549386134731, + 50.98547775335951 + ], + [ + 6.958748815567914, + 50.98539503129021 + ], + [ + 6.9587587510214775, + 50.9853909086684 + ], + [ + 6.959275619340782, + 50.98517661515148 + ], + [ + 6.959312028022925, + 50.98515002206819 + ], + [ + 6.959325891399542, + 50.98511355023932 + ], + [ + 6.959329775389685, + 50.98510591950263 + ], + [ + 6.959356712227464, + 50.98508282042299 + ], + [ + 6.960154637525029, + 50.984743657674976 + ], + [ + 6.960294988505154, + 50.984685151715546 + ], + [ + 6.960396933111563, + 50.98464269318795 + ], + [ + 6.9604521604934115, + 50.9846274960853 + ], + [ + 6.960494615889257, + 50.984621394268935 + ], + [ + 6.960614255579223, + 50.98461510608185 + ], + [ + 6.960688029067617, + 50.98461306137118 + ], + [ + 6.9607546346656815, + 50.984630446447675 + ], + [ + 6.960765217901789, + 50.9846363404614 + ], + [ + 6.960869442336528, + 50.98469705570449 + ], + [ + 6.960939484590557, + 50.9846958495471 + ], + [ + 6.960966234638217, + 50.9849878681276 + ], + [ + 6.96096776754531, + 50.98499135207207 + ], + [ + 6.959138606403501, + 50.986041670457695 + ], + [ + 6.955967569957446, + 50.98799695195508 + ], + [ + 6.953277017525975, + 50.989711537411104 + ], + [ + 6.952709977699379, + 50.99004364382099 + ], + [ + 6.951344387513949, + 50.99099847150217 + ], + [ + 6.950927258839281, + 50.991284876819485 + ], + [ + 6.950226524355741, + 50.991837397655765 + ], + [ + 6.949302109956581, + 50.99250661571109 + ], + [ + 6.948987364877798, + 50.992766896425444 + ], + [ + 6.948704946673639, + 50.992992034624415 + ], + [ + 6.94846724391386, + 50.99324476520463 + ], + [ + 6.948326386803089, + 50.993378231426085 + ], + [ + 6.948206184412349, + 50.99342792876395 + ], + [ + 6.9480104936736256, + 50.993435990728145 + ], + [ + 6.947655174889817, + 50.99346728126687 + ], + [ + 6.947458612410307, + 50.99353045300135 + ], + [ + 6.947228485671233, + 50.99361708809972 + ], + [ + 6.9470255851564255, + 50.99373280764525 + ], + [ + 6.946786897964084, + 50.993937810439675 + ], + [ + 6.94651355915091, + 50.99432296793262 + ], + [ + 6.946446323967328, + 50.9944488226593 + ], + [ + 6.946367933944103, + 50.99448856163394 + ], + [ + 6.9462938948416575, + 50.99451109566556 + ], + [ + 6.9462518684494095, + 50.994517818683875 + ], + [ + 6.946173894820745, + 50.99451529983544 + ], + [ + 6.946160882536964, + 50.9945159946486 + ], + [ + 6.946147865544195, + 50.99451669927056 + ], + [ + 6.946041982758776, + 50.994514485444874 + ], + [ + 6.945200942817929, + 50.994616852479254 + ], + [ + 6.945127061756887, + 50.9946121475196 + ], + [ + 6.944971720625078, + 50.99459425793497 + ], + [ + 6.9437572137429555, + 50.99452227897509 + ], + [ + 6.943310071540473, + 50.99446539580823 + ], + [ + 6.943088842004967, + 50.99442951790185 + ], + [ + 6.9428726888258, + 50.99438398071158 + ], + [ + 6.942658442395526, + 50.99433420199857 + ], + [ + 6.942456243634405, + 50.99426733664847 + ], + [ + 6.942149046873467, + 50.994143247451625 + ], + [ + 6.941863160819189, + 50.993995344419204 + ], + [ + 6.941627903512, + 50.99385736992002 + ], + [ + 6.941502123726077, + 50.99377271656579 + ], + [ + 6.941411345486445, + 50.993714299548834 + ], + [ + 6.941363314431576, + 50.99366362771627 + ], + [ + 6.941330711355361, + 50.993629192566914 + ], + [ + 6.9412567266296765, + 50.99354187427496 + ], + [ + 6.9411902535072105, + 50.99345269804918 + ], + [ + 6.941136670919072, + 50.9933599114234 + ], + [ + 6.941114167594982, + 50.993261481429016 + ], + [ + 6.941136842966765, + 50.99316430480796 + ], + [ + 6.941066312019438, + 50.99305053020902 + ], + [ + 6.940955823822113, + 50.993010429976025 + ], + [ + 6.940557357893009, + 50.993514251207074 + ], + [ + 6.940854067101956, + 50.993634293341415 + ], + [ + 6.941023220464585, + 50.99370142790232 + ], + [ + 6.94133352271846, + 50.99382441556069 + ], + [ + 6.9412195320227825, + 50.99403361529601 + ], + [ + 6.940892862075221, + 50.994509801102254 + ], + [ + 6.940723923946666, + 50.99475620893027 + ], + [ + 6.94067154598568, + 50.99484274737254 + ], + [ + 6.940618747003528, + 50.99492964890793 + ], + [ + 6.940455950976866, + 50.99521223393655 + ], + [ + 6.94041209950943, + 50.995311917642155 + ], + [ + 6.94033442441422, + 50.99549996879525 + ], + [ + 6.940320354500556, + 50.99555797291458 + ], + [ + 6.940270644438104, + 50.995741303569325 + ], + [ + 6.940215921796812, + 50.995866964463126 + ], + [ + 6.940076141743502, + 50.996125721342544 + ], + [ + 6.93997672667205, + 50.996196816820245 + ], + [ + 6.939852875810951, + 50.99648969414384 + ], + [ + 6.939408569559542, + 50.99658801643878 + ], + [ + 6.938820459635259, + 50.996760485798035 + ], + [ + 6.938589915706576, + 50.996828050671695 + ], + [ + 6.9383105137300305, + 50.996902839732634 + ], + [ + 6.9371437866410055, + 50.99719671930755 + ], + [ + 6.936903093210294, + 50.99719910044249 + ], + [ + 6.936780065046475, + 50.99739955895205 + ], + [ + 6.936528590460038, + 50.99783575571582 + ], + [ + 6.936372086668393, + 50.99810713671997 + ], + [ + 6.936235458351428, + 50.99835219968512 + ], + [ + 6.936134912611552, + 50.998532250549474 + ], + [ + 6.936120618446757, + 50.9985580743094 + ], + [ + 6.936096827075676, + 50.998600515194106 + ], + [ + 6.935986499736361, + 50.99875992428036 + ], + [ + 6.935791319652501, + 50.99904226692471 + ], + [ + 6.935704107290967, + 50.99916827513843 + ], + [ + 6.935567483551756, + 50.999366143806206 + ], + [ + 6.935288130612348, + 50.99977019893455 + ], + [ + 6.935002960348463, + 51.00018266128899 + ], + [ + 6.934964332990251, + 51.00023834367774 + ], + [ + 6.9347494829901395, + 51.000549292043274 + ], + [ + 6.934745402123156, + 51.000555168318925 + ], + [ + 6.934741318446622, + 51.00056104364538 + ], + [ + 6.934675141352005, + 51.000656589937066 + ], + [ + 6.93456321479912, + 51.000818437281346 + ], + [ + 6.934511512642596, + 51.000893416334 + ], + [ + 6.934478011860307, + 51.00094195648757 + ], + [ + 6.934433856109684, + 51.00100613351827 + ], + [ + 6.934277273471765, + 51.00123220631511 + ], + [ + 6.934119422892159, + 51.001437793986874 + ], + [ + 6.933607736377175, + 51.00210690792791 + ], + [ + 6.933369183754378, + 51.00245849517795 + ], + [ + 6.933327116902098, + 51.00252040726652 + ], + [ + 6.933278964029355, + 51.002591447282654 + ], + [ + 6.933179195214556, + 51.00273840891341 + ], + [ + 6.9325475339521665, + 51.00362125124134 + ], + [ + 6.932298764974068, + 51.00396860290499 + ], + [ + 6.9315861621406, + 51.004774059688046 + ], + [ + 6.930761381468754, + 51.00570634524461 + ], + [ + 6.930724738220613, + 51.00574771733088 + ], + [ + 6.930582640806943, + 51.00590903803417 + ], + [ + 6.930537663646235, + 51.00596117356375 + ], + [ + 6.930475550468766, + 51.006032683669574 + ], + [ + 6.929822658858581, + 51.006784886541766 + ], + [ + 6.9297384822576475, + 51.006907450091724 + ], + [ + 6.929420595678566, + 51.00737004801776 + ], + [ + 6.929291277740086, + 51.007558142248875 + ], + [ + 6.929091002101928, + 51.00783894085723 + ], + [ + 6.929074711103806, + 51.00786504852948 + ], + [ + 6.928569804150369, + 51.00863098903601 + ], + [ + 6.928087078150852, + 51.00911709675208 + ], + [ + 6.928031341860608, + 51.00917300309202 + ], + [ + 6.9278648420989075, + 51.00934062661037 + ], + [ + 6.927313792252458, + 51.00989523190903 + ], + [ + 6.926969747271842, + 51.01024162081107 + ], + [ + 6.926873921066169, + 51.01033802600721 + ], + [ + 6.926480835343288, + 51.010733613678255 + ], + [ + 6.926255555838729, + 51.01096601903128 + ], + [ + 6.926198101577874, + 51.0110253089151 + ], + [ + 6.926071044261224, + 51.0111563899801 + ], + [ + 6.926033472931925, + 51.011194532479635 + ], + [ + 6.926003724818225, + 51.01122470336067 + ], + [ + 6.925993737294138, + 51.01123484988638 + ], + [ + 6.925983752574591, + 51.01124499736042 + ], + [ + 6.925685434167415, + 51.01154876928474 + ], + [ + 6.925533791195144, + 51.01174054155579 + ], + [ + 6.925348375319985, + 51.0119395040911 + ], + [ + 6.924672287083483, + 51.01266570186236 + ], + [ + 6.924624572694673, + 51.01271695908435 + ], + [ + 6.9244393739589425, + 51.012912860796405 + ], + [ + 6.924073575376835, + 51.01329968432996 + ], + [ + 6.924021689583164, + 51.013349086415204 + ], + [ + 6.9239159539693675, + 51.013449433103474 + ], + [ + 6.923055088212368, + 51.01426616846056 + ], + [ + 6.92304649054896, + 51.014274472358544 + ], + [ + 6.923042494932335, + 51.0142782200358 + ], + [ + 6.923040120703388, + 51.014280397463686 + ], + [ + 6.923035358973195, + 51.01428501739761 + ], + [ + 6.922492792711571, + 51.01479872450643 + ], + [ + 6.922417960894913, + 51.014869700167715 + ], + [ + 6.9226741357569574, + 51.014982019117326 + ], + [ + 6.922920580336964, + 51.015121021462775 + ], + [ + 6.924231456852024, + 51.01574978410152 + ], + [ + 6.925670673934481, + 51.01640951533327 + ], + [ + 6.927162452961635, + 51.01704445101877 + ], + [ + 6.928132039915825, + 51.017419418323435 + ], + [ + 6.932999319541178, + 51.01933739340074 + ], + [ + 6.935351899048231, + 51.02027996570854 + ], + [ + 6.936413080655664, + 51.02073080777713 + ], + [ + 6.938168152621084, + 51.02147396872835 + ], + [ + 6.938634206466893, + 51.02168533451037 + ], + [ + 6.939447864001142, + 51.0220506733329 + ], + [ + 6.941736838686521, + 51.02316774545944 + ], + [ + 6.942975292375569, + 51.02377207492088 + ], + [ + 6.943336769892937, + 51.02357624789791 + ], + [ + 6.943665436214754, + 51.02341598142113 + ], + [ + 6.943669826031055, + 51.023413456831356 + ], + [ + 6.943674353361771, + 51.023410886096435 + ], + [ + 6.9436810457030145, + 51.02340701971304 + ], + [ + 6.944445663817709, + 51.022851626193926 + ], + [ + 6.944449508898743, + 51.02284874483365 + ], + [ + 6.944461062026587, + 51.02284011545664 + ], + [ + 6.944483260202933, + 51.02282349455932 + ], + [ + 6.9445532579458655, + 51.02277135607154 + ], + [ + 6.944564095138933, + 51.02276517745233 + ], + [ + 6.944652429241239, + 51.02270009050229 + ], + [ + 6.944800565859956, + 51.02258063850795 + ], + [ + 6.944855900970321, + 51.022547290448955 + ], + [ + 6.945073477134567, + 51.022326912422315 + ], + [ + 6.946057573763047, + 51.0213160213539 + ], + [ + 6.946446688748197, + 51.02062438754915 + ], + [ + 6.946576435931053, + 51.02036813289783 + ], + [ + 6.946767292984876, + 51.01988965117441 + ], + [ + 6.946768731158655, + 51.01988159654153 + ], + [ + 6.946769684401711, + 51.01987557764569 + ], + [ + 6.946771179147959, + 51.01986550043145 + ], + [ + 6.9468736350143665, + 51.01937700332686 + ], + [ + 6.947021519934986, + 51.01835364420906 + ], + [ + 6.9470397688763965, + 51.018070085993806 + ], + [ + 6.947040386369008, + 51.018060497900585 + ], + [ + 6.947040958229417, + 51.01805090990468 + ], + [ + 6.947030961248607, + 51.01727855095713 + ], + [ + 6.9471572008574, + 51.01728587449344 + ], + [ + 6.947528491740237, + 51.017307415169704 + ], + [ + 6.947648095949706, + 51.017316152301134 + ], + [ + 6.954621835275694, + 51.0178233311467 + ], + [ + 6.954878221208453, + 51.0178234531038 + ], + [ + 6.9548876904751396, + 51.01782435637887 + ], + [ + 6.954897159941962, + 51.017825319914216 + ], + [ + 6.955277604185132, + 51.01786402655615 + ], + [ + 6.955541445479602, + 51.01789086912519 + ], + [ + 6.955920797028614, + 51.01791751922028 + ], + [ + 6.961057030468474, + 51.01627762016949 + ], + [ + 6.963820934998937, + 51.015391556171956 + ], + [ + 6.963885789690455, + 51.015374950340956 + ], + [ + 6.963766952891614, + 51.01500916536934 + ], + [ + 6.963932217442256, + 51.01498860163918 + ], + [ + 6.9655421519379, + 51.014538155765365 + ], + [ + 6.965797744308574, + 51.014542272781675 + ], + [ + 6.965835954601319, + 51.01454288786699 + ], + [ + 6.965874156347444, + 51.01454350279098 + ], + [ + 6.968202175976509, + 51.014580852589404 + ], + [ + 6.968993750520419, + 51.01463370486407 + ], + [ + 6.96843676834788, + 51.01398076741173 + ], + [ + 6.968431077606437, + 51.01397416062495 + ], + [ + 6.968403189765731, + 51.013840994902644 + ], + [ + 6.968389127609527, + 51.01380730561597 + ], + [ + 6.968383684867811, + 51.013794242999204 + ], + [ + 6.968382304394221, + 51.01379069617395 + ], + [ + 6.968378630957337, + 51.01378112418971 + ], + [ + 6.968379340444696, + 51.01374806237121 + ], + [ + 6.9683568996387, + 51.013685043839494 + ], + [ + 6.9683036520939625, + 51.0135358815573 + ], + [ + 6.968283694409872, + 51.0134799887026 + ], + [ + 6.968252514998117, + 51.013426671589954 + ], + [ + 6.968335169520755, + 51.01339946812506 + ], + [ + 6.970534979873416, + 51.012677259947424 + ], + [ + 6.9706319311396285, + 51.0126530661281 + ], + [ + 6.970625440740544, + 51.012647464535036 + ], + [ + 6.9698793840783235, + 51.01174378453605 + ], + [ + 6.969813467928613, + 51.011664054975654 + ], + [ + 6.96875639635975, + 51.0103837775799 + ], + [ + 6.96871617936646, + 51.010334943213515 + ], + [ + 6.96721918660515, + 51.00852164570912 + ], + [ + 6.967135433466356, + 51.00842022167178 + ], + [ + 6.966803185958487, + 51.00801765064914 + ], + [ + 6.966726304691651, + 51.00792452925804 + ], + [ + 6.966055265090161, + 51.00711152531982 + ], + [ + 6.965987459213437, + 51.007029471668574 + ], + [ + 6.965933200845961, + 51.006963499850926 + ], + [ + 6.965038736696402, + 51.0058799587517 + ], + [ + 6.964649607624169, + 51.005384543206716 + ], + [ + 6.9642278535661655, + 51.0047715436761 + ], + [ + 6.964220992208548, + 51.00476104358602 + ], + [ + 6.964214126541514, + 51.00475054431971 + ], + [ + 6.964200330262907, + 51.00472943403167 + ], + [ + 6.963823018016326, + 51.00412982297229 + ], + [ + 6.963499742579402, + 51.003517718072324 + ], + [ + 6.963275236246727, + 51.003051502310775 + ], + [ + 6.963083528235937, + 51.0025796218662 + ], + [ + 6.963042762524151, + 51.002473610248074 + ], + [ + 6.963038526570792, + 51.00246241119414 + ], + [ + 6.963034293507351, + 51.002451211290996 + ], + [ + 6.963025862933357, + 51.00242871587199 + ], + [ + 6.963009233928871, + 51.00238372997999 + ], + [ + 6.96267550667544, + 51.00136899298467 + ], + [ + 6.962572359399069, + 51.00078131852894 + ], + [ + 6.96255710356543, + 51.00069389016403 + ], + [ + 6.962487023254845, + 51.00029462628267 + ], + [ + 6.962485546396419, + 51.00028353919285 + ], + [ + 6.962484075274915, + 51.000272451303736 + ], + [ + 6.96248114013496, + 51.000250178517554 + ], + [ + 6.962475365508039, + 51.000205369299955 + ], + [ + 6.962472588601832, + 51.000182998544645 + ], + [ + 6.962471222464648, + 51.000171824348655 + ], + [ + 6.962469860640077, + 51.00016064932851 + ], + [ + 6.962384113032821, + 50.99913640564467 + ], + [ + 6.962448374021881, + 50.99811155290296 + ], + [ + 6.962454779284578, + 50.99804938430956 + ], + [ + 6.962459841448241, + 50.99800358956276 + ], + [ + 6.96246241788891, + 50.99798073030432 + ], + [ + 6.962463712300321, + 50.99796930572956 + ], + [ + 6.9624650038626985, + 50.99795788110509 + ], + [ + 6.962576711274551, + 50.99718190705196 + ], + [ + 6.962791204629047, + 50.99634764534236 + ], + [ + 6.96281106424768, + 50.99628902558347 + ], + [ + 6.963172892841178, + 50.99528084823303 + ], + [ + 6.963175865139392, + 50.99527461348661 + ], + [ + 6.963643765709437, + 50.994295038958 + ], + [ + 6.963645624632654, + 50.994291152823024 + ], + [ + 6.964226621455473, + 50.99332474685639 + ], + [ + 6.964261540188168, + 50.993272563515454 + ], + [ + 6.964270904242707, + 50.99325879642578 + ], + [ + 6.964284988372486, + 50.993238090242606 + ], + [ + 6.964299117805762, + 50.99321732548909 + ], + [ + 6.964662000957352, + 50.99270225770852 + ], + [ + 6.965085363153563, + 50.99217558493668 + ], + [ + 6.965101406505887, + 50.992154672663084 + ], + [ + 6.965107434421363, + 50.992146824579926 + ], + [ + 6.96511028075665, + 50.99214450074203 + ], + [ + 6.9651131131663835, + 50.992142169466476 + ], + [ + 6.96512684423403, + 50.992125966464805 + ], + [ + 6.965133194330726, + 50.99211847384848 + ], + [ + 6.965140861577473, + 50.99210957148791 + ], + [ + 6.96514342883259, + 50.99210659074423 + ], + [ + 6.965153592217621, + 50.99209473697847 + ], + [ + 6.9652392530691865, + 50.991993089018045 + ], + [ + 6.96532660599352, + 50.99189213690791 + ], + [ + 6.965645975221887, + 50.99153684795753 + ], + [ + 6.965987015349076, + 50.991189648574384 + ], + [ + 6.966293139759174, + 50.990889750440026 + ], + [ + 6.966615352154378, + 50.99059655132742 + ], + [ + 6.966708467287225, + 50.99051262914025 + ], + [ + 6.967025521563573, + 50.99023879784179 + ], + [ + 6.967373054477251, + 50.989958240981466 + ], + [ + 6.967477594722764, + 50.989875931752934 + ], + [ + 6.968550713119158, + 50.989078497038456 + ], + [ + 6.969744783055352, + 50.988352771041356 + ], + [ + 6.9698076862591165, + 50.988316290790564 + ], + [ + 6.970099671608675, + 50.988160067448796 + ], + [ + 6.971056464692432, + 50.987648137642516 + ], + [ + 6.971555942115487, + 50.987380911665575 + ], + [ + 6.97349176339368, + 50.98660663231559 + ], + [ + 6.9735962069566835, + 50.986568185388 + ], + [ + 6.973705177689507, + 50.986528353648794 + ], + [ + 6.973831278282694, + 50.98648361347669 + ], + [ + 6.974315686007263, + 50.98631560786661 + ], + [ + 6.974808277639409, + 50.98615778003881 + ], + [ + 6.975697774338734, + 50.98587734534062 + ], + [ + 6.975774177889736, + 50.98585342446951 + ], + [ + 6.976752956407847, + 50.98554519376475 + ], + [ + 6.977642428572289, + 50.985265268265444 + ], + [ + 6.977718969101783, + 50.98524116503198 + ], + [ + 6.9786980112571735, + 50.984933184421365 + ], + [ + 6.979587609629694, + 50.98465351350732 + ], + [ + 6.979670662016965, + 50.98462738566859 + ], + [ + 6.980643470625006, + 50.9843217875564 + ], + [ + 6.983482530038545, + 50.98343067689948 + ], + [ + 6.984540875485113, + 50.9830990407011 + ], + [ + 6.985432420091654, + 50.982819601094576 + ], + [ + 6.98550894947183, + 50.98279566527737 + ], + [ + 6.986491032126344, + 50.9824881327174 + ], + [ + 6.987466150845987, + 50.98218295778997 + ], + [ + 6.98844269838458, + 50.98187804761475 + ], + [ + 6.9886977415662, + 50.98179776253624 + ], + [ + 6.9893995101090045, + 50.98157670357314 + ], + [ + 6.989589347519929, + 50.981516852584235 + ], + [ + 6.98977742888407, + 50.98145502932567 + ], + [ + 6.9899055286043685, + 50.98141187393562 + ], + [ + 6.990072767142515, + 50.98135436274149 + ], + [ + 6.99023883419299, + 50.981295332802055 + ], + [ + 6.990986773940744, + 50.981016431042235 + ], + [ + 6.991818946645103, + 50.98065455672328 + ], + [ + 6.993033176311886, + 50.980066313680986 + ], + [ + 6.994159681647793, + 50.9793729073609 + ], + [ + 6.994181471377302, + 50.979358707401936 + ], + [ + 6.994190523537412, + 50.97935266265406 + ], + [ + 6.994194813707518, + 50.979349213525175 + ], + [ + 6.994289425473466, + 50.97928694578853 + ], + [ + 6.994382916514609, + 50.97922403276788 + ], + [ + 6.994431035091538, + 50.97919115992529 + ], + [ + 6.994442942926597, + 50.97918291668567 + ], + [ + 6.994454867918175, + 50.979174671940804 + ], + [ + 6.994478750263122, + 50.97915812544372 + ], + [ + 6.99492242753462, + 50.97884305523735 + ], + [ + 6.995339873304461, + 50.978514174749506 + ], + [ + 6.995427480620231, + 50.97844259162589 + ], + [ + 6.996260469038092, + 50.977716882647876 + ], + [ + 6.996997141506633, + 50.97689812293865 + ], + [ + 6.997005518959917, + 50.97688810648877 + ], + [ + 6.99701393632244, + 50.97687802327034 + ], + [ + 6.997030758882041, + 50.976857841333754 + ], + [ + 6.997108847231095, + 50.97676152477696 + ], + [ + 6.997117560219847, + 50.97675076130409 + ], + [ + 6.997120994828202, + 50.97674652573734 + ], + [ + 6.997122995880834, + 50.97674405442306 + ], + [ + 6.997137151157073, + 50.97672649604311 + ], + [ + 6.997169319274107, + 50.976686219220134 + ], + [ + 6.997176976493711, + 50.97667655105102 + ], + [ + 6.997185604184075, + 50.97666565030567 + ], + [ + 6.9972012192851984, + 50.97664594768302 + ], + [ + 6.99759521083259, + 50.97612129734038 + ], + [ + 6.997920172460476, + 50.97559840038463 + ], + [ + 6.998089536703873, + 50.97530282212746 + ], + [ + 6.998283135529964, + 50.97491579590569 + ], + [ + 6.9984306734576345, + 50.974591908648456 + ], + [ + 6.998549427679174, + 50.97428705490721 + ], + [ + 6.99869637858931, + 50.97386968330874 + ], + [ + 6.998824065890045, + 50.97338406745487 + ], + [ + 6.998838779071577, + 50.973320028336104 + ], + [ + 6.998893368291077, + 50.97306399573475 + ], + [ + 6.998935265692748, + 50.97280708276787 + ], + [ + 6.999025113256061, + 50.97199826543981 + ], + [ + 6.998988336227233, + 50.97118773586577 + ], + [ + 6.9989875152003185, + 50.97117800682736 + ], + [ + 6.998986446032903, + 50.97116536857933 + ], + [ + 6.998984521195141, + 50.97114291256106 + ], + [ + 6.998980146614318, + 50.97109818309423 + ], + [ + 6.9989788955299455, + 50.97108553543285 + ], + [ + 6.998978262141901, + 50.971079095898986 + ], + [ + 6.998976142016689, + 50.9710574054929 + ], + [ + 6.998971477956766, + 50.97101294896885 + ], + [ + 6.9989697221217195, + 50.97099752980001 + ], + [ + 6.998968877557708, + 50.97099013781422 + ], + [ + 6.998966411114068, + 50.970968584472224 + ], + [ + 6.99876428499383, + 50.969795692401064 + ], + [ + 6.998298581171416, + 50.968653091519265 + ], + [ + 6.9981159410191935, + 50.96829281052124 + ], + [ + 6.997789153527222, + 50.96764812628295 + ], + [ + 6.997198215558097, + 50.966717929751596 + ], + [ + 6.996635754449234, + 50.9659132460796 + ], + [ + 6.996000851369766, + 50.96513497805489 + ], + [ + 6.995771513603906, + 50.964868424174085 + ], + [ + 6.995533131814267, + 50.96460491361053 + ], + [ + 6.995459098611732, + 50.96452455123943 + ], + [ + 6.995401932623871, + 50.96446297752261 + ], + [ + 6.9953965753727, + 50.96445720693167 + ], + [ + 6.993873255827238, + 50.96493646323524 + ], + [ + 6.993665359360767, + 50.96500053712498 + ], + [ + 6.992461112922153, + 50.965370345928605 + ], + [ + 6.99246722864137, + 50.965378239615625 + ], + [ + 6.99247194824281, + 50.96538445715728 + ], + [ + 6.992440285009399, + 50.965423720629104 + ], + [ + 6.992431729320474, + 50.965434329979445 + ], + [ + 6.992348003885425, + 50.96542422317421 + ], + [ + 6.992343383494098, + 50.96542366526454 + ], + [ + 6.992338937273055, + 50.96541781306534 + ], + [ + 6.992335374921871, + 50.96541319650766 + ], + [ + 6.992330940894343, + 50.96540759004557 + ], + [ + 6.992202079280883, + 50.9654333662119 + ], + [ + 6.991207163267429, + 50.965740391727635 + ], + [ + 6.991015388916782, + 50.9657995516361 + ], + [ + 6.990963952752857, + 50.9658153454239 + ], + [ + 6.990707752309129, + 50.96589465376961 + ], + [ + 6.990401379148537, + 50.96599041629499 + ], + [ + 6.990327945918004, + 50.96601809770633 + ], + [ + 6.9902935580727865, + 50.96603107730963 + ], + [ + 6.990123428270165, + 50.96611040522407 + ], + [ + 6.9900696789679895, + 50.96614007654319 + ], + [ + 6.9899901548144285, + 50.96618947339259 + ], + [ + 6.989921416620942, + 50.9662372499376 + ], + [ + 6.989772851093979, + 50.96636623671202 + ], + [ + 6.989768596482377, + 50.96636937780851 + ], + [ + 6.989764389921425, + 50.966372395619196 + ], + [ + 6.989388493956998, + 50.966641972216934 + ], + [ + 6.989139592030621, + 50.966853531871635 + ], + [ + 6.9890214068807595, + 50.96700414460204 + ], + [ + 6.988858584015856, + 50.967223294670525 + ], + [ + 6.988697278211714, + 50.96751088026852 + ], + [ + 6.988608863613673, + 50.96771077998501 + ], + [ + 6.988550919470328, + 50.96787232121394 + ], + [ + 6.988436093659559, + 50.9682036502134 + ], + [ + 6.988322838876149, + 50.96843473549214 + ], + [ + 6.98809715876748, + 50.96874830465377 + ], + [ + 6.987830184074197, + 50.9690549417338 + ], + [ + 6.98756358257226, + 50.969278694285634 + ], + [ + 6.987212113196062, + 50.96950172439673 + ], + [ + 6.986949133010565, + 50.969634653136104 + ], + [ + 6.986601805588847, + 50.96976451793416 + ], + [ + 6.986205171089697, + 50.96989228121742 + ], + [ + 6.985896838293874, + 50.96996787938169 + ], + [ + 6.984737598407119, + 50.97011897639859 + ], + [ + 6.983825267048525, + 50.97019822360502 + ], + [ + 6.983427792733573, + 50.9702330491458 + ], + [ + 6.9826576707023325, + 50.970300369437126 + ], + [ + 6.981596362866539, + 50.9703861934855 + ], + [ + 6.980119012497131, + 50.97048841023769 + ], + [ + 6.977479684895424, + 50.9707218817737 + ], + [ + 6.977474564078029, + 50.97072234258982 + ], + [ + 6.977466750549072, + 50.970723046361535 + ], + [ + 6.9769325730581215, + 50.9707702378347 + ], + [ + 6.974837500547227, + 50.970949470260656 + ], + [ + 6.974059945346716, + 50.97098706430809 + ], + [ + 6.97286845691505, + 50.971021901633556 + ], + [ + 6.969151632102302, + 50.97104527503519 + ], + [ + 6.969144373206773, + 50.971045374526184 + ], + [ + 6.969137114154392, + 50.97104547761148 + ], + [ + 6.968831802174679, + 50.971049092369995 + ], + [ + 6.968661990730989, + 50.97104402300163 + ], + [ + 6.968167512305322, + 50.97102925443509 + ], + [ + 6.968034119770328, + 50.97101597795361 + ], + [ + 6.967555759922574, + 50.97096843539748 + ], + [ + 6.967509248881678, + 50.97096369645187 + ], + [ + 6.967059499515747, + 50.970963738245416 + ], + [ + 6.966946424129543, + 50.97092915918646 + ], + [ + 6.966941482110397, + 50.97092741469782 + ], + [ + 6.966844401861196, + 50.97087580653655 + ], + [ + 6.96611423954622, + 50.97087861264145 + ], + [ + 6.966039926277953, + 50.97087878145943 + ], + [ + 6.96530285677909, + 50.97088487978141 + ], + [ + 6.965160936856381, + 50.97088605270905 + ], + [ + 6.965147841775735, + 50.97088616086786 + ], + [ + 6.965134755881767, + 50.97088631955009 + ], + [ + 6.964839270783756, + 50.97091109543665 + ], + [ + 6.96408107981178, + 50.971004106416224 + ], + [ + 6.963234552058207, + 50.97115600221745 + ], + [ + 6.962568493974553, + 50.97128464989273 + ], + [ + 6.96202616869579, + 50.971386473877594 + ], + [ + 6.961636941358694, + 50.971449370330326 + ], + [ + 6.961255385074758, + 50.97150439322069 + ], + [ + 6.961189088068509, + 50.97151446699866 + ], + [ + 6.961041437307252, + 50.97153696509638 + ], + [ + 6.960952389291797, + 50.97154593005627 + ], + [ + 6.960699124250101, + 50.971568348821435 + ], + [ + 6.960578693474611, + 50.97158302412327 + ], + [ + 6.960503523499599, + 50.97158626829866 + ], + [ + 6.960351708181393, + 50.97159248790229 + ], + [ + 6.959404536274605, + 50.971631237710604 + ], + [ + 6.9593862817126775, + 50.97163199434057 + ], + [ + 6.959377454616161, + 50.97163273854878 + ], + [ + 6.959296437024872, + 50.97163631055206 + ], + [ + 6.9590208971476795, + 50.97164972039907 + ], + [ + 6.958864702988625, + 50.97165612774542 + ], + [ + 6.958777218767952, + 50.97165972305205 + ], + [ + 6.958235874081308, + 50.97167846083459 + ], + [ + 6.957742261119755, + 50.97170588427806 + ], + [ + 6.957656403502396, + 50.97171243195377 + ], + [ + 6.957369687875081, + 50.97173437983315 + ], + [ + 6.956682781345981, + 50.97180989464026 + ], + [ + 6.956675475662861, + 50.97181069944442 + ], + [ + 6.95663501647253, + 50.97181756324096 + ], + [ + 6.956382961120763, + 50.971859519202546 + ], + [ + 6.956378630458397, + 50.971860305905686 + ], + [ + 6.956233843947111, + 50.971886007564926 + ], + [ + 6.956137679788186, + 50.971906377855966 + ], + [ + 6.955840178542508, + 50.97197287427569 + ], + [ + 6.955822101233871, + 50.971976920658506 + ], + [ + 6.9558171580771555, + 50.971978225449114 + ], + [ + 6.955812767992184, + 50.97197929439337 + ], + [ + 6.955629846811371, + 50.97201359212061 + ], + [ + 6.954980477321515, + 50.97219474239863 + ], + [ + 6.954846901969233, + 50.97224048694866 + ], + [ + 6.954777224635625, + 50.972264381504075 + ], + [ + 6.954925733805145, + 50.972411650299655 + ], + [ + 6.954961524840728, + 50.972445855220805 + ], + [ + 6.9549639875989335, + 50.97244812789789 + ], + [ + 6.955063362527477, + 50.97255830024584 + ], + [ + 6.955063902226566, + 50.97256718830222 + ], + [ + 6.955064755943764, + 50.97258121727453 + ], + [ + 6.955065516572742, + 50.97259373367086 + ], + [ + 6.955044271367511, + 50.97261618677186 + ], + [ + 6.955017353539114, + 50.97262532244517 + ], + [ + 6.954995903186508, + 50.97270153193071 + ], + [ + 6.9550040491492275, + 50.972776765896555 + ] + ], + [ + [ + 6.9547448826823866, + 50.97331979335989 + ], + [ + 6.9551107365891625, + 50.9732534318836 + ], + [ + 6.954745411238545, + 50.973316290568896 + ], + [ + 6.9547448826823866, + 50.97331979335989 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Niehl", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "504", + "Population_rel": 0.01849656262637403, + "Population_abs": 20125 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.79407999893628, + 51.063461262587225 + ], + [ + 6.7942363468290115, + 51.06342157835821 + ], + [ + 6.794312665617765, + 51.06342832548331 + ], + [ + 6.794620460026294, + 51.06345558677994 + ], + [ + 6.794739561500841, + 51.06342883252522 + ], + [ + 6.794787097523181, + 51.0634088596287 + ], + [ + 6.794857148731512, + 51.0633766996542 + ], + [ + 6.795291760482024, + 51.06313548552617 + ], + [ + 6.795721900507088, + 51.06268386819687 + ], + [ + 6.795782973678358, + 51.062621491816195 + ], + [ + 6.795845828827661, + 51.06256387256354 + ], + [ + 6.795976449269533, + 51.06244720393384 + ], + [ + 6.796032421276856, + 51.06239680446899 + ], + [ + 6.796286979224555, + 51.062226945636134 + ], + [ + 6.796435813108142, + 51.06212831532588 + ], + [ + 6.79668730251996, + 51.06196190893782 + ], + [ + 6.796901878513418, + 51.06177275858074 + ], + [ + 6.79711410713275, + 51.061548813345595 + ], + [ + 6.797251669587989, + 51.061345318574936 + ], + [ + 6.797515504661104, + 51.06112565887649 + ], + [ + 6.7989902982948145, + 51.06004220368954 + ], + [ + 6.79855806982634, + 51.05992879062124 + ], + [ + 6.798825560892595, + 51.05948672723168 + ], + [ + 6.799377460525723, + 51.059633522775044 + ], + [ + 6.7996279697065525, + 51.05970000852049 + ], + [ + 6.799681907162155, + 51.05970433403823 + ], + [ + 6.799908084850582, + 51.05972240063241 + ], + [ + 6.800443596756941, + 51.05962943260167 + ], + [ + 6.800553293971796, + 51.05960966619338 + ], + [ + 6.800663314643492, + 51.05959066125022 + ], + [ + 6.800706366249292, + 51.059583833229475 + ], + [ + 6.800734234674165, + 51.059481999441715 + ], + [ + 6.800755889608931, + 51.059359499664076 + ], + [ + 6.800936184029816, + 51.05833494656091 + ], + [ + 6.800942907032137, + 51.05797961578719 + ], + [ + 6.800943679340638, + 51.05793769314962 + ], + [ + 6.800946385788653, + 51.057794611413826 + ], + [ + 6.800947792136999, + 51.05772277744759 + ], + [ + 6.8009522680286665, + 51.05750170422453 + ], + [ + 6.800953920460172, + 51.057373483777965 + ], + [ + 6.800808218891747, + 51.05600629211162 + ], + [ + 6.8010636827499775, + 51.0555525526204 + ], + [ + 6.801101937765964, + 51.055484604070216 + ], + [ + 6.801146088970346, + 51.055406149298015 + ], + [ + 6.801171256059849, + 51.05536148847517 + ], + [ + 6.8012557374929195, + 51.05521129906935 + ], + [ + 6.8014602910052195, + 51.054914936423906 + ], + [ + 6.801504862479216, + 51.054850478382136 + ], + [ + 6.801621617945534, + 51.054681344413545 + ], + [ + 6.8017545745723975, + 51.05445612134168 + ], + [ + 6.8018717473227595, + 51.054257318134255 + ], + [ + 6.802097196522036, + 51.05387538388585 + ], + [ + 6.8021128563087165, + 51.05384880861159 + ], + [ + 6.802465950895269, + 51.05325057629305 + ], + [ + 6.802504063472781, + 51.053184615834475 + ], + [ + 6.80279381610379, + 51.052662532375834 + ], + [ + 6.802819836691499, + 51.05261557044821 + ], + [ + 6.802960364922853, + 51.05236202392707 + ], + [ + 6.802975511908059, + 51.052311775303146 + ], + [ + 6.803406681526717, + 51.05088043928797 + ], + [ + 6.803428180206147, + 51.05080983563321 + ], + [ + 6.803484628892523, + 51.05062472344162 + ], + [ + 6.8035070148417285, + 51.0505928646687 + ], + [ + 6.803586391427809, + 51.05047997023521 + ], + [ + 6.803784994646981, + 51.050115497621576 + ], + [ + 6.8042178982482096, + 51.04966893074092 + ], + [ + 6.804243315336223, + 51.04964271125349 + ], + [ + 6.804280170313458, + 51.04960469371028 + ], + [ + 6.804441846799512, + 51.0493493978579 + ], + [ + 6.804547449302245, + 51.04918056043259 + ], + [ + 6.804572557209951, + 51.049142285166155 + ], + [ + 6.804619396711683, + 51.049066404164805 + ], + [ + 6.804876836482346, + 51.04864925240324 + ], + [ + 6.805045751466553, + 51.04844754730499 + ], + [ + 6.8053689475353645, + 51.0481332598917 + ], + [ + 6.805521660292303, + 51.04800859645936 + ], + [ + 6.805679187094818, + 51.047908846151465 + ], + [ + 6.805824146843426, + 51.0477617770397 + ], + [ + 6.80592683070293, + 51.04740579715086 + ], + [ + 6.806269185660337, + 51.046939422121405 + ], + [ + 6.806319504352437, + 51.046918396934345 + ], + [ + 6.806393637712324, + 51.04688739957479 + ], + [ + 6.806838648511616, + 51.046701261002156 + ], + [ + 6.807238096957866, + 51.04653416705046 + ], + [ + 6.807329832753247, + 51.04649579360546 + ], + [ + 6.807465833138919, + 51.04649214040245 + ], + [ + 6.80773851355698, + 51.04641001783265 + ], + [ + 6.8079247769957965, + 51.046314845609075 + ], + [ + 6.808031785837653, + 51.046263435679684 + ], + [ + 6.808803554266787, + 51.04623546313996 + ], + [ + 6.8092798313855205, + 51.04626211323878 + ], + [ + 6.809369477314409, + 51.04627450859578 + ], + [ + 6.809443128157926, + 51.04628469187887 + ], + [ + 6.8097366524659835, + 51.04627778393635 + ], + [ + 6.8097957718556055, + 51.04626459217654 + ], + [ + 6.810025904850714, + 51.04621323485099 + ], + [ + 6.810342068795533, + 51.04617401235727 + ], + [ + 6.810877358238541, + 51.046183684470904 + ], + [ + 6.811214785896844, + 51.04621393045044 + ], + [ + 6.8114593150477925, + 51.046213612726625 + ], + [ + 6.811584080912826, + 51.04621284443086 + ], + [ + 6.811701983840905, + 51.04618036212665 + ], + [ + 6.811875884221026, + 51.04611227343433 + ], + [ + 6.811940649992373, + 51.04608218807193 + ], + [ + 6.8123414630276145, + 51.04602540859078 + ], + [ + 6.812512788373833, + 51.046029131182124 + ], + [ + 6.8128132030424124, + 51.04604078721849 + ], + [ + 6.813248536998654, + 51.045863746420544 + ], + [ + 6.813610778962669, + 51.04588836116361 + ], + [ + 6.813668126100453, + 51.0458922557746 + ], + [ + 6.813724138228992, + 51.04589605072499 + ], + [ + 6.813806024598158, + 51.0459020521652 + ], + [ + 6.813773582155708, + 51.04594676208538 + ], + [ + 6.813741046160452, + 51.045973523125326 + ], + [ + 6.813737355757857, + 51.046027192894556 + ], + [ + 6.813665409785214, + 51.047073577784026 + ], + [ + 6.813720503577312, + 51.047788086546234 + ], + [ + 6.813673648785978, + 51.04787408973978 + ], + [ + 6.813277340617385, + 51.04827265221738 + ], + [ + 6.813116305997604, + 51.04856832177772 + ], + [ + 6.813099881900442, + 51.048680706564724 + ], + [ + 6.813104657417378, + 51.04870705603737 + ], + [ + 6.813177739452663, + 51.04910873958883 + ], + [ + 6.813612747262123, + 51.049754721233064 + ], + [ + 6.813677563819434, + 51.050008389962 + ], + [ + 6.813649977253248, + 51.05006696290598 + ], + [ + 6.813930769642523, + 51.05061868013034 + ], + [ + 6.814215703671175, + 51.05108171167818 + ], + [ + 6.8143842695083086, + 51.051330029706335 + ], + [ + 6.814862244494794, + 51.051864297779844 + ], + [ + 6.8157789897830785, + 51.051795729987965 + ], + [ + 6.815876233167828, + 51.05181850352337 + ], + [ + 6.816290549341163, + 51.0518178680549 + ], + [ + 6.816699352631781, + 51.05360971149716 + ], + [ + 6.816508527548088, + 51.05364994496604 + ], + [ + 6.816472607521072, + 51.05378548807219 + ], + [ + 6.816480414203326, + 51.0538303528619 + ], + [ + 6.816547946456313, + 51.053827196349424 + ], + [ + 6.816596598394003, + 51.05382488582346 + ], + [ + 6.816688295012454, + 51.053820945080595 + ], + [ + 6.816793740234352, + 51.053818650725276 + ], + [ + 6.816920771992277, + 51.05383139162348 + ], + [ + 6.817685787735496, + 51.05390972340288 + ], + [ + 6.817736549277627, + 51.053914351836255 + ], + [ + 6.817827266381676, + 51.05389221637073 + ], + [ + 6.817878062019346, + 51.05390643814587 + ], + [ + 6.817981464297464, + 51.05393691387089 + ], + [ + 6.818331446930295, + 51.05404023105007 + ], + [ + 6.818404200730051, + 51.05406163225076 + ], + [ + 6.818454231125398, + 51.05407641598437 + ], + [ + 6.81919111737917, + 51.05429315748383 + ], + [ + 6.82049568015176, + 51.054677033209316 + ], + [ + 6.820917029127725, + 51.054799034563054 + ], + [ + 6.821159102033945, + 51.05486891788617 + ], + [ + 6.821379109971829, + 51.05493253250147 + ], + [ + 6.821547369428261, + 51.054981029200846 + ], + [ + 6.822285172448033, + 51.05519364890328 + ], + [ + 6.82393562522043, + 51.05566977091197 + ], + [ + 6.825257699180527, + 51.05611019211055 + ], + [ + 6.825737197908412, + 51.05626979814784 + ], + [ + 6.826027982207966, + 51.05636530793325 + ], + [ + 6.826175937147462, + 51.05640890340028 + ], + [ + 6.8264675141655315, + 51.05651820707605 + ], + [ + 6.826572301074711, + 51.05656293170258 + ], + [ + 6.828921074188491, + 51.05756578923798 + ], + [ + 6.829050364955674, + 51.05762274247586 + ], + [ + 6.8291879228716645, + 51.05768238811248 + ], + [ + 6.830019851485645, + 51.05804287557083 + ], + [ + 6.8310134988181135, + 51.05847199847804 + ], + [ + 6.831259194747686, + 51.05857809715688 + ], + [ + 6.831311306830462, + 51.05860013414316 + ], + [ + 6.83223272009125, + 51.05898994032549 + ], + [ + 6.8323191159772865, + 51.05902566198934 + ], + [ + 6.832466376104776, + 51.059093569989535 + ], + [ + 6.832548959785952, + 51.059135110767 + ], + [ + 6.83263618823564, + 51.059180975504994 + ], + [ + 6.832675033251507, + 51.05920249684802 + ], + [ + 6.832765568230562, + 51.0592530761925 + ], + [ + 6.832835756123812, + 51.059292296679814 + ], + [ + 6.832902964189799, + 51.05932983758161 + ], + [ + 6.832971704697716, + 51.05936824328604 + ], + [ + 6.8330255381171, + 51.0593983185599 + ], + [ + 6.833092962808622, + 51.059435964097574 + ], + [ + 6.833264550512435, + 51.0595318215622 + ], + [ + 6.833299829259736, + 51.05930133182523 + ], + [ + 6.8340893908659535, + 51.054138026429406 + ], + [ + 6.834543296204255, + 51.0541341656843 + ], + [ + 6.834560381388242, + 51.05410869454722 + ], + [ + 6.8346398054612365, + 51.05413149801877 + ], + [ + 6.835358227385061, + 51.054338594153464 + ], + [ + 6.83746593966207, + 51.055325962117514 + ], + [ + 6.837506667404584, + 51.05534390033159 + ], + [ + 6.839035585837729, + 51.05601323802582 + ], + [ + 6.840446549669043, + 51.05663080070712 + ], + [ + 6.841212881873666, + 51.05686502291701 + ], + [ + 6.842771275829329, + 51.05713883212568 + ], + [ + 6.843801676451629, + 51.05731980404693 + ], + [ + 6.845015584720047, + 51.05770052465301 + ], + [ + 6.846046353582127, + 51.05799437643122 + ], + [ + 6.84639599937888, + 51.058082723373666 + ], + [ + 6.846571253417631, + 51.058127027159614 + ], + [ + 6.8475247622123465, + 51.05836794178392 + ], + [ + 6.847870340133237, + 51.05848319053979 + ], + [ + 6.848014270226245, + 51.058531802343026 + ], + [ + 6.8480782548941495, + 51.058553538729925 + ], + [ + 6.848193593218125, + 51.05850529627778 + ], + [ + 6.8484227296541675, + 51.058098221742725 + ], + [ + 6.8485554564342, + 51.05785266537744 + ], + [ + 6.848681084494981, + 51.05763241873623 + ], + [ + 6.849103042093245, + 51.05689413547 + ], + [ + 6.849306297233238, + 51.05651241994516 + ], + [ + 6.849332269731811, + 51.056458565973095 + ], + [ + 6.849376813930083, + 51.056367452833214 + ], + [ + 6.849474826674459, + 51.05616619363504 + ], + [ + 6.849526932113041, + 51.056067384269355 + ], + [ + 6.849569157581057, + 51.05598986108539 + ], + [ + 6.849707031256311, + 51.05573779314286 + ], + [ + 6.850158178919352, + 51.05491308733693 + ], + [ + 6.850223856983456, + 51.05479233535696 + ], + [ + 6.850255470166216, + 51.05473511518482 + ], + [ + 6.850284225223979, + 51.05468537557104 + ], + [ + 6.850460777022871, + 51.054413894015894 + ], + [ + 6.850878602798882, + 51.053689384084294 + ], + [ + 6.851513944013028, + 51.05249945449897 + ], + [ + 6.8515874107551475, + 51.052571446839494 + ], + [ + 6.85189548086956, + 51.05277932139407 + ], + [ + 6.85209214793021, + 51.052896992225335 + ], + [ + 6.852148127902244, + 51.05293194307088 + ], + [ + 6.85267610193606, + 51.05304882482257 + ], + [ + 6.852749914703193, + 51.053021947407046 + ], + [ + 6.852813698326294, + 51.05290732978243 + ], + [ + 6.85288845409677, + 51.052924033482114 + ], + [ + 6.8530478945422635, + 51.05286138390004 + ], + [ + 6.853206137728471, + 51.052803507563816 + ], + [ + 6.853608687129556, + 51.05289270360524 + ], + [ + 6.853741437483545, + 51.052922116391 + ], + [ + 6.8537980462822805, + 51.05292143311005 + ], + [ + 6.8537866638146445, + 51.052884212085786 + ], + [ + 6.853742717982301, + 51.052735853528425 + ], + [ + 6.853724932493537, + 51.05267611596563 + ], + [ + 6.853713074018349, + 51.05260518934994 + ], + [ + 6.853643369492682, + 51.05215750280446 + ], + [ + 6.853632014805572, + 51.051958837464426 + ], + [ + 6.853552234753386, + 51.0514595368052 + ], + [ + 6.853557661269409, + 51.05127764818009 + ], + [ + 6.8535698342120694, + 51.051214456065644 + ], + [ + 6.853654860203723, + 51.05078172843073 + ], + [ + 6.853664194643679, + 51.050692218836076 + ], + [ + 6.853668300416735, + 51.050659558848544 + ], + [ + 6.8536857591506815, + 51.05047668248975 + ], + [ + 6.853689221386201, + 51.05044007231895 + ], + [ + 6.853739901340278, + 51.050241312639045 + ], + [ + 6.853678342524054, + 51.05020528961387 + ], + [ + 6.853731135319135, + 51.050098179895755 + ], + [ + 6.8538145234337815, + 51.0499486214341 + ], + [ + 6.854104635767036, + 51.049439245908665 + ], + [ + 6.85429029977672, + 51.04951591363765 + ], + [ + 6.854401966871002, + 51.04951608480244 + ], + [ + 6.854604601762803, + 51.04905049558055 + ], + [ + 6.854968457924544, + 51.048527274495434 + ], + [ + 6.8550235340189145, + 51.04842826091532 + ], + [ + 6.855359093780673, + 51.047964124219746 + ], + [ + 6.855624299270454, + 51.04756024210547 + ], + [ + 6.855661262127662, + 51.04751470351531 + ], + [ + 6.856097342747692, + 51.04701180387575 + ], + [ + 6.856591435449453, + 51.04656987251089 + ], + [ + 6.856995504358685, + 51.04617237709387 + ], + [ + 6.857400869578674, + 51.045945842737225 + ], + [ + 6.85763527019466, + 51.04572020293482 + ], + [ + 6.858176336556196, + 51.04528295409851 + ], + [ + 6.859400957592342, + 51.044666196203785 + ], + [ + 6.860261156756408, + 51.04428465792177 + ], + [ + 6.860481117603251, + 51.04421202384127 + ], + [ + 6.860415652688017, + 51.04417277418062 + ], + [ + 6.860370125499735, + 51.0441474908769 + ], + [ + 6.860076039138722, + 51.043921334059235 + ], + [ + 6.859984694264248, + 51.04394620224508 + ], + [ + 6.8598937895522285, + 51.04388968595925 + ], + [ + 6.859587478786036, + 51.04375773373585 + ], + [ + 6.8594935954574385, + 51.04371617581258 + ], + [ + 6.859447742116769, + 51.043696377744794 + ], + [ + 6.858965342120194, + 51.04378846915868 + ], + [ + 6.858875540232121, + 51.043805579773526 + ], + [ + 6.856922725670153, + 51.04421517528691 + ], + [ + 6.856829470953432, + 51.04410709101865 + ], + [ + 6.857090547272335, + 51.04380511888666 + ], + [ + 6.857404772330089, + 51.04347812633988 + ], + [ + 6.857613110786342, + 51.043262566341056 + ], + [ + 6.858211071628682, + 51.04271118682054 + ], + [ + 6.858297456023254, + 51.0426403924635 + ], + [ + 6.85843605014809, + 51.04246287213601 + ], + [ + 6.8585245081992445, + 51.042342307364805 + ], + [ + 6.858949843369041, + 51.04197970590477 + ], + [ + 6.859525270969913, + 51.04141149138902 + ], + [ + 6.859616589035175, + 51.041379271604455 + ], + [ + 6.85970061271597, + 51.04125055821905 + ], + [ + 6.859737503771804, + 51.04119455461315 + ], + [ + 6.859815705122265, + 51.041074873020776 + ], + [ + 6.860101229048502, + 51.040786107855816 + ], + [ + 6.860491506950859, + 51.04043355674813 + ], + [ + 6.8610129897835295, + 51.03972155152264 + ], + [ + 6.861097943678378, + 51.03957413279369 + ], + [ + 6.862802910971731, + 51.037801121729174 + ], + [ + 6.862905994757903, + 51.03769383880823 + ], + [ + 6.863022331257941, + 51.03758618845596 + ], + [ + 6.863307563360603, + 51.03732231750466 + ], + [ + 6.863447230203119, + 51.037158312342804 + ], + [ + 6.863557454473942, + 51.037028773116496 + ], + [ + 6.8646380146395645, + 51.03594927577345 + ], + [ + 6.865328734917593, + 51.03525918868682 + ], + [ + 6.867463541643549, + 51.033099535649264 + ], + [ + 6.867499311279588, + 51.03306070699365 + ], + [ + 6.867779347312611, + 51.03275802942559 + ], + [ + 6.868220706311529, + 51.03239167865426 + ], + [ + 6.868960050622914, + 51.031608799552075 + ], + [ + 6.869740688724789, + 51.03077149405396 + ], + [ + 6.870795679194768, + 51.029795682979376 + ], + [ + 6.871838619052299, + 51.0286966210865 + ], + [ + 6.872097066883966, + 51.028522212640745 + ], + [ + 6.8720491576483465, + 51.02851418895742 + ], + [ + 6.872061704266951, + 51.02846878864015 + ], + [ + 6.871689693779079, + 51.02837960773576 + ], + [ + 6.870968465586901, + 51.02822291449781 + ], + [ + 6.870313581318488, + 51.028023474811086 + ], + [ + 6.8702490578715, + 51.0279957290655 + ], + [ + 6.870183240811461, + 51.0279673643108 + ], + [ + 6.8700788331683125, + 51.027925803544115 + ], + [ + 6.868972983741008, + 51.027484581826755 + ], + [ + 6.868561530047597, + 51.027320534854724 + ], + [ + 6.866138711395708, + 51.026738595065844 + ], + [ + 6.86365519443207, + 51.026499630805155 + ], + [ + 6.863439059158075, + 51.026516465832074 + ], + [ + 6.86333921342971, + 51.02652435006503 + ], + [ + 6.86184328719114, + 51.026641471753756 + ], + [ + 6.8617477808125305, + 51.02664891871684 + ], + [ + 6.861643591536905, + 51.02665705835847 + ], + [ + 6.86147004052234, + 51.026668137137854 + ], + [ + 6.860214658711102, + 51.02676692338771 + ], + [ + 6.859869610319094, + 51.02679232664798 + ], + [ + 6.859613955453232, + 51.02681125817833 + ], + [ + 6.85945923052501, + 51.026823004513446 + ], + [ + 6.858062886489209, + 51.02693044553054 + ], + [ + 6.857903465010427, + 51.02694267389192 + ], + [ + 6.857452675957843, + 51.02697735687437 + ], + [ + 6.857269649082272, + 51.02698490273594 + ], + [ + 6.857079603731321, + 51.027004821790186 + ], + [ + 6.856795765732772, + 51.02702721346473 + ], + [ + 6.856697407597674, + 51.027034766768786 + ], + [ + 6.8564452427189995, + 51.027049740594066 + ], + [ + 6.856191367147903, + 51.027064726548545 + ], + [ + 6.85610954526871, + 51.02707233821865 + ], + [ + 6.855635548439956, + 51.02711635278147 + ], + [ + 6.854818654810739, + 51.02717914690089 + ], + [ + 6.854674606730379, + 51.027190269051204 + ], + [ + 6.853215608627031, + 51.02730251562826 + ], + [ + 6.853046638529842, + 51.027291614271476 + ], + [ + 6.852987736557446, + 51.02732098994563 + ], + [ + 6.848505776615652, + 51.027109092637744 + ], + [ + 6.848077270327228, + 51.02709375415282 + ], + [ + 6.847951432550055, + 51.02709016679716 + ], + [ + 6.8477762203379084, + 51.02708428903563 + ], + [ + 6.847712575982397, + 51.02708217830499 + ], + [ + 6.84409373449162, + 51.02695746557609 + ], + [ + 6.844069536673571, + 51.02700636155537 + ], + [ + 6.844092237950687, + 51.02703199642231 + ], + [ + 6.8438619455866805, + 51.027137035497326 + ], + [ + 6.843746446113071, + 51.02718973766383 + ], + [ + 6.841549499927221, + 51.02819214608288 + ], + [ + 6.840480997157264, + 51.02863424135057 + ], + [ + 6.840118197864952, + 51.02878366115888 + ], + [ + 6.839961832293513, + 51.0288482825155 + ], + [ + 6.839906181995947, + 51.028871272225935 + ], + [ + 6.8396905318414305, + 51.02896028258511 + ], + [ + 6.838340712268477, + 51.029516773643834 + ], + [ + 6.836668450509936, + 51.03020618444097 + ], + [ + 6.836338955932568, + 51.0303589255471 + ], + [ + 6.836205679568885, + 51.03042054296495 + ], + [ + 6.835746583355201, + 51.030632804753296 + ], + [ + 6.834287841308564, + 51.03130705195382 + ], + [ + 6.83378611609727, + 51.03153895954366 + ], + [ + 6.83374082884577, + 51.031560201260305 + ], + [ + 6.833636192289264, + 51.03160828150659 + ], + [ + 6.833446440301776, + 51.03169618683741 + ], + [ + 6.8326715345423334, + 51.03205480680719 + ], + [ + 6.832384093250246, + 51.03218806580352 + ], + [ + 6.831257652255992, + 51.03270756226891 + ], + [ + 6.830420195112409, + 51.03309391486199 + ], + [ + 6.8303000672185865, + 51.03315017568116 + ], + [ + 6.830195839390061, + 51.03320235804186 + ], + [ + 6.8301220561716365, + 51.03324026608486 + ], + [ + 6.830037915120155, + 51.03328359829494 + ], + [ + 6.829987254509403, + 51.03325687468791 + ], + [ + 6.82986808613112, + 51.03319401301464 + ], + [ + 6.829899077453598, + 51.03327009255416 + ], + [ + 6.829931068795683, + 51.033350475304516 + ], + [ + 6.8298926659640395, + 51.03340294217567 + ], + [ + 6.829650489770882, + 51.03343613945825 + ], + [ + 6.828915766283428, + 51.03353697722721 + ], + [ + 6.828058440776961, + 51.03365458873317 + ], + [ + 6.827941725130059, + 51.03367061209655 + ], + [ + 6.8278052912851965, + 51.03369124134609 + ], + [ + 6.8277512976881205, + 51.03374280872939 + ], + [ + 6.827727450213544, + 51.033767144966006 + ], + [ + 6.827261610621401, + 51.034242173846486 + ], + [ + 6.827170969694089, + 51.034334733866565 + ], + [ + 6.827097350207527, + 51.0344098099222 + ], + [ + 6.8270249598075265, + 51.0344836712494 + ], + [ + 6.8269910985326305, + 51.03451836718456 + ], + [ + 6.826960500122129, + 51.034549724153194 + ], + [ + 6.826640411778335, + 51.034876136751066 + ], + [ + 6.8257032629368455, + 51.03583179698536 + ], + [ + 6.825633468251988, + 51.03590298065723 + ], + [ + 6.825144661420824, + 51.03640159523514 + ], + [ + 6.824783761130936, + 51.03676958846468 + ], + [ + 6.824731806841761, + 51.03682256939619 + ], + [ + 6.824306646417288, + 51.03725609940236 + ], + [ + 6.824265765414281, + 51.03729767987607 + ], + [ + 6.824227409182765, + 51.037336855652605 + ], + [ + 6.824175201181265, + 51.037386973386646 + ], + [ + 6.824165332278912, + 51.037343145380284 + ], + [ + 6.824060425672336, + 51.03727530099057 + ], + [ + 6.823305300225206, + 51.03683663119383 + ], + [ + 6.822854504486781, + 51.03657480137962 + ], + [ + 6.822761760633442, + 51.03652088992081 + ], + [ + 6.822719132139757, + 51.03649619347563 + ], + [ + 6.822603445699171, + 51.036429927592344 + ], + [ + 6.8225291898105835, + 51.03650556725163 + ], + [ + 6.822414170970072, + 51.03662304072758 + ], + [ + 6.820690103889276, + 51.03838219408984 + ], + [ + 6.82064735630014, + 51.03842582595461 + ], + [ + 6.820618578350739, + 51.03845517545637 + ], + [ + 6.8205740981787715, + 51.038500371370155 + ], + [ + 6.820544938002514, + 51.03852558377105 + ], + [ + 6.820492954238351, + 51.038467720034674 + ], + [ + 6.820465614902381, + 51.038433138745475 + ], + [ + 6.820397520405275, + 51.038356157550346 + ], + [ + 6.8203551128722, + 51.03837157041815 + ], + [ + 6.820114135716972, + 51.03845719082929 + ], + [ + 6.820044414500682, + 51.038481325125126 + ], + [ + 6.8198677617435735, + 51.03828727535344 + ], + [ + 6.819660244360369, + 51.0381042413353 + ], + [ + 6.819576022562872, + 51.03803739953637 + ], + [ + 6.81943967029495, + 51.037929169153585 + ], + [ + 6.819166640189409, + 51.03775357773836 + ], + [ + 6.81906233852696, + 51.03768686793642 + ], + [ + 6.8189567443852015, + 51.03762973299086 + ], + [ + 6.818234052716628, + 51.037239320838985 + ], + [ + 6.818142536194429, + 51.03718885255307 + ], + [ + 6.818079210645202, + 51.037153424954994 + ], + [ + 6.818031152320617, + 51.03712735634228 + ], + [ + 6.817798372673527, + 51.03699893857452 + ], + [ + 6.81763777199573, + 51.036910404559585 + ], + [ + 6.817366962808832, + 51.03676112301802 + ], + [ + 6.81728510776249, + 51.036718917295005 + ], + [ + 6.816673033255688, + 51.0364032095606 + ], + [ + 6.816629508677899, + 51.03638062205587 + ], + [ + 6.816487115166496, + 51.03630701468021 + ], + [ + 6.816432079725954, + 51.036278472990645 + ], + [ + 6.816051857061931, + 51.03609467362727 + ], + [ + 6.815575664178784, + 51.035909291558454 + ], + [ + 6.814680303251178, + 51.03559576994504 + ], + [ + 6.8141723112668755, + 51.0354179112868 + ], + [ + 6.814093242124153, + 51.03539039014062 + ], + [ + 6.814056309883135, + 51.03537725519755 + ], + [ + 6.8139878568623065, + 51.035354024821714 + ], + [ + 6.813714993792081, + 51.03569111114396 + ], + [ + 6.813531367830696, + 51.03592442823037 + ], + [ + 6.8135129390878015, + 51.03594792048387 + ], + [ + 6.813087817587046, + 51.036488148673584 + ], + [ + 6.812992731113746, + 51.03660897931558 + ], + [ + 6.812934049223509, + 51.03668349251862 + ], + [ + 6.812891798209132, + 51.03673723633285 + ], + [ + 6.812870646105679, + 51.03676211290937 + ], + [ + 6.8128078401154, + 51.03677389975525 + ], + [ + 6.812751406624392, + 51.036760569256195 + ], + [ + 6.812655740886536, + 51.036727651295145 + ], + [ + 6.8125373920090855, + 51.03668676268925 + ], + [ + 6.812462088208567, + 51.036661134905 + ], + [ + 6.812391589610565, + 51.0366369434325 + ], + [ + 6.8087532778384245, + 51.03537805230404 + ], + [ + 6.80849102612798, + 51.035287340552124 + ], + [ + 6.80844224321107, + 51.035241475140865 + ], + [ + 6.808425618005781, + 51.03526968262611 + ], + [ + 6.808387248997613, + 51.03533161010095 + ], + [ + 6.8083192585441, + 51.03533255054812 + ], + [ + 6.808279809578857, + 51.03539329842295 + ], + [ + 6.807648907649323, + 51.036412899160496 + ], + [ + 6.80760744561952, + 51.036479778787495 + ], + [ + 6.807507697799446, + 51.03664096546033 + ], + [ + 6.806350172783492, + 51.03851125621783 + ], + [ + 6.806251668181444, + 51.03867048653234 + ], + [ + 6.806203255900049, + 51.03874824357267 + ], + [ + 6.806151795175408, + 51.038831461048254 + ], + [ + 6.806107354631316, + 51.03886660349507 + ], + [ + 6.805448118830175, + 51.03943564217679 + ], + [ + 6.805423712462033, + 51.0394566707957 + ], + [ + 6.805378612832762, + 51.039491517282336 + ], + [ + 6.80532654903557, + 51.0394746866601 + ], + [ + 6.80516049595487, + 51.03942100003412 + ], + [ + 6.805111101855893, + 51.039405185410466 + ], + [ + 6.804702867527242, + 51.03927260192568 + ], + [ + 6.803330117993583, + 51.038827285933884 + ], + [ + 6.802965866898851, + 51.0387091310188 + ], + [ + 6.80287264370202, + 51.03867888885656 + ], + [ + 6.798687617529578, + 51.036928074228406 + ], + [ + 6.7984435397337775, + 51.036831463998645 + ], + [ + 6.798196147844141, + 51.03674354807456 + ], + [ + 6.7980764147626465, + 51.03698481168315 + ], + [ + 6.7979435407484905, + 51.037134124584774 + ], + [ + 6.797915442693687, + 51.037165694780725 + ], + [ + 6.797821759362195, + 51.03727095976111 + ], + [ + 6.79756015938216, + 51.037487454069485 + ], + [ + 6.79746232538084, + 51.03756843901743 + ], + [ + 6.797398856918563, + 51.0376113759221 + ], + [ + 6.797184910803855, + 51.03775594310346 + ], + [ + 6.797124594429536, + 51.037796804166035 + ], + [ + 6.79675965451258, + 51.03810699006941 + ], + [ + 6.796160830942849, + 51.03879332479928 + ], + [ + 6.7959998400360915, + 51.0391221740943 + ], + [ + 6.795982435904095, + 51.039161401479234 + ], + [ + 6.795855009449836, + 51.03949586282195 + ], + [ + 6.7955832141227495, + 51.039751909520476 + ], + [ + 6.795393415793382, + 51.04014950640509 + ], + [ + 6.795252553841239, + 51.040388969858064 + ], + [ + 6.794974586430748, + 51.04075584112578 + ], + [ + 6.794941971475922, + 51.040854373435984 + ], + [ + 6.794966011962332, + 51.0410483734709 + ], + [ + 6.79492868628618, + 51.041206408150515 + ], + [ + 6.79444175331113, + 51.04151256179522 + ], + [ + 6.794053281194501, + 51.041757361452284 + ], + [ + 6.793931236511392, + 51.04191136047145 + ], + [ + 6.793764339227337, + 51.042263173326035 + ], + [ + 6.7935914417854715, + 51.0424509583316 + ], + [ + 6.793225039980058, + 51.04271260114932 + ], + [ + 6.792936440328972, + 51.042917839293565 + ], + [ + 6.792906326774324, + 51.04294058055669 + ], + [ + 6.7927130000227995, + 51.0430852864101 + ], + [ + 6.7926405020348914, + 51.04318501345961 + ], + [ + 6.792081309950907, + 51.043705629470594 + ], + [ + 6.791826191913231, + 51.04399482012155 + ], + [ + 6.791452481988076, + 51.04442736211572 + ], + [ + 6.791190950519625, + 51.04473342308648 + ], + [ + 6.790965141822004, + 51.04504668490554 + ], + [ + 6.790935788741201, + 51.0451174967604 + ], + [ + 6.790837685880957, + 51.04535023568178 + ], + [ + 6.790794270403118, + 51.04548355847704 + ], + [ + 6.790735880689945, + 51.04566215719638 + ], + [ + 6.790699055205478, + 51.04577433508129 + ], + [ + 6.790538282515977, + 51.04600245649566 + ], + [ + 6.790425095577209, + 51.046192195404615 + ], + [ + 6.79026062941954, + 51.046472879347796 + ], + [ + 6.790107247189006, + 51.04685507378012 + ], + [ + 6.79008773105442, + 51.04690483797875 + ], + [ + 6.789897776888878, + 51.047435616206634 + ], + [ + 6.789829918100325, + 51.04779527796674 + ], + [ + 6.789757703242235, + 51.048018245575214 + ], + [ + 6.789471557811343, + 51.048600704720286 + ], + [ + 6.78917752863988, + 51.048904539118475 + ], + [ + 6.789034338828859, + 51.04904851493329 + ], + [ + 6.788811085444984, + 51.04933606357006 + ], + [ + 6.788238092296707, + 51.0499166696596 + ], + [ + 6.787785405415464, + 51.05020000287972 + ], + [ + 6.787672058359682, + 51.050270889030216 + ], + [ + 6.787418385980504, + 51.050362205562514 + ], + [ + 6.787227461314134, + 51.05047351793866 + ], + [ + 6.787044174197665, + 51.05064105656789 + ], + [ + 6.786730569076704, + 51.050927404236575 + ], + [ + 6.786332723452142, + 51.051258632276095 + ], + [ + 6.785781060535507, + 51.0516866286355 + ], + [ + 6.785399472447935, + 51.05200192422146 + ], + [ + 6.785145869063318, + 51.0521571311185 + ], + [ + 6.7851065103432875, + 51.052180470397445 + ], + [ + 6.784477970819412, + 51.05253082909225 + ], + [ + 6.783972303005107, + 51.05278864021899 + ], + [ + 6.783920691165615, + 51.05281490981018 + ], + [ + 6.78371767482282, + 51.05291831992757 + ], + [ + 6.782943289989527, + 51.05337063491887 + ], + [ + 6.78234537443309, + 51.053672628024685 + ], + [ + 6.782241847419599, + 51.05372546039988 + ], + [ + 6.781714816012367, + 51.05399416516171 + ], + [ + 6.781389759299125, + 51.05416002122182 + ], + [ + 6.78081536131968, + 51.054539700268904 + ], + [ + 6.78070489183154, + 51.054628442185916 + ], + [ + 6.780621301351914, + 51.054695609375734 + ], + [ + 6.780395719019479, + 51.05487680801722 + ], + [ + 6.780226250526182, + 51.05501285943009 + ], + [ + 6.78002196846175, + 51.055161380971796 + ], + [ + 6.779212750648008, + 51.05568257331632 + ], + [ + 6.779063053219555, + 51.0557715726367 + ], + [ + 6.777985090839616, + 51.05626668284761 + ], + [ + 6.777630813787702, + 51.05642949593146 + ], + [ + 6.777590623263504, + 51.056446148863785 + ], + [ + 6.777497661151683, + 51.05637346772025 + ], + [ + 6.777412254484044, + 51.05630715756195 + ], + [ + 6.777192601091217, + 51.05613975776068 + ], + [ + 6.776903293197725, + 51.05624601757714 + ], + [ + 6.776780291298193, + 51.05629105378246 + ], + [ + 6.776679987132645, + 51.0563486212045 + ], + [ + 6.776220450323663, + 51.05672436051853 + ], + [ + 6.775878702349099, + 51.05697365674605 + ], + [ + 6.775685753243859, + 51.0571206507424 + ], + [ + 6.775474175911459, + 51.05728197306276 + ], + [ + 6.775395749043929, + 51.05735140149741 + ], + [ + 6.775270218995539, + 51.05746160675214 + ], + [ + 6.775122894092009, + 51.05760296247197 + ], + [ + 6.775027210899452, + 51.05769411761119 + ], + [ + 6.774865590499717, + 51.057881243776464 + ], + [ + 6.774835349589554, + 51.05791636522653 + ], + [ + 6.774802627708229, + 51.057955486639464 + ], + [ + 6.774770231702418, + 51.057994120488864 + ], + [ + 6.774636804381171, + 51.05815325758538 + ], + [ + 6.77450110718542, + 51.05832000774102 + ], + [ + 6.77447343210607, + 51.05835401956909 + ], + [ + 6.774322003470089, + 51.05857453895734 + ], + [ + 6.774198382998506, + 51.058754532900174 + ], + [ + 6.774065761869884, + 51.058912156661066 + ], + [ + 6.773838394358934, + 51.05917152814781 + ], + [ + 6.773617629339642, + 51.059378787056396 + ], + [ + 6.7729238083710035, + 51.05993681919739 + ], + [ + 6.772882038560044, + 51.0600248964032 + ], + [ + 6.772882210604283, + 51.06006157022382 + ], + [ + 6.772882415349573, + 51.0600996737871 + ], + [ + 6.772882750656064, + 51.060171420358294 + ], + [ + 6.77288386771681, + 51.06041877465248 + ], + [ + 6.77288483201402, + 51.06061662489175 + ], + [ + 6.772885187001754, + 51.0606878124165 + ], + [ + 6.772545493911741, + 51.061575914089694 + ], + [ + 6.772530403732683, + 51.06161536292597 + ], + [ + 6.772564351927188, + 51.061693220358194 + ], + [ + 6.772804655251421, + 51.062243819374494 + ], + [ + 6.7734016927529535, + 51.063310689990686 + ], + [ + 6.773699034278667, + 51.063846067191946 + ], + [ + 6.773818218678433, + 51.06406167254145 + ], + [ + 6.773834959238042, + 51.06409184020904 + ], + [ + 6.774032941786873, + 51.06416281055102 + ], + [ + 6.774074706184052, + 51.06417777779727 + ], + [ + 6.774182977463661, + 51.06421660901699 + ], + [ + 6.775858614790293, + 51.064817028890666 + ], + [ + 6.778190365789461, + 51.065652455751156 + ], + [ + 6.779501632115686, + 51.06612226507173 + ], + [ + 6.779675334797749, + 51.06618450166161 + ], + [ + 6.77977430646289, + 51.066219952700905 + ], + [ + 6.781041227902954, + 51.066673865967225 + ], + [ + 6.78405382964919, + 51.067753201938366 + ], + [ + 6.784222944260166, + 51.067813785126994 + ], + [ + 6.784278876339493, + 51.06783368872888 + ], + [ + 6.784378568025964, + 51.067868644912195 + ], + [ + 6.784527607582271, + 51.06792146935771 + ], + [ + 6.784567003641016, + 51.06793553527845 + ], + [ + 6.784753022148656, + 51.068002357025016 + ], + [ + 6.786123544481494, + 51.068493992762164 + ], + [ + 6.786817441449073, + 51.068741657125415 + ], + [ + 6.786918541543088, + 51.06870235799216 + ], + [ + 6.786978258417768, + 51.06867855374909 + ], + [ + 6.78768175489793, + 51.068426783792574 + ], + [ + 6.787791475612567, + 51.06838598148414 + ], + [ + 6.78842950946297, + 51.068185049814126 + ], + [ + 6.788531628304929, + 51.068152920449485 + ], + [ + 6.788638487374878, + 51.06812013512456 + ], + [ + 6.788693640702093, + 51.06810938178374 + ], + [ + 6.788749848641316, + 51.068097375753226 + ], + [ + 6.788857044566261, + 51.068077520693436 + ], + [ + 6.790148172795102, + 51.06782536363403 + ], + [ + 6.791171094165264, + 51.06744991241141 + ], + [ + 6.791230977146424, + 51.06742895389182 + ], + [ + 6.791279511003899, + 51.06740361307798 + ], + [ + 6.791307579464893, + 51.067281666149846 + ], + [ + 6.7913256448681825, + 51.06720509899324 + ], + [ + 6.791291898966687, + 51.06696088478244 + ], + [ + 6.791388502235081, + 51.066644816137625 + ], + [ + 6.791398802534744, + 51.066612522547565 + ], + [ + 6.791450455404162, + 51.06645293714772 + ], + [ + 6.791486465479016, + 51.06640310684914 + ], + [ + 6.7915243303741, + 51.066355779496746 + ], + [ + 6.79154547230158, + 51.06632964381206 + ], + [ + 6.7916504987101245, + 51.06619933735319 + ], + [ + 6.791693953421434, + 51.066133438178014 + ], + [ + 6.791738215749322, + 51.06606856155598 + ], + [ + 6.792002173872828, + 51.06575544660741 + ], + [ + 6.792046696193811, + 51.06560825994926 + ], + [ + 6.792074547508668, + 51.065490596964295 + ], + [ + 6.792088456151656, + 51.06542706858612 + ], + [ + 6.792027808097917, + 51.06516341062665 + ], + [ + 6.792010981523608, + 51.065092331237985 + ], + [ + 6.791990048245848, + 51.065003385403756 + ], + [ + 6.791909527598602, + 51.06487360943996 + ], + [ + 6.791960837228587, + 51.0647698238339 + ], + [ + 6.792098598870489, + 51.06449802368536 + ], + [ + 6.7923601191846945, + 51.06430943407518 + ], + [ + 6.792601995920237, + 51.064120969226444 + ], + [ + 6.792779371085281, + 51.06400305770222 + ], + [ + 6.792920619170514, + 51.0639496433354 + ], + [ + 6.792991606050486, + 51.06392255216178 + ], + [ + 6.793031091977563, + 51.063907048925245 + ], + [ + 6.793372990487121, + 51.06375218481237 + ], + [ + 6.793419205534313, + 51.06373356716819 + ], + [ + 6.793490783099176, + 51.06371021837682 + ], + [ + 6.793658505905802, + 51.06365872142517 + ], + [ + 6.7939688446548185, + 51.06353197861211 + ], + [ + 6.79407999893628, + 51.063461262587225 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Roggendorf/Thenhoven", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "611", + "Population_rel": 0.004171721627881328, + "Population_abs": 4539 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.992521756783115, + 50.993364322229894 + ], + [ + 6.992440535054528, + 50.99389980035025 + ], + [ + 6.992360494046557, + 50.99389364878763 + ], + [ + 6.992108748295257, + 50.99387115814944 + ], + [ + 6.991985578850686, + 50.993859799471416 + ], + [ + 6.988553760522125, + 50.99353913510765 + ], + [ + 6.98811739489083, + 50.993498230551694 + ], + [ + 6.988445987740596, + 50.99321328862764 + ], + [ + 6.988848672426763, + 50.9928586680783 + ], + [ + 6.9890055905806845, + 50.992719315424104 + ], + [ + 6.988935557159835, + 50.992715182019964 + ], + [ + 6.98746587342964, + 50.9926739151585 + ], + [ + 6.9874377576051305, + 50.99265386853142 + ], + [ + 6.9874327751951535, + 50.99265025355714 + ], + [ + 6.987427828993721, + 50.99264665809332 + ], + [ + 6.987408091173309, + 50.992632310322065 + ], + [ + 6.9873650943354715, + 50.99260120764029 + ], + [ + 6.9872014073914706, + 50.99273063387175 + ], + [ + 6.986046315325962, + 50.99290756073671 + ], + [ + 6.985355920466986, + 50.9929732394004 + ], + [ + 6.984917056508226, + 50.99280331061181 + ], + [ + 6.984364195315566, + 50.99288775546573 + ], + [ + 6.983802977032123, + 50.99300628781387 + ], + [ + 6.983775541927796, + 50.99301110513915 + ], + [ + 6.983652693028556, + 50.99303308088702 + ], + [ + 6.983876688759486, + 50.99252708017455 + ], + [ + 6.983912570174011, + 50.99244561803661 + ], + [ + 6.983961088188763, + 50.9923354369178 + ], + [ + 6.98401559046272, + 50.99221182541535 + ], + [ + 6.983925515258032, + 50.992216063283 + ], + [ + 6.983784076183638, + 50.992222675428316 + ], + [ + 6.983728392870653, + 50.992223144967454 + ], + [ + 6.983645988450682, + 50.99223975003607 + ], + [ + 6.983522238727437, + 50.99226529316026 + ], + [ + 6.98343921231015, + 50.99228332363211 + ], + [ + 6.983410787876141, + 50.99228973545152 + ], + [ + 6.983227448198064, + 50.99233110070401 + ], + [ + 6.9829801240154765, + 50.99235547688116 + ], + [ + 6.982775190653946, + 50.99235728757052 + ], + [ + 6.9825757968916875, + 50.99233283675869 + ], + [ + 6.982519007081782, + 50.9923261879068 + ], + [ + 6.982388639869733, + 50.99231086161692 + ], + [ + 6.982351945753367, + 50.99230606720054 + ], + [ + 6.982218196708114, + 50.992288447366654 + ], + [ + 6.982051779752447, + 50.99227726177764 + ], + [ + 6.981893984878337, + 50.99228515121796 + ], + [ + 6.981663973087212, + 50.99231324406774 + ], + [ + 6.981453279503437, + 50.992359063223034 + ], + [ + 6.980898044889768, + 50.99247987050386 + ], + [ + 6.9805063156661475, + 50.992573315436005 + ], + [ + 6.980235203437471, + 50.99263797709928 + ], + [ + 6.979450608025997, + 50.99282509338632 + ], + [ + 6.9792895544355575, + 50.992873167807176 + ], + [ + 6.978849193148089, + 50.99306680510386 + ], + [ + 6.978169373904869, + 50.99340399934331 + ], + [ + 6.978056248257537, + 50.99345975768853 + ], + [ + 6.977836694871651, + 50.99356601271433 + ], + [ + 6.97774116464677, + 50.993642771656724 + ], + [ + 6.977691967849078, + 50.99372207403484 + ], + [ + 6.977613873971691, + 50.99373959221943 + ], + [ + 6.977493502585445, + 50.993766649862806 + ], + [ + 6.977489794370273, + 50.993753017793395 + ], + [ + 6.977466637890854, + 50.99367455530778 + ], + [ + 6.977458170906065, + 50.993644511915925 + ], + [ + 6.9774394456921005, + 50.99360071132331 + ], + [ + 6.977403208585076, + 50.993516606295124 + ], + [ + 6.977344263546757, + 50.993409408842936 + ], + [ + 6.977304708484279, + 50.993323352247614 + ], + [ + 6.977274280685517, + 50.993231017851386 + ], + [ + 6.977274645285145, + 50.993139954256996 + ], + [ + 6.977274867808665, + 50.993098691552156 + ], + [ + 6.976370408357144, + 50.99295514980855 + ], + [ + 6.97505460221312, + 50.992746448457 + ], + [ + 6.97469841519304, + 50.992689914550695 + ], + [ + 6.9746362517459835, + 50.99267793794774 + ], + [ + 6.97451354941692, + 50.99265451106756 + ], + [ + 6.9745022831701045, + 50.99266746082222 + ], + [ + 6.974394976566299, + 50.99282135301402 + ], + [ + 6.974296798603561, + 50.99296231405637 + ], + [ + 6.974284492048957, + 50.9929800051979 + ], + [ + 6.974226747021295, + 50.99305887367868 + ], + [ + 6.974003785060518, + 50.993369545293454 + ], + [ + 6.973986613982323, + 50.993392971820136 + ], + [ + 6.973976102795969, + 50.993407980684346 + ], + [ + 6.973503637830791, + 50.99407520729685 + ], + [ + 6.97324077877579, + 50.99446977964799 + ], + [ + 6.972937236518077, + 50.994937352927934 + ], + [ + 6.972680550893755, + 50.99534589582198 + ], + [ + 6.972369115813205, + 50.99586132625164 + ], + [ + 6.972346270538171, + 50.99589963118752 + ], + [ + 6.972155297042753, + 50.996235801319294 + ], + [ + 6.972138387993034, + 50.99626503664172 + ], + [ + 6.971943205645226, + 50.996604507770584 + ], + [ + 6.9718581145084855, + 50.9965749221812 + ], + [ + 6.971636016659326, + 50.996587647541574 + ], + [ + 6.971553644279586, + 50.99659947984229 + ], + [ + 6.9714830558113015, + 50.996609505778245 + ], + [ + 6.9711154392564, + 50.99663437928238 + ], + [ + 6.970923247798976, + 50.99663768572167 + ], + [ + 6.970854897250377, + 50.99663891207771 + ], + [ + 6.969373425396541, + 50.99667324578268 + ], + [ + 6.968855397239719, + 50.99668626571719 + ], + [ + 6.968360719680105, + 50.996699178722835 + ], + [ + 6.968110783924921, + 50.99669537918635 + ], + [ + 6.965845446574055, + 50.996430265230146 + ], + [ + 6.9653391799109645, + 50.996371014123824 + ], + [ + 6.965282394519745, + 50.99637049246975 + ], + [ + 6.965269809388854, + 50.99637037753224 + ], + [ + 6.962791204629047, + 50.99634764534236 + ], + [ + 6.962576711274551, + 50.99718190705196 + ], + [ + 6.962465030882245, + 50.997957882475845 + ], + [ + 6.962464355945364, + 50.997963593380064 + ], + [ + 6.962463710876168, + 50.997969305704714 + ], + [ + 6.96246241788891, + 50.99798073030432 + ], + [ + 6.962459841448241, + 50.99800358956276 + ], + [ + 6.962454779284578, + 50.99804938430956 + ], + [ + 6.962448374021881, + 50.99811155290296 + ], + [ + 6.962384113032821, + 50.99913640564467 + ], + [ + 6.9624699763520255, + 51.00016158668978 + ], + [ + 6.962471221040428, + 51.00017182432382 + ], + [ + 6.962472068127303, + 51.00017874264957 + ], + [ + 6.962472591450285, + 51.00018299859435 + ], + [ + 6.962475366932258, + 51.0002053693248 + ], + [ + 6.96248114013496, + 51.000250178517554 + ], + [ + 6.962484075235538, + 51.0002724522024 + ], + [ + 6.962485546396419, + 51.00028353919285 + ], + [ + 6.962486282669529, + 51.000289083149845 + ], + [ + 6.9624870590179855, + 51.00029462330911 + ], + [ + 6.96255710356543, + 51.00069389016403 + ], + [ + 6.962572362247546, + 51.0007813185786 + ], + [ + 6.96267550667544, + 51.00136899298467 + ], + [ + 6.963009233928871, + 51.00238372997999 + ], + [ + 6.963025862933357, + 51.00242871587199 + ], + [ + 6.963034293507351, + 51.002451211290996 + ], + [ + 6.963038526570792, + 51.00246241119414 + ], + [ + 6.9630406445472195, + 51.00246801072112 + ], + [ + 6.9630427682606815, + 51.002473609448764 + ], + [ + 6.963083528235937, + 51.0025796218662 + ], + [ + 6.963275236246727, + 51.003051502310775 + ], + [ + 6.963499742579402, + 51.003517718072324 + ], + [ + 6.963823018016326, + 51.00412982297229 + ], + [ + 6.964200330262907, + 51.00472943403167 + ], + [ + 6.9642141279658745, + 51.004750544344546 + ], + [ + 6.964216839869909, + 51.004754695425945 + ], + [ + 6.964220989320462, + 51.00476104443504 + ], + [ + 6.964227276567557, + 51.00477065763537 + ], + [ + 6.964649607624169, + 51.005384543206716 + ], + [ + 6.965038736696402, + 51.0058799587517 + ], + [ + 6.965933200845961, + 51.006963499850926 + ], + [ + 6.965987459213437, + 51.007029471668574 + ], + [ + 6.966055265090161, + 51.00711152531982 + ], + [ + 6.966726304691651, + 51.00792452925804 + ], + [ + 6.966803185919185, + 51.00801765154781 + ], + [ + 6.967135433466356, + 51.00842022167178 + ], + [ + 6.96721918660515, + 51.00852164570912 + ], + [ + 6.96871617936646, + 51.010334943213515 + ], + [ + 6.96875639635975, + 51.0103837775799 + ], + [ + 6.969813467928613, + 51.011664054975654 + ], + [ + 6.9698793840783235, + 51.01174378453605 + ], + [ + 6.970625560788182, + 51.012647425249995 + ], + [ + 6.97062876833645, + 51.01265033736338 + ], + [ + 6.970631921520474, + 51.01265305786669 + ], + [ + 6.970641753894518, + 51.01266156221622 + ], + [ + 6.970661426162224, + 51.01268225214509 + ], + [ + 6.970671415093845, + 51.01269265687261 + ], + [ + 6.970676240017168, + 51.012697709693896 + ], + [ + 6.970681044200114, + 51.012702747764756 + ], + [ + 6.9707165556733175, + 51.012740294469275 + ], + [ + 6.970732003402343, + 51.0127566147222 + ], + [ + 6.970747413474369, + 51.01277294870859 + ], + [ + 6.971305966460084, + 51.01339645811893 + ], + [ + 6.9716519277121245, + 51.01386124870663 + ], + [ + 6.971788615759467, + 51.01404488478535 + ], + [ + 6.97179707719177, + 51.0140569150204 + ], + [ + 6.97180609648675, + 51.0140698183319 + ], + [ + 6.971866309146467, + 51.01415618300735 + ], + [ + 6.97186761516813, + 51.01416098490949 + ], + [ + 6.9718683345577785, + 51.01416570377697 + ], + [ + 6.971875216037536, + 51.014163396778045 + ], + [ + 6.97236127538552, + 51.014013433080265 + ], + [ + 6.973677471989985, + 51.013607868036296 + ], + [ + 6.97375582351602, + 51.01358370869592 + ], + [ + 6.973765255388014, + 51.013580781199 + ], + [ + 6.973772007851816, + 51.01357868230238 + ], + [ + 6.973825219423345, + 51.01356208125257 + ], + [ + 6.975319626143229, + 51.013088604947086 + ], + [ + 6.975327912531676, + 51.01308598213945 + ], + [ + 6.975336250988777, + 51.01308334224648 + ], + [ + 6.975440046508441, + 51.01305048078873 + ], + [ + 6.975445248337997, + 51.01304882438695 + ], + [ + 6.975450430324407, + 51.01304713256573 + ], + [ + 6.9755444846071955, + 51.0130149412767 + ], + [ + 6.975549062293422, + 51.01301337568067 + ], + [ + 6.975553650069158, + 51.01301180756122 + ], + [ + 6.975551641026443, + 51.01292048723475 + ], + [ + 6.975549670908661, + 51.01282846967466 + ], + [ + 6.975548868810244, + 51.01279100982776 + ], + [ + 6.975548724923673, + 51.012784558889614 + ], + [ + 6.975528449865199, + 51.01186518988401 + ], + [ + 6.975527951389092, + 51.01184082464831 + ], + [ + 6.975527888767903, + 51.01183623950083 + ], + [ + 6.975527444060667, + 51.011819706865175 + ], + [ + 6.975523858188332, + 51.01164462383454 + ], + [ + 6.975515065069621, + 51.01121486015198 + ], + [ + 6.9755150133599795, + 51.011211988483176 + ], + [ + 6.9755149105794105, + 51.011206917881566 + ], + [ + 6.97551520488128, + 51.011131256721235 + ], + [ + 6.975515216972913, + 51.011128164015126 + ], + [ + 6.975515216778128, + 51.01112453507463 + ], + [ + 6.975941093346271, + 51.01116160666268 + ], + [ + 6.976994765694233, + 51.0112533743198 + ], + [ + 6.9771036361010506, + 51.01126285595021 + ], + [ + 6.977375243503007, + 51.011286510162115 + ], + [ + 6.977846864241785, + 51.01132762801016 + ], + [ + 6.977896042853729, + 51.011349894188186 + ], + [ + 6.977938289970053, + 51.01136894923133 + ], + [ + 6.978598609990848, + 51.011472649124904 + ], + [ + 6.978593605199013, + 51.01148135379752 + ], + [ + 6.978591236660866, + 51.01148543099643 + ], + [ + 6.978588871362286, + 51.0114894992577 + ], + [ + 6.979051539477554, + 51.0116483612511 + ], + [ + 6.979318252775875, + 51.011739903794336 + ], + [ + 6.979344442463341, + 51.01174862113527 + ], + [ + 6.979368944771546, + 51.01169980122691 + ], + [ + 6.9794018175155035, + 51.01163431070275 + ], + [ + 6.979403193388223, + 51.01163158604722 + ], + [ + 6.97948086087376, + 51.01148297051642 + ], + [ + 6.979485118077103, + 51.011484507426545 + ], + [ + 6.979601159206215, + 51.01152734407548 + ], + [ + 6.979825791542305, + 51.01161029620268 + ], + [ + 6.979925262933916, + 51.01164693081813 + ], + [ + 6.979958074317551, + 51.01165903982617 + ], + [ + 6.980076243688905, + 51.01170268985446 + ], + [ + 6.9801013677170545, + 51.01171201635199 + ], + [ + 6.980105837438661, + 51.01171365044822 + ], + [ + 6.980110308780437, + 51.01171528007546 + ], + [ + 6.980121855828707, + 51.01171949812145 + ], + [ + 6.980126519703753, + 51.01172122461147 + ], + [ + 6.980201554216925, + 51.01174900215585 + ], + [ + 6.980219877738055, + 51.01175577285273 + ], + [ + 6.980223712416838, + 51.01175719180727 + ], + [ + 6.980365696044666, + 51.01180968038387 + ], + [ + 6.980436833199985, + 51.01183597838334 + ], + [ + 6.980672709956391, + 51.01192319470209 + ], + [ + 6.981325662900802, + 51.01216381928821 + ], + [ + 6.981731389313463, + 51.012313591244194 + ], + [ + 6.9817991209103125, + 51.012338601924526 + ], + [ + 6.981821806630978, + 51.012347000941595 + ], + [ + 6.981824328817481, + 51.01234174367036 + ], + [ + 6.981826348441746, + 51.01233771793837 + ], + [ + 6.981828387502202, + 51.01233363858036 + ], + [ + 6.981834495236255, + 51.01232142102818 + ], + [ + 6.981864899712889, + 51.01226059895436 + ], + [ + 6.981896083622714, + 51.01219833966552 + ], + [ + 6.981897625788462, + 51.01219526260601 + ], + [ + 6.981946679276752, + 51.012097335695245 + ], + [ + 6.981993258787116, + 51.012003617313795 + ], + [ + 6.98199729203583, + 51.012004142075064 + ], + [ + 6.9820013417165745, + 51.0120046824093 + ], + [ + 6.982020328334975, + 51.01200738566194 + ], + [ + 6.982134533347271, + 51.012023700877286 + ], + [ + 6.982578420800133, + 51.01208698348351 + ], + [ + 6.982756939144879, + 51.01211264167641 + ], + [ + 6.982812950083021, + 51.01212071128326 + ], + [ + 6.982861801135469, + 51.01212773356741 + ], + [ + 6.982881595692078, + 51.012130580140585 + ], + [ + 6.982889263657883, + 51.012131681177564 + ], + [ + 6.982897664965886, + 51.01213283534977 + ], + [ + 6.983926275629527, + 51.011968916549314 + ], + [ + 6.984010945340132, + 51.01195545662666 + ], + [ + 6.984020712933056, + 51.01195390383171 + ], + [ + 6.984030034122192, + 51.011952420676444 + ], + [ + 6.984064334814375, + 51.01194698425713 + ], + [ + 6.984074797211759, + 51.01194532113614 + ], + [ + 6.984081841557336, + 51.011944200695474 + ], + [ + 6.98420086587751, + 51.011925274553384 + ], + [ + 6.9845025982491515, + 51.01187720773523 + ], + [ + 6.984680311790523, + 51.01184889537206 + ], + [ + 6.984756999038122, + 51.011836678602116 + ], + [ + 6.984831632061775, + 51.01182478608622 + ], + [ + 6.984943401953329, + 51.0118069787496 + ], + [ + 6.9849670831641175, + 51.011803207950834 + ], + [ + 6.985027632184223, + 51.01179354648537 + ], + [ + 6.9851464549076745, + 51.011774582629094 + ], + [ + 6.985152359386095, + 51.01177364301923 + ], + [ + 6.985158001098391, + 51.0117727465426 + ], + [ + 6.985166168899921, + 51.01177149252467 + ], + [ + 6.985105042017859, + 51.01165102415976 + ], + [ + 6.985051814543615, + 51.01154612241476 + ], + [ + 6.985021318726028, + 51.011485863288115 + ], + [ + 6.985018348000998, + 51.01147986994325 + ], + [ + 6.985030108651306, + 51.01147805105993 + ], + [ + 6.9850705279080865, + 51.01147188798857 + ], + [ + 6.985093783696375, + 51.01148341969414 + ], + [ + 6.985338984111357, + 51.01160507112861 + ], + [ + 6.985673589959893, + 51.01177107993237 + ], + [ + 6.986397811912279, + 51.01213052742085 + ], + [ + 6.986486571795887, + 51.01217448952333 + ], + [ + 6.986510698693749, + 51.01218643167793 + ], + [ + 6.987042795230079, + 51.01227105867098 + ], + [ + 6.987683161596292, + 51.012342372734466 + ], + [ + 6.987694105039459, + 51.012343592841454 + ], + [ + 6.987701892935597, + 51.0123444626925 + ], + [ + 6.987706851779032, + 51.01234501489398 + ], + [ + 6.9877116999304345, + 51.01234555529526 + ], + [ + 6.9877240267742025, + 51.01234692874114 + ], + [ + 6.987758873400801, + 51.01235081085134 + ], + [ + 6.987915707300579, + 51.01236828557926 + ], + [ + 6.987976117396632, + 51.012375010187036 + ], + [ + 6.988107371631188, + 51.012389592357565 + ], + [ + 6.9881581496460985, + 51.01239523540853 + ], + [ + 6.9882058239345985, + 51.012400549773915 + ], + [ + 6.988407950210185, + 51.01237491231934 + ], + [ + 6.9884162189036605, + 51.01237386396703 + ], + [ + 6.988500842534278, + 51.012363134961795 + ], + [ + 6.988513893501509, + 51.01236148094698 + ], + [ + 6.988690941059605, + 51.01233902205738 + ], + [ + 6.989270176004946, + 51.01220096333102 + ], + [ + 6.9894375631359935, + 51.012161080032406 + ], + [ + 6.990184196040932, + 51.01198403910617 + ], + [ + 6.990188871533655, + 51.01198293419679 + ], + [ + 6.990194426513287, + 51.01198203058865 + ], + [ + 6.990200791418682, + 51.01198158520184 + ], + [ + 6.9902072611358035, + 51.01198122166149 + ], + [ + 6.990477648759789, + 51.01196615711961 + ], + [ + 6.990481876658854, + 51.011966402536046 + ], + [ + 6.9904861445247795, + 51.01196684470112 + ], + [ + 6.990618971347738, + 51.011981085964855 + ], + [ + 6.990961901905023, + 51.01201785382392 + ], + [ + 6.990969471252483, + 51.012018667534804 + ], + [ + 6.99100507157602, + 51.01202249508694 + ], + [ + 6.991029131463572, + 51.01202506108911 + ], + [ + 6.991036434307431, + 51.01202583963348 + ], + [ + 6.991212591830778, + 51.01204473231871 + ], + [ + 6.991224526395593, + 51.012046012309575 + ], + [ + 6.9916661942612555, + 51.01209336904314 + ], + [ + 6.9917853531249525, + 51.01210614273584 + ], + [ + 6.992243941581848, + 51.012155192100494 + ], + [ + 6.992374117094614, + 51.01216617955789 + ], + [ + 6.992412336185489, + 51.012169257554014 + ], + [ + 6.992486936101731, + 51.01217278635301 + ], + [ + 6.992513336196837, + 51.012174019842426 + ], + [ + 6.992624946373312, + 51.012181812672516 + ], + [ + 6.992630597761973, + 51.01218220838592 + ], + [ + 6.992674949182863, + 51.01218534132168 + ], + [ + 6.992898268088243, + 51.01216464077261 + ], + [ + 6.9929802120401945, + 51.01215029830702 + ], + [ + 6.993102228861069, + 51.01212901862602 + ], + [ + 6.99322769814919, + 51.01210708763809 + ], + [ + 6.993622175401586, + 51.01203842680979 + ], + [ + 6.994043463835071, + 51.01196511133538 + ], + [ + 6.994070558118921, + 51.011960399017234 + ], + [ + 6.99408239324774, + 51.01195836825294 + ], + [ + 6.994092095454195, + 51.011956703772114 + ], + [ + 6.9941781354003005, + 51.011941714919494 + ], + [ + 6.994185605345245, + 51.011940406017594 + ], + [ + 6.994193076714373, + 51.011939097139674 + ], + [ + 6.994198780920928, + 51.01193810326973 + ], + [ + 6.994211473482956, + 51.01193589295446 + ], + [ + 6.994573743166843, + 51.011872492913795 + ], + [ + 6.99470536655487, + 51.01184981341141 + ], + [ + 6.99470939479829, + 51.01184913519904 + ], + [ + 6.994713420095018, + 51.01184852528755 + ], + [ + 6.994726541734348, + 51.01184823162969 + ], + [ + 6.994843177857607, + 51.01184589007063 + ], + [ + 6.994859424068062, + 51.01184557449116 + ], + [ + 6.994863951481997, + 51.011845486730294 + ], + [ + 6.994868479128535, + 51.011845393577076 + ], + [ + 6.994937840606341, + 51.0118440354833 + ], + [ + 6.995844600207229, + 51.01182638689943 + ], + [ + 6.995877865673709, + 51.011825614932775 + ], + [ + 6.996187892546412, + 51.011819540012745 + ], + [ + 6.996327821821041, + 51.011807686502536 + ], + [ + 6.99635598161299, + 51.011805566808306 + ], + [ + 6.996361551888984, + 51.01180602480448 + ], + [ + 6.996360397453054, + 51.011809687890015 + ], + [ + 6.996337922273505, + 51.011892065267254 + ], + [ + 6.9963317197699055, + 51.01191444292618 + ], + [ + 6.996247202366093, + 51.01222303023214 + ], + [ + 6.996122607891584, + 51.012670309479546 + ], + [ + 6.996119609888815, + 51.01268101891516 + ], + [ + 6.996118672616068, + 51.01268437274566 + ], + [ + 6.99611773680657, + 51.012687725701895 + ], + [ + 6.9961149059751335, + 51.012697897488664 + ], + [ + 6.996108801164023, + 51.01271969042611 + ], + [ + 6.99610157121954, + 51.01274552378141 + ], + [ + 6.996099878813105, + 51.01275157803243 + ], + [ + 6.996098207698273, + 51.01275763444744 + ], + [ + 6.996045531130687, + 51.012952707134275 + ], + [ + 6.996040143602255, + 51.01296685610316 + ], + [ + 6.996033774829008, + 51.01298729636353 + ], + [ + 6.995958152585745, + 51.013244398264604 + ], + [ + 6.995855908723655, + 51.01355056401565 + ], + [ + 6.995805702387571, + 51.01370351237213 + ], + [ + 6.995761562436035, + 51.013838931004926 + ], + [ + 6.9957565715564485, + 51.01385191129972 + ], + [ + 6.995750200076957, + 51.013873830048226 + ], + [ + 6.995713844726999, + 51.013980738453 + ], + [ + 6.995711949195435, + 51.01398647533495 + ], + [ + 6.995719855637039, + 51.01398688710845 + ], + [ + 6.995725960382657, + 51.013987487410034 + ], + [ + 6.995786016727478, + 51.01399266937234 + ], + [ + 6.995808274817786, + 51.01399452984235 + ], + [ + 6.995855710185194, + 51.0139984987171 + ], + [ + 6.995863934608613, + 51.01399917405374 + ], + [ + 6.995870138259991, + 51.013999696001534 + ], + [ + 6.995888588197105, + 51.01400122670333 + ], + [ + 6.995923760532455, + 51.01400407948465 + ], + [ + 6.995953310101373, + 51.01400656147858 + ], + [ + 6.996025761100938, + 51.01401265208167 + ], + [ + 6.99608883829294, + 51.01401787492311 + ], + [ + 6.996112135599565, + 51.01401980532694 + ], + [ + 6.996134739129966, + 51.01402172292453 + ], + [ + 6.996157334075557, + 51.01402364126983 + ], + [ + 6.9961618670034875, + 51.0140240257171 + ], + [ + 6.996166401356186, + 51.01402441018863 + ], + [ + 6.996189599398473, + 51.014026361358106 + ], + [ + 6.996194172256639, + 51.01402674558977 + ], + [ + 6.9961986500878, + 51.014027118298074 + ], + [ + 6.996287155604931, + 51.014034481548435 + ], + [ + 6.9962935659994105, + 51.014035003422826 + ], + [ + 6.996304150624817, + 51.014035863114074 + ], + [ + 6.99635625955812, + 51.0140400648481 + ], + [ + 6.996547844260406, + 51.01405618680063 + ], + [ + 6.996740792289098, + 51.014069922428895 + ], + [ + 6.9967698594725665, + 51.01407198763206 + ], + [ + 6.997023744945345, + 51.014090020863506 + ], + [ + 6.997051883002668, + 51.01409204308269 + ], + [ + 6.9970587368467205, + 51.014092531148506 + ], + [ + 6.996862318410926, + 51.01438267770656 + ], + [ + 6.996779917576005, + 51.01488572114546 + ], + [ + 6.996621146064317, + 51.015854946522936 + ], + [ + 6.996610855285544, + 51.0159185392681 + ], + [ + 6.996607481096254, + 51.015939395154405 + ], + [ + 6.9966070347864795, + 51.015942141345256 + ], + [ + 6.996606578370017, + 51.01594495661363 + ], + [ + 6.9965109365490665, + 51.01595414988978 + ], + [ + 6.99628186693949, + 51.015976032283554 + ], + [ + 6.9958853970271635, + 51.01600825198337 + ], + [ + 6.995855059951421, + 51.01601071105295 + ], + [ + 6.9957037684581715, + 51.01602421998521 + ], + [ + 6.99550074302608, + 51.01604243316352 + ], + [ + 6.995368082166291, + 51.01612125916192 + ], + [ + 6.995344072392968, + 51.01613585565372 + ], + [ + 6.995295053718749, + 51.01614841306608 + ], + [ + 6.995330283581437, + 51.016306483371615 + ], + [ + 6.995355194622674, + 51.016418188942446 + ], + [ + 6.995565558934372, + 51.01648840758439 + ], + [ + 6.995769655455028, + 51.01655665571855 + ], + [ + 6.995876225032701, + 51.016593378586094 + ], + [ + 6.995918552145062, + 51.0166080790943 + ], + [ + 6.9965424780475365, + 51.016823547153926 + ], + [ + 6.996615603120301, + 51.01684949513694 + ], + [ + 6.99661925915109, + 51.01685025035088 + ], + [ + 6.996622263315711, + 51.016851805608624 + ], + [ + 6.9966599283392545, + 51.01686482232235 + ], + [ + 6.996668194225801, + 51.01686709467698 + ], + [ + 6.9966753474163115, + 51.01687067000907 + ], + [ + 6.996690056065103, + 51.01687596409374 + ], + [ + 6.9968400729057665, + 51.01692804223888 + ], + [ + 6.997006839625956, + 51.016985701057415 + ], + [ + 6.997207121701095, + 51.01705524736841 + ], + [ + 6.997254080030932, + 51.0170715188347 + ], + [ + 6.997408474590862, + 51.01712523708803 + ], + [ + 6.997507275135509, + 51.01715953098108 + ], + [ + 6.999560985958645, + 51.017870990133176 + ], + [ + 6.999824563538682, + 51.017963025165166 + ], + [ + 7.000071369059841, + 51.01804934658768 + ], + [ + 7.000075551305218, + 51.01805010350706 + ], + [ + 7.00007926326689, + 51.01805138479613 + ], + [ + 7.000644021498557, + 51.01824749582955 + ], + [ + 7.000785016315561, + 51.01829644382668 + ], + [ + 7.001677658425808, + 51.01860621850004 + ], + [ + 7.001697821236702, + 51.01861332393216 + ], + [ + 7.001701770651259, + 51.0186151533445 + ], + [ + 7.001721006994623, + 51.0186219524295 + ], + [ + 7.001741441689566, + 51.01862906880069 + ], + [ + 7.001768515285433, + 51.018637875318866 + ], + [ + 7.001771878456082, + 51.01863964343643 + ], + [ + 7.001849710240305, + 51.01866648883365 + ], + [ + 7.002609355110254, + 51.018930603173224 + ], + [ + 7.002655665490777, + 51.01894667699122 + ], + [ + 7.002799514414785, + 51.018996596770315 + ], + [ + 7.002905635422015, + 51.019033396307464 + ], + [ + 7.0029000417751, + 51.019049320083695 + ], + [ + 7.002846023970786, + 51.01916520278104 + ], + [ + 7.002789668528598, + 51.019286467728996 + ], + [ + 7.002781177722411, + 51.019306199321164 + ], + [ + 7.002779559526595, + 51.01931004340044 + ], + [ + 7.002777851410835, + 51.019313889539674 + ], + [ + 7.002773673453733, + 51.019322550895716 + ], + [ + 7.002760263615113, + 51.01935020448779 + ], + [ + 7.002750976913783, + 51.01936931090405 + ], + [ + 7.0027484113705105, + 51.01937502564331 + ], + [ + 7.002746253950822, + 51.01937983720787 + ], + [ + 7.002743910905719, + 51.01938501973247 + ], + [ + 7.002742413498617, + 51.01938804386095 + ], + [ + 7.002737772452355, + 51.019397593060724 + ], + [ + 7.002735731172982, + 51.019401825623945 + ], + [ + 7.002733577132688, + 51.01940639261997 + ], + [ + 7.002730570028103, + 51.01941275993947 + ], + [ + 7.002729282724211, + 51.01941550705971 + ], + [ + 7.002723972529102, + 51.01942685702907 + ], + [ + 7.002709104751175, + 51.019458837692355 + ], + [ + 7.002701805734697, + 51.01947452634554 + ], + [ + 7.002776847301488, + 51.01949168945005 + ], + [ + 7.002874645268924, + 51.01951385170323 + ], + [ + 7.003467395087816, + 51.019649617178636 + ], + [ + 7.0037220374444935, + 51.019707188951514 + ], + [ + 7.003742659928063, + 51.01971184392835 + ], + [ + 7.0037493656121645, + 51.019711951332255 + ], + [ + 7.003755974163632, + 51.01971216230097 + ], + [ + 7.003821476283997, + 51.019714409493005 + ], + [ + 7.003828029996804, + 51.01971463570898 + ], + [ + 7.003832446775503, + 51.019714784035855 + ], + [ + 7.003944732861757, + 51.019718456598014 + ], + [ + 7.003954550572452, + 51.01971877995294 + ], + [ + 7.003964368244719, + 51.019719104205734 + ], + [ + 7.003995301032735, + 51.01972011753409 + ], + [ + 7.004212361064668, + 51.01972720977432 + ], + [ + 7.004354077536009, + 51.01973185244777 + ], + [ + 7.004370341332796, + 51.01973245137854 + ], + [ + 7.004377646289668, + 51.01973278213297 + ], + [ + 7.004382712611475, + 51.019732979309175 + ], + [ + 7.004420722734866, + 51.01973404598407 + ], + [ + 7.004498891993125, + 51.01975327597545 + ], + [ + 7.004521065603079, + 51.0197591345753 + ], + [ + 7.004525265016681, + 51.01976122357968 + ], + [ + 7.004530277084141, + 51.01976182093734 + ], + [ + 7.004550280613824, + 51.01976668014434 + ], + [ + 7.004554077887605, + 51.01976817229759 + ], + [ + 7.0046174266098005, + 51.019783611846535 + ], + [ + 7.004686156927066, + 51.019799910442224 + ], + [ + 7.004946717213212, + 51.019863670185536 + ], + [ + 7.004955855416155, + 51.019865905581995 + ], + [ + 7.0049596727830155, + 51.019866830568745 + ], + [ + 7.004964226211516, + 51.01986794799886 + ], + [ + 7.004969788423832, + 51.019869315592445 + ], + [ + 7.004984832418908, + 51.01987301978019 + ], + [ + 7.005046900443135, + 51.01989611056267 + ], + [ + 7.0054144222329855, + 51.02003271933591 + ], + [ + 7.005540954934193, + 51.02007972646731 + ], + [ + 7.005555379033716, + 51.020085085611484 + ], + [ + 7.005716118719865, + 51.020144841349726 + ], + [ + 7.005877299446149, + 51.020204762680265 + ], + [ + 7.005900576787764, + 51.020213386503535 + ], + [ + 7.006256566203117, + 51.020345745898524 + ], + [ + 7.0063508917802855, + 51.02038075626242 + ], + [ + 7.006718194696811, + 51.0205169596235 + ], + [ + 7.006722173577584, + 51.0205181436257 + ], + [ + 7.00714589589036, + 51.02063864682054 + ], + [ + 7.007152592255388, + 51.020638542519556 + ], + [ + 7.0071586916273665, + 51.02063852696282 + ], + [ + 7.007260353167609, + 51.020638664045904 + ], + [ + 7.007376047791574, + 51.02063865639905 + ], + [ + 7.007485746909063, + 51.020638669580826 + ], + [ + 7.0075329554444075, + 51.02063866361474 + ], + [ + 7.007608634070897, + 51.02063865848061 + ], + [ + 7.007732099818855, + 51.02063862204407 + ], + [ + 7.007847456759225, + 51.02063850834173 + ], + [ + 7.007885527022878, + 51.020638490281314 + ], + [ + 7.0079746804191885, + 51.02063785941948 + ], + [ + 7.008166250544575, + 51.020636280442844 + ], + [ + 7.008417020384609, + 51.02063421666527 + ], + [ + 7.008483920050551, + 51.02063363408928 + ], + [ + 7.008490920531188, + 51.0206335870593 + ], + [ + 7.008496084291208, + 51.02063354289037 + ], + [ + 7.008504459097247, + 51.02063340237368 + ], + [ + 7.008517497297885, + 51.020632915065185 + ], + [ + 7.008523305455068, + 51.02063274068178 + ], + [ + 7.008690558859739, + 51.02140503111666 + ], + [ + 7.008839036009219, + 51.021778235002486 + ], + [ + 7.008948902477072, + 51.02205747020656 + ], + [ + 7.00895832228353, + 51.02208562782794 + ], + [ + 7.009000803524222, + 51.02217128741799 + ], + [ + 7.009067916661234, + 51.02226784435406 + ], + [ + 7.00918033566517, + 51.022466727270874 + ], + [ + 7.009182214114147, + 51.02247004554443 + ], + [ + 7.009183162422129, + 51.02247360608188 + ], + [ + 7.009259810642573, + 51.02261239653718 + ], + [ + 7.009268526061907, + 51.022612501897356 + ], + [ + 7.009273482690327, + 51.02261220504027 + ], + [ + 7.0093440167493855, + 51.02260783823161 + ], + [ + 7.00938262947702, + 51.02260541413789 + ], + [ + 7.009545065298342, + 51.02259516568676 + ], + [ + 7.009942025008262, + 51.02257013495099 + ], + [ + 7.0101873427549855, + 51.022554705279425 + ], + [ + 7.0106662401509485, + 51.0225245852215 + ], + [ + 7.010888622995375, + 51.02251066024072 + ], + [ + 7.010946921208024, + 51.02250700595301 + ], + [ + 7.01095135382162, + 51.0225067243847 + ], + [ + 7.01095578782163, + 51.0225064437392 + ], + [ + 7.011118830354585, + 51.022496362619776 + ], + [ + 7.0112323003112715, + 51.0224893683947 + ], + [ + 7.011517970518148, + 51.022471654153094 + ], + [ + 7.011562084742033, + 51.02246962337684 + ], + [ + 7.011636110467608, + 51.02246489282318 + ], + [ + 7.011659898160908, + 51.022463374001866 + ], + [ + 7.011879218439003, + 51.02244985727818 + ], + [ + 7.011935691092002, + 51.02244640615971 + ], + [ + 7.012074358263031, + 51.022437837979915 + ], + [ + 7.012146868079759, + 51.022433373596776 + ], + [ + 7.012153239911147, + 51.02243302785272 + ], + [ + 7.012158584052609, + 51.022432738367165 + ], + [ + 7.0122191994266325, + 51.02242901405477 + ], + [ + 7.012329012767932, + 51.022422254229355 + ], + [ + 7.012433237594421, + 51.022415928934755 + ], + [ + 7.0125411675818965, + 51.02240939228278 + ], + [ + 7.012546046068597, + 51.02240908766197 + ], + [ + 7.012550928868529, + 51.02240878221496 + ], + [ + 7.013237641307221, + 51.022365761316884 + ], + [ + 7.013518309940485, + 51.02234822513069 + ], + [ + 7.013563776941637, + 51.02234539998627 + ], + [ + 7.0136621608883996, + 51.0223391010798 + ], + [ + 7.013711506023836, + 51.02233585437104 + ], + [ + 7.01377934730919, + 51.02233197961404 + ], + [ + 7.013728764761899, + 51.02227490689043 + ], + [ + 7.0137139358788, + 51.02225819737056 + ], + [ + 7.013710384815787, + 51.022254203191885 + ], + [ + 7.013706833791785, + 51.02225020811442 + ], + [ + 7.013682383143622, + 51.02222270725534 + ], + [ + 7.0136368087789, + 51.0221714404728 + ], + [ + 7.013486201713346, + 51.02200169389853 + ], + [ + 7.013432499528009, + 51.02201713906529 + ], + [ + 7.013391682731388, + 51.02202884077236 + ], + [ + 7.01323168370827, + 51.02207471285027 + ], + [ + 7.013128340507265, + 51.02200528284836 + ], + [ + 7.013037065470022, + 51.0219439589009 + ], + [ + 7.013054120871222, + 51.02180188136672 + ], + [ + 7.013048666836479, + 51.02180237497682 + ], + [ + 7.012517845417341, + 51.02185038554433 + ], + [ + 7.012511256174701, + 51.021850982127376 + ], + [ + 7.012504719672753, + 51.021851812541385 + ], + [ + 7.0124156440187795, + 51.0218594748917 + ], + [ + 7.012355193774579, + 51.021864790380036 + ], + [ + 7.012286774370299, + 51.021870825522036 + ], + [ + 7.012168816888505, + 51.021881192540256 + ], + [ + 7.012160755463312, + 51.021881902552195 + ], + [ + 7.012152686874786, + 51.021882613341056 + ], + [ + 7.012076641556297, + 51.02188931002209 + ], + [ + 7.01206984977078, + 51.021889907630175 + ], + [ + 7.012063060450456, + 51.02189051427339 + ], + [ + 7.012038848903751, + 51.02189271487098 + ], + [ + 7.012033046898925, + 51.02189324208359 + ], + [ + 7.012027243507509, + 51.021893768373005 + ], + [ + 7.011863325910008, + 51.02190839200863 + ], + [ + 7.011840225244869, + 51.02191049095816 + ], + [ + 7.011807324047137, + 51.0219134861367 + ], + [ + 7.011782288523631, + 51.02191571402729 + ], + [ + 7.011785412742832, + 51.02188792214256 + ], + [ + 7.011793475011786, + 51.02181767461455 + ], + [ + 7.011802544749401, + 51.02174137715552 + ], + [ + 7.011819095187752, + 51.02163358285022 + ], + [ + 7.011994838850407, + 51.020510676809934 + ], + [ + 7.011997922099629, + 51.02049096945862 + ], + [ + 7.012002541812622, + 51.02046147894325 + ], + [ + 7.012002995891296, + 51.020458731034005 + ], + [ + 7.01200351844367, + 51.02045601576771 + ], + [ + 7.012006761078938, + 51.02045298075502 + ], + [ + 7.012021278873447, + 51.02040247428244 + ], + [ + 7.012161259606564, + 51.01998486105343 + ], + [ + 7.012298071009273, + 51.01957704349895 + ], + [ + 7.012350030861717, + 51.0194221586012 + ], + [ + 7.01251084592585, + 51.018719363577475 + ], + [ + 7.012524515824235, + 51.01865961697805 + ], + [ + 7.012759639000188, + 51.017631817073145 + ], + [ + 7.012770585158878, + 51.01758390104443 + ], + [ + 7.012831911894289, + 51.01729175849421 + ], + [ + 7.012841749536784, + 51.01724618801563 + ], + [ + 7.012849572490588, + 51.01721028735355 + ], + [ + 7.012948759134991, + 51.016755077443285 + ], + [ + 7.013061826195781, + 51.01622557538939 + ], + [ + 7.013096391280415, + 51.01606370208674 + ], + [ + 7.013404211420199, + 51.01462236496077 + ], + [ + 7.013446329377847, + 51.01442515642047 + ], + [ + 7.013461085308202, + 51.014356050530104 + ], + [ + 7.013563343287383, + 51.01387714640149 + ], + [ + 7.0135845472699225, + 51.013772181141235 + ], + [ + 7.01359805113114, + 51.013701003394964 + ], + [ + 7.0135987264006685, + 51.013697879709284 + ], + [ + 7.013606912533778, + 51.01366009020852 + ], + [ + 7.013690833023213, + 51.013279964690305 + ], + [ + 7.013710761447271, + 51.01318648502312 + ], + [ + 7.013729114834369, + 51.0131005682688 + ], + [ + 7.013742025487308, + 51.01304022579831 + ], + [ + 7.013754531831216, + 51.012979034649604 + ], + [ + 7.013830670911356, + 51.01259457846937 + ], + [ + 7.013836376095799, + 51.0125747357656 + ], + [ + 7.013852118456565, + 51.012519950911866 + ], + [ + 7.013858010242655, + 51.01248990184212 + ], + [ + 7.01391059458618, + 51.01221914600387 + ], + [ + 7.013954471365667, + 51.011993210993055 + ], + [ + 7.014015811507324, + 51.01168380016914 + ], + [ + 7.014024465318399, + 51.01162436918066 + ], + [ + 7.014032842109236, + 51.011566850017985 + ], + [ + 7.014068935483723, + 51.01132068190441 + ], + [ + 7.01407201779988, + 51.01129782220544 + ], + [ + 7.014087885648767, + 51.011188860176695 + ], + [ + 7.014104570087955, + 51.01106732278081 + ], + [ + 7.01411883278187, + 51.01096342653202 + ], + [ + 7.0141201936604975, + 51.01095132719023 + ], + [ + 7.014134409307448, + 51.01082483730399 + ], + [ + 7.014134846225486, + 51.010820950501596 + ], + [ + 7.014162885002694, + 51.01056520570563 + ], + [ + 7.014177967940742, + 51.01043639491426 + ], + [ + 7.0141978753856, + 51.01022297875702 + ], + [ + 7.014213650592818, + 51.010053862290555 + ], + [ + 7.014224956433072, + 51.009869761132975 + ], + [ + 7.014227002257803, + 51.00983638646741 + ], + [ + 7.01423075786822, + 51.00977566793098 + ], + [ + 7.014253123128025, + 51.00941402493745 + ], + [ + 7.01425624881651, + 51.00930534267644 + ], + [ + 7.0142590350957805, + 51.009208410186694 + ], + [ + 7.014260899943896, + 51.00914356111241 + ], + [ + 7.014268440921657, + 51.00863215002907 + ], + [ + 7.014280697538034, + 51.0078009398094 + ], + [ + 7.014286179694259, + 51.0074291239012 + ], + [ + 7.014287082290037, + 51.00736787567993 + ], + [ + 7.014289283058612, + 51.007218629073655 + ], + [ + 7.014278703112791, + 51.007050882068484 + ], + [ + 7.0142748759026, + 51.00699020007192 + ], + [ + 7.014201740374473, + 51.00583052204876 + ], + [ + 7.014192705493669, + 51.0056872863737 + ], + [ + 7.014182754582992, + 51.005529487952835 + ], + [ + 7.0141686534430505, + 51.0054274081376 + ], + [ + 7.014155852142809, + 51.00533474514643 + ], + [ + 7.014116294336624, + 51.00505130619198 + ], + [ + 7.014101488210515, + 51.00494571405867 + ], + [ + 7.014062938378939, + 51.00467713526331 + ], + [ + 7.014007907986952, + 51.00429372815046 + ], + [ + 7.013959147991654, + 51.0040313764302 + ], + [ + 7.013888945357748, + 51.00365364790419 + ], + [ + 7.013873660229271, + 51.003608109626626 + ], + [ + 7.013863040938945, + 51.00357647567492 + ], + [ + 7.013859716906574, + 51.00356179283323 + ], + [ + 7.013853109713609, + 51.00353260501859 + ], + [ + 7.013845626763813, + 51.00348748001491 + ], + [ + 7.013788109720768, + 51.003140597565626 + ], + [ + 7.0137776484488406, + 51.00307750572342 + ], + [ + 7.013241703392163, + 51.00049658150834 + ], + [ + 7.013236036353105, + 51.00047006005307 + ], + [ + 7.0131769128023285, + 51.000186210334796 + ], + [ + 7.0129216686591995, + 50.99896345621279 + ], + [ + 7.012708350153275, + 50.99807903077882 + ], + [ + 7.0126542017803075, + 50.997854524302035 + ], + [ + 7.012236496997475, + 50.99600275387686 + ], + [ + 7.012154645369792, + 50.9959982102579 + ], + [ + 7.011969686387583, + 50.9959879066316 + ], + [ + 7.01196142271627, + 50.99595507772587 + ], + [ + 7.011526304384823, + 50.9959208862064 + ], + [ + 7.011329298241123, + 50.99590539757212 + ], + [ + 7.011319452892276, + 50.995904637246156 + ], + [ + 7.011309605308049, + 50.995903829215045 + ], + [ + 7.010806191871011, + 50.99586431699579 + ], + [ + 7.010640423873277, + 50.99586620162058 + ], + [ + 7.009928504493106, + 50.995874294938226 + ], + [ + 7.008645270499842, + 50.995890919850254 + ], + [ + 7.0085810440885545, + 50.99589174395624 + ], + [ + 7.008517387944157, + 50.99589256336129 + ], + [ + 7.008430233215633, + 50.995893590887874 + ], + [ + 7.008423184229941, + 50.99589369282592 + ], + [ + 7.008416135167249, + 50.99589379656096 + ], + [ + 7.008045305753304, + 50.995898618980796 + ], + [ + 7.006683802270291, + 50.99591225679816 + ], + [ + 7.00624855308522, + 50.995916052241625 + ], + [ + 7.006039364835035, + 50.99591897881396 + ], + [ + 7.005775496056979, + 50.9959227574642 + ], + [ + 7.005652889643666, + 50.995924558080866 + ], + [ + 7.005574566272686, + 50.99592559218503 + ], + [ + 7.005258023438704, + 50.99592975981608 + ], + [ + 7.005073252275851, + 50.99596326005367 + ], + [ + 7.004941674690702, + 50.99597850595872 + ], + [ + 7.0046821998036854, + 50.99603422709269 + ], + [ + 7.004676793936057, + 50.99603539384322 + ], + [ + 7.004671356467375, + 50.996036566349126 + ], + [ + 7.0046395211736545, + 50.996043402618625 + ], + [ + 7.004475611585841, + 50.9960786127785 + ], + [ + 7.004152469641871, + 50.9961479575596 + ], + [ + 7.003881828322591, + 50.99625397726927 + ], + [ + 7.003793681694367, + 50.99628835527232 + ], + [ + 7.003496053420312, + 50.996404718674036 + ], + [ + 7.003008740017857, + 50.99656019626172 + ], + [ + 7.002458334085416, + 50.996680103026385 + ], + [ + 7.002453543377014, + 50.99668114619098 + ], + [ + 7.002424009109621, + 50.99669080025031 + ], + [ + 7.001887216121228, + 50.9968667426949 + ], + [ + 7.001680010473975, + 50.99696209873269 + ], + [ + 7.001501437375186, + 50.9970442650456 + ], + [ + 7.001456215692595, + 50.99706770927326 + ], + [ + 7.001403533053391, + 50.997095264507514 + ], + [ + 7.001210258593087, + 50.99719598449396 + ], + [ + 7.001122760669652, + 50.997245389176 + ], + [ + 7.001046859325782, + 50.99725056550587 + ], + [ + 7.000931373322969, + 50.997407416457996 + ], + [ + 7.001051707312572, + 50.9978937835046 + ], + [ + 7.0010060672325665, + 50.99794759371113 + ], + [ + 7.00091298072499, + 50.99796128958067 + ], + [ + 7.000300936394384, + 50.99786959913479 + ], + [ + 7.000326155406857, + 50.997552600475544 + ], + [ + 7.000335172317658, + 50.99751426119058 + ], + [ + 7.000340756730399, + 50.997490519167414 + ], + [ + 7.000920526933338, + 50.9950239882705 + ], + [ + 7.000940138697137, + 50.994940688500215 + ], + [ + 7.0009526075379975, + 50.99488809396563 + ], + [ + 7.001011988100564, + 50.99463610484083 + ], + [ + 7.001035385169519, + 50.99454513351199 + ], + [ + 7.001056283464733, + 50.99446378847278 + ], + [ + 7.001074081261277, + 50.99439194520641 + ], + [ + 7.001080476568074, + 50.994365366035815 + ], + [ + 7.001076229882899, + 50.99436483107666 + ], + [ + 7.001025891942123, + 50.99435848965832 + ], + [ + 7.00101758143078, + 50.99435744265179 + ], + [ + 7.00100927091984, + 50.994356395644694 + ], + [ + 7.000946890314502, + 50.99434853768937 + ], + [ + 7.000875561366088, + 50.9943395525147 + ], + [ + 7.00075489673084, + 50.99432435174054 + ], + [ + 7.000750068886231, + 50.994323743865294 + ], + [ + 7.000746003640916, + 50.99432323178612 + ], + [ + 7.000739831875665, + 50.99432245880459 + ], + [ + 7.0007114852479635, + 50.994319064996006 + ], + [ + 6.99929013006911, + 50.994152557918994 + ], + [ + 6.999192878496173, + 50.99414116161086 + ], + [ + 6.99914746513624, + 50.994135839986015 + ], + [ + 6.999104735990254, + 50.994130833241755 + ], + [ + 6.999089647383854, + 50.99412906469674 + ], + [ + 6.9990823022929085, + 50.99412820407232 + ], + [ + 6.998400753197008, + 50.994048336138555 + ], + [ + 6.9983685128996616, + 50.99404455844919 + ], + [ + 6.998364071831208, + 50.9940440380467 + ], + [ + 6.998344505344742, + 50.99404174477398 + ], + [ + 6.998274314691961, + 50.99403795605433 + ], + [ + 6.998075690351335, + 50.99402723333477 + ], + [ + 6.9978817081607945, + 50.99401666540546 + ], + [ + 6.9977371165741555, + 50.994009202250666 + ], + [ + 6.997262547101708, + 50.993953740409644 + ], + [ + 6.9968666400060116, + 50.99390745934859 + ], + [ + 6.996442925757032, + 50.99385654032931 + ], + [ + 6.9963955474246955, + 50.99385245022517 + ], + [ + 6.996318005999351, + 50.993843313402714 + ], + [ + 6.996168790128589, + 50.993825443354794 + ], + [ + 6.996118427422582, + 50.993819175833245 + ], + [ + 6.996113200099966, + 50.99381861397356 + ], + [ + 6.996077555347912, + 50.99381437791571 + ], + [ + 6.996073234229833, + 50.99381381991191 + ], + [ + 6.995332392985786, + 50.99372727488086 + ], + [ + 6.995195829507836, + 50.99371430825534 + ], + [ + 6.993708794229543, + 50.99354459987538 + ], + [ + 6.9927173119469135, + 50.99343263210104 + ], + [ + 6.992521756783115, + 50.993364322229894 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Flittard", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "909", + "Population_rel": 0.007414249476122201, + "Population_abs": 8067 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.067466749268884, + 50.99362717688852 + ], + [ + 7.067582157696217, + 50.993574790535966 + ], + [ + 7.067608926128897, + 50.99353785707487 + ], + [ + 7.068075214461943, + 50.992898375222424 + ], + [ + 7.0681462280049265, + 50.99280155597787 + ], + [ + 7.06849873703018, + 50.99246017082094 + ], + [ + 7.068517895292785, + 50.992441642541856 + ], + [ + 7.068522348659867, + 50.992437316538656 + ], + [ + 7.068525566298125, + 50.99243337301046 + ], + [ + 7.068955502136042, + 50.99160659703352 + ], + [ + 7.068990500602635, + 50.99152864296247 + ], + [ + 7.068997571036042, + 50.991529926333115 + ], + [ + 7.069009191340661, + 50.99153186771512 + ], + [ + 7.0690830111729595, + 50.99154428073887 + ], + [ + 7.069139515106515, + 50.99155375163126 + ], + [ + 7.069624381999602, + 50.991634760557204 + ], + [ + 7.0696392541580035, + 50.991610709349985 + ], + [ + 7.069682361934855, + 50.99154688850448 + ], + [ + 7.069685248068716, + 50.99154261929438 + ], + [ + 7.069687044192796, + 50.99153958307363 + ], + [ + 7.069691021496981, + 50.99153370945877 + ], + [ + 7.069694048595532, + 50.991528996497316 + ], + [ + 7.069696874313528, + 50.99152470650252 + ], + [ + 7.0696993974454285, + 50.99152090885081 + ], + [ + 7.069701597270572, + 50.99151724435632 + ], + [ + 7.069811698372494, + 50.99135100575001 + ], + [ + 7.069812862126061, + 50.99134370241955 + ], + [ + 7.069817688410101, + 50.991341442058165 + ], + [ + 7.069821914676712, + 50.991334719063794 + ], + [ + 7.069822271212969, + 50.991331415322826 + ], + [ + 7.069822851176954, + 50.991325920843565 + ], + [ + 7.069829640698967, + 50.9912562546484 + ], + [ + 7.069793894182492, + 50.99107502531044 + ], + [ + 7.069777485488122, + 50.99099190804758 + ], + [ + 7.06976971496207, + 50.990883143589286 + ], + [ + 7.069769679898276, + 50.990882649262765 + ], + [ + 7.0697668507452756, + 50.99084258381458 + ], + [ + 7.069766786608565, + 50.99084230935 + ], + [ + 7.069753064215995, + 50.990804866256234 + ], + [ + 7.069665042211473, + 50.99056426157609 + ], + [ + 7.069634589116102, + 50.990481282683234 + ], + [ + 7.069611695805286, + 50.990418493394365 + ], + [ + 7.0695020663311805, + 50.99023654812712 + ], + [ + 7.0693439391259245, + 50.989978602167476 + ], + [ + 7.069261061924454, + 50.98984718140698 + ], + [ + 7.069185413010541, + 50.98972515875551 + ], + [ + 7.069140192681405, + 50.98965214147504 + ], + [ + 7.069114185632117, + 50.98961128538216 + ], + [ + 7.0690920262354595, + 50.98957420094895 + ], + [ + 7.069080324273188, + 50.98955518482352 + ], + [ + 7.069077916176354, + 50.98955126877873 + ], + [ + 7.069043502283085, + 50.989494955818145 + ], + [ + 7.069039824935758, + 50.98948903930116 + ], + [ + 7.069036051264877, + 50.98948362393213 + ], + [ + 7.069108065897584, + 50.98948002373745 + ], + [ + 7.069130446555188, + 50.98947926417485 + ], + [ + 7.069133722561123, + 50.989478989173485 + ], + [ + 7.069140110572829, + 50.98947854528129 + ], + [ + 7.069155147774592, + 50.98947769757838 + ], + [ + 7.069187289848884, + 50.98947606962761 + ], + [ + 7.069289466379991, + 50.989470896761006 + ], + [ + 7.069297597013025, + 50.989470489763455 + ], + [ + 7.069305821964716, + 50.98947007623039 + ], + [ + 7.069848319140912, + 50.989442856032646 + ], + [ + 7.069921720714229, + 50.98943917303412 + ], + [ + 7.070835552321382, + 50.98939291065591 + ], + [ + 7.070988359797389, + 50.98938520366316 + ], + [ + 7.072717306359596, + 50.98929902221996 + ], + [ + 7.072861039459474, + 50.989291821356524 + ], + [ + 7.072969525728068, + 50.98928759029124 + ], + [ + 7.073263258745358, + 50.98927611154037 + ], + [ + 7.0733525916245705, + 50.98927264874975 + ], + [ + 7.07355901750665, + 50.98926436688027 + ], + [ + 7.073998100580401, + 50.9892474701959 + ], + [ + 7.0740065826256675, + 50.98924714331278 + ], + [ + 7.074209020656211, + 50.98923925410009 + ], + [ + 7.074610021896596, + 50.98922358251774 + ], + [ + 7.074742608654749, + 50.98921840799343 + ], + [ + 7.07492076044668, + 50.98921145991823 + ], + [ + 7.075161384292346, + 50.989202049933574 + ], + [ + 7.075184570445395, + 50.989201137005786 + ], + [ + 7.075185195477735, + 50.98920108075489 + ], + [ + 7.07530515826138, + 50.9891858531715 + ], + [ + 7.075341848471617, + 50.989181191206605 + ], + [ + 7.07535257479782, + 50.98917983097756 + ], + [ + 7.075363301160603, + 50.98917846984878 + ], + [ + 7.0754748616273, + 50.98916425749554 + ], + [ + 7.0756803977096565, + 50.98913808969862 + ], + [ + 7.075732941660457, + 50.989131399974376 + ], + [ + 7.076771406942216, + 50.98899917144047 + ], + [ + 7.077675317850486, + 50.98888403445678 + ], + [ + 7.0779758478746135, + 50.98884580006632 + ], + [ + 7.078483227352771, + 50.98878111071731 + ], + [ + 7.078615874397929, + 50.98876422137647 + ], + [ + 7.07881841114191, + 50.988738410631754 + ], + [ + 7.079835668198368, + 50.988703747729836 + ], + [ + 7.079888907916006, + 50.98870168217675 + ], + [ + 7.080076040559908, + 50.98869443591823 + ], + [ + 7.080199483510427, + 50.988689898117514 + ], + [ + 7.0813976735335915, + 50.98864563805583 + ], + [ + 7.081489815261822, + 50.98861631014112 + ], + [ + 7.081557060211173, + 50.98859538416828 + ], + [ + 7.081608171443368, + 50.98857948224926 + ], + [ + 7.081819215523646, + 50.98851316325948 + ], + [ + 7.0820589567441425, + 50.98843617215881 + ], + [ + 7.082288295063463, + 50.988362433594354 + ], + [ + 7.082416790676257, + 50.98832164154255 + ], + [ + 7.084002649542474, + 50.98781782894935 + ], + [ + 7.08413055508925, + 50.98777720881238 + ], + [ + 7.084182062588608, + 50.987779218450235 + ], + [ + 7.0841828350887095, + 50.98777924821056 + ], + [ + 7.084213655298086, + 50.98778040403419 + ], + [ + 7.08433157980196, + 50.98778482246941 + ], + [ + 7.086455081805762, + 50.987862770545895 + ], + [ + 7.086596521814262, + 50.98786875284646 + ], + [ + 7.086601871893506, + 50.98786942238464 + ], + [ + 7.086603400297265, + 50.98786960841044 + ], + [ + 7.086607595622118, + 50.98787011872954 + ], + [ + 7.086656810748974, + 50.98787233344166 + ], + [ + 7.086666508478637, + 50.98787271985997 + ], + [ + 7.086675561823518, + 50.98787307953195 + ], + [ + 7.0866762047475875, + 50.987873107152886 + ], + [ + 7.0867673936422015, + 50.98787777850903 + ], + [ + 7.086832011537446, + 50.98788104590766 + ], + [ + 7.08684169285972, + 50.98788117302822 + ], + [ + 7.086849276626172, + 50.987881267585045 + ], + [ + 7.08736458555251, + 50.98790148426757 + ], + [ + 7.087627116328834, + 50.98791176333914 + ], + [ + 7.087631404099508, + 50.98791193158137 + ], + [ + 7.08774695921611, + 50.987916428277124 + ], + [ + 7.087855725650677, + 50.98792055379297 + ], + [ + 7.087880570153068, + 50.98792149658808 + ], + [ + 7.088015423328954, + 50.9879265724926 + ], + [ + 7.088016274041344, + 50.987926606206074 + ], + [ + 7.0880222493532425, + 50.98792686771484 + ], + [ + 7.088022001627585, + 50.98792297934309 + ], + [ + 7.0880004235927965, + 50.98758421480637 + ], + [ + 7.087992070909348, + 50.98744746685869 + ], + [ + 7.0879918692926305, + 50.98744429422908 + ], + [ + 7.087991811361812, + 50.98744341550968 + ], + [ + 7.0879913773889385, + 50.987436986107106 + ], + [ + 7.087990041782779, + 50.987417130753876 + ], + [ + 7.087973133509364, + 50.987152527948496 + ], + [ + 7.087969075895284, + 50.98708456017332 + ], + [ + 7.087969038896118, + 50.98708396959033 + ], + [ + 7.087967528567882, + 50.98706039164053 + ], + [ + 7.087964910605114, + 50.987019559407024 + ], + [ + 7.087960739397867, + 50.98695473751474 + ], + [ + 7.087958588845323, + 50.98692035321813 + ], + [ + 7.0879537834019555, + 50.98684652108933 + ], + [ + 7.087952038974164, + 50.986815915338546 + ], + [ + 7.0879498240936645, + 50.98677945607381 + ], + [ + 7.087946020425109, + 50.98672587044918 + ], + [ + 7.087944456811973, + 50.986703832221394 + ], + [ + 7.087944418261996, + 50.98670327938591 + ], + [ + 7.087938524493343, + 50.986618103849956 + ], + [ + 7.087938299296143, + 50.98661477704395 + ], + [ + 7.087938077598837, + 50.986611538432065 + ], + [ + 7.087930140340245, + 50.98649970671197 + ], + [ + 7.087925861123554, + 50.98643730680776 + ], + [ + 7.087920714828772, + 50.98636500968711 + ], + [ + 7.087911285852474, + 50.9862303980405 + ], + [ + 7.087910834794091, + 50.98622400343146 + ], + [ + 7.087910372270723, + 50.98621761043339 + ], + [ + 7.087902887945779, + 50.98612024326237 + ], + [ + 7.087897072374502, + 50.98604467861178 + ], + [ + 7.087893492811376, + 50.985998158388966 + ], + [ + 7.08789153956779, + 50.985971248263965 + ], + [ + 7.087883426332551, + 50.9858594037543 + ], + [ + 7.087883113509719, + 50.98585508891981 + ], + [ + 7.087883771944264, + 50.98585245019849 + ], + [ + 7.08790993241258, + 50.985747737544656 + ], + [ + 7.087910056892278, + 50.985747239540956 + ], + [ + 7.087925970458964, + 50.985683699795594 + ], + [ + 7.08793341459329, + 50.9856540026377 + ], + [ + 7.087939428149891, + 50.985656932267766 + ], + [ + 7.087945256963828, + 50.98565971137843 + ], + [ + 7.087950419770569, + 50.98566215851455 + ], + [ + 7.088004177207284, + 50.98568765491598 + ], + [ + 7.0880537391016905, + 50.98571119575587 + ], + [ + 7.088140602641411, + 50.985752511447124 + ], + [ + 7.088223361738337, + 50.98579187573182 + ], + [ + 7.0883950305138645, + 50.98587353956872 + ], + [ + 7.088401747122165, + 50.98587673340153 + ], + [ + 7.0884502098850914, + 50.9858997776216 + ], + [ + 7.088459954992277, + 50.985904411426105 + ], + [ + 7.088469701451456, + 50.98590904705062 + ], + [ + 7.0885005160300585, + 50.98592369918637 + ], + [ + 7.088525174238919, + 50.98593542837089 + ], + [ + 7.088573262409265, + 50.985958333303124 + ], + [ + 7.088577667414163, + 50.9859604298502 + ], + [ + 7.08877833923777, + 50.98605592593686 + ], + [ + 7.0888361951752845, + 50.986083406448245 + ], + [ + 7.0889323453038875, + 50.98612914185575 + ], + [ + 7.089079133650732, + 50.98619923202077 + ], + [ + 7.089083154141623, + 50.98620115137913 + ], + [ + 7.089096104512877, + 50.98620729633136 + ], + [ + 7.0891082178630915, + 50.986213075038954 + ], + [ + 7.089118736109215, + 50.986218107261585 + ], + [ + 7.089159462951022, + 50.98623795060553 + ], + [ + 7.089163865139986, + 50.986240012908475 + ], + [ + 7.08916851833251, + 50.98624217375057 + ], + [ + 7.089213527296658, + 50.986263326451535 + ], + [ + 7.089217434455543, + 50.9862651953857 + ], + [ + 7.0892226356792465, + 50.98626768176544 + ], + [ + 7.089236636061068, + 50.986274073217324 + ], + [ + 7.089242590860816, + 50.986276737407174 + ], + [ + 7.089246199206093, + 50.986278388304086 + ], + [ + 7.089331072704023, + 50.9863192919054 + ], + [ + 7.089456435313473, + 50.986378898007814 + ], + [ + 7.089460202515344, + 50.986380671111085 + ], + [ + 7.0894639766525325, + 50.98638244882448 + ], + [ + 7.0894959877352415, + 50.986397680565574 + ], + [ + 7.089567679277154, + 50.98643180574731 + ], + [ + 7.089638627311489, + 50.98642563749077 + ], + [ + 7.089759605470862, + 50.98641522956903 + ], + [ + 7.089847382231177, + 50.98640768073859 + ], + [ + 7.089896952620235, + 50.986403324716115 + ], + [ + 7.0899310429116, + 50.98640033073094 + ], + [ + 7.089931899486301, + 50.98640025570447 + ], + [ + 7.090008682482751, + 50.98639363045295 + ], + [ + 7.090023141933304, + 50.986392382997835 + ], + [ + 7.090486218505886, + 50.98635243363429 + ], + [ + 7.090649584774678, + 50.98633833980077 + ], + [ + 7.090662620669105, + 50.986337198499555 + ], + [ + 7.091136648619563, + 50.98629569614755 + ], + [ + 7.091326962296966, + 50.98627946337424 + ], + [ + 7.091456655158674, + 50.98626843976887 + ], + [ + 7.091821973395591, + 50.98609790463375 + ], + [ + 7.091828215493624, + 50.98609499108726 + ], + [ + 7.091880833274169, + 50.986070028525006 + ], + [ + 7.091881442162759, + 50.98606973898826 + ], + [ + 7.091897427172556, + 50.98606207144785 + ], + [ + 7.091900956130578, + 50.9860603789611 + ], + [ + 7.091905454512554, + 50.98605822205761 + ], + [ + 7.0921652937502095, + 50.98593358328785 + ], + [ + 7.092262821481049, + 50.985887516070704 + ], + [ + 7.092279731257209, + 50.985879531722986 + ], + [ + 7.092286916286667, + 50.985876138010646 + ], + [ + 7.09229553489061, + 50.985872079709026 + ], + [ + 7.0922963782539785, + 50.9858716662919 + ], + [ + 7.092300855273489, + 50.985870099001374 + ], + [ + 7.092347776428888, + 50.98587153728039 + ], + [ + 7.092502231379074, + 50.98587838697845 + ], + [ + 7.092558655242995, + 50.98588092830557 + ], + [ + 7.092684683869377, + 50.98588657689745 + ], + [ + 7.092888155388996, + 50.98588368796795 + ], + [ + 7.092976113434165, + 50.9858825593501 + ], + [ + 7.0938531114691035, + 50.98586992421217 + ], + [ + 7.09385362177645, + 50.98586991905107 + ], + [ + 7.093858315528686, + 50.98586987694738 + ], + [ + 7.093863032357842, + 50.98586982802535 + ], + [ + 7.094124279884701, + 50.98566345114079 + ], + [ + 7.094270445074678, + 50.98554801370997 + ], + [ + 7.094274004040024, + 50.985545202843994 + ], + [ + 7.094277390361227, + 50.98554257172974 + ], + [ + 7.09428958825716, + 50.985533182754594 + ], + [ + 7.0943032982249425, + 50.98552267267409 + ], + [ + 7.094310941711751, + 50.9855172645691 + ], + [ + 7.094330497167716, + 50.98551741459652 + ], + [ + 7.094745936482133, + 50.98552031944379 + ], + [ + 7.095045069232245, + 50.985522282613864 + ], + [ + 7.095269950781086, + 50.98552365546714 + ], + [ + 7.095285533196789, + 50.985523750427554 + ], + [ + 7.095318996881782, + 50.985523960747486 + ], + [ + 7.095512697514603, + 50.9855258849245 + ], + [ + 7.095622377181436, + 50.98552668781368 + ], + [ + 7.095914378387209, + 50.98552893627259 + ], + [ + 7.095958372087818, + 50.985529727300296 + ], + [ + 7.096054946689136, + 50.98553041144911 + ], + [ + 7.096072036273554, + 50.985530548863196 + ], + [ + 7.096089027389203, + 50.98553069006558 + ], + [ + 7.096204459711033, + 50.9855315834942 + ], + [ + 7.096231079806784, + 50.98553179620718 + ], + [ + 7.096236055103674, + 50.98553183684158 + ], + [ + 7.096241111562198, + 50.98553187879887 + ], + [ + 7.096305386398387, + 50.98508608208691 + ], + [ + 7.096316385474779, + 50.98500996910524 + ], + [ + 7.0963207374298625, + 50.98498004116337 + ], + [ + 7.0963585561527855, + 50.984976008872366 + ], + [ + 7.096371828974655, + 50.98497470531696 + ], + [ + 7.096385056111436, + 50.98497343878826 + ], + [ + 7.096551399430591, + 50.98495752808788 + ], + [ + 7.096696292340213, + 50.98494094649042 + ], + [ + 7.096743896947957, + 50.98493547900594 + ], + [ + 7.096829298737117, + 50.984925667531144 + ], + [ + 7.096829728103917, + 50.984925620567054 + ], + [ + 7.096834054079708, + 50.984925162244956 + ], + [ + 7.096839018473807, + 50.98492466666084 + ], + [ + 7.096859465798871, + 50.984829608903915 + ], + [ + 7.096859487897087, + 50.98482931247691 + ], + [ + 7.096857473022112, + 50.98476922701745 + ], + [ + 7.09685729051393, + 50.984763865686745 + ], + [ + 7.096857120563088, + 50.984759033381344 + ], + [ + 7.096854220499165, + 50.984675792194565 + ], + [ + 7.096855243289535, + 50.98464298330735 + ], + [ + 7.096858056273959, + 50.98455327352762 + ], + [ + 7.0968705609781315, + 50.98447397433241 + ], + [ + 7.0969033383420825, + 50.984463356476034 + ], + [ + 7.096919068868516, + 50.984453969036835 + ], + [ + 7.096924822107312, + 50.984450836804605 + ], + [ + 7.096929611040145, + 50.98444804590191 + ], + [ + 7.096945635950671, + 50.98431510627685 + ], + [ + 7.096946654306427, + 50.984307590773916 + ], + [ + 7.096947658681779, + 50.984299406822416 + ], + [ + 7.096936046356945, + 50.9842865222969 + ], + [ + 7.0969301472044695, + 50.98427785980964 + ], + [ + 7.096926219174857, + 50.98427395465414 + ], + [ + 7.096834742054121, + 50.98420095890603 + ], + [ + 7.09676651008428, + 50.98414379373573 + ], + [ + 7.096479852743768, + 50.983903441179564 + ], + [ + 7.09629691399889, + 50.983816279552116 + ], + [ + 7.096095345220026, + 50.9836674554049 + ], + [ + 7.096067087469723, + 50.983645276187254 + ], + [ + 7.096063891262263, + 50.98364152593022 + ], + [ + 7.096061849639348, + 50.98363765869404 + ], + [ + 7.096022707720902, + 50.98356346588387 + ], + [ + 7.095954236264612, + 50.983433683280374 + ], + [ + 7.095792043099761, + 50.98277001262251 + ], + [ + 7.095667642828867, + 50.98274869024826 + ], + [ + 7.095598373746833, + 50.982736760312015 + ], + [ + 7.095469262494119, + 50.982716504881246 + ], + [ + 7.095292718813384, + 50.9826888285569 + ], + [ + 7.095223207424736, + 50.98267798446352 + ], + [ + 7.095091342598053, + 50.982657307769614 + ], + [ + 7.0950755508822585, + 50.98265483146814 + ], + [ + 7.094876088156779, + 50.98262356006367 + ], + [ + 7.0948709505932595, + 50.98262275766638 + ], + [ + 7.094436666799395, + 50.982554607666316 + ], + [ + 7.094387545362141, + 50.98254689457593 + ], + [ + 7.094089584769945, + 50.98249931814249 + ], + [ + 7.094075497963405, + 50.982497065589286 + ], + [ + 7.094061415429673, + 50.98249481310412 + ], + [ + 7.094000259292676, + 50.98248501299045 + ], + [ + 7.093986604936215, + 50.982482846627846 + ], + [ + 7.0939729490836605, + 50.982480682037924 + ], + [ + 7.093858572624886, + 50.982462371385274 + ], + [ + 7.0937514984385786, + 50.982442730056 + ], + [ + 7.09379586115109, + 50.982434475925515 + ], + [ + 7.09388173091708, + 50.98242069101881 + ], + [ + 7.093882505581183, + 50.98242056156482 + ], + [ + 7.093978353552988, + 50.982404148752366 + ], + [ + 7.094009920026856, + 50.982398725510286 + ], + [ + 7.094024127195363, + 50.98239626471498 + ], + [ + 7.094038341223675, + 50.9823938103254 + ], + [ + 7.0941409245933205, + 50.98237623112152 + ], + [ + 7.094575389861606, + 50.982301661080044 + ], + [ + 7.094586152500411, + 50.98229981313533 + ], + [ + 7.094596915064784, + 50.98229796698714 + ], + [ + 7.094770381760146, + 50.98226823958049 + ], + [ + 7.0947835804471895, + 50.98226597988424 + ], + [ + 7.094796779206581, + 50.98226371838896 + ], + [ + 7.0950323766165875, + 50.982223316175606 + ], + [ + 7.095252620091726, + 50.98218553829971 + ], + [ + 7.095432115112302, + 50.98215473907624 + ], + [ + 7.095928547604763, + 50.982069622400175 + ], + [ + 7.095977195846463, + 50.9820612817298 + ], + [ + 7.096521881205958, + 50.981580476546426 + ], + [ + 7.096616030782971, + 50.98149736738194 + ], + [ + 7.096623103913067, + 50.98145317952023 + ], + [ + 7.096637881791653, + 50.981360855126994 + ], + [ + 7.0966385784773225, + 50.981356501010964 + ], + [ + 7.096639378035744, + 50.98135151272736 + ], + [ + 7.097593616955582, + 50.981348804721975 + ], + [ + 7.097647049798625, + 50.98134875691446 + ], + [ + 7.097661657436229, + 50.981348894144425 + ], + [ + 7.097675384629048, + 50.98134906559551 + ], + [ + 7.097907334968579, + 50.981351633251805 + ], + [ + 7.09805603713556, + 50.98135328353957 + ], + [ + 7.098131509813688, + 50.981354082810114 + ], + [ + 7.098141043444001, + 50.98135420030023 + ], + [ + 7.098150946444003, + 50.981355075665995 + ], + [ + 7.098197244603609, + 50.9813631441108 + ], + [ + 7.0983204983896355, + 50.98138718277535 + ], + [ + 7.098553096233699, + 50.98143234685696 + ], + [ + 7.098553573389873, + 50.98143245445456 + ], + [ + 7.098768672414543, + 50.98148576643576 + ], + [ + 7.099116060313199, + 50.98157191560941 + ], + [ + 7.0992454960230145, + 50.981604139118325 + ], + [ + 7.099324804836602, + 50.9815934181583 + ], + [ + 7.099325625722926, + 50.981593307407735 + ], + [ + 7.09946500905829, + 50.98157452916544 + ], + [ + 7.09958317544151, + 50.981566285884576 + ], + [ + 7.100062525589327, + 50.98098168039558 + ], + [ + 7.099999299242309, + 50.98092688827892 + ], + [ + 7.099998168520769, + 50.98092603887809 + ], + [ + 7.0999930548307715, + 50.98092168823871 + ], + [ + 7.099981384234828, + 50.98091162613708 + ], + [ + 7.0997894567421165, + 50.980744245984916 + ], + [ + 7.09959859395673, + 50.98057779477775 + ], + [ + 7.099434059042716, + 50.98043454520383 + ], + [ + 7.099418696457682, + 50.98042119067462 + ], + [ + 7.099376279500228, + 50.98038431747348 + ], + [ + 7.099271862582417, + 50.980293399269435 + ], + [ + 7.09894237368053, + 50.980006085380914 + ], + [ + 7.098905398896107, + 50.9799733818701 + ], + [ + 7.099000327146161, + 50.97998283793622 + ], + [ + 7.098801395260567, + 50.97992114403637 + ], + [ + 7.098282915466954, + 50.97976512394743 + ], + [ + 7.098083440048013, + 50.979660616035915 + ], + [ + 7.09789855170431, + 50.979563065357546 + ], + [ + 7.097876648411985, + 50.979553809470154 + ], + [ + 7.097845950300821, + 50.97953944048561 + ], + [ + 7.097838184071685, + 50.979535965684285 + ], + [ + 7.0976550743132165, + 50.9794543864592 + ], + [ + 7.097544323025234, + 50.97940504591052 + ], + [ + 7.097348452426152, + 50.97926802258469 + ], + [ + 7.097285383856074, + 50.97922400040754 + ], + [ + 7.097248038294098, + 50.97919793475595 + ], + [ + 7.096763372601271, + 50.97885989676399 + ], + [ + 7.096745359025572, + 50.97884736834395 + ], + [ + 7.096739002640667, + 50.978836003914004 + ], + [ + 7.09673278604335, + 50.97882749182026 + ], + [ + 7.096725418952323, + 50.97881757147057 + ], + [ + 7.096712935239999, + 50.97880070294577 + ], + [ + 7.096506400326145, + 50.97851035665527 + ], + [ + 7.096405930575014, + 50.978259330268045 + ], + [ + 7.096404381294896, + 50.97825548185146 + ], + [ + 7.096402826246851, + 50.97825163513957 + ], + [ + 7.096369300685209, + 50.97816933628597 + ], + [ + 7.096280760477416, + 50.97795195577995 + ], + [ + 7.096078000709398, + 50.97745233250606 + ], + [ + 7.0960676990957, + 50.97741821475924 + ], + [ + 7.096051053204181, + 50.977363078149935 + ], + [ + 7.096050862731772, + 50.977362440998476 + ], + [ + 7.096044089870189, + 50.97733950131936 + ], + [ + 7.096034955349308, + 50.977308544947284 + ], + [ + 7.09590108035187, + 50.976852898708145 + ], + [ + 7.095899711250381, + 50.976848234807434 + ], + [ + 7.095878726555348, + 50.976776731087185 + ], + [ + 7.095857784117935, + 50.97654628484246 + ], + [ + 7.095848022970661, + 50.97644600305552 + ], + [ + 7.09584328874925, + 50.97639716007008 + ], + [ + 7.095825370965012, + 50.976201776859796 + ], + [ + 7.095940717105915, + 50.97612937804096 + ], + [ + 7.096188179800953, + 50.97597401983261 + ], + [ + 7.096216889098358, + 50.975956003414296 + ], + [ + 7.096307610011284, + 50.975898774223595 + ], + [ + 7.096372985465924, + 50.97585804958321 + ], + [ + 7.096370544233349, + 50.975819168392384 + ], + [ + 7.096370332529716, + 50.97581567184185 + ], + [ + 7.096370062725536, + 50.975811366722304 + ], + [ + 7.096366368332588, + 50.97575864739397 + ], + [ + 7.0963536000609775, + 50.97557272758827 + ], + [ + 7.096365307157549, + 50.97543629003499 + ], + [ + 7.096431849832379, + 50.975341963871955 + ], + [ + 7.096430986326917, + 50.975332600088294 + ], + [ + 7.096430583188269, + 50.97532323031878 + ], + [ + 7.096432048262458, + 50.9752987971074 + ], + [ + 7.096432077008678, + 50.97529499419844 + ], + [ + 7.096427360442892, + 50.9752908135502 + ], + [ + 7.096424897471887, + 50.975287050965235 + ], + [ + 7.096417857877622, + 50.975280039947215 + ], + [ + 7.096417898805581, + 50.97526392235157 + ], + [ + 7.09641085908955, + 50.97521786847711 + ], + [ + 7.096414415979277, + 50.975212647237925 + ], + [ + 7.096417918445506, + 50.97520767693124 + ], + [ + 7.096437613126001, + 50.97518341767249 + ], + [ + 7.09648649172593, + 50.97514139878542 + ], + [ + 7.096496232793479, + 50.975133103622575 + ], + [ + 7.096475764057886, + 50.97511460297063 + ], + [ + 7.096430151905674, + 50.97507347834939 + ], + [ + 7.096414232882614, + 50.9750672444251 + ], + [ + 7.096398325766996, + 50.97506099810173 + ], + [ + 7.096287159699966, + 50.97505367372161 + ], + [ + 7.09626394398176, + 50.975051732165134 + ], + [ + 7.096262927206814, + 50.97505165443279 + ], + [ + 7.09625932257278, + 50.9750513906144 + ], + [ + 7.09624621055812, + 50.975050433984364 + ], + [ + 7.0961995986869875, + 50.975047235916385 + ], + [ + 7.096186815986817, + 50.97504630803181 + ], + [ + 7.096155351466017, + 50.97504588498756 + ], + [ + 7.0961052540306175, + 50.97502850746232 + ], + [ + 7.096097819842561, + 50.975022578211906 + ], + [ + 7.096094440039771, + 50.97501988259715 + ], + [ + 7.0960836861741745, + 50.975012504319764 + ], + [ + 7.096068989927353, + 50.975001487721535 + ], + [ + 7.096079323593687, + 50.97497881075494 + ], + [ + 7.096079642623193, + 50.97497804610746 + ], + [ + 7.096079955480501, + 50.97497729305096 + ], + [ + 7.09608929298634, + 50.97495567097524 + ], + [ + 7.09608956451919, + 50.97495505754455 + ], + [ + 7.0960963032136295, + 50.97493978572165 + ], + [ + 7.096101538420338, + 50.9749408972424 + ], + [ + 7.096106118350481, + 50.97494186947133 + ], + [ + 7.096121904527792, + 50.974945219734636 + ], + [ + 7.096134854798329, + 50.97494797065575 + ], + [ + 7.096144540086128, + 50.974913143600666 + ], + [ + 7.096139185920606, + 50.9749082537451 + ], + [ + 7.09613409193984, + 50.974903619951064 + ], + [ + 7.0961598886850235, + 50.97486554808126 + ], + [ + 7.096179316095213, + 50.97483960361044 + ], + [ + 7.096216256131884, + 50.97481582520155 + ], + [ + 7.096218436410467, + 50.974814830983775 + ], + [ + 7.096264188631535, + 50.97479442581373 + ], + [ + 7.096270247478947, + 50.97479149016069 + ], + [ + 7.096289912024277, + 50.97478224518865 + ], + [ + 7.096324469182149, + 50.974766084119565 + ], + [ + 7.096328238588832, + 50.97476433876209 + ], + [ + 7.096352805364098, + 50.97474943850086 + ], + [ + 7.096363880714113, + 50.97474683104514 + ], + [ + 7.096403124623598, + 50.974747175796914 + ], + [ + 7.096410237192471, + 50.974748081377 + ], + [ + 7.09644723582564, + 50.97476400233846 + ], + [ + 7.09656709255281, + 50.97481688032617 + ], + [ + 7.096567739616208, + 50.97481715078731 + ], + [ + 7.096574365186081, + 50.97481951526933 + ], + [ + 7.096579817262243, + 50.97482148918889 + ], + [ + 7.096619699944494, + 50.97483596417327 + ], + [ + 7.096688727892219, + 50.974854869555855 + ], + [ + 7.0967511042776845, + 50.97488887370226 + ], + [ + 7.0967572747699785, + 50.97489108056417 + ], + [ + 7.096793465606984, + 50.97490404825279 + ], + [ + 7.096900607100661, + 50.97495168406139 + ], + [ + 7.096977858753725, + 50.97500425399256 + ], + [ + 7.0969820496445, + 50.97500707701757 + ], + [ + 7.096988519724288, + 50.975010667462406 + ], + [ + 7.097027760163177, + 50.97503807087701 + ], + [ + 7.0970318510758, + 50.975033757678055 + ], + [ + 7.097034631595377, + 50.97503083421464 + ], + [ + 7.097034912738738, + 50.975030542907966 + ], + [ + 7.097039981732139, + 50.975025232972484 + ], + [ + 7.097088026841584, + 50.974975186090546 + ], + [ + 7.097214008156763, + 50.97485566129057 + ], + [ + 7.097242646486779, + 50.97482848172464 + ], + [ + 7.097248333939823, + 50.974823095519305 + ], + [ + 7.097254522064423, + 50.9748172399136 + ], + [ + 7.09744681913848, + 50.974634700987025 + ], + [ + 7.0975737325715444, + 50.974495217186735 + ], + [ + 7.097649549836326, + 50.97441164394432 + ], + [ + 7.098003212357304, + 50.974021590098964 + ], + [ + 7.098432779602692, + 50.97356153955165 + ], + [ + 7.098482852784317, + 50.97350832341837 + ], + [ + 7.098520870217444, + 50.973439145239105 + ], + [ + 7.098521943483896, + 50.9734303769041 + ], + [ + 7.098522568890477, + 50.97342528414035 + ], + [ + 7.0985229719784915, + 50.97342200715424 + ], + [ + 7.098528415957884, + 50.97337577625425 + ], + [ + 7.098530964767255, + 50.973354040744404 + ], + [ + 7.098536248914903, + 50.973347604656446 + ], + [ + 7.098541726398977, + 50.97334103861171 + ], + [ + 7.0985738687794795, + 50.973303183761246 + ], + [ + 7.098647231362987, + 50.97321356220643 + ], + [ + 7.098652858154932, + 50.97320630428452 + ], + [ + 7.098658460797454, + 50.97319960267071 + ], + [ + 7.09870507012076, + 50.97314405826888 + ], + [ + 7.098819422949272, + 50.973003327159134 + ], + [ + 7.099074154661974, + 50.97272704497851 + ], + [ + 7.099148232589687, + 50.97264668373671 + ], + [ + 7.099151433560832, + 50.972648526461185 + ], + [ + 7.099179676929663, + 50.97266493359494 + ], + [ + 7.099274425514019, + 50.97271997497783 + ], + [ + 7.099364170758067, + 50.97277224756947 + ], + [ + 7.099447784180633, + 50.97282078149607 + ], + [ + 7.099527248330045, + 50.97286690860668 + ], + [ + 7.099532884754442, + 50.97287019125501 + ], + [ + 7.099538560788444, + 50.97287344576829 + ], + [ + 7.099665290540601, + 50.972947120345744 + ], + [ + 7.099675447313894, + 50.97295304151392 + ], + [ + 7.099699643999122, + 50.97295001772646 + ], + [ + 7.099715962565192, + 50.972920078406034 + ], + [ + 7.0997195831715265, + 50.972913003631696 + ], + [ + 7.099722599070613, + 50.972907168222456 + ], + [ + 7.099771161532226, + 50.972813405564565 + ], + [ + 7.099889954599794, + 50.972586723151096 + ], + [ + 7.100055858823361, + 50.972263318724515 + ], + [ + 7.100097475958447, + 50.97218250067885 + ], + [ + 7.100310691889163, + 50.97176751254526 + ], + [ + 7.100467486703083, + 50.971463831507386 + ], + [ + 7.1005109409567115, + 50.971377470784894 + ], + [ + 7.1005862973208975, + 50.97135639252212 + ], + [ + 7.100655736766316, + 50.971337196553705 + ], + [ + 7.100664892628669, + 50.97130721254337 + ], + [ + 7.100665052785935, + 50.97130663866098 + ], + [ + 7.100668601966696, + 50.97129233546757 + ], + [ + 7.100670007527822, + 50.971286652812864 + ], + [ + 7.100671413051902, + 50.971280971056856 + ], + [ + 7.100672045552795, + 50.97127842087717 + ], + [ + 7.100676854616006, + 50.97125903792602 + ], + [ + 7.10079741371701, + 50.97077308806815 + ], + [ + 7.100896713500288, + 50.97037671716724 + ], + [ + 7.1008980418682315, + 50.97037110969915 + ], + [ + 7.1009070090974, + 50.97033327571442 + ], + [ + 7.100920873726722, + 50.970278322084035 + ], + [ + 7.1009571425660445, + 50.97012995601537 + ], + [ + 7.100962814934405, + 50.97010333557899 + ], + [ + 7.100975827496803, + 50.97004192599323 + ], + [ + 7.100975907274102, + 50.97004136699156 + ], + [ + 7.100976886032502, + 50.970023832866474 + ], + [ + 7.100977581980319, + 50.97001082240197 + ], + [ + 7.100980782998932, + 50.96995145037871 + ], + [ + 7.1009928353877445, + 50.969736123690446 + ], + [ + 7.101026444932395, + 50.96911057330361 + ], + [ + 7.101031276353753, + 50.96902009565724 + ], + [ + 7.1010413944933735, + 50.96893193169097 + ], + [ + 7.101050997506239, + 50.96884619930025 + ], + [ + 7.101058841450497, + 50.96876259675724 + ], + [ + 7.101067069487031, + 50.968673348002376 + ], + [ + 7.101082844914102, + 50.96850308472113 + ], + [ + 7.10112532341153, + 50.96804824143658 + ], + [ + 7.101133669620679, + 50.96795881202095 + ], + [ + 7.100550946812525, + 50.96723973019775 + ], + [ + 7.100546242952713, + 50.967234096554236 + ], + [ + 7.1004849604049225, + 50.96715834601251 + ], + [ + 7.099727729101214, + 50.96621491915964 + ], + [ + 7.099662943306542, + 50.96613409363393 + ], + [ + 7.099435506571773, + 50.965850792605835 + ], + [ + 7.09929250194982, + 50.96567931467789 + ], + [ + 7.099168704118932, + 50.96553085980226 + ], + [ + 7.098985692948547, + 50.96531139972912 + ], + [ + 7.098956626558141, + 50.965276574656336 + ], + [ + 7.098926478926009, + 50.965240431501435 + ], + [ + 7.098913238434874, + 50.96522454912655 + ], + [ + 7.098912907229804, + 50.965224149815626 + ], + [ + 7.098891468179199, + 50.965198345350316 + ], + [ + 7.098868250465046, + 50.96517009534819 + ], + [ + 7.0988377964830365, + 50.96513301724563 + ], + [ + 7.098830269222745, + 50.965124025225464 + ], + [ + 7.098823162215767, + 50.96511558865532 + ], + [ + 7.098776422250578, + 50.96506006395833 + ], + [ + 7.098717701386783, + 50.96499035735248 + ], + [ + 7.0987136264867265, + 50.96498593361473 + ], + [ + 7.098686498763123, + 50.9649565514714 + ], + [ + 7.098645854822494, + 50.964912429105496 + ], + [ + 7.098311287331178, + 50.96455011654859 + ], + [ + 7.098284245727557, + 50.964521183589625 + ], + [ + 7.098237175974299, + 50.96447017166592 + ], + [ + 7.098175878103859, + 50.96440372614102 + ], + [ + 7.098114398113136, + 50.9643373153889 + ], + [ + 7.097991385297217, + 50.96420510268634 + ], + [ + 7.097908695779996, + 50.96411483712491 + ], + [ + 7.097868266203483, + 50.96407128995776 + ], + [ + 7.097750283936123, + 50.96394189118528 + ], + [ + 7.097712644023307, + 50.96390107758861 + ], + [ + 7.097643346727614, + 50.963827971209945 + ], + [ + 7.097640755791957, + 50.96382431987546 + ], + [ + 7.097638191639428, + 50.96382053587228 + ], + [ + 7.097601820033861, + 50.96382464063713 + ], + [ + 7.0975375410135575, + 50.96383186564265 + ], + [ + 7.09753659811362, + 50.963831972592565 + ], + [ + 7.0974710732112545, + 50.96383943447862 + ], + [ + 7.097415534333251, + 50.9638455085494 + ], + [ + 7.097326409352608, + 50.96385495831475 + ], + [ + 7.097281392792316, + 50.963860495987035 + ], + [ + 7.097148730581294, + 50.96387528163992 + ], + [ + 7.09702289532891, + 50.96388976470045 + ], + [ + 7.097015706605224, + 50.96389062334516 + ], + [ + 7.096882310907948, + 50.96390606766294 + ], + [ + 7.096754707338955, + 50.9639198372026 + ], + [ + 7.096699697748604, + 50.96392595373657 + ], + [ + 7.096615589265905, + 50.96393597488078 + ], + [ + 7.096494755292273, + 50.96389036376741 + ], + [ + 7.096324522591657, + 50.963825037268016 + ], + [ + 7.096131587296543, + 50.963753449555796 + ], + [ + 7.096036495218085, + 50.963717543554544 + ], + [ + 7.09576508185699, + 50.96361221411659 + ], + [ + 7.095254546890615, + 50.96341399568648 + ], + [ + 7.095018842911746, + 50.96332302336709 + ], + [ + 7.094980991380732, + 50.96330837403841 + ], + [ + 7.094967532581234, + 50.96330316481782 + ], + [ + 7.094954076815045, + 50.96329795114839 + ], + [ + 7.094834770331715, + 50.96325166891057 + ], + [ + 7.094756772202684, + 50.96320102328044 + ], + [ + 7.094750787324911, + 50.963196756200844 + ], + [ + 7.094745025611947, + 50.96319256920777 + ], + [ + 7.094738424374795, + 50.96318819044287 + ], + [ + 7.0945327453281495, + 50.963051863163074 + ], + [ + 7.094410770668106, + 50.962971067241995 + ], + [ + 7.094400858104305, + 50.96296450203836 + ], + [ + 7.094348678978036, + 50.96292994071565 + ], + [ + 7.094331807584264, + 50.962918619447045 + ], + [ + 7.094275759514018, + 50.96288105674383 + ], + [ + 7.09425799517088, + 50.962869110226066 + ], + [ + 7.094257365740096, + 50.962868691644275 + ], + [ + 7.094161276395786, + 50.962805244755955 + ], + [ + 7.094040960050563, + 50.962726274221865 + ], + [ + 7.093811516554753, + 50.96257480465061 + ], + [ + 7.093687659766722, + 50.962493776670875 + ], + [ + 7.093506751611671, + 50.96237562596686 + ], + [ + 7.0933977352952535, + 50.962306945346455 + ], + [ + 7.09319603487967, + 50.96217832785952 + ], + [ + 7.093098608136328, + 50.9621157189191 + ], + [ + 7.093005361746297, + 50.962056441041995 + ], + [ + 7.092921149256563, + 50.96200295860967 + ], + [ + 7.092916864412961, + 50.962000238216355 + ], + [ + 7.092912463005298, + 50.96199744307099 + ], + [ + 7.092903844834874, + 50.96199196911475 + ], + [ + 7.092804282584501, + 50.96192873686265 + ], + [ + 7.092171648002146, + 50.96167945657714 + ], + [ + 7.0920575161951795, + 50.96163453578817 + ], + [ + 7.0920756572076975, + 50.96160459038452 + ], + [ + 7.092082283025258, + 50.96159525358731 + ], + [ + 7.0920899593279225, + 50.96158568573173 + ], + [ + 7.092116145195572, + 50.96155309545494 + ], + [ + 7.09220512770984, + 50.96144248030509 + ], + [ + 7.092284498838645, + 50.961343781942844 + ], + [ + 7.092232243784032, + 50.961326033714144 + ], + [ + 7.0919020360341545, + 50.96121358286477 + ], + [ + 7.091780427579017, + 50.961171827667634 + ], + [ + 7.091679062487086, + 50.96111061910123 + ], + [ + 7.0916036024626, + 50.961064859433996 + ], + [ + 7.091564979736109, + 50.961041263940444 + ], + [ + 7.0915070077035836, + 50.96100575583684 + ], + [ + 7.091461910494949, + 50.96097807661817 + ], + [ + 7.091522318219261, + 50.96091384070234 + ], + [ + 7.0918050692044075, + 50.96061258192137 + ], + [ + 7.0918734255189015, + 50.960539682695334 + ], + [ + 7.091889066388802, + 50.96052306273004 + ], + [ + 7.091891432199542, + 50.96052054991105 + ], + [ + 7.091883933920502, + 50.960519068443624 + ], + [ + 7.091819534138952, + 50.96049923199979 + ], + [ + 7.091778248698609, + 50.96049596893011 + ], + [ + 7.0917739363102585, + 50.96049562864559 + ], + [ + 7.09170939692697, + 50.96049053034973 + ], + [ + 7.0915963916765135, + 50.96044878064671 + ], + [ + 7.091583436506105, + 50.96044399476214 + ], + [ + 7.091570481301564, + 50.96043920977494 + ], + [ + 7.0915434627702725, + 50.96042922776486 + ], + [ + 7.091382534459708, + 50.96036977131016 + ], + [ + 7.091044073679028, + 50.96024458933799 + ], + [ + 7.090603993671969, + 50.96008147978725 + ], + [ + 7.0904390424362, + 50.96002062157924 + ], + [ + 7.090323352938707, + 50.9599770837707 + ], + [ + 7.089950985860534, + 50.95984064076007 + ], + [ + 7.089713260577753, + 50.95976560876033 + ], + [ + 7.0895935091069715, + 50.95972798360149 + ], + [ + 7.089578402340278, + 50.95972428019122 + ], + [ + 7.089448796917989, + 50.959699527166265 + ], + [ + 7.088952345171002, + 50.959607077886204 + ], + [ + 7.0888837917851335, + 50.9595944422426 + ], + [ + 7.088768550985532, + 50.959573204436346 + ], + [ + 7.0887122117694235, + 50.95956285783326 + ], + [ + 7.088637300446911, + 50.95954913946629 + ], + [ + 7.088507517731386, + 50.95952532951285 + ], + [ + 7.088414279769422, + 50.95950836827115 + ], + [ + 7.088404425744103, + 50.95950679854578 + ], + [ + 7.08839460460814, + 50.95950512143491 + ], + [ + 7.088292506070894, + 50.95948764629251 + ], + [ + 7.088175131022955, + 50.95946755651002 + ], + [ + 7.0880533177776, + 50.95944159396541 + ], + [ + 7.087824668568976, + 50.95939448341937 + ], + [ + 7.087811410706152, + 50.959391779567454 + ], + [ + 7.0877992126170275, + 50.959389380865055 + ], + [ + 7.087690020200294, + 50.959372455440445 + ], + [ + 7.087615158822639, + 50.95936096854221 + ], + [ + 7.0874302319809654, + 50.959332113531865 + ], + [ + 7.087333718599868, + 50.959317115932265 + ], + [ + 7.087340917398526, + 50.95930365532758 + ], + [ + 7.087378896002526, + 50.959232583214515 + ], + [ + 7.087396288508386, + 50.95920007387249 + ], + [ + 7.087456160057672, + 50.959088151701486 + ], + [ + 7.0874819062240535, + 50.95904009704914 + ], + [ + 7.087589723164551, + 50.95883824534735 + ], + [ + 7.087589852203085, + 50.958837981250454 + ], + [ + 7.087635372004244, + 50.95875292431784 + ], + [ + 7.08763556570302, + 50.958752576740146 + ], + [ + 7.0876313628316305, + 50.95875057967626 + ], + [ + 7.087627802649056, + 50.95874888363171 + ], + [ + 7.087520204044791, + 50.95869779589046 + ], + [ + 7.0868640761937, + 50.958386777759074 + ], + [ + 7.08677060712301, + 50.95834282341468 + ], + [ + 7.086754880647861, + 50.95833557229832 + ], + [ + 7.086752459178422, + 50.958334444394495 + ], + [ + 7.0867521226900285, + 50.958334801322664 + ], + [ + 7.086703311936382, + 50.95838624259222 + ], + [ + 7.086633223705285, + 50.958408459425236 + ], + [ + 7.0866120286367495, + 50.95841518645796 + ], + [ + 7.086605524952905, + 50.95841058218178 + ], + [ + 7.086517061290682, + 50.95834635625089 + ], + [ + 7.086396071362213, + 50.95826038487645 + ], + [ + 7.086216821182628, + 50.95813540474622 + ], + [ + 7.08606725825485, + 50.95799915724103 + ], + [ + 7.085988423700018, + 50.95792845236225 + ], + [ + 7.085985027976184, + 50.95792684620053 + ], + [ + 7.08594017160686, + 50.95791632583456 + ], + [ + 7.085931341226892, + 50.95791421687409 + ], + [ + 7.085924116597551, + 50.957912536250454 + ], + [ + 7.083197952939055, + 50.95727462246323 + ], + [ + 7.0830097367747715, + 50.95722935510931 + ], + [ + 7.082953154065601, + 50.95721509398134 + ], + [ + 7.081723514597811, + 50.95690517282367 + ], + [ + 7.081515630593245, + 50.95685219885595 + ], + [ + 7.081499552672817, + 50.956847807509256 + ], + [ + 7.081493051844211, + 50.95684595143529 + ], + [ + 7.08148554732029, + 50.95684353745376 + ], + [ + 7.081414338427265, + 50.956818771740956 + ], + [ + 7.081026690655475, + 50.95668632976115 + ], + [ + 7.080476724493418, + 50.9564869920067 + ], + [ + 7.080461541231934, + 50.95648197397978 + ], + [ + 7.0804549670783, + 50.956479238865974 + ], + [ + 7.080395739350123, + 50.95653306496105 + ], + [ + 7.080369189451369, + 50.95656057338506 + ], + [ + 7.080044190070984, + 50.956891025631336 + ], + [ + 7.079803817787958, + 50.95715065552589 + ], + [ + 7.0797256656222585, + 50.95723047904741 + ], + [ + 7.079699186918748, + 50.95725399622998 + ], + [ + 7.079666179435199, + 50.957283311228764 + ], + [ + 7.079639294485568, + 50.9573123626766 + ], + [ + 7.079564446794037, + 50.95728240153744 + ], + [ + 7.0784458250121, + 50.95685622070572 + ], + [ + 7.078402602711882, + 50.95683981012199 + ], + [ + 7.078124339572862, + 50.95673354392095 + ], + [ + 7.0771975806309335, + 50.956379628408904 + ], + [ + 7.076918868546858, + 50.956278918046756 + ], + [ + 7.076585708208915, + 50.956150605336894 + ], + [ + 7.076285914330441, + 50.95605031330381 + ], + [ + 7.076285526713115, + 50.95605018280551 + ], + [ + 7.076285154142161, + 50.95605003276919 + ], + [ + 7.076144720230083, + 50.95599327334481 + ], + [ + 7.0760861464570075, + 50.95596986912613 + ], + [ + 7.076081294959196, + 50.95596790772 + ], + [ + 7.076326687337235, + 50.95552746967676 + ], + [ + 7.076329449785613, + 50.95552084912577 + ], + [ + 7.076320094197021, + 50.95543304594382 + ], + [ + 7.076312282858141, + 50.95537073901061 + ], + [ + 7.076297804486179, + 50.9553429845082 + ], + [ + 7.0762960658601495, + 50.955339640816966 + ], + [ + 7.076295169374995, + 50.95533790287029 + ], + [ + 7.0762836827594935, + 50.955315628001436 + ], + [ + 7.076261110759612, + 50.95528956584385 + ], + [ + 7.07624322650512, + 50.95526908411125 + ], + [ + 7.0762385481143575, + 50.95526372597798 + ], + [ + 7.076234325376961, + 50.95525891946574 + ], + [ + 7.076231273403747, + 50.955255415632166 + ], + [ + 7.07622763912425, + 50.95525184104738 + ], + [ + 7.076168549240817, + 50.95519892931098 + ], + [ + 7.0760798581180975, + 50.955154800391284 + ], + [ + 7.076018213277251, + 50.95513403461413 + ], + [ + 7.076015863767466, + 50.95513324313214 + ], + [ + 7.076011119548104, + 50.955131651328855 + ], + [ + 7.076005038047583, + 50.955130099544675 + ], + [ + 7.075741918641649, + 50.955078000099284 + ], + [ + 7.075529242874726, + 50.955037211777906 + ], + [ + 7.075399272088069, + 50.955012279606315 + ], + [ + 7.075398779084809, + 50.95501218424163 + ], + [ + 7.0753982761581256, + 50.95501208781402 + ], + [ + 7.0752329930309426, + 50.95498039205417 + ], + [ + 7.074551302788297, + 50.95484634615379 + ], + [ + 7.07446509267518, + 50.95482901920546 + ], + [ + 7.074459621960948, + 50.954827918999676 + ], + [ + 7.073938038756655, + 50.9547230842012 + ], + [ + 7.073693471640343, + 50.95467742159857 + ], + [ + 7.073540885023933, + 50.95458929470664 + ], + [ + 7.072929151399896, + 50.95424271417964 + ], + [ + 7.0715585743739435, + 50.95392196851685 + ], + [ + 7.07137930201343, + 50.95388003349303 + ], + [ + 7.0713712504951065, + 50.95387816472509 + ], + [ + 7.071036271757088, + 50.95452249988625 + ], + [ + 7.070464074220857, + 50.95561995796493 + ], + [ + 7.070327926817674, + 50.95588770079229 + ], + [ + 7.069935232338751, + 50.95665990343278 + ], + [ + 7.0698262937401095, + 50.95687407348213 + ], + [ + 7.069718364332185, + 50.95708623564967 + ], + [ + 7.069650623583421, + 50.95721970248811 + ], + [ + 7.069643367911845, + 50.95723400739177 + ], + [ + 7.069641301006037, + 50.9572385941397 + ], + [ + 7.06962209984394, + 50.957289688693216 + ], + [ + 7.069604975386583, + 50.95733561567054 + ], + [ + 7.069423263666263, + 50.95782677176893 + ], + [ + 7.069148811292302, + 50.958593828988484 + ], + [ + 7.068915405937312, + 50.95921479401596 + ], + [ + 7.068644768879457, + 50.95995035449138 + ], + [ + 7.068632710744601, + 50.95998309324554 + ], + [ + 7.068630541291313, + 50.959988979654554 + ], + [ + 7.068628371837446, + 50.95999486606351 + ], + [ + 7.068624006038492, + 50.96000663483904 + ], + [ + 7.068500414616421, + 50.9603312735219 + ], + [ + 7.068467624162841, + 50.96037786031672 + ], + [ + 7.0684656699380914, + 50.960380479305805 + ], + [ + 7.068461344768463, + 50.96038505205772 + ], + [ + 7.068406907691832, + 50.960421147635316 + ], + [ + 7.068363183916413, + 50.96044422949173 + ], + [ + 7.068358387972778, + 50.960446761894936 + ], + [ + 7.068190733919217, + 50.9603487646909 + ], + [ + 7.06818504319801, + 50.96034471694491 + ], + [ + 7.068182315332674, + 50.96034257270265 + ], + [ + 7.068112891272916, + 50.96029311935253 + ], + [ + 7.0680797785719545, + 50.960276235473906 + ], + [ + 7.067970951591641, + 50.9602351029984 + ], + [ + 7.067963826570227, + 50.960232435411214 + ], + [ + 7.067913625356738, + 50.96021369303847 + ], + [ + 7.067690819041023, + 50.960130556360646 + ], + [ + 7.067578029734264, + 50.960088596180704 + ], + [ + 7.067459628758038, + 50.96004449966045 + ], + [ + 7.065150759304834, + 50.95918350322923 + ], + [ + 7.064932063228484, + 50.959087154745646 + ], + [ + 7.064841426141532, + 50.95901381963418 + ], + [ + 7.0647989204176005, + 50.958955932809175 + ], + [ + 7.0647178712477405, + 50.95886492755901 + ], + [ + 7.064156907292384, + 50.95823616923202 + ], + [ + 7.064148398745615, + 50.958226716165775 + ], + [ + 7.064125815196441, + 50.958261733426646 + ], + [ + 7.0640806305219845, + 50.958296937148575 + ], + [ + 7.064050750378452, + 50.95832050954519 + ], + [ + 7.063982942417007, + 50.95837400347669 + ], + [ + 7.063938383132674, + 50.95840919592927 + ], + [ + 7.063932119074088, + 50.95841432994499 + ], + [ + 7.0639218339247964, + 50.958422402051994 + ], + [ + 7.063490672176202, + 50.95897943692316 + ], + [ + 7.063195683935574, + 50.95936072290183 + ], + [ + 7.062932674280024, + 50.95970066887602 + ], + [ + 7.062713868040471, + 50.9599834773463 + ], + [ + 7.0627030945564995, + 50.960016077639146 + ], + [ + 7.062411761498761, + 50.960897658210634 + ], + [ + 7.062052955167077, + 50.96165423103681 + ], + [ + 7.061917724051359, + 50.961875624478694 + ], + [ + 7.061885344957558, + 50.961928634130544 + ], + [ + 7.061862847557372, + 50.9619654645976 + ], + [ + 7.061803214863436, + 50.96206309155836 + ], + [ + 7.061754562203083, + 50.96210182887406 + ], + [ + 7.061712417507949, + 50.96212630420106 + ], + [ + 7.06169896921287, + 50.96212860276437 + ], + [ + 7.061688864494552, + 50.96213042890604 + ], + [ + 7.061679417857262, + 50.962132046527124 + ], + [ + 7.06166109301544, + 50.962135310989375 + ], + [ + 7.0615938096629405, + 50.962137271629075 + ], + [ + 7.061539614033381, + 50.962126437543695 + ], + [ + 7.0613039409399345, + 50.96203500149882 + ], + [ + 7.060905904242189, + 50.96180202156853 + ], + [ + 7.060726445661513, + 50.96168417549192 + ], + [ + 7.060535536573252, + 50.96155881003258 + ], + [ + 7.060348377868556, + 50.96136274654474 + ], + [ + 7.060218376168386, + 50.96122447830307 + ], + [ + 7.060213996875086, + 50.961219799015815 + ], + [ + 7.060209568897254, + 50.961215126114446 + ], + [ + 7.059902248660762, + 50.960890722234666 + ], + [ + 7.059090173240832, + 50.95999385605192 + ], + [ + 7.059000730068286, + 50.95996014863688 + ], + [ + 7.058478729392718, + 50.959814042712715 + ], + [ + 7.058464078964862, + 50.95981335301542 + ], + [ + 7.058451396496557, + 50.95981259711081 + ], + [ + 7.058424711965837, + 50.959810936544045 + ], + [ + 7.058423670445354, + 50.959816721911686 + ], + [ + 7.0584222021063106, + 50.9598245471309 + ], + [ + 7.058420389975883, + 50.95983429936326 + ], + [ + 7.0583843802736945, + 50.960024949093494 + ], + [ + 7.0583316785898935, + 50.960304576657975 + ], + [ + 7.058331099504224, + 50.96030763835082 + ], + [ + 7.058022346916716, + 50.96041956813904 + ], + [ + 7.057973549820983, + 50.96046149602945 + ], + [ + 7.056435732487264, + 50.961782792433766 + ], + [ + 7.056408143414028, + 50.961807282407115 + ], + [ + 7.056603981672358, + 50.96187053410977 + ], + [ + 7.056903594352744, + 50.96196994009041 + ], + [ + 7.057123820299688, + 50.962059585632375 + ], + [ + 7.057261338392542, + 50.962115563042964 + ], + [ + 7.057325777901152, + 50.962141902786605 + ], + [ + 7.0574858585186915, + 50.9622240076607 + ], + [ + 7.057955116998445, + 50.96246597331303 + ], + [ + 7.058162894520166, + 50.962582838560536 + ], + [ + 7.058212061352485, + 50.962610439234986 + ], + [ + 7.058268379555021, + 50.962641336260845 + ], + [ + 7.058308537432879, + 50.96266336841934 + ], + [ + 7.058811847597308, + 50.96293949248537 + ], + [ + 7.059420800280908, + 50.96334886945157 + ], + [ + 7.059556630761484, + 50.96345025002524 + ], + [ + 7.059828505809309, + 50.96365300794531 + ], + [ + 7.059933239683234, + 50.96373128208067 + ], + [ + 7.0600153157235415, + 50.9637926233172 + ], + [ + 7.06016276480835, + 50.96387902037231 + ], + [ + 7.060199124596587, + 50.96390044465175 + ], + [ + 7.060432292325226, + 50.96403783999787 + ], + [ + 7.060983316106227, + 50.964343234327785 + ], + [ + 7.0609850672230134, + 50.964370096760284 + ], + [ + 7.060988083956554, + 50.964421218904285 + ], + [ + 7.061017905234108, + 50.964455556198224 + ], + [ + 7.061063676255461, + 50.964477613145995 + ], + [ + 7.061147735851731, + 50.96448700700021 + ], + [ + 7.0611753775418356, + 50.96448171996345 + ], + [ + 7.061216066272619, + 50.964473937083646 + ], + [ + 7.061240004019461, + 50.96446935838362 + ], + [ + 7.061539543904894, + 50.96472669603114 + ], + [ + 7.06157069861263, + 50.96474448098292 + ], + [ + 7.061664793025939, + 50.964813112911315 + ], + [ + 7.061696267987193, + 50.96483251300213 + ], + [ + 7.0617925564959325, + 50.96489743900386 + ], + [ + 7.061811915267933, + 50.96490364486669 + ], + [ + 7.061830201067855, + 50.964912737853474 + ], + [ + 7.061872364829125, + 50.964951368290464 + ], + [ + 7.061960275512606, + 50.965023471394225 + ], + [ + 7.062180171770069, + 50.965165209841516 + ], + [ + 7.0622025692505765, + 50.96517974918678 + ], + [ + 7.06218553101831, + 50.965194197062615 + ], + [ + 7.062312102318492, + 50.9652729600211 + ], + [ + 7.06241514285014, + 50.96533742015318 + ], + [ + 7.062612436682523, + 50.9654616993306 + ], + [ + 7.062595400423539, + 50.96547623723438 + ], + [ + 7.063031556270209, + 50.96574338327239 + ], + [ + 7.0630143736141555, + 50.96575774343256 + ], + [ + 7.063498003752018, + 50.966015286694855 + ], + [ + 7.063472301809984, + 50.96603682553266 + ], + [ + 7.063480682202259, + 50.966042232976704 + ], + [ + 7.06356515335936, + 50.96609441000445 + ], + [ + 7.063944507876352, + 50.966317483478214 + ], + [ + 7.06392232583002, + 50.9663340776309 + ], + [ + 7.064063992151662, + 50.96641430216723 + ], + [ + 7.0642019481465255, + 50.966491115796146 + ], + [ + 7.06421755017298, + 50.96649980056574 + ], + [ + 7.064393256622225, + 50.966597618417325 + ], + [ + 7.064849581684874, + 50.96685202951942 + ], + [ + 7.065326399541723, + 50.96711793221323 + ], + [ + 7.065375665863663, + 50.96714636965194 + ], + [ + 7.065411076717669, + 50.967163395760394 + ], + [ + 7.065496526282333, + 50.96721522872287 + ], + [ + 7.065552841679483, + 50.96724938858435 + ], + [ + 7.0655398198878, + 50.967271351089224 + ], + [ + 7.065514848312363, + 50.96731346995121 + ], + [ + 7.065505416610318, + 50.96732937717623 + ], + [ + 7.065437573503785, + 50.96744407105878 + ], + [ + 7.065433596174658, + 50.967450669425986 + ], + [ + 7.065315614253684, + 50.96743979120834 + ], + [ + 7.06503656602225, + 50.96741402070727 + ], + [ + 7.064592933905887, + 50.967373052035526 + ], + [ + 7.064377467461406, + 50.967353153480424 + ], + [ + 7.064306850624689, + 50.96734669551094 + ], + [ + 7.064297242284334, + 50.9673880462277 + ], + [ + 7.0642369602884045, + 50.96764747659477 + ], + [ + 7.064234529914542, + 50.96765793724061 + ], + [ + 7.0641238460485605, + 50.96764869782763 + ], + [ + 7.0634581719898595, + 50.96760550396749 + ], + [ + 7.063382934015266, + 50.967425764479984 + ], + [ + 7.063227937239307, + 50.96705547647562 + ], + [ + 7.062842417043012, + 50.96705731226196 + ], + [ + 7.062814427300313, + 50.967057445082865 + ], + [ + 7.062124835371312, + 50.967094826125425 + ], + [ + 7.062210186230817, + 50.9672853422558 + ], + [ + 7.062200001137144, + 50.96745668228258 + ], + [ + 7.062002975107472, + 50.96746296987796 + ], + [ + 7.062003329941127, + 50.967487532821124 + ], + [ + 7.062003416787, + 50.96749406902002 + ], + [ + 7.062004762363759, + 50.967622423879874 + ], + [ + 7.0618708533969015, + 50.96762467111796 + ], + [ + 7.061771805292292, + 50.96762634118988 + ], + [ + 7.061513984154553, + 50.96764486728851 + ], + [ + 7.061389537212746, + 50.96765633751639 + ], + [ + 7.061370169548171, + 50.96767241581422 + ], + [ + 7.061354551814691, + 50.967685387019486 + ], + [ + 7.061341949722579, + 50.9676958514073 + ], + [ + 7.061326665543245, + 50.96770854214999 + ], + [ + 7.061320796754456, + 50.967713415479366 + ], + [ + 7.061317360633851, + 50.96778751884664 + ], + [ + 7.061234443305637, + 50.96811566444202 + ], + [ + 7.06103292028281, + 50.968880421126286 + ], + [ + 7.061028654018602, + 50.96889930791354 + ], + [ + 7.06089771907338, + 50.968901157357365 + ], + [ + 7.060892025263553, + 50.96890120939886 + ], + [ + 7.06090633966277, + 50.96892337263226 + ], + [ + 7.061030187893452, + 50.968921882162505 + ], + [ + 7.061119688176293, + 50.96892080423431 + ], + [ + 7.06119260873933, + 50.96892189181521 + ], + [ + 7.061370621366008, + 50.96892454520975 + ], + [ + 7.061484746521692, + 50.96892854081711 + ], + [ + 7.0614785817492525, + 50.96902028840463 + ], + [ + 7.061475943481808, + 50.96907937218896 + ], + [ + 7.0612692976846745, + 50.96907621747576 + ], + [ + 7.060918957554183, + 50.96951439665804 + ], + [ + 7.060833172495989, + 50.969620036478716 + ], + [ + 7.060768080452057, + 50.96970019474993 + ], + [ + 7.06076149089158, + 50.96970830996899 + ], + [ + 7.06067307469652, + 50.96981718864342 + ], + [ + 7.060509688995728, + 50.97001838706492 + ], + [ + 7.060441747716161, + 50.970102051205494 + ], + [ + 7.060448983137613, + 50.97012335943034 + ], + [ + 7.0604500350283805, + 50.97012645361598 + ], + [ + 7.060483715796211, + 50.97022563247013 + ], + [ + 7.060678683472224, + 50.970276016990304 + ], + [ + 7.060732047312113, + 50.970289807284615 + ], + [ + 7.0605393064147135, + 50.970603488724066 + ], + [ + 7.060467153931713, + 50.970711457407305 + ], + [ + 7.060451607460625, + 50.97073472106213 + ], + [ + 7.060400324181936, + 50.97072093192585 + ], + [ + 7.0601841620336465, + 50.97066280841355 + ], + [ + 7.059941612605208, + 50.97059753236053 + ], + [ + 7.059850817483276, + 50.970711830013535 + ], + [ + 7.0598154354895835, + 50.970757219253585 + ], + [ + 7.0593024296076345, + 50.970626386566124 + ], + [ + 7.059199379754312, + 50.970600105094555 + ], + [ + 7.058700785137946, + 50.97137564420925 + ], + [ + 7.058673394521706, + 50.97141077115102 + ], + [ + 7.058454073107191, + 50.97175219685579 + ], + [ + 7.0583620593754555, + 50.971913221879625 + ], + [ + 7.058508875216372, + 50.97195198280755 + ], + [ + 7.058504476285932, + 50.97195885453262 + ], + [ + 7.05838065207532, + 50.972154775586255 + ], + [ + 7.05819544492115, + 50.972243472053 + ], + [ + 7.058154183659699, + 50.97238875396293 + ], + [ + 7.057908876478239, + 50.97266461299817 + ], + [ + 7.057673040214455, + 50.97293139622098 + ], + [ + 7.057637502310204, + 50.972971450802945 + ], + [ + 7.0575175173407905, + 50.972954379833745 + ], + [ + 7.0574924639684085, + 50.97296089893974 + ], + [ + 7.057447251910961, + 50.973038886758715 + ], + [ + 7.057399724646692, + 50.97311527745219 + ], + [ + 7.057387236378458, + 50.97311080582776 + ], + [ + 7.057314022317413, + 50.97322851029003 + ], + [ + 7.057312369148087, + 50.973230952431535 + ], + [ + 7.057329740517902, + 50.97323726714955 + ], + [ + 7.057586886301364, + 50.973328561631384 + ], + [ + 7.057669505322248, + 50.973357926717554 + ], + [ + 7.057727726222352, + 50.97337861720807 + ], + [ + 7.057731788409786, + 50.97338006079671 + ], + [ + 7.057585971520022, + 50.97354792388096 + ], + [ + 7.057450908084161, + 50.97370340430251 + ], + [ + 7.057413495752435, + 50.97374647286946 + ], + [ + 7.057336381772294, + 50.97378939897015 + ], + [ + 7.057139181067545, + 50.973899169534 + ], + [ + 7.05700406146693, + 50.97397437516965 + ], + [ + 7.056792818501404, + 50.97420857279023 + ], + [ + 7.056754071168249, + 50.97425162252991 + ], + [ + 7.056599240335287, + 50.974374289909164 + ], + [ + 7.0563751463708115, + 50.974607074957916 + ], + [ + 7.056354568564087, + 50.97475432653212 + ], + [ + 7.056014641771708, + 50.97463254079951 + ], + [ + 7.055824670890779, + 50.974844519560634 + ], + [ + 7.056187047792791, + 50.97498929486937 + ], + [ + 7.055968634913466, + 50.97512754927749 + ], + [ + 7.055945895955705, + 50.97514195800624 + ], + [ + 7.05586070412369, + 50.9752340606082 + ], + [ + 7.055786804689457, + 50.97529675500077 + ], + [ + 7.0555333330860925, + 50.975609449468585 + ], + [ + 7.055418154562943, + 50.97557228645546 + ], + [ + 7.0554464090970415, + 50.975537332046464 + ], + [ + 7.055334140606349, + 50.975496636153274 + ], + [ + 7.055076249596829, + 50.97579049178318 + ], + [ + 7.0544372205479124, + 50.97554546425433 + ], + [ + 7.054376399128808, + 50.97560102877879 + ], + [ + 7.053955090216349, + 50.97598591292578 + ], + [ + 7.053933348746485, + 50.97600577452569 + ], + [ + 7.053849587271866, + 50.976082988114754 + ], + [ + 7.05381732098814, + 50.97611273183782 + ], + [ + 7.053813398995012, + 50.976116347556406 + ], + [ + 7.053752672590978, + 50.976169842115176 + ], + [ + 7.053587244175102, + 50.97632190709318 + ], + [ + 7.053532148748052, + 50.9763721947427 + ], + [ + 7.0534642001113745, + 50.97643421522222 + ], + [ + 7.053271268956213, + 50.97661061937847 + ], + [ + 7.053184447092246, + 50.97657897770828 + ], + [ + 7.053149232844552, + 50.97656614492703 + ], + [ + 7.052965301366475, + 50.97678795266153 + ], + [ + 7.052952089790169, + 50.97680191529717 + ], + [ + 7.052944851870501, + 50.97680926200729 + ], + [ + 7.052937898966435, + 50.976816606274355 + ], + [ + 7.052911743343173, + 50.976843720278595 + ], + [ + 7.052593248952568, + 50.97719762567732 + ], + [ + 7.05244573096378, + 50.9776068011002 + ], + [ + 7.052438698502137, + 50.97762322485619 + ], + [ + 7.052366386098013, + 50.97790184770624 + ], + [ + 7.052358277421296, + 50.97793309295888 + ], + [ + 7.052636136121474, + 50.977979309748875 + ], + [ + 7.053390848625677, + 50.97817988006167 + ], + [ + 7.0538943485935235, + 50.978313684377156 + ], + [ + 7.054014734249055, + 50.978316463133886 + ], + [ + 7.053993655233934, + 50.97839834039109 + ], + [ + 7.053983460278755, + 50.97843793751792 + ], + [ + 7.053981325621181, + 50.97844623002247 + ], + [ + 7.0539754066, + 50.978469219765614 + ], + [ + 7.053963167019523, + 50.978516761043906 + ], + [ + 7.053958672349084, + 50.97854251667245 + ], + [ + 7.053940952620079, + 50.97864714705907 + ], + [ + 7.054072382035361, + 50.97888957079311 + ], + [ + 7.0540765174143205, + 50.9788971772432 + ], + [ + 7.054076728681931, + 50.97890507175159 + ], + [ + 7.0540767325846305, + 50.97890913512677 + ], + [ + 7.054081092441055, + 50.979039413573624 + ], + [ + 7.054093042558163, + 50.97911528668376 + ], + [ + 7.054103195260783, + 50.97917908740563 + ], + [ + 7.0541057122413795, + 50.9792137133492 + ], + [ + 7.054108535791362, + 50.97926138242754 + ], + [ + 7.054108195926987, + 50.97929928929837 + ], + [ + 7.05410618820776, + 50.979386624199975 + ], + [ + 7.053841575174239, + 50.97978582227097 + ], + [ + 7.053423653873258, + 50.98041711820891 + ], + [ + 7.053398884264389, + 50.98044889432105 + ], + [ + 7.053046464485228, + 50.9809027109892 + ], + [ + 7.052866995056909, + 50.981133824847625 + ], + [ + 7.052666067998219, + 50.98141088957294 + ], + [ + 7.052510035859605, + 50.981626781718454 + ], + [ + 7.052081645519806, + 50.982273739611195 + ], + [ + 7.052040054671683, + 50.98233632033446 + ], + [ + 7.051577886634818, + 50.983014143780366 + ], + [ + 7.051493662809552, + 50.98313751662605 + ], + [ + 7.050471025657322, + 50.9846505987894 + ], + [ + 7.050402478853516, + 50.984752752246145 + ], + [ + 7.050360973034734, + 50.98481520068729 + ], + [ + 7.050341143692586, + 50.98484318688659 + ], + [ + 7.050335840058111, + 50.984850643972564 + ], + [ + 7.0503140736507515, + 50.98488119697822 + ], + [ + 7.05017806933674, + 50.98507334182326 + ], + [ + 7.050056986117904, + 50.98523835823838 + ], + [ + 7.050054803122168, + 50.985241353530476 + ], + [ + 7.049532833537011, + 50.98595281551198 + ], + [ + 7.049412013420339, + 50.98613533719993 + ], + [ + 7.049408865911229, + 50.98613985697346 + ], + [ + 7.049406969602756, + 50.98614263939688 + ], + [ + 7.049303656532458, + 50.98629880715372 + ], + [ + 7.0493539581066225, + 50.98636298568295 + ], + [ + 7.049390004633124, + 50.98640876171788 + ], + [ + 7.04940246576389, + 50.98642458454046 + ], + [ + 7.049425652488369, + 50.98645412457144 + ], + [ + 7.049739609885269, + 50.98660296164464 + ], + [ + 7.04976577050555, + 50.986615372597946 + ], + [ + 7.049908060853015, + 50.98668287495327 + ], + [ + 7.051136922979772, + 50.98726556207071 + ], + [ + 7.056027193301252, + 50.98967527658086 + ], + [ + 7.056214807377776, + 50.989767472767184 + ], + [ + 7.056849626923219, + 50.99008138613493 + ], + [ + 7.056972734237054, + 50.9901427264053 + ], + [ + 7.057455809155664, + 50.99038207215014 + ], + [ + 7.058220604306422, + 50.99076132150259 + ], + [ + 7.058457168521625, + 50.990879543195824 + ], + [ + 7.059143710753217, + 50.991224258640955 + ], + [ + 7.059187852342969, + 50.991248196549115 + ], + [ + 7.059226204008165, + 50.991268994795405 + ], + [ + 7.060118020568272, + 50.99175189507112 + ], + [ + 7.0602900114304905, + 50.991848766148905 + ], + [ + 7.060944522556036, + 50.99221794273518 + ], + [ + 7.061171506493409, + 50.99230271632444 + ], + [ + 7.061881374331241, + 50.99259169526388 + ], + [ + 7.0619164006353525, + 50.992605929672266 + ], + [ + 7.06192640730064, + 50.99261007089126 + ], + [ + 7.061940808500104, + 50.99261599921065 + ], + [ + 7.0619529720525165, + 50.99262036148767 + ], + [ + 7.062096699009575, + 50.9926672682743 + ], + [ + 7.062355164314156, + 50.9927519323552 + ], + [ + 7.062415296088159, + 50.992771610543656 + ], + [ + 7.062683810991781, + 50.992859689095724 + ], + [ + 7.065690472321578, + 50.993558613986465 + ], + [ + 7.065939930516916, + 50.99356685989277 + ], + [ + 7.066751146160416, + 50.99359396839754 + ], + [ + 7.066751678478901, + 50.99359398440399 + ], + [ + 7.0667524952833025, + 50.99359401321383 + ], + [ + 7.066756221400666, + 50.99359412795517 + ], + [ + 7.066756988510627, + 50.99359415234494 + ], + [ + 7.06675770813933, + 50.993594187640404 + ], + [ + 7.0667611942356965, + 50.99359469412552 + ], + [ + 7.066765937723702, + 50.99359450373749 + ], + [ + 7.0667686884234895, + 50.993594222803566 + ], + [ + 7.066778289734909, + 50.99359599428174 + ], + [ + 7.066783478601131, + 50.99359695164996 + ], + [ + 7.066952928694162, + 50.993628231870474 + ], + [ + 7.067316829848648, + 50.99369539090487 + ], + [ + 7.06744375400837, + 50.99363763812803 + ], + [ + 7.06746253550958, + 50.99362909204348 + ], + [ + 7.067466207507777, + 50.99362742244192 + ], + [ + 7.067466749268884, + 50.99362717688852 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Dellbrueck", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "905", + "Population_rel": 0.020132531892209846, + "Population_abs": 21905 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.940271995979546, + 50.93680490123209 + ], + [ + 6.940414641591331, + 50.93672758290306 + ], + [ + 6.940501249271409, + 50.93673792843808 + ], + [ + 6.940580111220356, + 50.93674727025732 + ], + [ + 6.940757519272683, + 50.93676849366057 + ], + [ + 6.9409173635917, + 50.93678554865036 + ], + [ + 6.940925199304856, + 50.936767699287195 + ], + [ + 6.94091546374824, + 50.93674291695674 + ], + [ + 6.940880300720542, + 50.936691274041515 + ], + [ + 6.940822749575809, + 50.93660673893329 + ], + [ + 6.940814044895602, + 50.936593934718886 + ], + [ + 6.9406922178310975, + 50.936409725240686 + ], + [ + 6.940639026446214, + 50.93640277452636 + ], + [ + 6.940692920680007, + 50.93639124101178 + ], + [ + 6.9408228341878395, + 50.93635386114824 + ], + [ + 6.940870587646841, + 50.93633727624209 + ], + [ + 6.940932613204533, + 50.9364074192488 + ], + [ + 6.940962777409324, + 50.936414081478894 + ], + [ + 6.941014222294402, + 50.9364268337123 + ], + [ + 6.941035599887498, + 50.93643198647733 + ], + [ + 6.941061001269338, + 50.936439106100494 + ], + [ + 6.941079182643194, + 50.9364459841524 + ], + [ + 6.941083357392627, + 50.93647955695211 + ], + [ + 6.941106853240154, + 50.9365370621374 + ], + [ + 6.941251768874208, + 50.93653555100742 + ], + [ + 6.941370237058954, + 50.93652920321104 + ], + [ + 6.941390221074855, + 50.93646607567262 + ], + [ + 6.941402763119424, + 50.93641520673516 + ], + [ + 6.941529660940286, + 50.9363896653929 + ], + [ + 6.941522209360785, + 50.93636295554757 + ], + [ + 6.941529380716891, + 50.936342287467745 + ], + [ + 6.941608155028322, + 50.936333202374385 + ], + [ + 6.941757330128794, + 50.936316091353646 + ], + [ + 6.94196739396937, + 50.93629200869362 + ], + [ + 6.942029067057313, + 50.93632626597477 + ], + [ + 6.942145793445055, + 50.936312415547356 + ], + [ + 6.942149759669449, + 50.93629602233721 + ], + [ + 6.942154002739135, + 50.93627848460112 + ], + [ + 6.942160159702939, + 50.93625302829646 + ], + [ + 6.942182125416427, + 50.93620543545599 + ], + [ + 6.942336345265738, + 50.93618146672618 + ], + [ + 6.9424382993821965, + 50.93616288210632 + ], + [ + 6.942432508491435, + 50.93613517000517 + ], + [ + 6.942426909985366, + 50.93610842003245 + ], + [ + 6.942506534945717, + 50.93608395376293 + ], + [ + 6.942597265922562, + 50.93605607667235 + ], + [ + 6.942633459456144, + 50.93604490752565 + ], + [ + 6.942701525634852, + 50.93606215655184 + ], + [ + 6.942738052382078, + 50.93609251666419 + ], + [ + 6.942715403685222, + 50.93616043342306 + ], + [ + 6.9428665592818755, + 50.936178598049516 + ], + [ + 6.942903833722113, + 50.93618205737555 + ], + [ + 6.942899706206558, + 50.93621094733344 + ], + [ + 6.9429151749672995, + 50.93623952607281 + ], + [ + 6.943071699971161, + 50.936247979124914 + ], + [ + 6.943090549474537, + 50.93620379471655 + ], + [ + 6.9433027031114944, + 50.93619903006093 + ], + [ + 6.943324780250248, + 50.93619949367842 + ], + [ + 6.943556531394815, + 50.93620509831395 + ], + [ + 6.943812500827216, + 50.936211287371506 + ], + [ + 6.9440507970264, + 50.936217884104735 + ], + [ + 6.9440743923967, + 50.93607970722574 + ], + [ + 6.94408110180957, + 50.936037991695216 + ], + [ + 6.944202211259549, + 50.93604516923604 + ], + [ + 6.944546406978826, + 50.93606622121416 + ], + [ + 6.944629028023411, + 50.936065193698425 + ], + [ + 6.944682680930834, + 50.936064555466764 + ], + [ + 6.944684344886556, + 50.93610109143871 + ], + [ + 6.944686507280125, + 50.93612600182546 + ], + [ + 6.944691538428416, + 50.93616193514002 + ], + [ + 6.9446949769888295, + 50.936201222077045 + ], + [ + 6.94477769373121, + 50.93620771314527 + ], + [ + 6.945432515943224, + 50.93620179671587 + ], + [ + 6.9454380061228145, + 50.936217127017635 + ], + [ + 6.945442393300886, + 50.93625925467289 + ], + [ + 6.945447314843565, + 50.93631195942926 + ], + [ + 6.945464037628774, + 50.936415774009966 + ], + [ + 6.945652233644533, + 50.93640594532246 + ], + [ + 6.945857328161727, + 50.93639772138878 + ], + [ + 6.945988942363968, + 50.93639287105674 + ], + [ + 6.946246736423484, + 50.93638901383334 + ], + [ + 6.94623817352535, + 50.936418019228675 + ], + [ + 6.946190391768313, + 50.93644733652315 + ], + [ + 6.946113481147422, + 50.93645868795539 + ], + [ + 6.946062785710553, + 50.93646617009029 + ], + [ + 6.94581638530363, + 50.93651698159045 + ], + [ + 6.94580357888181, + 50.936555905274105 + ], + [ + 6.9457685635240765, + 50.936662680267126 + ], + [ + 6.945773674547647, + 50.936740966658434 + ], + [ + 6.945778943839774, + 50.93675572554706 + ], + [ + 6.945900493701147, + 50.936750697302664 + ], + [ + 6.946000801353056, + 50.93674643917505 + ], + [ + 6.946023215621751, + 50.93674520209148 + ], + [ + 6.946092641817069, + 50.93674065233732 + ], + [ + 6.946131310058324, + 50.936738112014865 + ], + [ + 6.946157366254804, + 50.93673640115486 + ], + [ + 6.946184183409805, + 50.936734638022685 + ], + [ + 6.946339704310822, + 50.936724419502056 + ], + [ + 6.946398947080187, + 50.93672052863291 + ], + [ + 6.946492601939768, + 50.936714490095824 + ], + [ + 6.946566369898192, + 50.936710250275866 + ], + [ + 6.946621124232152, + 50.93670627404373 + ], + [ + 6.946701334888825, + 50.93670043864819 + ], + [ + 6.9468105025542535, + 50.936692503417966 + ], + [ + 6.9468395238187375, + 50.93669039936499 + ], + [ + 6.946819621215548, + 50.936887966478466 + ], + [ + 6.946930544753874, + 50.93689187984609 + ], + [ + 6.947057212860508, + 50.93688734603202 + ], + [ + 6.947059150436593, + 50.93680768440825 + ], + [ + 6.9470613437687625, + 50.936691615055864 + ], + [ + 6.947505713665206, + 50.93663225364041 + ], + [ + 6.94753103604178, + 50.93663088122859 + ], + [ + 6.94766361539074, + 50.93662451972947 + ], + [ + 6.947788846862788, + 50.936622208313 + ], + [ + 6.947810293716906, + 50.93662176601781 + ], + [ + 6.947852712925332, + 50.93662108712603 + ], + [ + 6.948029299412171, + 50.93661651423204 + ], + [ + 6.948111677971936, + 50.93661503299127 + ], + [ + 6.948135165978411, + 50.93661452488489 + ], + [ + 6.948160299871197, + 50.93661329472286 + ], + [ + 6.948223168392204, + 50.936610292288044 + ], + [ + 6.94829411067965, + 50.93660744161634 + ], + [ + 6.948490926722244, + 50.93660359501785 + ], + [ + 6.948615264382012, + 50.936600600567715 + ], + [ + 6.948687517402222, + 50.93659801192525 + ], + [ + 6.948711107174359, + 50.936591213442675 + ], + [ + 6.94871470227027, + 50.93648608356417 + ], + [ + 6.94926362698855, + 50.93639219983911 + ], + [ + 6.949357538960302, + 50.936378287671936 + ], + [ + 6.949348512811393, + 50.9362937386765 + ], + [ + 6.949559295367465, + 50.93630715635906 + ], + [ + 6.949605640001792, + 50.936310001192176 + ], + [ + 6.949662272381679, + 50.93631346739839 + ], + [ + 6.949753917429379, + 50.936319145819155 + ], + [ + 6.949756766316863, + 50.93627276187174 + ], + [ + 6.949762604923958, + 50.93619911812391 + ], + [ + 6.949828273296335, + 50.936196583112725 + ], + [ + 6.9498281849523345, + 50.93614552477451 + ], + [ + 6.949827963526491, + 50.93609817133456 + ], + [ + 6.949817777297301, + 50.93604906897249 + ], + [ + 6.949765779706996, + 50.93605132873839 + ], + [ + 6.9497601828122, + 50.93600733000044 + ], + [ + 6.9497534233480245, + 50.9359135923287 + ], + [ + 6.949900865504084, + 50.93591089258808 + ], + [ + 6.949900171609131, + 50.93577441867985 + ], + [ + 6.949873159670967, + 50.93577360432221 + ], + [ + 6.9498862294119395, + 50.93562616318505 + ], + [ + 6.9498902441302475, + 50.93559278042825 + ], + [ + 6.950075356894699, + 50.93558722818083 + ], + [ + 6.950203608677603, + 50.9355838466032 + ], + [ + 6.950319264327225, + 50.93568551500539 + ], + [ + 6.950376141149033, + 50.935686513671094 + ], + [ + 6.950384774952717, + 50.9358249500187 + ], + [ + 6.950469992547226, + 50.935823414440144 + ], + [ + 6.950460184881689, + 50.93568069084138 + ], + [ + 6.950722556771947, + 50.93567306558305 + ], + [ + 6.950718464746948, + 50.93574110993125 + ], + [ + 6.951570154971505, + 50.93573883353692 + ], + [ + 6.952047276125676, + 50.93574115492428 + ], + [ + 6.952055799133491, + 50.9356840122885 + ], + [ + 6.952072575110984, + 50.93565679013844 + ], + [ + 6.952167415142177, + 50.93564865431644 + ], + [ + 6.952273103440311, + 50.935611564381595 + ], + [ + 6.952435590931598, + 50.93561967686619 + ], + [ + 6.952704789062863, + 50.93561064334354 + ], + [ + 6.952680784620471, + 50.935471404297395 + ], + [ + 6.952924712419911, + 50.93539113075439 + ], + [ + 6.953389429883349, + 50.93535808957383 + ], + [ + 6.953558329763101, + 50.935346080524134 + ], + [ + 6.953618937812278, + 50.93534177104024 + ], + [ + 6.9537192653119515, + 50.935301668246574 + ], + [ + 6.9541906664785955, + 50.935208640138576 + ], + [ + 6.9545104799451645, + 50.93518130399186 + ], + [ + 6.954564680054744, + 50.935174298720995 + ], + [ + 6.954887171199166, + 50.935165854019445 + ], + [ + 6.955202152674198, + 50.93517178384015 + ], + [ + 6.955457136979391, + 50.935183714913535 + ], + [ + 6.9561149219906415, + 50.935244489234464 + ], + [ + 6.956200081177346, + 50.93524873504885 + ], + [ + 6.9570497707479335, + 50.93533678727936 + ], + [ + 6.95704666122781, + 50.93538688213371 + ], + [ + 6.9570383831472284, + 50.93551657674958 + ], + [ + 6.957281466790284, + 50.93552833691767 + ], + [ + 6.957865857062656, + 50.93554799524563 + ], + [ + 6.957864895924353, + 50.93545470582999 + ], + [ + 6.9578614489240245, + 50.93544053520058 + ], + [ + 6.9578572048661185, + 50.935420841942395 + ], + [ + 6.957852615117697, + 50.93539510241964 + ], + [ + 6.958255900674077, + 50.93540060091255 + ], + [ + 6.9589259180325485, + 50.93534870147924 + ], + [ + 6.959091640017311, + 50.93537045263214 + ], + [ + 6.9590784393497245, + 50.935486218984266 + ], + [ + 6.959120106587819, + 50.93548880468214 + ], + [ + 6.9591940183311785, + 50.93548975690858 + ], + [ + 6.9592203803137975, + 50.935477621107225 + ], + [ + 6.959232062423768, + 50.935463461387975 + ], + [ + 6.9592358262992295, + 50.93544072528482 + ], + [ + 6.959344018662953, + 50.93546440588288 + ], + [ + 6.959418201944478, + 50.93548012418799 + ], + [ + 6.959435661808084, + 50.935447779315574 + ], + [ + 6.959455595514235, + 50.935410424984525 + ], + [ + 6.9595458313831235, + 50.93539407862054 + ], + [ + 6.959732151776402, + 50.93540247611045 + ], + [ + 6.959733012864196, + 50.93546981581759 + ], + [ + 6.95972803688017, + 50.935504835125364 + ], + [ + 6.959918273903609, + 50.9355268121086 + ], + [ + 6.959978199830504, + 50.935528387314456 + ], + [ + 6.960041376730986, + 50.935526708695114 + ], + [ + 6.960053271888383, + 50.93549157825042 + ], + [ + 6.9600644387173665, + 50.93543146207936 + ], + [ + 6.960067084882928, + 50.93541763633255 + ], + [ + 6.960139866253637, + 50.93521350937991 + ], + [ + 6.960052587955664, + 50.935209643124516 + ], + [ + 6.959946962875108, + 50.93519543981328 + ], + [ + 6.959937169350548, + 50.935172148377305 + ], + [ + 6.959725261978324, + 50.93516253413459 + ], + [ + 6.9597290690129485, + 50.93513051450222 + ], + [ + 6.959739254091847, + 50.935040613619435 + ], + [ + 6.959756843353611, + 50.93488909182038 + ], + [ + 6.959973700928628, + 50.93489858206895 + ], + [ + 6.960033332441454, + 50.934900361661086 + ], + [ + 6.960122259853932, + 50.93490442133827 + ], + [ + 6.960174799464227, + 50.93490612549537 + ], + [ + 6.960148806982149, + 50.934811972405555 + ], + [ + 6.960066344948896, + 50.93468630495283 + ], + [ + 6.960165345610705, + 50.93462071300397 + ], + [ + 6.960303974847376, + 50.934525917226416 + ], + [ + 6.960321013376376, + 50.93451436655041 + ], + [ + 6.960330996535473, + 50.934497352992956 + ], + [ + 6.960341514449695, + 50.93446457370636 + ], + [ + 6.960396847620097, + 50.93447021098703 + ], + [ + 6.960394680494431, + 50.93445487831751 + ], + [ + 6.960455621477457, + 50.93445472533131 + ], + [ + 6.960590718476048, + 50.93452573059781 + ], + [ + 6.960622121976186, + 50.93454040664824 + ], + [ + 6.960642647259647, + 50.93454746918802 + ], + [ + 6.960783477900336, + 50.93455815875186 + ], + [ + 6.960822398313055, + 50.934561407269136 + ], + [ + 6.9608935754915455, + 50.93454242453562 + ], + [ + 6.960928187217213, + 50.93453422872957 + ], + [ + 6.961614353495875, + 50.93456668326206 + ], + [ + 6.961877385266517, + 50.934571798549 + ], + [ + 6.961933566177517, + 50.9345728981543 + ], + [ + 6.9619293936382896, + 50.9346014317819 + ], + [ + 6.962073086819922, + 50.93460141501677 + ], + [ + 6.962202178062496, + 50.93460133923512 + ], + [ + 6.962201610214444, + 50.934635195353174 + ], + [ + 6.962201225300496, + 50.93466551831521 + ], + [ + 6.962330910589375, + 50.93467070871777 + ], + [ + 6.962382671918025, + 50.934671685989855 + ], + [ + 6.962403435983122, + 50.93467417275961 + ], + [ + 6.962402319324187, + 50.934692553616074 + ], + [ + 6.962535091611527, + 50.934705499037655 + ], + [ + 6.96256521078053, + 50.934705843959954 + ], + [ + 6.962682027073738, + 50.934707215448924 + ], + [ + 6.963302218550345, + 50.934723960253855 + ], + [ + 6.9633971141204904, + 50.93473175864307 + ], + [ + 6.963432348130394, + 50.934734656869836 + ], + [ + 6.963470506287801, + 50.93473780036599 + ], + [ + 6.963527609620579, + 50.934742485819775 + ], + [ + 6.963551580227137, + 50.934744294433074 + ], + [ + 6.963825257079631, + 50.93474705388605 + ], + [ + 6.966066650249063, + 50.93476825467863 + ], + [ + 6.966092712040699, + 50.93468039271776 + ], + [ + 6.966292686179945, + 50.934012717236705 + ], + [ + 6.966415849098428, + 50.93361669819708 + ], + [ + 6.966500074209904, + 50.933345880139456 + ], + [ + 6.96650694476819, + 50.9333238805623 + ], + [ + 6.966512101657668, + 50.933307395788006 + ], + [ + 6.966527690176628, + 50.93325791473659 + ], + [ + 6.966545974581681, + 50.93319978187607 + ], + [ + 6.966720403280587, + 50.93264540293276 + ], + [ + 6.966988529819804, + 50.931814723967584 + ], + [ + 6.967005645502932, + 50.931762084752144 + ], + [ + 6.967085511897863, + 50.931532014826786 + ], + [ + 6.967116124960906, + 50.93144429483522 + ], + [ + 6.967313341099572, + 50.93087821966544 + ], + [ + 6.967369200203139, + 50.93071837481734 + ], + [ + 6.967406504771846, + 50.93061046423885 + ], + [ + 6.967618474644385, + 50.93000165701855 + ], + [ + 6.967715991277385, + 50.92973134734225 + ], + [ + 6.9677478835020885, + 50.929643707005766 + ], + [ + 6.967887380851243, + 50.92925789619811 + ], + [ + 6.967908226926579, + 50.929200010963235 + ], + [ + 6.96793667040397, + 50.92912444492628 + ], + [ + 6.968264568103515, + 50.928249218431674 + ], + [ + 6.968501929775032, + 50.92764054839181 + ], + [ + 6.96858165342871, + 50.92743610804385 + ], + [ + 6.96860320736432, + 50.92738097809762 + ], + [ + 6.968685900328224, + 50.927168529133816 + ], + [ + 6.968946403774617, + 50.92650115471366 + ], + [ + 6.96930568976394, + 50.925632406317234 + ], + [ + 6.969495147038553, + 50.92518801741985 + ], + [ + 6.969532172233665, + 50.92510123213412 + ], + [ + 6.969674025017136, + 50.924768526021175 + ], + [ + 6.96981817115473, + 50.92442986796799 + ], + [ + 6.969846511580185, + 50.9243632907286 + ], + [ + 6.969632003471946, + 50.92432723604037 + ], + [ + 6.967801386597304, + 50.924019526381656 + ], + [ + 6.967843504539679, + 50.92392123459486 + ], + [ + 6.967976121356958, + 50.92361995487994 + ], + [ + 6.968144596435977, + 50.92322929490271 + ], + [ + 6.968051588872618, + 50.9232122254357 + ], + [ + 6.968028809797247, + 50.9232080227242 + ], + [ + 6.9680084271734275, + 50.92320427274266 + ], + [ + 6.967948212149652, + 50.92319346172413 + ], + [ + 6.967701825945062, + 50.92314955631196 + ], + [ + 6.967592093162339, + 50.92307881900225 + ], + [ + 6.9675026053189715, + 50.92302113242635 + ], + [ + 6.967281768240511, + 50.92298179194985 + ], + [ + 6.9671464642718695, + 50.92327395299733 + ], + [ + 6.967057676407206, + 50.92326343534352 + ], + [ + 6.966880717238329, + 50.92324347003883 + ], + [ + 6.966818399151682, + 50.92323644775714 + ], + [ + 6.966682739473572, + 50.92322116149122 + ], + [ + 6.966519286719033, + 50.92320274310886 + ], + [ + 6.96640450615852, + 50.9231797258588 + ], + [ + 6.966367200444123, + 50.92322570054434 + ], + [ + 6.9661696858539, + 50.92316566939452 + ], + [ + 6.965113564967127, + 50.922844860022344 + ], + [ + 6.965075631847742, + 50.922894884956264 + ], + [ + 6.96490627342312, + 50.922848281863 + ], + [ + 6.96416126435793, + 50.922626290785416 + ], + [ + 6.964150603404122, + 50.9226403123166 + ], + [ + 6.96407221860666, + 50.92261875678138 + ], + [ + 6.9639848220505405, + 50.92259466784257 + ], + [ + 6.964068157677339, + 50.922484219921046 + ], + [ + 6.964134049936267, + 50.92239692797548 + ], + [ + 6.964022120322641, + 50.92236252429087 + ], + [ + 6.963985545800744, + 50.922326958967936 + ], + [ + 6.963876833783396, + 50.92222115386909 + ], + [ + 6.963755278049389, + 50.92222332610188 + ], + [ + 6.9636615229201135, + 50.92222502088584 + ], + [ + 6.963654362153337, + 50.92205426141907 + ], + [ + 6.963726008547015, + 50.922025173517966 + ], + [ + 6.963584081649264, + 50.921982472756945 + ], + [ + 6.963462917169394, + 50.92194601871266 + ], + [ + 6.963190058689661, + 50.92186392458487 + ], + [ + 6.963235144673212, + 50.92192602824727 + ], + [ + 6.963140714869764, + 50.922022634823776 + ], + [ + 6.963067876564089, + 50.92199411077472 + ], + [ + 6.9630119340181755, + 50.92198477388043 + ], + [ + 6.9630003870704265, + 50.92201102758141 + ], + [ + 6.962836956461902, + 50.92198262218831 + ], + [ + 6.962817969421746, + 50.922027365849345 + ], + [ + 6.962673728242283, + 50.92199844163368 + ], + [ + 6.962641527071128, + 50.922071340800805 + ], + [ + 6.962515485343913, + 50.92202150153019 + ], + [ + 6.9624811523637335, + 50.92210475665857 + ], + [ + 6.962472283373174, + 50.922119571993406 + ], + [ + 6.962296156777605, + 50.922089292060825 + ], + [ + 6.962197815434088, + 50.92207230465746 + ], + [ + 6.96228269933113, + 50.921878243717885 + ], + [ + 6.9621018463946225, + 50.921853216085886 + ], + [ + 6.961906443402921, + 50.92182606160724 + ], + [ + 6.961959939512048, + 50.92166857646773 + ], + [ + 6.961993302604191, + 50.92165877298137 + ], + [ + 6.961898803505998, + 50.921640920649644 + ], + [ + 6.96155284353946, + 50.92158284751747 + ], + [ + 6.961547186202191, + 50.92159817575737 + ], + [ + 6.96148775774551, + 50.921757686839 + ], + [ + 6.961280567585524, + 50.92172442552365 + ], + [ + 6.961232851478424, + 50.92183134303228 + ], + [ + 6.961069243248613, + 50.92179421617124 + ], + [ + 6.96080591910152, + 50.921756112401944 + ], + [ + 6.9606297502703685, + 50.92173059500681 + ], + [ + 6.960595762271431, + 50.921820498440866 + ], + [ + 6.96043816425255, + 50.92179204138622 + ], + [ + 6.960399908376772, + 50.92178516449766 + ], + [ + 6.960228865027035, + 50.92175987366415 + ], + [ + 6.960270298137695, + 50.92165166047515 + ], + [ + 6.960094405954688, + 50.92161885853628 + ], + [ + 6.960138028586377, + 50.92151332423237 + ], + [ + 6.960104093186084, + 50.92150910846468 + ], + [ + 6.960074149257706, + 50.92150531050505 + ], + [ + 6.960059965135494, + 50.92148645896087 + ], + [ + 6.960016916496813, + 50.92144717001182 + ], + [ + 6.959912337425037, + 50.921346246846966 + ], + [ + 6.959578823430963, + 50.92133419792264 + ], + [ + 6.959516291150971, + 50.92132977886886 + ], + [ + 6.9593508276832035, + 50.92132607853426 + ], + [ + 6.959284790639209, + 50.92132374489941 + ], + [ + 6.959240297643597, + 50.92133175212428 + ], + [ + 6.9591218324005855, + 50.92131807343156 + ], + [ + 6.9590393170019595, + 50.92135214709011 + ], + [ + 6.9590587814026605, + 50.9213814267524 + ], + [ + 6.9589825051631164, + 50.92145789556355 + ], + [ + 6.958970773725401, + 50.92146916739848 + ], + [ + 6.958906435737862, + 50.921528755817725 + ], + [ + 6.958803517228147, + 50.921572570749724 + ], + [ + 6.958852529257705, + 50.921618373408876 + ], + [ + 6.958471131192189, + 50.92179311328225 + ], + [ + 6.9579090178108, + 50.9220187772333 + ], + [ + 6.956894201233605, + 50.92243135492285 + ], + [ + 6.956868617026353, + 50.92245970341083 + ], + [ + 6.9568157717835595, + 50.922518295688924 + ], + [ + 6.956632908631957, + 50.92260321664343 + ], + [ + 6.956450601945629, + 50.922687503101244 + ], + [ + 6.956324579321042, + 50.92272853880206 + ], + [ + 6.956425779870123, + 50.9228225464755 + ], + [ + 6.956423527123655, + 50.922837487090966 + ], + [ + 6.956166959053582, + 50.9229555522996 + ], + [ + 6.956042920574948, + 50.922836740733274 + ], + [ + 6.955889176705454, + 50.92291306153352 + ], + [ + 6.955927117826014, + 50.92294682851785 + ], + [ + 6.955769256106038, + 50.92301628403943 + ], + [ + 6.955857613361414, + 50.92309436861148 + ], + [ + 6.955555087275162, + 50.92322757451473 + ], + [ + 6.95545882630199, + 50.92314152667289 + ], + [ + 6.955315237371212, + 50.92321321022425 + ], + [ + 6.955281207810523, + 50.92318285905154 + ], + [ + 6.954645592525461, + 50.923462963331666 + ], + [ + 6.9547174885101395, + 50.92353590726445 + ], + [ + 6.954448614197639, + 50.92365074377069 + ], + [ + 6.954379056372859, + 50.923587758102855 + ], + [ + 6.954301468262058, + 50.9236257884214 + ], + [ + 6.954230405506987, + 50.923663046269034 + ], + [ + 6.954254364781277, + 50.92368703082547 + ], + [ + 6.954337803168326, + 50.92376806214483 + ], + [ + 6.953383675078809, + 50.92418883225078 + ], + [ + 6.953195309138575, + 50.92427819235166 + ], + [ + 6.953180326841847, + 50.92429332250356 + ], + [ + 6.953175742777806, + 50.92431080879304 + ], + [ + 6.953165039534613, + 50.92432736214818 + ], + [ + 6.953143499232836, + 50.92434406722928 + ], + [ + 6.953125262677804, + 50.92435199743846 + ], + [ + 6.953105991969681, + 50.92435927095045 + ], + [ + 6.953078770849207, + 50.92436437603808 + ], + [ + 6.953057943483614, + 50.92436480764795 + ], + [ + 6.95303464691156, + 50.92436275054009 + ], + [ + 6.953004945268291, + 50.924356970094045 + ], + [ + 6.952972213913653, + 50.92433521389816 + ], + [ + 6.952754023505788, + 50.92413275750672 + ], + [ + 6.952625150355731, + 50.92418990289235 + ], + [ + 6.952578680097748, + 50.92421050829312 + ], + [ + 6.952315960598479, + 50.92432771702051 + ], + [ + 6.952167230680097, + 50.924395958157284 + ], + [ + 6.952117880621635, + 50.92441612521981 + ], + [ + 6.952073758267514, + 50.924432800855165 + ], + [ + 6.952026855835212, + 50.92445529704538 + ], + [ + 6.951875273685294, + 50.924522656743385 + ], + [ + 6.951740465230879, + 50.924583574239826 + ], + [ + 6.951062329887688, + 50.924890965573866 + ], + [ + 6.950985184217121, + 50.9249230574768 + ], + [ + 6.950967836439061, + 50.924930210600216 + ], + [ + 6.950947385928112, + 50.92493873656872 + ], + [ + 6.950755437784021, + 50.92501850815219 + ], + [ + 6.950406377806208, + 50.92516374318078 + ], + [ + 6.949869877931648, + 50.92538691171085 + ], + [ + 6.94982474528678, + 50.92540561754508 + ], + [ + 6.949400878249293, + 50.925579414824035 + ], + [ + 6.94889545573664, + 50.925785516821996 + ], + [ + 6.948746601254412, + 50.92584452831502 + ], + [ + 6.947515114209056, + 50.92633276744661 + ], + [ + 6.947436932317123, + 50.926364882873656 + ], + [ + 6.947428037896338, + 50.92638030911878 + ], + [ + 6.947356941437882, + 50.92640653763451 + ], + [ + 6.947262807882457, + 50.926319846795394 + ], + [ + 6.947220350702386, + 50.92628074698981 + ], + [ + 6.946626527448016, + 50.92640047845027 + ], + [ + 6.946462947434565, + 50.92647704561768 + ], + [ + 6.946481381426549, + 50.92649369186549 + ], + [ + 6.9464948229932615, + 50.92650582263454 + ], + [ + 6.94661392439452, + 50.926613357549456 + ], + [ + 6.946469291476268, + 50.926673484605985 + ], + [ + 6.946533384008413, + 50.92673069297265 + ], + [ + 6.946431892440943, + 50.92677592342978 + ], + [ + 6.946463473587291, + 50.92681113033421 + ], + [ + 6.946507584957621, + 50.92685728906523 + ], + [ + 6.946447512806458, + 50.926886724797576 + ], + [ + 6.9464149541627185, + 50.92690146212805 + ], + [ + 6.946311606775134, + 50.926944778330224 + ], + [ + 6.946268158821601, + 50.92692908059357 + ], + [ + 6.946181807839574, + 50.92697014868097 + ], + [ + 6.946207917738057, + 50.92699435980438 + ], + [ + 6.946239750333691, + 50.92702208115932 + ], + [ + 6.946097335409211, + 50.927090386171905 + ], + [ + 6.945998401665686, + 50.92713541483399 + ], + [ + 6.945923711096648, + 50.92707866992979 + ], + [ + 6.945903476382895, + 50.92709087908136 + ], + [ + 6.94574624660752, + 50.927186182259106 + ], + [ + 6.945657432635601, + 50.927232387942375 + ], + [ + 6.94556522722494, + 50.92725892739162 + ], + [ + 6.9454869190403805, + 50.927150814321415 + ], + [ + 6.945344480232378, + 50.92719066162921 + ], + [ + 6.945267546690659, + 50.92723607063505 + ], + [ + 6.945170229432315, + 50.927293507916254 + ], + [ + 6.945042791842587, + 50.92737103852916 + ], + [ + 6.944970746327045, + 50.92741656937019 + ], + [ + 6.945004787643057, + 50.92746097027165 + ], + [ + 6.945016008324617, + 50.927474183637095 + ], + [ + 6.945034967625439, + 50.92749731219536 + ], + [ + 6.9449053974330095, + 50.92755382618564 + ], + [ + 6.944867978780336, + 50.92755898906693 + ], + [ + 6.94478606343282, + 50.92750490160973 + ], + [ + 6.944699883989342, + 50.92755845502142 + ], + [ + 6.9446836635723, + 50.92756865618039 + ], + [ + 6.944725891693096, + 50.927596111303416 + ], + [ + 6.944721432902693, + 50.92764260177552 + ], + [ + 6.9447247610845295, + 50.92768050987172 + ], + [ + 6.944616621804126, + 50.92767859854737 + ], + [ + 6.944516078315079, + 50.92775939922672 + ], + [ + 6.9445495106492885, + 50.927764090916554 + ], + [ + 6.944643561706214, + 50.92777267855671 + ], + [ + 6.9448744318301, + 50.92779383537852 + ], + [ + 6.944421934147772, + 50.9280981205985 + ], + [ + 6.944334573962624, + 50.92815685766162 + ], + [ + 6.944250664227869, + 50.927959156839755 + ], + [ + 6.944129577088216, + 50.92797963823197 + ], + [ + 6.944079417994871, + 50.92794705254741 + ], + [ + 6.943983598970589, + 50.92800571950827 + ], + [ + 6.943945763783989, + 50.92804090414903 + ], + [ + 6.944007306646618, + 50.9280806785824 + ], + [ + 6.943911619219427, + 50.928124252613905 + ], + [ + 6.94387848694231, + 50.92813934158939 + ], + [ + 6.943921412912653, + 50.92816723739828 + ], + [ + 6.943876142598586, + 50.928283460068926 + ], + [ + 6.943942212071182, + 50.92839933703475 + ], + [ + 6.9439054524950174, + 50.92842435513371 + ], + [ + 6.943785350264378, + 50.92850614085323 + ], + [ + 6.943659357819066, + 50.9285921091284 + ], + [ + 6.943552865256417, + 50.92866470527122 + ], + [ + 6.943439636380473, + 50.928741760476825 + ], + [ + 6.943521353571961, + 50.928801417931105 + ], + [ + 6.94340627110509, + 50.928864285112105 + ], + [ + 6.943383953112473, + 50.92887274718592 + ], + [ + 6.943318904492391, + 50.92882523265726 + ], + [ + 6.943279366398929, + 50.92879634495015 + ], + [ + 6.943256167157494, + 50.92877939568737 + ], + [ + 6.9432101393942744, + 50.92874577259431 + ], + [ + 6.94324540888161, + 50.9287173512854 + ], + [ + 6.9431605599862545, + 50.92867156174818 + ], + [ + 6.943121283167363, + 50.928696236652534 + ], + [ + 6.942970522149721, + 50.9287909477046 + ], + [ + 6.9427924627653175, + 50.92889783173208 + ], + [ + 6.942995192884703, + 50.92900496446057 + ], + [ + 6.942923387571723, + 50.92905588107356 + ], + [ + 6.942773346247691, + 50.92916227221111 + ], + [ + 6.942522899850057, + 50.929308619251394 + ], + [ + 6.942402808735765, + 50.929352512893125 + ], + [ + 6.94244957117487, + 50.92938593519927 + ], + [ + 6.942299476262738, + 50.929478659614865 + ], + [ + 6.942265826085895, + 50.92945689142121 + ], + [ + 6.942203175606704, + 50.92941715141528 + ], + [ + 6.9421679957751, + 50.92943854983786 + ], + [ + 6.942044772669815, + 50.92935865662843 + ], + [ + 6.942023586168403, + 50.92937178009187 + ], + [ + 6.941948250957747, + 50.92941847964222 + ], + [ + 6.941933338096662, + 50.92940190285942 + ], + [ + 6.941901832379839, + 50.92936689572459 + ], + [ + 6.941827058617646, + 50.92947653110228 + ], + [ + 6.941811204807926, + 50.929499770343746 + ], + [ + 6.941785980305107, + 50.929504811789165 + ], + [ + 6.941735268589348, + 50.929514945792874 + ], + [ + 6.941745254583222, + 50.929541286632464 + ], + [ + 6.9417573708519695, + 50.929573917522006 + ], + [ + 6.9417854304097695, + 50.929660258086784 + ], + [ + 6.941774194503812, + 50.92970961039614 + ], + [ + 6.941772308037612, + 50.929739831367996 + ], + [ + 6.941770971994119, + 50.92976132457094 + ], + [ + 6.9417691396998205, + 50.92983963633221 + ], + [ + 6.9418239346514, + 50.9298972634256 + ], + [ + 6.941840811108136, + 50.929915011658714 + ], + [ + 6.9418563411990135, + 50.92993134301099 + ], + [ + 6.941759230144878, + 50.93013061149871 + ], + [ + 6.941869841704956, + 50.93014895572629 + ], + [ + 6.94182771932668, + 50.93026076319639 + ], + [ + 6.941673319316215, + 50.930377342504016 + ], + [ + 6.9414614769920835, + 50.93054472547418 + ], + [ + 6.941447468506947, + 50.93058340178351 + ], + [ + 6.9415417378564, + 50.930672894040086 + ], + [ + 6.941344750287357, + 50.930758713196724 + ], + [ + 6.941280487469692, + 50.930908275383125 + ], + [ + 6.94126950577643, + 50.93093506219103 + ], + [ + 6.941445677182495, + 50.93096658686529 + ], + [ + 6.941738078383476, + 50.931040951251255 + ], + [ + 6.941689157052237, + 50.931062650455914 + ], + [ + 6.941678234325665, + 50.931085302093614 + ], + [ + 6.941633126606096, + 50.93118311016511 + ], + [ + 6.94159725781813, + 50.93126655076242 + ], + [ + 6.941594127574743, + 50.93128761119693 + ], + [ + 6.941407311691608, + 50.931257385709124 + ], + [ + 6.941156737316054, + 50.931218505773316 + ], + [ + 6.941124216953129, + 50.93128708008408 + ], + [ + 6.941073356561893, + 50.931414696246414 + ], + [ + 6.941066571752214, + 50.931529544265985 + ], + [ + 6.94131818767317, + 50.931577585845645 + ], + [ + 6.941222649588874, + 50.931650360496604 + ], + [ + 6.9411543058574745, + 50.931725073514016 + ], + [ + 6.941121970977092, + 50.93180039553977 + ], + [ + 6.941270696300639, + 50.93182517487766 + ], + [ + 6.941166272186566, + 50.932057042295526 + ], + [ + 6.941248340982784, + 50.93207058371867 + ], + [ + 6.941220425673917, + 50.932146409122176 + ], + [ + 6.941056718136914, + 50.93211941291131 + ], + [ + 6.940737094053873, + 50.9328814077652 + ], + [ + 6.940700127663045, + 50.93287532337731 + ], + [ + 6.9406347617653585, + 50.933047995970696 + ], + [ + 6.940439396839896, + 50.933017388814996 + ], + [ + 6.940410756136069, + 50.93309960211019 + ], + [ + 6.94019074486508, + 50.933067216004595 + ], + [ + 6.940143517836511, + 50.93318014244719 + ], + [ + 6.9404236267521835, + 50.933226706454136 + ], + [ + 6.940483453772931, + 50.93323385621013 + ], + [ + 6.940254151623207, + 50.933721037886826 + ], + [ + 6.940270325485936, + 50.933764429630926 + ], + [ + 6.940294608819926, + 50.933829572052176 + ], + [ + 6.940228924024349, + 50.93408530815795 + ], + [ + 6.9402086560458525, + 50.93408196548032 + ], + [ + 6.940165102763282, + 50.934186682455625 + ], + [ + 6.940362081291869, + 50.93421943474722 + ], + [ + 6.940342944421516, + 50.93427217665852 + ], + [ + 6.940323400767511, + 50.934325909700036 + ], + [ + 6.940209936920078, + 50.93430767743054 + ], + [ + 6.940148851759396, + 50.93446710006946 + ], + [ + 6.939886354483733, + 50.934423279091725 + ], + [ + 6.939855892880359, + 50.93454236344104 + ], + [ + 6.939584027338191, + 50.93452082135932 + ], + [ + 6.939551196309178, + 50.93459992147397 + ], + [ + 6.939502852196976, + 50.93471402590538 + ], + [ + 6.939493350346784, + 50.93476489166463 + ], + [ + 6.939696076661837, + 50.934779260681175 + ], + [ + 6.939786521978408, + 50.93479160547346 + ], + [ + 6.939733801328188, + 50.93502040973778 + ], + [ + 6.939673930571114, + 50.93515555233243 + ], + [ + 6.939638537003333, + 50.93536232268709 + ], + [ + 6.939811712133149, + 50.935406053568876 + ], + [ + 6.9397653520042955, + 50.93563259752249 + ], + [ + 6.939650119214952, + 50.935597388306086 + ], + [ + 6.939565213958576, + 50.935591599647765 + ], + [ + 6.939570560217909, + 50.93556036413883 + ], + [ + 6.939358297317104, + 50.935545892235204 + ], + [ + 6.939338772115072, + 50.93565232006655 + ], + [ + 6.939763329972399, + 50.93567985479016 + ], + [ + 6.939731744849687, + 50.93586380407239 + ], + [ + 6.939516213372277, + 50.935849538295024 + ], + [ + 6.9395173533552885, + 50.93588849793811 + ], + [ + 6.939495702740916, + 50.936015833014736 + ], + [ + 6.939280075005958, + 50.93600170181179 + ], + [ + 6.939267499849481, + 50.936122353682805 + ], + [ + 6.939265758703619, + 50.93654713209406 + ], + [ + 6.939276736134642, + 50.936707212102455 + ], + [ + 6.939279033630703, + 50.936737661567065 + ], + [ + 6.9394148713809924, + 50.93673126442529 + ], + [ + 6.93951434875206, + 50.93672822216958 + ], + [ + 6.939542476264891, + 50.93700094719435 + ], + [ + 6.939543447845672, + 50.93701428954319 + ], + [ + 6.9396723182793645, + 50.937008711667204 + ], + [ + 6.94010351420159, + 50.93696559639716 + ], + [ + 6.940093513118453, + 50.93692828096192 + ], + [ + 6.940111663073193, + 50.93689703213613 + ], + [ + 6.940279332936571, + 50.93687985991865 + ], + [ + 6.940271995979546, + 50.93680490123209 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Altstadt/Sued", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "101", + "Population_rel": 0.025717804492481892, + "Population_abs": 27982 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.963686086389331, + 50.959287042421245 + ], + [ + 6.964182012761039, + 50.95927144729592 + ], + [ + 6.9644150488186245, + 50.95928678138975 + ], + [ + 6.9649458722961635, + 50.959268819906576 + ], + [ + 6.965241247297246, + 50.959238934688734 + ], + [ + 6.965448347556832, + 50.959217980995916 + ], + [ + 6.965511890684534, + 50.959211551526494 + ], + [ + 6.965777163886005, + 50.95917532777104 + ], + [ + 6.965925340426865, + 50.95915509407034 + ], + [ + 6.966446275024201, + 50.95904479744502 + ], + [ + 6.966884846007553, + 50.958921386832316 + ], + [ + 6.967296528723984, + 50.958792886380635 + ], + [ + 6.967437186563318, + 50.958741541869756 + ], + [ + 6.967676896198608, + 50.958654264669256 + ], + [ + 6.96807855534625, + 50.95850332932253 + ], + [ + 6.96908536399038, + 50.95806987081045 + ], + [ + 6.9698033160734205, + 50.957736516974656 + ], + [ + 6.969886119587091, + 50.957695644903545 + ], + [ + 6.970587601103418, + 50.95734939069407 + ], + [ + 6.971807296388209, + 50.95686190988104 + ], + [ + 6.9728151335979325, + 50.95632136436164 + ], + [ + 6.972968569698168, + 50.95623905656489 + ], + [ + 6.973496574522748, + 50.9559558229761 + ], + [ + 6.973609554932431, + 50.95589498976502 + ], + [ + 6.97377383769922, + 50.95580671477242 + ], + [ + 6.9740665517725215, + 50.95561396846094 + ], + [ + 6.974089154394591, + 50.95559939241272 + ], + [ + 6.974106634132891, + 50.95558811180624 + ], + [ + 6.9755544743115445, + 50.95465236069026 + ], + [ + 6.97532989540042, + 50.95452344364111 + ], + [ + 6.9752190883153045, + 50.954458387843594 + ], + [ + 6.97507339375815, + 50.954371959443634 + ], + [ + 6.974782492051637, + 50.95419523244496 + ], + [ + 6.974547116125982, + 50.95404662726427 + ], + [ + 6.97441374578818, + 50.953957398029026 + ], + [ + 6.974355574351307, + 50.95391833090171 + ], + [ + 6.97428724356241, + 50.95387425424319 + ], + [ + 6.974272446981973, + 50.95386474836062 + ], + [ + 6.974257504396516, + 50.953855129319926 + ], + [ + 6.974053613315882, + 50.95372290646286 + ], + [ + 6.973852142985552, + 50.95358929884576 + ], + [ + 6.973756157534219, + 50.95352501688527 + ], + [ + 6.973328963307236, + 50.95323436067021 + ], + [ + 6.972913390791437, + 50.95293718001937 + ], + [ + 6.972890623499087, + 50.95292078217147 + ], + [ + 6.9728679625891745, + 50.952904328606266 + ], + [ + 6.972822702960039, + 50.95287136768028 + ], + [ + 6.9723313835045255, + 50.952507889035346 + ], + [ + 6.971812639042342, + 50.95210008827887 + ], + [ + 6.971790494104803, + 50.952082364552545 + ], + [ + 6.9717684032067355, + 50.95206454462836 + ], + [ + 6.97166242956549, + 50.9519790465353 + ], + [ + 6.971372726794044, + 50.951742432471455 + ], + [ + 6.9703563504218, + 50.95086903599704 + ], + [ + 6.96950117113275, + 50.95003294570223 + ], + [ + 6.969463363407095, + 50.94999451892879 + ], + [ + 6.969442707649425, + 50.94997350824698 + ], + [ + 6.969425625246878, + 50.94995606547186 + ], + [ + 6.969159736609209, + 50.949682231891245 + ], + [ + 6.968849090399558, + 50.94934679343066 + ], + [ + 6.966961620543949, + 50.94998574817361 + ], + [ + 6.966938531001832, + 50.949993778619536 + ], + [ + 6.966915376275507, + 50.950001899661935 + ], + [ + 6.966877513692766, + 50.9499740765019 + ], + [ + 6.966828295315083, + 50.94995443773268 + ], + [ + 6.966772049576329, + 50.94994591513524 + ], + [ + 6.966740730670182, + 50.94994536519276 + ], + [ + 6.966710065849316, + 50.949948944867764 + ], + [ + 6.96667661270317, + 50.949955245144814 + ], + [ + 6.966646244132926, + 50.94996619403829 + ], + [ + 6.9666256740380295, + 50.949976162385205 + ], + [ + 6.966591598183913, + 50.95000044647032 + ], + [ + 6.966572780227241, + 50.9500263111848 + ], + [ + 6.9665508559182046, + 50.95003269530954 + ], + [ + 6.966510624524476, + 50.94998673356356 + ], + [ + 6.966081578821772, + 50.94947942344485 + ], + [ + 6.9658893789067005, + 50.949543849884655 + ], + [ + 6.965726652605715, + 50.949574771650276 + ], + [ + 6.965450172622129, + 50.949664974429226 + ], + [ + 6.964762191327021, + 50.949503372852135 + ], + [ + 6.96462824051099, + 50.94952884087058 + ], + [ + 6.964632459875316, + 50.94961573284403 + ], + [ + 6.964338952236965, + 50.94966031756119 + ], + [ + 6.964412662605682, + 50.94985945078206 + ], + [ + 6.964420225537311, + 50.949890082233914 + ], + [ + 6.9642266910126205, + 50.94989571845866 + ], + [ + 6.964223245718187, + 50.94987202731784 + ], + [ + 6.964222206168832, + 50.94985697974438 + ], + [ + 6.964173672312211, + 50.949726573134384 + ], + [ + 6.96403628518188, + 50.94974822476771 + ], + [ + 6.9639407046901205, + 50.94974836022749 + ], + [ + 6.9639365945285325, + 50.94969186808623 + ], + [ + 6.963859959111232, + 50.94959883220892 + ], + [ + 6.96377389745451, + 50.949614196269856 + ], + [ + 6.963764433223149, + 50.9494938172019 + ], + [ + 6.963473755896025, + 50.949503228701296 + ], + [ + 6.963187595477165, + 50.949510894349906 + ], + [ + 6.96282328915895, + 50.94952441858406 + ], + [ + 6.962828688747801, + 50.94959287247234 + ], + [ + 6.9625972827338085, + 50.949674695805804 + ], + [ + 6.962644100114021, + 50.94975035968903 + ], + [ + 6.962531993332925, + 50.94978625252691 + ], + [ + 6.96267029382832, + 50.949943593248676 + ], + [ + 6.962552789103104, + 50.94994706208985 + ], + [ + 6.962450564085505, + 50.94995007978603 + ], + [ + 6.962432892370743, + 50.949928201662495 + ], + [ + 6.962277009624815, + 50.94974637408157 + ], + [ + 6.962127750543528, + 50.94979551879531 + ], + [ + 6.961950189477056, + 50.949735315234165 + ], + [ + 6.961830522089976, + 50.94968767010034 + ], + [ + 6.9617362534974525, + 50.949650241786095 + ], + [ + 6.961732197409081, + 50.949598497394454 + ], + [ + 6.961615160209322, + 50.9496024276335 + ], + [ + 6.961486488730331, + 50.94958730731075 + ], + [ + 6.961353139880187, + 50.949593798987976 + ], + [ + 6.961349216433362, + 50.94954160361136 + ], + [ + 6.961217667377691, + 50.94954565418022 + ], + [ + 6.961214487969355, + 50.94950190163147 + ], + [ + 6.961083088511937, + 50.94950630991361 + ], + [ + 6.961090622100241, + 50.94960935514816 + ], + [ + 6.960920832813143, + 50.94961533852393 + ], + [ + 6.960916697693836, + 50.94955972810412 + ], + [ + 6.960736578793188, + 50.949568582372656 + ], + [ + 6.960735212580795, + 50.949550615080106 + ], + [ + 6.960216290581643, + 50.94957457199094 + ], + [ + 6.960221542312689, + 50.94964985958756 + ], + [ + 6.960040588684237, + 50.94965269667112 + ], + [ + 6.959790118565546, + 50.9496590718481 + ], + [ + 6.95968600281163, + 50.94966154593094 + ], + [ + 6.959690451006453, + 50.94972551346972 + ], + [ + 6.959546681211829, + 50.94973047100257 + ], + [ + 6.959560795427741, + 50.9498076628132 + ], + [ + 6.959540731487263, + 50.94982850321603 + ], + [ + 6.9593402341649595, + 50.94983599456415 + ], + [ + 6.959357244658988, + 50.95002624798875 + ], + [ + 6.959209585415229, + 50.950015056302064 + ], + [ + 6.959128132609791, + 50.95001252260537 + ], + [ + 6.959123718487849, + 50.949922543015596 + ], + [ + 6.958900802384699, + 50.94992635268536 + ], + [ + 6.958911288831843, + 50.94995188580639 + ], + [ + 6.958946566738945, + 50.9499511463111 + ], + [ + 6.9589499331596905, + 50.95001800894383 + ], + [ + 6.9589532284153925, + 50.95008808829535 + ], + [ + 6.958789405093561, + 50.95009365933915 + ], + [ + 6.958653522587173, + 50.950025558042164 + ], + [ + 6.95834255610995, + 50.95003808979617 + ], + [ + 6.958364572366668, + 50.94999458081258 + ], + [ + 6.958105054941418, + 50.949962462798666 + ], + [ + 6.957920315892694, + 50.94992667328253 + ], + [ + 6.957550344643177, + 50.9498171634832 + ], + [ + 6.957484407058026, + 50.94980089410065 + ], + [ + 6.957421660125043, + 50.949849861824006 + ], + [ + 6.957297948722723, + 50.949854472310335 + ], + [ + 6.957309453436568, + 50.94997807058628 + ], + [ + 6.957081230854018, + 50.94998677366923 + ], + [ + 6.9570837998154635, + 50.950061727586416 + ], + [ + 6.956936207895602, + 50.95006556635615 + ], + [ + 6.9568027695297845, + 50.95007129220511 + ], + [ + 6.95678563521397, + 50.949921917283916 + ], + [ + 6.956401337330639, + 50.94993373694218 + ], + [ + 6.956302158396483, + 50.94977471984686 + ], + [ + 6.956189057673263, + 50.94979713096718 + ], + [ + 6.956147184598872, + 50.949850871277505 + ], + [ + 6.955968481401921, + 50.94980051191699 + ], + [ + 6.955881235912464, + 50.94977565186279 + ], + [ + 6.955810732701452, + 50.94979348864866 + ], + [ + 6.955818542450964, + 50.94980645858263 + ], + [ + 6.955809391205807, + 50.949818219568314 + ], + [ + 6.95566415112124, + 50.94977931731398 + ], + [ + 6.955612199724107, + 50.94969560298512 + ], + [ + 6.955294198396388, + 50.949774434887146 + ], + [ + 6.9552929763806235, + 50.94980509837705 + ], + [ + 6.955001327420516, + 50.94971174959905 + ], + [ + 6.955167493191295, + 50.94966778020225 + ], + [ + 6.955092295148403, + 50.949553782105525 + ], + [ + 6.955059031815141, + 50.94949656758458 + ], + [ + 6.955087539341429, + 50.949440367592224 + ], + [ + 6.955097457845503, + 50.94942384441689 + ], + [ + 6.9551259837753925, + 50.94939232809937 + ], + [ + 6.9549775463316745, + 50.94934311339302 + ], + [ + 6.95500781349713, + 50.949306279018344 + ], + [ + 6.954394761070747, + 50.94910472004148 + ], + [ + 6.954076990902857, + 50.949000255405124 + ], + [ + 6.953998578597997, + 50.94910427367309 + ], + [ + 6.953746078084473, + 50.949025253118585 + ], + [ + 6.953698639413294, + 50.94907139692227 + ], + [ + 6.953646956300176, + 50.9491187434225 + ], + [ + 6.953411305843212, + 50.94902861790506 + ], + [ + 6.953209462444289, + 50.948963296716144 + ], + [ + 6.953104346143876, + 50.948923793292984 + ], + [ + 6.953055353457751, + 50.94889398878012 + ], + [ + 6.95299578042565, + 50.94886876632268 + ], + [ + 6.952874100412456, + 50.94900037441469 + ], + [ + 6.952642366408946, + 50.948920733476115 + ], + [ + 6.952316983617848, + 50.94880562849661 + ], + [ + 6.952463212497918, + 50.94867107797047 + ], + [ + 6.952320553231441, + 50.94860764582136 + ], + [ + 6.952375758600694, + 50.948562877233 + ], + [ + 6.952256408228635, + 50.94851018585327 + ], + [ + 6.951986501040365, + 50.94853837653091 + ], + [ + 6.951800720945628, + 50.94845107690899 + ], + [ + 6.951877250247759, + 50.948380066529445 + ], + [ + 6.951906018185422, + 50.94835331382946 + ], + [ + 6.951757646583072, + 50.94829303740563 + ], + [ + 6.951783765111278, + 50.94826900203503 + ], + [ + 6.951656378864466, + 50.948225903892435 + ], + [ + 6.951479181202647, + 50.94837755937252 + ], + [ + 6.951279123003549, + 50.94830880443097 + ], + [ + 6.951215295564479, + 50.94838168858769 + ], + [ + 6.95122693776339, + 50.94840829138774 + ], + [ + 6.951022589917553, + 50.94833148056055 + ], + [ + 6.951063555914195, + 50.9483236851515 + ], + [ + 6.951566920638577, + 50.947795287774944 + ], + [ + 6.951552936528354, + 50.94776667428053 + ], + [ + 6.950864194500611, + 50.947473393656814 + ], + [ + 6.9508251718567475, + 50.94747874532208 + ], + [ + 6.95029653782465, + 50.9480371523762 + ], + [ + 6.950305156551744, + 50.94806198258203 + ], + [ + 6.950102604072996, + 50.94798938014525 + ], + [ + 6.950144024716725, + 50.94798292951583 + ], + [ + 6.950290031556855, + 50.94782982184376 + ], + [ + 6.950157225818471, + 50.947779035258606 + ], + [ + 6.949977808646284, + 50.94771037875665 + ], + [ + 6.950034821136566, + 50.94764860790798 + ], + [ + 6.950107730809468, + 50.94757097596144 + ], + [ + 6.950123648381106, + 50.94755601372395 + ], + [ + 6.949858477175228, + 50.947455064709736 + ], + [ + 6.949748629743758, + 50.947553133689134 + ], + [ + 6.949420042594323, + 50.94740559567284 + ], + [ + 6.949256323101109, + 50.94733204685031 + ], + [ + 6.949092029255379, + 50.94725823228121 + ], + [ + 6.949116291486136, + 50.94723385460355 + ], + [ + 6.948809238134365, + 50.94711634377397 + ], + [ + 6.94862307959046, + 50.94731040772005 + ], + [ + 6.94856577100965, + 50.94736813538634 + ], + [ + 6.9485751355704215, + 50.94739475690211 + ], + [ + 6.9485065888782, + 50.947361874533456 + ], + [ + 6.948340312248218, + 50.94729544571268 + ], + [ + 6.947836730845709, + 50.94709323225314 + ], + [ + 6.947875411895272, + 50.947057141182455 + ], + [ + 6.947988100378073, + 50.94694466819865 + ], + [ + 6.947893078001119, + 50.94689033583303 + ], + [ + 6.947809190871759, + 50.946851734066364 + ], + [ + 6.9477319080609385, + 50.94681601482108 + ], + [ + 6.947617375887056, + 50.94680286168159 + ], + [ + 6.947551151079461, + 50.946723125154215 + ], + [ + 6.947263168070484, + 50.9465494520194 + ], + [ + 6.946961329375394, + 50.94643602927872 + ], + [ + 6.9464008355884115, + 50.94619840475842 + ], + [ + 6.946046594071544, + 50.94611093388023 + ], + [ + 6.9459200329245565, + 50.94605883305146 + ], + [ + 6.945864525909382, + 50.94599518959684 + ], + [ + 6.945748307097844, + 50.94594785827833 + ], + [ + 6.945840481402945, + 50.94586216236173 + ], + [ + 6.945571580685916, + 50.94574945493275 + ], + [ + 6.945461655195499, + 50.94570603214117 + ], + [ + 6.945321034658765, + 50.94583751591151 + ], + [ + 6.94513824521436, + 50.94588951590665 + ], + [ + 6.945200226729922, + 50.945979965388844 + ], + [ + 6.944762649505321, + 50.94578729227748 + ], + [ + 6.944800112133512, + 50.94576820147534 + ], + [ + 6.94475804806526, + 50.94573582085393 + ], + [ + 6.944611773737685, + 50.94557456847115 + ], + [ + 6.94446077231994, + 50.94546791930004 + ], + [ + 6.944433884023724, + 50.94547514812633 + ], + [ + 6.944353401041456, + 50.94537961382985 + ], + [ + 6.944399534879598, + 50.945367105491506 + ], + [ + 6.944354652356308, + 50.945300947541355 + ], + [ + 6.94427752529797, + 50.945321797747795 + ], + [ + 6.94421082397149, + 50.94522909533764 + ], + [ + 6.944178633734209, + 50.945216523581685 + ], + [ + 6.94409837260775, + 50.94517402479481 + ], + [ + 6.943865328292808, + 50.94504205869055 + ], + [ + 6.943798693687738, + 50.94498380786213 + ], + [ + 6.943768465841588, + 50.944957518174334 + ], + [ + 6.943669085347979, + 50.944871655205226 + ], + [ + 6.943470854662678, + 50.944695744547595 + ], + [ + 6.943371095952465, + 50.94473026083318 + ], + [ + 6.943286494440639, + 50.94464896230985 + ], + [ + 6.943133148856745, + 50.944714384856944 + ], + [ + 6.943094899374867, + 50.944708671718 + ], + [ + 6.942990238370361, + 50.944606410300764 + ], + [ + 6.942832917896133, + 50.94467231373499 + ], + [ + 6.942751980300091, + 50.9445883407764 + ], + [ + 6.942734704188101, + 50.944560303120774 + ], + [ + 6.942670714598159, + 50.94450390599217 + ], + [ + 6.942640765702944, + 50.944472416222084 + ], + [ + 6.942927588511853, + 50.944358271624836 + ], + [ + 6.942833881607183, + 50.944269944666786 + ], + [ + 6.942917025484315, + 50.94423709132022 + ], + [ + 6.942820980134552, + 50.944145727315835 + ], + [ + 6.942929533935566, + 50.944102870059446 + ], + [ + 6.942739520386553, + 50.943903134479434 + ], + [ + 6.942609375461367, + 50.943785976893096 + ], + [ + 6.942715696071189, + 50.94374538468594 + ], + [ + 6.942616919093805, + 50.943634895657524 + ], + [ + 6.942531870104733, + 50.943541913844456 + ], + [ + 6.942464380706503, + 50.94356780822958 + ], + [ + 6.942075294382678, + 50.94316658444877 + ], + [ + 6.941931506259545, + 50.943222516373694 + ], + [ + 6.941879699287184, + 50.94317250508799 + ], + [ + 6.941872953390406, + 50.943099206473846 + ], + [ + 6.94180789754599, + 50.943125800828284 + ], + [ + 6.941716521081783, + 50.9430328696282 + ], + [ + 6.941691194770482, + 50.94303289436039 + ], + [ + 6.941592803939866, + 50.943071622541126 + ], + [ + 6.941471169981413, + 50.942988104746334 + ], + [ + 6.941462801692336, + 50.9429119426544 + ], + [ + 6.9412712737520055, + 50.9429184322419 + ], + [ + 6.941182632313098, + 50.942953756083654 + ], + [ + 6.941054850726002, + 50.94281940720271 + ], + [ + 6.941252192867113, + 50.942812062671166 + ], + [ + 6.941249309982313, + 50.94277755935545 + ], + [ + 6.941237368722773, + 50.94263464354935 + ], + [ + 6.9413332378226995, + 50.94259791278766 + ], + [ + 6.941263170477834, + 50.94236241883304 + ], + [ + 6.941216788139049, + 50.94222166121507 + ], + [ + 6.9412573893465535, + 50.942217108686705 + ], + [ + 6.9412419489178925, + 50.94212536243561 + ], + [ + 6.94119514071913, + 50.94200932839253 + ], + [ + 6.9411853712016445, + 50.941969404481235 + ], + [ + 6.941162936927624, + 50.94197174293503 + ], + [ + 6.941143540635524, + 50.9418919848622 + ], + [ + 6.941115003641736, + 50.94189500173238 + ], + [ + 6.940992905689607, + 50.941908121499274 + ], + [ + 6.940973999158565, + 50.94183851702008 + ], + [ + 6.940771886510496, + 50.941827920652095 + ], + [ + 6.940795528150684, + 50.941674013369095 + ], + [ + 6.940804597855659, + 50.94162288091285 + ], + [ + 6.9406965908377565, + 50.94156367898849 + ], + [ + 6.940536451231107, + 50.9409193795531 + ], + [ + 6.940501546998623, + 50.940790511515246 + ], + [ + 6.940317676510708, + 50.94079628287003 + ], + [ + 6.940298197623451, + 50.94071940208402 + ], + [ + 6.940247682045753, + 50.94052462637196 + ], + [ + 6.94021513348676, + 50.94039636640702 + ], + [ + 6.9404569058890795, + 50.94037032668944 + ], + [ + 6.940395093135392, + 50.940078222439645 + ], + [ + 6.940385282170305, + 50.94002202885399 + ], + [ + 6.940250358295409, + 50.939371121678036 + ], + [ + 6.940230868337613, + 50.93927949805018 + ], + [ + 6.940284037306485, + 50.939123195120644 + ], + [ + 6.940175997470008, + 50.93903753774998 + ], + [ + 6.940123418949369, + 50.93899585193818 + ], + [ + 6.940179563515959, + 50.93883808610259 + ], + [ + 6.940368703635394, + 50.93881993180411 + ], + [ + 6.940350017388713, + 50.938746999766295 + ], + [ + 6.940314738011958, + 50.938570913911605 + ], + [ + 6.94015004979562, + 50.93858815141593 + ], + [ + 6.9401322448457785, + 50.93852366206785 + ], + [ + 6.940051736854467, + 50.93853159226856 + ], + [ + 6.940021668110317, + 50.938423333174306 + ], + [ + 6.93997367967021, + 50.93842830441444 + ], + [ + 6.93998010801687, + 50.93835903437939 + ], + [ + 6.939739043780058, + 50.93835791981693 + ], + [ + 6.939702343031844, + 50.938387781707334 + ], + [ + 6.939657351052449, + 50.93821367012457 + ], + [ + 6.939691523483292, + 50.938215012542834 + ], + [ + 6.939870780184086, + 50.93822183935311 + ], + [ + 6.93988814659236, + 50.938053059914004 + ], + [ + 6.939768677677221, + 50.93777274662633 + ], + [ + 6.939723711646787, + 50.937595929277805 + ], + [ + 6.9396118477824755, + 50.937234111592005 + ], + [ + 6.939543453470916, + 50.93701438767481 + ], + [ + 6.939542469113805, + 50.937000947967505 + ], + [ + 6.939508350868467, + 50.93672908672993 + ], + [ + 6.939415093761013, + 50.93673302753622 + ], + [ + 6.939279224145767, + 50.936739179484626 + ], + [ + 6.939276736134642, + 50.936707212102455 + ], + [ + 6.939264886065408, + 50.9365471346767 + ], + [ + 6.939062888061057, + 50.93654773359418 + ], + [ + 6.93866537111621, + 50.93656267488191 + ], + [ + 6.938433733450178, + 50.93656705644348 + ], + [ + 6.93844002199942, + 50.936657347355236 + ], + [ + 6.938442845144492, + 50.93669929479275 + ], + [ + 6.93844540718384, + 50.93673704111544 + ], + [ + 6.9383170501590214, + 50.93674939902565 + ], + [ + 6.938317670762666, + 50.9368329937918 + ], + [ + 6.938206720405898, + 50.93683388613309 + ], + [ + 6.938202746257014, + 50.93672928739047 + ], + [ + 6.9380525916385585, + 50.93672903384912 + ], + [ + 6.938009057163028, + 50.93672940167752 + ], + [ + 6.937977981142609, + 50.936729712551625 + ], + [ + 6.937955930440634, + 50.93673241060794 + ], + [ + 6.937917863375073, + 50.936747667971176 + ], + [ + 6.937819630875887, + 50.9367884858997 + ], + [ + 6.93779555280917, + 50.93676877245462 + ], + [ + 6.9377722083540325, + 50.93674637652479 + ], + [ + 6.9377351360452, + 50.936710843668536 + ], + [ + 6.937719501446657, + 50.93669585991112 + ], + [ + 6.937770881575073, + 50.93665811138811 + ], + [ + 6.937896452294618, + 50.93657686007438 + ], + [ + 6.93736676596002, + 50.93658569908632 + ], + [ + 6.93717501476078, + 50.936589058809915 + ], + [ + 6.937145380009394, + 50.93658954602642 + ], + [ + 6.937115206142912, + 50.93659002550702 + ], + [ + 6.937115417634265, + 50.93665859972534 + ], + [ + 6.937122173090152, + 50.93677513746599 + ], + [ + 6.937046363650564, + 50.936853547528486 + ], + [ + 6.936949626774842, + 50.9369440306045 + ], + [ + 6.936923732878831, + 50.93697013524537 + ], + [ + 6.936895737882082, + 50.93699939464389 + ], + [ + 6.936883128762341, + 50.93701339997623 + ], + [ + 6.9368345200852985, + 50.93706021966926 + ], + [ + 6.936820171144408, + 50.937073012460694 + ], + [ + 6.936729163380891, + 50.937072743111926 + ], + [ + 6.93661638779556, + 50.9370755605317 + ], + [ + 6.936552209867798, + 50.93707714493244 + ], + [ + 6.936502872499638, + 50.93707836746488 + ], + [ + 6.936396879988705, + 50.937081523125464 + ], + [ + 6.936398209239148, + 50.93710901277046 + ], + [ + 6.936293563664633, + 50.93711218945038 + ], + [ + 6.9362907062010155, + 50.93703599027976 + ], + [ + 6.936073060613712, + 50.93704017833183 + ], + [ + 6.936073604741841, + 50.93705331529435 + ], + [ + 6.936026572498941, + 50.93705725493445 + ], + [ + 6.935966296458696, + 50.9370639085517 + ], + [ + 6.935966547685347, + 50.93707777692768 + ], + [ + 6.935735901970192, + 50.93707843286741 + ], + [ + 6.935637283077468, + 50.93707669159742 + ], + [ + 6.935295418764491, + 50.93708778132997 + ], + [ + 6.935166527614248, + 50.937092908816204 + ], + [ + 6.934941857323575, + 50.93709561693809 + ], + [ + 6.934941406511913, + 50.93703739931992 + ], + [ + 6.934941076843638, + 50.93700988866242 + ], + [ + 6.934930693803219, + 50.93693383961839 + ], + [ + 6.934918368027375, + 50.93681326389637 + ], + [ + 6.934918206734259, + 50.93675474470874 + ], + [ + 6.934731152144275, + 50.93675819160061 + ], + [ + 6.934701046646567, + 50.93675873102626 + ], + [ + 6.934700540404902, + 50.93668394405019 + ], + [ + 6.934700728172503, + 50.93665658014947 + ], + [ + 6.9347302444668655, + 50.936631304555156 + ], + [ + 6.934658679894754, + 50.93663250090184 + ], + [ + 6.934565717386445, + 50.936634830457606 + ], + [ + 6.934468768678613, + 50.93663765871329 + ], + [ + 6.9343111047855714, + 50.93664578280881 + ], + [ + 6.934310302798411, + 50.936662528557335 + ], + [ + 6.93430256780065, + 50.936822241126734 + ], + [ + 6.934299446624679, + 50.93688492122324 + ], + [ + 6.93429799782037, + 50.93692387110176 + ], + [ + 6.934295654247677, + 50.93700792882143 + ], + [ + 6.9342974427479565, + 50.937092500356584 + ], + [ + 6.934268541227592, + 50.93709194754531 + ], + [ + 6.934163895656174, + 50.93709117134092 + ], + [ + 6.933974398266121, + 50.937095716009686 + ], + [ + 6.933901584569132, + 50.93709691407177 + ], + [ + 6.933836673115631, + 50.9370979281799 + ], + [ + 6.933829744609264, + 50.93705604914705 + ], + [ + 6.9338268213189584, + 50.93703558958088 + ], + [ + 6.9337011588803, + 50.93703364231378 + ], + [ + 6.933485985518971, + 50.93703031631057 + ], + [ + 6.933485380232325, + 50.9370640305361 + ], + [ + 6.933343348723782, + 50.93706869764283 + ], + [ + 6.933342296440884, + 50.937144011059374 + ], + [ + 6.933225493141206, + 50.93714613422411 + ], + [ + 6.933057413321961, + 50.93714646976481 + ], + [ + 6.933058194401674, + 50.93708963829716 + ], + [ + 6.933058403827818, + 50.93707445327986 + ], + [ + 6.933058901900761, + 50.937038349303066 + ], + [ + 6.933059365985, + 50.93700400660925 + ], + [ + 6.933059837839734, + 50.93695235009265 + ], + [ + 6.933058567347642, + 50.9369123789454 + ], + [ + 6.9330573191633, + 50.93687193691784 + ], + [ + 6.932995431253059, + 50.936872341249554 + ], + [ + 6.9329435268057535, + 50.93687165690324 + ], + [ + 6.932925616600635, + 50.93666183102635 + ], + [ + 6.932830168210043, + 50.93666580871314 + ], + [ + 6.93277259142482, + 50.93666449230735 + ], + [ + 6.9327737263822256, + 50.93665135537833 + ], + [ + 6.932432311817865, + 50.93665130045526 + ], + [ + 6.9324314740390784, + 50.936682826869536 + ], + [ + 6.932411326666469, + 50.93667672028434 + ], + [ + 6.932189061829133, + 50.93667391922345 + ], + [ + 6.932188995070957, + 50.93670641443619 + ], + [ + 6.932188122060298, + 50.936956017366406 + ], + [ + 6.93192874251123, + 50.93695690866503 + ], + [ + 6.931930301603416, + 50.937037250912 + ], + [ + 6.931793920979358, + 50.93703771271157 + ], + [ + 6.9317934661155345, + 50.937105697774186 + ], + [ + 6.931652156745298, + 50.93710909580043 + ], + [ + 6.931652080657803, + 50.93712270926558 + ], + [ + 6.931493392437838, + 50.93712435836476 + ], + [ + 6.9315083843216, + 50.9366842992763 + ], + [ + 6.931340279954943, + 50.936686218404525 + ], + [ + 6.93131822699937, + 50.93668219230285 + ], + [ + 6.931252890136434, + 50.93666855912205 + ], + [ + 6.931231421714059, + 50.936663870626674 + ], + [ + 6.931171288823515, + 50.93666415219729 + ], + [ + 6.931012643422413, + 50.936671829037365 + ], + [ + 6.93101095049483, + 50.93668511525298 + ], + [ + 6.931007331528671, + 50.936715111089775 + ], + [ + 6.931003615151739, + 50.9367528479627 + ], + [ + 6.93100285310285, + 50.93678928363123 + ], + [ + 6.9310023341068465, + 50.9368202122066 + ], + [ + 6.931001445360345, + 50.93686716477805 + ], + [ + 6.931001017278338, + 50.93689559648671 + ], + [ + 6.931001593418616, + 50.936996505444995 + ], + [ + 6.931001557124543, + 50.937013322308644 + ], + [ + 6.931000996488044, + 50.93702784275536 + ], + [ + 6.930998975473393, + 50.93707352781687 + ], + [ + 6.930996985399209, + 50.93711662411145 + ], + [ + 6.930906811891112, + 50.93712179906152 + ], + [ + 6.930712546780012, + 50.937123625039426 + ], + [ + 6.930393429534529, + 50.93711717629849 + ], + [ + 6.930393108424551, + 50.93710107260151 + ], + [ + 6.930393366979134, + 50.93707428735119 + ], + [ + 6.9303938854776, + 50.937046648700786 + ], + [ + 6.930394164499081, + 50.93703203152627 + ], + [ + 6.93039446568178, + 50.93701653065399 + ], + [ + 6.930396292397819, + 50.936930744192125 + ], + [ + 6.930396791131357, + 50.936899383555875 + ], + [ + 6.930241891863689, + 50.93690313342106 + ], + [ + 6.9302385528819945, + 50.93696392807608 + ], + [ + 6.930081723355409, + 50.936965080271825 + ], + [ + 6.929922673622654, + 50.936966226162205 + ], + [ + 6.92981994238371, + 50.93696709349466 + ], + [ + 6.9297729623679984, + 50.93696798804008 + ], + [ + 6.929772048006734, + 50.93699930712847 + ], + [ + 6.929771721258359, + 50.93701419327035 + ], + [ + 6.9297809386082525, + 50.93723069183702 + ], + [ + 6.929550052069046, + 50.937231362759675 + ], + [ + 6.929547275066231, + 50.937156324086956 + ], + [ + 6.929212803978212, + 50.937156146380374 + ], + [ + 6.929071593190211, + 50.93715606782655 + ], + [ + 6.929009578928823, + 50.93715632660204 + ], + [ + 6.928874176150967, + 50.93715655500921 + ], + [ + 6.928806811673134, + 50.93715591020876 + ], + [ + 6.928800623302835, + 50.9371908096846 + ], + [ + 6.928800460304241, + 50.937232207063936 + ], + [ + 6.928504235813627, + 50.93723271852119 + ], + [ + 6.928407475201557, + 50.937232942280595 + ], + [ + 6.928399344219163, + 50.937117930932764 + ], + [ + 6.928398511191039, + 50.93710035844722 + ], + [ + 6.928397939121177, + 50.93708738642601 + ], + [ + 6.928397292914763, + 50.93706999803122 + ], + [ + 6.928396401802703, + 50.93704012279079 + ], + [ + 6.92839366281827, + 50.93682247540846 + ], + [ + 6.926324812081402, + 50.93684323154655 + ], + [ + 6.926380401163964, + 50.93707899692865 + ], + [ + 6.92647179953876, + 50.93748386401248 + ], + [ + 6.926529760059383, + 50.93774064766512 + ], + [ + 6.926534111515989, + 50.937760065233995 + ], + [ + 6.92622479621657, + 50.937734230284455 + ], + [ + 6.92600094158762, + 50.93771318126184 + ], + [ + 6.925974030650975, + 50.937355400835735 + ], + [ + 6.9253868802073, + 50.937364232997645 + ], + [ + 6.92522239181553, + 50.93736697116436 + ], + [ + 6.925151402339559, + 50.937368165612995 + ], + [ + 6.925100791133362, + 50.93736901892095 + ], + [ + 6.9250628663535, + 50.937402488902784 + ], + [ + 6.925010966691727, + 50.93743518972278 + ], + [ + 6.924992219942154, + 50.93744188515011 + ], + [ + 6.924973357886893, + 50.93737319693448 + ], + [ + 6.924936571320032, + 50.937233948457305 + ], + [ + 6.924926124794109, + 50.937094538625914 + ], + [ + 6.924924052528678, + 50.93700681216891 + ], + [ + 6.924931761313091, + 50.93687459453422 + ], + [ + 6.924720956891273, + 50.936865686405 + ], + [ + 6.92480782708255, + 50.937502852777726 + ], + [ + 6.924894331698675, + 50.93775862027505 + ], + [ + 6.925325574078443, + 50.93902333421846 + ], + [ + 6.925340467072058, + 50.93906401705837 + ], + [ + 6.925698413738026, + 50.94004314239164 + ], + [ + 6.9257331326568785, + 50.94013862683693 + ], + [ + 6.925749779919579, + 50.94018292661366 + ], + [ + 6.92578420946056, + 50.94027704963331 + ], + [ + 6.92612908045345, + 50.941220160986724 + ], + [ + 6.926145906963972, + 50.94126563127479 + ], + [ + 6.9261859821190574, + 50.94137495143845 + ], + [ + 6.9262412657746815, + 50.941525739653045 + ], + [ + 6.926448715336312, + 50.94209133024651 + ], + [ + 6.926471481038427, + 50.942153316956485 + ], + [ + 6.926477267851912, + 50.9421688935735 + ], + [ + 6.926629983568662, + 50.94257418462916 + ], + [ + 6.926671620866264, + 50.94264643022266 + ], + [ + 6.9266888858035, + 50.94267621492571 + ], + [ + 6.926704609120256, + 50.94270395044082 + ], + [ + 6.926726149395199, + 50.942734239173284 + ], + [ + 6.9268150203123176, + 50.94286011805968 + ], + [ + 6.9268923069346755, + 50.94296964189186 + ], + [ + 6.927175956863335, + 50.94337166222544 + ], + [ + 6.927375185079402, + 50.94365393617477 + ], + [ + 6.927773867840637, + 50.94422382930454 + ], + [ + 6.928209994832721, + 50.944847143981384 + ], + [ + 6.92828487046838, + 50.94495276389515 + ], + [ + 6.92832872785108, + 50.94501462803351 + ], + [ + 6.928353221261356, + 50.94504917794323 + ], + [ + 6.928379338650833, + 50.94508264863055 + ], + [ + 6.928394001824601, + 50.94509549294928 + ], + [ + 6.928408508856472, + 50.945107110440155 + ], + [ + 6.9284504750583515, + 50.945139152631 + ], + [ + 6.928571155039111, + 50.945229385515745 + ], + [ + 6.928779062557361, + 50.94535774095144 + ], + [ + 6.929305236365732, + 50.94568364130474 + ], + [ + 6.931705044982504, + 50.94771475789613 + ], + [ + 6.932538245761511, + 50.94845477603768 + ], + [ + 6.93256578602753, + 50.94847897496537 + ], + [ + 6.932653254362007, + 50.94855029858954 + ], + [ + 6.9327465820438166, + 50.948626297440484 + ], + [ + 6.93278213655907, + 50.94865540942955 + ], + [ + 6.932861228857952, + 50.948719788872985 + ], + [ + 6.932894670232043, + 50.94874701788583 + ], + [ + 6.932965986497808, + 50.948805072747845 + ], + [ + 6.933050191517852, + 50.9488736338541 + ], + [ + 6.933264235208693, + 50.9490479435895 + ], + [ + 6.9332966925127595, + 50.94907788467446 + ], + [ + 6.933637292890937, + 50.94939541605346 + ], + [ + 6.933764906405489, + 50.94951440139991 + ], + [ + 6.9343968318032045, + 50.95007926529204 + ], + [ + 6.934867532025084, + 50.95045250610117 + ], + [ + 6.935010708397797, + 50.95054430732068 + ], + [ + 6.935036009589861, + 50.950555573458296 + ], + [ + 6.937222758985164, + 50.95223614833094 + ], + [ + 6.937444583018395, + 50.952395994296296 + ], + [ + 6.93758797010443, + 50.95249971542793 + ], + [ + 6.937695682142454, + 50.95257766500795 + ], + [ + 6.937718931179248, + 50.95259428516568 + ], + [ + 6.937733627051431, + 50.95260486061485 + ], + [ + 6.9377763993143216, + 50.95263571290579 + ], + [ + 6.9383049213414125, + 50.95301135746205 + ], + [ + 6.938577823486376, + 50.95318360713506 + ], + [ + 6.938709044069894, + 50.953272175170525 + ], + [ + 6.938909703062181, + 50.95340644763383 + ], + [ + 6.9390638997603995, + 50.95348358058408 + ], + [ + 6.939263985453638, + 50.95355689603178 + ], + [ + 6.939497461922422, + 50.95360439834739 + ], + [ + 6.9395219411264915, + 50.95360865363058 + ], + [ + 6.940397893684084, + 50.95369078788678 + ], + [ + 6.940581470036423, + 50.95370763564128 + ], + [ + 6.941091282712705, + 50.953682000600395 + ], + [ + 6.941290722844634, + 50.95369794611913 + ], + [ + 6.94168447436279, + 50.953729424632606 + ], + [ + 6.9419106763927125, + 50.95374451252708 + ], + [ + 6.945142739355501, + 50.953916472102144 + ], + [ + 6.945671130013181, + 50.95395858014916 + ], + [ + 6.946458088478598, + 50.95404907779765 + ], + [ + 6.947008288654213, + 50.95421843833507 + ], + [ + 6.947317392084696, + 50.95435903877219 + ], + [ + 6.947997334503888, + 50.9548029652187 + ], + [ + 6.948087200856549, + 50.95486163614388 + ], + [ + 6.948160892244109, + 50.95489501649085 + ], + [ + 6.948204045539999, + 50.95491451247713 + ], + [ + 6.948301230955079, + 50.954958419999485 + ], + [ + 6.94922602417121, + 50.95532756954198 + ], + [ + 6.949668042955157, + 50.95550406207095 + ], + [ + 6.949731068726912, + 50.95552750127796 + ], + [ + 6.94991111760253, + 50.955583477907886 + ], + [ + 6.950072748183792, + 50.95562712690549 + ], + [ + 6.950262584498966, + 50.95567838313416 + ], + [ + 6.950330633797788, + 50.95569620816989 + ], + [ + 6.950746421701946, + 50.955806209318744 + ], + [ + 6.950799068576892, + 50.95581924167074 + ], + [ + 6.954019789533744, + 50.95666346947994 + ], + [ + 6.955484404760714, + 50.957047600929066 + ], + [ + 6.955539547801099, + 50.95705868541882 + ], + [ + 6.956043886776812, + 50.957200287795516 + ], + [ + 6.957717582317494, + 50.957659492883565 + ], + [ + 6.957982215642769, + 50.95776972614451 + ], + [ + 6.958148547943852, + 50.95783879853901 + ], + [ + 6.958372592205976, + 50.95795947868041 + ], + [ + 6.958448849869088, + 50.958000537498734 + ], + [ + 6.958759808811013, + 50.95816818020943 + ], + [ + 6.9595941278521884, + 50.95864472636459 + ], + [ + 6.960012262645711, + 50.95888324578328 + ], + [ + 6.960060732878906, + 50.958911107157256 + ], + [ + 6.960094027823004, + 50.95893030412121 + ], + [ + 6.960111804415748, + 50.95894054019686 + ], + [ + 6.960328699848695, + 50.959036843585736 + ], + [ + 6.960377594740109, + 50.95905313100975 + ], + [ + 6.960605177596471, + 50.95912897455806 + ], + [ + 6.960934966480728, + 50.959197904843094 + ], + [ + 6.961181021052672, + 50.9592459680308 + ], + [ + 6.961635715256983, + 50.95926845188218 + ], + [ + 6.961919776541278, + 50.959273392843784 + ], + [ + 6.963686086389331, + 50.959287042421245 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Neustadt/Nord", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "104", + "Population_rel": 0.02631520899966913, + "Population_abs": 28632 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.921224398105117, + 50.89291786947847 + ], + [ + 6.923400000901991, + 50.8919543190725 + ], + [ + 6.924935847904628, + 50.89122519420272 + ], + [ + 6.926398240097698, + 50.89055193427787 + ], + [ + 6.926912243712401, + 50.890317093779124 + ], + [ + 6.927491960680145, + 50.89005466925239 + ], + [ + 6.927643587885774, + 50.88998226781409 + ], + [ + 6.927716657993684, + 50.88994743708414 + ], + [ + 6.927974998613281, + 50.88982393567233 + ], + [ + 6.928704352824952, + 50.889515727408345 + ], + [ + 6.928793576162351, + 50.88947852054531 + ], + [ + 6.929999558567134, + 50.88897602335858 + ], + [ + 6.9316279904617755, + 50.88830752168381 + ], + [ + 6.933952535963543, + 50.8874509411691 + ], + [ + 6.93596983591334, + 50.88677584943721 + ], + [ + 6.938035517619529, + 50.886149325535065 + ], + [ + 6.9407402249664925, + 50.88541045865931 + ], + [ + 6.941229318087982, + 50.88526708723424 + ], + [ + 6.94133636057156, + 50.885242240611994 + ], + [ + 6.942553557571223, + 50.88496064326858 + ], + [ + 6.943125206481805, + 50.884838441256605 + ], + [ + 6.943180842301756, + 50.88482792328872 + ], + [ + 6.94443520012104, + 50.884580543586 + ], + [ + 6.945874937984186, + 50.88433047889272 + ], + [ + 6.946334676579313, + 50.884226518348385 + ], + [ + 6.947584255548082, + 50.88405339550534 + ], + [ + 6.948486912858657, + 50.88394160276857 + ], + [ + 6.949221382232194, + 50.88386110579605 + ], + [ + 6.949797255922151, + 50.8838013133472 + ], + [ + 6.949868040765643, + 50.88379516316243 + ], + [ + 6.950781061550981, + 50.88371823667271 + ], + [ + 6.951519963669071, + 50.8836673541988 + ], + [ + 6.952820975246171, + 50.88358589819662 + ], + [ + 6.95295608204513, + 50.883521598838776 + ], + [ + 6.953045840079757, + 50.883512056119 + ], + [ + 6.953118305245836, + 50.88350472197137 + ], + [ + 6.953182232977211, + 50.883566406103164 + ], + [ + 6.953399857919738, + 50.883562559575104 + ], + [ + 6.954929953390807, + 50.88354456056637 + ], + [ + 6.956472114026574, + 50.883560602010455 + ], + [ + 6.958361134386702, + 50.8836380476767 + ], + [ + 6.95897820475331, + 50.88368205863071 + ], + [ + 6.959713817804613, + 50.883755025254054 + ], + [ + 6.96087136982466, + 50.88385687548209 + ], + [ + 6.961168399198576, + 50.883892812889385 + ], + [ + 6.961457493787281, + 50.88391462550174 + ], + [ + 6.961649243513825, + 50.8839387554427 + ], + [ + 6.961784248014843, + 50.88396269436113 + ], + [ + 6.961946384843263, + 50.88400375010307 + ], + [ + 6.962522583631956, + 50.884069843958216 + ], + [ + 6.962607242243009, + 50.88407815744057 + ], + [ + 6.963129201482543, + 50.88417670615447 + ], + [ + 6.965511356983278, + 50.8845627955814 + ], + [ + 6.966349619025531, + 50.884760363756854 + ], + [ + 6.966684067183963, + 50.884839126529464 + ], + [ + 6.967854740467476, + 50.88511941866848 + ], + [ + 6.967938170270225, + 50.884229042624895 + ], + [ + 6.967967707160935, + 50.88367981365802 + ], + [ + 6.968177996182808, + 50.88245728809738 + ], + [ + 6.968169280988389, + 50.88239292038956 + ], + [ + 6.968129490670714, + 50.882372226153116 + ], + [ + 6.9681372286329015, + 50.88224045826006 + ], + [ + 6.968184005364483, + 50.88194027260089 + ], + [ + 6.9682558016015035, + 50.88113359507234 + ], + [ + 6.968385567730793, + 50.880402125866745 + ], + [ + 6.968586618733279, + 50.87910022596819 + ], + [ + 6.968583508279371, + 50.87899138957983 + ], + [ + 6.968573830350722, + 50.878559078078325 + ], + [ + 6.968586991056177, + 50.87821404461798 + ], + [ + 6.968677853121711, + 50.877587263037654 + ], + [ + 6.968713108076379, + 50.877588141195325 + ], + [ + 6.968773809952386, + 50.87715821231598 + ], + [ + 6.968833976647051, + 50.876709409491916 + ], + [ + 6.968881691800263, + 50.87627680092559 + ], + [ + 6.968919839029439, + 50.87555436297889 + ], + [ + 6.969003531204969, + 50.875164514887054 + ], + [ + 6.969006161131402, + 50.87514741300856 + ], + [ + 6.96900847180969, + 50.87512869567568 + ], + [ + 6.96910016191444, + 50.87433012130895 + ], + [ + 6.969149604364387, + 50.8736113639185 + ], + [ + 6.969244918515941, + 50.872946522456274 + ], + [ + 6.969264068819201, + 50.87279707499303 + ], + [ + 6.9692852654479625, + 50.87263164690256 + ], + [ + 6.969300337930705, + 50.872344758289145 + ], + [ + 6.969311364756256, + 50.87219157638448 + ], + [ + 6.969338144052721, + 50.87187321697354 + ], + [ + 6.969349709040729, + 50.87176650662193 + ], + [ + 6.9693974825596445, + 50.87132346933315 + ], + [ + 6.969493244983077, + 50.870571155748046 + ], + [ + 6.969522433802746, + 50.87034168207241 + ], + [ + 6.969450442397367, + 50.87034335942052 + ], + [ + 6.969474137131971, + 50.870109257235974 + ], + [ + 6.969546443720938, + 50.870102183656066 + ], + [ + 6.969510097953826, + 50.86961058335295 + ], + [ + 6.969539617816493, + 50.86889747484181 + ], + [ + 6.969476072066634, + 50.86799195653845 + ], + [ + 6.969415048095918, + 50.8675704985964 + ], + [ + 6.969269145008294, + 50.86639256546371 + ], + [ + 6.969067549669506, + 50.8648714274514 + ], + [ + 6.9690187789449, + 50.86406799568124 + ], + [ + 6.969000867810123, + 50.86403991716176 + ], + [ + 6.968902461629142, + 50.86404145447398 + ], + [ + 6.968432906749422, + 50.8639340644374 + ], + [ + 6.968367110178908, + 50.8639326327256 + ], + [ + 6.968323198256894, + 50.86393164952159 + ], + [ + 6.968244182397379, + 50.863929787881524 + ], + [ + 6.9678509459769415, + 50.86394078312893 + ], + [ + 6.967496317281254, + 50.864012134662026 + ], + [ + 6.967219109386616, + 50.86410441817308 + ], + [ + 6.967057902031763, + 50.864153129761426 + ], + [ + 6.96662235438784, + 50.86428861589724 + ], + [ + 6.966261784432982, + 50.8644026232497 + ], + [ + 6.966046621357512, + 50.86448683873779 + ], + [ + 6.965936430199026, + 50.86441304870356 + ], + [ + 6.965483175396881, + 50.86455811604941 + ], + [ + 6.96525826037485, + 50.864534806644535 + ], + [ + 6.9652404393650755, + 50.864538550280855 + ], + [ + 6.9651502065900015, + 50.86455754555095 + ], + [ + 6.965216495807673, + 50.86464464427639 + ], + [ + 6.965185098457684, + 50.864713133558794 + ], + [ + 6.965176913975745, + 50.86471580859421 + ], + [ + 6.963570315653972, + 50.86524382857071 + ], + [ + 6.960442072474366, + 50.86627096491354 + ], + [ + 6.960372249815913, + 50.866253470840356 + ], + [ + 6.960308242268398, + 50.86627701124986 + ], + [ + 6.960300945753613, + 50.86628830769566 + ], + [ + 6.960277830493332, + 50.86632481530054 + ], + [ + 6.960271908223002, + 50.8663269323504 + ], + [ + 6.958341205109696, + 50.86696029658849 + ], + [ + 6.955937736517349, + 50.86774870761266 + ], + [ + 6.955897290099025, + 50.86772980172618 + ], + [ + 6.955816566257614, + 50.8677559896183 + ], + [ + 6.955801752757862, + 50.86776078912922 + ], + [ + 6.95626506302347, + 50.866102037399045 + ], + [ + 6.956333506341877, + 50.86565498194358 + ], + [ + 6.956330814294754, + 50.86563305540797 + ], + [ + 6.956294633815753, + 50.86525076328396 + ], + [ + 6.95629403951097, + 50.86524573249669 + ], + [ + 6.956291703292847, + 50.86522139014283 + ], + [ + 6.9562790173922595, + 50.86515677003438 + ], + [ + 6.956244499794338, + 50.86493474445169 + ], + [ + 6.956185432351713, + 50.86474860783992 + ], + [ + 6.956155375958731, + 50.86465428516258 + ], + [ + 6.956044285026476, + 50.8643970183807 + ], + [ + 6.95591789655826, + 50.86414176521002 + ], + [ + 6.955736693193441, + 50.86377612123608 + ], + [ + 6.955587644786751, + 50.86353786387154 + ], + [ + 6.955553242522924, + 50.86348097289864 + ], + [ + 6.9523026419573615, + 50.86427130225453 + ], + [ + 6.9522890074468195, + 50.86429066060674 + ], + [ + 6.952269788439034, + 50.86431804600849 + ], + [ + 6.9522064739739236, + 50.86433384502868 + ], + [ + 6.952162489346861, + 50.86432196827783 + ], + [ + 6.952129915548481, + 50.8643131653409 + ], + [ + 6.948031012828846, + 50.8653056379344 + ], + [ + 6.947998399323079, + 50.865350490617864 + ], + [ + 6.947928715505266, + 50.86536750819984 + ], + [ + 6.947859550080649, + 50.86534712482522 + ], + [ + 6.947804629690303, + 50.86536375174732 + ], + [ + 6.946149859180512, + 50.86576139590879 + ], + [ + 6.946116575419016, + 50.86580832105769 + ], + [ + 6.946062996769174, + 50.86582107103903 + ], + [ + 6.945990834860186, + 50.86579999254203 + ], + [ + 6.944168165193852, + 50.86624166919269 + ], + [ + 6.9441553210773685, + 50.866196557113526 + ], + [ + 6.944092657839125, + 50.86617450079122 + ], + [ + 6.944024936877594, + 50.86619042011073 + ], + [ + 6.943974034973396, + 50.86623029598164 + ], + [ + 6.940250723541125, + 50.86661851019716 + ], + [ + 6.940068711621232, + 50.866637597154124 + ], + [ + 6.9389205963267715, + 50.86675552723104 + ], + [ + 6.938694190420589, + 50.866785126822 + ], + [ + 6.938324003756076, + 50.866856065657906 + ], + [ + 6.937795044617307, + 50.86695749609207 + ], + [ + 6.937580234357883, + 50.86699868654164 + ], + [ + 6.93739499803504, + 50.867034155865824 + ], + [ + 6.937115658534673, + 50.86708772967724 + ], + [ + 6.936182254683267, + 50.867266654382604 + ], + [ + 6.934342163636792, + 50.86761887283237 + ], + [ + 6.934105835702491, + 50.86766409464898 + ], + [ + 6.933762662886142, + 50.867729768288584 + ], + [ + 6.931348975418734, + 50.86819215625568 + ], + [ + 6.930846730484812, + 50.868288307958046 + ], + [ + 6.9306208552246025, + 50.868359418062234 + ], + [ + 6.9285567734737095, + 50.86904639068007 + ], + [ + 6.927640293087475, + 50.86935132297135 + ], + [ + 6.927527814333042, + 50.86938880469304 + ], + [ + 6.927485869018903, + 50.869415477510216 + ], + [ + 6.925416238600705, + 50.87073034919856 + ], + [ + 6.925295863420301, + 50.87080690536999 + ], + [ + 6.925296830613052, + 50.87075529850456 + ], + [ + 6.923623477368111, + 50.86963652312153 + ], + [ + 6.923401840290238, + 50.86949175032204 + ], + [ + 6.9229896375608435, + 50.8697391662683 + ], + [ + 6.921685332907934, + 50.86985262859634 + ], + [ + 6.921534274895832, + 50.869749594564574 + ], + [ + 6.9213439661075675, + 50.86962272963766 + ], + [ + 6.921286091697091, + 50.86958390256994 + ], + [ + 6.921076563238428, + 50.869446219571635 + ], + [ + 6.921054256795003, + 50.869431371607305 + ], + [ + 6.9210456303863825, + 50.869425663264664 + ], + [ + 6.92055863569692, + 50.86980517154141 + ], + [ + 6.9203557474789, + 50.87000670361556 + ], + [ + 6.919815646299049, + 50.87054332557951 + ], + [ + 6.919811574215254, + 50.870547345204855 + ], + [ + 6.9198049498893015, + 50.870553843015585 + ], + [ + 6.919722275776754, + 50.870636053667226 + ], + [ + 6.91965003849183, + 50.870707825854765 + ], + [ + 6.919433787484547, + 50.87092249831218 + ], + [ + 6.919415704072176, + 50.87094067450612 + ], + [ + 6.919395390660466, + 50.87096104951359 + ], + [ + 6.919356404959797, + 50.871000151420766 + ], + [ + 6.919271134896488, + 50.87110639933611 + ], + [ + 6.9187593283293385, + 50.871742614970316 + ], + [ + 6.918699294244988, + 50.87181730152358 + ], + [ + 6.9182090249111585, + 50.87242726260982 + ], + [ + 6.918160569859308, + 50.87248764832088 + ], + [ + 6.918083304753814, + 50.87258370421321 + ], + [ + 6.918031529426789, + 50.87264806529064 + ], + [ + 6.917970610138275, + 50.87272393456434 + ], + [ + 6.917966670063554, + 50.87272884328039 + ], + [ + 6.917835885683594, + 50.87289123545578 + ], + [ + 6.917758396299257, + 50.87298760461746 + ], + [ + 6.917694620099093, + 50.873066893510355 + ], + [ + 6.917666913887994, + 50.87310078003235 + ], + [ + 6.917600183807642, + 50.87316941504464 + ], + [ + 6.917526047327953, + 50.87324679750868 + ], + [ + 6.917346891373521, + 50.873433569876006 + ], + [ + 6.91732175011503, + 50.87345968370155 + ], + [ + 6.917249046976571, + 50.87353486558583 + ], + [ + 6.917219929651593, + 50.87356592431415 + ], + [ + 6.917148617686285, + 50.8736415545827 + ], + [ + 6.916930038367955, + 50.87387331157454 + ], + [ + 6.916880276113903, + 50.8739260906635 + ], + [ + 6.916806924955675, + 50.87400381767232 + ], + [ + 6.916678114603615, + 50.874139910564395 + ], + [ + 6.916609191233785, + 50.87421268442154 + ], + [ + 6.916526968861225, + 50.874299532760915 + ], + [ + 6.91618172613948, + 50.874652315834645 + ], + [ + 6.916152570655974, + 50.87468238159093 + ], + [ + 6.916086334682439, + 50.87475134115757 + ], + [ + 6.9156798985361325, + 50.875174230939514 + ], + [ + 6.915154583793852, + 50.875722214880085 + ], + [ + 6.914737448093243, + 50.87615799006729 + ], + [ + 6.914444227537509, + 50.87646393745671 + ], + [ + 6.914400718385231, + 50.87651732732977 + ], + [ + 6.914368848224889, + 50.87656171907405 + ], + [ + 6.914266155283312, + 50.876694447469355 + ], + [ + 6.914249009747613, + 50.87671673635883 + ], + [ + 6.914240102250116, + 50.87672829348516 + ], + [ + 6.914235722489459, + 50.876734086411815 + ], + [ + 6.914207373682238, + 50.87677085936873 + ], + [ + 6.914199891508064, + 50.87678045341974 + ], + [ + 6.914110926109425, + 50.876892287809824 + ], + [ + 6.914083113723037, + 50.87692936352756 + ], + [ + 6.914071229192812, + 50.876941530270784 + ], + [ + 6.914052259825945, + 50.87693329000793 + ], + [ + 6.914004423695328, + 50.87699795358178 + ], + [ + 6.914030686819224, + 50.87700836406368 + ], + [ + 6.914077624945479, + 50.877029790231745 + ], + [ + 6.914164566499776, + 50.87707414913714 + ], + [ + 6.914218997748672, + 50.87710181515603 + ], + [ + 6.91424125240417, + 50.877113175641625 + ], + [ + 6.914186969026401, + 50.87710963661571 + ], + [ + 6.9141533541612095, + 50.877118151022785 + ], + [ + 6.9141347666134045, + 50.87712287691079 + ], + [ + 6.914091786309569, + 50.877146482928715 + ], + [ + 6.914063657763043, + 50.877177997457075 + ], + [ + 6.914028319115774, + 50.87728421233115 + ], + [ + 6.9139973776098405, + 50.87743612376615 + ], + [ + 6.913981283729338, + 50.87751767423745 + ], + [ + 6.9139794427654175, + 50.877526905041904 + ], + [ + 6.913976535285737, + 50.87754158596983 + ], + [ + 6.913962379948418, + 50.87761121010726 + ], + [ + 6.9139199691971704, + 50.87782421799007 + ], + [ + 6.9138156665102946, + 50.87834583320513 + ], + [ + 6.913772662937581, + 50.87856084595262 + ], + [ + 6.913755816566901, + 50.878645156647956 + ], + [ + 6.913519004429316, + 50.87982822747716 + ], + [ + 6.9134962985849935, + 50.8799577832766 + ], + [ + 6.913488714042911, + 50.88003634695101 + ], + [ + 6.913486279135451, + 50.880064466900244 + ], + [ + 6.9134841023399565, + 50.88008391415283 + ], + [ + 6.9134836016833265, + 50.88008846960297 + ], + [ + 6.913484122237301, + 50.88016037612513 + ], + [ + 6.913484204178778, + 50.88017053799595 + ], + [ + 6.9134846145184765, + 50.880219296752465 + ], + [ + 6.913489864937141, + 50.88027898420062 + ], + [ + 6.913490098041875, + 50.88028188080619 + ], + [ + 6.91349342902823, + 50.88032038118473 + ], + [ + 6.913495921183328, + 50.88034971887075 + ], + [ + 6.913522696627888, + 50.880479258277056 + ], + [ + 6.913524370025813, + 50.88048444260197 + ], + [ + 6.9135634876361385, + 50.880607764859185 + ], + [ + 6.913571716021266, + 50.880630234842144 + ], + [ + 6.913610299496473, + 50.880734556017465 + ], + [ + 6.913663523919071, + 50.880857643002884 + ], + [ + 6.9136671805327765, + 50.88086543773795 + ], + [ + 6.913705827912305, + 50.88094676172733 + ], + [ + 6.913964789022903, + 50.88149623818589 + ], + [ + 6.9140240366740136, + 50.881621825937366 + ], + [ + 6.914044960669408, + 50.8816759439094 + ], + [ + 6.914059030918887, + 50.88171127882294 + ], + [ + 6.91406074543048, + 50.88171945973974 + ], + [ + 6.914076809111895, + 50.88179623008119 + ], + [ + 6.914078069145529, + 50.88180271381978 + ], + [ + 6.914077990381537, + 50.881806354938924 + ], + [ + 6.914076152021582, + 50.881894869661245 + ], + [ + 6.914057984753659, + 50.88198673950113 + ], + [ + 6.914019142782911, + 50.88206495845471 + ], + [ + 6.91401429747021, + 50.88207479569753 + ], + [ + 6.914011056399386, + 50.882079082706916 + ], + [ + 6.91400086435044, + 50.88209209544437 + ], + [ + 6.913975801115305, + 50.88212433299188 + ], + [ + 6.913950059656533, + 50.88215762148733 + ], + [ + 6.913926039984232, + 50.88217830433796 + ], + [ + 6.91386396576492, + 50.8822318189873 + ], + [ + 6.9138535436875435, + 50.88223864969384 + ], + [ + 6.913774021575205, + 50.88228930978063 + ], + [ + 6.913763751697227, + 50.88229585179827 + ], + [ + 6.913645856381111, + 50.882353913021575 + ], + [ + 6.91356719169737, + 50.882384482449964 + ], + [ + 6.913526202361454, + 50.88240048176018 + ], + [ + 6.913536769931776, + 50.88241664747355 + ], + [ + 6.913562851607056, + 50.88245543052543 + ], + [ + 6.913455032451494, + 50.8824796136505 + ], + [ + 6.9133205265824405, + 50.88250982922364 + ], + [ + 6.91329929880013, + 50.88251450687359 + ], + [ + 6.913213309331959, + 50.88253339061957 + ], + [ + 6.912858191828234, + 50.88261346964198 + ], + [ + 6.91287327567274, + 50.88263880452836 + ], + [ + 6.912899195543239, + 50.882683233900885 + ], + [ + 6.912902592604012, + 50.88268904266031 + ], + [ + 6.913371756924167, + 50.88347876350404 + ], + [ + 6.913384867381911, + 50.88350083332189 + ], + [ + 6.913758975644003, + 50.88413034422879 + ], + [ + 6.913790912691523, + 50.884187438234754 + ], + [ + 6.913812584050341, + 50.884226182835164 + ], + [ + 6.913859966723065, + 50.88431094655718 + ], + [ + 6.9140150551965025, + 50.884588570635444 + ], + [ + 6.914135338937794, + 50.88478238424707 + ], + [ + 6.9142574279804165, + 50.884978679028166 + ], + [ + 6.914319829551072, + 50.885079573522276 + ], + [ + 6.914342180643171, + 50.885115851447566 + ], + [ + 6.914351222350394, + 50.88513035561243 + ], + [ + 6.914576679944175, + 50.88549397073443 + ], + [ + 6.91458835254386, + 50.885510567108106 + ], + [ + 6.914778135776837, + 50.88578220860387 + ], + [ + 6.91483576333247, + 50.88586480216382 + ], + [ + 6.914896815401289, + 50.88595206355482 + ], + [ + 6.914984345649139, + 50.88607729534671 + ], + [ + 6.915085419818527, + 50.886221875675446 + ], + [ + 6.915095080551407, + 50.88623570910122 + ], + [ + 6.915107236524608, + 50.8862530470572 + ], + [ + 6.915359255722152, + 50.886613054585254 + ], + [ + 6.915636800899941, + 50.887011093938675 + ], + [ + 6.915667031665998, + 50.88705436387966 + ], + [ + 6.915691460986467, + 50.88708932776372 + ], + [ + 6.915827960416897, + 50.88725478359579 + ], + [ + 6.9158378217157885, + 50.88726696836092 + ], + [ + 6.915840836047231, + 50.8872706638229 + ], + [ + 6.915880890334542, + 50.88731923297496 + ], + [ + 6.915943566816528, + 50.88741592949195 + ], + [ + 6.915984138688382, + 50.887478550901065 + ], + [ + 6.916086296825789, + 50.88763621956627 + ], + [ + 6.916137151519611, + 50.887714655023956 + ], + [ + 6.9161401113898435, + 50.88771918953381 + ], + [ + 6.916166894591093, + 50.88771000030075 + ], + [ + 6.916170979951253, + 50.88770859196362 + ], + [ + 6.916200063991305, + 50.88775075121954 + ], + [ + 6.916228831981368, + 50.88779244253816 + ], + [ + 6.916258678773852, + 50.88783557774449 + ], + [ + 6.916262832266466, + 50.887841658928195 + ], + [ + 6.916267199209108, + 50.88784799125513 + ], + [ + 6.916276627769739, + 50.88786165764032 + ], + [ + 6.916684894006522, + 50.888453632390764 + ], + [ + 6.917308009132912, + 50.88934734019324 + ], + [ + 6.91732532592897, + 50.88937196691233 + ], + [ + 6.9177756505876165, + 50.8900142237708 + ], + [ + 6.918125707409103, + 50.89051401041927 + ], + [ + 6.918143850146307, + 50.89053990458981 + ], + [ + 6.918201526331306, + 50.89062217704189 + ], + [ + 6.918172293276295, + 50.890630408362625 + ], + [ + 6.918154297189157, + 50.890635470142556 + ], + [ + 6.918211714927677, + 50.890717131789465 + ], + [ + 6.919126750205229, + 50.89201544112526 + ], + [ + 6.919180921017837, + 50.89209240262034 + ], + [ + 6.91923741868403, + 50.89217251655926 + ], + [ + 6.919289183361223, + 50.89214998353444 + ], + [ + 6.91932197037615, + 50.89213573184237 + ], + [ + 6.919810439216217, + 50.89281996831737 + ], + [ + 6.919821777708323, + 50.89283587823422 + ], + [ + 6.919806487508761, + 50.8928543965714 + ], + [ + 6.919744574212369, + 50.89292895114893 + ], + [ + 6.919761637554012, + 50.89295048356389 + ], + [ + 6.919919833502916, + 50.893150067844125 + ], + [ + 6.919941698887258, + 50.89318239483042 + ], + [ + 6.919980689804163, + 50.89324003362712 + ], + [ + 6.919984030324718, + 50.893244881507194 + ], + [ + 6.919988762973839, + 50.89324293324844 + ], + [ + 6.9200765126362755, + 50.89322392830774 + ], + [ + 6.920970074051804, + 50.89303050099462 + ], + [ + 6.921043478387437, + 50.89299828588203 + ], + [ + 6.921224398105117, + 50.89291786947847 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Rondorf", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "206", + "Population_rel": 0.008599867651924562, + "Population_abs": 9357 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.925416238600705, + 50.87073034919856 + ], + [ + 6.927485869018903, + 50.869415477510216 + ], + [ + 6.927527814333042, + 50.86938880469304 + ], + [ + 6.927640293087475, + 50.86935132297135 + ], + [ + 6.9285567734737095, + 50.86904639068007 + ], + [ + 6.9306208552246025, + 50.868359418062234 + ], + [ + 6.930846730484812, + 50.868288307958046 + ], + [ + 6.931348975418734, + 50.86819215625568 + ], + [ + 6.933762662886142, + 50.867729768288584 + ], + [ + 6.934105835702491, + 50.86766409464898 + ], + [ + 6.934342163636792, + 50.86761887283237 + ], + [ + 6.936182254683267, + 50.867266654382604 + ], + [ + 6.937115658534673, + 50.86708772967724 + ], + [ + 6.93739499803504, + 50.867034155865824 + ], + [ + 6.937580234357883, + 50.86699868654164 + ], + [ + 6.937795044617307, + 50.86695749609207 + ], + [ + 6.938324003756076, + 50.866856065657906 + ], + [ + 6.938694190420589, + 50.866785126822 + ], + [ + 6.9389205963267715, + 50.86675552723104 + ], + [ + 6.940068711621232, + 50.866637597154124 + ], + [ + 6.940250723541125, + 50.86661851019716 + ], + [ + 6.943974034973396, + 50.86623029598164 + ], + [ + 6.944024936877594, + 50.86619042011073 + ], + [ + 6.944092657839125, + 50.86617450079122 + ], + [ + 6.943845364198245, + 50.86535999118849 + ], + [ + 6.943838611123204, + 50.865335145296754 + ], + [ + 6.943740170684636, + 50.864976543939555 + ], + [ + 6.943548206893943, + 50.864252918685956 + ], + [ + 6.943546393382915, + 50.86424659190163 + ], + [ + 6.9433942507756345, + 50.8636738057852 + ], + [ + 6.943229230961362, + 50.86305648670821 + ], + [ + 6.9431752909501165, + 50.8628543011896 + ], + [ + 6.94304130797949, + 50.86235988623227 + ], + [ + 6.942829803126352, + 50.86158535751499 + ], + [ + 6.942869603971119, + 50.861537661386095 + ], + [ + 6.942866456246042, + 50.86150127956977 + ], + [ + 6.9428039578813765, + 50.86148012029732 + ], + [ + 6.94271974327301, + 50.861199250969634 + ], + [ + 6.942694610059529, + 50.86111513313341 + ], + [ + 6.942661871773861, + 50.861006086828404 + ], + [ + 6.942510551309451, + 50.860496618945504 + ], + [ + 6.942503105773584, + 50.860423235102864 + ], + [ + 6.942500708154668, + 50.86036778955624 + ], + [ + 6.942479279659468, + 50.85985475538633 + ], + [ + 6.942473980567154, + 50.85970476434678 + ], + [ + 6.94247248644782, + 50.85966585200849 + ], + [ + 6.942464377900765, + 50.859432911120805 + ], + [ + 6.9424880249953915, + 50.8589506160851 + ], + [ + 6.942543527865934, + 50.85891385024203 + ], + [ + 6.942542234289928, + 50.858877902226205 + ], + [ + 6.942484145739286, + 50.858842773859685 + ], + [ + 6.942442201195379, + 50.85811532667686 + ], + [ + 6.942429391858947, + 50.85763521357775 + ], + [ + 6.9424249482669085, + 50.857464180166836 + ], + [ + 6.942421881605653, + 50.85731183516544 + ], + [ + 6.942392203495972, + 50.85578449633385 + ], + [ + 6.942315310638107, + 50.85400691276345 + ], + [ + 6.9423184363887325, + 50.85388022586775 + ], + [ + 6.9423653772427, + 50.85317983811133 + ], + [ + 6.942397051289445, + 50.8526378774879 + ], + [ + 6.942402550459025, + 50.852546770027736 + ], + [ + 6.942406044609013, + 50.85248381588778 + ], + [ + 6.942416771579405, + 50.85232713165973 + ], + [ + 6.942418399549507, + 50.85230221758627 + ], + [ + 6.942419543942389, + 50.85224629390513 + ], + [ + 6.942420395590885, + 50.85223217411046 + ], + [ + 6.942422150868181, + 50.852150266129655 + ], + [ + 6.942422050037332, + 50.8520888683818 + ], + [ + 6.942440966911272, + 50.8518650578024 + ], + [ + 6.942459888004886, + 50.851754064996605 + ], + [ + 6.942621911649932, + 50.85127496535821 + ], + [ + 6.942624217629156, + 50.85126263131523 + ], + [ + 6.942651397656376, + 50.85118096753868 + ], + [ + 6.942842399333708, + 50.850026794362336 + ], + [ + 6.942844249662334, + 50.85000592425883 + ], + [ + 6.942845564998956, + 50.85000069951042 + ], + [ + 6.942884141959739, + 50.84984352146151 + ], + [ + 6.943081395977554, + 50.84897866779537 + ], + [ + 6.9431728683181255, + 50.848677320905665 + ], + [ + 6.943176995956653, + 50.84866371305166 + ], + [ + 6.943266069242105, + 50.848370206042404 + ], + [ + 6.943396960125048, + 50.84793963065909 + ], + [ + 6.943234190487606, + 50.84780385715613 + ], + [ + 6.942996730866166, + 50.8476075667464 + ], + [ + 6.942693940875864, + 50.847357314190695 + ], + [ + 6.9427067710309505, + 50.84712222745036 + ], + [ + 6.942719620856434, + 50.84688714194739 + ], + [ + 6.942746117951897, + 50.8464066167995 + ], + [ + 6.9427657233472875, + 50.84604984499185 + ], + [ + 6.942756854294903, + 50.845352615603765 + ], + [ + 6.942766850403326, + 50.845183790914476 + ], + [ + 6.942770126105084, + 50.84512845158943 + ], + [ + 6.938461297789971, + 50.84434367070938 + ], + [ + 6.938155345311375, + 50.844288161028686 + ], + [ + 6.938177106537173, + 50.844171443954274 + ], + [ + 6.93819406697358, + 50.8440800966072 + ], + [ + 6.938268741449522, + 50.843936164659 + ], + [ + 6.938466074660304, + 50.84360705708554 + ], + [ + 6.9385558185381075, + 50.84345637600717 + ], + [ + 6.939175035930015, + 50.84267078767745 + ], + [ + 6.9396749564994, + 50.842033523190636 + ], + [ + 6.939773803689938, + 50.84191142274584 + ], + [ + 6.940181057856379, + 50.841427636675114 + ], + [ + 6.940256871819387, + 50.84135108802881 + ], + [ + 6.940523581676413, + 50.84108139262759 + ], + [ + 6.940721821043705, + 50.84092138293065 + ], + [ + 6.9409353430274665, + 50.84078511858878 + ], + [ + 6.940947704079655, + 50.84077323905909 + ], + [ + 6.941259728945858, + 50.84047326697017 + ], + [ + 6.941551062308508, + 50.8402611134029 + ], + [ + 6.941429809014355, + 50.84022686358409 + ], + [ + 6.941410274762786, + 50.84022135634622 + ], + [ + 6.941364142238519, + 50.84020834646069 + ], + [ + 6.9412729600033325, + 50.840182705501306 + ], + [ + 6.941104603144986, + 50.84013512336882 + ], + [ + 6.94106124575657, + 50.84012277123201 + ], + [ + 6.940518011529026, + 50.83996919975381 + ], + [ + 6.9403876694053634, + 50.839932360916386 + ], + [ + 6.940818188328787, + 50.83926181719822 + ], + [ + 6.940872320458613, + 50.839177600333336 + ], + [ + 6.940925035783458, + 50.839096330025704 + ], + [ + 6.940868925537537, + 50.83907907675857 + ], + [ + 6.940775071722267, + 50.83905006767565 + ], + [ + 6.939654844234081, + 50.838691744791944 + ], + [ + 6.939701652909329, + 50.83862825960712 + ], + [ + 6.939793975096887, + 50.838502371660034 + ], + [ + 6.93988164985872, + 50.83837921216406 + ], + [ + 6.9398989133010796, + 50.838355119234535 + ], + [ + 6.939904271630955, + 50.838347300113334 + ], + [ + 6.939903973984872, + 50.838344383523825 + ], + [ + 6.939768555462468, + 50.83835215500058 + ], + [ + 6.9396905147923915, + 50.83835656332592 + ], + [ + 6.939548327824161, + 50.83836463141824 + ], + [ + 6.939517405823981, + 50.83836638226559 + ], + [ + 6.939177885528625, + 50.83837565438399 + ], + [ + 6.939014323525164, + 50.838380039826376 + ], + [ + 6.938590142317918, + 50.83837559704476 + ], + [ + 6.938570522809588, + 50.83837501378875 + ], + [ + 6.938536895577689, + 50.838375139034824 + ], + [ + 6.938479997720967, + 50.838373892464034 + ], + [ + 6.938474915652148, + 50.838373698319735 + ], + [ + 6.9384547777711525, + 50.83837285585197 + ], + [ + 6.938325922067184, + 50.838367199487244 + ], + [ + 6.938154189578066, + 50.83835960870732 + ], + [ + 6.938055552621283, + 50.838354205565 + ], + [ + 6.938020287620431, + 50.83835227088365 + ], + [ + 6.937986393846564, + 50.838349582456416 + ], + [ + 6.937945302232808, + 50.8383463323735 + ], + [ + 6.937746720120268, + 50.8383318572853 + ], + [ + 6.937378504062485, + 50.838290654685636 + ], + [ + 6.937305180463069, + 50.83828259559854 + ], + [ + 6.937141789590524, + 50.83825740491244 + ], + [ + 6.936850143171226, + 50.838212324728175 + ], + [ + 6.936240842738839, + 50.83811745240304 + ], + [ + 6.93555204531272, + 50.838010129917784 + ], + [ + 6.935077925746176, + 50.83793617313071 + ], + [ + 6.934871549859307, + 50.83790400440817 + ], + [ + 6.9341742513525135, + 50.837795282975925 + ], + [ + 6.934119103334086, + 50.83778672351578 + ], + [ + 6.933781802597858, + 50.83773347271709 + ], + [ + 6.933735217811689, + 50.837726140430895 + ], + [ + 6.933487039944537, + 50.837686960901394 + ], + [ + 6.93279711540027, + 50.837579197361705 + ], + [ + 6.93266274797364, + 50.837579244424404 + ], + [ + 6.932530603958629, + 50.837567550487265 + ], + [ + 6.931994526904174, + 50.837520181564045 + ], + [ + 6.931820871751429, + 50.83749326884645 + ], + [ + 6.9316094023022865, + 50.837486377698006 + ], + [ + 6.931532953403256, + 50.83748393651934 + ], + [ + 6.931324712191939, + 50.83748418122437 + ], + [ + 6.931310271860532, + 50.83744464142831 + ], + [ + 6.931300076604985, + 50.837370170724434 + ], + [ + 6.930603645632893, + 50.83747051352885 + ], + [ + 6.930431965368177, + 50.83749525716007 + ], + [ + 6.9306078468203225, + 50.837606664493805 + ], + [ + 6.930794226830198, + 50.8377157952493 + ], + [ + 6.9308087302902335, + 50.83772426668376 + ], + [ + 6.930813429148356, + 50.83772705271282 + ], + [ + 6.930881548651159, + 50.837767204780405 + ], + [ + 6.930875731475872, + 50.83778571633986 + ], + [ + 6.930853764930431, + 50.83785520955904 + ], + [ + 6.930827298904302, + 50.837938918817464 + ], + [ + 6.930101301107904, + 50.84023937515194 + ], + [ + 6.9297815717167675, + 50.84125242139408 + ], + [ + 6.929773350347361, + 50.84127847031126 + ], + [ + 6.929762903852258, + 50.84127748445512 + ], + [ + 6.929630752987116, + 50.841265019092056 + ], + [ + 6.929145312442371, + 50.84121919888764 + ], + [ + 6.929133686218716, + 50.84121810209243 + ], + [ + 6.929127924714327, + 50.841217559107506 + ], + [ + 6.928412261684167, + 50.841150010537795 + ], + [ + 6.928278322163624, + 50.841137375164855 + ], + [ + 6.928040481690073, + 50.84112550872425 + ], + [ + 6.927974290298319, + 50.84112225541086 + ], + [ + 6.927902160375877, + 50.841118640245284 + ], + [ + 6.927910438769627, + 50.84115448331681 + ], + [ + 6.928118663325743, + 50.84204864859373 + ], + [ + 6.928173314258055, + 50.84228256656843 + ], + [ + 6.9282364280905435, + 50.8425535396051 + ], + [ + 6.92829022151756, + 50.842785964568044 + ], + [ + 6.9283058802793045, + 50.84287031522371 + ], + [ + 6.928319591861038, + 50.84293811394254 + ], + [ + 6.928334580553917, + 50.84301447327711 + ], + [ + 6.928395844853486, + 50.84333150093275 + ], + [ + 6.928423472523212, + 50.84347445450299 + ], + [ + 6.928479584498309, + 50.84376514900233 + ], + [ + 6.9285097176175965, + 50.84392066028415 + ], + [ + 6.928514400414209, + 50.843955918694 + ], + [ + 6.928463302812942, + 50.84398681024393 + ], + [ + 6.928331739994792, + 50.84397463001325 + ], + [ + 6.926104734064847, + 50.84376346367343 + ], + [ + 6.925069820454757, + 50.84366529194869 + ], + [ + 6.924928793853197, + 50.84365187375057 + ], + [ + 6.924904362381045, + 50.84373669533914 + ], + [ + 6.924880279280489, + 50.843820354807285 + ], + [ + 6.924796746608591, + 50.844111363213294 + ], + [ + 6.924703670166041, + 50.84443519690685 + ], + [ + 6.9246862647666765, + 50.84449596235414 + ], + [ + 6.924634010791816, + 50.8446780151705 + ], + [ + 6.924412566472422, + 50.845447950039606 + ], + [ + 6.924391174424168, + 50.84552230898467 + ], + [ + 6.9243674677687785, + 50.845604741066154 + ], + [ + 6.924198504450632, + 50.84619260705367 + ], + [ + 6.924197758253499, + 50.846195207411725 + ], + [ + 6.924184769395302, + 50.846240617780964 + ], + [ + 6.924122031993234, + 50.84645900634785 + ], + [ + 6.924083198801307, + 50.846607899652135 + ], + [ + 6.924062704325054, + 50.84668595122142 + ], + [ + 6.924055183232827, + 50.846714530500975 + ], + [ + 6.924036693368711, + 50.846784994483215 + ], + [ + 6.924024808165171, + 50.84682988933397 + ], + [ + 6.923961179698676, + 50.84707253296525 + ], + [ + 6.923937703725551, + 50.847162371058666 + ], + [ + 6.923905831051829, + 50.847284568270474 + ], + [ + 6.92370881362542, + 50.84803601403569 + ], + [ + 6.923626833955767, + 50.84834925066082 + ], + [ + 6.923598955022534, + 50.848455602306714 + ], + [ + 6.923545067917948, + 50.84866123367164 + ], + [ + 6.923522992761007, + 50.848745563539346 + ], + [ + 6.923457482839518, + 50.84899541797634 + ], + [ + 6.923434911312865, + 50.849081447835715 + ], + [ + 6.923433372450944, + 50.849087210733586 + ], + [ + 6.923369948094664, + 50.84911385137779 + ], + [ + 6.923360911736337, + 50.84911245925165 + ], + [ + 6.923230833513377, + 50.84909189225629 + ], + [ + 6.923170050153182, + 50.84908252045392 + ], + [ + 6.922902505447207, + 50.84906692840762 + ], + [ + 6.921987988598254, + 50.84907971461632 + ], + [ + 6.921458441102355, + 50.849087190991085 + ], + [ + 6.920487774806835, + 50.849100889681296 + ], + [ + 6.920435553806473, + 50.84910153182547 + ], + [ + 6.920364083198319, + 50.849102408197595 + ], + [ + 6.920038991309436, + 50.849106953588965 + ], + [ + 6.91993302612658, + 50.849108400964184 + ], + [ + 6.919904794561598, + 50.8491088005661 + ], + [ + 6.919896477809787, + 50.84910915053501 + ], + [ + 6.919903201684053, + 50.84915418162407 + ], + [ + 6.919914608481359, + 50.849226412915215 + ], + [ + 6.919927788920097, + 50.84930821119517 + ], + [ + 6.91993474632826, + 50.84935106002008 + ], + [ + 6.919945766136987, + 50.849425413268726 + ], + [ + 6.919972346906228, + 50.84960479718233 + ], + [ + 6.9200182820741, + 50.849915976958314 + ], + [ + 6.920021738665941, + 50.84993957660317 + ], + [ + 6.920044621147084, + 50.85009464151209 + ], + [ + 6.920045761907484, + 50.85010237144803 + ], + [ + 6.92007819254721, + 50.85032703792194 + ], + [ + 6.920090606593756, + 50.850411576443506 + ], + [ + 6.920091387685292, + 50.85041685271777 + ], + [ + 6.920059205874569, + 50.850409423768895 + ], + [ + 6.9191093573000435, + 50.85018997198807 + ], + [ + 6.9188140595578, + 50.85012174132129 + ], + [ + 6.91854757816378, + 50.85005988899851 + ], + [ + 6.918539583940653, + 50.850058064497276 + ], + [ + 6.918873019368963, + 50.850520509278276 + ], + [ + 6.9188753198980555, + 50.85052366131915 + ], + [ + 6.918910362316855, + 50.850571638597785 + ], + [ + 6.918942350593658, + 50.8506160960212 + ], + [ + 6.919154968680098, + 50.85091141974599 + ], + [ + 6.919438890272347, + 50.85130632288357 + ], + [ + 6.91981777237371, + 50.85183161269476 + ], + [ + 6.9198738362878744, + 50.8519092433319 + ], + [ + 6.9199148607146, + 50.851965812720316 + ], + [ + 6.919954118923194, + 50.852019929436246 + ], + [ + 6.919984381020424, + 50.85206120340286 + ], + [ + 6.919991249461116, + 50.85207058421413 + ], + [ + 6.920051197267073, + 50.85215251924858 + ], + [ + 6.920412814964788, + 50.852647420779974 + ], + [ + 6.920473478405169, + 50.852730420627566 + ], + [ + 6.920551965001515, + 50.85283778609521 + ], + [ + 6.920584116957938, + 50.852881794456906 + ], + [ + 6.920399979663903, + 50.8530256518798 + ], + [ + 6.920398032025184, + 50.85303091458321 + ], + [ + 6.920386149320058, + 50.85306209335958 + ], + [ + 6.920309885765386, + 50.85326302072229 + ], + [ + 6.920246823586939, + 50.85342937059267 + ], + [ + 6.920161306512867, + 50.85368438784196 + ], + [ + 6.9201573140113855, + 50.853696297470904 + ], + [ + 6.920068829835667, + 50.85395988962236 + ], + [ + 6.920009271434169, + 50.85413900304592 + ], + [ + 6.919975341528087, + 50.854241080832196 + ], + [ + 6.919960560143599, + 50.85428514833931 + ], + [ + 6.9199360450921406, + 50.8542820076677 + ], + [ + 6.9197433020137575, + 50.8542573011891 + ], + [ + 6.919712022703402, + 50.85433166821552 + ], + [ + 6.919603038354559, + 50.85459092453642 + ], + [ + 6.919519863591193, + 50.854788716060746 + ], + [ + 6.919313277498163, + 50.85527994131097 + ], + [ + 6.919182048497621, + 50.85559192849715 + ], + [ + 6.9191473695856125, + 50.855674506443464 + ], + [ + 6.918964153345481, + 50.85611005099182 + ], + [ + 6.91892948757874, + 50.85619253916678 + ], + [ + 6.9188982192563335, + 50.856266694807694 + ], + [ + 6.918894893984761, + 50.85627458431881 + ], + [ + 6.918892653651139, + 50.85627993531189 + ], + [ + 6.917958571179733, + 50.85613029729832 + ], + [ + 6.917922861084238, + 50.85612457752221 + ], + [ + 6.917792781059496, + 50.85610373023702 + ], + [ + 6.917655063602411, + 50.85608167350876 + ], + [ + 6.917645294680356, + 50.85610594732609 + ], + [ + 6.917628204150269, + 50.856147817481606 + ], + [ + 6.91726566578166, + 50.856095343683315 + ], + [ + 6.917134777815404, + 50.85607681965839 + ], + [ + 6.9171259213577505, + 50.85607563712959 + ], + [ + 6.917104575964259, + 50.85616473389611 + ], + [ + 6.91653154819719, + 50.858521167416086 + ], + [ + 6.91651106850827, + 50.85860497579896 + ], + [ + 6.916509753174534, + 50.85861035136053 + ], + [ + 6.916435538081929, + 50.85860794668028 + ], + [ + 6.916357405323638, + 50.858573222474334 + ], + [ + 6.9164108208469015, + 50.85865213398757 + ], + [ + 6.916430891389508, + 50.858681800032926 + ], + [ + 6.916432961363133, + 50.85868490123078 + ], + [ + 6.916444505441983, + 50.85870734307472 + ], + [ + 6.916477176108429, + 50.858770826439944 + ], + [ + 6.916571899751719, + 50.85895523499308 + ], + [ + 6.916801748816931, + 50.859402983504914 + ], + [ + 6.916811045829311, + 50.85942107529718 + ], + [ + 6.916830084939236, + 50.85945817701137 + ], + [ + 6.917037649991514, + 50.859858513174586 + ], + [ + 6.917041153049632, + 50.859865235716164 + ], + [ + 6.917077918534995, + 50.859938460465166 + ], + [ + 6.917119592892033, + 50.86001923059921 + ], + [ + 6.917141799196109, + 50.86006125990806 + ], + [ + 6.917463000707942, + 50.86063176166267 + ], + [ + 6.917503366944097, + 50.86070323286486 + ], + [ + 6.917511034431727, + 50.860716893883975 + ], + [ + 6.917533433173074, + 50.86075669245535 + ], + [ + 6.91755082334051, + 50.860787579486946 + ], + [ + 6.917555953757043, + 50.86079665958428 + ], + [ + 6.917587823510531, + 50.860826996508415 + ], + [ + 6.91759036373023, + 50.86082933889595 + ], + [ + 6.917592652231608, + 50.86083149421394 + ], + [ + 6.9176677773518795, + 50.86090263061102 + ], + [ + 6.91787290916056, + 50.86109764361687 + ], + [ + 6.918075042731682, + 50.86128898898662 + ], + [ + 6.9180905956882235, + 50.861303742236636 + ], + [ + 6.918263474806182, + 50.861467820909816 + ], + [ + 6.918909559944433, + 50.86206017087174 + ], + [ + 6.919079479207493, + 50.86221552804983 + ], + [ + 6.91913198428351, + 50.86226353687912 + ], + [ + 6.919204411326591, + 50.86234136865721 + ], + [ + 6.919440801303511, + 50.862595343649744 + ], + [ + 6.919966508679376, + 50.863249042235495 + ], + [ + 6.92002723892062, + 50.8633245945386 + ], + [ + 6.920031285563894, + 50.86332943255575 + ], + [ + 6.920100574942101, + 50.863334085504526 + ], + [ + 6.9201433368587795, + 50.863384567969725 + ], + [ + 6.920132275788886, + 50.863442398604775 + ], + [ + 6.920207498674603, + 50.863518030189155 + ], + [ + 6.920292648014052, + 50.86360373107136 + ], + [ + 6.920540339671275, + 50.86385314019717 + ], + [ + 6.920622626791577, + 50.863936089840195 + ], + [ + 6.920714851311523, + 50.864028931748415 + ], + [ + 6.920970641439079, + 50.864265712895055 + ], + [ + 6.9210567713477555, + 50.864345406545866 + ], + [ + 6.921309404712352, + 50.86457926880531 + ], + [ + 6.921314339018802, + 50.86458383748398 + ], + [ + 6.921389825517522, + 50.86465362602676 + ], + [ + 6.921427905874648, + 50.86468893101073 + ], + [ + 6.921535191518132, + 50.86478824366337 + ], + [ + 6.921595406065402, + 50.86483401788042 + ], + [ + 6.921767569257453, + 50.86496474694257 + ], + [ + 6.922032627889509, + 50.86512293291257 + ], + [ + 6.922462818501516, + 50.86524870919784 + ], + [ + 6.923089557393278, + 50.8653935144512 + ], + [ + 6.923097550374766, + 50.86539542943579 + ], + [ + 6.92317112632175, + 50.86539487652256 + ], + [ + 6.923229558874648, + 50.865420650786646 + ], + [ + 6.923233792863913, + 50.86542253212857 + ], + [ + 6.923248093066572, + 50.865428893535096 + ], + [ + 6.92322575637218, + 50.8654438827133 + ], + [ + 6.923197702022786, + 50.86546271213952 + ], + [ + 6.923160054136632, + 50.86548794533224 + ], + [ + 6.923115585161661, + 50.86557394403218 + ], + [ + 6.922878382123567, + 50.86603119950128 + ], + [ + 6.922859900928767, + 50.86610165251106 + ], + [ + 6.922837174263202, + 50.86618767932841 + ], + [ + 6.922806729240064, + 50.866303427590836 + ], + [ + 6.922782291983035, + 50.86639599039116 + ], + [ + 6.922748456467512, + 50.86652409076038 + ], + [ + 6.922672868412192, + 50.86681126941409 + ], + [ + 6.922650648389178, + 50.86689550642987 + ], + [ + 6.922628098923942, + 50.866980726005146 + ], + [ + 6.922589278550558, + 50.86706745554605 + ], + [ + 6.922380114939387, + 50.867533123860476 + ], + [ + 6.922306579749248, + 50.86769711963558 + ], + [ + 6.922232234620462, + 50.867857327997164 + ], + [ + 6.92218969132011, + 50.86794883072244 + ], + [ + 6.922188009730462, + 50.86795244690387 + ], + [ + 6.922185435644418, + 50.86795797908144 + ], + [ + 6.922182789196495, + 50.86796366826294 + ], + [ + 6.92218006394664, + 50.86796953142217 + ], + [ + 6.922177261954421, + 50.86797555420549 + ], + [ + 6.92217438274017, + 50.86798174739706 + ], + [ + 6.922171439143842, + 50.867988077948084 + ], + [ + 6.922168420225132, + 50.867994568148525 + ], + [ + 6.922165327284216, + 50.868001220719634 + ], + [ + 6.922162170040979, + 50.86800800885287 + ], + [ + 6.922158952955686, + 50.86801492813061 + ], + [ + 6.9221560454958055, + 50.86802118107787 + ], + [ + 6.922150508879475, + 50.868033085739356 + ], + [ + 6.922140391019483, + 50.86805484347818 + ], + [ + 6.9221365686727605, + 50.86806303630553 + ], + [ + 6.922069851395276, + 50.86820650874427 + ], + [ + 6.921965597363247, + 50.868432776917174 + ], + [ + 6.92196259440709, + 50.86843925840258 + ], + [ + 6.921946411228872, + 50.86847425594839 + ], + [ + 6.921919727433402, + 50.868531718509914 + ], + [ + 6.921914973867789, + 50.86854196064345 + ], + [ + 6.921913152400647, + 50.86854453463428 + ], + [ + 6.921911199631213, + 50.86854692910659 + ], + [ + 6.921808508789975, + 50.868682615005376 + ], + [ + 6.921766676670763, + 50.86873790010324 + ], + [ + 6.921701436392415, + 50.86882415874258 + ], + [ + 6.92166489745875, + 50.8688724356057 + ], + [ + 6.921597406055078, + 50.86896171561224 + ], + [ + 6.921539716698882, + 50.869038035500495 + ], + [ + 6.9215348882395356, + 50.869044335156204 + ], + [ + 6.921444470906153, + 50.869114758371865 + ], + [ + 6.9213957530434485, + 50.869152570530616 + ], + [ + 6.921278689139416, + 50.86924390100108 + ], + [ + 6.9212758310620615, + 50.86924613273289 + ], + [ + 6.921104652415246, + 50.86937969660192 + ], + [ + 6.921045662651004, + 50.869425672833486 + ], + [ + 6.9210765455962004, + 50.869446232748146 + ], + [ + 6.921286091697091, + 50.86958390256994 + ], + [ + 6.9213439661075675, + 50.86962272963766 + ], + [ + 6.921534274895832, + 50.869749594564574 + ], + [ + 6.921685331927498, + 50.86985261868558 + ], + [ + 6.9229896375608435, + 50.8697391662683 + ], + [ + 6.923401840290238, + 50.86949175032204 + ], + [ + 6.923623477368111, + 50.86963652312153 + ], + [ + 6.925296830613052, + 50.87075529850456 + ], + [ + 6.925295863420301, + 50.87080690536999 + ], + [ + 6.925416238600705, + 50.87073034919856 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Meschenich", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "213", + "Population_rel": 0.0073747288702621224, + "Population_abs": 8024 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.849501526802686, + 50.94220412958467 + ], + [ + 6.849509552353188, + 50.940381409950454 + ], + [ + 6.849355948299579, + 50.93802734231512 + ], + [ + 6.849289228882518, + 50.93654450975875 + ], + [ + 6.8492472844043135, + 50.935593481191034 + ], + [ + 6.849244923291713, + 50.93556204628063 + ], + [ + 6.849054018711313, + 50.933020541496454 + ], + [ + 6.849029035222126, + 50.93253152690051 + ], + [ + 6.848557717117783, + 50.93099814984052 + ], + [ + 6.848555335362258, + 50.93099394086248 + ], + [ + 6.847842100257861, + 50.92973321241135 + ], + [ + 6.8469633273000134, + 50.928387383293256 + ], + [ + 6.846321690697116, + 50.927475710401886 + ], + [ + 6.8433863391924925, + 50.923304507263595 + ], + [ + 6.843274721977614, + 50.92319618883029 + ], + [ + 6.84266412062977, + 50.9226036352007 + ], + [ + 6.842614363010803, + 50.92251111597041 + ], + [ + 6.8428110595787, + 50.923029873136414 + ], + [ + 6.842851035453172, + 50.923133551024165 + ], + [ + 6.842906801542546, + 50.92333487274448 + ], + [ + 6.842909344574041, + 50.92334400450484 + ], + [ + 6.842974632251383, + 50.92357716435978 + ], + [ + 6.842977926446028, + 50.92358900727758 + ], + [ + 6.842978888409725, + 50.92360318688599 + ], + [ + 6.842979519563444, + 50.92360999885509 + ], + [ + 6.8429813021005605, + 50.92362618848023 + ], + [ + 6.843012742449846, + 50.92404588899313 + ], + [ + 6.843013015782858, + 50.92405729833757 + ], + [ + 6.843015690411056, + 50.92409228555498 + ], + [ + 6.842973925504992, + 50.92440756013234 + ], + [ + 6.84288755114363, + 50.92468659938368 + ], + [ + 6.842881901591612, + 50.92470573386953 + ], + [ + 6.842878868133945, + 50.924716274445146 + ], + [ + 6.842861698726185, + 50.924759994066285 + ], + [ + 6.842851931315716, + 50.92478502530931 + ], + [ + 6.842743809059775, + 50.92506091846494 + ], + [ + 6.8427119226295074, + 50.92514261450292 + ], + [ + 6.842709292465596, + 50.92514822036831 + ], + [ + 6.842423850755423, + 50.925539747962766 + ], + [ + 6.8424045430596605, + 50.92556621902126 + ], + [ + 6.842344091097457, + 50.92564913712867 + ], + [ + 6.8423230128564, + 50.92567339801557 + ], + [ + 6.842090295655656, + 50.925941370531135 + ], + [ + 6.841668227293159, + 50.92621208941935 + ], + [ + 6.8413244187228965, + 50.92639853943612 + ], + [ + 6.84130932660043, + 50.92640672359369 + ], + [ + 6.841298203247353, + 50.92641137728651 + ], + [ + 6.840951265828444, + 50.92655654381218 + ], + [ + 6.840809071456198, + 50.92660961371551 + ], + [ + 6.840671331610339, + 50.92666094998347 + ], + [ + 6.840410904209691, + 50.926732014388236 + ], + [ + 6.840388862025256, + 50.9267371450125 + ], + [ + 6.840215875638398, + 50.92677745500449 + ], + [ + 6.840036285246227, + 50.92681922096483 + ], + [ + 6.839822695159944, + 50.92686888724845 + ], + [ + 6.839359334837342, + 50.926977542962014 + ], + [ + 6.839209723200068, + 50.927012278023696 + ], + [ + 6.8385530134720725, + 50.927164707607595 + ], + [ + 6.838427421038, + 50.92719395047164 + ], + [ + 6.837777899081721, + 50.9273447100465 + ], + [ + 6.8365578708293375, + 50.92755324679826 + ], + [ + 6.83641990154763, + 50.92758234804479 + ], + [ + 6.836340987861275, + 50.92759005904751 + ], + [ + 6.8362108671734605, + 50.927612560093586 + ], + [ + 6.835535038579197, + 50.92772917059618 + ], + [ + 6.835503617242192, + 50.927734603054 + ], + [ + 6.835499105293311, + 50.92773538369964 + ], + [ + 6.835446557518769, + 50.92774446893474 + ], + [ + 6.835425327791885, + 50.927748139588985 + ], + [ + 6.835181715690426, + 50.92778892937906 + ], + [ + 6.834329112413764, + 50.92793168228732 + ], + [ + 6.833567120734981, + 50.92805598513768 + ], + [ + 6.833558151028551, + 50.92805738809303 + ], + [ + 6.833549192404484, + 50.92805879754913 + ], + [ + 6.833228185641192, + 50.92811116454728 + ], + [ + 6.832267618159743, + 50.92826016631323 + ], + [ + 6.832129861435597, + 50.92828153168053 + ], + [ + 6.8302016268099, + 50.92856651602759 + ], + [ + 6.8300592596695235, + 50.92858293653134 + ], + [ + 6.828802291127542, + 50.92872756838398 + ], + [ + 6.827684756417266, + 50.92885751348643 + ], + [ + 6.826706563006169, + 50.928953437149225 + ], + [ + 6.826565594809028, + 50.92896727120947 + ], + [ + 6.82526555912588, + 50.92907670628902 + ], + [ + 6.8244673521973995, + 50.92913980893838 + ], + [ + 6.824371935606483, + 50.92914729421698 + ], + [ + 6.824305367709531, + 50.92915261898123 + ], + [ + 6.823912476752629, + 50.929185358307784 + ], + [ + 6.823892592870188, + 50.92918705351012 + ], + [ + 6.823855237226716, + 50.9291902334482 + ], + [ + 6.823839041245083, + 50.929191613357105 + ], + [ + 6.823769619502074, + 50.92919752317871 + ], + [ + 6.823710486248709, + 50.92920284411611 + ], + [ + 6.823702179932843, + 50.929203591335344 + ], + [ + 6.823638460916835, + 50.92920934568394 + ], + [ + 6.823568562050008, + 50.92921565841222 + ], + [ + 6.823450263141778, + 50.929224187672766 + ], + [ + 6.8231880890858605, + 50.929246100457384 + ], + [ + 6.8230339136437985, + 50.929256270750145 + ], + [ + 6.82251686609475, + 50.92929036100913 + ], + [ + 6.822453640872576, + 50.92929440428263 + ], + [ + 6.822393412362937, + 50.929298213825106 + ], + [ + 6.822172671725922, + 50.92931287113292 + ], + [ + 6.822121420670788, + 50.929311803337924 + ], + [ + 6.822007744809858, + 50.929309433998554 + ], + [ + 6.821539381019908, + 50.92934227609869 + ], + [ + 6.821057512070024, + 50.92937606220331 + ], + [ + 6.821001604417931, + 50.92937861608927 + ], + [ + 6.820941267807477, + 50.92938138406497 + ], + [ + 6.82093471158071, + 50.929381681684475 + ], + [ + 6.820928628484635, + 50.92938196565165 + ], + [ + 6.820880659343933, + 50.92938418290993 + ], + [ + 6.820882013112734, + 50.929396171026106 + ], + [ + 6.820882471104255, + 50.929400225950985 + ], + [ + 6.820883001441969, + 50.929404103247066 + ], + [ + 6.8208899065564905, + 50.929463412298404 + ], + [ + 6.8209036046697324, + 50.92957834078874 + ], + [ + 6.8209061219558835, + 50.92960060282018 + ], + [ + 6.820906737782589, + 50.92960569589413 + ], + [ + 6.820907353609412, + 50.92961078896809 + ], + [ + 6.820919272993064, + 50.92971201345524 + ], + [ + 6.820919669669847, + 50.929715705678596 + ], + [ + 6.820923669286103, + 50.92974888075001 + ], + [ + 6.8209259904130235, + 50.92976925039056 + ], + [ + 6.820926975804609, + 50.92977709351577 + ], + [ + 6.820927961196474, + 50.92978493664095 + ], + [ + 6.820932047843941, + 50.92981387539131 + ], + [ + 6.820932578567947, + 50.92982468612342 + ], + [ + 6.8209338519246385, + 50.929835502625096 + ], + [ + 6.820924818679229, + 50.929879684907256 + ], + [ + 6.820925867216984, + 50.92988307181393 + ], + [ + 6.820926855697154, + 50.929886464794556 + ], + [ + 6.820953156153188, + 50.929982734070585 + ], + [ + 6.821005548417866, + 50.930098025142655 + ], + [ + 6.82106988968205, + 50.93019213366938 + ], + [ + 6.821146144450475, + 50.930266823580524 + ], + [ + 6.821196833629282, + 50.930301248827725 + ], + [ + 6.82127773105741, + 50.93035615050262 + ], + [ + 6.821458594196073, + 50.9304487255249 + ], + [ + 6.821612364224307, + 50.93051596775581 + ], + [ + 6.821874842790625, + 50.930630861963714 + ], + [ + 6.821878401628033, + 50.93063236740429 + ], + [ + 6.821881960465687, + 50.930633872844766 + ], + [ + 6.821829989224593, + 50.93074595503166 + ], + [ + 6.821711208215764, + 50.93100168635842 + ], + [ + 6.821642385145602, + 50.93112829576789 + ], + [ + 6.8213198683553795, + 50.931723077713066 + ], + [ + 6.821317177734582, + 50.93172823857964 + ], + [ + 6.821273615317458, + 50.931808377205066 + ], + [ + 6.821181666211921, + 50.931978254424145 + ], + [ + 6.821179104653695, + 50.93198287626159 + ], + [ + 6.821146238857421, + 50.9320435906336 + ], + [ + 6.821083828435843, + 50.93215836107661 + ], + [ + 6.821042876991453, + 50.932233777970886 + ], + [ + 6.821026146605694, + 50.93226428428119 + ], + [ + 6.821023623416291, + 50.93226887625207 + ], + [ + 6.821022125216824, + 50.93227160582538 + ], + [ + 6.821013831415385, + 50.93228702130355 + ], + [ + 6.821007870782685, + 50.93229810388633 + ], + [ + 6.82095654581185, + 50.9323934735188 + ], + [ + 6.820951050803521, + 50.9324036375161 + ], + [ + 6.820946649546426, + 50.93241174703031 + ], + [ + 6.820941688672381, + 50.93242089748848 + ], + [ + 6.820923268479468, + 50.932454879873674 + ], + [ + 6.820805130879693, + 50.93267929100299 + ], + [ + 6.820697090250924, + 50.932884524782004 + ], + [ + 6.8206769487566214, + 50.932884661383255 + ], + [ + 6.820664639378686, + 50.9328847409499 + ], + [ + 6.820613918130561, + 50.93288507377188 + ], + [ + 6.820107959559891, + 50.93288837023259 + ], + [ + 6.820062315510637, + 50.932888664523766 + ], + [ + 6.8185066583873875, + 50.93289888453865 + ], + [ + 6.818401132193098, + 50.93289958528293 + ], + [ + 6.817791744110059, + 50.93290362862556 + ], + [ + 6.817755241819168, + 50.9329039211383 + ], + [ + 6.8177352117386345, + 50.93290407910137 + ], + [ + 6.817723077934976, + 50.93290432982687 + ], + [ + 6.8177241788101, + 50.932948606894776 + ], + [ + 6.8177243217007195, + 50.93295400593089 + ], + [ + 6.817759961346314, + 50.934293144117945 + ], + [ + 6.81779248676253, + 50.9357868466675 + ], + [ + 6.817792650099705, + 50.93579199155501 + ], + [ + 6.817792800009998, + 50.93581122429471 + ], + [ + 6.817792988142548, + 50.93583730123573 + ], + [ + 6.817809906957124, + 50.93653837830848 + ], + [ + 6.817818956007948, + 50.93690509803573 + ], + [ + 6.817855531115881, + 50.938392167100474 + ], + [ + 6.817856064682066, + 50.93841384615941 + ], + [ + 6.817856111607037, + 50.93841962294085 + ], + [ + 6.817856186138899, + 50.9384284275964 + ], + [ + 6.81785634887857, + 50.93844528886788 + ], + [ + 6.8178563960293745, + 50.93845206398012 + ], + [ + 6.817856401313536, + 50.93845882122124 + ], + [ + 6.817857013587244, + 50.938500524046226 + ], + [ + 6.817855325561597, + 50.93850878849446 + ], + [ + 6.817854389575858, + 50.93851333451896 + ], + [ + 6.817853223037504, + 50.93852040262939 + ], + [ + 6.817839886338836, + 50.93858996242428 + ], + [ + 6.817837248253029, + 50.938603711600074 + ], + [ + 6.817828965519979, + 50.93864686974518 + ], + [ + 6.817821647369543, + 50.93868459739695 + ], + [ + 6.817812959262659, + 50.93868470479625 + ], + [ + 6.817426776529067, + 50.938690798419366 + ], + [ + 6.817131623067164, + 50.93869535525386 + ], + [ + 6.816550597379106, + 50.93870382004467 + ], + [ + 6.816344676686146, + 50.93870678097471 + ], + [ + 6.816324969887812, + 50.938707064378356 + ], + [ + 6.815970861150298, + 50.93871213158648 + ], + [ + 6.815683555074441, + 50.93871628925034 + ], + [ + 6.8155809033859285, + 50.93871775813316 + ], + [ + 6.815550087670649, + 50.938718198672014 + ], + [ + 6.8154911366742335, + 50.93871929087933 + ], + [ + 6.815393086408162, + 50.93872110653346 + ], + [ + 6.815266144299357, + 50.938723497509635 + ], + [ + 6.814739428098727, + 50.938733455413 + ], + [ + 6.814214706665585, + 50.938741151240365 + ], + [ + 6.813999722130476, + 50.9387443007655 + ], + [ + 6.813955170034539, + 50.93874495312343 + ], + [ + 6.813864688488196, + 50.93874630664257 + ], + [ + 6.813469315220849, + 50.93875226721243 + ], + [ + 6.813403159486986, + 50.93875294549563 + ], + [ + 6.813364625487586, + 50.9387535124936 + ], + [ + 6.812300396659425, + 50.93876909888595 + ], + [ + 6.812289971153242, + 50.93876925245899 + ], + [ + 6.8122655155973195, + 50.938769597275204 + ], + [ + 6.812210653177913, + 50.938770374116466 + ], + [ + 6.81215334017276, + 50.938771198537786 + ], + [ + 6.812144228683712, + 50.93877131826571 + ], + [ + 6.81210463890007, + 50.93877193611121 + ], + [ + 6.811993258295003, + 50.93877370771268 + ], + [ + 6.811434409763899, + 50.9387833730796 + ], + [ + 6.811404372512756, + 50.93878387568657 + ], + [ + 6.811027023199131, + 50.93879039346529 + ], + [ + 6.810495030617561, + 50.938795544726304 + ], + [ + 6.809879850638459, + 50.93880378985834 + ], + [ + 6.809719042801361, + 50.93880589915103 + ], + [ + 6.809407537440535, + 50.93881003698863 + ], + [ + 6.809344359060779, + 50.93881087407438 + ], + [ + 6.809267096699155, + 50.93881189829917 + ], + [ + 6.809257559243943, + 50.93881202509703 + ], + [ + 6.809247852334951, + 50.93881215321079 + ], + [ + 6.809177130837646, + 50.938813266856144 + ], + [ + 6.80915774954694, + 50.93881346701815 + ], + [ + 6.80775350537499, + 50.93876625938079 + ], + [ + 6.807729502856612, + 50.93876562691752 + ], + [ + 6.8069678422534405, + 50.93873970410302 + ], + [ + 6.805799169371198, + 50.938700343128595 + ], + [ + 6.805789874745326, + 50.938700029006974 + ], + [ + 6.805558067758168, + 50.93869222310342 + ], + [ + 6.805400837376124, + 50.93868701326206 + ], + [ + 6.8052657248369774, + 50.93868240524517 + ], + [ + 6.805239035961586, + 50.93868141776453 + ], + [ + 6.805153174418713, + 50.938678214113466 + ], + [ + 6.805150454156817, + 50.93869912875885 + ], + [ + 6.805141213304467, + 50.93878942783301 + ], + [ + 6.805116893622105, + 50.93902560853199 + ], + [ + 6.805073545428791, + 50.939445032975584 + ], + [ + 6.805072268096939, + 50.939457463776485 + ], + [ + 6.805071379531358, + 50.93946626473494 + ], + [ + 6.805080011185084, + 50.93946714835507 + ], + [ + 6.805138472363557, + 50.939473067471056 + ], + [ + 6.805214144863453, + 50.93948086072853 + ], + [ + 6.805225915149631, + 50.939482049785575 + ], + [ + 6.805249020904632, + 50.93948441162607 + ], + [ + 6.805280178936838, + 50.93948756702717 + ], + [ + 6.805281650526715, + 50.93952175640727 + ], + [ + 6.8052820921865775, + 50.93954245169031 + ], + [ + 6.805282854847724, + 50.93958410710786 + ], + [ + 6.805282972597317, + 50.939590764843 + ], + [ + 6.805283120561094, + 50.93959617658505 + ], + [ + 6.805283555520576, + 50.93961749772061 + ], + [ + 6.805284040536681, + 50.93964129223347 + ], + [ + 6.805284796889477, + 50.939680028995795 + ], + [ + 6.806403187111822, + 50.939783604000894 + ], + [ + 6.807711510922517, + 50.93990477776608 + ], + [ + 6.807972298148166, + 50.93992892232228 + ], + [ + 6.809763654704844, + 50.94009484864132 + ], + [ + 6.811335017899681, + 50.940279447574554 + ], + [ + 6.8113503258936285, + 50.94028115293859 + ], + [ + 6.811357442644061, + 50.94028147254915 + ], + [ + 6.81140952528736, + 50.94028387909954 + ], + [ + 6.811465803967615, + 50.9402864470408 + ], + [ + 6.81149368967239, + 50.940287766718725 + ], + [ + 6.811513908914457, + 50.94028868093422 + ], + [ + 6.8115929246246605, + 50.94029838546802 + ], + [ + 6.811614123620524, + 50.94030098910791 + ], + [ + 6.811660212914822, + 50.9403067692373 + ], + [ + 6.811710151467397, + 50.94031303253165 + ], + [ + 6.8122955655159485, + 50.94037558486852 + ], + [ + 6.812387633273967, + 50.94038541925289 + ], + [ + 6.812591432748831, + 50.94040719121686 + ], + [ + 6.812596574285151, + 50.94040774085815 + ], + [ + 6.812806565352434, + 50.94043016810463 + ], + [ + 6.812812191282073, + 50.940430769983415 + ], + [ + 6.812985282586152, + 50.940449218224536 + ], + [ + 6.813044636998125, + 50.94045525982434 + ], + [ + 6.81305099847509, + 50.94045614349139 + ], + [ + 6.81323876586683, + 50.94047608858657 + ], + [ + 6.813264035470397, + 50.9404787699804 + ], + [ + 6.813345532623802, + 50.940487391068594 + ], + [ + 6.814240053414628, + 50.94058227543143 + ], + [ + 6.81428240589658, + 50.940586764972025 + ], + [ + 6.814423183811902, + 50.94060182959026 + ], + [ + 6.814922494063372, + 50.94065480858493 + ], + [ + 6.815436800560003, + 50.94070967419829 + ], + [ + 6.815425797691721, + 50.940725747304384 + ], + [ + 6.8158676455511795, + 50.940777636045134 + ], + [ + 6.815894173083516, + 50.94075834574089 + ], + [ + 6.8191399154585595, + 50.94110313677239 + ], + [ + 6.823533798661464, + 50.941571444214 + ], + [ + 6.825581425196167, + 50.94179101148874 + ], + [ + 6.8279289417843945, + 50.94204265524583 + ], + [ + 6.828341195548289, + 50.94208549791086 + ], + [ + 6.828708773223352, + 50.94212497723721 + ], + [ + 6.8288103335320445, + 50.94213586647635 + ], + [ + 6.828889089982691, + 50.94214434024836 + ], + [ + 6.829076682381098, + 50.942165329478634 + ], + [ + 6.829094435555273, + 50.9421673163182 + ], + [ + 6.829211250887055, + 50.94218233110692 + ], + [ + 6.829291345357605, + 50.94219102465633 + ], + [ + 6.8293904957843745, + 50.94220185418526 + ], + [ + 6.829435919271341, + 50.94220679373913 + ], + [ + 6.830201316009897, + 50.942290079373024 + ], + [ + 6.8304512086637095, + 50.94231728166248 + ], + [ + 6.830530223988861, + 50.94232586436259 + ], + [ + 6.830792088919203, + 50.94235435689839 + ], + [ + 6.832782892132762, + 50.94257094798431 + ], + [ + 6.833412652799567, + 50.9426395299772 + ], + [ + 6.834114765378741, + 50.94271586545749 + ], + [ + 6.834369503932186, + 50.942743560255416 + ], + [ + 6.834376222028583, + 50.942744290178474 + ], + [ + 6.834875468307807, + 50.94279913845095 + ], + [ + 6.835733914787644, + 50.94289330612969 + ], + [ + 6.838936474952558, + 50.943205824526274 + ], + [ + 6.839128410453868, + 50.94321334391329 + ], + [ + 6.8392037803380825, + 50.94321891402997 + ], + [ + 6.8392584971317145, + 50.94322423132546 + ], + [ + 6.839616729760447, + 50.94325903861124 + ], + [ + 6.840101593643578, + 50.943312315736875 + ], + [ + 6.8403152845713056, + 50.94333578615047 + ], + [ + 6.840418690421339, + 50.94334714369032 + ], + [ + 6.840639312004944, + 50.94337137579447 + ], + [ + 6.841090616444165, + 50.94342094489739 + ], + [ + 6.843199768624895, + 50.94364673601016 + ], + [ + 6.84402712365908, + 50.943733520775474 + ], + [ + 6.844071911296527, + 50.94373817484857 + ], + [ + 6.8449711771198425, + 50.943836844288846 + ], + [ + 6.84541790925182, + 50.94388601268518 + ], + [ + 6.847135285944305, + 50.94407536052395 + ], + [ + 6.848849739433131, + 50.94426624622145 + ], + [ + 6.849132203427369, + 50.94431279678597 + ], + [ + 6.849596723996982, + 50.94438935296891 + ], + [ + 6.849501526802686, + 50.94220412958467 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Weiden", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "307", + "Population_rel": 0.016040770559905885, + "Population_abs": 17453 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.065034590248008, + 50.900022203359974 + ], + [ + 7.065160503133404, + 50.899840006361075 + ], + [ + 7.06552372790779, + 50.89993422512845 + ], + [ + 7.065700799166088, + 50.899981689618706 + ], + [ + 7.065832367900119, + 50.89991028009923 + ], + [ + 7.066093365561522, + 50.899767210212396 + ], + [ + 7.066482393955201, + 50.899553661089705 + ], + [ + 7.0672914336055594, + 50.89910802612485 + ], + [ + 7.0690434734000185, + 50.898140539981306 + ], + [ + 7.068836825547482, + 50.89811735347642 + ], + [ + 7.068335139817371, + 50.89805974205984 + ], + [ + 7.067971284935671, + 50.89801830646109 + ], + [ + 7.067627810606686, + 50.89797920018144 + ], + [ + 7.067263813387396, + 50.89793776270963 + ], + [ + 7.067464797937907, + 50.89723501712285 + ], + [ + 7.06672604344829, + 50.89715340788933 + ], + [ + 7.066678924946708, + 50.89715042298678 + ], + [ + 7.066473211952731, + 50.89713054933468 + ], + [ + 7.066565008341606, + 50.89691782935694 + ], + [ + 7.0665500152248955, + 50.896877513123385 + ], + [ + 7.066547656432319, + 50.89683654280513 + ], + [ + 7.0665616721134406, + 50.896784276060615 + ], + [ + 7.066719448602685, + 50.896398534528934 + ], + [ + 7.066910400342224, + 50.8959718570378 + ], + [ + 7.0669202422405455, + 50.89594848443547 + ], + [ + 7.067030544780901, + 50.89569361313348 + ], + [ + 7.0674423846653704, + 50.89483225077202 + ], + [ + 7.067461950758107, + 50.89479278842584 + ], + [ + 7.0676556316983, + 50.894411391415616 + ], + [ + 7.067900433002025, + 50.89394727181532 + ], + [ + 7.068147195638123, + 50.893500753366666 + ], + [ + 7.068438076819044, + 50.89297616176465 + ], + [ + 7.06853534680044, + 50.89281696689682 + ], + [ + 7.068657160912622, + 50.89274896870442 + ], + [ + 7.068855155508052, + 50.89264979881866 + ], + [ + 7.068892264528677, + 50.8925386193169 + ], + [ + 7.0684920674336364, + 50.892472437391575 + ], + [ + 7.067845517695869, + 50.89232382965455 + ], + [ + 7.067796838136942, + 50.89243250768545 + ], + [ + 7.067144468521727, + 50.89228412885696 + ], + [ + 7.06690765416596, + 50.89223955034156 + ], + [ + 7.066872594680559, + 50.89222297068716 + ], + [ + 7.06684938856946, + 50.892190191842055 + ], + [ + 7.066438311862287, + 50.892114123796794 + ], + [ + 7.066348305212309, + 50.89225554163027 + ], + [ + 7.066261072542837, + 50.89240646314356 + ], + [ + 7.066148918509678, + 50.89262988722045 + ], + [ + 7.065875064006074, + 50.892587892782544 + ], + [ + 7.065861379771324, + 50.892623525707016 + ], + [ + 7.065361074364973, + 50.89253020095991 + ], + [ + 7.064270407532252, + 50.8923270173739 + ], + [ + 7.063193593010764, + 50.8921263036547 + ], + [ + 7.063142339159677, + 50.89211625335003 + ], + [ + 7.063279011699808, + 50.89182680511434 + ], + [ + 7.0626745158349316, + 50.891719946146516 + ], + [ + 7.062544109596141, + 50.891685535162495 + ], + [ + 7.062298607791111, + 50.89163994771248 + ], + [ + 7.062161580249238, + 50.89193281375018 + ], + [ + 7.0616326140279035, + 50.89183478973592 + ], + [ + 7.061192576750224, + 50.89175339337659 + ], + [ + 7.0605395427803295, + 50.891630693807734 + ], + [ + 7.060175115434845, + 50.89156155124748 + ], + [ + 7.059809550645924, + 50.891492328373445 + ], + [ + 7.058278289821015, + 50.8942018085061 + ], + [ + 7.058056363034763, + 50.89459459297706 + ], + [ + 7.058023975566962, + 50.894651880033145 + ], + [ + 7.057899943132796, + 50.89491765425275 + ], + [ + 7.057733652146708, + 50.8949307580353 + ], + [ + 7.0586105075394325, + 50.89733656118877 + ], + [ + 7.0597965777283225, + 50.90041564239337 + ], + [ + 7.059961374244024, + 50.90086784141118 + ], + [ + 7.0600288881277695, + 50.901142664569534 + ], + [ + 7.060099954591551, + 50.9018867032437 + ], + [ + 7.0602982333432935, + 50.90256701950115 + ], + [ + 7.060356215739719, + 50.90276003554466 + ], + [ + 7.060409486887691, + 50.902883335028676 + ], + [ + 7.060448207867497, + 50.90297323740502 + ], + [ + 7.060564265819395, + 50.903181906052545 + ], + [ + 7.060651022765382, + 50.90330858677839 + ], + [ + 7.060801557550229, + 50.90348907429811 + ], + [ + 7.061006259040491, + 50.903444602755826 + ], + [ + 7.061040137906437, + 50.90342775470009 + ], + [ + 7.061939626838252, + 50.9030220567863 + ], + [ + 7.062110520396054, + 50.90294139427098 + ], + [ + 7.0622780821066815, + 50.90285806441934 + ], + [ + 7.062439279788916, + 50.9027699384633 + ], + [ + 7.062594837171028, + 50.90267763821585 + ], + [ + 7.062892150501456, + 50.9024801287183 + ], + [ + 7.063163598068101, + 50.90227683077778 + ], + [ + 7.063219372934066, + 50.90222903839844 + ], + [ + 7.063291934638836, + 50.902169226574664 + ], + [ + 7.063413805540257, + 50.90205862437116 + ], + [ + 7.063637468364086, + 50.90182978176922 + ], + [ + 7.0637404084005535, + 50.90171198046219 + ], + [ + 7.063839610798216, + 50.901592415451304 + ], + [ + 7.063941466579977, + 50.90146455541522 + ], + [ + 7.063980979197126, + 50.90142679878413 + ], + [ + 7.06402654114227, + 50.90139249353865 + ], + [ + 7.0640550844353855, + 50.901353758081065 + ], + [ + 7.064102511866669, + 50.90128905087112 + ], + [ + 7.064146081477588, + 50.90122977300379 + ], + [ + 7.064250867402225, + 50.90108705334596 + ], + [ + 7.064279683090919, + 50.90104777643413 + ], + [ + 7.064283299891019, + 50.90103183213388 + ], + [ + 7.064285344055135, + 50.90102794838264 + ], + [ + 7.064294321712108, + 50.90101024658978 + ], + [ + 7.064309666650091, + 50.900984936505864 + ], + [ + 7.0646389453343605, + 50.90055682098712 + ], + [ + 7.0647952931095315, + 50.9003501652628 + ], + [ + 7.064916091400433, + 50.900186712928566 + ], + [ + 7.065034590248008, + 50.900022203359974 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Finkenberg", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "716", + "Population_rel": 0.006271828241608764, + "Population_abs": 6824 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.949481603841122, + 50.90524475670012 + ], + [ + 6.949516423891698, + 50.905027649636175 + ], + [ + 6.949705764109185, + 50.904984308058665 + ], + [ + 6.949924392068629, + 50.90493398609738 + ], + [ + 6.9498058362523665, + 50.904753096409614 + ], + [ + 6.949608613640292, + 50.90451396649046 + ], + [ + 6.949450249089258, + 50.90436773982901 + ], + [ + 6.949619620380801, + 50.90435548005426 + ], + [ + 6.94972323444881, + 50.90434798817169 + ], + [ + 6.950125137787048, + 50.90431941452934 + ], + [ + 6.950575715741941, + 50.904287379031814 + ], + [ + 6.950993097411104, + 50.90425767926977 + ], + [ + 6.951689970005523, + 50.904208087731256 + ], + [ + 6.951963609817745, + 50.90417169566552 + ], + [ + 6.952113296072518, + 50.904156990370446 + ], + [ + 6.95224670182611, + 50.90414565341263 + ], + [ + 6.952292414821873, + 50.904142493716556 + ], + [ + 6.952480266707879, + 50.90413098215851 + ], + [ + 6.953215603330065, + 50.90408610265901 + ], + [ + 6.9532840711395565, + 50.90408210409551 + ], + [ + 6.953493806113459, + 50.90406993499151 + ], + [ + 6.953562314104823, + 50.904069105491836 + ], + [ + 6.954408694715754, + 50.90403045203434 + ], + [ + 6.954371914783629, + 50.90429387483726 + ], + [ + 6.954348758494071, + 50.904464140125114 + ], + [ + 6.954395700117051, + 50.90449324127548 + ], + [ + 6.9544806947285736, + 50.90453389728286 + ], + [ + 6.9545403942563695, + 50.904547253459306 + ], + [ + 6.9545492448357695, + 50.904549254109895 + ], + [ + 6.95455353593001, + 50.904550233195955 + ], + [ + 6.954557903719762, + 50.90455105263673 + ], + [ + 6.954748275342997, + 50.90458348669622 + ], + [ + 6.954888655223324, + 50.90460723958944 + ], + [ + 6.9549026737825, + 50.904609685130424 + ], + [ + 6.954907347754111, + 50.90461049643264 + ], + [ + 6.954926179259641, + 50.904613762903146 + ], + [ + 6.9551823410314295, + 50.90465418528451 + ], + [ + 6.955250768702913, + 50.9045453034752 + ], + [ + 6.955401146303514, + 50.90430054965613 + ], + [ + 6.955422419494258, + 50.90426324994473 + ], + [ + 6.9554955530658935, + 50.90415513756223 + ], + [ + 6.955645477953037, + 50.90417988869196 + ], + [ + 6.9556952440433095, + 50.90411781451804 + ], + [ + 6.95575696844086, + 50.904098161363265 + ], + [ + 6.955943870057154, + 50.90403334462516 + ], + [ + 6.955996633101422, + 50.90402041735759 + ], + [ + 6.956056869964934, + 50.90400455137045 + ], + [ + 6.9561161496788095, + 50.90394887095491 + ], + [ + 6.956225309378045, + 50.90394757183282 + ], + [ + 6.9562308549750655, + 50.90394770672195 + ], + [ + 6.956236427746542, + 50.90394793562236 + ], + [ + 6.956699406080131, + 50.90395325881074 + ], + [ + 6.9570339879948975, + 50.90394943616984 + ], + [ + 6.956861236962824, + 50.903754435420254 + ], + [ + 6.95679066864642, + 50.90367554827785 + ], + [ + 6.956503158011036, + 50.90335401840163 + ], + [ + 6.956539433781518, + 50.90334131574907 + ], + [ + 6.956503128131974, + 50.903297115802005 + ], + [ + 6.956403876147963, + 50.90318511278498 + ], + [ + 6.9563874697577095, + 50.903112972996325 + ], + [ + 6.956375217724321, + 50.903056170256946 + ], + [ + 6.956356649635868, + 50.90287188468066 + ], + [ + 6.956356867172876, + 50.90271580349227 + ], + [ + 6.956751153012471, + 50.90256498446189 + ], + [ + 6.956767681991958, + 50.90258681044084 + ], + [ + 6.957363429315104, + 50.902427304496385 + ], + [ + 6.957390056910019, + 50.902422456098535 + ], + [ + 6.957417766683308, + 50.90242186901822 + ], + [ + 6.957463729536603, + 50.90243102061672 + ], + [ + 6.957668264803746, + 50.9025262471392 + ], + [ + 6.95767846506958, + 50.90307163883811 + ], + [ + 6.958174883440458, + 50.90307079874671 + ], + [ + 6.958178748702998, + 50.9031967078248 + ], + [ + 6.958535681495759, + 50.90320159662006 + ], + [ + 6.958588750045099, + 50.903037554070984 + ], + [ + 6.95858030191634, + 50.902986204511535 + ], + [ + 6.9585724578959915, + 50.90294347979351 + ], + [ + 6.958569097203462, + 50.90292516896089 + ], + [ + 6.958565572062383, + 50.90290587042881 + ], + [ + 6.958580372566192, + 50.902818908207855 + ], + [ + 6.9585809174662705, + 50.902815491095964 + ], + [ + 6.958581449535741, + 50.902812074659 + ], + [ + 6.958583943997903, + 50.902796768548995 + ], + [ + 6.958592772171775, + 50.902776649114784 + ], + [ + 6.9586040562058775, + 50.90275156668035 + ], + [ + 6.958608129524395, + 50.902742273570546 + ], + [ + 6.958752740069276, + 50.90241863690263 + ], + [ + 6.958806460654304, + 50.902307086358775 + ], + [ + 6.95885473556753, + 50.90220735735117 + ], + [ + 6.958910984488831, + 50.902087515510765 + ], + [ + 6.958917450550753, + 50.90207011314275 + ], + [ + 6.959057209225069, + 50.90178358875476 + ], + [ + 6.959082502160773, + 50.90172446323992 + ], + [ + 6.958678022990072, + 50.901639691463835 + ], + [ + 6.958648614619265, + 50.90163373041164 + ], + [ + 6.959022650611502, + 50.90081136444503 + ], + [ + 6.9594472020811375, + 50.89997141262543 + ], + [ + 6.959451953647051, + 50.89996110514928 + ], + [ + 6.959511069113502, + 50.89986274449326 + ], + [ + 6.959532366499072, + 50.89982688167392 + ], + [ + 6.959650196470248, + 50.899632640930264 + ], + [ + 6.959831127126569, + 50.89933396344479 + ], + [ + 6.9602330734175135, + 50.8986817120757 + ], + [ + 6.960534075471407, + 50.898754116081804 + ], + [ + 6.960618136050704, + 50.898770369119376 + ], + [ + 6.960624978770548, + 50.898757502523225 + ], + [ + 6.96063497512238, + 50.898738991654135 + ], + [ + 6.96068938878413, + 50.898661594675524 + ], + [ + 6.960713963730694, + 50.89863316564565 + ], + [ + 6.9607327448062035, + 50.8986133242951 + ], + [ + 6.96073928844152, + 50.898606617728106 + ], + [ + 6.960746658161396, + 50.898598646674905 + ], + [ + 6.960871798882544, + 50.89846295449983 + ], + [ + 6.960886307630693, + 50.89844962104967 + ], + [ + 6.960898551705595, + 50.898436755278915 + ], + [ + 6.961018290029255, + 50.898308029599896 + ], + [ + 6.961046283288135, + 50.89827993183799 + ], + [ + 6.9610890993444725, + 50.898239935198845 + ], + [ + 6.96117469680097, + 50.89816515768287 + ], + [ + 6.9612770185378166, + 50.89807424056678 + ], + [ + 6.9614486200851005, + 50.89792387206735 + ], + [ + 6.9615228752730305, + 50.897864379927256 + ], + [ + 6.961546226650988, + 50.89784557881866 + ], + [ + 6.9616042501477855, + 50.897798625588784 + ], + [ + 6.961685334941695, + 50.89773260440753 + ], + [ + 6.961877454556312, + 50.89759851630921 + ], + [ + 6.961917943413743, + 50.897569866698376 + ], + [ + 6.962008749204122, + 50.897506551320106 + ], + [ + 6.962088485404668, + 50.89745096881933 + ], + [ + 6.962159035788318, + 50.89743941968316 + ], + [ + 6.962232570910636, + 50.897427846174985 + ], + [ + 6.962179683663879, + 50.89722429465627 + ], + [ + 6.962258983740744, + 50.897219792908516 + ], + [ + 6.962431390078234, + 50.89720515644294 + ], + [ + 6.962555689494545, + 50.897194512226044 + ], + [ + 6.962587618184118, + 50.89719191192628 + ], + [ + 6.962794928984778, + 50.89717419952993 + ], + [ + 6.962820329307203, + 50.89717210217876 + ], + [ + 6.962892696521652, + 50.89716593114165 + ], + [ + 6.962872247003675, + 50.89704977787855 + ], + [ + 6.962979147233361, + 50.89698129514214 + ], + [ + 6.963020812993849, + 50.896954522019826 + ], + [ + 6.963099010883208, + 50.896907221373255 + ], + [ + 6.9631332639810255, + 50.896886352781806 + ], + [ + 6.963523386085457, + 50.896910728866224 + ], + [ + 6.963665002323096, + 50.89691953709124 + ], + [ + 6.963704568783995, + 50.89692199747227 + ], + [ + 6.963708726609764, + 50.89690991667721 + ], + [ + 6.963828256145047, + 50.896565174613634 + ], + [ + 6.964498279128899, + 50.89664557592765 + ], + [ + 6.964520681019958, + 50.89658093687441 + ], + [ + 6.964525367669101, + 50.896566963982 + ], + [ + 6.964531003414972, + 50.89655082664297 + ], + [ + 6.964539048121672, + 50.89652738786929 + ], + [ + 6.964690570393658, + 50.89608727220569 + ], + [ + 6.965003686166571, + 50.8951720338579 + ], + [ + 6.965086708405228, + 50.894945847145394 + ], + [ + 6.96510629654023, + 50.894958270103324 + ], + [ + 6.965131917246836, + 50.89501045648644 + ], + [ + 6.965190419389882, + 50.895129622052785 + ], + [ + 6.96657503000854, + 50.89526354844308 + ], + [ + 6.966589310192392, + 50.89526480187642 + ], + [ + 6.966616114237836, + 50.89510317427578 + ], + [ + 6.966519191218329, + 50.89501471219677 + ], + [ + 6.966478592045031, + 50.89497612459407 + ], + [ + 6.966511223021099, + 50.8948496429508 + ], + [ + 6.966518869057889, + 50.89484283295732 + ], + [ + 6.9665315613715215, + 50.89479304850194 + ], + [ + 6.966496871938526, + 50.89478956601461 + ], + [ + 6.966504581991488, + 50.894759481140696 + ], + [ + 6.966592378132208, + 50.89476671035126 + ], + [ + 6.966787274530033, + 50.89478275414687 + ], + [ + 6.966884931987338, + 50.89436903119442 + ], + [ + 6.966892057803313, + 50.89433374218726 + ], + [ + 6.9669229977257565, + 50.89421166851355 + ], + [ + 6.967192993897789, + 50.89311829526217 + ], + [ + 6.967141219596346, + 50.89312330950306 + ], + [ + 6.967106866501469, + 50.893077388523004 + ], + [ + 6.9670439462478235, + 50.893045279038624 + ], + [ + 6.966882861749833, + 50.892988093388986 + ], + [ + 6.9667937993354565, + 50.892956469065346 + ], + [ + 6.966643739341944, + 50.89288256138403 + ], + [ + 6.966594592987927, + 50.8928484054227 + ], + [ + 6.966549718608676, + 50.89281734760135 + ], + [ + 6.966510101516924, + 50.892798629155386 + ], + [ + 6.966470485995526, + 50.8927799080249 + ], + [ + 6.966397390782681, + 50.892771164898946 + ], + [ + 6.966371031385399, + 50.89276804787452 + ], + [ + 6.966221733445413, + 50.89277890348035 + ], + [ + 6.966218744549378, + 50.89276499461269 + ], + [ + 6.966206741468176, + 50.892707022618154 + ], + [ + 6.966192848947953, + 50.892633244331485 + ], + [ + 6.965813814787684, + 50.89266910488472 + ], + [ + 6.965779867674822, + 50.892670194979836 + ], + [ + 6.965757562457582, + 50.892663817176135 + ], + [ + 6.96574666493305, + 50.892652311187234 + ], + [ + 6.9657309644043615, + 50.8925736041883 + ], + [ + 6.965723937207484, + 50.892405739744284 + ], + [ + 6.96572055602836, + 50.89232477329266 + ], + [ + 6.96571349553007, + 50.89215529207112 + ], + [ + 6.965709461595966, + 50.89206336336048 + ], + [ + 6.965703851619773, + 50.89185413673974 + ], + [ + 6.965700662180146, + 50.89174116551187 + ], + [ + 6.965674287408416, + 50.89130458901987 + ], + [ + 6.965680589745338, + 50.89123136236198 + ], + [ + 6.965682315999396, + 50.89121175174638 + ], + [ + 6.965692437178536, + 50.89111709912255 + ], + [ + 6.965700801717035, + 50.89101994437163 + ], + [ + 6.966984426489847, + 50.8904953863825 + ], + [ + 6.967243883712011, + 50.890457996844674 + ], + [ + 6.967253256266469, + 50.89036847462021 + ], + [ + 6.967452240585214, + 50.88877147284053 + ], + [ + 6.9674855037867, + 50.88832622027164 + ], + [ + 6.967615413416292, + 50.88731230485019 + ], + [ + 6.967723832989951, + 50.886427386593866 + ], + [ + 6.967734751592049, + 50.886309714453226 + ], + [ + 6.9678124287795224, + 50.88553921610571 + ], + [ + 6.967854740467476, + 50.88511941866848 + ], + [ + 6.966684067183963, + 50.884839126529464 + ], + [ + 6.966349619025531, + 50.884760363756854 + ], + [ + 6.965511356983278, + 50.8845627955814 + ], + [ + 6.963129201482543, + 50.88417670615447 + ], + [ + 6.962607242243009, + 50.88407815744057 + ], + [ + 6.962522583631956, + 50.884069843958216 + ], + [ + 6.961946384843263, + 50.88400375010307 + ], + [ + 6.961784248014843, + 50.88396269436113 + ], + [ + 6.961649243513825, + 50.8839387554427 + ], + [ + 6.961457493787281, + 50.88391462550174 + ], + [ + 6.961168399198576, + 50.883892812889385 + ], + [ + 6.96087136982466, + 50.88385687548209 + ], + [ + 6.959713817804613, + 50.883755025254054 + ], + [ + 6.95897820475331, + 50.88368205863071 + ], + [ + 6.958361134386702, + 50.8836380476767 + ], + [ + 6.956472114026574, + 50.883560602010455 + ], + [ + 6.954929953390807, + 50.88354456056637 + ], + [ + 6.953399857919738, + 50.883562559575104 + ], + [ + 6.953182232977211, + 50.883566406103164 + ], + [ + 6.953118305245836, + 50.88350472197137 + ], + [ + 6.953045840079757, + 50.883512056119 + ], + [ + 6.95295608204513, + 50.883521598838776 + ], + [ + 6.952820975246171, + 50.88358589819662 + ], + [ + 6.951519963669071, + 50.8836673541988 + ], + [ + 6.950781061550981, + 50.88371823667271 + ], + [ + 6.949868040765643, + 50.88379516316243 + ], + [ + 6.949797255922151, + 50.8838013133472 + ], + [ + 6.949221382232194, + 50.88386110579605 + ], + [ + 6.948486912858657, + 50.88394160276857 + ], + [ + 6.947584255548082, + 50.88405339550534 + ], + [ + 6.946334676579313, + 50.884226518348385 + ], + [ + 6.945874937984186, + 50.88433047889272 + ], + [ + 6.94443520012104, + 50.884580543586 + ], + [ + 6.943180842301756, + 50.88482792328872 + ], + [ + 6.943125206481805, + 50.884838441256605 + ], + [ + 6.942553557571223, + 50.88496064326858 + ], + [ + 6.9413362469898985, + 50.88524204344142 + ], + [ + 6.941229318087982, + 50.88526708723424 + ], + [ + 6.9407402249664925, + 50.88541045865931 + ], + [ + 6.938035517619529, + 50.886149325535065 + ], + [ + 6.938284427804231, + 50.88649925873587 + ], + [ + 6.938423446221392, + 50.88662102561114 + ], + [ + 6.939241760749241, + 50.887349593185824 + ], + [ + 6.9398253653248965, + 50.887981522035744 + ], + [ + 6.940984388777616, + 50.88918952354729 + ], + [ + 6.941056590517558, + 50.88926723896225 + ], + [ + 6.941242408684729, + 50.88928452803865 + ], + [ + 6.942171303268979, + 50.88894603928584 + ], + [ + 6.9427502258629765, + 50.889462837278806 + ], + [ + 6.942847404233509, + 50.889545653399196 + ], + [ + 6.94307239272596, + 50.88975193160641 + ], + [ + 6.943077976142434, + 50.88975694606234 + ], + [ + 6.943080712082182, + 50.889759460401656 + ], + [ + 6.943083403105232, + 50.88976199373563 + ], + [ + 6.943105906058935, + 50.88978376067268 + ], + [ + 6.9432886623418675, + 50.88996892655816 + ], + [ + 6.94329436407792, + 50.88997490363173 + ], + [ + 6.943296872055846, + 50.88997755784954 + ], + [ + 6.943299352483761, + 50.889980224173115 + ], + [ + 6.943376173319924, + 50.890062493963015 + ], + [ + 6.943409189986413, + 50.890057641764905 + ], + [ + 6.943616465744712, + 50.890018390321266 + ], + [ + 6.943920164670871, + 50.889961187716544 + ], + [ + 6.944455788405978, + 50.88986785659319 + ], + [ + 6.944579283117245, + 50.889846271027736 + ], + [ + 6.944598002535446, + 50.889869696049644 + ], + [ + 6.944603550519119, + 50.889876617402436 + ], + [ + 6.944610677052892, + 50.88988540759957 + ], + [ + 6.945093816553519, + 50.890480216305704 + ], + [ + 6.9451399351480605, + 50.89050253540039 + ], + [ + 6.94517001050776, + 50.89051605120708 + ], + [ + 6.945526815743005, + 50.890905277999614 + ], + [ + 6.94478886716661, + 50.891030276234915 + ], + [ + 6.944991197092003, + 50.89145554381089 + ], + [ + 6.945872222661041, + 50.891306910574684 + ], + [ + 6.945930943273545, + 50.8913850915929 + ], + [ + 6.946363483935741, + 50.89187788808141 + ], + [ + 6.946664209920409, + 50.89222019183157 + ], + [ + 6.946707457785976, + 50.89233427611135 + ], + [ + 6.946721733163998, + 50.892372365283364 + ], + [ + 6.947365559714076, + 50.89312710193368 + ], + [ + 6.947505186830744, + 50.893290654590494 + ], + [ + 6.947552969369447, + 50.893403065377925 + ], + [ + 6.947564743281331, + 50.89343076482511 + ], + [ + 6.946382854398106, + 50.89362491135018 + ], + [ + 6.946390957039299, + 50.89369751461696 + ], + [ + 6.9464250050120615, + 50.89391609569824 + ], + [ + 6.946769855006761, + 50.893896487166785 + ], + [ + 6.947026151026204, + 50.89388370923361 + ], + [ + 6.947031073977412, + 50.89397922677533 + ], + [ + 6.947054672816149, + 50.89408448042043 + ], + [ + 6.946401668041791, + 50.894118006859465 + ], + [ + 6.943557123745205, + 50.89428820553441 + ], + [ + 6.943550099790271, + 50.89432397708567 + ], + [ + 6.943549244598436, + 50.89432747501055 + ], + [ + 6.943526102650703, + 50.89444810813887 + ], + [ + 6.943480148244153, + 50.89461158793985 + ], + [ + 6.943307653291235, + 50.895176292411534 + ], + [ + 6.94330912557999, + 50.89519132278642 + ], + [ + 6.9433080628892085, + 50.895200109928545 + ], + [ + 6.943307003514941, + 50.895213081963924 + ], + [ + 6.943318165086606, + 50.895311271983026 + ], + [ + 6.943327402858502, + 50.89536678918877 + ], + [ + 6.9433528751338836, + 50.895544473453164 + ], + [ + 6.943388360047316, + 50.895805507409364 + ], + [ + 6.94341105766959, + 50.89597190674232 + ], + [ + 6.943437448155003, + 50.896144225235446 + ], + [ + 6.943458714457565, + 50.89629615431726 + ], + [ + 6.943507712240079, + 50.896448447968226 + ], + [ + 6.943903908627767, + 50.89718774531973 + ], + [ + 6.944015059592081, + 50.89739403552074 + ], + [ + 6.943993480026497, + 50.897493168562 + ], + [ + 6.943984986905543, + 50.89753439238649 + ], + [ + 6.943961867334618, + 50.89764588190481 + ], + [ + 6.943960792957621, + 50.897650189911886 + ], + [ + 6.943814088224437, + 50.897859237366305 + ], + [ + 6.943788981012577, + 50.89789458327132 + ], + [ + 6.943905976822804, + 50.89816369505785 + ], + [ + 6.944142509518673, + 50.89870824787983 + ], + [ + 6.944308446022708, + 50.89911239679557 + ], + [ + 6.944336302029739, + 50.89950617711277 + ], + [ + 6.9443365246027575, + 50.89950935765595 + ], + [ + 6.944596089276686, + 50.899509108816964 + ], + [ + 6.944742064827087, + 50.89950868566384 + ], + [ + 6.944780139528043, + 50.899760037754014 + ], + [ + 6.944783428977198, + 50.899782035243675 + ], + [ + 6.9448053035040545, + 50.89991463073358 + ], + [ + 6.944818441746712, + 50.89999479930319 + ], + [ + 6.944822832107195, + 50.900022091961404 + ], + [ + 6.9448773866290106, + 50.9000204813401 + ], + [ + 6.9451890169571815, + 50.90000779847991 + ], + [ + 6.945468865575467, + 50.899997601490114 + ], + [ + 6.945473765373553, + 50.8999977597011 + ], + [ + 6.945479565118092, + 50.89999789328303 + ], + [ + 6.94561666563106, + 50.899989140985774 + ], + [ + 6.945635840477889, + 50.900114657398284 + ], + [ + 6.945504049292952, + 50.90014145937654 + ], + [ + 6.945499400873942, + 50.90014243971471 + ], + [ + 6.945502172695618, + 50.90019465004532 + ], + [ + 6.945532956178092, + 50.900426672543816 + ], + [ + 6.945533538397193, + 50.90043140995184 + ], + [ + 6.945533913100844, + 50.9004355950829 + ], + [ + 6.945538238926857, + 50.90048707548642 + ], + [ + 6.945544712711824, + 50.900486889957634 + ], + [ + 6.945561975203227, + 50.90048626568483 + ], + [ + 6.945567699163336, + 50.90055431935127 + ], + [ + 6.945567949187716, + 50.90055742752428 + ], + [ + 6.94562567838367, + 50.90058742369983 + ], + [ + 6.9456715198644945, + 50.90060835166168 + ], + [ + 6.945375878530909, + 50.90063309655274 + ], + [ + 6.945343467890444, + 50.90061723462493 + ], + [ + 6.945322693862769, + 50.90060706739898 + ], + [ + 6.945325597365467, + 50.90062330112139 + ], + [ + 6.945348192082922, + 50.90074966024604 + ], + [ + 6.945347309343215, + 50.90090402743507 + ], + [ + 6.945360444985822, + 50.90104501217153 + ], + [ + 6.945706199701993, + 50.90103859748182 + ], + [ + 6.94585628925477, + 50.901031673530674 + ], + [ + 6.945972030364853, + 50.90100491603232 + ], + [ + 6.945975097658728, + 50.90100324859866 + ], + [ + 6.946011890718653, + 50.900982339751096 + ], + [ + 6.946366463140324, + 50.90096981319688 + ], + [ + 6.94642632974843, + 50.90163383248366 + ], + [ + 6.946463352687836, + 50.90205036943009 + ], + [ + 6.946469850790431, + 50.90218147170063 + ], + [ + 6.946515047391067, + 50.90283966638918 + ], + [ + 6.946718638838798, + 50.90283334001456 + ], + [ + 6.946733985824738, + 50.9030011362602 + ], + [ + 6.946855872341032, + 50.90299673132005 + ], + [ + 6.9468793115486, + 50.903255074955695 + ], + [ + 6.9468836760270545, + 50.90330196460829 + ], + [ + 6.946761929576326, + 50.90330636844871 + ], + [ + 6.946763388772067, + 50.90332217828797 + ], + [ + 6.946818052434994, + 50.903921234878844 + ], + [ + 6.946727028751027, + 50.90401042885813 + ], + [ + 6.946733449663039, + 50.904081663205524 + ], + [ + 6.946650917299538, + 50.90408493919647 + ], + [ + 6.946439314813572, + 50.904292332611604 + ], + [ + 6.945734111644218, + 50.90437383256187 + ], + [ + 6.945713943523128, + 50.90437480504881 + ], + [ + 6.945694120055696, + 50.904371729181655 + ], + [ + 6.945676503416976, + 50.90436530957856 + ], + [ + 6.94566252373461, + 50.90435598423114 + ], + [ + 6.9456517781914995, + 50.90434540720995 + ], + [ + 6.945667270408237, + 50.90454707508799 + ], + [ + 6.945682277278778, + 50.9047430341264 + ], + [ + 6.945729167726559, + 50.904740099184515 + ], + [ + 6.945897402090389, + 50.904720666602955 + ], + [ + 6.946674646776384, + 50.904631064288736 + ], + [ + 6.946886520878817, + 50.904607910153146 + ], + [ + 6.946964557198458, + 50.90459931779383 + ], + [ + 6.947203220144576, + 50.90457325715523 + ], + [ + 6.948080972958837, + 50.90448856477077 + ], + [ + 6.948397351989879, + 50.90445766142869 + ], + [ + 6.948573284753574, + 50.90444043340717 + ], + [ + 6.948576575628817, + 50.90456092664704 + ], + [ + 6.948495861333614, + 50.90494731702252 + ], + [ + 6.948500381463221, + 50.90505722005268 + ], + [ + 6.948505128880711, + 50.905161015773395 + ], + [ + 6.948562621479002, + 50.905161170162586 + ], + [ + 6.948573317718831, + 50.905281720708224 + ], + [ + 6.948753826673257, + 50.90527930921479 + ], + [ + 6.948917276575168, + 50.90527712557417 + ], + [ + 6.948938820346012, + 50.905252858424866 + ], + [ + 6.949481603841122, + 50.90524475670012 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Raderthal", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "204", + "Population_rel": 0.004475019300761001, + "Population_abs": 4869 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.903330233923989, + 51.06204852036002 + ], + [ + 6.913578801682458, + 51.05704643922635 + ], + [ + 6.920818262241126, + 51.053511387996785 + ], + [ + 6.924695133942828, + 51.051618123790725 + ], + [ + 6.927797727698573, + 51.05010267358584 + ], + [ + 6.928708961594562, + 51.04965757112601 + ], + [ + 6.929836117898926, + 51.04910700773871 + ], + [ + 6.930279071296426, + 51.04889055491297 + ], + [ + 6.930455539368903, + 51.048804341653245 + ], + [ + 6.930724997679969, + 51.04867267452534 + ], + [ + 6.930963245852847, + 51.04855634404964 + ], + [ + 6.931153332915853, + 51.04846340984716 + ], + [ + 6.935471350529431, + 51.0463537633425 + ], + [ + 6.936598202893235, + 51.0458031363105 + ], + [ + 6.936855650981096, + 51.04567863944218 + ], + [ + 6.9403283786995225, + 51.04398180798416 + ], + [ + 6.9407750508546995, + 51.04376264816388 + ], + [ + 6.940881840204545, + 51.04370992368627 + ], + [ + 6.940958236329553, + 51.04367308224592 + ], + [ + 6.942232918017526, + 51.043049656203415 + ], + [ + 6.94335961057766, + 51.0424989654036 + ], + [ + 6.944194215921468, + 51.042091076953454 + ], + [ + 6.945962645424778, + 51.041226747002526 + ], + [ + 6.946074495825733, + 51.04117153822618 + ], + [ + 6.946740016878727, + 51.04084672092699 + ], + [ + 6.947866736139566, + 51.04029600735663 + ], + [ + 6.948993225293911, + 51.039745142286634 + ], + [ + 6.9492780697803225, + 51.03960586766689 + ], + [ + 6.949670064788572, + 51.039414304260085 + ], + [ + 6.950120093555339, + 51.03919444669378 + ], + [ + 6.951246674924828, + 51.03864365796473 + ], + [ + 6.951485312112659, + 51.03852697721015 + ], + [ + 6.95159101417109, + 51.03847532030198 + ], + [ + 6.951667706768289, + 51.038437799906475 + ], + [ + 6.951743690491566, + 51.03840063037557 + ], + [ + 6.951849947058167, + 51.038348710450336 + ], + [ + 6.952373230484992, + 51.03809284004177 + ], + [ + 6.953499874105012, + 51.037542030894784 + ], + [ + 6.95406085454045, + 51.03726773606613 + ], + [ + 6.954258888282086, + 51.03716950224433 + ], + [ + 6.956879383860411, + 51.035889189795824 + ], + [ + 6.95791456698231, + 51.035383609230884 + ], + [ + 6.957954604322992, + 51.035364049129676 + ], + [ + 6.958005853477731, + 51.035338737502435 + ], + [ + 6.958089462004961, + 51.035298072729006 + ], + [ + 6.958155822992841, + 51.03526586444142 + ], + [ + 6.958210991917103, + 51.035239281184445 + ], + [ + 6.958258695754578, + 51.035216218847054 + ], + [ + 6.958292487373239, + 51.035199887009746 + ], + [ + 6.958326280393521, + 51.035183555187274 + ], + [ + 6.9585066548434735, + 51.03509553445568 + ], + [ + 6.95871602133528, + 51.03499326418944 + ], + [ + 6.958845491278398, + 51.03492984140712 + ], + [ + 6.959118622504263, + 51.0347944592588 + ], + [ + 6.959505915495376, + 51.034602693797424 + ], + [ + 6.959576272528232, + 51.03456730510906 + ], + [ + 6.959622777960087, + 51.03454379499022 + ], + [ + 6.959876510682635, + 51.034415191635745 + ], + [ + 6.9602447395028655, + 51.03422573764359 + ], + [ + 6.9603137059012745, + 51.034189801704144 + ], + [ + 6.960382609389382, + 51.03415376929348 + ], + [ + 6.960463854360857, + 51.03411109286487 + ], + [ + 6.960497947003589, + 51.034093131508115 + ], + [ + 6.9605458773219135, + 51.034067781521436 + ], + [ + 6.960586469847011, + 51.034046180570435 + ], + [ + 6.960638289396357, + 51.03401869410338 + ], + [ + 6.960684229606132, + 51.033994258147125 + ], + [ + 6.960733535178069, + 51.033967890628986 + ], + [ + 6.960775169418257, + 51.03394568993507 + ], + [ + 6.960839321741715, + 51.033911200370106 + ], + [ + 6.96094015480431, + 51.033856676460125 + ], + [ + 6.961018425475223, + 51.03381421214718 + ], + [ + 6.961096591950097, + 51.03377168120961 + ], + [ + 6.961174670646026, + 51.03372900209208 + ], + [ + 6.961252636909568, + 51.033686249011666 + ], + [ + 6.961330527555222, + 51.03364339563017 + ], + [ + 6.96139439107937, + 51.03360747253457 + ], + [ + 6.961796907534616, + 51.033380933213394 + ], + [ + 6.961911675963648, + 51.03331611466745 + ], + [ + 6.96203847597071, + 51.03324373540607 + ], + [ + 6.962388606226489, + 51.033041117879534 + ], + [ + 6.962605396889944, + 51.03291332935947 + ], + [ + 6.962655822148116, + 51.032883365125855 + ], + [ + 6.9626995972885855, + 51.03285725108702 + ], + [ + 6.9627453214890584, + 51.03282991641045 + ], + [ + 6.962791278000944, + 51.032802454460395 + ], + [ + 6.962857183634799, + 51.03276303978234 + ], + [ + 6.962898253967296, + 51.03273836335125 + ], + [ + 6.96342178103542, + 51.032419158207034 + ], + [ + 6.963831845843323, + 51.03216120107514 + ], + [ + 6.964421793138693, + 51.03177869632231 + ], + [ + 6.964819714347946, + 51.03151319524661 + ], + [ + 6.965391604122571, + 51.03112004636744 + ], + [ + 6.965668506476967, + 51.03092404100383 + ], + [ + 6.966427694574478, + 51.030366364368014 + ], + [ + 6.966700130373351, + 51.03016167282678 + ], + [ + 6.966967168549533, + 51.02995704141061 + ], + [ + 6.9672330543027705, + 51.029750270437944 + ], + [ + 6.967527944154446, + 51.02951539656142 + ], + [ + 6.967552790597286, + 51.02949530718665 + ], + [ + 6.967674027864081, + 51.02939703495325 + ], + [ + 6.967808926247403, + 51.029287090882846 + ], + [ + 6.968106877639166, + 51.02904015889634 + ], + [ + 6.968310936302202, + 51.028866776366705 + ], + [ + 6.968396480548397, + 51.02879330670725 + ], + [ + 6.968465205707216, + 51.02873405121756 + ], + [ + 6.968492033085918, + 51.02871087800329 + ], + [ + 6.968682028836621, + 51.02854498029638 + ], + [ + 6.968770703401506, + 51.02846819218728 + ], + [ + 6.968859064080356, + 51.02839130232212 + ], + [ + 6.968947138055017, + 51.02831414569136 + ], + [ + 6.9692195425366785, + 51.02806865718105 + ], + [ + 6.969272189887595, + 51.02802045998905 + ], + [ + 6.969487910725943, + 51.02782147633152 + ], + [ + 6.969753190729995, + 51.0275728714701 + ], + [ + 6.969951590086734, + 51.02738174404209 + ], + [ + 6.970050163360327, + 51.0272858635344 + ], + [ + 6.970100203458472, + 51.02723714220493 + ], + [ + 6.970147435552874, + 51.02719099550319 + ], + [ + 6.970219642869438, + 51.02711976242419 + ], + [ + 6.970373141999555, + 51.0269687274535 + ], + [ + 6.970524198130959, + 51.026816723495884 + ], + [ + 6.970694228871388, + 51.026642755557894 + ], + [ + 6.970747525196541, + 51.026587855236144 + ], + [ + 6.970967877595838, + 51.0263576901664 + ], + [ + 6.971185842811693, + 51.02612642647358 + ], + [ + 6.971275321284641, + 51.02602922860621 + ], + [ + 6.971446786553711, + 51.025837951070244 + ], + [ + 6.971608875924686, + 51.02565502025491 + ], + [ + 6.97192849735688, + 51.02525341727949 + ], + [ + 6.972102636280902, + 51.025021632917046 + ], + [ + 6.972132841090116, + 51.02498019028347 + ], + [ + 6.972271243573745, + 51.024784872329185 + ], + [ + 6.9723275297053195, + 51.02470234798469 + ], + [ + 6.972384796216435, + 51.02461758142974 + ], + [ + 6.972505688825033, + 51.024431806393586 + ], + [ + 6.972678465576863, + 51.024150213275306 + ], + [ + 6.972758437196389, + 51.024011496558494 + ], + [ + 6.972836390337297, + 51.02387376373677 + ], + [ + 6.97298848840342, + 51.023586253232004 + ], + [ + 6.973114223433883, + 51.02332930053359 + ], + [ + 6.9731705576180225, + 51.023206173954684 + ], + [ + 6.973226371660478, + 51.02308188803732 + ], + [ + 6.973334539906984, + 51.022823037524795 + ], + [ + 6.9733578630430415, + 51.02276361471879 + ], + [ + 6.973385914861898, + 51.022691601916534 + ], + [ + 6.973492161991046, + 51.02239711032159 + ], + [ + 6.9735364602244845, + 51.022261882468825 + ], + [ + 6.9735796640316625, + 51.02212610858493 + ], + [ + 6.973661263415721, + 51.02184093653739 + ], + [ + 6.973735354949427, + 51.02154155195471 + ], + [ + 6.973766392806549, + 51.0213963223957 + ], + [ + 6.973796223547912, + 51.02125071304143 + ], + [ + 6.973847840291298, + 51.02095001936643 + ], + [ + 6.9738628123384325, + 51.02084796475468 + ], + [ + 6.973866911735834, + 51.020818144609144 + ], + [ + 6.973871035220084, + 51.02078757571119 + ], + [ + 6.97387651051165, + 51.02074585476725 + ], + [ + 6.97389027825707, + 51.020630963326994 + ], + [ + 6.9738951842472146, + 51.02058663334541 + ], + [ + 6.9738981653238765, + 51.0205580637017 + ], + [ + 6.973900764749208, + 51.020531510106984 + ], + [ + 6.973903345558858, + 51.0205050236415 + ], + [ + 6.973905910089768, + 51.020478518006875 + ], + [ + 6.973910639996386, + 51.02042092564962 + ], + [ + 6.973917881618463, + 51.020331268672166 + ], + [ + 6.97392222362198, + 51.02026566434801 + ], + [ + 6.9739265691519385, + 51.02019487705078 + ], + [ + 6.973933167844603, + 51.02005295408205 + ], + [ + 6.973934946747983, + 51.019961659938076 + ], + [ + 6.973938914097921, + 51.01975041512487 + ], + [ + 6.973936863329971, + 51.01960351613352 + ], + [ + 6.973933547479393, + 51.01945668962885 + ], + [ + 6.973916738862352, + 51.01915437818511 + ], + [ + 6.973894544001043, + 51.0189075189143 + ], + [ + 6.97388110080411, + 51.01879210778486 + ], + [ + 6.97386679901463, + 51.0186764740053 + ], + [ + 6.973829936183429, + 51.0184306067889 + ], + [ + 6.973825174555281, + 51.01840275902545 + ], + [ + 6.97381764300202, + 51.01835936537213 + ], + [ + 6.973810016200408, + 51.01831760061273 + ], + [ + 6.973803825693344, + 51.01828485170982 + ], + [ + 6.973798805276587, + 51.01825885214539 + ], + [ + 6.973792445116491, + 51.01822492572909 + ], + [ + 6.973787659179767, + 51.01819950042812 + ], + [ + 6.973779531760189, + 51.018157151388365 + ], + [ + 6.973719852947301, + 51.01788686271324 + ], + [ + 6.97370363371621, + 51.01782103929149 + ], + [ + 6.9736891534767205, + 51.01776291401264 + ], + [ + 6.973669487766429, + 51.01768728708494 + ], + [ + 6.97365630849611, + 51.017637096075845 + ], + [ + 6.973579711411769, + 51.017370777687354 + ], + [ + 6.973483057929896, + 51.017073496907734 + ], + [ + 6.973466326773257, + 51.01702629309188 + ], + [ + 6.973431966435572, + 51.0169309992861 + ], + [ + 6.97341056757859, + 51.01687234381354 + ], + [ + 6.973379622999576, + 51.0167894584239 + ], + [ + 6.973260722630342, + 51.01649494549558 + ], + [ + 6.973177132875164, + 51.016303597870625 + ], + [ + 6.973139806636298, + 51.016222032558545 + ], + [ + 6.973102906508933, + 51.01614269785586 + ], + [ + 6.973004603490471, + 51.01594083122429 + ], + [ + 6.972982254724403, + 51.0158968179158 + ], + [ + 6.972968449961541, + 51.01586969094803 + ], + [ + 6.972951641985575, + 51.0158370185419 + ], + [ + 6.972938804561275, + 51.015812459854594 + ], + [ + 6.97291737462045, + 51.01577176944095 + ], + [ + 6.972893027729054, + 51.015726367893286 + ], + [ + 6.972874598517899, + 51.01569229490844 + ], + [ + 6.972843519667063, + 51.01563573501873 + ], + [ + 6.972681752003029, + 51.0153518867748 + ], + [ + 6.972597935409385, + 51.01521372046427 + ], + [ + 6.972513721543195, + 51.0150772856637 + ], + [ + 6.972329934335113, + 51.01479735273037 + ], + [ + 6.972155352117401, + 51.014544681649376 + ], + [ + 6.971969452195615, + 51.014295487685466 + ], + [ + 6.971942655259819, + 51.01426026735908 + ], + [ + 6.9719109775938275, + 51.01421881692079 + ], + [ + 6.971893649322112, + 51.01419460193278 + ], + [ + 6.97186740311787, + 51.014160649361884 + ], + [ + 6.9717996046767015, + 51.01406061482652 + ], + [ + 6.97165187429417, + 51.013861263967584 + ], + [ + 6.971305966460084, + 51.01339645811893 + ], + [ + 6.970739654111553, + 51.012764801457216 + ], + [ + 6.970716552784845, + 51.01274029531846 + ], + [ + 6.970671549236996, + 51.01269284986868 + ], + [ + 6.970633349621043, + 51.01265437416755 + ], + [ + 6.970534979873416, + 51.012677259947424 + ], + [ + 6.968335169520755, + 51.01339946812506 + ], + [ + 6.968252514998117, + 51.013426671589954 + ], + [ + 6.968283694409872, + 51.0134799887026 + ], + [ + 6.968303649205399, + 51.01353588240643 + ], + [ + 6.968356901063339, + 51.01368504386426 + ], + [ + 6.968379340444696, + 51.01374806237121 + ], + [ + 6.968385382353894, + 51.01379800668924 + ], + [ + 6.96840320978934, + 51.0138409934522 + ], + [ + 6.968431916370135, + 51.013975031409416 + ], + [ + 6.968993750520419, + 51.01463370486407 + ], + [ + 6.968202175976509, + 51.014580852589404 + ], + [ + 6.965855054722552, + 51.014543196216835 + ], + [ + 6.965797744229907, + 51.01454227457902 + ], + [ + 6.9655421519379, + 51.014538155765365 + ], + [ + 6.963932217442256, + 51.01498860163918 + ], + [ + 6.963766940423869, + 51.01500915705771 + ], + [ + 6.963885813280221, + 51.01537496514201 + ], + [ + 6.963837100060215, + 51.015387367221 + ], + [ + 6.961057030468474, + 51.01627762016949 + ], + [ + 6.955920797028614, + 51.01791751922028 + ], + [ + 6.955541445479602, + 51.01789086912519 + ], + [ + 6.955277604185132, + 51.01786402655615 + ], + [ + 6.954887690673885, + 51.017824384262696 + ], + [ + 6.954621835275694, + 51.0178233311467 + ], + [ + 6.947648095949706, + 51.017316152301134 + ], + [ + 6.947528491740237, + 51.017307415169704 + ], + [ + 6.9471572008574, + 51.01728587449344 + ], + [ + 6.947030961248607, + 51.01727855095713 + ], + [ + 6.947040386369008, + 51.018060497900585 + ], + [ + 6.947021519934986, + 51.01835364420906 + ], + [ + 6.9468736350143665, + 51.01937700332686 + ], + [ + 6.946769671657817, + 51.01987557562295 + ], + [ + 6.946576435931053, + 51.02036813289783 + ], + [ + 6.946446688748197, + 51.02062438754915 + ], + [ + 6.946057573763047, + 51.0213160213539 + ], + [ + 6.945073477134567, + 51.022326912422315 + ], + [ + 6.944855900970321, + 51.022547290448955 + ], + [ + 6.944800565859956, + 51.02258063850795 + ], + [ + 6.944652365704754, + 51.022700140648205 + ], + [ + 6.944558181887421, + 51.022768553050184 + ], + [ + 6.944483264358367, + 51.02282349733056 + ], + [ + 6.944452508249815, + 51.022846510524595 + ], + [ + 6.943672802308179, + 51.023411745567394 + ], + [ + 6.943336769892937, + 51.02357624789791 + ], + [ + 6.942975292375569, + 51.02377207492088 + ], + [ + 6.942655897251923, + 51.02393901328393 + ], + [ + 6.94247901923776, + 51.02402625005799 + ], + [ + 6.942343069934677, + 51.02409081051565 + ], + [ + 6.942150179328304, + 51.02418010128391 + ], + [ + 6.942200752395011, + 51.024206930859286 + ], + [ + 6.941909289995242, + 51.024327399731064 + ], + [ + 6.94166904840734, + 51.02442228500013 + ], + [ + 6.941540797876142, + 51.02447302921305 + ], + [ + 6.941046026484283, + 51.024647272859625 + ], + [ + 6.940840228972042, + 51.02471176507403 + ], + [ + 6.940676070951994, + 51.02476315695625 + ], + [ + 6.940338767956161, + 51.02485864239655 + ], + [ + 6.940253532024437, + 51.02487973425069 + ], + [ + 6.94008277181249, + 51.0249219189842 + ], + [ + 6.9398357031613855, + 51.02498269753421 + ], + [ + 6.939192624420027, + 51.02511884300319 + ], + [ + 6.93804979854863, + 51.02528282271446 + ], + [ + 6.93745750616219, + 51.02532982757218 + ], + [ + 6.936718873916318, + 51.025400252579324 + ], + [ + 6.93388675026975, + 51.02561786596373 + ], + [ + 6.932076670491773, + 51.025781817259315 + ], + [ + 6.931349903573085, + 51.02587615905447 + ], + [ + 6.930912460760874, + 51.0259334915069 + ], + [ + 6.930397555940401, + 51.026016250194374 + ], + [ + 6.9300641991331675, + 51.02608245932784 + ], + [ + 6.92916410130877, + 51.02624118207393 + ], + [ + 6.928164936841765, + 51.02645731659644 + ], + [ + 6.924553630315609, + 51.027336248108355 + ], + [ + 6.924036143763364, + 51.027462507425824 + ], + [ + 6.9231797311627865, + 51.0277130666934 + ], + [ + 6.922454305124126, + 51.02794910064949 + ], + [ + 6.921957582279816, + 51.02813820015424 + ], + [ + 6.921372165252829, + 51.0283834606137 + ], + [ + 6.920708508190946, + 51.028701876897976 + ], + [ + 6.919806951384699, + 51.029165450102376 + ], + [ + 6.919274625037668, + 51.029472666850374 + ], + [ + 6.918014441427433, + 51.03011244933806 + ], + [ + 6.917602604640237, + 51.03032144808175 + ], + [ + 6.917504750209202, + 51.03036878041105 + ], + [ + 6.917304417762204, + 51.030453054723765 + ], + [ + 6.9171618078138115, + 51.03055844892058 + ], + [ + 6.916978846618516, + 51.0306923169379 + ], + [ + 6.916980523620953, + 51.03075583600126 + ], + [ + 6.916962120405442, + 51.03081989366834 + ], + [ + 6.916751785764187, + 51.03155308128929 + ], + [ + 6.916671756923339, + 51.03183227965889 + ], + [ + 6.916556777900573, + 51.03223257341915 + ], + [ + 6.916523435449394, + 51.0323489749474 + ], + [ + 6.916477371518139, + 51.03242890769997 + ], + [ + 6.91623851932149, + 51.0328433700967 + ], + [ + 6.916083237002717, + 51.0328575810789 + ], + [ + 6.916052559480258, + 51.032889119697906 + ], + [ + 6.916038609101117, + 51.0329135225313 + ], + [ + 6.915966482242142, + 51.03309307009937 + ], + [ + 6.915883978602779, + 51.03329845123235 + ], + [ + 6.915855022988617, + 51.03337053168985 + ], + [ + 6.9156298755554655, + 51.033816720656816 + ], + [ + 6.915603045718562, + 51.03386592216449 + ], + [ + 6.915331394586474, + 51.03437602813044 + ], + [ + 6.915142802115532, + 51.03470983492049 + ], + [ + 6.914838151693657, + 51.03526055897114 + ], + [ + 6.914805808411777, + 51.03532904687581 + ], + [ + 6.914742239383649, + 51.03547219608678 + ], + [ + 6.914966285297409, + 51.035446889227515 + ], + [ + 6.914875435436402, + 51.03564778930263 + ], + [ + 6.914600284844364, + 51.03614039142628 + ], + [ + 6.914490180933251, + 51.03630485672348 + ], + [ + 6.91421187812437, + 51.03665949967598 + ], + [ + 6.914141683026005, + 51.036665470073196 + ], + [ + 6.913939021839942, + 51.03689984764238 + ], + [ + 6.913819841004443, + 51.0369148928158 + ], + [ + 6.913789413532753, + 51.0369553120804 + ], + [ + 6.913609787197505, + 51.03723142553275 + ], + [ + 6.913063290384065, + 51.03794143673932 + ], + [ + 6.912962848559216, + 51.03807202582302 + ], + [ + 6.912746715806443, + 51.038107867897374 + ], + [ + 6.9127571389957945, + 51.03814240011427 + ], + [ + 6.912701997468355, + 51.0381514608382 + ], + [ + 6.9127295765332955, + 51.038219675154096 + ], + [ + 6.912822787571352, + 51.03845021453337 + ], + [ + 6.9127012787134134, + 51.038761062464964 + ], + [ + 6.912664139916583, + 51.038756994778346 + ], + [ + 6.9126244924380575, + 51.03875640598053 + ], + [ + 6.912584911121188, + 51.038759232354266 + ], + [ + 6.9125256851211585, + 51.038770886643704 + ], + [ + 6.912475403869996, + 51.03878795395105 + ], + [ + 6.912331894873925, + 51.038848645648955 + ], + [ + 6.911278264462938, + 51.03924298285281 + ], + [ + 6.911013838631001, + 51.03934779156541 + ], + [ + 6.9109547044154915, + 51.03938287345871 + ], + [ + 6.910270135410712, + 51.03967785508375 + ], + [ + 6.909666751871285, + 51.03998447167802 + ], + [ + 6.90933982328976, + 51.04018326828732 + ], + [ + 6.908174183542868, + 51.04106634611797 + ], + [ + 6.907743332052477, + 51.0413927433724 + ], + [ + 6.907161868834496, + 51.04184579814435 + ], + [ + 6.906701839898797, + 51.04203676629375 + ], + [ + 6.905881877983847, + 51.04220095466843 + ], + [ + 6.905701750263429, + 51.04223563768345 + ], + [ + 6.905419642682405, + 51.04244066452425 + ], + [ + 6.903806800529127, + 51.043594403896066 + ], + [ + 6.9044276443918635, + 51.043878983360294 + ], + [ + 6.904865440779348, + 51.04407820679209 + ], + [ + 6.905215445449333, + 51.044235770457135 + ], + [ + 6.905610951273617, + 51.04441574351541 + ], + [ + 6.9063260207088835, + 51.04474196531913 + ], + [ + 6.905234230330535, + 51.0451254811803 + ], + [ + 6.90534033176187, + 51.04517758183006 + ], + [ + 6.905982575151147, + 51.045490817088584 + ], + [ + 6.906089832316332, + 51.045543110438075 + ], + [ + 6.9066535205836805, + 51.04579834210774 + ], + [ + 6.906738967744257, + 51.04583642166132 + ], + [ + 6.907924744418925, + 51.046364219998765 + ], + [ + 6.9091984412133405, + 51.04693105351557 + ], + [ + 6.909102746102919, + 51.04696715841202 + ], + [ + 6.909098797771966, + 51.04700572009271 + ], + [ + 6.908054187173373, + 51.0474046261445 + ], + [ + 6.90760684075779, + 51.04757434101065 + ], + [ + 6.907449244645633, + 51.04763413238807 + ], + [ + 6.907339446758963, + 51.047675786876866 + ], + [ + 6.907068613113539, + 51.04774602810345 + ], + [ + 6.906972736829738, + 51.04781670782324 + ], + [ + 6.904789372141938, + 51.04864733659511 + ], + [ + 6.903582467054628, + 51.04910847315413 + ], + [ + 6.897183862393582, + 51.05155169046674 + ], + [ + 6.89702754855159, + 51.051595679188004 + ], + [ + 6.892909984428238, + 51.05317946879149 + ], + [ + 6.891558916108439, + 51.053698842302865 + ], + [ + 6.89139167239604, + 51.05376106516176 + ], + [ + 6.890575678322653, + 51.05407112094334 + ], + [ + 6.889628743091114, + 51.05443322770448 + ], + [ + 6.888979682680208, + 51.05468060489018 + ], + [ + 6.888212526205292, + 51.0549730141036 + ], + [ + 6.88698218436184, + 51.055441437344186 + ], + [ + 6.886424703780642, + 51.05565349710001 + ], + [ + 6.886377419570071, + 51.055724330446026 + ], + [ + 6.886656512772286, + 51.056058404329036 + ], + [ + 6.88678073077277, + 51.056214410898335 + ], + [ + 6.887111732590883, + 51.056629800911665 + ], + [ + 6.887167267480887, + 51.05669958355466 + ], + [ + 6.887215205227093, + 51.05675998597238 + ], + [ + 6.88745449482054, + 51.05680212502694 + ], + [ + 6.888032156413882, + 51.0577893667248 + ], + [ + 6.888051089959288, + 51.05782099891066 + ], + [ + 6.888213189404008, + 51.058047910411005 + ], + [ + 6.8888011865837475, + 51.05885452295989 + ], + [ + 6.888857294605043, + 51.05893158199823 + ], + [ + 6.889518143585403, + 51.0598465849162 + ], + [ + 6.889535770566046, + 51.05987692333123 + ], + [ + 6.889073408217788, + 51.059944715841496 + ], + [ + 6.890392321317037, + 51.061574189867905 + ], + [ + 6.890421458478891, + 51.061605879050205 + ], + [ + 6.890584482242514, + 51.06154521813316 + ], + [ + 6.890784267086444, + 51.06174235353126 + ], + [ + 6.889895086837823, + 51.06207444590312 + ], + [ + 6.889867991174903, + 51.062126878981694 + ], + [ + 6.890560126821782, + 51.06324892605003 + ], + [ + 6.890618433969737, + 51.063343495861574 + ], + [ + 6.891324329754239, + 51.064489254479255 + ], + [ + 6.8913949112548725, + 51.06450237920546 + ], + [ + 6.891275220282972, + 51.064531967735654 + ], + [ + 6.891715880878834, + 51.065245519339385 + ], + [ + 6.89306532959045, + 51.06672934888398 + ], + [ + 6.893270041836134, + 51.06665522768014 + ], + [ + 6.893315914325844, + 51.06663829135233 + ], + [ + 6.893398723701459, + 51.0666075033602 + ], + [ + 6.893596603544862, + 51.066533098321045 + ], + [ + 6.893649171398181, + 51.06651321032415 + ], + [ + 6.894491204183412, + 51.06618110484434 + ], + [ + 6.89504322417561, + 51.06596326085215 + ], + [ + 6.8964137296315124, + 51.065380102541866 + ], + [ + 6.896482497770297, + 51.0653489804512 + ], + [ + 6.897083911568357, + 51.06507383877354 + ], + [ + 6.8977238004860615, + 51.06478016142121 + ], + [ + 6.897757448207895, + 51.06476468792982 + ], + [ + 6.89792535662357, + 51.06468442562243 + ], + [ + 6.8980927175471685, + 51.064603885216194 + ], + [ + 6.898259815099277, + 51.06452290723993 + ], + [ + 6.899393931398253, + 51.06396931599034 + ], + [ + 6.900382021872889, + 51.06348716985949 + ], + [ + 6.900521784664476, + 51.06341903329594 + ], + [ + 6.900854438733082, + 51.06325664232887 + ], + [ + 6.90096375629216, + 51.06320264762998 + ], + [ + 6.901100976348077, + 51.06313635157295 + ], + [ + 6.901649609621997, + 51.06286865028375 + ], + [ + 6.902774864790701, + 51.062319546832896 + ], + [ + 6.903330233923989, + 51.06204852036002 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Merkenich", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "601", + "Population_rel": 0.005390426822543289, + "Population_abs": 5865 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.029306313366873, + 50.901458515586725 + ], + [ + 7.029052094511584, + 50.90113453214104 + ], + [ + 7.028821896588929, + 50.90091335562629 + ], + [ + 7.027862671400098, + 50.90127716375906 + ], + [ + 7.027802030166403, + 50.901215400702256 + ], + [ + 7.027725989283548, + 50.90113858176931 + ], + [ + 7.027701449554331, + 50.901102300928905 + ], + [ + 7.027648820767087, + 50.90104927840468 + ], + [ + 7.0276159183574824, + 50.90097540538478 + ], + [ + 7.027589176577711, + 50.900935907117216 + ], + [ + 7.02747454378595, + 50.90076566895216 + ], + [ + 7.027463814834616, + 50.9007496721241 + ], + [ + 7.027381227485811, + 50.90060144533072 + ], + [ + 7.027257737964675, + 50.90040332683409 + ], + [ + 7.027236326591972, + 50.90037996341424 + ], + [ + 7.027176761873919, + 50.90030236943931 + ], + [ + 7.0270013949478045, + 50.90007838098854 + ], + [ + 7.026969411992314, + 50.90001428691545 + ], + [ + 7.026807985231202, + 50.89977155522918 + ], + [ + 7.026556772333081, + 50.89938910903845 + ], + [ + 7.026510268645285, + 50.89932362528192 + ], + [ + 7.026374866116137, + 50.89935259420207 + ], + [ + 7.026207507336939, + 50.89906613535959 + ], + [ + 7.026033199190974, + 50.898819111398836 + ], + [ + 7.025983147953166, + 50.89874089432998 + ], + [ + 7.025805764880363, + 50.89846387151963 + ], + [ + 7.0257914894339475, + 50.89844170328307 + ], + [ + 7.025720139627486, + 50.89836454501093 + ], + [ + 7.025561280141442, + 50.898425659124875 + ], + [ + 7.025493438726878, + 50.89834642944906 + ], + [ + 7.02523295472274, + 50.89815310934074 + ], + [ + 7.025308195130021, + 50.898125479264515 + ], + [ + 7.025750202254592, + 50.897992684632094 + ], + [ + 7.025604348949455, + 50.89784995702255 + ], + [ + 7.025130827543331, + 50.897426287352054 + ], + [ + 7.02508181664882, + 50.89735107968714 + ], + [ + 7.0249753678308595, + 50.89733596751407 + ], + [ + 7.024878070134495, + 50.89725247776278 + ], + [ + 7.024895186215964, + 50.89724446800792 + ], + [ + 7.0249839844769495, + 50.89720291593613 + ], + [ + 7.024968286937522, + 50.89718940159062 + ], + [ + 7.0249639509034925, + 50.89718566865387 + ], + [ + 7.025100251814445, + 50.89711060205453 + ], + [ + 7.025155974091135, + 50.89708476251254 + ], + [ + 7.025027178755172, + 50.89695482859335 + ], + [ + 7.0250722004109205, + 50.89693366732644 + ], + [ + 7.025147211138993, + 50.89689938799261 + ], + [ + 7.025076420030872, + 50.89682809457264 + ], + [ + 7.02503296026239, + 50.89678451739348 + ], + [ + 7.0249976366970035, + 50.896748870072365 + ], + [ + 7.02490870219024, + 50.896660476371935 + ], + [ + 7.0248190256765755, + 50.89660948583523 + ], + [ + 7.0248120107234335, + 50.89653601319477 + ], + [ + 7.024817155436631, + 50.89642072396232 + ], + [ + 7.023879533075033, + 50.896390251501764 + ], + [ + 7.023891915979841, + 50.896239722332034 + ], + [ + 7.023976307323924, + 50.89435136897011 + ], + [ + 7.023976571095474, + 50.894343995861135 + ], + [ + 7.023976747775647, + 50.89433904959066 + ], + [ + 7.023770035693707, + 50.89433708901924 + ], + [ + 7.019451975666188, + 50.894295080495034 + ], + [ + 7.01930966506795, + 50.894293717503935 + ], + [ + 7.0178946710916, + 50.89427991452786 + ], + [ + 7.017372794546717, + 50.89427574698695 + ], + [ + 7.016850993887208, + 50.89427508326842 + ], + [ + 7.015049483802889, + 50.894291852599295 + ], + [ + 7.014814912075953, + 50.89429632029055 + ], + [ + 7.014121214768509, + 50.894312871541715 + ], + [ + 7.013568506560593, + 50.89432891183014 + ], + [ + 7.013016168749814, + 50.89434890227202 + ], + [ + 7.012943883632787, + 50.89435177715289 + ], + [ + 7.012907805425199, + 50.89435312258681 + ], + [ + 7.012871593370642, + 50.894354472026116 + ], + [ + 7.011638489788821, + 50.89441065954394 + ], + [ + 7.0105896662263945, + 50.89447018428728 + ], + [ + 7.0105536050729444, + 50.89447242686257 + ], + [ + 7.010517556629073, + 50.89447467144217 + ], + [ + 7.008036799142889, + 50.89465111369548 + ], + [ + 7.005644974076356, + 50.89489883189206 + ], + [ + 7.004847146216192, + 50.894991197109405 + ], + [ + 7.003374934726329, + 50.895186085303415 + ], + [ + 7.001920963441559, + 50.895429971271696 + ], + [ + 7.0004894723493525, + 50.89572200829881 + ], + [ + 7.000456221039558, + 50.895729201108736 + ], + [ + 7.000422831872753, + 50.895736424824136 + ], + [ + 7.0003563388214385, + 50.89575101741757 + ], + [ + 7.000342325936936, + 50.89575409061727 + ], + [ + 7.0003281852279855, + 50.89575719310323 + ], + [ + 7.0002749912624305, + 50.89576897453191 + ], + [ + 7.000221798576174, + 50.895780758656564 + ], + [ + 7.00020947144433, + 50.895783519863045 + ], + [ + 7.000197185830071, + 50.89578627458467 + ], + [ + 6.998491418449171, + 50.896195071227034 + ], + [ + 6.996829263870676, + 50.896670623117885 + ], + [ + 6.995212547773863, + 50.89720545279773 + ], + [ + 6.993646765229872, + 50.897797538604465 + ], + [ + 6.992136711063261, + 50.8984452229953 + ], + [ + 6.990694096748324, + 50.89915128559493 + ], + [ + 6.990666466400848, + 50.899165512013056 + ], + [ + 6.990666399518296, + 50.89916554593729 + ], + [ + 6.9906387008115605, + 50.899179807147085 + ], + [ + 6.99058329971016, + 50.89920841402522 + ], + [ + 6.990575158052644, + 50.899212629530304 + ], + [ + 6.990558412045488, + 50.89922130259915 + ], + [ + 6.990545893296059, + 50.89922778561654 + ], + [ + 6.992405914879893, + 50.90066523203075 + ], + [ + 6.9924075997350705, + 50.90066653363383 + ], + [ + 6.9928281472201475, + 50.90099152193361 + ], + [ + 6.992699866502709, + 50.901055809313476 + ], + [ + 6.9930485879984445, + 50.90143021611502 + ], + [ + 6.993069589715436, + 50.90144846589586 + ], + [ + 6.993096235643226, + 50.90147143193622 + ], + [ + 6.993234153114527, + 50.90158604046002 + ], + [ + 6.994499857406656, + 50.90263591721945 + ], + [ + 6.9955130465931425, + 50.903555161461995 + ], + [ + 6.996931822960696, + 50.90477099815754 + ], + [ + 6.997723864637116, + 50.905449848295184 + ], + [ + 6.999513919242599, + 50.90696829682164 + ], + [ + 6.9996076081730765, + 50.90704767892006 + ], + [ + 7.00035235857446, + 50.907712173344684 + ], + [ + 7.0006818316171495, + 50.90800599767838 + ], + [ + 7.000832295888491, + 50.90814035705294 + ], + [ + 7.000916659062559, + 50.90821559318259 + ], + [ + 7.000988546924829, + 50.908266036531515 + ], + [ + 7.001141722601013, + 50.90837430247106 + ], + [ + 7.0015615210274, + 50.908706890012034 + ], + [ + 7.001562450985335, + 50.90870762903361 + ], + [ + 7.001942604888328, + 50.90900890988283 + ], + [ + 7.003182952509196, + 50.90981979083887 + ], + [ + 7.00348173477807, + 50.90995439970067 + ], + [ + 7.003612611704566, + 50.91005665166474 + ], + [ + 7.004169293254619, + 50.910380772943746 + ], + [ + 7.004555462712401, + 50.91060560926332 + ], + [ + 7.005856364820367, + 50.91129287536333 + ], + [ + 7.006455975147945, + 50.911620113981954 + ], + [ + 7.006569604545247, + 50.91167421850296 + ], + [ + 7.007763594789363, + 50.91225448646236 + ], + [ + 7.007822049939893, + 50.91228290166012 + ], + [ + 7.008855615889525, + 50.91270887530044 + ], + [ + 7.009903643233905, + 50.9131057684212 + ], + [ + 7.010038522531553, + 50.913149546364096 + ], + [ + 7.011150792020556, + 50.91351054474884 + ], + [ + 7.011938885764997, + 50.913718316850506 + ], + [ + 7.012534314256425, + 50.91387529091504 + ], + [ + 7.013748984137916, + 50.91418386560302 + ], + [ + 7.013941763117019, + 50.914218616052345 + ], + [ + 7.015288060352062, + 50.91446128852752 + ], + [ + 7.0156167365239215, + 50.914522612047875 + ], + [ + 7.016828882494894, + 50.91479845526743 + ], + [ + 7.017045973462804, + 50.91484798382492 + ], + [ + 7.017154446108818, + 50.91473785197225 + ], + [ + 7.017155991370757, + 50.91473627374172 + ], + [ + 7.017158253005666, + 50.91473538041227 + ], + [ + 7.017285568834975, + 50.91468488491274 + ], + [ + 7.017474339158391, + 50.91460997547152 + ], + [ + 7.017540689712738, + 50.91458126754565 + ], + [ + 7.0176167615860665, + 50.914548503934476 + ], + [ + 7.017815675403692, + 50.91446272641977 + ], + [ + 7.017873715649298, + 50.91443776876276 + ], + [ + 7.018025694622013, + 50.91435868380958 + ], + [ + 7.018110771403658, + 50.91431443310216 + ], + [ + 7.018466588616603, + 50.91412734119043 + ], + [ + 7.018535206914284, + 50.91409183686727 + ], + [ + 7.018580468528651, + 50.91406833835632 + ], + [ + 7.0189553268428515, + 50.91387368160847 + ], + [ + 7.019152021391732, + 50.91377119159015 + ], + [ + 7.019311297996459, + 50.91368799637898 + ], + [ + 7.019386077470484, + 50.91364761088958 + ], + [ + 7.019650134321514, + 50.913504465643285 + ], + [ + 7.019808417492614, + 50.913418824597265 + ], + [ + 7.019867820545989, + 50.913386707584436 + ], + [ + 7.019868542761667, + 50.91338631691782 + ], + [ + 7.019927254831589, + 50.913354590172126 + ], + [ + 7.019962447364139, + 50.91333550621485 + ], + [ + 7.020009408522964, + 50.91331004117727 + ], + [ + 7.020013487276802, + 50.913307761206504 + ], + [ + 7.020093579389465, + 50.9132617040073 + ], + [ + 7.020097604408429, + 50.91325938265033 + ], + [ + 7.020229372965296, + 50.9131834775626 + ], + [ + 7.0202333993161, + 50.91318115802232 + ], + [ + 7.020251416578858, + 50.91317074400299 + ], + [ + 7.020252498689464, + 50.91317011930589 + ], + [ + 7.020255278446811, + 50.913168311049134 + ], + [ + 7.0202562772819554, + 50.913167637272714 + ], + [ + 7.020518775428462, + 50.91298921721052 + ], + [ + 7.020522313583478, + 50.91298660068199 + ], + [ + 7.020671009508717, + 50.912875703372286 + ], + [ + 7.020674523974978, + 50.912873074745626 + ], + [ + 7.020711538945911, + 50.91284549091648 + ], + [ + 7.020789096385161, + 50.91278768582054 + ], + [ + 7.0208281904236545, + 50.912755658332266 + ], + [ + 7.020911869063497, + 50.912687325463466 + ], + [ + 7.0209619453903, + 50.912636457012304 + ], + [ + 7.021010767446683, + 50.91258684887978 + ], + [ + 7.0210362504286215, + 50.9125611046992 + ], + [ + 7.021061825181314, + 50.912535275729226 + ], + [ + 7.021061872502456, + 50.91253523336165 + ], + [ + 7.021123851397672, + 50.91247826474245 + ], + [ + 7.021191473570991, + 50.912416904794284 + ], + [ + 7.021192710020448, + 50.91241579344624 + ], + [ + 7.0212061353592565, + 50.91240375091068 + ], + [ + 7.0212584159536044, + 50.912356876946056 + ], + [ + 7.021348649402662, + 50.91227655202977 + ], + [ + 7.021449768279023, + 50.912186937575946 + ], + [ + 7.021509475035333, + 50.9121340106932 + ], + [ + 7.021567365073851, + 50.91208289310288 + ], + [ + 7.021584668595546, + 50.91206862825718 + ], + [ + 7.021585521677649, + 50.912067901634025 + ], + [ + 7.021668435246985, + 50.91199950579488 + ], + [ + 7.021669881766936, + 50.91199830446774 + ], + [ + 7.021966799489612, + 50.91183845654725 + ], + [ + 7.0220768676063035, + 50.91177926342221 + ], + [ + 7.022503895595112, + 50.91154957650003 + ], + [ + 7.0229288661731655, + 50.911320938723215 + ], + [ + 7.023183649309614, + 50.91118386382965 + ], + [ + 7.0238041352510825, + 50.91084998615193 + ], + [ + 7.024359215618319, + 50.910551250031354 + ], + [ + 7.024435378088782, + 50.9105101292766 + ], + [ + 7.026426378726293, + 50.909429182150014 + ], + [ + 7.027411745201964, + 50.90889406753796 + ], + [ + 7.027546071720611, + 50.908821241883615 + ], + [ + 7.027650764724169, + 50.90876442149303 + ], + [ + 7.028151951233691, + 50.90849259953092 + ], + [ + 7.028431869970971, + 50.908340778120895 + ], + [ + 7.028465772999491, + 50.90832251345433 + ], + [ + 7.028971860740674, + 50.90804845851012 + ], + [ + 7.029106746023726, + 50.90797562342534 + ], + [ + 7.029398285165045, + 50.90781798993736 + ], + [ + 7.029406019396906, + 50.90781380803043 + ], + [ + 7.029571901947683, + 50.90773342479814 + ], + [ + 7.029578779453915, + 50.907730464154284 + ], + [ + 7.030647431484658, + 50.907212236422644 + ], + [ + 7.030300518970631, + 50.906945474214346 + ], + [ + 7.030301643063922, + 50.90690162897276 + ], + [ + 7.03035388734462, + 50.906840219200326 + ], + [ + 7.030991113411917, + 50.906499014385645 + ], + [ + 7.029644441400666, + 50.90558463993207 + ], + [ + 7.029747204332377, + 50.90552539097287 + ], + [ + 7.029790704670082, + 50.90549947688887 + ], + [ + 7.029805297086168, + 50.905490718700314 + ], + [ + 7.029861147189347, + 50.90545741426228 + ], + [ + 7.029880234718661, + 50.905446188516954 + ], + [ + 7.029962608544667, + 50.905397277947124 + ], + [ + 7.0302128219700455, + 50.90524881102251 + ], + [ + 7.030199569583393, + 50.90498347105074 + ], + [ + 7.0301948946448505, + 50.90490054009748 + ], + [ + 7.030185506799355, + 50.90482951644481 + ], + [ + 7.030116373631788, + 50.904595952482765 + ], + [ + 7.030066115567075, + 50.9044767475827 + ], + [ + 7.030005029192318, + 50.904079594750854 + ], + [ + 7.0299505944187315, + 50.90373254490269 + ], + [ + 7.029840752226101, + 50.90299422533748 + ], + [ + 7.029834426879725, + 50.902952390330015 + ], + [ + 7.029769850399286, + 50.902409819798024 + ], + [ + 7.029680248212685, + 50.90216969433532 + ], + [ + 7.029677119127567, + 50.90216315972339 + ], + [ + 7.029495226227229, + 50.901773456158246 + ], + [ + 7.029407157217273, + 50.9016220426724 + ], + [ + 7.029306313366873, + 50.901458515586725 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Westhoven", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "702", + "Population_rel": 0.005144112348810705, + "Population_abs": 5597 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.8787367713725045, + 51.006880295124276 + ], + [ + 6.878667448667128, + 51.00678571127756 + ], + [ + 6.879247481780867, + 51.006341145201425 + ], + [ + 6.879411033376467, + 51.006393130060104 + ], + [ + 6.879545283900615, + 51.00640254583358 + ], + [ + 6.880199524818391, + 51.00582950002774 + ], + [ + 6.8803714950868695, + 51.00570163598035 + ], + [ + 6.88083757033282, + 51.005327407171535 + ], + [ + 6.881224193903524, + 51.00503890456674 + ], + [ + 6.88126205606176, + 51.0049844137775 + ], + [ + 6.881418091583182, + 51.00486556768062 + ], + [ + 6.881532112878277, + 51.00483773888906 + ], + [ + 6.882141819652622, + 51.004352842683204 + ], + [ + 6.882366805490699, + 51.00417387667812 + ], + [ + 6.882683398609572, + 51.003919786765294 + ], + [ + 6.883036516141805, + 51.003631170847825 + ], + [ + 6.883206180524171, + 51.003502690679255 + ], + [ + 6.883289541661826, + 51.00343607916697 + ], + [ + 6.883920378447091, + 51.002947957455284 + ], + [ + 6.884633407815828, + 51.00244509638985 + ], + [ + 6.885178034685973, + 51.00204724269692 + ], + [ + 6.885515756201704, + 51.00176709602012 + ], + [ + 6.886050856350274, + 51.00135609591417 + ], + [ + 6.886414419027358, + 51.00110181910858 + ], + [ + 6.886876386849936, + 51.00077865592413 + ], + [ + 6.88751717556908, + 51.00015155523961 + ], + [ + 6.887656649702255, + 51.00006231101806 + ], + [ + 6.888661790171529, + 50.99921723281233 + ], + [ + 6.891468895794555, + 50.99700322164687 + ], + [ + 6.891268436866237, + 50.99694345681509 + ], + [ + 6.891174184355321, + 50.996915348292795 + ], + [ + 6.891137676416856, + 50.99690449191316 + ], + [ + 6.89043250617897, + 50.99669431848071 + ], + [ + 6.890230780457746, + 50.99663429242811 + ], + [ + 6.885261366654247, + 50.995155500629636 + ], + [ + 6.885287474499052, + 50.995123370959206 + ], + [ + 6.885396916720998, + 50.994987698465685 + ], + [ + 6.886289470690941, + 50.99388605722013 + ], + [ + 6.886289561315244, + 50.993885944639445 + ], + [ + 6.886513176828035, + 50.993957994652355 + ], + [ + 6.8873808896633095, + 50.99424974917099 + ], + [ + 6.889073383456896, + 50.994816046262855 + ], + [ + 6.889074268919895, + 50.99481763797714 + ], + [ + 6.889075488912523, + 50.9948198347235 + ], + [ + 6.889092156412686, + 50.99485148019462 + ], + [ + 6.889096068017249, + 50.994847785206815 + ], + [ + 6.8891132243279625, + 50.994826710823965 + ], + [ + 6.889134961644026, + 50.9947999092648 + ], + [ + 6.889163847437386, + 50.99476456871307 + ], + [ + 6.889757256790306, + 50.99403452915787 + ], + [ + 6.8899473546136845, + 50.993800620223 + ], + [ + 6.890225565428671, + 50.993458265863424 + ], + [ + 6.890397959315628, + 50.99324614575228 + ], + [ + 6.890794282383667, + 50.99275842487849 + ], + [ + 6.891631539005886, + 50.992127553537074 + ], + [ + 6.891665378587159, + 50.99210212570862 + ], + [ + 6.890882266540768, + 50.99171527565802 + ], + [ + 6.890329291939867, + 50.991504472444696 + ], + [ + 6.889672714728653, + 50.99129814221282 + ], + [ + 6.887119278549994, + 50.990495615559944 + ], + [ + 6.8868383816299, + 50.990393818305684 + ], + [ + 6.886343340802852, + 50.99026630410629 + ], + [ + 6.885928401430492, + 50.99015967258415 + ], + [ + 6.885915824374425, + 50.99015634563928 + ], + [ + 6.885911082216125, + 50.99015499076703 + ], + [ + 6.885910294419174, + 50.990154766050644 + ], + [ + 6.885876961595081, + 50.990143107447764 + ], + [ + 6.885653212919549, + 50.990064846135205 + ], + [ + 6.8853580760986715, + 50.98998796464667 + ], + [ + 6.885191147400023, + 50.98994458123643 + ], + [ + 6.885041653963905, + 50.98990558664094 + ], + [ + 6.884737128787021, + 50.989808419836365 + ], + [ + 6.8845312615679495, + 50.98974300858509 + ], + [ + 6.884531269280521, + 50.98974308966885 + ], + [ + 6.884536579513437, + 50.98979947706186 + ], + [ + 6.8845330400124185, + 50.98981043932201 + ], + [ + 6.884531801892687, + 50.98981469613554 + ], + [ + 6.884530574820096, + 50.98981864736051 + ], + [ + 6.884521561141416, + 50.98984172041476 + ], + [ + 6.884511422983366, + 50.98983900860422 + ], + [ + 6.884505117103789, + 50.989837321356774 + ], + [ + 6.884142860357775, + 50.99023903923254 + ], + [ + 6.884109942191681, + 50.990275540355924 + ], + [ + 6.884048171337447, + 50.99036680526835 + ], + [ + 6.884029589529018, + 50.990394267461944 + ], + [ + 6.883803340199124, + 50.99065289141943 + ], + [ + 6.883746294023117, + 50.99071642761578 + ], + [ + 6.882368062376171, + 50.99088533211153 + ], + [ + 6.882181883177405, + 50.99097429412856 + ], + [ + 6.881213272212174, + 50.99143637252132 + ], + [ + 6.880858566793967, + 50.99192266811846 + ], + [ + 6.880765810932503, + 50.99199083781705 + ], + [ + 6.880765581130022, + 50.99199078328153 + ], + [ + 6.869173503275439, + 50.98864096245243 + ], + [ + 6.8691734710708525, + 50.98864101223009 + ], + [ + 6.868528123775872, + 50.98963246658135 + ], + [ + 6.868199113957403, + 50.98976966199016 + ], + [ + 6.86808411264714, + 50.98987317318523 + ], + [ + 6.867895763788431, + 50.99011422563834 + ], + [ + 6.8678585350841646, + 50.990241069957314 + ], + [ + 6.86783275675502, + 50.99027218192921 + ], + [ + 6.867766885406935, + 50.99035160145813 + ], + [ + 6.86731666993613, + 50.99089438640217 + ], + [ + 6.86726759294193, + 50.9909347572778 + ], + [ + 6.867136393256581, + 50.99108912307522 + ], + [ + 6.866349400954687, + 50.99176260887745 + ], + [ + 6.866338505055416, + 50.991778852270116 + ], + [ + 6.86633422100302, + 50.99178705998713 + ], + [ + 6.866329936949072, + 50.991795267703964 + ], + [ + 6.866327233739312, + 50.99181642030564 + ], + [ + 6.866330412302489, + 50.99182790051196 + ], + [ + 6.866340215601008, + 50.99185029432311 + ], + [ + 6.8661853425942585, + 50.99183523475897 + ], + [ + 6.866157234573844, + 50.99185557868617 + ], + [ + 6.8661150304258936, + 50.99181698046068 + ], + [ + 6.86610298791101, + 50.991825630097026 + ], + [ + 6.866097320256192, + 50.99182970235463 + ], + [ + 6.866090942461412, + 50.99183428147731 + ], + [ + 6.866084567513127, + 50.99183886065166 + ], + [ + 6.8653063587290495, + 50.99240052086827 + ], + [ + 6.865111699300864, + 50.99254102602338 + ], + [ + 6.865085136748933, + 50.9925602800194 + ], + [ + 6.864981270746246, + 50.99263521069989 + ], + [ + 6.864003588581528, + 50.99334063993382 + ], + [ + 6.863898454743582, + 50.993416568170204 + ], + [ + 6.8636978027912905, + 50.993558123385 + ], + [ + 6.863595327490846, + 50.993630416123516 + ], + [ + 6.86120457494805, + 50.99508149075164 + ], + [ + 6.861091649278139, + 50.99515252955659 + ], + [ + 6.8596206935826265, + 50.996042152143815 + ], + [ + 6.859310759888839, + 50.99622880110586 + ], + [ + 6.85910522601376, + 50.99635310605359 + ], + [ + 6.858142078355608, + 50.99693657603234 + ], + [ + 6.858028810282155, + 50.997005006421944 + ], + [ + 6.857722685497702, + 50.997190275776944 + ], + [ + 6.859793606717782, + 50.997905503469724 + ], + [ + 6.859788870851195, + 50.997957586133985 + ], + [ + 6.861898380625791, + 50.998668267654025 + ], + [ + 6.862517371105794, + 50.99887691892944 + ], + [ + 6.864260818688737, + 50.99946351367061 + ], + [ + 6.864453139870895, + 50.999486630820144 + ], + [ + 6.864555896633388, + 50.99952739986989 + ], + [ + 6.86489326624472, + 50.99965155876452 + ], + [ + 6.865002280583138, + 50.99969165126394 + ], + [ + 6.86712422405761, + 51.00047244154407 + ], + [ + 6.866714114665189, + 51.00080287286981 + ], + [ + 6.866760689515123, + 51.000825269149324 + ], + [ + 6.868930407259405, + 51.00165762984367 + ], + [ + 6.869776674414848, + 51.001956241054906 + ], + [ + 6.871162041462532, + 51.002444811536314 + ], + [ + 6.869965180188855, + 51.00410459605848 + ], + [ + 6.869581851310893, + 51.00467925279257 + ], + [ + 6.869057402139386, + 51.00547923773571 + ], + [ + 6.868797287567073, + 51.006297480019946 + ], + [ + 6.868804227511744, + 51.0063638575494 + ], + [ + 6.8687723435109795, + 51.006403647013435 + ], + [ + 6.86860540833646, + 51.00661217933343 + ], + [ + 6.868534258507199, + 51.006700892416866 + ], + [ + 6.868502654503503, + 51.006740409909696 + ], + [ + 6.868958741551329, + 51.006832392049546 + ], + [ + 6.869101185251618, + 51.00686090574116 + ], + [ + 6.8692028227572415, + 51.006695917388576 + ], + [ + 6.869210881749104, + 51.00667733936985 + ], + [ + 6.869630748459449, + 51.00683619774357 + ], + [ + 6.870718079688054, + 51.00725049530978 + ], + [ + 6.870907948053765, + 51.00732332931868 + ], + [ + 6.872664330841354, + 51.00799195343829 + ], + [ + 6.873000002073492, + 51.00811978700573 + ], + [ + 6.87378903088744, + 51.00842050571638 + ], + [ + 6.874303667633671, + 51.00861639172048 + ], + [ + 6.875041049013712, + 51.008897443089694 + ], + [ + 6.875111084885453, + 51.008924155287616 + ], + [ + 6.875209481781076, + 51.00895707106865 + ], + [ + 6.875376523909917, + 51.009012949183955 + ], + [ + 6.8755814359015694, + 51.00908149559586 + ], + [ + 6.875718485110574, + 51.009127341029405 + ], + [ + 6.876970566772588, + 51.00820086834578 + ], + [ + 6.877200458021125, + 51.00803059487622 + ], + [ + 6.877995048012629, + 51.00746261957612 + ], + [ + 6.878523319965981, + 51.00706033614232 + ], + [ + 6.8787367713725045, + 51.006880295124276 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Pesch", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "606", + "Population_rel": 0.007126576228815117, + "Population_abs": 7754 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.93877525504053, + 50.99087724648499 + ], + [ + 6.938870802532232, + 50.990874755307544 + ], + [ + 6.939185045567469, + 50.990890940685695 + ], + [ + 6.939219190722776, + 50.99086289194646 + ], + [ + 6.939249857342283, + 50.99084008630912 + ], + [ + 6.939455569743692, + 50.990830606938914 + ], + [ + 6.939774473128695, + 50.99082390210668 + ], + [ + 6.940692909086648, + 50.990804371085375 + ], + [ + 6.942048813445001, + 50.99078103089558 + ], + [ + 6.942303279913695, + 50.990776564352124 + ], + [ + 6.942606359268323, + 50.990785509826075 + ], + [ + 6.942950292538527, + 50.99077528814242 + ], + [ + 6.94304339505852, + 50.99077451774923 + ], + [ + 6.943299358025017, + 50.99076050248533 + ], + [ + 6.94347900448967, + 50.99075062531793 + ], + [ + 6.943805628198821, + 50.99072958803932 + ], + [ + 6.943958701896318, + 50.99071984213971 + ], + [ + 6.944163904323948, + 50.9907063882676 + ], + [ + 6.944555421659174, + 50.99069108796028 + ], + [ + 6.944578762439712, + 50.99069017759823 + ], + [ + 6.945086082112533, + 50.9906724671556 + ], + [ + 6.945265932250478, + 50.9906661883103 + ], + [ + 6.946397544888707, + 50.990634401882545 + ], + [ + 6.9466516360148916, + 50.99063440442823 + ], + [ + 6.946727977868885, + 50.990634325704434 + ], + [ + 6.9475485230267315, + 50.990634142221815 + ], + [ + 6.9477258692769235, + 50.99063521830372 + ], + [ + 6.947978396834275, + 50.990636745495436 + ], + [ + 6.948374174316886, + 50.990615145996486 + ], + [ + 6.9484170294404946, + 50.99061274387862 + ], + [ + 6.948500555989762, + 50.990608242995634 + ], + [ + 6.948702135717441, + 50.99059733738193 + ], + [ + 6.948984063846879, + 50.99057230326965 + ], + [ + 6.949079703529612, + 50.99056190618797 + ], + [ + 6.949417514116966, + 50.99051933258785 + ], + [ + 6.949556627060906, + 50.99049609008532 + ], + [ + 6.949668978468349, + 50.99047626554742 + ], + [ + 6.949693702730896, + 50.9904720894551 + ], + [ + 6.949769711524925, + 50.990461907460706 + ], + [ + 6.949898404082971, + 50.99055271336805 + ], + [ + 6.95000018377104, + 50.99062703790369 + ], + [ + 6.950125456762596, + 50.990720213624584 + ], + [ + 6.950400614548392, + 50.99092305756459 + ], + [ + 6.950927258839281, + 50.991284876819485 + ], + [ + 6.9513407107886325, + 50.99099620984105 + ], + [ + 6.9527062982118535, + 50.99004138035535 + ], + [ + 6.953273338036145, + 50.98970927396319 + ], + [ + 6.955963890467461, + 50.987994688591414 + ], + [ + 6.959134926908264, + 50.98603940719321 + ], + [ + 6.960966278770627, + 50.9849880640615 + ], + [ + 6.960939484590557, + 50.9846958495471 + ], + [ + 6.960869442336528, + 50.98469705570449 + ], + [ + 6.960765222291195, + 50.98463633783994 + ], + [ + 6.960749267570902, + 50.984627612342415 + ], + [ + 6.96069668625498, + 50.984613616371476 + ], + [ + 6.960670548105076, + 50.98461233878605 + ], + [ + 6.960614255579223, + 50.98461510608185 + ], + [ + 6.960494615889257, + 50.984621394268935 + ], + [ + 6.9604521604934115, + 50.9846274960853 + ], + [ + 6.960396933111563, + 50.98464269318795 + ], + [ + 6.960294988505154, + 50.984685151715546 + ], + [ + 6.960154637525029, + 50.984743657674976 + ], + [ + 6.959356712227464, + 50.98508282042299 + ], + [ + 6.959328878037089, + 50.98510786175044 + ], + [ + 6.959318089961341, + 50.98514152912206 + ], + [ + 6.959308735443754, + 50.985154174482155 + ], + [ + 6.959275619340782, + 50.98517661515148 + ], + [ + 6.958901408291098, + 50.98533347536011 + ], + [ + 6.9587542834248195, + 50.985392775014226 + ], + [ + 6.958549386134731, + 50.98547775335951 + ], + [ + 6.958524698834848, + 50.98562472857075 + ], + [ + 6.957923098460254, + 50.985582772501246 + ], + [ + 6.957900000833524, + 50.98558116253715 + ], + [ + 6.957755016649168, + 50.98538893099617 + ], + [ + 6.957757206998172, + 50.985370777737195 + ], + [ + 6.9578591902688585, + 50.98451112893164 + ], + [ + 6.957901364690753, + 50.98415521388623 + ], + [ + 6.957920750545342, + 50.983997023544724 + ], + [ + 6.957956278379398, + 50.983723638987584 + ], + [ + 6.958103133616706, + 50.98371820883165 + ], + [ + 6.958279505244989, + 50.983493377775964 + ], + [ + 6.959494512693551, + 50.9819384148757 + ], + [ + 6.959544592110169, + 50.9818740001373 + ], + [ + 6.959959573366826, + 50.981847125756794 + ], + [ + 6.960022285177824, + 50.981842834981656 + ], + [ + 6.959981728685711, + 50.98155434316831 + ], + [ + 6.959932804147258, + 50.98120533307773 + ], + [ + 6.9602763307395685, + 50.98118030488514 + ], + [ + 6.960378369856752, + 50.98118413955448 + ], + [ + 6.960061954682976, + 50.97837553070142 + ], + [ + 6.959953205825154, + 50.977411158046536 + ], + [ + 6.959810902517896, + 50.97741538474426 + ], + [ + 6.959804099483576, + 50.97733545388175 + ], + [ + 6.959778890874013, + 50.97733431912279 + ], + [ + 6.958540959143599, + 50.97735507426868 + ], + [ + 6.958462670782993, + 50.977356346105 + ], + [ + 6.958418862893507, + 50.97731032112091 + ], + [ + 6.958346233014931, + 50.977233789158305 + ], + [ + 6.958290490100226, + 50.97717509735358 + ], + [ + 6.957843765685176, + 50.97717975266782 + ], + [ + 6.957568156577237, + 50.97718255357221 + ], + [ + 6.957529765167178, + 50.977157518984555 + ], + [ + 6.957292357878784, + 50.97700314232991 + ], + [ + 6.9571851315162565, + 50.97693354564073 + ], + [ + 6.9570972897936985, + 50.97686495892014 + ], + [ + 6.95705112735156, + 50.97682893100106 + ], + [ + 6.956962421865702, + 50.97675981192481 + ], + [ + 6.956825489985252, + 50.9766512650043 + ], + [ + 6.956508597454693, + 50.976398117318105 + ], + [ + 6.956681124982273, + 50.97556474679794 + ], + [ + 6.956767967136055, + 50.975342539567606 + ], + [ + 6.956874555119462, + 50.97506965100762 + ], + [ + 6.956833377642411, + 50.9750682802606 + ], + [ + 6.9569165547133975, + 50.97485482262714 + ], + [ + 6.957052063279718, + 50.97450672629095 + ], + [ + 6.956921201820335, + 50.97438149973626 + ], + [ + 6.956831276617941, + 50.97437055122945 + ], + [ + 6.956223360893987, + 50.974296876404 + ], + [ + 6.956170978680002, + 50.974149235089484 + ], + [ + 6.956132378291475, + 50.974040438729766 + ], + [ + 6.95588773837671, + 50.97404585787762 + ], + [ + 6.955755848363086, + 50.97405053347715 + ], + [ + 6.955665086810674, + 50.97405433351693 + ], + [ + 6.955665141023575, + 50.973959855420986 + ], + [ + 6.955658982431598, + 50.973854102845365 + ], + [ + 6.955658122014235, + 50.97381914087649 + ], + [ + 6.955655405968493, + 50.973721540221554 + ], + [ + 6.955653642800141, + 50.97365647215079 + ], + [ + 6.955357536615891, + 50.97363084933394 + ], + [ + 6.955343190591977, + 50.973570109947374 + ], + [ + 6.955311843673789, + 50.97343714556161 + ], + [ + 6.95526013178685, + 50.97322766929815 + ], + [ + 6.9551107365891625, + 50.9732534318836 + ], + [ + 6.954744863869545, + 50.97331992973498 + ], + [ + 6.954735719495998, + 50.97338163469 + ], + [ + 6.954707264356608, + 50.97357369818445 + ], + [ + 6.954534043962556, + 50.97359749399382 + ], + [ + 6.95438027115749, + 50.97358685601576 + ], + [ + 6.954193912356705, + 50.973578470047656 + ], + [ + 6.953897485623112, + 50.973554172570516 + ], + [ + 6.95383441526477, + 50.97345432167437 + ], + [ + 6.953766479596194, + 50.9733434751933 + ], + [ + 6.953747654854479, + 50.973312760005314 + ], + [ + 6.953722144618789, + 50.97327113428483 + ], + [ + 6.953637771110368, + 50.97313345557546 + ], + [ + 6.953570216806071, + 50.973022865678296 + ], + [ + 6.953564824124937, + 50.973008600653074 + ], + [ + 6.953548371365863, + 50.972930842150106 + ], + [ + 6.9535105545976785, + 50.972749434259086 + ], + [ + 6.95348823305553, + 50.97264177487184 + ], + [ + 6.953450868268492, + 50.972543760204665 + ], + [ + 6.953011372852818, + 50.97256479940953 + ], + [ + 6.9529757763796285, + 50.972564583687365 + ], + [ + 6.952610841664842, + 50.9725594175763 + ], + [ + 6.952302712605921, + 50.972530565040465 + ], + [ + 6.9518980880482175, + 50.97248208927495 + ], + [ + 6.951173494202905, + 50.97239630429991 + ], + [ + 6.950997104142709, + 50.972371979440865 + ], + [ + 6.9508914149307435, + 50.972357384240276 + ], + [ + 6.950796634857068, + 50.97234429707857 + ], + [ + 6.950288658000062, + 50.972274234540606 + ], + [ + 6.950327746981389, + 50.972496493834356 + ], + [ + 6.950365643569708, + 50.972678100303774 + ], + [ + 6.95049297949258, + 50.97312148141868 + ], + [ + 6.950544924574191, + 50.97330165255996 + ], + [ + 6.950583440927334, + 50.97343776873594 + ], + [ + 6.950543015236372, + 50.97357115478853 + ], + [ + 6.950461479508445, + 50.97375061002127 + ], + [ + 6.950379905541847, + 50.973754616679315 + ], + [ + 6.950156171498606, + 50.97376587604339 + ], + [ + 6.949954044821318, + 50.97377498709894 + ], + [ + 6.949852928831285, + 50.973781109178084 + ], + [ + 6.94950353335883, + 50.97380028874549 + ], + [ + 6.949508598998706, + 50.97384827200598 + ], + [ + 6.949539948240119, + 50.97419629791704 + ], + [ + 6.949543561097636, + 50.97429116425021 + ], + [ + 6.949562664332556, + 50.974550229476435 + ], + [ + 6.949876075280086, + 50.97454701403903 + ], + [ + 6.949875961483031, + 50.974627894431144 + ], + [ + 6.949875061015975, + 50.97473371680506 + ], + [ + 6.949848606218382, + 50.97473303287977 + ], + [ + 6.94984224298929, + 50.97490297634997 + ], + [ + 6.949932739322198, + 50.97492203282796 + ], + [ + 6.949950835730826, + 50.974933761782346 + ], + [ + 6.950024520010051, + 50.974947410989714 + ], + [ + 6.950095155440488, + 50.97496022776977 + ], + [ + 6.95004480282477, + 50.97508049829099 + ], + [ + 6.949982248389459, + 50.97522448238064 + ], + [ + 6.949925851620834, + 50.97536345981287 + ], + [ + 6.949909620168127, + 50.97539881068139 + ], + [ + 6.949768586594887, + 50.975376268575346 + ], + [ + 6.949621887858999, + 50.97534809657864 + ], + [ + 6.949592920397478, + 50.975342613493225 + ], + [ + 6.949535545941646, + 50.975466599918796 + ], + [ + 6.949461513289458, + 50.97563851634964 + ], + [ + 6.949523536568682, + 50.97565165979979 + ], + [ + 6.949376106205283, + 50.97596834628749 + ], + [ + 6.949329265519223, + 50.97606539071886 + ], + [ + 6.949129164877563, + 50.97650600639472 + ], + [ + 6.949090876063889, + 50.97658977059855 + ], + [ + 6.948807241802923, + 50.97653756340284 + ], + [ + 6.948669420640703, + 50.97684252629419 + ], + [ + 6.948569470219621, + 50.97705953017409 + ], + [ + 6.948502561293953, + 50.977206339245846 + ], + [ + 6.948487260627586, + 50.977239408373 + ], + [ + 6.948459520659102, + 50.977300551412846 + ], + [ + 6.94843959964254, + 50.977344161847235 + ], + [ + 6.948430064590844, + 50.977365267181646 + ], + [ + 6.948415321520241, + 50.97740927617025 + ], + [ + 6.948343565241126, + 50.97739582892969 + ], + [ + 6.948252187162107, + 50.977378776648536 + ], + [ + 6.94812137719233, + 50.97735422944984 + ], + [ + 6.948114394340315, + 50.97736975762853 + ], + [ + 6.9480804922986525, + 50.97744463364396 + ], + [ + 6.947929852649418, + 50.977444035225616 + ], + [ + 6.947691745274424, + 50.97744264132348 + ], + [ + 6.947447162524966, + 50.97743770560382 + ], + [ + 6.947244614347388, + 50.97743354969716 + ], + [ + 6.9471940281748035, + 50.97743256867002 + ], + [ + 6.947039703559787, + 50.97742708278374 + ], + [ + 6.947013064351705, + 50.97742621780631 + ], + [ + 6.946923858827354, + 50.97742315734628 + ], + [ + 6.946792777835319, + 50.97740353874803 + ], + [ + 6.94679102902026, + 50.977381308780835 + ], + [ + 6.94679306422394, + 50.97736575753783 + ], + [ + 6.9467613861422395, + 50.97735917832563 + ], + [ + 6.946692524636726, + 50.97734910235068 + ], + [ + 6.946699892089664, + 50.97731954000971 + ], + [ + 6.946747793733167, + 50.97720735364118 + ], + [ + 6.946812702460484, + 50.97707158614786 + ], + [ + 6.946963142902293, + 50.97709714730199 + ], + [ + 6.94707821068164, + 50.97682070926917 + ], + [ + 6.947374324428015, + 50.97612932547002 + ], + [ + 6.947105936709748, + 50.97608269741247 + ], + [ + 6.947159968306517, + 50.975940291783814 + ], + [ + 6.947133385332665, + 50.975933746478624 + ], + [ + 6.947045068674954, + 50.97591802775739 + ], + [ + 6.947049258007763, + 50.97589510534605 + ], + [ + 6.9470718936917555, + 50.975842640869516 + ], + [ + 6.9470697645984805, + 50.97574732117302 + ], + [ + 6.946512970678013, + 50.975979721069045 + ], + [ + 6.946352085613393, + 50.97597335170555 + ], + [ + 6.946258328690282, + 50.97596970702309 + ], + [ + 6.944163997676962, + 50.97588696947205 + ], + [ + 6.944097503466534, + 50.9758792522102 + ], + [ + 6.943873863498184, + 50.975853641338894 + ], + [ + 6.9434993919441235, + 50.97579743468319 + ], + [ + 6.9431764984606215, + 50.975735955764094 + ], + [ + 6.942788110754994, + 50.97564642273106 + ], + [ + 6.942330916361309, + 50.9755410799801 + ], + [ + 6.942237928715813, + 50.975526538014385 + ], + [ + 6.941952227323738, + 50.97550238485783 + ], + [ + 6.941887078474471, + 50.97548346406197 + ], + [ + 6.941726479573872, + 50.97547073927633 + ], + [ + 6.941642855843736, + 50.9754651523698 + ], + [ + 6.941482716454684, + 50.97545486005932 + ], + [ + 6.9413696513558865, + 50.975449114575156 + ], + [ + 6.941137002947317, + 50.975440446601645 + ], + [ + 6.941011444997021, + 50.9754367199342 + ], + [ + 6.940679930008566, + 50.975433066465754 + ], + [ + 6.940171515522663, + 50.975598903918936 + ], + [ + 6.940145413681156, + 50.97560542890553 + ], + [ + 6.939666373897329, + 50.97572657533656 + ], + [ + 6.939320891121146, + 50.97581547254931 + ], + [ + 6.939043962860223, + 50.97588664873313 + ], + [ + 6.938938692865444, + 50.97591958744373 + ], + [ + 6.9388332809950315, + 50.9759576562823 + ], + [ + 6.938814861717279, + 50.97596604158315 + ], + [ + 6.938698653074802, + 50.97602012193654 + ], + [ + 6.93859144693159, + 50.97607006569501 + ], + [ + 6.938507322793468, + 50.976113710230386 + ], + [ + 6.938420042601028, + 50.976170325515795 + ], + [ + 6.938229565759187, + 50.97632044867881 + ], + [ + 6.93815277001079, + 50.97639567706013 + ], + [ + 6.938113015250681, + 50.97644356195533 + ], + [ + 6.938044358886618, + 50.976534263817975 + ], + [ + 6.937959971387207, + 50.97667085899824 + ], + [ + 6.937937359130961, + 50.97670753726845 + ], + [ + 6.937902611104494, + 50.97676381892397 + ], + [ + 6.937863060074783, + 50.97683393895473 + ], + [ + 6.937832285220723, + 50.97688349778489 + ], + [ + 6.937807640433949, + 50.97692286343899 + ], + [ + 6.937791293493549, + 50.976948992950454 + ], + [ + 6.937739864961284, + 50.977032556569306 + ], + [ + 6.937529021233582, + 50.9773805166102 + ], + [ + 6.937491589144422, + 50.977445391919154 + ], + [ + 6.937402197512803, + 50.9775952701983 + ], + [ + 6.936810351043385, + 50.97741508187228 + ], + [ + 6.936543992122211, + 50.97734978266611 + ], + [ + 6.935005961496095, + 50.976991494425754 + ], + [ + 6.934951416428745, + 50.976990012672225 + ], + [ + 6.93491492064125, + 50.976990756773866 + ], + [ + 6.934878380890997, + 50.97699274841797 + ], + [ + 6.934841326465237, + 50.97699632194106 + ], + [ + 6.934805646922282, + 50.977000983728495 + ], + [ + 6.934770290391865, + 50.97700700207806 + ], + [ + 6.934735174020545, + 50.97701451043076 + ], + [ + 6.934708241516219, + 50.977021002429375 + ], + [ + 6.934681433668351, + 50.97702856958005 + ], + [ + 6.9346559750928245, + 50.97703655001884 + ], + [ + 6.93461506542348, + 50.977051491723124 + ], + [ + 6.9345583232469705, + 50.97707630639951 + ], + [ + 6.9345011596452775, + 50.97710849655689 + ], + [ + 6.934397644606436, + 50.97717651265588 + ], + [ + 6.9343006351024306, + 50.97724835636712 + ], + [ + 6.9342095846175855, + 50.97732324547569 + ], + [ + 6.9341251172859515, + 50.9774021074999 + ], + [ + 6.933431971896273, + 50.977264451571266 + ], + [ + 6.933288429806498, + 50.97720640619923 + ], + [ + 6.9332339596687955, + 50.977184498380424 + ], + [ + 6.932732266164826, + 50.977541309426854 + ], + [ + 6.931766700113558, + 50.978228129930926 + ], + [ + 6.93133232388283, + 50.97853771132452 + ], + [ + 6.931305465878314, + 50.97855717464168 + ], + [ + 6.930907913841179, + 50.97884000021125 + ], + [ + 6.9308300569251795, + 50.978899704321364 + ], + [ + 6.930726185096889, + 50.978980817462784 + ], + [ + 6.930383790714141, + 50.97924999577156 + ], + [ + 6.9303511249673235, + 50.97927006644239 + ], + [ + 6.930151411222796, + 50.979425889381616 + ], + [ + 6.930112627628168, + 50.97945810012282 + ], + [ + 6.930108151150896, + 50.97947626368262 + ], + [ + 6.930070387905031, + 50.97951368728329 + ], + [ + 6.928207326052544, + 50.98077054789276 + ], + [ + 6.927603620435953, + 50.98117712971393 + ], + [ + 6.927516466829686, + 50.98123579065927 + ], + [ + 6.9268592400486435, + 50.98167798733286 + ], + [ + 6.926839362271144, + 50.9816897795806 + ], + [ + 6.926658582213631, + 50.981798347759636 + ], + [ + 6.926615713047752, + 50.981823090156006 + ], + [ + 6.926269795529975, + 50.98198833512751 + ], + [ + 6.925618451674349, + 50.98241352866553 + ], + [ + 6.925193504084321, + 50.98268944570538 + ], + [ + 6.9250152141259695, + 50.982804141680624 + ], + [ + 6.92428696214757, + 50.983272321999195 + ], + [ + 6.923863424773239, + 50.98354376964554 + ], + [ + 6.9237645299731545, + 50.98360562410758 + ], + [ + 6.923253806961105, + 50.983925093807606 + ], + [ + 6.922845204617173, + 50.98418066323541 + ], + [ + 6.920951241803282, + 50.985388476137246 + ], + [ + 6.9204695075835465, + 50.98569093908552 + ], + [ + 6.91973902537, + 50.98616298912312 + ], + [ + 6.919638666991656, + 50.98623731177084 + ], + [ + 6.918572948774882, + 50.98690757864565 + ], + [ + 6.917747685416416, + 50.98743658867611 + ], + [ + 6.917701254842152, + 50.987475283788186 + ], + [ + 6.917652099791768, + 50.98751620571791 + ], + [ + 6.917621521559716, + 50.98754149588875 + ], + [ + 6.918265160100004, + 50.987831371153675 + ], + [ + 6.918344851477823, + 50.98786696978138 + ], + [ + 6.918528431083962, + 50.98794441981563 + ], + [ + 6.91857907331213, + 50.987966241917356 + ], + [ + 6.918603984214402, + 50.987977165434664 + ], + [ + 6.918668761163735, + 50.988005407338456 + ], + [ + 6.918762478737279, + 50.98804629665924 + ], + [ + 6.9191824468251495, + 50.98822974868746 + ], + [ + 6.9195748248027025, + 50.98841585636874 + ], + [ + 6.919717067067308, + 50.98848350416565 + ], + [ + 6.919755711951426, + 50.98850475947226 + ], + [ + 6.920112823983384, + 50.98870319527479 + ], + [ + 6.920191270358725, + 50.98874662558036 + ], + [ + 6.920656148868268, + 50.988972496890995 + ], + [ + 6.920740730458887, + 50.989013701286794 + ], + [ + 6.92194961784349, + 50.98958765452952 + ], + [ + 6.922122072666932, + 50.98966905236063 + ], + [ + 6.9222227921833985, + 50.98971692116666 + ], + [ + 6.9222826087463725, + 50.98974539204988 + ], + [ + 6.922472560962791, + 50.9898356582057 + ], + [ + 6.923372780499813, + 50.990252332719855 + ], + [ + 6.923883782078104, + 50.99048949150696 + ], + [ + 6.9238429696277946, + 50.990520202642585 + ], + [ + 6.924194013866605, + 50.990658949610776 + ], + [ + 6.924518154506416, + 50.9907719791457 + ], + [ + 6.924685677150767, + 50.99082332913005 + ], + [ + 6.924827770954996, + 50.99086364767694 + ], + [ + 6.925033033057482, + 50.9909218743526 + ], + [ + 6.925328284762371, + 50.990993147537615 + ], + [ + 6.925544791938356, + 50.99103551746561 + ], + [ + 6.9258902436389125, + 50.991111199292945 + ], + [ + 6.926064851278907, + 50.99113608853741 + ], + [ + 6.926096738273864, + 50.99114065253552 + ], + [ + 6.926405021118573, + 50.99117039109791 + ], + [ + 6.926807865665258, + 50.991194251087244 + ], + [ + 6.926963208325988, + 50.99120019253905 + ], + [ + 6.927548806353143, + 50.991180366483746 + ], + [ + 6.927762971002026, + 50.99117785156144 + ], + [ + 6.928019573390344, + 50.991174823786075 + ], + [ + 6.928265353024511, + 50.991171881353964 + ], + [ + 6.92849006445986, + 50.9911695548993 + ], + [ + 6.928532925828916, + 50.99116903357834 + ], + [ + 6.928677459718391, + 50.99116716513002 + ], + [ + 6.92889148101337, + 50.99116447381473 + ], + [ + 6.929150215444449, + 50.99116124573045 + ], + [ + 6.929292883249181, + 50.99115929576262 + ], + [ + 6.929435070461095, + 50.99115412004255 + ], + [ + 6.929577096130581, + 50.99114786653483 + ], + [ + 6.9297192635186615, + 50.99114178984521 + ], + [ + 6.929861287738423, + 50.99113553506704 + ], + [ + 6.930155439806672, + 50.99112276427837 + ], + [ + 6.930319976959965, + 50.991115894370346 + ], + [ + 6.93038264408751, + 50.99111628728812 + ], + [ + 6.930630797339333, + 50.991118084763386 + ], + [ + 6.930880366768046, + 50.99111995357007 + ], + [ + 6.931107642952658, + 50.991117335651424 + ], + [ + 6.9312060461901615, + 50.99111637360895 + ], + [ + 6.932201014294695, + 50.99111328643214 + ], + [ + 6.93229102431113, + 50.99111292673454 + ], + [ + 6.932906618907031, + 50.99111095202464 + ], + [ + 6.934542114136047, + 50.991104620898795 + ], + [ + 6.9346082347673255, + 50.99110034552732 + ], + [ + 6.9347696054274754, + 50.99104309886479 + ], + [ + 6.9349783526380175, + 50.99099810817335 + ], + [ + 6.935029493597628, + 50.990987112885385 + ], + [ + 6.935405683169757, + 50.990962153980966 + ], + [ + 6.9355209815068575, + 50.99095479386534 + ], + [ + 6.93630683722734, + 50.99093716074057 + ], + [ + 6.936485654161684, + 50.99093312198694 + ], + [ + 6.936596284269816, + 50.99093124543629 + ], + [ + 6.936856415032931, + 50.990926817993724 + ], + [ + 6.937004617133862, + 50.99092347151501 + ], + [ + 6.937640242165694, + 50.990906862848114 + ], + [ + 6.938149454846735, + 50.990893603094584 + ], + [ + 6.9384620771046785, + 50.99088587538638 + ], + [ + 6.93877525504053, + 50.99087724648499 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Weidenpesch", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "505", + "Population_rel": 0.012723796919230911, + "Population_abs": 13844 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.997962200582666, + 50.948849673390555 + ], + [ + 6.998036611082555, + 50.94885091971477 + ], + [ + 6.998216669694697, + 50.94886429239624 + ], + [ + 6.998261409116252, + 50.9488676712757 + ], + [ + 6.998363328035592, + 50.948874109841825 + ], + [ + 6.998430650401253, + 50.948873453633944 + ], + [ + 6.998472266735647, + 50.94887145101683 + ], + [ + 6.998545430905646, + 50.948863531747485 + ], + [ + 6.99860461704966, + 50.94885279071508 + ], + [ + 6.998645651166837, + 50.948842665731995 + ], + [ + 6.998711096262541, + 50.948824494315126 + ], + [ + 6.998770189063214, + 50.94880286561678 + ], + [ + 6.9988250949473665, + 50.948781295529244 + ], + [ + 6.998930428047298, + 50.948739634423376 + ], + [ + 6.9990031824981225, + 50.948711514276965 + ], + [ + 6.999077970014428, + 50.948682563735645 + ], + [ + 6.999128521181472, + 50.948664191680976 + ], + [ + 6.999188190450372, + 50.94864384975883 + ], + [ + 6.999237351711179, + 50.94862747292424 + ], + [ + 6.99927672931881, + 50.9486141409565 + ], + [ + 6.999314266323953, + 50.94860186297364 + ], + [ + 6.999394722111995, + 50.94857567869957 + ], + [ + 6.999606675682136, + 50.948506357248824 + ], + [ + 6.999666477607202, + 50.9484858671621 + ], + [ + 6.999705999198799, + 50.94847282351746 + ], + [ + 6.999771601950846, + 50.948453842979156 + ], + [ + 6.999838290274401, + 50.94843378377062 + ], + [ + 6.9999262427664055, + 50.94840726799116 + ], + [ + 6.999971481239566, + 50.948394371662424 + ], + [ + 7.000169954436199, + 50.94834296845616 + ], + [ + 7.000226253744867, + 50.94832854369896 + ], + [ + 7.000380548998907, + 50.94828867239745 + ], + [ + 7.000462967120929, + 50.948267194131965 + ], + [ + 7.000590166322274, + 50.94823726419162 + ], + [ + 7.000636787245554, + 50.94822644904228 + ], + [ + 7.0007351887972655, + 50.94820381790934 + ], + [ + 7.000898983915216, + 50.948170376322345 + ], + [ + 7.000981454203113, + 50.948153511457356 + ], + [ + 7.001092498847129, + 50.94813401226691 + ], + [ + 7.001312636813322, + 50.948095657390056 + ], + [ + 7.001370966352432, + 50.94808161489739 + ], + [ + 7.00141583678568, + 50.94805378396084 + ], + [ + 7.0014494141444965, + 50.948020414726486 + ], + [ + 7.001458918515192, + 50.947974953264655 + ], + [ + 7.001462559958032, + 50.94792816649433 + ], + [ + 7.001510148453805, + 50.94731628857607 + ], + [ + 7.001515112994037, + 50.94726049297012 + ], + [ + 7.001517440699073, + 50.94720931456265 + ], + [ + 7.001521201882473, + 50.94714157809883 + ], + [ + 7.001523976173687, + 50.94711304539176 + ], + [ + 7.001598663940802, + 50.947118783864454 + ], + [ + 7.001664025185552, + 50.94712382572358 + ], + [ + 7.002358805959968, + 50.94717659168375 + ], + [ + 7.002463062366506, + 50.947182163717564 + ], + [ + 7.002601828302769, + 50.947189507856805 + ], + [ + 7.002902200630362, + 50.94720542007463 + ], + [ + 7.002970375946703, + 50.94720905235881 + ], + [ + 7.003583711739742, + 50.94724178734625 + ], + [ + 7.005124585009448, + 50.94736582724335 + ], + [ + 7.005488118764089, + 50.94739566133186 + ], + [ + 7.006706431824102, + 50.947571384386166 + ], + [ + 7.006789873108449, + 50.94758342786719 + ], + [ + 7.00687954339583, + 50.94759702831486 + ], + [ + 7.007182634540285, + 50.94764902264897 + ], + [ + 7.00740889077232, + 50.94768843752033 + ], + [ + 7.00747663374595, + 50.94770020537847 + ], + [ + 7.007741178365146, + 50.94774640227133 + ], + [ + 7.007798747552394, + 50.94775527843194 + ], + [ + 7.007853459094156, + 50.94776382879578 + ], + [ + 7.007998254557191, + 50.9477853454241 + ], + [ + 7.008044590006738, + 50.94779091167077 + ], + [ + 7.008094164002619, + 50.94779592068351 + ], + [ + 7.008414929983535, + 50.94782627054019 + ], + [ + 7.008643967639426, + 50.94783922692799 + ], + [ + 7.00879167642999, + 50.94784788900431 + ], + [ + 7.008901727477917, + 50.94785377444881 + ], + [ + 7.009421172153439, + 50.947857326052606 + ], + [ + 7.009470317909903, + 50.94785866764292 + ], + [ + 7.009706171197099, + 50.94786539309685 + ], + [ + 7.010189412797973, + 50.94788224362792 + ], + [ + 7.010245622464063, + 50.947878230824905 + ], + [ + 7.0103959369293865, + 50.947867159041905 + ], + [ + 7.010464878491951, + 50.947861951099966 + ], + [ + 7.010507565001544, + 50.94785875728048 + ], + [ + 7.010591504545183, + 50.94785246478398 + ], + [ + 7.010637565617838, + 50.947849094584626 + ], + [ + 7.011077070281444, + 50.947836053888665 + ], + [ + 7.011194122583206, + 50.94783802097353 + ], + [ + 7.01124252150204, + 50.94783944892472 + ], + [ + 7.011286662163166, + 50.947839675610496 + ], + [ + 7.011342855420369, + 50.947839812589855 + ], + [ + 7.011401067810229, + 50.947840608996565 + ], + [ + 7.01144464998663, + 50.94784124521579 + ], + [ + 7.011757751788644, + 50.94784580531073 + ], + [ + 7.011843179055187, + 50.94784738244982 + ], + [ + 7.012134560777612, + 50.9478585201736 + ], + [ + 7.012242091267156, + 50.94786326141717 + ], + [ + 7.012295766266303, + 50.94786859838381 + ], + [ + 7.012486676613228, + 50.94789037382378 + ], + [ + 7.012933595413797, + 50.947941229321025 + ], + [ + 7.01308122412734, + 50.94795816958626 + ], + [ + 7.014168667818947, + 50.94808048857351 + ], + [ + 7.014441879458977, + 50.94810735619782 + ], + [ + 7.016125097134429, + 50.948269331251176 + ], + [ + 7.016233612928678, + 50.94827978485115 + ], + [ + 7.016295464918013, + 50.94828563035393 + ], + [ + 7.01643905376228, + 50.94829956577132 + ], + [ + 7.016494297478803, + 50.948235575331644 + ], + [ + 7.016560931187575, + 50.94818137193904 + ], + [ + 7.016612458122432, + 50.94813542079305 + ], + [ + 7.016785565356017, + 50.94798100258185 + ], + [ + 7.016914307070017, + 50.94786158223229 + ], + [ + 7.016976298629622, + 50.94779229018807 + ], + [ + 7.017310890808723, + 50.94741631594977 + ], + [ + 7.0174611060063485, + 50.9472380065697 + ], + [ + 7.017613235456121, + 50.9470301051945 + ], + [ + 7.017745143600068, + 50.94648941399821 + ], + [ + 7.0177614381194955, + 50.946421132677756 + ], + [ + 7.017784123111053, + 50.94632618744587 + ], + [ + 7.017795336992505, + 50.94627934445088 + ], + [ + 7.017851137013296, + 50.94604576433419 + ], + [ + 7.017928953223506, + 50.945719311403316 + ], + [ + 7.018018523694165, + 50.945344752856556 + ], + [ + 7.018244035273422, + 50.944400897146295 + ], + [ + 7.01828720863655, + 50.94422017870635 + ], + [ + 7.018317835542836, + 50.94403949550294 + ], + [ + 7.018421525866405, + 50.94336726562705 + ], + [ + 7.018503322827753, + 50.94281780205145 + ], + [ + 7.018513304424257, + 50.94263850683083 + ], + [ + 7.018509870329568, + 50.94256252648702 + ], + [ + 7.0184376594675175, + 50.94256950216846 + ], + [ + 7.018283726021378, + 50.94199916863261 + ], + [ + 7.018201466925648, + 50.94199651492499 + ], + [ + 7.018177625296249, + 50.94195130720443 + ], + [ + 7.018038780128812, + 50.94166292361424 + ], + [ + 7.0178103675732135, + 50.941353412824924 + ], + [ + 7.017646843896852, + 50.9412015710871 + ], + [ + 7.0174480208360865, + 50.94100347134926 + ], + [ + 7.01725891285474, + 50.94079414034599 + ], + [ + 7.017016316871688, + 50.94052639387494 + ], + [ + 7.016765774868781, + 50.9401902479163 + ], + [ + 7.016844573764477, + 50.94018398867994 + ], + [ + 7.016880130167418, + 50.940064343356795 + ], + [ + 7.016606109216314, + 50.94002783244491 + ], + [ + 7.016613356027761, + 50.939939836208005 + ], + [ + 7.016617899556158, + 50.9397698992199 + ], + [ + 7.016621169888412, + 50.93970342569359 + ], + [ + 7.016522732183676, + 50.939672667603425 + ], + [ + 7.016484104049805, + 50.93961266905886 + ], + [ + 7.016483403802391, + 50.93923953015811 + ], + [ + 7.016515669696084, + 50.93919740237702 + ], + [ + 7.0164942731608315, + 50.93913869490492 + ], + [ + 7.016553825323684, + 50.93861981870464 + ], + [ + 7.0167108809066745, + 50.938184919222834 + ], + [ + 7.0167230715249795, + 50.938151489888845 + ], + [ + 7.016719140111723, + 50.93808512693101 + ], + [ + 7.01671315992425, + 50.93799532845466 + ], + [ + 7.01673510443391, + 50.93791461585992 + ], + [ + 7.016773941225133, + 50.93766231610842 + ], + [ + 7.016781695958036, + 50.93759457688206 + ], + [ + 7.016805561692092, + 50.93738805703522 + ], + [ + 7.016835538482516, + 50.937122076604474 + ], + [ + 7.016850262491314, + 50.936990997999764 + ], + [ + 7.0168667129783495, + 50.93681449095051 + ], + [ + 7.016937197157333, + 50.93637911329421 + ], + [ + 7.016961733143885, + 50.935956918674165 + ], + [ + 7.016970137751443, + 50.935895668625314 + ], + [ + 7.016976322312054, + 50.935851672157966 + ], + [ + 7.0170591203501775, + 50.93516081074125 + ], + [ + 7.017070910886308, + 50.93503813093361 + ], + [ + 7.0170729920926735, + 50.93498549645268 + ], + [ + 7.017103048112609, + 50.9342910957668 + ], + [ + 7.017108046059061, + 50.93425176484831 + ], + [ + 7.017116854581603, + 50.93419726691628 + ], + [ + 7.01716867444413, + 50.93387463722435 + ], + [ + 7.0171898289492995, + 50.933735739798074 + ], + [ + 7.016980335163189, + 50.93368703462984 + ], + [ + 7.016962689323423, + 50.93365425320087 + ], + [ + 7.016959467429293, + 50.93361644018972 + ], + [ + 7.016962538291775, + 50.93357526970095 + ], + [ + 7.016967154070293, + 50.93353696027259 + ], + [ + 7.016962137143598, + 50.933401030499624 + ], + [ + 7.016958584509549, + 50.93333459299289 + ], + [ + 7.016956745062541, + 50.93330770923351 + ], + [ + 7.016946782353576, + 50.93317311824208 + ], + [ + 7.016994474952897, + 50.93299651674875 + ], + [ + 7.017007704381345, + 50.93258757274177 + ], + [ + 7.017013780562463, + 50.93243995340233 + ], + [ + 7.01701113223486, + 50.93228892383598 + ], + [ + 7.017004646855509, + 50.93200182801828 + ], + [ + 7.016998388101881, + 50.931925467637186 + ], + [ + 7.016943663505001, + 50.931581827302594 + ], + [ + 7.016896485534011, + 50.93136691888273 + ], + [ + 7.016793837719111, + 50.930951692782195 + ], + [ + 7.016616257359677, + 50.9305748709642 + ], + [ + 7.0163734329657474, + 50.930162276597756 + ], + [ + 7.016338985655964, + 50.92974486143537 + ], + [ + 7.01630236807479, + 50.92972098233153 + ], + [ + 7.016273472138789, + 50.929655037734996 + ], + [ + 7.016263068122248, + 50.929629940249946 + ], + [ + 7.016050613202808, + 50.92902574288273 + ], + [ + 7.016048853506504, + 50.928969844922406 + ], + [ + 7.016064524217947, + 50.92892725621212 + ], + [ + 7.016107143381257, + 50.92889733537065 + ], + [ + 7.016250678882531, + 50.92847512841979 + ], + [ + 7.016319218964773, + 50.928315845320675 + ], + [ + 7.016501016109337, + 50.928103535122375 + ], + [ + 7.016270212750885, + 50.92799995458157 + ], + [ + 7.016218957377292, + 50.92805674133624 + ], + [ + 7.01607408300304, + 50.928287576134714 + ], + [ + 7.016051515925346, + 50.928312914611475 + ], + [ + 7.01595444507963, + 50.92852729378768 + ], + [ + 7.015937738944912, + 50.9285520123626 + ], + [ + 7.01588177454518, + 50.92871116453701 + ], + [ + 7.015701804919554, + 50.928721524900624 + ], + [ + 7.01565445111633, + 50.92861429010099 + ], + [ + 7.015369629459475, + 50.928171004321136 + ], + [ + 7.015447911938044, + 50.9281506603888 + ], + [ + 7.015423329035581, + 50.92810968078799 + ], + [ + 7.0162618465280575, + 50.927795262039965 + ], + [ + 7.016138646882046, + 50.92770286238642 + ], + [ + 7.016055224760174, + 50.92774054205023 + ], + [ + 7.015271375362133, + 50.92811161480326 + ], + [ + 7.015188494647826, + 50.92815202006031 + ], + [ + 7.014805684197648, + 50.92833744614279 + ], + [ + 7.014422329796523, + 50.928523776389945 + ], + [ + 7.014441593526394, + 50.92854795629918 + ], + [ + 7.014478942005855, + 50.92858774482809 + ], + [ + 7.014526146942206, + 50.928644410419395 + ], + [ + 7.014501839814788, + 50.92871018173367 + ], + [ + 7.014442450055425, + 50.928748550529804 + ], + [ + 7.013837786119474, + 50.929001374059844 + ], + [ + 7.013802553840069, + 50.92901386763311 + ], + [ + 7.013412860279577, + 50.92914978667798 + ], + [ + 7.013158507101374, + 50.92920766632436 + ], + [ + 7.012925664913815, + 50.9293063239652 + ], + [ + 7.012890398896301, + 50.929330215328044 + ], + [ + 7.012680629376863, + 50.929472327166216 + ], + [ + 7.011945481190522, + 50.92977793670624 + ], + [ + 7.0118900072894865, + 50.92979925226574 + ], + [ + 7.0104628225846515, + 50.93038888365023 + ], + [ + 7.010288577448756, + 50.93046133596725 + ], + [ + 7.010183003896968, + 50.9305069836641 + ], + [ + 7.008380286821344, + 50.93124052955514 + ], + [ + 7.007967205256413, + 50.93140978406068 + ], + [ + 7.00757366556974, + 50.93156948027077 + ], + [ + 7.006905706708882, + 50.93184027071751 + ], + [ + 7.006052292363295, + 50.93218634013679 + ], + [ + 7.005676038888499, + 50.93234024371755 + ], + [ + 7.004100693774079, + 50.93298535438364 + ], + [ + 7.003961443294469, + 50.93304242371411 + ], + [ + 7.0037252569797195, + 50.93313899228379 + ], + [ + 7.003559349110762, + 50.933207401431524 + ], + [ + 7.003475495654122, + 50.933241951181266 + ], + [ + 7.002940718992422, + 50.93346313459747 + ], + [ + 7.002381555198062, + 50.93369391547017 + ], + [ + 7.002219321993081, + 50.93375838430488 + ], + [ + 7.001642284965554, + 50.933985404891956 + ], + [ + 7.001513817541539, + 50.934041130584596 + ], + [ + 7.001299822118427, + 50.934132070882086 + ], + [ + 7.001209497106434, + 50.93415691370885 + ], + [ + 7.001172930191396, + 50.93417536597143 + ], + [ + 7.0011259083569195, + 50.934191647990644 + ], + [ + 7.001081929115654, + 50.934210759353206 + ], + [ + 7.0009785613801245, + 50.93425278061948 + ], + [ + 7.000589228733734, + 50.93441091744545 + ], + [ + 7.0002230747802505, + 50.93456669528082 + ], + [ + 7.000251780208446, + 50.93459179925348 + ], + [ + 7.000065597966247, + 50.934666389203684 + ], + [ + 6.999957981946335, + 50.9347428223278 + ], + [ + 6.999783322705023, + 50.9348041879221 + ], + [ + 6.99953889732921, + 50.934896085774355 + ], + [ + 6.999237144681329, + 50.935008070181205 + ], + [ + 6.998566046568702, + 50.93527127042914 + ], + [ + 6.998562071101982, + 50.93524505481235 + ], + [ + 6.998326795438708, + 50.93535916502941 + ], + [ + 6.998257559255925, + 50.93538124187964 + ], + [ + 6.998216170921174, + 50.935398432370256 + ], + [ + 6.998181699960642, + 50.93541290394753 + ], + [ + 6.9979937661828835, + 50.935485436097125 + ], + [ + 6.997501718037881, + 50.935716261957936 + ], + [ + 6.996891149481238, + 50.935974173780046 + ], + [ + 6.996181121297662, + 50.936274278992855 + ], + [ + 6.995921053318803, + 50.93638373537975 + ], + [ + 6.995878659895932, + 50.93640095546057 + ], + [ + 6.9953668217695695, + 50.936608529223996 + ], + [ + 6.994413365559515, + 50.93698771082656 + ], + [ + 6.994030991531218, + 50.93712408895987 + ], + [ + 6.9939899096171425, + 50.93714324746041 + ], + [ + 6.99390801315873, + 50.937178723397736 + ], + [ + 6.99378680559495, + 50.937232852113745 + ], + [ + 6.99369783711389, + 50.93731604940141 + ], + [ + 6.993671399825458, + 50.93734086740877 + ], + [ + 6.991681770078584, + 50.93819529501913 + ], + [ + 6.9916437215043885, + 50.93821156663498 + ], + [ + 6.991274572313103, + 50.93836918437793 + ], + [ + 6.990572587555574, + 50.93866976831805 + ], + [ + 6.990353543990299, + 50.93864244040869 + ], + [ + 6.990157068729452, + 50.938721300182245 + ], + [ + 6.990113620499099, + 50.93873957657628 + ], + [ + 6.9900386069456575, + 50.938784737654544 + ], + [ + 6.989917328755488, + 50.93885769224416 + ], + [ + 6.989283289180893, + 50.939114607358995 + ], + [ + 6.988879958072235, + 50.93924899701049 + ], + [ + 6.98867424634382, + 50.93931760691931 + ], + [ + 6.988226732130223, + 50.939449194197316 + ], + [ + 6.98792968033492, + 50.93952300726537 + ], + [ + 6.987948936406172, + 50.939630232349735 + ], + [ + 6.987958621216339, + 50.93968417908615 + ], + [ + 6.988174311164063, + 50.93971758919548 + ], + [ + 6.988385920412089, + 50.93975993490835 + ], + [ + 6.988595203905453, + 50.939806704649975 + ], + [ + 6.988799119498331, + 50.93986206048368 + ], + [ + 6.9896517582181, + 50.94016244877026 + ], + [ + 6.990576293114814, + 50.94063166821086 + ], + [ + 6.991204420159947, + 50.94100469619229 + ], + [ + 6.9918329814350235, + 50.94143767585171 + ], + [ + 6.992105218795576, + 50.941667377029574 + ], + [ + 6.992517850637404, + 50.942015441636435 + ], + [ + 6.993283924351892, + 50.94271791923977 + ], + [ + 6.993419837875829, + 50.94287281771213 + ], + [ + 6.993542156755866, + 50.94303744920604 + ], + [ + 6.993634222331648, + 50.94318454000887 + ], + [ + 6.993729206529962, + 50.94337511426041 + ], + [ + 6.994157430544005, + 50.94449908960294 + ], + [ + 6.994179317815938, + 50.94455122090721 + ], + [ + 6.994303708790242, + 50.944846000124365 + ], + [ + 6.994580558151673, + 50.945516852370204 + ], + [ + 6.9946680351395205, + 50.94572843471072 + ], + [ + 6.994689638697063, + 50.94578056822444 + ], + [ + 6.994703722316641, + 50.945814582436796 + ], + [ + 6.994768202910068, + 50.94598114196761 + ], + [ + 6.994268981882512, + 50.94584845918475 + ], + [ + 6.993829895919623, + 50.94574115363153 + ], + [ + 6.993059874852465, + 50.94557115832033 + ], + [ + 6.992716724987455, + 50.94550728614509 + ], + [ + 6.992658034035977, + 50.94549790925008 + ], + [ + 6.992474903215197, + 50.94546871537644 + ], + [ + 6.992189907672313, + 50.94543423571574 + ], + [ + 6.992424594509958, + 50.94567502954851 + ], + [ + 6.99246702182567, + 50.94571788121378 + ], + [ + 6.992504877604893, + 50.94575611422368 + ], + [ + 6.992603733136285, + 50.94584345944166 + ], + [ + 6.992738667642617, + 50.945962678973515 + ], + [ + 6.99300430690484, + 50.94624852716195 + ], + [ + 6.993223712913064, + 50.94644811092037 + ], + [ + 6.993306911321323, + 50.946526059556575 + ], + [ + 6.993398474099693, + 50.946630583527686 + ], + [ + 6.993477539714751, + 50.94672084085156 + ], + [ + 6.993528403112039, + 50.946769601177195 + ], + [ + 6.99361119959138, + 50.94684897357849 + ], + [ + 6.9938795902592545, + 50.94719399163803 + ], + [ + 6.994329444213196, + 50.947772263207966 + ], + [ + 6.9943938919468405, + 50.94785819099156 + ], + [ + 6.995012978630014, + 50.948684185648794 + ], + [ + 6.9951883211839245, + 50.94891817958228 + ], + [ + 6.9952594207260494, + 50.94901304391032 + ], + [ + 6.9953451711442405, + 50.94911676854057 + ], + [ + 6.995374428898319, + 50.949154093864735 + ], + [ + 6.9954240054848125, + 50.94918005735171 + ], + [ + 6.995459595846385, + 50.94919462487861 + ], + [ + 6.995525053423365, + 50.94920419834997 + ], + [ + 6.995584776352096, + 50.94920420475005 + ], + [ + 6.995721368641966, + 50.94918726728525 + ], + [ + 6.9959064443901475, + 50.949163028930066 + ], + [ + 6.996750875615591, + 50.94897977317055 + ], + [ + 6.996882277877935, + 50.94895252394783 + ], + [ + 6.99694716082112, + 50.948942215164 + ], + [ + 6.99698713779319, + 50.94893579332126 + ], + [ + 6.997118676768871, + 50.94891797518293 + ], + [ + 6.997161537484584, + 50.948912331243655 + ], + [ + 6.997293843544553, + 50.9488933910622 + ], + [ + 6.997400879619847, + 50.948878260502006 + ], + [ + 6.997594015131132, + 50.94885834430339 + ], + [ + 6.99764798547622, + 50.948853487016656 + ], + [ + 6.997700781819487, + 50.94884884790332 + ], + [ + 6.997811226370771, + 50.94884782269756 + ], + [ + 6.997872888819932, + 50.948848570795 + ], + [ + 6.997962200582666, + 50.948849673390555 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Kalk", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "802", + "Population_rel": 0.022175655306790193, + "Population_abs": 24128 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.061042234392778, + 50.91632857519558 + ], + [ + 7.061072997580757, + 50.9162482600031 + ], + [ + 7.061075761911208, + 50.91624850018633 + ], + [ + 7.0615924051881755, + 50.916290666363395 + ], + [ + 7.061727484386816, + 50.91630169458132 + ], + [ + 7.061755569056163, + 50.91630398756582 + ], + [ + 7.06198632075571, + 50.91632495298314 + ], + [ + 7.062721433117124, + 50.91639173977877 + ], + [ + 7.063953007585139, + 50.91638032485464 + ], + [ + 7.064466773535015, + 50.91637555910004 + ], + [ + 7.0649048782729045, + 50.91639295538446 + ], + [ + 7.065956806828754, + 50.91640078854247 + ], + [ + 7.066020941095013, + 50.91640173788532 + ], + [ + 7.066221729772168, + 50.91640485324403 + ], + [ + 7.066390218676932, + 50.91640737472747 + ], + [ + 7.066383743324112, + 50.916350451707515 + ], + [ + 7.066376154955638, + 50.91626337333882 + ], + [ + 7.066376066410292, + 50.91617240173584 + ], + [ + 7.066376076907953, + 50.91616044571641 + ], + [ + 7.066376033773762, + 50.91613825220604 + ], + [ + 7.0663769044049305, + 50.916138048082644 + ], + [ + 7.0668429042703105, + 50.91602355816494 + ], + [ + 7.067895477346968, + 50.915737359738614 + ], + [ + 7.068622909578822, + 50.91545297169727 + ], + [ + 7.069325606329896, + 50.915138751703694 + ], + [ + 7.070167238388571, + 50.91467528580263 + ], + [ + 7.070940521686516, + 50.91417070921668 + ], + [ + 7.071624955380595, + 50.91358677086138 + ], + [ + 7.072220544363456, + 50.9129929538921 + ], + [ + 7.072547346509581, + 50.91263770467145 + ], + [ + 7.072733700871874, + 50.91243473681885 + ], + [ + 7.0746955782736265, + 50.91021240078407 + ], + [ + 7.074722962991449, + 50.91019376612618 + ], + [ + 7.074810416872603, + 50.91013425492884 + ], + [ + 7.074840374297375, + 50.910041723873626 + ], + [ + 7.073349383468377, + 50.90989640214909 + ], + [ + 7.071873264313883, + 50.909743849430775 + ], + [ + 7.071550598120919, + 50.90968604500671 + ], + [ + 7.071054975527597, + 50.90959458884422 + ], + [ + 7.070784237609244, + 50.90956282458672 + ], + [ + 7.070269803040105, + 50.90933921394988 + ], + [ + 7.070174340223595, + 50.90929954733321 + ], + [ + 7.07006747318537, + 50.909239938343255 + ], + [ + 7.069839203229557, + 50.909113123748384 + ], + [ + 7.069596202656018, + 50.9089886912191 + ], + [ + 7.069182434390053, + 50.90877700690264 + ], + [ + 7.0690509360119815, + 50.90870341981617 + ], + [ + 7.0688302241716965, + 50.908589748404445 + ], + [ + 7.06876821126026, + 50.90855777505816 + ], + [ + 7.068622176073312, + 50.90848261318123 + ], + [ + 7.06844491904698, + 50.908391375348685 + ], + [ + 7.068201152583779, + 50.908264249762716 + ], + [ + 7.0681313640718875, + 50.90822794192694 + ], + [ + 7.0681211482158695, + 50.908222641936284 + ], + [ + 7.068034804827812, + 50.9081774071982 + ], + [ + 7.0679559475881755, + 50.908136238249575 + ], + [ + 7.067727043718664, + 50.90801850425899 + ], + [ + 7.067679272408892, + 50.90799368134354 + ], + [ + 7.067356265301556, + 50.90782700627356 + ], + [ + 7.067067500764253, + 50.90767790625567 + ], + [ + 7.066805357402052, + 50.907542585888166 + ], + [ + 7.06672104472078, + 50.90749903863281 + ], + [ + 7.066420060329921, + 50.907343846401595 + ], + [ + 7.0663733042130605, + 50.907319822210354 + ], + [ + 7.066208854933077, + 50.907234937590154 + ], + [ + 7.06618957876959, + 50.907225135264156 + ], + [ + 7.066160659975777, + 50.907210215845204 + ], + [ + 7.066078495656278, + 50.90716726941571 + ], + [ + 7.0658511107225905, + 50.90704709077203 + ], + [ + 7.064821637595527, + 50.90648152789459 + ], + [ + 7.06458212606504, + 50.90634680521945 + ], + [ + 7.064785569871334, + 50.90626548148813 + ], + [ + 7.064857134198094, + 50.90623651222029 + ], + [ + 7.0645606310389315, + 50.90602787691252 + ], + [ + 7.064200705559526, + 50.90577487170241 + ], + [ + 7.06362651318057, + 50.905371449028785 + ], + [ + 7.063257643359833, + 50.90511231971791 + ], + [ + 7.063153598870941, + 50.90516954231444 + ], + [ + 7.062893513696273, + 50.9050610726123 + ], + [ + 7.062526272299521, + 50.90481073592154 + ], + [ + 7.062296462656882, + 50.90465812093892 + ], + [ + 7.062339659280041, + 50.90463210793551 + ], + [ + 7.061520660380914, + 50.9040652282659 + ], + [ + 7.061300861649979, + 50.903914856881265 + ], + [ + 7.061107463134731, + 50.90376883051747 + ], + [ + 7.060926003586115, + 50.903616401705484 + ], + [ + 7.060801557550229, + 50.90348907429811 + ], + [ + 7.060651022765382, + 50.90330858677839 + ], + [ + 7.060564265819395, + 50.903181906052545 + ], + [ + 7.060448207867497, + 50.90297323740502 + ], + [ + 7.060409486887691, + 50.902883335028676 + ], + [ + 7.060356215739719, + 50.90276003554466 + ], + [ + 7.0602982333432935, + 50.90256701950115 + ], + [ + 7.060099954591551, + 50.9018867032437 + ], + [ + 7.0600288881277695, + 50.901142664569534 + ], + [ + 7.059961374244024, + 50.90086784141118 + ], + [ + 7.0597965777283225, + 50.90041564239337 + ], + [ + 7.0586105075394325, + 50.89733656118877 + ], + [ + 7.057733652146708, + 50.8949307580353 + ], + [ + 7.057301117085037, + 50.89356287232963 + ], + [ + 7.057300810444969, + 50.893561903098615 + ], + [ + 7.057284752937422, + 50.893577721056886 + ], + [ + 7.057192363652069, + 50.89366873647947 + ], + [ + 7.056981589831541, + 50.89387637111715 + ], + [ + 7.056820134559334, + 50.894021127677135 + ], + [ + 7.056631546355175, + 50.894153976895325 + ], + [ + 7.056627902941293, + 50.89415654148998 + ], + [ + 7.056409248641656, + 50.89430099971756 + ], + [ + 7.056405647430184, + 50.894303369844515 + ], + [ + 7.056295747920408, + 50.89436583558387 + ], + [ + 7.056291700183769, + 50.894368137113126 + ], + [ + 7.056102368681413, + 50.894475908514686 + ], + [ + 7.0560983168496145, + 50.89447820547224 + ], + [ + 7.055714240598042, + 50.894677930750305 + ], + [ + 7.055506154873542, + 50.89475361663874 + ], + [ + 7.055255890312072, + 50.89488748656237 + ], + [ + 7.0547619255228255, + 50.895118847617056 + ], + [ + 7.054580861676277, + 50.89520138849852 + ], + [ + 7.054347490668023, + 50.8953555922952 + ], + [ + 7.054343752875034, + 50.895358061711136 + ], + [ + 7.053960344483803, + 50.89553816901116 + ], + [ + 7.0538559486027195, + 50.89556050703836 + ], + [ + 7.0537206206619745, + 50.8955915746617 + ], + [ + 7.053318172342629, + 50.8956775524557 + ], + [ + 7.052081145020656, + 50.89627815367366 + ], + [ + 7.0516259799568015, + 50.89649845553887 + ], + [ + 7.051624067990037, + 50.89649969712928 + ], + [ + 7.05162200947669, + 50.896500804065425 + ], + [ + 7.051826520457801, + 50.89665165403081 + ], + [ + 7.051822282376063, + 50.89665380383272 + ], + [ + 7.048874184627723, + 50.89816011799854 + ], + [ + 7.048111220163663, + 50.8985186423663 + ], + [ + 7.046766781044229, + 50.89909614990974 + ], + [ + 7.0466399591931514, + 50.89915859593356 + ], + [ + 7.046529209573092, + 50.89921220290281 + ], + [ + 7.0463776071106174, + 50.89928683136068 + ], + [ + 7.046062059885781, + 50.89944550433493 + ], + [ + 7.045140055126632, + 50.89972102820204 + ], + [ + 7.044564046793507, + 50.899765471279764 + ], + [ + 7.044120460442305, + 50.899832458455364 + ], + [ + 7.0435927560004705, + 50.89978675003518 + ], + [ + 7.043305694161954, + 50.89968270258549 + ], + [ + 7.043182932695059, + 50.899666271441745 + ], + [ + 7.043063362526972, + 50.89968451052503 + ], + [ + 7.04279061242721, + 50.89978825985073 + ], + [ + 7.042463918735256, + 50.8998953667802 + ], + [ + 7.04212928118099, + 50.89999058833473 + ], + [ + 7.0417866242538345, + 50.90007050916025 + ], + [ + 7.041438984529862, + 50.900137438468924 + ], + [ + 7.041184549090025, + 50.90018813074633 + ], + [ + 7.041180133075465, + 50.900189010861965 + ], + [ + 7.041180744765717, + 50.90019060042685 + ], + [ + 7.041226009013141, + 50.90030825068846 + ], + [ + 7.041199922540081, + 50.90034826213916 + ], + [ + 7.04119948163549, + 50.90034894006094 + ], + [ + 7.041196119435926, + 50.90035073633752 + ], + [ + 7.040876655193294, + 50.900521451399634 + ], + [ + 7.040810444705716, + 50.90055571495014 + ], + [ + 7.040808284600113, + 50.90055709699853 + ], + [ + 7.041184413851092, + 50.90083225458278 + ], + [ + 7.041180338904137, + 50.90083452905426 + ], + [ + 7.038738441966381, + 50.90215456182204 + ], + [ + 7.0380323649544465, + 50.90253336729651 + ], + [ + 7.037875441619054, + 50.90261755641725 + ], + [ + 7.037766568962695, + 50.90267614673788 + ], + [ + 7.037670913379358, + 50.902728147340525 + ], + [ + 7.036864624772774, + 50.90317229377132 + ], + [ + 7.036166840464393, + 50.90353183078748 + ], + [ + 7.036166938395698, + 50.90354640227248 + ], + [ + 7.035794492760007, + 50.90374420232801 + ], + [ + 7.035456712520631, + 50.903929363945004 + ], + [ + 7.034585907466242, + 50.90439207266718 + ], + [ + 7.0345413752466595, + 50.90441620028041 + ], + [ + 7.034411429540917, + 50.90448736739774 + ], + [ + 7.034352297390592, + 50.90452113046075 + ], + [ + 7.034349985106571, + 50.90452246935605 + ], + [ + 7.034348296196467, + 50.904523461699284 + ], + [ + 7.0343461966690155, + 50.90452494987616 + ], + [ + 7.03431130557563, + 50.90454990891258 + ], + [ + 7.0343101990145405, + 50.904550684421515 + ], + [ + 7.034307685257172, + 50.90455248399899 + ], + [ + 7.034306396661795, + 50.90455315751098 + ], + [ + 7.034223068812943, + 50.90459673436221 + ], + [ + 7.034187749799907, + 50.90461773521011 + ], + [ + 7.034183788370141, + 50.904620101289 + ], + [ + 7.034171238026381, + 50.90462805260324 + ], + [ + 7.034167387085891, + 50.904630496989306 + ], + [ + 7.034163574996709, + 50.904632964513944 + ], + [ + 7.034141907472322, + 50.904646986816395 + ], + [ + 7.034138095342568, + 50.904649455238896 + ], + [ + 7.0340814959236, + 50.904680790250254 + ], + [ + 7.03381786517731, + 50.90482614877858 + ], + [ + 7.03373794635347, + 50.90487018563634 + ], + [ + 7.033614769568085, + 50.90493815891975 + ], + [ + 7.03350114424641, + 50.90500092285584 + ], + [ + 7.033490393694752, + 50.905006866444246 + ], + [ + 7.033487099488834, + 50.90500868792966 + ], + [ + 7.033486591299337, + 50.90500933860718 + ], + [ + 7.033331705060241, + 50.90520756229067 + ], + [ + 7.033267972611373, + 50.90528921083987 + ], + [ + 7.033148586490783, + 50.90543212119436 + ], + [ + 7.032981714288501, + 50.90567284194404 + ], + [ + 7.032765717651904, + 50.905870301144404 + ], + [ + 7.032394538661517, + 50.90625557796102 + ], + [ + 7.031728669678023, + 50.90670236406712 + ], + [ + 7.0315583719582815, + 50.9067907783206 + ], + [ + 7.030741523060967, + 50.90716345916643 + ], + [ + 7.030647431484658, + 50.907212236422644 + ], + [ + 7.029578779453915, + 50.907730464154284 + ], + [ + 7.029571901947683, + 50.90773342479814 + ], + [ + 7.029406019396906, + 50.90781380803043 + ], + [ + 7.029398285165045, + 50.90781798993736 + ], + [ + 7.029106746023726, + 50.90797562342534 + ], + [ + 7.028971860740674, + 50.90804845851012 + ], + [ + 7.028465772999491, + 50.90832251345433 + ], + [ + 7.028431869970971, + 50.908340778120895 + ], + [ + 7.028151951233691, + 50.90849259953092 + ], + [ + 7.027650763340678, + 50.90876442057028 + ], + [ + 7.027546071720611, + 50.908821241883615 + ], + [ + 7.027411745201964, + 50.90889406753796 + ], + [ + 7.026426378726293, + 50.909429182150014 + ], + [ + 7.024435378088782, + 50.9105101292766 + ], + [ + 7.024359215618319, + 50.910551250031354 + ], + [ + 7.0238041352510825, + 50.91084998615193 + ], + [ + 7.023183649309614, + 50.91118386382965 + ], + [ + 7.0229288661731655, + 50.911320938723215 + ], + [ + 7.022503895595112, + 50.91154957650003 + ], + [ + 7.0220768676063035, + 50.91177926342221 + ], + [ + 7.021966799489612, + 50.91183845654725 + ], + [ + 7.021669881766936, + 50.91199830446774 + ], + [ + 7.021668435246985, + 50.91199950579488 + ], + [ + 7.021585521677649, + 50.912067901634025 + ], + [ + 7.021584665790499, + 50.91206862731026 + ], + [ + 7.021567365073851, + 50.91208289310288 + ], + [ + 7.021509475035333, + 50.9121340106932 + ], + [ + 7.021449768279023, + 50.912186937575946 + ], + [ + 7.021348649402662, + 50.91227655202977 + ], + [ + 7.0212584159536044, + 50.912356876946056 + ], + [ + 7.0212061353592565, + 50.91240375091068 + ], + [ + 7.021192710020448, + 50.91241579344624 + ], + [ + 7.021191473570991, + 50.912416904794284 + ], + [ + 7.021123851397672, + 50.91247826474245 + ], + [ + 7.021061823492821, + 50.91253528199621 + ], + [ + 7.0210362504286215, + 50.9125611046992 + ], + [ + 7.021010767484811, + 50.91258684798107 + ], + [ + 7.0209619453903, + 50.912636457012304 + ], + [ + 7.020911869063497, + 50.912687325463466 + ], + [ + 7.0208281904236545, + 50.912755658332266 + ], + [ + 7.020789096385161, + 50.91278768582054 + ], + [ + 7.020711538945911, + 50.91284549091648 + ], + [ + 7.020674525396584, + 50.91287307476973 + ], + [ + 7.020671015080744, + 50.91287570616489 + ], + [ + 7.020522313583478, + 50.91298660068199 + ], + [ + 7.020518775428462, + 50.91298921721052 + ], + [ + 7.020256278665426, + 50.91316763819556 + ], + [ + 7.020255278446811, + 50.913168311049134 + ], + [ + 7.020252498689464, + 50.91317011930589 + ], + [ + 7.020251416578858, + 50.91317074400299 + ], + [ + 7.020233396549159, + 50.91318115617664 + ], + [ + 7.0202293674314005, + 50.91318347387124 + ], + [ + 7.020097601641489, + 50.913259380804654 + ], + [ + 7.020093575277188, + 50.91326170034007 + ], + [ + 7.020013487276802, + 50.913307761206504 + ], + [ + 7.020009408522964, + 50.91331004117727 + ], + [ + 7.019962447364139, + 50.91333550621485 + ], + [ + 7.01992725340997, + 50.913354590148 + ], + [ + 7.019868542761667, + 50.91338631691782 + ], + [ + 7.019867820545989, + 50.913386707584436 + ], + [ + 7.019808417492614, + 50.913418824597265 + ], + [ + 7.019650134321514, + 50.913504465643285 + ], + [ + 7.019386077470484, + 50.91364761088958 + ], + [ + 7.019311296574816, + 50.91368799635485 + ], + [ + 7.019152021391732, + 50.91377119159015 + ], + [ + 7.0189553268428515, + 50.91387368160847 + ], + [ + 7.018580467106999, + 50.91406833833217 + ], + [ + 7.018535206914284, + 50.91409183686727 + ], + [ + 7.018466588616603, + 50.91412734119043 + ], + [ + 7.018110771403658, + 50.91431443310216 + ], + [ + 7.018025693200366, + 50.91435868378546 + ], + [ + 7.017873715649298, + 50.91443776876276 + ], + [ + 7.017815675403692, + 50.91446272641977 + ], + [ + 7.017616761624263, + 50.91454850303576 + ], + [ + 7.017540689712738, + 50.91458126754565 + ], + [ + 7.017474339196588, + 50.91460997457279 + ], + [ + 7.017285568873178, + 50.914684884014015 + ], + [ + 7.01715825304387, + 50.91473537951355 + ], + [ + 7.017155987105769, + 50.914736273669256 + ], + [ + 7.0171544446871605, + 50.91473785194809 + ], + [ + 7.0170459748844785, + 50.914847983849064 + ], + [ + 7.0173164269909085, + 50.91489216241026 + ], + [ + 7.0173959665984125, + 50.914905154998245 + ], + [ + 7.017442509790287, + 50.91491275743256 + ], + [ + 7.017527285621772, + 50.914926605137744 + ], + [ + 7.0194585317971026, + 50.91524204818574 + ], + [ + 7.022236931301519, + 50.91569579894204 + ], + [ + 7.023599392845861, + 50.915878023951926 + ], + [ + 7.023882673309891, + 50.91589801165681 + ], + [ + 7.024113549024008, + 50.9159210660926 + ], + [ + 7.024367985187845, + 50.91592887248367 + ], + [ + 7.0243837360321555, + 50.915929211035476 + ], + [ + 7.024566711392188, + 50.915932189240834 + ], + [ + 7.024764999565772, + 50.9159153451137 + ], + [ + 7.024833371661033, + 50.915908348437206 + ], + [ + 7.024979101542665, + 50.915893417872084 + ], + [ + 7.025121579439829, + 50.91586708562291 + ], + [ + 7.025287576733987, + 50.9158303892259 + ], + [ + 7.025326342113979, + 50.9158165642762 + ], + [ + 7.025445315886919, + 50.91577380717485 + ], + [ + 7.0254729725585765, + 50.91576280624708 + ], + [ + 7.025626464163374, + 50.915701827916685 + ], + [ + 7.026053514461867, + 50.91552161096484 + ], + [ + 7.026626383042534, + 50.91528617307448 + ], + [ + 7.02715756809867, + 50.915070408519526 + ], + [ + 7.027713311792007, + 50.91484466341121 + ], + [ + 7.028437685045975, + 50.91454189908031 + ], + [ + 7.02883841141478, + 50.914342487155224 + ], + [ + 7.028842415384497, + 50.91434015075344 + ], + [ + 7.029144460067074, + 50.91416395232572 + ], + [ + 7.02919970280976, + 50.91419242568471 + ], + [ + 7.0292694564085725, + 50.914228384869546 + ], + [ + 7.0292855659084195, + 50.91423520609524 + ], + [ + 7.029351655079694, + 50.914262909180735 + ], + [ + 7.029462313342492, + 50.91430934673003 + ], + [ + 7.02960268974971, + 50.9143682861853 + ], + [ + 7.029609623009084, + 50.914371371156776 + ], + [ + 7.029640675323927, + 50.9143877485915 + ], + [ + 7.029691919108823, + 50.91441478266356 + ], + [ + 7.029564650843778, + 50.914558118398354 + ], + [ + 7.029472264418255, + 50.91473233913996 + ], + [ + 7.029438542308865, + 50.91479616034521 + ], + [ + 7.029349143066633, + 50.914965351768494 + ], + [ + 7.02929304737968, + 50.915168377690314 + ], + [ + 7.029314357846162, + 50.915354360644656 + ], + [ + 7.0293591118752135, + 50.9155346524531 + ], + [ + 7.029396495357189, + 50.91560488959028 + ], + [ + 7.029596582304656, + 50.91597060999819 + ], + [ + 7.029650142143309, + 50.91604800391505 + ], + [ + 7.029889923500296, + 50.916394478159745 + ], + [ + 7.030015978653553, + 50.91656632077249 + ], + [ + 7.030144316000362, + 50.91676088750218 + ], + [ + 7.030165935631488, + 50.916793237615394 + ], + [ + 7.030222711568757, + 50.916846403394125 + ], + [ + 7.030228218590026, + 50.91685102916256 + ], + [ + 7.030234005058715, + 50.9168554725774 + ], + [ + 7.03033089586437, + 50.916928509653815 + ], + [ + 7.030416073059221, + 50.91699266106078 + ], + [ + 7.030573695792788, + 50.91707891550039 + ], + [ + 7.030727178873583, + 50.91715479128515 + ], + [ + 7.0319825810296175, + 50.91736816079618 + ], + [ + 7.032326493779261, + 50.917455896145874 + ], + [ + 7.032471108848565, + 50.91748114020823 + ], + [ + 7.032677681876365, + 50.91751720006473 + ], + [ + 7.0326846321381, + 50.917518413543355 + ], + [ + 7.0330087445960245, + 50.917574989889246 + ], + [ + 7.033160240612264, + 50.91760155690531 + ], + [ + 7.033267860021412, + 50.917620428686234 + ], + [ + 7.0346219219820645, + 50.91787963606783 + ], + [ + 7.03464302656398, + 50.91788367614959 + ], + [ + 7.035269961214265, + 50.91799024756946 + ], + [ + 7.036642367600199, + 50.918223526186395 + ], + [ + 7.039967570025859, + 50.918792621455324 + ], + [ + 7.040102184217461, + 50.91881551878793 + ], + [ + 7.042416198020759, + 50.9192260878814 + ], + [ + 7.043040433089401, + 50.91933683145642 + ], + [ + 7.044264318947233, + 50.91954612386933 + ], + [ + 7.044343979991369, + 50.919559703497676 + ], + [ + 7.0457057781206, + 50.91979219712753 + ], + [ + 7.046930386237124, + 50.92000121359527 + ], + [ + 7.047395089642392, + 50.920080525853784 + ], + [ + 7.04757739787191, + 50.92011161055605 + ], + [ + 7.047825178969544, + 50.920155025817486 + ], + [ + 7.048379243858161, + 50.9202521036203 + ], + [ + 7.048524162197918, + 50.9202774100895 + ], + [ + 7.048614970354076, + 50.920293314547074 + ], + [ + 7.048651038441533, + 50.92029963391105 + ], + [ + 7.04879358761922, + 50.92032460994102 + ], + [ + 7.049009376683873, + 50.92035758313029 + ], + [ + 7.051327581175353, + 50.92071178542495 + ], + [ + 7.052298950124202, + 50.9208601871062 + ], + [ + 7.0554763880716, + 50.92129947409621 + ], + [ + 7.056123685777538, + 50.921326966711064 + ], + [ + 7.056625704152589, + 50.921382650648994 + ], + [ + 7.057047785817776, + 50.92141901001384 + ], + [ + 7.057471370334677, + 50.921490322507296 + ], + [ + 7.057657636417587, + 50.92153028454219 + ], + [ + 7.05781472657297, + 50.92156395810784 + ], + [ + 7.057857696263006, + 50.921573356460165 + ], + [ + 7.058099373217274, + 50.921626302042654 + ], + [ + 7.0583435362708355, + 50.921693845641755 + ], + [ + 7.058528622788704, + 50.92175271025106 + ], + [ + 7.0587767385683495, + 50.92183149781951 + ], + [ + 7.059136107987627, + 50.922011979864926 + ], + [ + 7.059203891949006, + 50.92201178034996 + ], + [ + 7.060339909450901, + 50.92200843172382 + ], + [ + 7.060894142136381, + 50.92200679467091 + ], + [ + 7.061073886049574, + 50.921993204258875 + ], + [ + 7.0610766293921055, + 50.92199080894482 + ], + [ + 7.061153844988941, + 50.92192341133846 + ], + [ + 7.061376216800501, + 50.92172931137462 + ], + [ + 7.061395057036657, + 50.92171292302346 + ], + [ + 7.061443994084253, + 50.92167035387728 + ], + [ + 7.061447576712758, + 50.92166775754437 + ], + [ + 7.061515209699232, + 50.92161873651899 + ], + [ + 7.0615187839751385, + 50.92161613554834 + ], + [ + 7.061538853284102, + 50.92160153214436 + ], + [ + 7.0615424651643135, + 50.92159895068419 + ], + [ + 7.061547390934571, + 50.92159543141842 + ], + [ + 7.061550968013326, + 50.92159283139273 + ], + [ + 7.061573824175838, + 50.92157622190689 + ], + [ + 7.061689954694755, + 50.92149183449091 + ], + [ + 7.062218581690198, + 50.92085766898848 + ], + [ + 7.062570129045505, + 50.92043592547807 + ], + [ + 7.0628980521267595, + 50.92001034698558 + ], + [ + 7.062903831253115, + 50.92000169114738 + ], + [ + 7.062907110321818, + 50.919996703710545 + ], + [ + 7.062971488431198, + 50.91990036607345 + ], + [ + 7.063219547661515, + 50.91950275193034 + ], + [ + 7.063301181973105, + 50.919359435976034 + ], + [ + 7.06327191692213, + 50.9193437897672 + ], + [ + 7.063236539971056, + 50.91932487636506 + ], + [ + 7.063134847305892, + 50.91925586501887 + ], + [ + 7.063071163484927, + 50.919200981116695 + ], + [ + 7.0628291188897485, + 50.918839204923444 + ], + [ + 7.062433528598667, + 50.918167074473494 + ], + [ + 7.060696640605824, + 50.91806394836233 + ], + [ + 7.060791014970797, + 50.91739462013896 + ], + [ + 7.0607921549200565, + 50.917386536670854 + ], + [ + 7.060830439546507, + 50.91688152278712 + ], + [ + 7.060835446132459, + 50.91686845180564 + ], + [ + 7.060937640650102, + 50.91660164860343 + ], + [ + 7.060938979706169, + 50.91659815162105 + ], + [ + 7.061042234392778, + 50.91632857519558 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Gremberghoven", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "704", + "Population_rel": 0.002819749273923753, + "Population_abs": 3068 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.052736669470326, + 50.877819397982115 + ], + [ + 7.052714192618789, + 50.87778040645424 + ], + [ + 7.052785570414, + 50.87782203705 + ], + [ + 7.052853713784141, + 50.87786194079287 + ], + [ + 7.052916103162531, + 50.87790030138958 + ], + [ + 7.052937601186619, + 50.87789720291279 + ], + [ + 7.052979322335476, + 50.8778902157098 + ], + [ + 7.053068976531227, + 50.877868267623285 + ], + [ + 7.053159394630815, + 50.87784524756788 + ], + [ + 7.053233550347184, + 50.877775358647625 + ], + [ + 7.053252889011827, + 50.87775711549811 + ], + [ + 7.053247910889122, + 50.877750597423045 + ], + [ + 7.053269081841666, + 50.87774429345509 + ], + [ + 7.053870030570012, + 50.877589640416325 + ], + [ + 7.054077798702555, + 50.87754722022273 + ], + [ + 7.0543555161258835, + 50.877506684609074 + ], + [ + 7.056062620087792, + 50.87725868298283 + ], + [ + 7.056137515195873, + 50.87725315027653 + ], + [ + 7.056175156430986, + 50.87725262972106 + ], + [ + 7.056212944925629, + 50.877253455271365 + ], + [ + 7.056250392420043, + 50.87725581395815 + ], + [ + 7.056492738352874, + 50.877284902690135 + ], + [ + 7.056679205767611, + 50.877218039665294 + ], + [ + 7.056672677643169, + 50.87708028984299 + ], + [ + 7.056677890036735, + 50.877015518290506 + ], + [ + 7.056676741447302, + 50.87699611135522 + ], + [ + 7.05667584106322, + 50.87698146714165 + ], + [ + 7.056674393267819, + 50.876955140835406 + ], + [ + 7.056672530778076, + 50.87692306511919 + ], + [ + 7.0566712684797315, + 50.87672288119881 + ], + [ + 7.056652317962902, + 50.876632618288895 + ], + [ + 7.056615903532744, + 50.876530378952474 + ], + [ + 7.0566118130292645, + 50.87651908933551 + ], + [ + 7.056601321073674, + 50.876488710013966 + ], + [ + 7.056572755547737, + 50.87644447071257 + ], + [ + 7.0565750460077, + 50.87643267399574 + ], + [ + 7.056579692999721, + 50.87642454100463 + ], + [ + 7.056596820580705, + 50.876409103403546 + ], + [ + 7.056621604761569, + 50.87639926061325 + ], + [ + 7.05667636651098, + 50.876395618204604 + ], + [ + 7.056803445594953, + 50.87638556689401 + ], + [ + 7.057014049617736, + 50.87636837660437 + ], + [ + 7.057018986551913, + 50.87636680396195 + ], + [ + 7.057027591252271, + 50.87636402877117 + ], + [ + 7.057102276712075, + 50.87636182414343 + ], + [ + 7.057456055122289, + 50.87655593608745 + ], + [ + 7.0574984968939205, + 50.876572900610164 + ], + [ + 7.057540746730678, + 50.876594002640104 + ], + [ + 7.057837827034359, + 50.87675006228028 + ], + [ + 7.057904000335332, + 50.87678595953721 + ], + [ + 7.058003834962241, + 50.87684015982485 + ], + [ + 7.058107553365455, + 50.876896481526465 + ], + [ + 7.058165668879664, + 50.87692795722014 + ], + [ + 7.058352099899447, + 50.877028925792075 + ], + [ + 7.058410356039617, + 50.87706030926703 + ], + [ + 7.058631515442632, + 50.877157636267725 + ], + [ + 7.058721353554467, + 50.8771907106065 + ], + [ + 7.058928066235973, + 50.87723360222693 + ], + [ + 7.059050826664782, + 50.87726484961127 + ], + [ + 7.059146358270693, + 50.87726703849437 + ], + [ + 7.059222302878297, + 50.87724513377606 + ], + [ + 7.0593154367402695, + 50.877141627810445 + ], + [ + 7.059600872882821, + 50.876784131200786 + ], + [ + 7.059929710435743, + 50.87656117063361 + ], + [ + 7.059996838689841, + 50.87651390489065 + ], + [ + 7.060035372296972, + 50.87648425012464 + ], + [ + 7.060071201068304, + 50.876453628520025 + ], + [ + 7.060318614747942, + 50.87624291439734 + ], + [ + 7.060380506116561, + 50.87619039178319 + ], + [ + 7.060434028671586, + 50.87614468848589 + ], + [ + 7.060557108357666, + 50.87603992101693 + ], + [ + 7.060969655068538, + 50.87569960272256 + ], + [ + 7.061169948695779, + 50.875535250763896 + ], + [ + 7.061439841793255, + 50.875313811324 + ], + [ + 7.06167824549069, + 50.87511980612129 + ], + [ + 7.061781710330702, + 50.875033643360794 + ], + [ + 7.061796344901696, + 50.87502119448477 + ], + [ + 7.061857967574002, + 50.87496948326336 + ], + [ + 7.061921802310714, + 50.874915055767524 + ], + [ + 7.062108327586181, + 50.874764041484056 + ], + [ + 7.062124797409007, + 50.874751036654935 + ], + [ + 7.062134700911152, + 50.87474294577598 + ], + [ + 7.062314814406407, + 50.8745974736487 + ], + [ + 7.062676712135835, + 50.87430516587606 + ], + [ + 7.063000493198719, + 50.87404241893151 + ], + [ + 7.063140298729651, + 50.87393021428689 + ], + [ + 7.0634132219429535, + 50.87371161947826 + ], + [ + 7.063443359640755, + 50.87368743274905 + ], + [ + 7.0635579056053714, + 50.873595324902915 + ], + [ + 7.063645162587983, + 50.873527737007834 + ], + [ + 7.063717303398034, + 50.87347017535411 + ], + [ + 7.06384220862332, + 50.87337132025141 + ], + [ + 7.063970175100314, + 50.87326965130309 + ], + [ + 7.064102827392851, + 50.87318043354208 + ], + [ + 7.0641673348415575, + 50.87313705490528 + ], + [ + 7.064460215859411, + 50.87298416875398 + ], + [ + 7.064590083129023, + 50.87291619152494 + ], + [ + 7.064837202984467, + 50.8728251193308 + ], + [ + 7.064897077107891, + 50.87280290756009 + ], + [ + 7.06505473210123, + 50.872744834972075 + ], + [ + 7.065515854630952, + 50.872574767179024 + ], + [ + 7.065822648980774, + 50.872452943330295 + ], + [ + 7.066062625596989, + 50.87233550462944 + ], + [ + 7.0662569358752325, + 50.87220293125657 + ], + [ + 7.066428531569679, + 50.872052496438 + ], + [ + 7.066982236045797, + 50.87150150107868 + ], + [ + 7.067030221611648, + 50.87145027084265 + ], + [ + 7.067088186546708, + 50.87139436547088 + ], + [ + 7.067134578395879, + 50.87132939694009 + ], + [ + 7.067898154481824, + 50.87040808670714 + ], + [ + 7.068048393639318, + 50.87027474554287 + ], + [ + 7.068238713008539, + 50.87016701637904 + ], + [ + 7.068895164142442, + 50.86991127401376 + ], + [ + 7.0689851500827965, + 50.86987664890626 + ], + [ + 7.069017412724302, + 50.8698648461186 + ], + [ + 7.069499547310519, + 50.86962157497644 + ], + [ + 7.069602671292995, + 50.869565987413445 + ], + [ + 7.069631984371465, + 50.86955084754919 + ], + [ + 7.06985101247997, + 50.86943559529692 + ], + [ + 7.0698866850760975, + 50.869417649295514 + ], + [ + 7.070287576255092, + 50.8692064930933 + ], + [ + 7.070309302815236, + 50.86921851998548 + ], + [ + 7.070368988180106, + 50.86924413100282 + ], + [ + 7.071440592931226, + 50.87005071796939 + ], + [ + 7.07149204529678, + 50.87008898950609 + ], + [ + 7.071696977583577, + 50.87024082698248 + ], + [ + 7.072059819048049, + 50.870513559792265 + ], + [ + 7.072331527014278, + 50.87005286782968 + ], + [ + 7.072687759605862, + 50.86944564967302 + ], + [ + 7.072692592444543, + 50.86943743907629 + ], + [ + 7.072767714897355, + 50.86930981857774 + ], + [ + 7.072779830501885, + 50.869289235970186 + ], + [ + 7.072823228869998, + 50.869214965712985 + ], + [ + 7.073609698701439, + 50.86787646080015 + ], + [ + 7.073615130795671, + 50.86786722038298 + ], + [ + 7.07424603091598, + 50.86679345710432 + ], + [ + 7.074288818777318, + 50.86672060802578 + ], + [ + 7.074567265936852, + 50.866258409480785 + ], + [ + 7.074558718949814, + 50.86625713073113 + ], + [ + 7.074085681888618, + 50.8661857361993 + ], + [ + 7.074064786674289, + 50.86618258255576 + ], + [ + 7.074383529808175, + 50.86576774772797 + ], + [ + 7.074421769147781, + 50.86565781340129 + ], + [ + 7.074383830420789, + 50.86556467140663 + ], + [ + 7.074303494004555, + 50.86541303950203 + ], + [ + 7.074247075699335, + 50.86530694367026 + ], + [ + 7.07407969518778, + 50.865088691905584 + ], + [ + 7.073818041105481, + 50.86481072019741 + ], + [ + 7.073693114840899, + 50.86467801562704 + ], + [ + 7.07359102098563, + 50.864568384493964 + ], + [ + 7.073371836280205, + 50.86433325847985 + ], + [ + 7.073301079309182, + 50.864270624172 + ], + [ + 7.072806915629271, + 50.86387549738824 + ], + [ + 7.072626776011307, + 50.863732063867005 + ], + [ + 7.071959908028053, + 50.86320107191587 + ], + [ + 7.07195393698901, + 50.86319465424242 + ], + [ + 7.071947965951579, + 50.86318823656868 + ], + [ + 7.07179213296726, + 50.86302057670433 + ], + [ + 7.07118540915682, + 50.86236748929853 + ], + [ + 7.071178275354453, + 50.86235991375314 + ], + [ + 7.070694366900296, + 50.86182795358097 + ], + [ + 7.0706866488289135, + 50.86181966413233 + ], + [ + 7.07067936117422, + 50.86181155088289 + ], + [ + 7.0706535719299755, + 50.86177708849996 + ], + [ + 7.069881243913286, + 50.86074471956779 + ], + [ + 7.069451243424195, + 50.86016506417019 + ], + [ + 7.069222907362415, + 50.859857109939306 + ], + [ + 7.069159648515787, + 50.85980510089138 + ], + [ + 7.0690991419452, + 50.85975540468169 + ], + [ + 7.069044090264869, + 50.85970826480513 + ], + [ + 7.068561676824715, + 50.859295302866606 + ], + [ + 7.067358330901253, + 50.85828555862718 + ], + [ + 7.0669113673100785, + 50.857912363513655 + ], + [ + 7.06495609049325, + 50.856280120363856 + ], + [ + 7.064730674432487, + 50.85609196083434 + ], + [ + 7.064589706199229, + 50.855994812006024 + ], + [ + 7.064560985961082, + 50.855974663516236 + ], + [ + 7.0634960737972925, + 50.855224231407284 + ], + [ + 7.063201841902996, + 50.85501961560467 + ], + [ + 7.062216575596886, + 50.8543348790911 + ], + [ + 7.0617809545540755, + 50.85403229841481 + ], + [ + 7.061212854638357, + 50.85363033424928 + ], + [ + 7.060384251212054, + 50.8530442034977 + ], + [ + 7.060325217585926, + 50.85300230937992 + ], + [ + 7.060192147253057, + 50.8529081410167 + ], + [ + 7.0601246657295516, + 50.85286947000233 + ], + [ + 7.060043084605063, + 50.85282274711375 + ], + [ + 7.057329491853261, + 50.85092551365453 + ], + [ + 7.057117952337845, + 50.850896327241365 + ], + [ + 7.0565433148285415, + 50.85081730257769 + ], + [ + 7.051805597181966, + 50.85018690524926 + ], + [ + 7.051165646388321, + 50.85010063401857 + ], + [ + 7.051160386082087, + 50.85009993816724 + ], + [ + 7.051123561393146, + 50.85009482162856 + ], + [ + 7.0507404840066155, + 50.85004938417751 + ], + [ + 7.05072699581853, + 50.850047406823236 + ], + [ + 7.050337094069096, + 50.849990011901795 + ], + [ + 7.050205198378495, + 50.849972226787486 + ], + [ + 7.050167685934141, + 50.84996711823761 + ], + [ + 7.050126701387071, + 50.849962245741246 + ], + [ + 7.050119193496833, + 50.84996134679199 + ], + [ + 7.050058475295926, + 50.849954158621465 + ], + [ + 7.050032822767571, + 50.84995109827726 + ], + [ + 7.050027162623154, + 50.84995038399965 + ], + [ + 7.043861374584697, + 50.849163449923516 + ], + [ + 7.04351823854674, + 50.84914662995725 + ], + [ + 7.0413553189088764, + 50.84904053883461 + ], + [ + 7.041296019979466, + 50.84903768243881 + ], + [ + 7.0412281033702815, + 50.84903441510592 + ], + [ + 7.041212363791506, + 50.849033699348745 + ], + [ + 7.0411642981925375, + 50.84903138585007 + ], + [ + 7.04115567478974, + 50.849030975741094 + ], + [ + 7.0374585336308755, + 50.84885051196335 + ], + [ + 7.034635438953658, + 50.84904517087902 + ], + [ + 7.0345226750477075, + 50.84905291069909 + ], + [ + 7.034518656206664, + 50.84905330976987 + ], + [ + 7.034502232430106, + 50.849054407321304 + ], + [ + 7.034492554095613, + 50.84905499704458 + ], + [ + 7.034495756157189, + 50.84907125602638 + ], + [ + 7.0348135022769105, + 50.85077042681906 + ], + [ + 7.034843831553744, + 50.85098108054423 + ], + [ + 7.034831490004885, + 50.85119356702859 + ], + [ + 7.034564373725794, + 50.85232943242807 + ], + [ + 7.0343120645410515, + 50.8534029488474 + ], + [ + 7.034310770188572, + 50.85354337687358 + ], + [ + 7.034309209545954, + 50.85362043011709 + ], + [ + 7.0342677225261445, + 50.85361962947382 + ], + [ + 7.034182921044081, + 50.85361229078655 + ], + [ + 7.034129397399946, + 50.85352961280651 + ], + [ + 7.032868263020003, + 50.85296815818803 + ], + [ + 7.03273456991748, + 50.85290758448711 + ], + [ + 7.030839053896393, + 50.852047428955466 + ], + [ + 7.0308115874567445, + 50.85203832230844 + ], + [ + 7.030779397483678, + 50.8520275503177 + ], + [ + 7.030727105927584, + 50.85203250733927 + ], + [ + 7.030683074063518, + 50.852038559803354 + ], + [ + 7.029448800688024, + 50.853137640547665 + ], + [ + 7.029088059562783, + 50.85345878280467 + ], + [ + 7.028965812075885, + 50.85356315110425 + ], + [ + 7.028371486171553, + 50.85409239149915 + ], + [ + 7.027560520244921, + 50.85481959852892 + ], + [ + 7.027526640602558, + 50.85486763094466 + ], + [ + 7.0274650423801255, + 50.85491455974403 + ], + [ + 7.027375930987478, + 50.85498258596107 + ], + [ + 7.0273450618670905, + 50.85500614042877 + ], + [ + 7.027319079174021, + 50.855025786960795 + ], + [ + 7.027291983458943, + 50.855046521804326 + ], + [ + 7.027159871568378, + 50.855154750659764 + ], + [ + 7.0265273691572565, + 50.85562246973385 + ], + [ + 7.025593545754052, + 50.856312897706026 + ], + [ + 7.025534448230455, + 50.85631863123098 + ], + [ + 7.025521413095826, + 50.85632000432909 + ], + [ + 7.025417272813253, + 50.85633044731956 + ], + [ + 7.025141837609944, + 50.85616692508097 + ], + [ + 7.024860359667401, + 50.856374538913045 + ], + [ + 7.024514452204942, + 50.85662982374634 + ], + [ + 7.024212986516297, + 50.8568523546788 + ], + [ + 7.024234059395413, + 50.85686124846427 + ], + [ + 7.024526919735215, + 50.85698470908161 + ], + [ + 7.024550838362601, + 50.85701973751955 + ], + [ + 7.024561401336565, + 50.85703510690531 + ], + [ + 7.024585021101192, + 50.85706950880355 + ], + [ + 7.0245214001696255, + 50.8571021601306 + ], + [ + 7.024273808441621, + 50.85729455231411 + ], + [ + 7.024187928867597, + 50.85736146975142 + ], + [ + 7.023335933934716, + 50.85802356356322 + ], + [ + 7.0233052193915935, + 50.85804783459984 + ], + [ + 7.0232895775671755, + 50.85805992796975 + ], + [ + 7.023196992152894, + 50.85813202662107 + ], + [ + 7.022716828137844, + 50.858503279148096 + ], + [ + 7.022152850156474, + 50.85893909013878 + ], + [ + 7.022008513975883, + 50.859041486664566 + ], + [ + 7.020837975799423, + 50.85997450962669 + ], + [ + 7.019657974570884, + 50.86093160494681 + ], + [ + 7.01964946118577, + 50.86093851068627 + ], + [ + 7.019093153632272, + 50.86112954587518 + ], + [ + 7.019087082120481, + 50.86113224615912 + ], + [ + 7.018997596532556, + 50.86117667614174 + ], + [ + 7.0189546672138405, + 50.8611425316513 + ], + [ + 7.017229402570007, + 50.86191477681513 + ], + [ + 7.021457697212084, + 50.86535495071632 + ], + [ + 7.021813466998944, + 50.865644261604835 + ], + [ + 7.021953300547918, + 50.86575720292842 + ], + [ + 7.022088474776166, + 50.86586497100869 + ], + [ + 7.022225475775637, + 50.865971733807385 + ], + [ + 7.022324594785955, + 50.866048084889655 + ], + [ + 7.023292840142583, + 50.866762436974426 + ], + [ + 7.024352550477536, + 50.8674356153355 + ], + [ + 7.024498396897074, + 50.86752422909271 + ], + [ + 7.025501561290739, + 50.86810494284585 + ], + [ + 7.026647426300296, + 50.86868789672068 + ], + [ + 7.028909659489205, + 50.869697346582484 + ], + [ + 7.031194581917575, + 50.87046239692956 + ], + [ + 7.032600625817769, + 50.8709069823291 + ], + [ + 7.03424935558805, + 50.87140962721899 + ], + [ + 7.0352448524305045, + 50.87170562921438 + ], + [ + 7.036184679637609, + 50.87197649605353 + ], + [ + 7.036423304140784, + 50.87204449363729 + ], + [ + 7.036634039200776, + 50.872104198667856 + ], + [ + 7.037671285893843, + 50.87239801053638 + ], + [ + 7.03784558859664, + 50.872448329023996 + ], + [ + 7.038328205820695, + 50.8725889435433 + ], + [ + 7.040104273775856, + 50.87311985789452 + ], + [ + 7.041799364182874, + 50.873661897204784 + ], + [ + 7.041830118310431, + 50.87367111927929 + ], + [ + 7.041865445968255, + 50.87368171319797 + ], + [ + 7.041931245831147, + 50.87370171149266 + ], + [ + 7.041965579533861, + 50.873712281506194 + ], + [ + 7.042000055408697, + 50.8737228511971 + ], + [ + 7.042038397990073, + 50.87373473409514 + ], + [ + 7.042076881821588, + 50.87374670659004 + ], + [ + 7.042106070037706, + 50.8737558852274 + ], + [ + 7.0421530006784945, + 50.87377065798489 + ], + [ + 7.042171954886271, + 50.87377670953874 + ], + [ + 7.0421913495786725, + 50.873782900688546 + ], + [ + 7.042268337154809, + 50.87380756180097 + ], + [ + 7.042397285764398, + 50.873849648534694 + ], + [ + 7.0424127721237575, + 50.873854774870665 + ], + [ + 7.042428489808136, + 50.87385997793488 + ], + [ + 7.043421251816856, + 50.8742069939714 + ], + [ + 7.04441966908338, + 50.87463467580217 + ], + [ + 7.044533212821597, + 50.87468651741445 + ], + [ + 7.046178324696538, + 50.87551058118347 + ], + [ + 7.047587661798848, + 50.87649405433712 + ], + [ + 7.047610678859123, + 50.87651157165437 + ], + [ + 7.04763377446465, + 50.87652914874046 + ], + [ + 7.047703751049793, + 50.87658299684301 + ], + [ + 7.0477861842867835, + 50.87664742939722 + ], + [ + 7.047854025707592, + 50.87670111667148 + ], + [ + 7.047866326450254, + 50.87671100692987 + ], + [ + 7.047884356752166, + 50.87672550340558 + ], + [ + 7.047889186841859, + 50.87672938676817 + ], + [ + 7.047949820171275, + 50.876778374678764 + ], + [ + 7.047960788084042, + 50.87678730008499 + ], + [ + 7.047973049677627, + 50.876797277815584 + ], + [ + 7.047993961332542, + 50.87681429485703 + ], + [ + 7.048755767308153, + 50.87747626443193 + ], + [ + 7.049457059753616, + 50.87823280286504 + ], + [ + 7.049750737636803, + 50.87858587386617 + ], + [ + 7.049952727048489, + 50.87885481870909 + ], + [ + 7.05246718629767, + 50.87820236637713 + ], + [ + 7.052572196634462, + 50.878175247237756 + ], + [ + 7.05240740380223, + 50.877921928475324 + ], + [ + 7.052375229600589, + 50.87787120277639 + ], + [ + 7.052483757087496, + 50.87785664192868 + ], + [ + 7.052701896889916, + 50.877827442701374 + ], + [ + 7.052736669470326, + 50.877819397982115 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Zuendorf", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "714", + "Population_rel": 0.0107496047939414, + "Population_abs": 11696 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.9068648630641585, + 51.004581971774925 + ], + [ + 6.906680996043365, + 51.00451229539113 + ], + [ + 6.906612572159538, + 51.00446653198123 + ], + [ + 6.906525399791498, + 51.00435807977843 + ], + [ + 6.9065073364520115, + 51.00434500646985 + ], + [ + 6.906504746341248, + 51.00434367843422 + ], + [ + 6.905149481610261, + 51.003396394692764 + ], + [ + 6.9048754903773535, + 51.003204981112326 + ], + [ + 6.903668977654513, + 51.00243109786305 + ], + [ + 6.903088814163485, + 51.00209903128592 + ], + [ + 6.9018731901090336, + 51.00140322628981 + ], + [ + 6.901268042434297, + 51.00105237684024 + ], + [ + 6.9011751868249736, + 51.001031878837054 + ], + [ + 6.900850136688881, + 51.00085793016878 + ], + [ + 6.899980336524319, + 51.000380428925844 + ], + [ + 6.89967160206973, + 51.00021011685811 + ], + [ + 6.89949662490929, + 51.00025965890102 + ], + [ + 6.899495132435481, + 51.000258999797055 + ], + [ + 6.899163242102112, + 51.00009903181262 + ], + [ + 6.898774843981576, + 50.99991239151432 + ], + [ + 6.898538149566683, + 51.00018197449848 + ], + [ + 6.897268981427777, + 51.001359773096596 + ], + [ + 6.897149472532145, + 51.00147067460185 + ], + [ + 6.896389280433384, + 51.002176098855706 + ], + [ + 6.895227417026055, + 51.003475499855774 + ], + [ + 6.894791249029243, + 51.003590488664415 + ], + [ + 6.894662823473475, + 51.00380946045684 + ], + [ + 6.894578809663672, + 51.0039524027062 + ], + [ + 6.894566393693913, + 51.003973532746876 + ], + [ + 6.894518552030157, + 51.00402684594546 + ], + [ + 6.894517578146303, + 51.004028111797005 + ], + [ + 6.894447974211215, + 51.00410550194227 + ], + [ + 6.894251149222033, + 51.00432400909655 + ], + [ + 6.894180980751861, + 51.00429802819799 + ], + [ + 6.893864614422579, + 51.00464968035905 + ], + [ + 6.893232872619753, + 51.00539783027691 + ], + [ + 6.891770754911909, + 51.007030203986346 + ], + [ + 6.891959689100211, + 51.00710471888626 + ], + [ + 6.892062253002139, + 51.0071778266509 + ], + [ + 6.8923730662729525, + 51.00724781411238 + ], + [ + 6.8920288309094815, + 51.008027379362225 + ], + [ + 6.891425430000963, + 51.00866734162112 + ], + [ + 6.892289754163738, + 51.00877148705077 + ], + [ + 6.892326552489796, + 51.00878828500576 + ], + [ + 6.89245362280148, + 51.00884619269235 + ], + [ + 6.892411332004623, + 51.0091445067836 + ], + [ + 6.892401486634355, + 51.00921802389919 + ], + [ + 6.892386991864471, + 51.00932393713708 + ], + [ + 6.892365648374357, + 51.009503614024325 + ], + [ + 6.892353306360022, + 51.00962524220545 + ], + [ + 6.892324699838036, + 51.009946104076505 + ], + [ + 6.892323335492059, + 51.010127425788056 + ], + [ + 6.892323177596698, + 51.01013398927384 + ], + [ + 6.892311538818189, + 51.01023286965455 + ], + [ + 6.892306260798608, + 51.01040325448729 + ], + [ + 6.8923156706492215, + 51.01112348435051 + ], + [ + 6.892325541809731, + 51.01130364173372 + ], + [ + 6.8923858612617686, + 51.01192936653706 + ], + [ + 6.892452528666666, + 51.01238101134792 + ], + [ + 6.892484467426458, + 51.012560101792324 + ], + [ + 6.892583355066489, + 51.013079189141 + ], + [ + 6.892666286290715, + 51.01336090440858 + ], + [ + 6.892734307728829, + 51.01359338416947 + ], + [ + 6.892826446555934, + 51.01402793507992 + ], + [ + 6.892847759808747, + 51.014128540451495 + ], + [ + 6.892878101233061, + 51.014194737647344 + ], + [ + 6.892958148109975, + 51.01422972296634 + ], + [ + 6.8931142493477715, + 51.01463331078945 + ], + [ + 6.89318697841143, + 51.014821347126855 + ], + [ + 6.893135472089889, + 51.014892306820585 + ], + [ + 6.893168708128294, + 51.01490140092243 + ], + [ + 6.893151488394566, + 51.01492481490013 + ], + [ + 6.893180727253084, + 51.0149335796759 + ], + [ + 6.893271419204961, + 51.01507006046836 + ], + [ + 6.893432247626119, + 51.015281873202866 + ], + [ + 6.893835812682016, + 51.01591845372633 + ], + [ + 6.893932521521904, + 51.016071158336665 + ], + [ + 6.894131661644537, + 51.01638515336036 + ], + [ + 6.8943619605163775, + 51.016748169780506 + ], + [ + 6.894532207015345, + 51.01698966270767 + ], + [ + 6.894566949346584, + 51.01703991550083 + ], + [ + 6.895204787475145, + 51.01794751721681 + ], + [ + 6.895306175281493, + 51.01802458576286 + ], + [ + 6.895668243743604, + 51.01822846965539 + ], + [ + 6.895996669895623, + 51.01832824652772 + ], + [ + 6.896108949006003, + 51.01835659993288 + ], + [ + 6.896141327089013, + 51.018394915434314 + ], + [ + 6.8963753420210026, + 51.01844687439675 + ], + [ + 6.896665981397114, + 51.01852329742185 + ], + [ + 6.896701193432077, + 51.018528563267786 + ], + [ + 6.896968990302438, + 51.01856861366724 + ], + [ + 6.897447120612249, + 51.018644586198086 + ], + [ + 6.898672097611271, + 51.01822426743473 + ], + [ + 6.899552622651311, + 51.01787428154234 + ], + [ + 6.899802222243, + 51.017774197003085 + ], + [ + 6.900648857283896, + 51.017448644680805 + ], + [ + 6.901105357780501, + 51.01720780878296 + ], + [ + 6.901439577750476, + 51.01701825449885 + ], + [ + 6.901443241031226, + 51.01701606918614 + ], + [ + 6.901711377514391, + 51.016850935549684 + ], + [ + 6.903112250957092, + 51.015845817655986 + ], + [ + 6.903964387534469, + 51.015168721581304 + ], + [ + 6.904964007035571, + 51.01436067293456 + ], + [ + 6.906152475005907, + 51.013410020682514 + ], + [ + 6.907824958012066, + 51.01194141244739 + ], + [ + 6.9085446454916974, + 51.01128230226965 + ], + [ + 6.909581273861728, + 51.01032767160269 + ], + [ + 6.910368450854191, + 51.00960303107912 + ], + [ + 6.910734438766405, + 51.009083389717944 + ], + [ + 6.911216939888379, + 51.008075083777705 + ], + [ + 6.911268564305653, + 51.0079703082412 + ], + [ + 6.91136054863749, + 51.00778361287701 + ], + [ + 6.91119758421338, + 51.00765463158141 + ], + [ + 6.911081934706429, + 51.007555214182304 + ], + [ + 6.909726848621314, + 51.006582993010404 + ], + [ + 6.908508582344373, + 51.00574129279461 + ], + [ + 6.907857631742952, + 51.00528305361104 + ], + [ + 6.907320213102619, + 51.004903392503074 + ], + [ + 6.9068648630641585, + 51.004581971774925 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Heimersdorf", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "604", + "Population_rel": 0.005706591669423919, + "Population_abs": 6209 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.107871060265792, + 50.87138897330978 + ], + [ + 7.107973141416778, + 50.87138620637996 + ], + [ + 7.1083712470776765, + 50.87139941336562 + ], + [ + 7.109277927864076, + 50.871429269050154 + ], + [ + 7.109395078111316, + 50.87145080857069 + ], + [ + 7.109580868188835, + 50.87144931106469 + ], + [ + 7.110055855794473, + 50.87144551053266 + ], + [ + 7.110587989719383, + 50.871461120845055 + ], + [ + 7.111306147012939, + 50.87146704529328 + ], + [ + 7.112285894451199, + 50.87125993701604 + ], + [ + 7.11291590822947, + 50.87111440993818 + ], + [ + 7.112958251466689, + 50.87111472508308 + ], + [ + 7.11299476627128, + 50.8711267816511 + ], + [ + 7.113111259858593, + 50.871329372246834 + ], + [ + 7.113425856585116, + 50.871266229367535 + ], + [ + 7.113324053005065, + 50.87108390555748 + ], + [ + 7.113316357834537, + 50.87105314503428 + ], + [ + 7.1133409931413505, + 50.87103169409346 + ], + [ + 7.113478131354105, + 50.87099775314837 + ], + [ + 7.113578981696521, + 50.87096721499123 + ], + [ + 7.113615306869133, + 50.87095443492726 + ], + [ + 7.113744236395541, + 50.87090891289983 + ], + [ + 7.114306196568747, + 50.87065642431518 + ], + [ + 7.114422300286827, + 50.87060434382811 + ], + [ + 7.114496169038717, + 50.87059815457406 + ], + [ + 7.114601197988086, + 50.87063562587505 + ], + [ + 7.11469154171269, + 50.870593501307894 + ], + [ + 7.114664030698961, + 50.8705360512117 + ], + [ + 7.1147448558571975, + 50.870458238746906 + ], + [ + 7.114837239774275, + 50.870412318418445 + ], + [ + 7.115105678966066, + 50.8702786846619 + ], + [ + 7.115242846797011, + 50.870186668995245 + ], + [ + 7.115409520602058, + 50.87007495328987 + ], + [ + 7.115473668374579, + 50.870006738838974 + ], + [ + 7.115604575991563, + 50.86986677882388 + ], + [ + 7.115660317094918, + 50.86983325386465 + ], + [ + 7.1157167188476524, + 50.8698214772906 + ], + [ + 7.115813780326468, + 50.86982279642827 + ], + [ + 7.115944773902057, + 50.86974594163231 + ], + [ + 7.115992486943125, + 50.8697035036542 + ], + [ + 7.115863183544652, + 50.869631026725166 + ], + [ + 7.115842366844257, + 50.86961676296422 + ], + [ + 7.115803968929213, + 50.86959051181606 + ], + [ + 7.115794021194763, + 50.86954871580242 + ], + [ + 7.115810634605041, + 50.86950082197528 + ], + [ + 7.115869198803372, + 50.86937144190953 + ], + [ + 7.115922669692015, + 50.86937371731749 + ], + [ + 7.116002616993515, + 50.86938418894416 + ], + [ + 7.116028106365063, + 50.86933917787614 + ], + [ + 7.115983591186377, + 50.8693311535548 + ], + [ + 7.115916260327081, + 50.869289816936146 + ], + [ + 7.116267217599669, + 50.86860882867938 + ], + [ + 7.116292614117941, + 50.868589617147094 + ], + [ + 7.116326720031285, + 50.86857823401477 + ], + [ + 7.116352440617833, + 50.86857259378122 + ], + [ + 7.116410090832263, + 50.868577435784765 + ], + [ + 7.116428857587344, + 50.86852457793647 + ], + [ + 7.116397252937141, + 50.868515800751865 + ], + [ + 7.116370784630801, + 50.868496097300884 + ], + [ + 7.116353208341126, + 50.868479904627364 + ], + [ + 7.116349358314087, + 50.86844362399096 + ], + [ + 7.1165492328347515, + 50.86804852356993 + ], + [ + 7.116598957660997, + 50.86795040641053 + ], + [ + 7.116673947048212, + 50.867842714022075 + ], + [ + 7.116735219387644, + 50.867707913557446 + ], + [ + 7.116828338903394, + 50.86750296003846 + ], + [ + 7.116833792452989, + 50.86745778011653 + ], + [ + 7.116832957368331, + 50.867422818959255 + ], + [ + 7.116808615964937, + 50.867355361058195 + ], + [ + 7.116830797666567, + 50.86733249465219 + ], + [ + 7.116804961022694, + 50.86729741238521 + ], + [ + 7.116788659238241, + 50.867275275727394 + ], + [ + 7.116788006610207, + 50.86724795405565 + ], + [ + 7.116884489229617, + 50.86702328033627 + ], + [ + 7.117227224226195, + 50.866225503754976 + ], + [ + 7.1172447093474505, + 50.86619036783967 + ], + [ + 7.117331152532088, + 50.866015322615475 + ], + [ + 7.117449041632432, + 50.86578316210394 + ], + [ + 7.117555685201331, + 50.86556782981319 + ], + [ + 7.11761515864573, + 50.86544769733794 + ], + [ + 7.117696199968196, + 50.865283942610304 + ], + [ + 7.117799232373324, + 50.86507215111232 + ], + [ + 7.1179202724729205, + 50.86482341970339 + ], + [ + 7.118081201459142, + 50.86453205478888 + ], + [ + 7.1180862473704405, + 50.86451735324153 + ], + [ + 7.11813075755645, + 50.864388826374565 + ], + [ + 7.11815133872583, + 50.86434664782945 + ], + [ + 7.118205206746764, + 50.864235200686494 + ], + [ + 7.118309571290706, + 50.864019889396275 + ], + [ + 7.1184228783110814, + 50.863786603523984 + ], + [ + 7.118433960487675, + 50.86376887759115 + ], + [ + 7.118538815241416, + 50.86360381366702 + ], + [ + 7.118732215799365, + 50.863298561751584 + ], + [ + 7.11891421988815, + 50.86296833826266 + ], + [ + 7.118928780508883, + 50.8629416800644 + ], + [ + 7.118958956908189, + 50.86288502602538 + ], + [ + 7.118969841974316, + 50.862865054735856 + ], + [ + 7.119007456964921, + 50.862792777143994 + ], + [ + 7.119018513131248, + 50.862768130088625 + ], + [ + 7.119044154013714, + 50.862711879575464 + ], + [ + 7.119051442261943, + 50.86269589745656 + ], + [ + 7.119119446975591, + 50.86254628909543 + ], + [ + 7.119130917122679, + 50.862521098288475 + ], + [ + 7.119146540406298, + 50.86247357293565 + ], + [ + 7.11918584229369, + 50.86235318552798 + ], + [ + 7.119192728111864, + 50.86233226387155 + ], + [ + 7.11924277143345, + 50.86209697706824 + ], + [ + 7.119273156982211, + 50.86195420179687 + ], + [ + 7.119233768705853, + 50.86192868943126 + ], + [ + 7.1192366320920115, + 50.86187032063938 + ], + [ + 7.119242798505699, + 50.86174233992747 + ], + [ + 7.119247309950906, + 50.861646019123185 + ], + [ + 7.119248389316422, + 50.861625871757624 + ], + [ + 7.11924204716225, + 50.86153900464972 + ], + [ + 7.119223630218085, + 50.86128603619781 + ], + [ + 7.11916623955476, + 50.86108414244154 + ], + [ + 7.11913147957824, + 50.860961229163316 + ], + [ + 7.119111622026597, + 50.860891211501844 + ], + [ + 7.1190726730411935, + 50.86075350619164 + ], + [ + 7.119016229207276, + 50.86060886708653 + ], + [ + 7.119028639550844, + 50.86057548649196 + ], + [ + 7.118996248702768, + 50.860509993838846 + ], + [ + 7.118953545929618, + 50.86049431200377 + ], + [ + 7.118898423169208, + 50.86044629813156 + ], + [ + 7.11872432060515, + 50.85999084993507 + ], + [ + 7.118699622536985, + 50.85992627267232 + ], + [ + 7.1186976559605375, + 50.85992125755472 + ], + [ + 7.118663250802378, + 50.85983088272988 + ], + [ + 7.118617493525134, + 50.859711312069685 + ], + [ + 7.118550987831987, + 50.85953782235413 + ], + [ + 7.118441005344865, + 50.85925094222165 + ], + [ + 7.11833859754479, + 50.85898376700761 + ], + [ + 7.118323592260395, + 50.85894426661142 + ], + [ + 7.118144208976647, + 50.85847547460331 + ], + [ + 7.1181167877797105, + 50.85840382109699 + ], + [ + 7.1180698016659, + 50.85828021647127 + ], + [ + 7.118011296017846, + 50.85812633668297 + ], + [ + 7.117972635625234, + 50.85802422634714 + ], + [ + 7.117944099614664, + 50.857959416104734 + ], + [ + 7.117938699898583, + 50.85794742134141 + ], + [ + 7.117868419405419, + 50.85778808121964 + ], + [ + 7.117812120506838, + 50.85769072545557 + ], + [ + 7.117805304902625, + 50.857678924592264 + ], + [ + 7.117722146933187, + 50.85757499368573 + ], + [ + 7.117698818437155, + 50.85754968678556 + ], + [ + 7.117490229202822, + 50.85743886646091 + ], + [ + 7.117236438705189, + 50.857225459962144 + ], + [ + 7.116329435999082, + 50.856713021242754 + ], + [ + 7.115991585152095, + 50.85655938770072 + ], + [ + 7.115635736369124, + 50.85644305167871 + ], + [ + 7.1145737429941915, + 50.856195296082255 + ], + [ + 7.114394112715131, + 50.85615476164768 + ], + [ + 7.114248929738575, + 50.85613538289298 + ], + [ + 7.114108089969743, + 50.85611946928533 + ], + [ + 7.114143239506572, + 50.856039036502736 + ], + [ + 7.11440582887186, + 50.856008840117475 + ], + [ + 7.11497589366346, + 50.85593695823605 + ], + [ + 7.11502534868402, + 50.85588470606625 + ], + [ + 7.115167751960478, + 50.855865005361906 + ], + [ + 7.114901375506638, + 50.855295817745365 + ], + [ + 7.114866542465924, + 50.855222796219586 + ], + [ + 7.1147692293544775, + 50.85501912440071 + ], + [ + 7.114517214844166, + 50.854486026668496 + ], + [ + 7.114434662142327, + 50.85431160947635 + ], + [ + 7.114307502854102, + 50.854029384055636 + ], + [ + 7.114259506862337, + 50.853946240305774 + ], + [ + 7.114240114236731, + 50.85391316367174 + ], + [ + 7.114214425017704, + 50.85385425874925 + ], + [ + 7.114155675413364, + 50.85385014515634 + ], + [ + 7.114101769235075, + 50.85384670430887 + ], + [ + 7.114080561601784, + 50.85387450552113 + ], + [ + 7.114027957992149, + 50.85388399706717 + ], + [ + 7.113949081346966, + 50.85389347038832 + ], + [ + 7.113394352796822, + 50.853940479299425 + ], + [ + 7.112972137365475, + 50.85397615273987 + ], + [ + 7.11247201721176, + 50.85402038814934 + ], + [ + 7.112304931048307, + 50.854035106584995 + ], + [ + 7.1122076070674725, + 50.854039271658515 + ], + [ + 7.11215791611113, + 50.85403390241252 + ], + [ + 7.112116099035865, + 50.854019288206814 + ], + [ + 7.112055389726114, + 50.85405222922082 + ], + [ + 7.112038406143486, + 50.85406659525968 + ], + [ + 7.112018579724704, + 50.85408683045813 + ], + [ + 7.112002224016809, + 50.85412761938917 + ], + [ + 7.112003287253747, + 50.85417228678324 + ], + [ + 7.112004861855302, + 50.85418476765719 + ], + [ + 7.112008000848625, + 50.854209278654714 + ], + [ + 7.112010431235989, + 50.85421590857675 + ], + [ + 7.11204132826548, + 50.85430281205497 + ], + [ + 7.112202731364702, + 50.854819069962566 + ], + [ + 7.11224116527329, + 50.85493619727941 + ], + [ + 7.112245303233995, + 50.854948922881555 + ], + [ + 7.112245241013278, + 50.85498209428141 + ], + [ + 7.112244101110946, + 50.85502372661616 + ], + [ + 7.112242531934508, + 50.85502940503866 + ], + [ + 7.112227103380455, + 50.85506137537392 + ], + [ + 7.112217568763481, + 50.85507845665007 + ], + [ + 7.112199853633434, + 50.855109908820516 + ], + [ + 7.112106384805969, + 50.85528214143049 + ], + [ + 7.112021754526482, + 50.85543783815248 + ], + [ + 7.11195695150869, + 50.855557029119375 + ], + [ + 7.111764247083042, + 50.855527567937486 + ], + [ + 7.111562576834379, + 50.85540216929128 + ], + [ + 7.111522292352132, + 50.85543892658797 + ], + [ + 7.111469784322846, + 50.85548682708337 + ], + [ + 7.111191979330649, + 50.85569844890699 + ], + [ + 7.110919314979178, + 50.855744129386295 + ], + [ + 7.1101053681517925, + 50.855951915943756 + ], + [ + 7.109281735548805, + 50.85609947627655 + ], + [ + 7.109233948954842, + 50.85610409809424 + ], + [ + 7.109185659603902, + 50.85610358532797 + ], + [ + 7.109138141834812, + 50.8560980485669 + ], + [ + 7.109098739428181, + 50.85608859614094 + ], + [ + 7.109060989882359, + 50.85607692206159 + ], + [ + 7.109025035196708, + 50.85606302863185 + ], + [ + 7.109020614059029, + 50.85610909472667 + ], + [ + 7.109014202255144, + 50.85610602288085 + ], + [ + 7.108812635212204, + 50.85613447659964 + ], + [ + 7.108615998735433, + 50.85615344058956 + ], + [ + 7.108624993611172, + 50.85605773230138 + ], + [ + 7.1086379058726035, + 50.85590155172461 + ], + [ + 7.108640238747202, + 50.85587420098449 + ], + [ + 7.108682225544545, + 50.85541704398901 + ], + [ + 7.108706464569358, + 50.85513373287191 + ], + [ + 7.10872166189822, + 50.854960180173464 + ], + [ + 7.108730952764378, + 50.854878916969874 + ], + [ + 7.10879399729559, + 50.85414809776268 + ], + [ + 7.108803062922408, + 50.85404535120019 + ], + [ + 7.108815195697556, + 50.85391030215482 + ], + [ + 7.108836028398545, + 50.853686984089876 + ], + [ + 7.108712588803691, + 50.85360194773537 + ], + [ + 7.108454393841382, + 50.853595412802264 + ], + [ + 7.1084508589717394, + 50.853650013012285 + ], + [ + 7.108450018522002, + 50.853662426905196 + ], + [ + 7.108430840424104, + 50.853764011194755 + ], + [ + 7.108418985388146, + 50.853898876743294 + ], + [ + 7.10829928484564, + 50.85389363167854 + ], + [ + 7.10798109629904, + 50.85388451936992 + ], + [ + 7.107847497065506, + 50.85388012499566 + ], + [ + 7.107792183102305, + 50.85387714405847 + ], + [ + 7.107757104156741, + 50.85387711834819 + ], + [ + 7.107554718025361, + 50.85387049995536 + ], + [ + 7.107355883128749, + 50.85386393792038 + ], + [ + 7.107295600722852, + 50.85386109469566 + ], + [ + 7.106804558434965, + 50.85384508005202 + ], + [ + 7.1068067815438365, + 50.853818989372286 + ], + [ + 7.10682130384796, + 50.8535746956902 + ], + [ + 7.106823001803512, + 50.853538451572085 + ], + [ + 7.106554277051715, + 50.853531022965036 + ], + [ + 7.106157370240909, + 50.85352004621781 + ], + [ + 7.106126554941103, + 50.85394014900852 + ], + [ + 7.1047279047033705, + 50.85390063825606 + ], + [ + 7.1041644381308515, + 50.85388475893445 + ], + [ + 7.103699882151235, + 50.85387171671687 + ], + [ + 7.10371455644125, + 50.853542920787106 + ], + [ + 7.103677100622858, + 50.85346030633082 + ], + [ + 7.1036038927612495, + 50.85342719408298 + ], + [ + 7.10355323277483, + 50.853386771260915 + ], + [ + 7.103506433745876, + 50.853377505176255 + ], + [ + 7.103085520627573, + 50.853293928815354 + ], + [ + 7.103031157657664, + 50.85328311675025 + ], + [ + 7.102927714446564, + 50.853262610022206 + ], + [ + 7.102819132306853, + 50.85324098266059 + ], + [ + 7.102528651811972, + 50.853178102626735 + ], + [ + 7.102330809371712, + 50.853135208099644 + ], + [ + 7.102284670917591, + 50.85309977603 + ], + [ + 7.101974448842139, + 50.85297047140952 + ], + [ + 7.101793975561268, + 50.85289324887578 + ], + [ + 7.101488985681025, + 50.8527629047562 + ], + [ + 7.101477947299666, + 50.852746468972136 + ], + [ + 7.101456018241924, + 50.85271377428243 + ], + [ + 7.101430997885677, + 50.8526765243257 + ], + [ + 7.101321768114471, + 50.85262712947834 + ], + [ + 7.100623870524592, + 50.85231152813413 + ], + [ + 7.100520546232208, + 50.85226575780466 + ], + [ + 7.1000689673807456, + 50.85207934953461 + ], + [ + 7.099802315552065, + 50.85199664447255 + ], + [ + 7.099571716994962, + 50.8519252843773 + ], + [ + 7.099495581606117, + 50.851906404768016 + ], + [ + 7.099070722641633, + 50.85179911938118 + ], + [ + 7.098332404605422, + 50.85170790915607 + ], + [ + 7.097644037037238, + 50.851687723692656 + ], + [ + 7.097622014187027, + 50.851687089383475 + ], + [ + 7.097427696808402, + 50.853965067972894 + ], + [ + 7.097177362608676, + 50.85601739494536 + ], + [ + 7.096995230073496, + 50.85748494073142 + ], + [ + 7.096841066302235, + 50.85877099378363 + ], + [ + 7.096541480907152, + 50.8612384671403 + ], + [ + 7.0965077957190985, + 50.86151593145081 + ], + [ + 7.096278460594903, + 50.86327994289466 + ], + [ + 7.0961062151936956, + 50.864807890787 + ], + [ + 7.09550824485441, + 50.86981958689318 + ], + [ + 7.095791096220413, + 50.8698197171555 + ], + [ + 7.096017435738945, + 50.869814983569405 + ], + [ + 7.096137797047103, + 50.869816459146726 + ], + [ + 7.096335323577882, + 50.869818917452946 + ], + [ + 7.096417094997204, + 50.86981041778761 + ], + [ + 7.096431433965577, + 50.869810013160695 + ], + [ + 7.096445352444993, + 50.86980988227592 + ], + [ + 7.096515754992865, + 50.869238386996514 + ], + [ + 7.096642750291863, + 50.8692622737808 + ], + [ + 7.0972206583172985, + 50.8693710950723 + ], + [ + 7.0976795926089435, + 50.869458828975056 + ], + [ + 7.097870241460011, + 50.8694951507851 + ], + [ + 7.098451329243937, + 50.869606093525434 + ], + [ + 7.098823458000008, + 50.86967531299034 + ], + [ + 7.0994224689289105, + 50.86978698088604 + ], + [ + 7.099449265385674, + 50.869790773802784 + ], + [ + 7.099502578813988, + 50.869798452197635 + ], + [ + 7.099532679282706, + 50.86980383053749 + ], + [ + 7.099843572504284, + 50.86984845436328 + ], + [ + 7.099849765871836, + 50.86990637844293 + ], + [ + 7.099659635685598, + 50.86991635173768 + ], + [ + 7.099533777801307, + 50.86994702370956 + ], + [ + 7.099492815230541, + 50.86995702846066 + ], + [ + 7.0992481173104665, + 50.87037087486009 + ], + [ + 7.099223255017709, + 50.87090805231634 + ], + [ + 7.099210678649685, + 50.8711946665393 + ], + [ + 7.09920858078588, + 50.87125042120462 + ], + [ + 7.09920672237763, + 50.87129215049296 + ], + [ + 7.099198114516917, + 50.87149386583662 + ], + [ + 7.099208360964294, + 50.87192922092189 + ], + [ + 7.099252030102438, + 50.872378194562536 + ], + [ + 7.099258851979453, + 50.87246883448619 + ], + [ + 7.099318795307695, + 50.872595111155874 + ], + [ + 7.0993866978944835, + 50.87259483126319 + ], + [ + 7.099449687238958, + 50.87257284235405 + ], + [ + 7.099938023115858, + 50.87256823821942 + ], + [ + 7.100010195350633, + 50.87256827661444 + ], + [ + 7.101640619574265, + 50.87256844019647 + ], + [ + 7.101670453559192, + 50.87256842820905 + ], + [ + 7.101682529251501, + 50.872568403419294 + ], + [ + 7.10280867737562, + 50.872584010832085 + ], + [ + 7.102934115318698, + 50.87258354370928 + ], + [ + 7.103029011757281, + 50.87258318521663 + ], + [ + 7.103405408685133, + 50.87257917591127 + ], + [ + 7.103805498983357, + 50.87257386230367 + ], + [ + 7.103887985027546, + 50.87257137318927 + ], + [ + 7.104119239137846, + 50.87256972375655 + ], + [ + 7.104545319619492, + 50.87256398178427 + ], + [ + 7.1056843804239405, + 50.87254887424035 + ], + [ + 7.105687079246091, + 50.87254884880231 + ], + [ + 7.106072839088059, + 50.87254429217482 + ], + [ + 7.106478510902966, + 50.87254664707378 + ], + [ + 7.106944870697401, + 50.87255004270659 + ], + [ + 7.10712630718539, + 50.87255047775422 + ], + [ + 7.107347402972189, + 50.872551795033125 + ], + [ + 7.1077041306751765, + 50.87254517112107 + ], + [ + 7.107705765830861, + 50.87249427535246 + ], + [ + 7.107734318713719, + 50.87172737852893 + ], + [ + 7.107740862345832, + 50.8715480658566 + ], + [ + 7.1077451916718735, + 50.87143107144901 + ], + [ + 7.107777868954997, + 50.871419164883775 + ], + [ + 7.107814166546291, + 50.87140416652608 + ], + [ + 7.107871060265792, + 50.87138897330978 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Wahnheide", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "710", + "Population_rel": 0.007240542627109298, + "Population_abs": 7878 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.971316407575258, + 50.90477967339803 + ], + [ + 6.971546271220789, + 50.904827421824955 + ], + [ + 6.971524700176308, + 50.904876477712484 + ], + [ + 6.971541555303469, + 50.904859796673954 + ], + [ + 6.971542395124175, + 50.90485916101905 + ], + [ + 6.971566069816072, + 50.904849074938575 + ], + [ + 6.971574700719854, + 50.90484711590191 + ], + [ + 6.971585473495228, + 50.904845588019285 + ], + [ + 6.971597343859031, + 50.90484531495971 + ], + [ + 6.971610937216974, + 50.90484627431533 + ], + [ + 6.97186225561252, + 50.904912770224136 + ], + [ + 6.971722486854203, + 50.90523278774347 + ], + [ + 6.971940378451412, + 50.90527106550016 + ], + [ + 6.971823438477413, + 50.90553362993047 + ], + [ + 6.972104562259191, + 50.90558378617478 + ], + [ + 6.972138536004194, + 50.905588383224774 + ], + [ + 6.972138479664889, + 50.9055884685863 + ], + [ + 6.972138423364626, + 50.90558855304912 + ], + [ + 6.972020899750712, + 50.90576490019645 + ], + [ + 6.972009941518582, + 50.905775108406935 + ], + [ + 6.972037773889842, + 50.90576961385801 + ], + [ + 6.972458720855536, + 50.90569338153834 + ], + [ + 6.972508721165953, + 50.905684425346294 + ], + [ + 6.972576410443572, + 50.9056715457404 + ], + [ + 6.972594537019968, + 50.90566815788291 + ], + [ + 6.972813191593105, + 50.90562696188777 + ], + [ + 6.9728677749790915, + 50.90569464572327 + ], + [ + 6.972875800303297, + 50.905704466935944 + ], + [ + 6.972898026795197, + 50.90573403695147 + ], + [ + 6.972956081631833, + 50.905811400800566 + ], + [ + 6.972978485535118, + 50.90584258646829 + ], + [ + 6.973170376001634, + 50.90602343950507 + ], + [ + 6.973202444892851, + 50.90603505879266 + ], + [ + 6.973296554759412, + 50.90606907074842 + ], + [ + 6.973693945271237, + 50.906214025660105 + ], + [ + 6.97442960463111, + 50.90647997111822 + ], + [ + 6.974430500371621, + 50.90647899734734 + ], + [ + 6.974858900844577, + 50.906647529425705 + ], + [ + 6.975000995312574, + 50.90669812163362 + ], + [ + 6.975021045711829, + 50.90670514561235 + ], + [ + 6.97512776918538, + 50.90677751668978 + ], + [ + 6.975144729790841, + 50.906779532360844 + ], + [ + 6.975169358730183, + 50.906781124354374 + ], + [ + 6.975407198207562, + 50.906508195855885 + ], + [ + 6.975416506150568, + 50.906511354953565 + ], + [ + 6.975488537388877, + 50.90653610254918 + ], + [ + 6.975507028981846, + 50.906543318853 + ], + [ + 6.975545648646722, + 50.906561244246255 + ], + [ + 6.975682358724332, + 50.90660585758687 + ], + [ + 6.975731319331522, + 50.906621988143364 + ], + [ + 6.9757400599313195, + 50.90662524170258 + ], + [ + 6.975747793757811, + 50.90662796335451 + ], + [ + 6.975762690048104, + 50.9066332321606 + ], + [ + 6.975784462394128, + 50.906640961307126 + ], + [ + 6.975808669419244, + 50.9066563099441 + ], + [ + 6.975814721797503, + 50.906660214791586 + ], + [ + 6.9759658440799175, + 50.90676169905817 + ], + [ + 6.975976932732976, + 50.90676843884106 + ], + [ + 6.975982828247259, + 50.906846327467704 + ], + [ + 6.976040063825673, + 50.90689383413047 + ], + [ + 6.976293607126161, + 50.90705310380111 + ], + [ + 6.976313229845081, + 50.907042677585856 + ], + [ + 6.976329933791033, + 50.9070323797342 + ], + [ + 6.976334954864571, + 50.907048159158464 + ], + [ + 6.9763533929801484, + 50.90710715433707 + ], + [ + 6.9764259280668375, + 50.90718987954228 + ], + [ + 6.9769941948346, + 50.90742015617984 + ], + [ + 6.976999502703245, + 50.90742230686198 + ], + [ + 6.977451282614959, + 50.9072973463626 + ], + [ + 6.977923214822345, + 50.907469223341316 + ], + [ + 6.978074762743178, + 50.90750416717294 + ], + [ + 6.979791964123543, + 50.90790103638869 + ], + [ + 6.979843813960539, + 50.9078378558638 + ], + [ + 6.979895662645825, + 50.907774764334555 + ], + [ + 6.979912664247354, + 50.90775419572836 + ], + [ + 6.979929632811565, + 50.907733667019876 + ], + [ + 6.979963602916713, + 50.90769256969437 + ], + [ + 6.980236503534256, + 50.90736396155774 + ], + [ + 6.9805464096775465, + 50.90699683866942 + ], + [ + 6.98096143056882, + 50.90652401367422 + ], + [ + 6.981446937842182, + 50.90600277144509 + ], + [ + 6.982819684703669, + 50.9046293233267 + ], + [ + 6.984240705860847, + 50.90341168653238 + ], + [ + 6.985374796039525, + 50.90250488223927 + ], + [ + 6.986535966555881, + 50.90167065181928 + ], + [ + 6.9866131592540155, + 50.901616872347695 + ], + [ + 6.986627973350112, + 50.901606565616724 + ], + [ + 6.986642719969122, + 50.90159630628626 + ], + [ + 6.987168332222469, + 50.90123578937998 + ], + [ + 6.987707320329118, + 50.90088297819958 + ], + [ + 6.987732072978567, + 50.90086699313837 + ], + [ + 6.987756828453483, + 50.90085100812069 + ], + [ + 6.987832000173091, + 50.90080263784285 + ], + [ + 6.98784486780566, + 50.90079441543535 + ], + [ + 6.987857665239378, + 50.90078623768446 + ], + [ + 6.9879084453688645, + 50.90075398728175 + ], + [ + 6.987933834102308, + 50.90073785935113 + ], + [ + 6.987959221319514, + 50.90072173318766 + ], + [ + 6.988489122747334, + 50.900390120216 + ], + [ + 6.989030979698892, + 50.90006631421889 + ], + [ + 6.989469514863427, + 50.899810982533886 + ], + [ + 6.9899389383437205, + 50.89955107186118 + ], + [ + 6.990008792224711, + 50.89951353245329 + ], + [ + 6.990061207707186, + 50.899484950872456 + ], + [ + 6.990087345886727, + 50.89947070609265 + ], + [ + 6.990103252804881, + 50.89946203662734 + ], + [ + 6.990113484089073, + 50.89945646040807 + ], + [ + 6.990181932327687, + 50.89941965216729 + ], + [ + 6.990204562908321, + 50.89940759450175 + ], + [ + 6.990227193515985, + 50.89939553593296 + ], + [ + 6.990293960748176, + 50.899359911040285 + ], + [ + 6.990319934849827, + 50.899346269564376 + ], + [ + 6.990345977395329, + 50.89933259058811 + ], + [ + 6.990372693526046, + 50.89931842854707 + ], + [ + 6.99037274446658, + 50.89931840154353 + ], + [ + 6.990397848041919, + 50.89930509222012 + ], + [ + 6.990423935438626, + 50.89929142748961 + ], + [ + 6.990450006800289, + 50.89927777147103 + ], + [ + 6.990545893296059, + 50.89922778561654 + ], + [ + 6.989007370996732, + 50.89797797319298 + ], + [ + 6.988965813861753, + 50.89794419862098 + ], + [ + 6.986938069365101, + 50.89625077563334 + ], + [ + 6.9864386145530535, + 50.89580921413537 + ], + [ + 6.986290774631167, + 50.89567850795036 + ], + [ + 6.986074508638945, + 50.895487305780286 + ], + [ + 6.986012859998022, + 50.89543280075837 + ], + [ + 6.984970415986539, + 50.894511136270005 + ], + [ + 6.984832150824179, + 50.89438888666742 + ], + [ + 6.98472688025575, + 50.89429709396609 + ], + [ + 6.984764845693576, + 50.89414961635852 + ], + [ + 6.98445136964901, + 50.89387709675055 + ], + [ + 6.983917120702183, + 50.89346782057749 + ], + [ + 6.983395878628964, + 50.89297384269001 + ], + [ + 6.982495414004653, + 50.89223557820844 + ], + [ + 6.982002223520752, + 50.89187781686676 + ], + [ + 6.9812625449109005, + 50.89130161657698 + ], + [ + 6.980982299414588, + 50.89109344171787 + ], + [ + 6.980665864005476, + 50.8907524363839 + ], + [ + 6.980428935499885, + 50.890576347722046 + ], + [ + 6.980230793781203, + 50.89051463769099 + ], + [ + 6.980091678877527, + 50.89033988328552 + ], + [ + 6.980046419259692, + 50.890309789051386 + ], + [ + 6.980000704381836, + 50.89027151874294 + ], + [ + 6.979883861647846, + 50.89018952769869 + ], + [ + 6.9790977792981055, + 50.889695417545234 + ], + [ + 6.978316202696459, + 50.889266347709246 + ], + [ + 6.977538940801269, + 50.888839034542244 + ], + [ + 6.973826607229177, + 50.88702033154883 + ], + [ + 6.967854740467476, + 50.88511941866848 + ], + [ + 6.9678124287795224, + 50.88553921610571 + ], + [ + 6.967734751592049, + 50.886309714453226 + ], + [ + 6.967723832989951, + 50.886427386593866 + ], + [ + 6.967615413416292, + 50.88731230485019 + ], + [ + 6.9674855037867, + 50.88832622027164 + ], + [ + 6.967452240585214, + 50.88877147284053 + ], + [ + 6.967253256266469, + 50.89036847462021 + ], + [ + 6.967243883712011, + 50.890457996844674 + ], + [ + 6.966984426489847, + 50.8904953863825 + ], + [ + 6.965700801717035, + 50.89101994437163 + ], + [ + 6.965692437178536, + 50.89111709912255 + ], + [ + 6.965682315999396, + 50.89121175174638 + ], + [ + 6.965680589745338, + 50.89123136236198 + ], + [ + 6.965674287408416, + 50.89130458901987 + ], + [ + 6.965700662180146, + 50.89174116551187 + ], + [ + 6.965703851619773, + 50.89185413673974 + ], + [ + 6.965709461595966, + 50.89206336336048 + ], + [ + 6.96571349553007, + 50.89215529207112 + ], + [ + 6.96572055602836, + 50.89232477329266 + ], + [ + 6.965723937207484, + 50.892405739744284 + ], + [ + 6.9657309644043615, + 50.8925736041883 + ], + [ + 6.96574666493305, + 50.892652311187234 + ], + [ + 6.965757562457582, + 50.892663817176135 + ], + [ + 6.965779867674822, + 50.892670194979836 + ], + [ + 6.965813814787684, + 50.89266910488472 + ], + [ + 6.966192848947953, + 50.892633244331485 + ], + [ + 6.966206741468176, + 50.892707022618154 + ], + [ + 6.966218744549378, + 50.89276499461269 + ], + [ + 6.966221733445413, + 50.89277890348035 + ], + [ + 6.966371031385399, + 50.89276804787452 + ], + [ + 6.966397390352014, + 50.89277117478465 + ], + [ + 6.966470485564876, + 50.8927799179106 + ], + [ + 6.966510101516924, + 50.892798629155386 + ], + [ + 6.966549717657498, + 50.8928173367922 + ], + [ + 6.966594592987927, + 50.8928484054227 + ], + [ + 6.966643739341944, + 50.89288256138403 + ], + [ + 6.9667937993354565, + 50.892956469065346 + ], + [ + 6.966882861749833, + 50.892988093388986 + ], + [ + 6.9670439462478235, + 50.893045279038624 + ], + [ + 6.967106866501469, + 50.893077388523004 + ], + [ + 6.967141219596346, + 50.89312330950306 + ], + [ + 6.967192993897789, + 50.89311829526217 + ], + [ + 6.9669229977257565, + 50.89421166851355 + ], + [ + 6.966893538320195, + 50.894333869610776 + ], + [ + 6.966884931987338, + 50.89436903119442 + ], + [ + 6.966787274530033, + 50.89478275414687 + ], + [ + 6.966592378171358, + 50.894766709452554 + ], + [ + 6.966504581991488, + 50.894759481140696 + ], + [ + 6.966496871938526, + 50.89478956601461 + ], + [ + 6.9665315613715215, + 50.89479304850194 + ], + [ + 6.966518869057889, + 50.89484283295732 + ], + [ + 6.966511223021099, + 50.8948496429508 + ], + [ + 6.966478592045031, + 50.89497612459407 + ], + [ + 6.966519191218329, + 50.89501471219677 + ], + [ + 6.966616114237836, + 50.89510317427578 + ], + [ + 6.966589331343969, + 50.89526467543218 + ], + [ + 6.966589289079963, + 50.895264927421984 + ], + [ + 6.96657503000854, + 50.89526354844308 + ], + [ + 6.965190419389882, + 50.895129622052785 + ], + [ + 6.96510629654023, + 50.894958270103324 + ], + [ + 6.965086708405228, + 50.894945847145394 + ], + [ + 6.96500462730699, + 50.895169463647534 + ], + [ + 6.965002743644198, + 50.89517460314476 + ], + [ + 6.964690570393658, + 50.89608727220569 + ], + [ + 6.964539048121672, + 50.89652738786929 + ], + [ + 6.964531003414972, + 50.89655082664297 + ], + [ + 6.964525367669101, + 50.896566963982 + ], + [ + 6.964520681019958, + 50.89658093687441 + ], + [ + 6.964498279128899, + 50.89664557592765 + ], + [ + 6.963828256145047, + 50.896565174613634 + ], + [ + 6.963708726609764, + 50.89690991667721 + ], + [ + 6.963704568783995, + 50.89692199747227 + ], + [ + 6.963665002323096, + 50.89691953709124 + ], + [ + 6.963523386085457, + 50.896910728866224 + ], + [ + 6.9631332639810255, + 50.896886352781806 + ], + [ + 6.963099010883208, + 50.896907221373255 + ], + [ + 6.963020812993849, + 50.896954522019826 + ], + [ + 6.962979147233361, + 50.89698129514214 + ], + [ + 6.962872247003675, + 50.89704977787855 + ], + [ + 6.962892696521652, + 50.89716593114165 + ], + [ + 6.962820329307203, + 50.89717210217876 + ], + [ + 6.962794928984778, + 50.89717419952993 + ], + [ + 6.962587618184118, + 50.89719191192628 + ], + [ + 6.962555689494545, + 50.897194512226044 + ], + [ + 6.962431390078234, + 50.89720515644294 + ], + [ + 6.962258983740744, + 50.897219792908516 + ], + [ + 6.9621838704399055, + 50.897224068271285 + ], + [ + 6.962175499455285, + 50.89722452738162 + ], + [ + 6.962232570910636, + 50.897427846174985 + ], + [ + 6.962159035788318, + 50.89743941968316 + ], + [ + 6.962088485404668, + 50.89745096881933 + ], + [ + 6.962008749204122, + 50.897506551320106 + ], + [ + 6.961917943413743, + 50.897569866698376 + ], + [ + 6.961877454556312, + 50.89759851630921 + ], + [ + 6.961685334941695, + 50.89773260440753 + ], + [ + 6.9616042501477855, + 50.897798625588784 + ], + [ + 6.961546226650988, + 50.89784557881866 + ], + [ + 6.9615228752730305, + 50.897864379927256 + ], + [ + 6.9614486200851005, + 50.89792387206735 + ], + [ + 6.9612770185378166, + 50.89807424056678 + ], + [ + 6.96117469680097, + 50.89816515768287 + ], + [ + 6.9610890993444725, + 50.898239935198845 + ], + [ + 6.961046283288135, + 50.89827993183799 + ], + [ + 6.961018290029255, + 50.898308029599896 + ], + [ + 6.960898551705595, + 50.898436755278915 + ], + [ + 6.960886307630693, + 50.89844962104967 + ], + [ + 6.960871798882544, + 50.89846295449983 + ], + [ + 6.960746658161396, + 50.898598646674905 + ], + [ + 6.96073928844152, + 50.898606617728106 + ], + [ + 6.9607327448062035, + 50.8986133242951 + ], + [ + 6.960713963730694, + 50.89863316564565 + ], + [ + 6.96068938878413, + 50.898661594675524 + ], + [ + 6.96063497512238, + 50.898738991654135 + ], + [ + 6.960624978770548, + 50.898757502523225 + ], + [ + 6.960619910335509, + 50.898766803497516 + ], + [ + 6.960616361804908, + 50.89877393384248 + ], + [ + 6.960534075471407, + 50.898754116081804 + ], + [ + 6.9602330734175135, + 50.8986817120757 + ], + [ + 6.959831127126569, + 50.89933396344479 + ], + [ + 6.959650196470248, + 50.899632640930264 + ], + [ + 6.959532366499072, + 50.89982688167392 + ], + [ + 6.959511069113502, + 50.89986274449326 + ], + [ + 6.959453190456928, + 50.89995841783708 + ], + [ + 6.9594472020811375, + 50.89997141262543 + ], + [ + 6.959022650611502, + 50.90081136444503 + ], + [ + 6.958648614619265, + 50.90163373041164 + ], + [ + 6.958678022990072, + 50.901639691463835 + ], + [ + 6.959082502160773, + 50.90172446323992 + ], + [ + 6.959060697321853, + 50.901784062571096 + ], + [ + 6.9590557076769874, + 50.90178338441793 + ], + [ + 6.958917450550753, + 50.90207011314275 + ], + [ + 6.958910984488831, + 50.902087515510765 + ], + [ + 6.95885473556753, + 50.90220735735117 + ], + [ + 6.958806460654304, + 50.902307086358775 + ], + [ + 6.958752740069276, + 50.90241863690263 + ], + [ + 6.958608129524395, + 50.902742273570546 + ], + [ + 6.9586040562058775, + 50.90275156668035 + ], + [ + 6.958592772171775, + 50.902776649114784 + ], + [ + 6.958583943997903, + 50.902796768548995 + ], + [ + 6.958581415543788, + 50.902812071366256 + ], + [ + 6.958580419388686, + 50.90281891082566 + ], + [ + 6.958565572062383, + 50.90290587042881 + ], + [ + 6.958569097203462, + 50.90292516896089 + ], + [ + 6.9585724578959915, + 50.90294347979351 + ], + [ + 6.95858030191634, + 50.902986204511535 + ], + [ + 6.958588750045099, + 50.903037554070984 + ], + [ + 6.958535681495759, + 50.90320159662006 + ], + [ + 6.958178748702998, + 50.9031967078248 + ], + [ + 6.958174883440458, + 50.90307079874671 + ], + [ + 6.95767846506958, + 50.90307163883811 + ], + [ + 6.957668264803746, + 50.9025262471392 + ], + [ + 6.957463729536603, + 50.90243102061672 + ], + [ + 6.957417766683308, + 50.90242186901822 + ], + [ + 6.957390056910019, + 50.902422456098535 + ], + [ + 6.957363429315104, + 50.902427304496385 + ], + [ + 6.956767681991958, + 50.90258681044084 + ], + [ + 6.956751153012471, + 50.90256498446189 + ], + [ + 6.956356867172876, + 50.90271580349227 + ], + [ + 6.956356649635868, + 50.90287188468066 + ], + [ + 6.956375217724321, + 50.903056170256946 + ], + [ + 6.9563874697577095, + 50.903112972996325 + ], + [ + 6.956403876147963, + 50.90318511278498 + ], + [ + 6.956503128131974, + 50.903297115802005 + ], + [ + 6.956539433781518, + 50.90334131574907 + ], + [ + 6.956503158011036, + 50.90335401840163 + ], + [ + 6.95679066864642, + 50.90367554827785 + ], + [ + 6.956861236962824, + 50.903754435420254 + ], + [ + 6.9570339879948975, + 50.90394943616984 + ], + [ + 6.957219207522832, + 50.90411457957822 + ], + [ + 6.957328865046085, + 50.904234676744814 + ], + [ + 6.957469066839913, + 50.90418741005928 + ], + [ + 6.957553773528953, + 50.90419309802446 + ], + [ + 6.957629682382237, + 50.90419265467707 + ], + [ + 6.9581845973606615, + 50.90427062024593 + ], + [ + 6.958348819181432, + 50.90429364207708 + ], + [ + 6.9590347050307155, + 50.90429359704663 + ], + [ + 6.959055713242654, + 50.90423672871586 + ], + [ + 6.959164123677551, + 50.90394385323425 + ], + [ + 6.959802033517406, + 50.903938831203305 + ], + [ + 6.960385724181613, + 50.90393663463918 + ], + [ + 6.960721087527862, + 50.90393630108171 + ], + [ + 6.961158614012252, + 50.903933326422504 + ], + [ + 6.961378829932994, + 50.90393330960781 + ], + [ + 6.96138598612324, + 50.903956353537 + ], + [ + 6.961383591695576, + 50.90436449125926 + ], + [ + 6.96137875947354, + 50.90438520593389 + ], + [ + 6.961876455275564, + 50.904431893806084 + ], + [ + 6.962158764836318, + 50.904457702733076 + ], + [ + 6.96243713159356, + 50.90448534163054 + ], + [ + 6.963344221125357, + 50.90456388320647 + ], + [ + 6.9634022731128065, + 50.90437336864485 + ], + [ + 6.964074779728604, + 50.90445168344767 + ], + [ + 6.964312041322486, + 50.9044577234663 + ], + [ + 6.964341570034561, + 50.90436623728645 + ], + [ + 6.96449506283908, + 50.903916937954776 + ], + [ + 6.964501252163554, + 50.90391725006338 + ], + [ + 6.964758772024913, + 50.90393021878639 + ], + [ + 6.965649188844615, + 50.90397283356291 + ], + [ + 6.965726221690713, + 50.90397866782713 + ], + [ + 6.965660578048367, + 50.90437195679205 + ], + [ + 6.965820386333604, + 50.904393107674764 + ], + [ + 6.965850508972802, + 50.90430988689466 + ], + [ + 6.965865842644085, + 50.904267689006474 + ], + [ + 6.965886543555405, + 50.904210075747045 + ], + [ + 6.966003491415656, + 50.90422798536758 + ], + [ + 6.9660183556918245, + 50.9041906458265 + ], + [ + 6.9660430176407635, + 50.90419385741888 + ], + [ + 6.966055679657566, + 50.90415995289946 + ], + [ + 6.966087204728188, + 50.904165085550474 + ], + [ + 6.9661194380472775, + 50.90417012261008 + ], + [ + 6.9661326243366855, + 50.90412722352188 + ], + [ + 6.966342606444148, + 50.90415470011306 + ], + [ + 6.966497859875557, + 50.904209957047904 + ], + [ + 6.966964885055654, + 50.90427881162426 + ], + [ + 6.967014548079515, + 50.904363348789346 + ], + [ + 6.966991052260271, + 50.90443698727755 + ], + [ + 6.967051405892362, + 50.904447454218776 + ], + [ + 6.967179826688076, + 50.9044701214606 + ], + [ + 6.967283927010102, + 50.9041151666854 + ], + [ + 6.9677050850095235, + 50.90415913760286 + ], + [ + 6.96793648895953, + 50.90419128788298 + ], + [ + 6.968326444235627, + 50.90423875236946 + ], + [ + 6.968338989819381, + 50.90424044574975 + ], + [ + 6.968616036199988, + 50.90427967678659 + ], + [ + 6.968971489851425, + 50.904335156432964 + ], + [ + 6.969073164596006, + 50.90435103168792 + ], + [ + 6.969202815900739, + 50.904371260106046 + ], + [ + 6.9692257792591334, + 50.904374844388954 + ], + [ + 6.9694181814032135, + 50.90440740490258 + ], + [ + 6.969462922480597, + 50.904416293050474 + ], + [ + 6.969474286812166, + 50.90441862500152 + ], + [ + 6.969781095512977, + 50.90447100106514 + ], + [ + 6.969776616989291, + 50.90448128581331 + ], + [ + 6.969685139076415, + 50.90469024018667 + ], + [ + 6.970115409314755, + 50.90478240035154 + ], + [ + 6.970168029212508, + 50.90479005280721 + ], + [ + 6.970234461732275, + 50.90480559109551 + ], + [ + 6.970228034611326, + 50.90481787007186 + ], + [ + 6.9702184604311705, + 50.90483601852933 + ], + [ + 6.970208341636065, + 50.9048553401985 + ], + [ + 6.9701833284963985, + 50.90490364165959 + ], + [ + 6.970176028130953, + 50.90492177030132 + ], + [ + 6.9706639680334215, + 50.90501812331699 + ], + [ + 6.9711401553509695, + 50.90510943490564 + ], + [ + 6.971157560723466, + 50.905112718924386 + ], + [ + 6.971296740151576, + 50.90481886645974 + ], + [ + 6.971309321739488, + 50.90479493951421 + ], + [ + 6.971316407575258, + 50.90477967339803 + ] + ], + [ + [ + 6.971546271220789, + 50.904827421824955 + ], + [ + 6.971546285497277, + 50.90482738789666 + ], + [ + 6.971546329591805, + 50.90482728973126 + ], + [ + 6.971546532992698, + 50.9048274533561 + ], + [ + 6.971546568657712, + 50.90482748365552 + ], + [ + 6.971546446018766, + 50.90482745814009 + ], + [ + 6.971546271220789, + 50.904827421824955 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Marienburg", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "202", + "Population_rel": 0.006670710635638396, + "Population_abs": 7258 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.848662351207252, + 51.084446701175594 + ], + [ + 6.848725583012786, + 51.08419889168444 + ], + [ + 6.848841000566533, + 51.08422038969369 + ], + [ + 6.848947286840297, + 51.0842405305399 + ], + [ + 6.849064174488887, + 51.08426263188376 + ], + [ + 6.849730934700439, + 51.08437284659208 + ], + [ + 6.850276338646931, + 51.08446307872358 + ], + [ + 6.850497054778403, + 51.08449959072581 + ], + [ + 6.850546045294764, + 51.08450750872561 + ], + [ + 6.850645323034423, + 51.08452395849974 + ], + [ + 6.853257265158977, + 51.0841766176191 + ], + [ + 6.853241947187778, + 51.08412115989483 + ], + [ + 6.853224077924147, + 51.08405989753462 + ], + [ + 6.853199318366958, + 51.08397379661027 + ], + [ + 6.853190814478106, + 51.0839432848613 + ], + [ + 6.853161507340207, + 51.0838334064888 + ], + [ + 6.8531387019430445, + 51.08374865003033 + ], + [ + 6.853019261614404, + 51.08319157602178 + ], + [ + 6.853012792556103, + 51.08313664777445 + ], + [ + 6.852963312013727, + 51.08271899587897 + ], + [ + 6.852952849723649, + 51.082630945110836 + ], + [ + 6.852939731905511, + 51.082056200978336 + ], + [ + 6.852941937453163, + 51.08200395033307 + ], + [ + 6.8529772029546825, + 51.081524176404685 + ], + [ + 6.853011529749751, + 51.081287860856285 + ], + [ + 6.853050583073539, + 51.08105235972037 + ], + [ + 6.853161539303569, + 51.0805833621154 + ], + [ + 6.853171088104338, + 51.08054923376636 + ], + [ + 6.853184190258001, + 51.080503211771955 + ], + [ + 6.853197840965319, + 51.080456813124435 + ], + [ + 6.85358701470009, + 51.07943965684286 + ], + [ + 6.854131991677811, + 51.07846351711691 + ], + [ + 6.854737665366048, + 51.0776516169635 + ], + [ + 6.85483296254483, + 51.077528258632086 + ], + [ + 6.854886870013867, + 51.077460700030436 + ], + [ + 6.855026656083863, + 51.077304602722286 + ], + [ + 6.855176929436897, + 51.077138187700186 + ], + [ + 6.855314406584925, + 51.07699640881822 + ], + [ + 6.855463833154819, + 51.076844307558346 + ], + [ + 6.855506236500243, + 51.07680125044404 + ], + [ + 6.855619096964008, + 51.076694697460816 + ], + [ + 6.855777264476977, + 51.07654618101376 + ], + [ + 6.855844871522203, + 51.07648305273348 + ], + [ + 6.855870191955094, + 51.076460221849885 + ], + [ + 6.855895501241861, + 51.0764374770959 + ], + [ + 6.855921081351804, + 51.07641471032461 + ], + [ + 6.855945942470887, + 51.07639270291463 + ], + [ + 6.855970934620761, + 51.07637076355767 + ], + [ + 6.855995957990491, + 51.076348796887764 + ], + [ + 6.856170435147649, + 51.0762077327548 + ], + [ + 6.856345035119369, + 51.07606682980655 + ], + [ + 6.856521029071155, + 51.0759264468252 + ], + [ + 6.856698219720468, + 51.07578674387137 + ], + [ + 6.856863949603146, + 51.07565677029681 + ], + [ + 6.857069752557611, + 51.07551688014845 + ], + [ + 6.857263258057129, + 51.07538613378199 + ], + [ + 6.8574573381932185, + 51.07525556401907 + ], + [ + 6.857652419927147, + 51.075125694023924 + ], + [ + 6.857795110954164, + 51.0750304657284 + ], + [ + 6.8578510411723546, + 51.07499829441006 + ], + [ + 6.8580608718260825, + 51.074877955836556 + ], + [ + 6.858271606573508, + 51.074757955436176 + ], + [ + 6.858482487385955, + 51.07463841601607 + ], + [ + 6.8586943310669755, + 51.07451945687037 + ], + [ + 6.858821190200107, + 51.0744480349426 + ], + [ + 6.858858909495193, + 51.07442848577722 + ], + [ + 6.858947816244334, + 51.07438270453938 + ], + [ + 6.859188020347304, + 51.07426812514758 + ], + [ + 6.859414521661492, + 51.074160183423245 + ], + [ + 6.859642260133833, + 51.07405362287396 + ], + [ + 6.859869868635809, + 51.07394673123498 + ], + [ + 6.859926029580465, + 51.07392054397262 + ], + [ + 6.860105759494575, + 51.073847594108464 + ], + [ + 6.860344120978806, + 51.07375055051536 + ], + [ + 6.8605832988669535, + 51.073654262469184 + ], + [ + 6.860823242286579, + 51.073558595027436 + ], + [ + 6.860941671808759, + 51.07351142720608 + ], + [ + 6.86106756998243, + 51.07346810228302 + ], + [ + 6.861316892381494, + 51.07338236458246 + ], + [ + 6.861566529757111, + 51.07329748472144 + ], + [ + 6.86181695482455, + 51.07321330406504 + ], + [ + 6.862026273878005, + 51.073143452314255 + ], + [ + 6.862074436273032, + 51.07312857925349 + ], + [ + 6.862110770963163, + 51.07311745869383 + ], + [ + 6.862370379345428, + 51.073045319260565 + ], + [ + 6.862629622562755, + 51.07297300079538 + ], + [ + 6.8628900711610274, + 51.0729014277975 + ], + [ + 6.8631506468789185, + 51.072830610219704 + ], + [ + 6.863244764769128, + 51.072805292670765 + ], + [ + 6.863415756515162, + 51.0727671814481 + ], + [ + 6.863683505368868, + 51.072707834903646 + ], + [ + 6.863951410804048, + 51.07264891691278 + ], + [ + 6.864267680941143, + 51.07257983445272 + ], + [ + 6.86440883005611, + 51.072549707751655 + ], + [ + 6.86453010078812, + 51.07252837588084 + ], + [ + 6.864661069135709, + 51.0725054547394 + ], + [ + 6.864763197045328, + 51.072488072692614 + ], + [ + 6.865060018282767, + 51.07243832080407 + ], + [ + 6.865312057740533, + 51.07239654770398 + ], + [ + 6.865601762885934, + 51.0723483777426 + ], + [ + 6.865897779288802, + 51.0723060252359 + ], + [ + 6.86615545535665, + 51.07226910733701 + ], + [ + 6.866737440948301, + 51.072185838716656 + ], + [ + 6.866848663962835, + 51.07216987731824 + ], + [ + 6.870874734972443, + 51.071593349039595 + ], + [ + 6.874191313347739, + 51.07111833053206 + ], + [ + 6.874302518035401, + 51.07110243637827 + ], + [ + 6.875261681921188, + 51.070965035293575 + ], + [ + 6.8755300277078835, + 51.070924499071246 + ], + [ + 6.876776724115848, + 51.070735098737835 + ], + [ + 6.876911877130654, + 51.0707144092359 + ], + [ + 6.877013186520597, + 51.070698782402495 + ], + [ + 6.877279526736656, + 51.07065418376315 + ], + [ + 6.877427447051923, + 51.07062933938244 + ], + [ + 6.878017365229198, + 51.07053039744748 + ], + [ + 6.878493274724655, + 51.07044983699093 + ], + [ + 6.878753734797559, + 51.07040546281029 + ], + [ + 6.878949705212212, + 51.07036972955234 + ], + [ + 6.879252438384167, + 51.07031397923289 + ], + [ + 6.880482556382689, + 51.07008609732061 + ], + [ + 6.880586529621971, + 51.07006594153506 + ], + [ + 6.880765221848048, + 51.070030208428136 + ], + [ + 6.88154850997138, + 51.06987354017348 + ], + [ + 6.881616807781, + 51.06985980570967 + ], + [ + 6.881721797742174, + 51.06983858810976 + ], + [ + 6.88253778153422, + 51.06966630475927 + ], + [ + 6.882778515492687, + 51.069615429590954 + ], + [ + 6.882851151130813, + 51.069599932002156 + ], + [ + 6.883974200746979, + 51.069349754990554 + ], + [ + 6.884075244241181, + 51.06932647531722 + ], + [ + 6.885284293754565, + 51.06904116955102 + ], + [ + 6.8858688537567385, + 51.06889663624683 + ], + [ + 6.886462835012885, + 51.06874835190349 + ], + [ + 6.88765316061396, + 51.06843712576558 + ], + [ + 6.888408953118241, + 51.06822783143676 + ], + [ + 6.889172193401084, + 51.06801538320575 + ], + [ + 6.889223926739273, + 51.06800089629923 + ], + [ + 6.889282818675972, + 51.067983237105125 + ], + [ + 6.889924302765338, + 51.067787623242495 + ], + [ + 6.89057110469831, + 51.067589768029 + ], + [ + 6.8906751097896315, + 51.067557984065814 + ], + [ + 6.890747131519118, + 51.06753582868798 + ], + [ + 6.890797569744155, + 51.067520230375955 + ], + [ + 6.890869025625012, + 51.067496484521136 + ], + [ + 6.891414550844899, + 51.06731438636655 + ], + [ + 6.892332312867725, + 51.067007315331956 + ], + [ + 6.892402694968266, + 51.06698124949607 + ], + [ + 6.892473101725953, + 51.0669551732705 + ], + [ + 6.892559367053311, + 51.06692305328378 + ], + [ + 6.892623188039043, + 51.06689920103854 + ], + [ + 6.8927815658849125, + 51.06683901171911 + ], + [ + 6.892924087414836, + 51.066784964928196 + ], + [ + 6.893065518159267, + 51.06672956543418 + ], + [ + 6.891715879534362, + 51.06524551751638 + ], + [ + 6.891275220282972, + 51.064531967735654 + ], + [ + 6.8913949112548725, + 51.06450237920546 + ], + [ + 6.891324329754239, + 51.064489254479255 + ], + [ + 6.890618433969737, + 51.063343495861574 + ], + [ + 6.890560126821782, + 51.06324892605003 + ], + [ + 6.889867991174903, + 51.062126878981694 + ], + [ + 6.889895086837823, + 51.06207444590312 + ], + [ + 6.890784267086444, + 51.06174235353126 + ], + [ + 6.890584482242514, + 51.06154521813316 + ], + [ + 6.890421458478891, + 51.061605879050205 + ], + [ + 6.890392321317037, + 51.061574189867905 + ], + [ + 6.889073408217788, + 51.059944715841496 + ], + [ + 6.889535770566046, + 51.05987692333123 + ], + [ + 6.889511887778487, + 51.059847350599995 + ], + [ + 6.888857294605043, + 51.05893158199823 + ], + [ + 6.8888011865837475, + 51.05885452295989 + ], + [ + 6.888213189363111, + 51.05804791130963 + ], + [ + 6.888051089959288, + 51.05782099891066 + ], + [ + 6.888032156413882, + 51.0577893667248 + ], + [ + 6.88745449482054, + 51.05680212502694 + ], + [ + 6.887215205227093, + 51.05675998597238 + ], + [ + 6.887167267480887, + 51.05669958355466 + ], + [ + 6.887111732590883, + 51.056629800911665 + ], + [ + 6.88678073077277, + 51.056214410898335 + ], + [ + 6.886656512772286, + 51.056058404329036 + ], + [ + 6.886377419570071, + 51.055724330446026 + ], + [ + 6.886424703780642, + 51.05565349710001 + ], + [ + 6.885209453943927, + 51.05472416153489 + ], + [ + 6.8854800686657125, + 51.054487675015956 + ], + [ + 6.8853903616176, + 51.054418943161885 + ], + [ + 6.885312312984689, + 51.054359144339905 + ], + [ + 6.885237894206807, + 51.05421129811677 + ], + [ + 6.885224112977713, + 51.05418416560844 + ], + [ + 6.88478474723791, + 51.053708734849785 + ], + [ + 6.884582985334274, + 51.05341964526873 + ], + [ + 6.884448534818139, + 51.053167441379074 + ], + [ + 6.884386808073137, + 51.05305245352028 + ], + [ + 6.884339163468265, + 51.0529663736592 + ], + [ + 6.883591202111957, + 51.05191491596576 + ], + [ + 6.883528193600395, + 51.051826490672596 + ], + [ + 6.883289916723673, + 51.051491292000485 + ], + [ + 6.88315972441053, + 51.051222423643075 + ], + [ + 6.8831122180575655, + 51.051124171859286 + ], + [ + 6.88309824831015, + 51.05109452371674 + ], + [ + 6.8830781495486475, + 51.051050089491326 + ], + [ + 6.882850448294751, + 51.050618266928446 + ], + [ + 6.8828254405640354, + 51.050503125124045 + ], + [ + 6.8827716051844545, + 51.050237005198476 + ], + [ + 6.882642786013058, + 51.05010745737387 + ], + [ + 6.8825054337757265, + 51.05003163873443 + ], + [ + 6.88220757865021, + 51.04960726535657 + ], + [ + 6.8821669041163975, + 51.04954936853275 + ], + [ + 6.881959480241028, + 51.0492043600332 + ], + [ + 6.881714736676608, + 51.04889527437215 + ], + [ + 6.881507173290102, + 51.048508781680525 + ], + [ + 6.881108289752155, + 51.04795239919457 + ], + [ + 6.88042692894364, + 51.047148608178176 + ], + [ + 6.880400113712849, + 51.047118247259775 + ], + [ + 6.880121089845559, + 51.04685022733386 + ], + [ + 6.879978867238615, + 51.04665210075111 + ], + [ + 6.879614682529818, + 51.0461641289851 + ], + [ + 6.879354833429943, + 51.045891468127415 + ], + [ + 6.879141170601473, + 51.04561036901336 + ], + [ + 6.878910179314988, + 51.04534027705721 + ], + [ + 6.878696158634209, + 51.04507005657125 + ], + [ + 6.878261064314431, + 51.044684100862185 + ], + [ + 6.877619141456553, + 51.04412836569417 + ], + [ + 6.876883947241705, + 51.04368416277436 + ], + [ + 6.876540758827021, + 51.043542463686016 + ], + [ + 6.876320340576555, + 51.04346092396756 + ], + [ + 6.876267193839045, + 51.04344042256909 + ], + [ + 6.876176867014171, + 51.043406761945214 + ], + [ + 6.87576082814738, + 51.0432088402255 + ], + [ + 6.8754834928967234, + 51.04307684704084 + ], + [ + 6.8753943013926095, + 51.043035176851305 + ], + [ + 6.874504532956327, + 51.042634007283176 + ], + [ + 6.873843184188709, + 51.04253468328027 + ], + [ + 6.873601348297802, + 51.04247383884874 + ], + [ + 6.872741313202503, + 51.04246211083876 + ], + [ + 6.87096728280804, + 51.04240487927173 + ], + [ + 6.868571826672416, + 51.04244528225893 + ], + [ + 6.867555348739325, + 51.04253140226132 + ], + [ + 6.8665762128180665, + 51.0427009242561 + ], + [ + 6.8637477508765015, + 51.04307398126503 + ], + [ + 6.862870921780102, + 51.042980053856226 + ], + [ + 6.862495597337491, + 51.042878912105955 + ], + [ + 6.862971631565398, + 51.04317401412648 + ], + [ + 6.862980633674213, + 51.04324406285 + ], + [ + 6.862982289012345, + 51.04336378540502 + ], + [ + 6.862634358156542, + 51.043516923364194 + ], + [ + 6.862196715741936, + 51.04364609170963 + ], + [ + 6.861575673845307, + 51.04386623414441 + ], + [ + 6.861302450452874, + 51.04395769042691 + ], + [ + 6.860935221195325, + 51.04408570671073 + ], + [ + 6.860728760549809, + 51.0441327129638 + ], + [ + 6.860481117603251, + 51.04421202384127 + ], + [ + 6.860261156756408, + 51.04428465792177 + ], + [ + 6.859400957592342, + 51.044666196203785 + ], + [ + 6.858176336556196, + 51.04528295409851 + ], + [ + 6.85763527019466, + 51.04572020293482 + ], + [ + 6.857400869578674, + 51.045945842737225 + ], + [ + 6.856995504358685, + 51.04617237709387 + ], + [ + 6.856591435449453, + 51.04656987251089 + ], + [ + 6.856097342747692, + 51.04701180387575 + ], + [ + 6.855661262127662, + 51.04751470351531 + ], + [ + 6.855624299270454, + 51.04756024210547 + ], + [ + 6.855359093780673, + 51.047964124219746 + ], + [ + 6.8550235340189145, + 51.04842826091532 + ], + [ + 6.854968457924544, + 51.048527274495434 + ], + [ + 6.854604601762803, + 51.04905049558055 + ], + [ + 6.854401966871002, + 51.04951608480244 + ], + [ + 6.85429029977672, + 51.04951591363765 + ], + [ + 6.854104635767036, + 51.049439245908665 + ], + [ + 6.8538145234337815, + 51.0499486214341 + ], + [ + 6.853731135319135, + 51.050098179895755 + ], + [ + 6.853678342524054, + 51.05020528961387 + ], + [ + 6.853739901340278, + 51.050241312639045 + ], + [ + 6.853689221386201, + 51.05044007231895 + ], + [ + 6.8536857591506815, + 51.05047668248975 + ], + [ + 6.853668300416735, + 51.050659558848544 + ], + [ + 6.853664194643679, + 51.050692218836076 + ], + [ + 6.853654860203723, + 51.05078172843073 + ], + [ + 6.8535698342120694, + 51.051214456065644 + ], + [ + 6.853557661269409, + 51.05127764818009 + ], + [ + 6.853552234753386, + 51.0514595368052 + ], + [ + 6.853632014805572, + 51.051958837464426 + ], + [ + 6.853643369492682, + 51.05215750280446 + ], + [ + 6.853713074018349, + 51.05260518934994 + ], + [ + 6.853724932493537, + 51.05267611596563 + ], + [ + 6.853742717982301, + 51.052735853528425 + ], + [ + 6.8537866638146445, + 51.052884212085786 + ], + [ + 6.8537980462822805, + 51.05292143311005 + ], + [ + 6.853741437483545, + 51.052922116391 + ], + [ + 6.853608687129556, + 51.05289270360524 + ], + [ + 6.853206137728471, + 51.052803507563816 + ], + [ + 6.8530478945422635, + 51.05286138390004 + ], + [ + 6.85288845409677, + 51.052924033482114 + ], + [ + 6.852813698326294, + 51.05290732978243 + ], + [ + 6.852749914703193, + 51.053021947407046 + ], + [ + 6.85267610193606, + 51.05304882482257 + ], + [ + 6.852148127902244, + 51.05293194307088 + ], + [ + 6.85209214793021, + 51.052896992225335 + ], + [ + 6.85189548086956, + 51.05277932139407 + ], + [ + 6.8515874107551475, + 51.052571446839494 + ], + [ + 6.851513944013028, + 51.05249945449897 + ], + [ + 6.850878602798882, + 51.053689384084294 + ], + [ + 6.850460777022871, + 51.054413894015894 + ], + [ + 6.850284225223979, + 51.05468537557104 + ], + [ + 6.850255470166216, + 51.05473511518482 + ], + [ + 6.850223856983456, + 51.05479233535696 + ], + [ + 6.850158178919352, + 51.05491308733693 + ], + [ + 6.849707031256311, + 51.05573779314286 + ], + [ + 6.849569157581057, + 51.05598986108539 + ], + [ + 6.849526932113041, + 51.056067384269355 + ], + [ + 6.849474826674459, + 51.05616619363504 + ], + [ + 6.849376813930083, + 51.056367452833214 + ], + [ + 6.849332269731811, + 51.056458565973095 + ], + [ + 6.849306297233238, + 51.05651241994516 + ], + [ + 6.849103042093245, + 51.05689413547 + ], + [ + 6.848681084494981, + 51.05763241873623 + ], + [ + 6.8485554564342, + 51.05785266537744 + ], + [ + 6.8484227296541675, + 51.058098221742725 + ], + [ + 6.848193593218125, + 51.05850529627778 + ], + [ + 6.8480782548941495, + 51.058553538729925 + ], + [ + 6.848014270226245, + 51.058531802343026 + ], + [ + 6.847870340133237, + 51.05848319053979 + ], + [ + 6.8475247622123465, + 51.05836794178392 + ], + [ + 6.846571253417631, + 51.058127027159614 + ], + [ + 6.84639599937888, + 51.058082723373666 + ], + [ + 6.846046353582127, + 51.05799437643122 + ], + [ + 6.845015584720047, + 51.05770052465301 + ], + [ + 6.843801676451629, + 51.05731980404693 + ], + [ + 6.842771275829329, + 51.05713883212568 + ], + [ + 6.841212881873666, + 51.05686502291701 + ], + [ + 6.840446549669043, + 51.05663080070712 + ], + [ + 6.839035585837729, + 51.05601323802582 + ], + [ + 6.837506667404584, + 51.05534390033159 + ], + [ + 6.83746593966207, + 51.055325962117514 + ], + [ + 6.835358227385061, + 51.054338594153464 + ], + [ + 6.8346398054612365, + 51.05413149801877 + ], + [ + 6.834560381388242, + 51.05410869454722 + ], + [ + 6.834543296204255, + 51.0541341656843 + ], + [ + 6.8340893908659535, + 51.054138026429406 + ], + [ + 6.833299829259736, + 51.05930133182523 + ], + [ + 6.833264550512435, + 51.0595318215622 + ], + [ + 6.833466341902363, + 51.05964445998192 + ], + [ + 6.833519449564339, + 51.059673189589894 + ], + [ + 6.833604861056709, + 51.05972090318832 + ], + [ + 6.8337263249498665, + 51.05978978823587 + ], + [ + 6.833707157560455, + 51.059839075669885 + ], + [ + 6.833688939767675, + 51.05988538578774 + ], + [ + 6.833657001800178, + 51.05996677256842 + ], + [ + 6.8331986243114295, + 51.061132228058376 + ], + [ + 6.833063368241567, + 51.06148006491611 + ], + [ + 6.833040892661354, + 51.06153732500048 + ], + [ + 6.833030041908835, + 51.061565032265385 + ], + [ + 6.833016702252599, + 51.06159912210154 + ], + [ + 6.832988142830442, + 51.061672596595734 + ], + [ + 6.83250680655279, + 51.06289870453184 + ], + [ + 6.832379818394393, + 51.06322395595198 + ], + [ + 6.8321905230675775, + 51.06370987756105 + ], + [ + 6.832177990848971, + 51.06374199376137 + ], + [ + 6.832099652919526, + 51.063943088511046 + ], + [ + 6.832034985766736, + 51.064109225438976 + ], + [ + 6.8320217526105465, + 51.06414308059856 + ], + [ + 6.832010893891566, + 51.06417065630937 + ], + [ + 6.831989610170129, + 51.064225413755004 + ], + [ + 6.831958207219359, + 51.06430587823223 + ], + [ + 6.831594018951601, + 51.065240278924215 + ], + [ + 6.831499535414661, + 51.06548283878844 + ], + [ + 6.831366537227032, + 51.06578932180009 + ], + [ + 6.831329076932398, + 51.065819170184 + ], + [ + 6.8313375847153806, + 51.06584586954395 + ], + [ + 6.83135333309019, + 51.06587126429264 + ], + [ + 6.831408398655841, + 51.0658663252678 + ], + [ + 6.831411130193468, + 51.06592388918382 + ], + [ + 6.831292024208731, + 51.066028953243205 + ], + [ + 6.831227532872543, + 51.06608593136031 + ], + [ + 6.831014113962757, + 51.06627409962071 + ], + [ + 6.830932721809012, + 51.06634615933805 + ], + [ + 6.830865647792291, + 51.06640551132963 + ], + [ + 6.83071786279075, + 51.066536104476796 + ], + [ + 6.830689567642383, + 51.06656110880267 + ], + [ + 6.830625486745182, + 51.066617793821386 + ], + [ + 6.830292299879398, + 51.06691176004123 + ], + [ + 6.830236479110994, + 51.0669610731665 + ], + [ + 6.8302045728242105, + 51.06698929753292 + ], + [ + 6.830168147551963, + 51.06703402693905 + ], + [ + 6.8301508498924735, + 51.06705726033755 + ], + [ + 6.829254240234266, + 51.068263665204256 + ], + [ + 6.8291455218518005, + 51.068465112714115 + ], + [ + 6.828928219599419, + 51.0688676942493 + ], + [ + 6.828667321071388, + 51.06935094318702 + ], + [ + 6.82851703166247, + 51.06962860316211 + ], + [ + 6.828378640530711, + 51.06983572847768 + ], + [ + 6.828241789801421, + 51.070039165146326 + ], + [ + 6.827846695830819, + 51.07062661346346 + ], + [ + 6.827826188966471, + 51.070657080790674 + ], + [ + 6.827796679038684, + 51.07070052780304 + ], + [ + 6.8277255293208094, + 51.07080525574333 + ], + [ + 6.827680821310228, + 51.07087148374212 + ], + [ + 6.8274216844265245, + 51.07125777590717 + ], + [ + 6.827255175138967, + 51.07150607209389 + ], + [ + 6.827175190124446, + 51.071621783159 + ], + [ + 6.827137930813545, + 51.0716801495273 + ], + [ + 6.826837287605016, + 51.072072467831305 + ], + [ + 6.826756200616041, + 51.07217844487302 + ], + [ + 6.826645196686866, + 51.0723235835882 + ], + [ + 6.826586018325905, + 51.072419643190216 + ], + [ + 6.826559540671133, + 51.07246251943083 + ], + [ + 6.826324760411768, + 51.07284416098107 + ], + [ + 6.826250859284146, + 51.072964196366584 + ], + [ + 6.826174803060282, + 51.073085186320846 + ], + [ + 6.826029526243033, + 51.07324621554979 + ], + [ + 6.82598372639445, + 51.07329479215415 + ], + [ + 6.825893181239269, + 51.07336612500267 + ], + [ + 6.825802563398016, + 51.07343766238632 + ], + [ + 6.825591995473921, + 51.07360223478161 + ], + [ + 6.82549578618464, + 51.073677487524165 + ], + [ + 6.824960056558635, + 51.07409778816457 + ], + [ + 6.824635129080408, + 51.07435260126245 + ], + [ + 6.824534652279174, + 51.07440128719783 + ], + [ + 6.824638825508532, + 51.07443367134347 + ], + [ + 6.8249175348148166, + 51.0745202800565 + ], + [ + 6.825086457320953, + 51.07460187945507 + ], + [ + 6.825127855473627, + 51.07462550399244 + ], + [ + 6.825271056173637, + 51.07472061053696 + ], + [ + 6.8253771687658285, + 51.07481587479124 + ], + [ + 6.825423064610432, + 51.0748568158367 + ], + [ + 6.82548176933021, + 51.07490938580689 + ], + [ + 6.825642491498273, + 51.07505327173609 + ], + [ + 6.825734608899057, + 51.07507341940633 + ], + [ + 6.825840432430606, + 51.075096688331854 + ], + [ + 6.826682067451951, + 51.07528098585379 + ], + [ + 6.82707619493366, + 51.075367233912445 + ], + [ + 6.827217446726939, + 51.075398215081506 + ], + [ + 6.827337605959826, + 51.0754245174782 + ], + [ + 6.828528456465547, + 51.07568422583715 + ], + [ + 6.828739148170233, + 51.07573073623868 + ], + [ + 6.829070675599316, + 51.07580406127583 + ], + [ + 6.829394630572845, + 51.075874971082804 + ], + [ + 6.830199197778635, + 51.07605110137169 + ], + [ + 6.830327516214587, + 51.07607924299719 + ], + [ + 6.830993752117384, + 51.076225266649196 + ], + [ + 6.831231482167928, + 51.076277322586925 + ], + [ + 6.83130190642198, + 51.076292771392225 + ], + [ + 6.831420071528421, + 51.076318675493596 + ], + [ + 6.835936548547443, + 51.07730725684036 + ], + [ + 6.8360181853306194, + 51.077325202931085 + ], + [ + 6.836343004411615, + 51.07739627749433 + ], + [ + 6.837492188097991, + 51.07764771407179 + ], + [ + 6.837585574103589, + 51.07766818428121 + ], + [ + 6.837645336015291, + 51.077681245544376 + ], + [ + 6.837899082066131, + 51.07773695682129 + ], + [ + 6.837868006361527, + 51.07779479606884 + ], + [ + 6.837823603273705, + 51.077875650074894 + ], + [ + 6.837807094984607, + 51.077905247847426 + ], + [ + 6.837702927779141, + 51.0780943164594 + ], + [ + 6.837112075108266, + 51.079164611579294 + ], + [ + 6.836610147290473, + 51.080073217759356 + ], + [ + 6.836833141942163, + 51.08012213468493 + ], + [ + 6.837227762677157, + 51.080208138616534 + ], + [ + 6.837274026311521, + 51.080219092112706 + ], + [ + 6.837544695782192, + 51.08027834061512 + ], + [ + 6.838995596885952, + 51.08059587072647 + ], + [ + 6.841640005905173, + 51.08117453826968 + ], + [ + 6.844063841421544, + 51.08170566897734 + ], + [ + 6.844180456070503, + 51.08173146035633 + ], + [ + 6.844152795933993, + 51.081785197434435 + ], + [ + 6.843861294008224, + 51.08231704329583 + ], + [ + 6.843722219701481, + 51.08256901984235 + ], + [ + 6.843646411575813, + 51.082706518056284 + ], + [ + 6.843610945175099, + 51.08277063719672 + ], + [ + 6.843477980304514, + 51.08301178893984 + ], + [ + 6.843372379734838, + 51.08320327053726 + ], + [ + 6.843295255775891, + 51.08334313296919 + ], + [ + 6.843184669884935, + 51.08354355477217 + ], + [ + 6.843131085551316, + 51.0836403175042 + ], + [ + 6.843061502359851, + 51.08376695071242 + ], + [ + 6.843139509854233, + 51.083784512647 + ], + [ + 6.84349065015036, + 51.08386164949351 + ], + [ + 6.844022151395964, + 51.083977950199454 + ], + [ + 6.844741571450904, + 51.084135408874985 + ], + [ + 6.844881065110999, + 51.08416595643078 + ], + [ + 6.844966003423688, + 51.084184536230076 + ], + [ + 6.845118413759112, + 51.08421810615135 + ], + [ + 6.845821093232806, + 51.08437187318939 + ], + [ + 6.846953136583014, + 51.0846199571627 + ], + [ + 6.847265885441714, + 51.08468844638034 + ], + [ + 6.84745311110308, + 51.084729447521 + ], + [ + 6.8484949766676415, + 51.08495742183415 + ], + [ + 6.848571760722168, + 51.084962755832 + ], + [ + 6.848576464774795, + 51.084933085875306 + ], + [ + 6.8485834161394115, + 51.08488419098505 + ], + [ + 6.8486397422081415, + 51.08456804078452 + ], + [ + 6.848662351207252, + 51.084446701175594 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Worringen", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "612", + "Population_rel": 0.00940222785926988, + "Population_abs": 10230 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.914875435436402, + 51.03564778930263 + ], + [ + 6.914966285297409, + 51.035446889227515 + ], + [ + 6.914742239383649, + 51.03547219608678 + ], + [ + 6.914805808411777, + 51.03532904687581 + ], + [ + 6.914838151693657, + 51.03526055897114 + ], + [ + 6.915142802115532, + 51.03470983492049 + ], + [ + 6.915331394586474, + 51.03437602813044 + ], + [ + 6.915603045718562, + 51.03386592216449 + ], + [ + 6.9156298755554655, + 51.033816720656816 + ], + [ + 6.915855022988617, + 51.03337053168985 + ], + [ + 6.915883978602779, + 51.03329845123235 + ], + [ + 6.915966482242142, + 51.03309307009937 + ], + [ + 6.916038609101117, + 51.0329135225313 + ], + [ + 6.916052559480258, + 51.032889119697906 + ], + [ + 6.916081012768364, + 51.0328577851294 + ], + [ + 6.916238519361807, + 51.03284336919807 + ], + [ + 6.916477371518139, + 51.03242890769997 + ], + [ + 6.916523435449394, + 51.0323489749474 + ], + [ + 6.916556777900573, + 51.03223257341915 + ], + [ + 6.916671758308183, + 51.031832280582975 + ], + [ + 6.916751785764187, + 51.03155308128929 + ], + [ + 6.916962120405442, + 51.03081989366834 + ], + [ + 6.9169805250460685, + 51.03075583602668 + ], + [ + 6.916978846779716, + 51.030692313343266 + ], + [ + 6.9171618078138115, + 51.03055844892058 + ], + [ + 6.917304417762204, + 51.030453054723765 + ], + [ + 6.917504750209202, + 51.03036878041105 + ], + [ + 6.917602604640237, + 51.03032144808175 + ], + [ + 6.918014441427433, + 51.03011244933806 + ], + [ + 6.919274625037668, + 51.029472666850374 + ], + [ + 6.919806951384699, + 51.029165450102376 + ], + [ + 6.920708508190946, + 51.028701876897976 + ], + [ + 6.921372165252829, + 51.0283834606137 + ], + [ + 6.921957582279816, + 51.02813820015424 + ], + [ + 6.922454305124126, + 51.02794910064949 + ], + [ + 6.9231797311627865, + 51.0277130666934 + ], + [ + 6.924036143763364, + 51.027462507425824 + ], + [ + 6.924553630315609, + 51.027336248108355 + ], + [ + 6.928164936841765, + 51.02645731659644 + ], + [ + 6.92916410130877, + 51.02624118207393 + ], + [ + 6.9300641991331675, + 51.02608245932784 + ], + [ + 6.930397555940401, + 51.026016250194374 + ], + [ + 6.930912460760874, + 51.0259334915069 + ], + [ + 6.931349903573085, + 51.02587615905447 + ], + [ + 6.932076670491773, + 51.025781817259315 + ], + [ + 6.93388675026975, + 51.02561786596373 + ], + [ + 6.936718873916318, + 51.025400252579324 + ], + [ + 6.93745750616219, + 51.02532982757218 + ], + [ + 6.93804979854863, + 51.02528282271446 + ], + [ + 6.939192624420027, + 51.02511884300319 + ], + [ + 6.9398357031613855, + 51.02498269753421 + ], + [ + 6.94008277181249, + 51.0249219189842 + ], + [ + 6.940253532024437, + 51.02487973425069 + ], + [ + 6.940338767956161, + 51.02485864239655 + ], + [ + 6.940676070951994, + 51.02476315695625 + ], + [ + 6.940840228972042, + 51.02471176507403 + ], + [ + 6.941046026484283, + 51.024647272859625 + ], + [ + 6.941540797876142, + 51.02447302921305 + ], + [ + 6.94166904840734, + 51.02442228500013 + ], + [ + 6.941909289995242, + 51.024327399731064 + ], + [ + 6.942200752395011, + 51.024206930859286 + ], + [ + 6.942150179328304, + 51.02418010128391 + ], + [ + 6.942343069934677, + 51.02409081051565 + ], + [ + 6.94247901923776, + 51.02402625005799 + ], + [ + 6.942654336712412, + 51.02393982850546 + ], + [ + 6.942975292375569, + 51.02377207492088 + ], + [ + 6.941736849098788, + 51.023167735749865 + ], + [ + 6.939447864001142, + 51.0220506733329 + ], + [ + 6.938634206466893, + 51.02168533451037 + ], + [ + 6.938168152621084, + 51.02147396872835 + ], + [ + 6.936413080655664, + 51.02073080777713 + ], + [ + 6.935351899048231, + 51.02027996570854 + ], + [ + 6.932999319541178, + 51.01933739340074 + ], + [ + 6.928132039915825, + 51.017419418323435 + ], + [ + 6.927162452961635, + 51.01704445101877 + ], + [ + 6.925670673934481, + 51.01640951533327 + ], + [ + 6.924231456852024, + 51.01574978410152 + ], + [ + 6.922920580336964, + 51.015121021462775 + ], + [ + 6.9226741357569574, + 51.014982019117326 + ], + [ + 6.922417960894913, + 51.014869700167715 + ], + [ + 6.922284784753018, + 51.01499444918079 + ], + [ + 6.922159557273889, + 51.01511175235696 + ], + [ + 6.921988873345298, + 51.0152716692062 + ], + [ + 6.92141596846503, + 51.01580924953162 + ], + [ + 6.92108230849131, + 51.01612308701937 + ], + [ + 6.92079473535197, + 51.01639691884066 + ], + [ + 6.9205843695091165, + 51.01659004613961 + ], + [ + 6.920183598280295, + 51.016883465859955 + ], + [ + 6.919326733644565, + 51.01746255519392 + ], + [ + 6.919060991703821, + 51.017695399744404 + ], + [ + 6.918687487610267, + 51.01808945767784 + ], + [ + 6.918632726156708, + 51.01814894746154 + ], + [ + 6.918597433820391, + 51.01818760847361 + ], + [ + 6.918489799953134, + 51.0183156521755 + ], + [ + 6.918455055584785, + 51.01835678088981 + ], + [ + 6.91776138252113, + 51.019180473708204 + ], + [ + 6.917181715490627, + 51.019871261953014 + ], + [ + 6.916459592441488, + 51.02073252006524 + ], + [ + 6.9163719870375155, + 51.02083604340761 + ], + [ + 6.916327415144976, + 51.02088853061563 + ], + [ + 6.915664649078826, + 51.0216679657175 + ], + [ + 6.915336785525795, + 51.02205590142715 + ], + [ + 6.914927535972962, + 51.02253805130658 + ], + [ + 6.914841038347675, + 51.022640217251656 + ], + [ + 6.914540988046387, + 51.02299368422525 + ], + [ + 6.91383407523268, + 51.02372733976206 + ], + [ + 6.913628098338776, + 51.02394094788781 + ], + [ + 6.913580350939859, + 51.02398690727059 + ], + [ + 6.913518228411535, + 51.02404649883837 + ], + [ + 6.912896190291157, + 51.024643104204905 + ], + [ + 6.91285629191237, + 51.024680556991626 + ], + [ + 6.912461697332219, + 51.02502235262981 + ], + [ + 6.912289167214849, + 51.0251716620878 + ], + [ + 6.912182788283832, + 51.025263688303546 + ], + [ + 6.9121299514642915, + 51.02530945090853 + ], + [ + 6.911499669873645, + 51.02585516001523 + ], + [ + 6.911363294860316, + 51.02597317341028 + ], + [ + 6.911235757296038, + 51.02609120707257 + ], + [ + 6.9104478118541035, + 51.026841403254096 + ], + [ + 6.91024212555496, + 51.02703742439758 + ], + [ + 6.909674380407878, + 51.02758335486602 + ], + [ + 6.909436810948822, + 51.02781164187379 + ], + [ + 6.9093021126850465, + 51.027940951113614 + ], + [ + 6.9092202235603635, + 51.02801971916808 + ], + [ + 6.908924728094934, + 51.02830382923006 + ], + [ + 6.908818810290887, + 51.02840551182042 + ], + [ + 6.908524984476666, + 51.02868780976345 + ], + [ + 6.908397939225912, + 51.02880997189625 + ], + [ + 6.9083579210122, + 51.02884830780011 + ], + [ + 6.9082874464762964, + 51.028918341654645 + ], + [ + 6.907796025925316, + 51.029396790189494 + ], + [ + 6.907291494756333, + 51.03008029027742 + ], + [ + 6.907020268770313, + 51.030455177507044 + ], + [ + 6.906934287886532, + 51.03057236911108 + ], + [ + 6.90677064954908, + 51.030544547776024 + ], + [ + 6.903859843022498, + 51.03019897187807 + ], + [ + 6.903685225705868, + 51.030178261071 + ], + [ + 6.903610917627719, + 51.030169462756874 + ], + [ + 6.9023135151673465, + 51.031225986141315 + ], + [ + 6.901768075521234, + 51.03167013951867 + ], + [ + 6.900987324468683, + 51.032305507364036 + ], + [ + 6.900393722644965, + 51.0327889620866 + ], + [ + 6.89989539067864, + 51.03319481470355 + ], + [ + 6.899863786702602, + 51.033219149206374 + ], + [ + 6.899889378003986, + 51.03327441514092 + ], + [ + 6.898725673772257, + 51.03414129966913 + ], + [ + 6.898132808107118, + 51.03458291217164 + ], + [ + 6.898059866711641, + 51.03463722851683 + ], + [ + 6.897692750702037, + 51.03446709959117 + ], + [ + 6.897662380510503, + 51.03449636807337 + ], + [ + 6.896928438482676, + 51.03535912105007 + ], + [ + 6.896745399940248, + 51.035574198312354 + ], + [ + 6.8961975371922035, + 51.036218340239465 + ], + [ + 6.8961262535978936, + 51.0362433540687 + ], + [ + 6.8960420789617745, + 51.03625757527061 + ], + [ + 6.8953517632114005, + 51.036982877187185 + ], + [ + 6.894010158591099, + 51.038336957720475 + ], + [ + 6.892190157770503, + 51.040649457854016 + ], + [ + 6.89151878153428, + 51.042542330858936 + ], + [ + 6.891495238260142, + 51.04260245066452 + ], + [ + 6.888760590383288, + 51.046465060907174 + ], + [ + 6.888757791935362, + 51.046520005931264 + ], + [ + 6.88366171708735, + 51.05183243227117 + ], + [ + 6.883591202111957, + 51.05191491596576 + ], + [ + 6.884339163468265, + 51.0529663736592 + ], + [ + 6.8843864287950804, + 51.05305172715635 + ], + [ + 6.884448534818139, + 51.053167441379074 + ], + [ + 6.884582985334274, + 51.05341964526873 + ], + [ + 6.88478474723791, + 51.053708734849785 + ], + [ + 6.885224112977713, + 51.05418416560844 + ], + [ + 6.885237894206807, + 51.05421129811677 + ], + [ + 6.885312312984689, + 51.054359144339905 + ], + [ + 6.8853903616176, + 51.054418943161885 + ], + [ + 6.8854800686657125, + 51.054487675015956 + ], + [ + 6.885209453943927, + 51.05472416153489 + ], + [ + 6.886424703780642, + 51.05565349710001 + ], + [ + 6.88698218436184, + 51.055441437344186 + ], + [ + 6.888212526205292, + 51.0549730141036 + ], + [ + 6.888979682680208, + 51.05468060489018 + ], + [ + 6.889628743091114, + 51.05443322770448 + ], + [ + 6.890575678322653, + 51.05407112094334 + ], + [ + 6.89139167239604, + 51.05376106516176 + ], + [ + 6.891558916108439, + 51.053698842302865 + ], + [ + 6.892909984428238, + 51.05317946879149 + ], + [ + 6.89702754855159, + 51.051595679188004 + ], + [ + 6.897183862393582, + 51.05155169046674 + ], + [ + 6.903582467054628, + 51.04910847315413 + ], + [ + 6.904789372141938, + 51.04864733659511 + ], + [ + 6.906972736829738, + 51.04781670782324 + ], + [ + 6.907068613113539, + 51.04774602810345 + ], + [ + 6.907339451035841, + 51.04767578695348 + ], + [ + 6.907449246030751, + 51.04763413331224 + ], + [ + 6.90760684075779, + 51.04757434101065 + ], + [ + 6.908054187497345, + 51.04740461895536 + ], + [ + 6.909098797771966, + 51.04700572009271 + ], + [ + 6.909102746345773, + 51.04696715302018 + ], + [ + 6.9091984412133405, + 51.04693105351557 + ], + [ + 6.907924744418925, + 51.046364219998765 + ], + [ + 6.906738967744257, + 51.04583642166132 + ], + [ + 6.9066535205836805, + 51.04579834210774 + ], + [ + 6.906089832316332, + 51.045543110438075 + ], + [ + 6.905982575151147, + 51.045490817088584 + ], + [ + 6.90534033176187, + 51.04517758183006 + ], + [ + 6.905234229067179, + 51.045125477560184 + ], + [ + 6.9063260207088835, + 51.04474196531913 + ], + [ + 6.905610951516855, + 51.04441573812353 + ], + [ + 6.905215445449333, + 51.044235770457135 + ], + [ + 6.904865440779348, + 51.04407820679209 + ], + [ + 6.9044276443918635, + 51.043878983360294 + ], + [ + 6.903806672937263, + 51.04359422802852 + ], + [ + 6.905419642682405, + 51.04244066452425 + ], + [ + 6.905701750263429, + 51.04223563768345 + ], + [ + 6.905881877983847, + 51.04220095466843 + ], + [ + 6.906701839898797, + 51.04203676629375 + ], + [ + 6.907161868834496, + 51.04184579814435 + ], + [ + 6.907743332052477, + 51.0413927433724 + ], + [ + 6.908174183542868, + 51.04106634611797 + ], + [ + 6.90933982328976, + 51.04018326828732 + ], + [ + 6.909666751871285, + 51.03998447167802 + ], + [ + 6.910270135410712, + 51.03967785508375 + ], + [ + 6.9109547044154915, + 51.03938287345871 + ], + [ + 6.911013838631001, + 51.03934779156541 + ], + [ + 6.911278264462938, + 51.03924298285281 + ], + [ + 6.912331894873925, + 51.038848645648955 + ], + [ + 6.912475403869996, + 51.03878795395105 + ], + [ + 6.9125256851211585, + 51.038770886643704 + ], + [ + 6.912604701759985, + 51.03875781961842 + ], + [ + 6.912682710006624, + 51.03875902908517 + ], + [ + 6.912822787571352, + 51.03845021453337 + ], + [ + 6.9127295765332955, + 51.038219675154096 + ], + [ + 6.912701997468355, + 51.0381514608382 + ], + [ + 6.9127571389957945, + 51.03814240011427 + ], + [ + 6.912746715806443, + 51.038107867897374 + ], + [ + 6.912962848559216, + 51.03807202582302 + ], + [ + 6.913063290384065, + 51.03794143673932 + ], + [ + 6.913609787197505, + 51.03723142553275 + ], + [ + 6.913789413532753, + 51.0369553120804 + ], + [ + 6.913819841004443, + 51.0369148928158 + ], + [ + 6.913939021839942, + 51.03689984764238 + ], + [ + 6.914141683026005, + 51.036665470073196 + ], + [ + 6.91421187812437, + 51.03665949967598 + ], + [ + 6.914490180933251, + 51.03630485672348 + ], + [ + 6.914600284844364, + 51.03614039142628 + ], + [ + 6.914875435436402, + 51.03564778930263 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Fuehlingen", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "602", + "Population_rel": 0.0019236425131428992, + "Population_abs": 2093 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.888760590383288, + 51.046465060907174 + ], + [ + 6.891495238260142, + 51.04260245066452 + ], + [ + 6.89151878153428, + 51.042542330858936 + ], + [ + 6.892190157770503, + 51.040649457854016 + ], + [ + 6.894010158591099, + 51.038336957720475 + ], + [ + 6.8953517632114005, + 51.036982877187185 + ], + [ + 6.8960420789617745, + 51.03625757527061 + ], + [ + 6.8961262535978936, + 51.0362433540687 + ], + [ + 6.8961975371922035, + 51.036218340239465 + ], + [ + 6.894020688432164, + 51.035488297359954 + ], + [ + 6.892489652497846, + 51.03497657154159 + ], + [ + 6.891897478844026, + 51.03477865996485 + ], + [ + 6.890696996917197, + 51.03438070433535 + ], + [ + 6.889839870126401, + 51.03409652998686 + ], + [ + 6.8881182072818214, + 51.03352677990085 + ], + [ + 6.887713315798064, + 51.03339169538594 + ], + [ + 6.88764522857946, + 51.033369098716264 + ], + [ + 6.887578598417625, + 51.03334714532413 + ], + [ + 6.886842021884894, + 51.03310284285481 + ], + [ + 6.886631987723067, + 51.03301850172489 + ], + [ + 6.886617307271286, + 51.032973847608766 + ], + [ + 6.885531020768188, + 51.03254890293775 + ], + [ + 6.884355289466185, + 51.032157167101715 + ], + [ + 6.8841691425568845, + 51.032106529091294 + ], + [ + 6.883123728911623, + 51.031784413222674 + ], + [ + 6.882948087718851, + 51.03173046506477 + ], + [ + 6.880166241453805, + 51.030875146872276 + ], + [ + 6.879157798028076, + 51.03056525171417 + ], + [ + 6.878727079815389, + 51.03043032148323 + ], + [ + 6.879070022340949, + 51.03002152188983 + ], + [ + 6.8789667712626335, + 51.02999658990393 + ], + [ + 6.878886883665358, + 51.03001606863844 + ], + [ + 6.875536607969987, + 51.02924848055797 + ], + [ + 6.875346531978654, + 51.029204658663986 + ], + [ + 6.872387641244828, + 51.02852730140655 + ], + [ + 6.872234467496949, + 51.02849647876691 + ], + [ + 6.872061704266951, + 51.02846878864015 + ], + [ + 6.872049156264506, + 51.02851418803282 + ], + [ + 6.872096716140223, + 51.02852283311556 + ], + [ + 6.871838619052299, + 51.0286966210865 + ], + [ + 6.870795679194768, + 51.029795682979376 + ], + [ + 6.869740688724789, + 51.03077149405396 + ], + [ + 6.868960050622914, + 51.031608799552075 + ], + [ + 6.868220706311529, + 51.03239167865426 + ], + [ + 6.867779347312611, + 51.03275802942559 + ], + [ + 6.867499311279588, + 51.03306070699365 + ], + [ + 6.867463541643549, + 51.033099535649264 + ], + [ + 6.865328734917593, + 51.03525918868682 + ], + [ + 6.8646380146395645, + 51.03594927577345 + ], + [ + 6.863557454473942, + 51.037028773116496 + ], + [ + 6.863447230203119, + 51.037158312342804 + ], + [ + 6.863307563360603, + 51.03732231750466 + ], + [ + 6.863022331257941, + 51.03758618845596 + ], + [ + 6.862905994757903, + 51.03769383880823 + ], + [ + 6.862802910971731, + 51.037801121729174 + ], + [ + 6.861097943678378, + 51.03957413279369 + ], + [ + 6.8610129897835295, + 51.03972155152264 + ], + [ + 6.860491506950859, + 51.04043355674813 + ], + [ + 6.860101229048502, + 51.040786107855816 + ], + [ + 6.859815705122265, + 51.041074873020776 + ], + [ + 6.859737503771804, + 51.04119455461315 + ], + [ + 6.85970061271597, + 51.04125055821905 + ], + [ + 6.859616589035175, + 51.041379271604455 + ], + [ + 6.859525303861338, + 51.04141145871483 + ], + [ + 6.858949843369041, + 51.04197970590477 + ], + [ + 6.8585245081992445, + 51.042342307364805 + ], + [ + 6.85843605014809, + 51.04246287213601 + ], + [ + 6.858297456023254, + 51.0426403924635 + ], + [ + 6.858211071628682, + 51.04271118682054 + ], + [ + 6.857613110786342, + 51.043262566341056 + ], + [ + 6.857404772330089, + 51.04347812633988 + ], + [ + 6.857090547272335, + 51.04380511888666 + ], + [ + 6.856829470953432, + 51.04410709101865 + ], + [ + 6.856922725670153, + 51.04421517528691 + ], + [ + 6.858875540232121, + 51.043805579773526 + ], + [ + 6.858965342120194, + 51.04378846915868 + ], + [ + 6.859447742116769, + 51.043696377744794 + ], + [ + 6.8594935954574385, + 51.04371617581258 + ], + [ + 6.859587478786036, + 51.04375773373585 + ], + [ + 6.8598937895522285, + 51.04388968595925 + ], + [ + 6.859992629007838, + 51.04393704986549 + ], + [ + 6.860076039138722, + 51.043921334059235 + ], + [ + 6.860370125499735, + 51.0441474908769 + ], + [ + 6.860415652688017, + 51.04417277418062 + ], + [ + 6.860481117603251, + 51.04421202384127 + ], + [ + 6.860728760549809, + 51.0441327129638 + ], + [ + 6.860935221195325, + 51.04408570671073 + ], + [ + 6.861302450452874, + 51.04395769042691 + ], + [ + 6.861575673845307, + 51.04386623414441 + ], + [ + 6.862196715741936, + 51.04364609170963 + ], + [ + 6.862634358156542, + 51.043516923364194 + ], + [ + 6.862982289012345, + 51.04336378540502 + ], + [ + 6.862980633674213, + 51.04324406285 + ], + [ + 6.862971631565398, + 51.04317401412648 + ], + [ + 6.862495597337491, + 51.042878912105955 + ], + [ + 6.862870921780102, + 51.042980053856226 + ], + [ + 6.8637477508765015, + 51.04307398126503 + ], + [ + 6.8665762128180665, + 51.0427009242561 + ], + [ + 6.867555348739325, + 51.04253140226132 + ], + [ + 6.868571826672416, + 51.04244528225893 + ], + [ + 6.87096728280804, + 51.04240487927173 + ], + [ + 6.872741313202503, + 51.04246211083876 + ], + [ + 6.873601348297802, + 51.04247383884874 + ], + [ + 6.873843184188709, + 51.04253468328027 + ], + [ + 6.874504532956327, + 51.042634007283176 + ], + [ + 6.8753943013926095, + 51.043035176851305 + ], + [ + 6.8754834928967234, + 51.04307684704084 + ], + [ + 6.87576082814738, + 51.0432088402255 + ], + [ + 6.876176867014171, + 51.043406761945214 + ], + [ + 6.876267193839045, + 51.04344042256909 + ], + [ + 6.876320340576555, + 51.04346092396756 + ], + [ + 6.876540758827021, + 51.043542463686016 + ], + [ + 6.876883947241705, + 51.04368416277436 + ], + [ + 6.877619141456553, + 51.04412836569417 + ], + [ + 6.878261064314431, + 51.044684100862185 + ], + [ + 6.878696158634209, + 51.04507005657125 + ], + [ + 6.878910179314988, + 51.04534027705721 + ], + [ + 6.879141170601473, + 51.04561036901336 + ], + [ + 6.879354833429943, + 51.045891468127415 + ], + [ + 6.879614682529818, + 51.0461641289851 + ], + [ + 6.879978867238615, + 51.04665210075111 + ], + [ + 6.880121089845559, + 51.04685022733386 + ], + [ + 6.880400113712849, + 51.047118247259775 + ], + [ + 6.88042692894364, + 51.047148608178176 + ], + [ + 6.881108289752155, + 51.04795239919457 + ], + [ + 6.881507173290102, + 51.048508781680525 + ], + [ + 6.881714736676608, + 51.04889527437215 + ], + [ + 6.881959480241028, + 51.0492043600332 + ], + [ + 6.8821669041163975, + 51.04954936853275 + ], + [ + 6.88220757865021, + 51.04960726535657 + ], + [ + 6.8825054337757265, + 51.05003163873443 + ], + [ + 6.882642786013058, + 51.05010745737387 + ], + [ + 6.8827716051844545, + 51.050237005198476 + ], + [ + 6.8828254405640354, + 51.050503125124045 + ], + [ + 6.882850448294751, + 51.050618266928446 + ], + [ + 6.8830781495486475, + 51.051050089491326 + ], + [ + 6.88309824831015, + 51.05109452371674 + ], + [ + 6.8831122180575655, + 51.051124171859286 + ], + [ + 6.88315972441053, + 51.051222423643075 + ], + [ + 6.883289916723673, + 51.051491292000485 + ], + [ + 6.883528193600395, + 51.051826490672596 + ], + [ + 6.883591202111957, + 51.05191491596576 + ], + [ + 6.88366171708735, + 51.05183243227117 + ], + [ + 6.888757791935362, + 51.046520005931264 + ], + [ + 6.888760590383288, + 51.046465060907174 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Blumenberg", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "610", + "Population_rel": 0.004867468107790155, + "Population_abs": 5296 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 7.084657855709279, + 50.850695732363455 + ], + [ + 7.085931985082011, + 50.849713626363545 + ], + [ + 7.08770751352096, + 50.84835279640287 + ], + [ + 7.088108450135454, + 50.848031214583756 + ], + [ + 7.089245210998246, + 50.84711627390221 + ], + [ + 7.090576890621331, + 50.846021758822495 + ], + [ + 7.091721502578697, + 50.845082826704996 + ], + [ + 7.091781015961878, + 50.84503410701991 + ], + [ + 7.092285836964631, + 50.84461702912713 + ], + [ + 7.092751266324532, + 50.8442416386474 + ], + [ + 7.093239485172733, + 50.84391580831427 + ], + [ + 7.093617321680365, + 50.84360644032355 + ], + [ + 7.093927206981154, + 50.843352577448975 + ], + [ + 7.093969771447548, + 50.84331774488694 + ], + [ + 7.0940123459336375, + 50.843282908875715 + ], + [ + 7.0941171828045215, + 50.843197133169895 + ], + [ + 7.094768734577227, + 50.84266305779241 + ], + [ + 7.095478075772145, + 50.84208160875512 + ], + [ + 7.095856423291561, + 50.841771510735036 + ], + [ + 7.096227320681757, + 50.84146735710266 + ], + [ + 7.097018881520857, + 50.840824858982074 + ], + [ + 7.097324171071527, + 50.84058049774133 + ], + [ + 7.097591964945215, + 50.840366117384114 + ], + [ + 7.09854427342516, + 50.83958630198609 + ], + [ + 7.099121306843111, + 50.839117722411096 + ], + [ + 7.099707385009559, + 50.83864186390644 + ], + [ + 7.0999773395237895, + 50.83843752066623 + ], + [ + 7.099894608440369, + 50.838446156229764 + ], + [ + 7.099492917854584, + 50.83828923732489 + ], + [ + 7.098655699577558, + 50.83796243423628 + ], + [ + 7.097964593173129, + 50.837692775797684 + ], + [ + 7.097972253808978, + 50.83766558128456 + ], + [ + 7.097979698777166, + 50.83763914952204 + ], + [ + 7.097923424022893, + 50.83761896196388 + ], + [ + 7.097851390655869, + 50.83761250450626 + ], + [ + 7.097432828182321, + 50.837210233457974 + ], + [ + 7.095404195752857, + 50.835260820905006 + ], + [ + 7.0951397263601566, + 50.83500665606006 + ], + [ + 7.095137741831415, + 50.83499669184802 + ], + [ + 7.095136594918446, + 50.83499099086392 + ], + [ + 7.095131220198021, + 50.83496442637631 + ], + [ + 7.095071699680772, + 50.83496762213999 + ], + [ + 7.095047633987008, + 50.83496890378696 + ], + [ + 7.095037563004316, + 50.83496946242531 + ], + [ + 7.094070366638515, + 50.834617656270055 + ], + [ + 7.093514491375437, + 50.83441538774952 + ], + [ + 7.093440082927047, + 50.8343883073962 + ], + [ + 7.093433779894568, + 50.834386009003246 + ], + [ + 7.09342747693599, + 50.834383708812396 + ], + [ + 7.093380340577633, + 50.83436654008423 + ], + [ + 7.0931444011060405, + 50.83428030610968 + ], + [ + 7.092965285803282, + 50.83421486514485 + ], + [ + 7.092667777207563, + 50.83410612496158 + ], + [ + 7.090574487469152, + 50.83334097454704 + ], + [ + 7.086116593183883, + 50.831711263706325 + ], + [ + 7.08611256486258, + 50.83170979008827 + ], + [ + 7.0861083851210696, + 50.83170875468049 + ], + [ + 7.085868340200253, + 50.83167561141799 + ], + [ + 7.085864407418833, + 50.8316750657175 + ], + [ + 7.085860468262069, + 50.83167453700043 + ], + [ + 7.085572017352184, + 50.83163526730255 + ], + [ + 7.0851807467344035, + 50.83158087694178 + ], + [ + 7.082590261735846, + 50.83122220743932 + ], + [ + 7.082277925158204, + 50.831178958315526 + ], + [ + 7.081446688792682, + 50.831063957820035 + ], + [ + 7.0813098659820595, + 50.83104502843212 + ], + [ + 7.079966144774837, + 50.83085885957968 + ], + [ + 7.079315991584348, + 50.83076894539739 + ], + [ + 7.079311451444975, + 50.830768980365846 + ], + [ + 7.079254834800895, + 50.83076847893167 + ], + [ + 7.079211516653533, + 50.83076862275399 + ], + [ + 7.0791098380639825, + 50.83076916180093 + ], + [ + 7.079053730000069, + 50.830769486178596 + ], + [ + 7.07875290371873, + 50.830770474054894 + ], + [ + 7.078748579204854, + 50.83077041092312 + ], + [ + 7.078744253829036, + 50.8307702650342 + ], + [ + 7.0786832754027, + 50.830768221898396 + ], + [ + 7.078609674060813, + 50.8307657855406 + ], + [ + 7.078127914329044, + 50.83074907758488 + ], + [ + 7.077539139645622, + 50.83072893205717 + ], + [ + 7.077418443363964, + 50.83072493182222 + ], + [ + 7.077371995077751, + 50.83072490825023 + ], + [ + 7.076701769829358, + 50.83072698148941 + ], + [ + 7.0765659114953605, + 50.83073274495709 + ], + [ + 7.0756469732204605, + 50.83077131685362 + ], + [ + 7.074689887726339, + 50.83081322894698 + ], + [ + 7.0746596912548165, + 50.83081451581164 + ], + [ + 7.073666228911183, + 50.83086108225374 + ], + [ + 7.073659902826248, + 50.83086137890784 + ], + [ + 7.073653579505541, + 50.830861677405984 + ], + [ + 7.073477475555643, + 50.8308699906305 + ], + [ + 7.072917115068635, + 50.83086921665698 + ], + [ + 7.0726254348206385, + 50.83086889452096 + ], + [ + 7.072318987947094, + 50.830868507506 + ], + [ + 7.071969654948707, + 50.830868528778154 + ], + [ + 7.071814583954894, + 50.83086823112004 + ], + [ + 7.071672149690761, + 50.830868094487606 + ], + [ + 7.071496598158778, + 50.83086840488586 + ], + [ + 7.071360107157072, + 50.830868956121904 + ], + [ + 7.071047068793398, + 50.83087013502256 + ], + [ + 7.070741700295204, + 50.830871284342635 + ], + [ + 7.07016660780955, + 50.830873148595956 + ], + [ + 7.069766605297363, + 50.83087435847753 + ], + [ + 7.069307021314527, + 50.83087605223317 + ], + [ + 7.068898390615115, + 50.83087759209941 + ], + [ + 7.068706219788363, + 50.83087830219656 + ], + [ + 7.068565320862776, + 50.83087884733273 + ], + [ + 7.068470438992354, + 50.83087923691506 + ], + [ + 7.06815367676055, + 50.83088062339469 + ], + [ + 7.068144265090206, + 50.83088066988578 + ], + [ + 7.0681349017393655, + 50.83088040599116 + ], + [ + 7.066702983840602, + 50.830789807490994 + ], + [ + 7.066560310977412, + 50.83078074061325 + ], + [ + 7.066554505727679, + 50.83078035748959 + ], + [ + 7.0665305839278485, + 50.830778635299 + ], + [ + 7.066521312687758, + 50.83077796448314 + ], + [ + 7.06644990476636, + 50.83077208609699 + ], + [ + 7.066441699191539, + 50.830771401460815 + ], + [ + 7.0664353192395595, + 50.83077090447698 + ], + [ + 7.066430373514323, + 50.83077054728652 + ], + [ + 7.0664109964539605, + 50.8307691261492 + ], + [ + 7.066368898985389, + 50.83076529668677 + ], + [ + 7.066363266659473, + 50.830764784211276 + ], + [ + 7.066356311514599, + 50.830764150875844 + ], + [ + 7.066330651329564, + 50.83076181433157 + ], + [ + 7.0645643973531955, + 50.830598607034865 + ], + [ + 7.064555756968341, + 50.830597826912026 + ], + [ + 7.064529549780759, + 50.83059546650423 + ], + [ + 7.064485898647857, + 50.83059143969896 + ], + [ + 7.064431687748487, + 50.830586377850544 + ], + [ + 7.063298941997239, + 50.830482170470894 + ], + [ + 7.063029845325492, + 50.830457352101035 + ], + [ + 7.062709707002699, + 50.830451951145406 + ], + [ + 7.06270232083948, + 50.83045181768329 + ], + [ + 7.062695480858114, + 50.83045169778867 + ], + [ + 7.062670685016435, + 50.830451267986334 + ], + [ + 7.06262130594494, + 50.83045041819274 + ], + [ + 7.062612605438028, + 50.83045026829161 + ], + [ + 7.062603906313107, + 50.83045011931216 + ], + [ + 7.062561833786391, + 50.83044940523688 + ], + [ + 7.062559328161802, + 50.83048210014625 + ], + [ + 7.0624715022361775, + 50.830470038599415 + ], + [ + 7.062529938034711, + 50.83051493941228 + ], + [ + 7.062529810889028, + 50.83051770109463 + ], + [ + 7.06252968224974, + 50.830520464550915 + ], + [ + 7.062479310336966, + 50.831588185458436 + ], + [ + 7.06244853639294, + 50.83223715860642 + ], + [ + 7.062410892113655, + 50.83303446375129 + ], + [ + 7.062406795830203, + 50.83312067858026 + ], + [ + 7.0624066449676555, + 50.83312384099076 + ], + [ + 7.0623761827981655, + 50.83376553238552 + ], + [ + 7.06237209404186, + 50.8338506356965 + ], + [ + 7.062318110443474, + 50.834990477518524 + ], + [ + 7.062296371372111, + 50.835467180413225 + ], + [ + 7.062292549063528, + 50.835552288126856 + ], + [ + 7.062241694633118, + 50.83667002541537 + ], + [ + 7.062236147823713, + 50.83679195472169 + ], + [ + 7.06223588906446, + 50.83679741235192 + ], + [ + 7.062235092378152, + 50.836814243586865 + ], + [ + 7.062176732536807, + 50.836848170944165 + ], + [ + 7.062175072291614, + 50.83690192532803 + ], + [ + 7.062229508394134, + 50.836938714817215 + ], + [ + 7.062226211519143, + 50.83702837670025 + ], + [ + 7.0621699896614905, + 50.838447186046245 + ], + [ + 7.0621698158318775, + 50.83845158741647 + ], + [ + 7.062169628593126, + 50.83845686096131 + ], + [ + 7.06222639026499, + 50.83845727321896 + ], + [ + 7.062222909912244, + 50.838493179763795 + ], + [ + 7.0622120973949105, + 50.838779978417264 + ], + [ + 7.062172975673316, + 50.839814976551224 + ], + [ + 7.062166411830027, + 50.83993232815567 + ], + [ + 7.0621591939250346, + 50.84016587579472 + ], + [ + 7.062116592640896, + 50.84038528291212 + ], + [ + 7.062110265911775, + 50.840418025814145 + ], + [ + 7.061978885280943, + 50.841103091618216 + ], + [ + 7.061957963574602, + 50.84121182245751 + ], + [ + 7.061957329584542, + 50.84121505598286 + ], + [ + 7.0617825689318545, + 50.84211683722433 + ], + [ + 7.061756899682491, + 50.84225081203264 + ], + [ + 7.061743704380795, + 50.842318823229476 + ], + [ + 7.061733071072292, + 50.84237402847373 + ], + [ + 7.061732109874333, + 50.842379021141085 + ], + [ + 7.061731148713404, + 50.84238401290966 + ], + [ + 7.061718162844098, + 50.84245159588079 + ], + [ + 7.061702029653237, + 50.84253596021952 + ], + [ + 7.061629961796905, + 50.84291375896673 + ], + [ + 7.0615655610023325, + 50.84325131466443 + ], + [ + 7.061533047468591, + 50.84339647007161 + ], + [ + 7.061525454077714, + 50.843430380861776 + ], + [ + 7.061505883208792, + 50.84351774412905 + ], + [ + 7.061480339161188, + 50.84363162703095 + ], + [ + 7.061474353143159, + 50.84365828675885 + ], + [ + 7.061430012812046, + 50.8438593748934 + ], + [ + 7.061380797663046, + 50.844086005280055 + ], + [ + 7.061380187490232, + 50.844088833577565 + ], + [ + 7.061378556657357, + 50.844091268074585 + ], + [ + 7.061206909682851, + 50.84426995682592 + ], + [ + 7.060892682757933, + 50.84459620449002 + ], + [ + 7.059992178196405, + 50.84553151584349 + ], + [ + 7.0599238499646235, + 50.84560160760303 + ], + [ + 7.059858167133377, + 50.84569414772331 + ], + [ + 7.0593750653349145, + 50.8463722830198 + ], + [ + 7.059317467532594, + 50.846453567605444 + ], + [ + 7.059305179770559, + 50.846470910959695 + ], + [ + 7.058925197158937, + 50.84700723613162 + ], + [ + 7.058598425975501, + 50.847467897730915 + ], + [ + 7.0585946249616285, + 50.84747311832269 + ], + [ + 7.058591956191058, + 50.847476730781636 + ], + [ + 7.058588229554095, + 50.847481870767524 + ], + [ + 7.058539299750395, + 50.84755154074973 + ], + [ + 7.058506566544577, + 50.84761525566119 + ], + [ + 7.058474809094632, + 50.84770302537436 + ], + [ + 7.057935975313642, + 50.84919458323309 + ], + [ + 7.057917211184694, + 50.84924629088005 + ], + [ + 7.057906054287368, + 50.849276907940826 + ], + [ + 7.057905038088424, + 50.8492796197363 + ], + [ + 7.05790397246102, + 50.84928232441328 + ], + [ + 7.0578587106608515, + 50.84924655366256 + ], + [ + 7.057716589688519, + 50.84924142115756 + ], + [ + 7.056857534315704, + 50.84921112863884 + ], + [ + 7.056441457393851, + 50.8491964595105 + ], + [ + 7.056431386709523, + 50.84919610466712 + ], + [ + 7.056426620213902, + 50.84919593622087 + ], + [ + 7.056416668709964, + 50.84919558516049 + ], + [ + 7.054912013982533, + 50.84914247745011 + ], + [ + 7.054769909213615, + 50.84913741357022 + ], + [ + 7.054716071029937, + 50.84947399040333 + ], + [ + 7.054666439583843, + 50.84947213573616 + ], + [ + 7.052800944326841, + 50.849403347427426 + ], + [ + 7.052792549556013, + 50.84940303822957 + ], + [ + 7.052782299422162, + 50.84940265939028 + ], + [ + 7.0513381847974, + 50.84934936662245 + ], + [ + 7.0511953168474735, + 50.849344029317166 + ], + [ + 7.051136677499695, + 50.849710057320614 + ], + [ + 7.051101731354164, + 50.849927360549884 + ], + [ + 7.0510892447783835, + 50.85000810050911 + ], + [ + 7.051094366595124, + 50.850012527369806 + ], + [ + 7.051106522388424, + 50.850023224381474 + ], + [ + 7.051138238956999, + 50.85005102066058 + ], + [ + 7.051123561393146, + 50.85009482162856 + ], + [ + 7.0511603878764415, + 50.85009992920345 + ], + [ + 7.051164336560786, + 50.850100461942205 + ], + [ + 7.051805597181966, + 50.85018690524926 + ], + [ + 7.0565433148285415, + 50.85081730257769 + ], + [ + 7.057117952337845, + 50.850896327241365 + ], + [ + 7.057329491853261, + 50.85092551365453 + ], + [ + 7.060043084605063, + 50.85282274711375 + ], + [ + 7.0601246657295516, + 50.85286947000233 + ], + [ + 7.060192147253057, + 50.8529081410167 + ], + [ + 7.060325217585926, + 50.85300230937992 + ], + [ + 7.060384251212054, + 50.8530442034977 + ], + [ + 7.061212854638357, + 50.85363033424928 + ], + [ + 7.0617809545540755, + 50.85403229841481 + ], + [ + 7.062216575596886, + 50.8543348790911 + ], + [ + 7.0632018389887445, + 50.85501961735503 + ], + [ + 7.0634960737972925, + 50.855224231407284 + ], + [ + 7.064561000532352, + 50.855974654764175 + ], + [ + 7.064589720770503, + 50.855994803253985 + ], + [ + 7.064730674432487, + 50.85609196083434 + ], + [ + 7.06495608178768, + 50.85628012471636 + ], + [ + 7.0669113673100785, + 50.857912363513655 + ], + [ + 7.067358330901253, + 50.85828555862718 + ], + [ + 7.068561676824715, + 50.859295302866606 + ], + [ + 7.069044090264869, + 50.85970826480513 + ], + [ + 7.0690991419452, + 50.85975540468169 + ], + [ + 7.069159648515787, + 50.85980510089138 + ], + [ + 7.069222907362415, + 50.859857109939306 + ], + [ + 7.069451345583872, + 50.860165033483064 + ], + [ + 7.069881243913286, + 50.86074471956779 + ], + [ + 7.0706535719299755, + 50.86177708849996 + ], + [ + 7.070679751400191, + 50.861811426926266 + ], + [ + 7.07068312896612, + 50.86181556503847 + ], + [ + 7.070686759660441, + 50.86181962999003 + ], + [ + 7.070694366900296, + 50.86182795358097 + ], + [ + 7.071178364811042, + 50.86235988105576 + ], + [ + 7.071181842255352, + 50.86236370152589 + ], + [ + 7.071185374517682, + 50.86236750221653 + ], + [ + 7.07179213296726, + 50.86302057670433 + ], + [ + 7.071947970286163, + 50.863188234841566 + ], + [ + 7.071953128991112, + 50.86319367496248 + ], + [ + 7.071960292827072, + 50.8632006663611 + ], + [ + 7.072626562688968, + 50.86373217096618 + ], + [ + 7.072806644240041, + 50.863875634107345 + ], + [ + 7.073301079309182, + 50.864270624172 + ], + [ + 7.073371836280205, + 50.86433325847985 + ], + [ + 7.07359102098563, + 50.864568384493964 + ], + [ + 7.073692599350416, + 50.8646782130731 + ], + [ + 7.073818041105481, + 50.86481072019741 + ], + [ + 7.07407969518778, + 50.865088691905584 + ], + [ + 7.074247075699335, + 50.86530694367026 + ], + [ + 7.074303494004555, + 50.86541303950203 + ], + [ + 7.074383830420789, + 50.86556467140663 + ], + [ + 7.074421769147781, + 50.86565781340129 + ], + [ + 7.074383529808175, + 50.86576774772797 + ], + [ + 7.074464534201746, + 50.865720161329584 + ], + [ + 7.07461296625109, + 50.86563294862915 + ], + [ + 7.075117227359647, + 50.86474948746945 + ], + [ + 7.0753547252212785, + 50.86426168530497 + ], + [ + 7.07542180466629, + 50.86409035574793 + ], + [ + 7.075543595656628, + 50.86377819624313 + ], + [ + 7.07567794873966, + 50.863413241887635 + ], + [ + 7.075700002565076, + 50.86335316768841 + ], + [ + 7.075708959921112, + 50.863328903712244 + ], + [ + 7.075910969830008, + 50.86277481492547 + ], + [ + 7.076007715572657, + 50.86251026036602 + ], + [ + 7.076078125944898, + 50.86231723487934 + ], + [ + 7.076093627810585, + 50.862274931218636 + ], + [ + 7.076223551836724, + 50.861915410932674 + ], + [ + 7.076228614560539, + 50.86190089037244 + ], + [ + 7.076290830206464, + 50.86172834688349 + ], + [ + 7.076383581875104, + 50.861469402090435 + ], + [ + 7.076399326362032, + 50.861425298242374 + ], + [ + 7.076411927277938, + 50.861392730100725 + ], + [ + 7.076548408125705, + 50.86104060965728 + ], + [ + 7.076582200766294, + 50.86095372869168 + ], + [ + 7.076822227532803, + 50.860305976363875 + ], + [ + 7.076833933754456, + 50.86027773110857 + ], + [ + 7.076848324184036, + 50.86024271913533 + ], + [ + 7.076958095830186, + 50.85997687379722 + ], + [ + 7.077094885210215, + 50.859681564045395 + ], + [ + 7.07789787834539, + 50.858207506520486 + ], + [ + 7.078097896439451, + 50.857889226611675 + ], + [ + 7.0784667434402895, + 50.85735390641872 + ], + [ + 7.0783734586914715, + 50.85733661028499 + ], + [ + 7.07861808321015, + 50.85699445457387 + ], + [ + 7.0791382716343705, + 50.85626670486964 + ], + [ + 7.079262402123687, + 50.85619921423942 + ], + [ + 7.07962848922809, + 50.8557115603612 + ], + [ + 7.07966008406859, + 50.85567755701092 + ], + [ + 7.0796964008212715, + 50.855638390715846 + ], + [ + 7.079699567962654, + 50.85563500093817 + ], + [ + 7.079702336954388, + 50.855632033608806 + ], + [ + 7.079740058707083, + 50.85559121129315 + ], + [ + 7.080515516145407, + 50.85476716773071 + ], + [ + 7.080620278303047, + 50.85462826325702 + ], + [ + 7.080704130332723, + 50.85452200196577 + ], + [ + 7.080883613555007, + 50.85427621532793 + ], + [ + 7.081170693073182, + 50.85394969664507 + ], + [ + 7.0813099581888554, + 50.85378065616274 + ], + [ + 7.081616000540738, + 50.85343160413102 + ], + [ + 7.082062351182414, + 50.85296111928701 + ], + [ + 7.083014117377865, + 50.85204586223602 + ], + [ + 7.083565468664899, + 50.85158090398655 + ], + [ + 7.084129164536021, + 50.85111290543083 + ], + [ + 7.084657855709279, + 50.850695732363455 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Libur", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "713", + "Population_rel": 0.0010284548362192566, + "Population_abs": 1119 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.9869566629446025, + 50.929094120926386 + ], + [ + 6.987282488171029, + 50.928952357126924 + ], + [ + 6.987395563245552, + 50.928903159344 + ], + [ + 6.989074570922576, + 50.92822489633496 + ], + [ + 6.989082847920704, + 50.92822076689608 + ], + [ + 6.989764677453549, + 50.92787812862298 + ], + [ + 6.990125498281184, + 50.9276968034556 + ], + [ + 6.990334545414823, + 50.927607767149674 + ], + [ + 6.992659075635453, + 50.9266874126227 + ], + [ + 6.9927532092155245, + 50.92664613122368 + ], + [ + 6.992836111047442, + 50.92661961231278 + ], + [ + 6.992836405391565, + 50.926619518442934 + ], + [ + 6.992836623247606, + 50.9266194493397 + ], + [ + 6.992847069594121, + 50.926615125799685 + ], + [ + 6.99367224848596, + 50.92627199868027 + ], + [ + 6.994552003932462, + 50.92584685686258 + ], + [ + 6.995334421292792, + 50.92554021121424 + ], + [ + 6.996322953323653, + 50.925221731912984 + ], + [ + 6.996325860813252, + 50.92522086446003 + ], + [ + 6.996328650157058, + 50.925220030953916 + ], + [ + 6.99632870926852, + 50.92522001308175 + ], + [ + 6.997165579506026, + 50.924970115001734 + ], + [ + 6.997536214449538, + 50.924876155024315 + ], + [ + 6.998044472591199, + 50.92475980084268 + ], + [ + 6.998522293196976, + 50.92467669674824 + ], + [ + 6.999187999927982, + 50.92459103025135 + ], + [ + 6.99923191403411, + 50.92458537853653 + ], + [ + 6.999387367522508, + 50.924565373396234 + ], + [ + 6.999495474083935, + 50.9245525907133 + ], + [ + 6.999495557057962, + 50.924552580443475 + ], + [ + 6.999495609939795, + 50.924552575054165 + ], + [ + 6.99949611888957, + 50.924552519921235 + ], + [ + 6.999497023684364, + 50.92455242570439 + ], + [ + 6.999499147610125, + 50.924552174305475 + ], + [ + 6.9996239583002655, + 50.92453803822629 + ], + [ + 6.999628201604277, + 50.92453760819518 + ], + [ + 6.999718944349217, + 50.92452841662801 + ], + [ + 6.999720959506563, + 50.92452821282673 + ], + [ + 6.999723440068119, + 50.92452797383087 + ], + [ + 6.999736500246639, + 50.92452671366892 + ], + [ + 6.999740765528714, + 50.92452630199782 + ], + [ + 6.999772279974826, + 50.92452326162865 + ], + [ + 6.999805213307799, + 50.92452008457683 + ], + [ + 7.000186352602036, + 50.92448331562502 + ], + [ + 7.000685239211541, + 50.924440803399406 + ], + [ + 7.001033372017879, + 50.92443481311074 + ], + [ + 7.001456262359483, + 50.924427535866684 + ], + [ + 7.001456333572148, + 50.92442753438784 + ], + [ + 7.0014563833786365, + 50.92442753434124 + ], + [ + 7.001459052248455, + 50.924427582734786 + ], + [ + 7.002196569103303, + 50.924440955266974 + ], + [ + 7.002718451125962, + 50.92447602385824 + ], + [ + 7.00389871683686, + 50.92456402954698 + ], + [ + 7.003898786319967, + 50.924564035232045 + ], + [ + 7.003898835934277, + 50.92456403967798 + ], + [ + 7.005086611167741, + 50.9246799415795 + ], + [ + 7.005548638253757, + 50.92472502241535 + ], + [ + 7.005548707698891, + 50.924725028998175 + ], + [ + 7.005548757275106, + 50.9247250343421 + ], + [ + 7.006520102587526, + 50.924825325561 + ], + [ + 7.006520170572584, + 50.92482533301765 + ], + [ + 7.006520220149015, + 50.92482533836121 + ], + [ + 7.007621899363331, + 50.924921263660956 + ], + [ + 7.007621968885888, + 50.92492126844509 + ], + [ + 7.007622018539366, + 50.92492127199073 + ], + [ + 7.008158718819813, + 50.92492319608705 + ], + [ + 7.008158787112434, + 50.92492319635303 + ], + [ + 7.008158841223815, + 50.92492319547764 + ], + [ + 7.008168804907058, + 50.9249230992843 + ], + [ + 7.008169708890164, + 50.92492309042681 + ], + [ + 7.008401454112953, + 50.92492083003602 + ], + [ + 7.008824832127761, + 50.92489910124925 + ], + [ + 7.009162389817952, + 50.92486831474509 + ], + [ + 7.009246541007411, + 50.92485949710772 + ], + [ + 7.009415093959211, + 50.92483342351278 + ], + [ + 7.009415161290164, + 50.92483341296915 + ], + [ + 7.009415210020522, + 50.92483340480645 + ], + [ + 7.009860747156571, + 50.92476996490763 + ], + [ + 7.00986081587095, + 50.92476995528671 + ], + [ + 7.009860860296938, + 50.92476994794982 + ], + [ + 7.01028949216166, + 50.92468724052948 + ], + [ + 7.010289555303054, + 50.92468722811518 + ], + [ + 7.010289598345282, + 50.924687219855116 + ], + [ + 7.010321301710535, + 50.92468110490498 + ], + [ + 7.010474174667677, + 50.92464796595134 + ], + [ + 7.010474214904276, + 50.924647956744046 + ], + [ + 7.010866364479646, + 50.92454577634354 + ], + [ + 7.010866403332469, + 50.92454576621315 + ], + [ + 7.011206919488277, + 50.92444168669198 + ], + [ + 7.011299813903305, + 50.92441067793102 + ], + [ + 7.011302575061668, + 50.9244096969907 + ], + [ + 7.01131022748467, + 50.92440697005986 + ], + [ + 7.011430473620969, + 50.924364132765234 + ], + [ + 7.011430976469693, + 50.924363953363 + ], + [ + 7.011432188763659, + 50.92436352163138 + ], + [ + 7.01143417268148, + 50.92436281434662 + ], + [ + 7.011436604494002, + 50.92436194830832 + ], + [ + 7.011439823801648, + 50.92436080159092 + ], + [ + 7.011443426019643, + 50.924359518396486 + ], + [ + 7.011539715028764, + 50.92432521351608 + ], + [ + 7.011539772788161, + 50.92432519381444 + ], + [ + 7.011540114005614, + 50.92432510069618 + ], + [ + 7.011540154356709, + 50.92432508879236 + ], + [ + 7.011540194669475, + 50.92432507778726 + ], + [ + 7.011540913112953, + 50.92432488137164 + ], + [ + 7.011541297487062, + 50.9243247772967 + ], + [ + 7.0115557652510825, + 50.924320632120775 + ], + [ + 7.0116345777644025, + 50.924291549796855 + ], + [ + 7.0116346126192735, + 50.924291533302494 + ], + [ + 7.011656736256957, + 50.924282509921355 + ], + [ + 7.01185992656944, + 50.924199604186306 + ], + [ + 7.011951477353587, + 50.92416257410987 + ], + [ + 7.012026356469901, + 50.924132318302846 + ], + [ + 7.01202661132967, + 50.92413221471868 + ], + [ + 7.012026882137345, + 50.92413210421113 + ], + [ + 7.01203069713219, + 50.92413036864063 + ], + [ + 7.012173495899063, + 50.92406653839265 + ], + [ + 7.0123433947404425, + 50.92398948908912 + ], + [ + 7.012404166264595, + 50.923961931061854 + ], + [ + 7.012408137444165, + 50.92396013608192 + ], + [ + 7.012407975482704, + 50.92395946239218 + ], + [ + 7.012407176016604, + 50.92395611840267 + ], + [ + 7.012405294152568, + 50.92394825642158 + ], + [ + 7.012276849661236, + 50.923411395832524 + ], + [ + 7.012276867310604, + 50.92341118208239 + ], + [ + 7.012307224714792, + 50.92280389941319 + ], + [ + 7.012276698220956, + 50.92256549640148 + ], + [ + 7.012303024426361, + 50.92211652725481 + ], + [ + 7.012303051072849, + 50.92211606902846 + ], + [ + 7.012308977294487, + 50.92177981441564 + ], + [ + 7.012317494596546, + 50.921503945531946 + ], + [ + 7.012319839316966, + 50.92142850559321 + ], + [ + 7.012320736224387, + 50.921397214596645 + ], + [ + 7.012320752878774, + 50.92139675709945 + ], + [ + 7.012325855450154, + 50.92126165475726 + ], + [ + 7.012325905142585, + 50.92126055567042 + ], + [ + 7.012336384323832, + 50.920983117490835 + ], + [ + 7.012365146502029, + 50.920570658387405 + ], + [ + 7.012365192806023, + 50.920569805670944 + ], + [ + 7.012365460137175, + 50.92056243176735 + ], + [ + 7.012365729286776, + 50.92055514873142 + ], + [ + 7.012369273168662, + 50.92044329020576 + ], + [ + 7.012378046035019, + 50.92017272292424 + ], + [ + 7.012400375131974, + 50.92001557526948 + ], + [ + 7.012400390879209, + 50.9200152391721 + ], + [ + 7.012407023463568, + 50.919808670789635 + ], + [ + 7.012477262035271, + 50.919411376184044 + ], + [ + 7.012477276507372, + 50.91941127030444 + ], + [ + 7.01250061136947, + 50.91932665799658 + ], + [ + 7.01250945378186, + 50.91929511824985 + ], + [ + 7.012602676032406, + 50.91895792608477 + ], + [ + 7.012663078308186, + 50.91877275999555 + ], + [ + 7.012663876600313, + 50.91877105488534 + ], + [ + 7.012744390140516, + 50.91859890153974 + ], + [ + 7.0127446687588915, + 50.918598306401464 + ], + [ + 7.012745093005415, + 50.91859739896197 + ], + [ + 7.012745513527585, + 50.91859651214465 + ], + [ + 7.012745931282784, + 50.91859562348149 + ], + [ + 7.012746074991298, + 50.91859532283944 + ], + [ + 7.012762165961211, + 50.918560918764754 + ], + [ + 7.012778863348063, + 50.918532517535915 + ], + [ + 7.012798906254894, + 50.91849842716725 + ], + [ + 7.012799191574307, + 50.918497941866484 + ], + [ + 7.012804244928559, + 50.918488368632225 + ], + [ + 7.012804326217902, + 50.91848823061334 + ], + [ + 7.012893197157987, + 50.91831896073849 + ], + [ + 7.012905070049138, + 50.91829682873111 + ], + [ + 7.013136290295973, + 50.91795583094362 + ], + [ + 7.013207390825215, + 50.91779852848252 + ], + [ + 7.013401090265369, + 50.91762335109667 + ], + [ + 7.013496160778174, + 50.917513703204776 + ], + [ + 7.013499425626671, + 50.91750993823252 + ], + [ + 7.013499452557783, + 50.91750990721282 + ], + [ + 7.013594500090157, + 50.91740028673102 + ], + [ + 7.0135947603336195, + 50.917399988970544 + ], + [ + 7.013634585941748, + 50.91735410078416 + ], + [ + 7.013708658013741, + 50.91726874448797 + ], + [ + 7.013996672917162, + 50.91691763301687 + ], + [ + 7.0142904198654845, + 50.91662112757504 + ], + [ + 7.014372671778882, + 50.91657089384393 + ], + [ + 7.014373473687438, + 50.91657040473625 + ], + [ + 7.014376590535267, + 50.91656850881775 + ], + [ + 7.014424926790997, + 50.91652843839271 + ], + [ + 7.01442648221231, + 50.91652715986202 + ], + [ + 7.014437073472601, + 50.916518361590555 + ], + [ + 7.0144577843654705, + 50.916502886737774 + ], + [ + 7.014461303567806, + 50.91650026197423 + ], + [ + 7.01499909436407, + 50.91609735411708 + ], + [ + 7.015008643933683, + 50.91609052929117 + ], + [ + 7.015012474490356, + 50.916088042014096 + ], + [ + 7.015014818527497, + 50.916086518767095 + ], + [ + 7.0150185994453, + 50.91608406122432 + ], + [ + 7.015022428655707, + 50.91608157212528 + ], + [ + 7.0150749592842185, + 50.91604742318836 + ], + [ + 7.015078725672724, + 50.916044972591564 + ], + [ + 7.0150825680162, + 50.91604247561955 + ], + [ + 7.015342663515977, + 50.915873397685814 + ], + [ + 7.015346434294398, + 50.91587094355762 + ], + [ + 7.015674571206981, + 50.91567483276702 + ], + [ + 7.015677344867409, + 50.9156731756092 + ], + [ + 7.015678376875306, + 50.91567236033453 + ], + [ + 7.015706002311889, + 50.91565054261721 + ], + [ + 7.0157566342018765, + 50.91561006908169 + ], + [ + 7.015758416263737, + 50.91560864509041 + ], + [ + 7.015760438400642, + 50.91560759752095 + ], + [ + 7.015975527125437, + 50.91549618534407 + ], + [ + 7.015980305805663, + 50.915493715051426 + ], + [ + 7.016158321394784, + 50.91540128319076 + ], + [ + 7.016522628730336, + 50.915210908542996 + ], + [ + 7.016523618208127, + 50.915210390230754 + ], + [ + 7.016526435737619, + 50.915208436105935 + ], + [ + 7.01687450237032, + 50.91496697429095 + ], + [ + 7.016875978389357, + 50.91496595429777 + ], + [ + 7.01689295339082, + 50.91495422258931 + ], + [ + 7.017042354294799, + 50.914850490048686 + ], + [ + 7.0170459748844785, + 50.914847983849064 + ], + [ + 7.016828882494894, + 50.91479845526743 + ], + [ + 7.0156167365239215, + 50.914522612047875 + ], + [ + 7.015288060352062, + 50.91446128852752 + ], + [ + 7.013941763117019, + 50.914218616052345 + ], + [ + 7.013748984137916, + 50.91418386560302 + ], + [ + 7.012534314256425, + 50.91387529091504 + ], + [ + 7.011938885764997, + 50.913718316850506 + ], + [ + 7.011150792020556, + 50.91351054474884 + ], + [ + 7.010038522531553, + 50.913149546364096 + ], + [ + 7.009903643233905, + 50.9131057684212 + ], + [ + 7.008855615889525, + 50.91270887530044 + ], + [ + 7.007822049939893, + 50.91228290166012 + ], + [ + 7.007763594789363, + 50.91225448646236 + ], + [ + 7.006569604545247, + 50.91167421850296 + ], + [ + 7.0065458413217865, + 50.911662904121044 + ], + [ + 7.006455975147945, + 50.911620113981954 + ], + [ + 7.005856364820367, + 50.91129287536333 + ], + [ + 7.004555462712401, + 50.91060560926332 + ], + [ + 7.004169293293067, + 50.910380772045045 + ], + [ + 7.003612611704566, + 50.91005665166474 + ], + [ + 7.00348173477807, + 50.90995439970067 + ], + [ + 7.003182952509196, + 50.90981979083887 + ], + [ + 7.001942604888328, + 50.90900890988283 + ], + [ + 7.001563873735592, + 50.9087087524322 + ], + [ + 7.00156245390525, + 50.90870762728484 + ], + [ + 7.001141722601013, + 50.90837430247106 + ], + [ + 7.000988546924829, + 50.908266036531515 + ], + [ + 7.000916659062559, + 50.90821559318259 + ], + [ + 7.000832295888491, + 50.90814035705294 + ], + [ + 7.0006818316171495, + 50.90800599767838 + ], + [ + 7.00035235857446, + 50.907712173344684 + ], + [ + 6.9996076081730765, + 50.90704767892006 + ], + [ + 6.999513919242599, + 50.90696829682164 + ], + [ + 6.997723864637116, + 50.905449848295184 + ], + [ + 6.996931822960696, + 50.90477099815754 + ], + [ + 6.9955130465931425, + 50.903555161461995 + ], + [ + 6.994499857406656, + 50.90263591721945 + ], + [ + 6.993234153114527, + 50.90158604046002 + ], + [ + 6.993096235643226, + 50.90147143193622 + ], + [ + 6.993069589715436, + 50.90144846589586 + ], + [ + 6.9930485879984445, + 50.90143021611502 + ], + [ + 6.992699866502709, + 50.901055809313476 + ], + [ + 6.9928281472201475, + 50.90099152193361 + ], + [ + 6.9924075997350705, + 50.90066653363383 + ], + [ + 6.992405914879893, + 50.90066523203075 + ], + [ + 6.990545893296059, + 50.89922778561654 + ], + [ + 6.990450006800289, + 50.89927777147103 + ], + [ + 6.990423935438626, + 50.89929142748961 + ], + [ + 6.990397848041919, + 50.89930509222012 + ], + [ + 6.99037274446658, + 50.89931840154353 + ], + [ + 6.990372692027483, + 50.89931843032002 + ], + [ + 6.990345977395329, + 50.89933259058811 + ], + [ + 6.990319933428661, + 50.89934626953992 + ], + [ + 6.990293960748176, + 50.899359911040285 + ], + [ + 6.990227193515985, + 50.89939553593296 + ], + [ + 6.990204562908321, + 50.89940759450175 + ], + [ + 6.990181932327687, + 50.89941965216729 + ], + [ + 6.990113484089073, + 50.89945646040807 + ], + [ + 6.990103252804881, + 50.89946203662734 + ], + [ + 6.990087345886727, + 50.89947070609265 + ], + [ + 6.990061207707186, + 50.899484950872456 + ], + [ + 6.990008792224711, + 50.89951353245329 + ], + [ + 6.9899389383437205, + 50.89955107186118 + ], + [ + 6.989469514863427, + 50.899810982533886 + ], + [ + 6.989030979698892, + 50.90006631421889 + ], + [ + 6.988489122747334, + 50.900390120216 + ], + [ + 6.987959221319514, + 50.90072173318766 + ], + [ + 6.987933834102308, + 50.90073785935113 + ], + [ + 6.9879084453688645, + 50.90075398728175 + ], + [ + 6.987857665239378, + 50.90078623768446 + ], + [ + 6.98784486780566, + 50.90079441543535 + ], + [ + 6.987832000173091, + 50.90080263784285 + ], + [ + 6.987756828453483, + 50.90085100812069 + ], + [ + 6.987732072978567, + 50.90086699313837 + ], + [ + 6.987707320329118, + 50.90088297819958 + ], + [ + 6.987168332222469, + 50.90123578937998 + ], + [ + 6.986642719969122, + 50.90159630628626 + ], + [ + 6.986627973350112, + 50.901606565616724 + ], + [ + 6.9866131592540155, + 50.901616872347695 + ], + [ + 6.986535966555881, + 50.90167065181928 + ], + [ + 6.985374796039525, + 50.90250488223927 + ], + [ + 6.984240705860847, + 50.90341168653238 + ], + [ + 6.982819684703669, + 50.9046293233267 + ], + [ + 6.981446937842182, + 50.90600277144509 + ], + [ + 6.98096143056882, + 50.90652401367422 + ], + [ + 6.9805464096775465, + 50.90699683866942 + ], + [ + 6.980236503534256, + 50.90736396155774 + ], + [ + 6.979963602916713, + 50.90769256969437 + ], + [ + 6.979929632811565, + 50.907733667019876 + ], + [ + 6.979912664247354, + 50.90775419572836 + ], + [ + 6.979895662645825, + 50.907774764334555 + ], + [ + 6.979843813960539, + 50.9078378558638 + ], + [ + 6.979791964123543, + 50.90790103638869 + ], + [ + 6.97945875413495, + 50.908303231628224 + ], + [ + 6.979068210390721, + 50.908785374520015 + ], + [ + 6.97595861567316, + 50.912865095452425 + ], + [ + 6.973431219802186, + 50.91706659468823 + ], + [ + 6.97341239574585, + 50.917097884574964 + ], + [ + 6.97337866756777, + 50.91715803483031 + ], + [ + 6.973339985511434, + 50.917226494750494 + ], + [ + 6.975352324480896, + 50.91768001623028 + ], + [ + 6.97545735563659, + 50.91770430813655 + ], + [ + 6.975421849405439, + 50.91776771085101 + ], + [ + 6.975556054283106, + 50.917799592199565 + ], + [ + 6.975558194852575, + 50.91780010060062 + ], + [ + 6.975559866443345, + 50.91779712207529 + ], + [ + 6.975570123054568, + 50.91777887082689 + ], + [ + 6.975570163100971, + 50.91777880047068 + ], + [ + 6.9755906813351585, + 50.91774211638388 + ], + [ + 6.9755926188380295, + 50.91773858395669 + ], + [ + 6.975594245882998, + 50.91773561545079 + ], + [ + 6.975596426648114, + 50.91773611555453 + ], + [ + 6.976149963873194, + 50.91786311245431 + ], + [ + 6.976296082560571, + 50.91789666551015 + ], + [ + 6.976296130431138, + 50.91789667713267 + ], + [ + 6.976291623819464, + 50.91790462683856 + ], + [ + 6.9762887730282666, + 50.917909796497796 + ], + [ + 6.976288755985473, + 50.917909828579916 + ], + [ + 6.976288732826837, + 50.91790987044911 + ], + [ + 6.976288663428932, + 50.917909994259325 + ], + [ + 6.976286482620851, + 50.91791395418035 + ], + [ + 6.976286238724793, + 50.91791439424403 + ], + [ + 6.976286001061566, + 50.91791482182451 + ], + [ + 6.976282012106106, + 50.91792205560715 + ], + [ + 6.97631004639369, + 50.91794754256417 + ], + [ + 6.976353335906754, + 50.91798689978684 + ], + [ + 6.976394665401826, + 50.91797902548581 + ], + [ + 6.976423542060969, + 50.91797352458211 + ], + [ + 6.9764292892688715, + 50.91797242984882 + ], + [ + 6.976430071166002, + 50.917972280617306 + ], + [ + 6.976430327994123, + 50.9179722311073 + ], + [ + 6.9764740647955135, + 50.91796389846005 + ], + [ + 6.976476595526053, + 50.91796341619874 + ], + [ + 6.976476661471227, + 50.917963404750715 + ], + [ + 6.976476708817015, + 50.91796339567839 + ], + [ + 6.9764778571735055, + 50.91796142436557 + ], + [ + 6.976484553683196, + 50.917950025732054 + ], + [ + 6.976488986478279, + 50.91794239941438 + ], + [ + 6.976490708708469, + 50.917939465823515 + ], + [ + 6.9764928109294715, + 50.917939940265505 + ], + [ + 6.977143571589815, + 50.91808985668629 + ], + [ + 6.977143618117034, + 50.918089866486405 + ], + [ + 6.977137334443474, + 50.91810106635417 + ], + [ + 6.9771310124661285, + 50.91811262440926 + ], + [ + 6.9771866669726155, + 50.91814830670682 + ], + [ + 6.977210868660649, + 50.9181638257775 + ], + [ + 6.977474123459804, + 50.918232230965955 + ], + [ + 6.977475865285911, + 50.91823268295635 + ], + [ + 6.977475927218562, + 50.91823269841955 + ], + [ + 6.977475970824587, + 50.91823270996767 + ], + [ + 6.977477924572134, + 50.918229751594325 + ], + [ + 6.977486393775205, + 50.91821694012181 + ], + [ + 6.977509069936992, + 50.91818263148101 + ], + [ + 6.977509745888908, + 50.91818154595355 + ], + [ + 6.977510310026036, + 50.91818064376029 + ], + [ + 6.97751168821771, + 50.918178653935676 + ], + [ + 6.977513552253396, + 50.91817907656493 + ], + [ + 6.977749884800161, + 50.91823266236208 + ], + [ + 6.9779805854935635, + 50.918284924261236 + ], + [ + 6.977980632021163, + 50.91828493406103 + ], + [ + 6.977958328876474, + 50.91832501965711 + ], + [ + 6.9779489734370745, + 50.91834183332761 + ], + [ + 6.978007988295581, + 50.91835542448071 + ], + [ + 6.978017891735187, + 50.91835770508167 + ], + [ + 6.978024741020819, + 50.91835928252405 + ], + [ + 6.978085323824102, + 50.91837323536804 + ], + [ + 6.978108428578009, + 50.9183785560973 + ], + [ + 6.978111065719514, + 50.91837916389016 + ], + [ + 6.978136432906925, + 50.918385005871144 + ], + [ + 6.978137928961141, + 50.91838535106524 + ], + [ + 6.978137986745899, + 50.918385363758084 + ], + [ + 6.978138031812922, + 50.91838537443192 + ], + [ + 6.978140235380131, + 50.918382527401064 + ], + [ + 6.978177244019678, + 50.91833464167976 + ], + [ + 6.978179417822658, + 50.91833182471145 + ], + [ + 6.978181060041612, + 50.91833217873249 + ], + [ + 6.978299187391622, + 50.918358851618066 + ], + [ + 6.978300609126814, + 50.91835913886202 + ], + [ + 6.978301757187717, + 50.918359371899925 + ], + [ + 6.97830433035261, + 50.918359978580256 + ], + [ + 6.978362021708302, + 50.91837295573841 + ], + [ + 6.978418718387558, + 50.9183857069846 + ], + [ + 6.978418762071868, + 50.91838571673497 + ], + [ + 6.978402121600287, + 50.91841947713932 + ], + [ + 6.978436787554474, + 50.918472898866575 + ], + [ + 6.978437392900678, + 50.91847383570942 + ], + [ + 6.978505286339444, + 50.91850374218935 + ], + [ + 6.97938960673252, + 50.918694986173655 + ], + [ + 6.980324445652502, + 50.91891537577189 + ], + [ + 6.980401562999823, + 50.91894421309184 + ], + [ + 6.9805510797932335, + 50.91898053209176 + ], + [ + 6.980982855253583, + 50.919116597274055 + ], + [ + 6.981321072146999, + 50.919239874327914 + ], + [ + 6.981629602805992, + 50.91937158044987 + ], + [ + 6.982007652046142, + 50.91956958094799 + ], + [ + 6.982433426487408, + 50.91981859755307 + ], + [ + 6.982712674829587, + 50.92001131554201 + ], + [ + 6.982719723803855, + 50.920016213057245 + ], + [ + 6.98275108559971, + 50.92003876281446 + ], + [ + 6.98283257672979, + 50.92009734991512 + ], + [ + 6.98286163732353, + 50.92011823469951 + ], + [ + 6.982945116722902, + 50.92017823032674 + ], + [ + 6.98297259822542, + 50.92019799235415 + ], + [ + 6.983285186581829, + 50.920528324825696 + ], + [ + 6.9834859588274885, + 50.92080970802652 + ], + [ + 6.983644322225149, + 50.921076166103774 + ], + [ + 6.983695630068596, + 50.92119592116739 + ], + [ + 6.983725949572474, + 50.92125112967793 + ], + [ + 6.983732339632312, + 50.921282528455 + ], + [ + 6.9837370508972665, + 50.9213056950228 + ], + [ + 6.983737762805993, + 50.921306605797014 + ], + [ + 6.983737822381676, + 50.92130674173251 + ], + [ + 6.983738003952361, + 50.921307149588195 + ], + [ + 6.9837678167162585, + 50.92143568805504 + ], + [ + 6.983785476771951, + 50.92150880299628 + ], + [ + 6.9837855990080335, + 50.92150913517874 + ], + [ + 6.983785756587073, + 50.92150957139993 + ], + [ + 6.983785871857569, + 50.92151032796759 + ], + [ + 6.983785911757275, + 50.921511675922126 + ], + [ + 6.983804136319379, + 50.92160550154868 + ], + [ + 6.983822275294521, + 50.92160392617863 + ], + [ + 6.983866553808532, + 50.921832973320484 + ], + [ + 6.983882316753007, + 50.92189366297071 + ], + [ + 6.983886362987219, + 50.92202387256425 + ], + [ + 6.98386542325947, + 50.92245224339189 + ], + [ + 6.983859128580224, + 50.922547906508015 + ], + [ + 6.983798661239427, + 50.92267789662603 + ], + [ + 6.983792942206406, + 50.922749875621946 + ], + [ + 6.983773983787644, + 50.9229939769221 + ], + [ + 6.983703865055511, + 50.92395900110125 + ], + [ + 6.983705192437108, + 50.92452073541406 + ], + [ + 6.983703785244315, + 50.92470389323889 + ], + [ + 6.983703784723122, + 50.924703938198675 + ], + [ + 6.983761986611111, + 50.9249707261323 + ], + [ + 6.983769534616522, + 50.92499849162449 + ], + [ + 6.983799623640453, + 50.92510917317045 + ], + [ + 6.983800255875735, + 50.925111499983075 + ], + [ + 6.983800933650399, + 50.92511399126867 + ], + [ + 6.983801084689161, + 50.92511454609416 + ], + [ + 6.983801274710469, + 50.92511515375675 + ], + [ + 6.98380124095971, + 50.92511557228279 + ], + [ + 6.983801175168085, + 50.92511636979188 + ], + [ + 6.983801577186075, + 50.92511816289577 + ], + [ + 6.98380173992825, + 50.925119960860435 + ], + [ + 6.983874560861897, + 50.92535513725189 + ], + [ + 6.984045342379684, + 50.92574410516161 + ], + [ + 6.984283431421692, + 50.926242174545926 + ], + [ + 6.984366395764842, + 50.92638557449503 + ], + [ + 6.984445700779595, + 50.92649374561846 + ], + [ + 6.984695333283007, + 50.926834244080624 + ], + [ + 6.984988321976673, + 50.92728438585627 + ], + [ + 6.985218835722011, + 50.92753084628408 + ], + [ + 6.9855539865652485, + 50.927889177573064 + ], + [ + 6.986635670400883, + 50.92896882681161 + ], + [ + 6.98669281434424, + 50.92900699437336 + ], + [ + 6.986692910191093, + 50.92900701581275 + ], + [ + 6.9866954858783, + 50.92900758007582 + ], + [ + 6.986784832945844, + 50.929026985345324 + ], + [ + 6.986885022501374, + 50.92902263798062 + ], + [ + 6.9869566629446025, + 50.929094120926386 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Poll", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "701", + "Population_rel": 0.010356236903055035, + "Population_abs": 11268 + } + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.998326795438708, + 50.93535916502941 + ], + [ + 6.998562071101982, + 50.93524505481235 + ], + [ + 6.998566046568702, + 50.93527127042914 + ], + [ + 6.999237144681329, + 50.935008070181205 + ], + [ + 6.99953889732921, + 50.934896085774355 + ], + [ + 6.999783322705023, + 50.9348041879221 + ], + [ + 6.999957981946335, + 50.9347428223278 + ], + [ + 7.000065597966247, + 50.934666389203684 + ], + [ + 7.000251780208446, + 50.93459179925348 + ], + [ + 7.0002230747802505, + 50.93456669528082 + ], + [ + 7.000589228733734, + 50.93441091744545 + ], + [ + 7.0009785613801245, + 50.93425278061948 + ], + [ + 7.001081929115654, + 50.934210759353206 + ], + [ + 7.0011259083569195, + 50.934191647990644 + ], + [ + 7.001172930191396, + 50.93417536597143 + ], + [ + 7.001209497106434, + 50.93415691370885 + ], + [ + 7.001299822118427, + 50.934132070882086 + ], + [ + 7.001513817541539, + 50.934041130584596 + ], + [ + 7.001642284965554, + 50.933985404891956 + ], + [ + 7.002219321993081, + 50.93375838430488 + ], + [ + 7.002381555198062, + 50.93369391547017 + ], + [ + 7.002940718992422, + 50.93346313459747 + ], + [ + 7.003475495654122, + 50.933241951181266 + ], + [ + 7.003559349110762, + 50.933207401431524 + ], + [ + 7.0037252569797195, + 50.93313899228379 + ], + [ + 7.003961443294469, + 50.93304242371411 + ], + [ + 7.004100693774079, + 50.93298535438364 + ], + [ + 7.005676038888499, + 50.93234024371755 + ], + [ + 7.006052292363295, + 50.93218634013679 + ], + [ + 7.006905706708882, + 50.93184027071751 + ], + [ + 7.00757366556974, + 50.93156948027077 + ], + [ + 7.007967205256413, + 50.93140978406068 + ], + [ + 7.008380286821344, + 50.93124052955514 + ], + [ + 7.010183003896968, + 50.9305069836641 + ], + [ + 7.010288577448756, + 50.93046133596725 + ], + [ + 7.0104628225846515, + 50.93038888365023 + ], + [ + 7.0118900072894865, + 50.92979925226574 + ], + [ + 7.011945481190522, + 50.92977793670624 + ], + [ + 7.012680629376863, + 50.929472327166216 + ], + [ + 7.012890398896301, + 50.929330215328044 + ], + [ + 7.012925664913815, + 50.9293063239652 + ], + [ + 7.013158507101374, + 50.92920766632436 + ], + [ + 7.013412860279577, + 50.92914978667798 + ], + [ + 7.013802553840069, + 50.92901386763311 + ], + [ + 7.013837786119474, + 50.929001374059844 + ], + [ + 7.014442450055425, + 50.928748550529804 + ], + [ + 7.014501839814788, + 50.92871018173367 + ], + [ + 7.014526146942206, + 50.928644410419395 + ], + [ + 7.014478942005855, + 50.92858774482809 + ], + [ + 7.014441593526394, + 50.92854795629918 + ], + [ + 7.014422329796523, + 50.928523776389945 + ], + [ + 7.014805684197648, + 50.92833744614279 + ], + [ + 7.015188494647826, + 50.92815202006031 + ], + [ + 7.015271375362133, + 50.92811161480326 + ], + [ + 7.016055224760174, + 50.92774054205023 + ], + [ + 7.016138646882046, + 50.92770286238642 + ], + [ + 7.016190578026528, + 50.92767607309807 + ], + [ + 7.016272443345397, + 50.927635845043895 + ], + [ + 7.016310255857258, + 50.92762417613404 + ], + [ + 7.017150204615775, + 50.92720304157055 + ], + [ + 7.017192229289036, + 50.92717954973969 + ], + [ + 7.01741725218291, + 50.92704908938407 + ], + [ + 7.017552995393861, + 50.92697311443387 + ], + [ + 7.017623782902128, + 50.92706829644409 + ], + [ + 7.01766221455396, + 50.92712361290988 + ], + [ + 7.018455729446999, + 50.92664025429816 + ], + [ + 7.0186268594910945, + 50.92653584980609 + ], + [ + 7.018896534195791, + 50.92637294424766 + ], + [ + 7.019028687159348, + 50.92629361406576 + ], + [ + 7.019320940860072, + 50.92611825398863 + ], + [ + 7.02007344526173, + 50.92566706333488 + ], + [ + 7.020290727771836, + 50.925536753103216 + ], + [ + 7.020333200766074, + 50.92550990140912 + ], + [ + 7.020840208976805, + 50.925189356951364 + ], + [ + 7.020882097235681, + 50.925163057252384 + ], + [ + 7.021474850642642, + 50.92479196668841 + ], + [ + 7.021686744933505, + 50.92465890131525 + ], + [ + 7.02220693420541, + 50.92433083438789 + ], + [ + 7.0222692547003245, + 50.92429269570996 + ], + [ + 7.022445824960503, + 50.92418515900222 + ], + [ + 7.022616455948418, + 50.924097093536815 + ], + [ + 7.022661721995044, + 50.924074814855366 + ], + [ + 7.022737669709846, + 50.92406835059338 + ], + [ + 7.0227305996829354, + 50.92403128645639 + ], + [ + 7.022721001036363, + 50.92398281323031 + ], + [ + 7.022754943363294, + 50.92396263879093 + ], + [ + 7.023763705405372, + 50.92336791473453 + ], + [ + 7.023875668196217, + 50.92330178092331 + ], + [ + 7.023974571020678, + 50.92324333319054 + ], + [ + 7.024247008035271, + 50.92309755021717 + ], + [ + 7.024527856217544, + 50.922888609414564 + ], + [ + 7.0244291752441095, + 50.92286376609214 + ], + [ + 7.024467236317924, + 50.92284185673045 + ], + [ + 7.024617795091673, + 50.92275513587553 + ], + [ + 7.024874901589841, + 50.92260473275652 + ], + [ + 7.024956780706754, + 50.922557537771475 + ], + [ + 7.02518345257731, + 50.922428413474734 + ], + [ + 7.025259867056294, + 50.922383268128236 + ], + [ + 7.025375171891676, + 50.92231690163506 + ], + [ + 7.02601065684059, + 50.92195003129397 + ], + [ + 7.026022581216372, + 50.921918356535826 + ], + [ + 7.026276674303447, + 50.92175253184329 + ], + [ + 7.027497042100824, + 50.92098955944732 + ], + [ + 7.027885190887362, + 50.92075888821217 + ], + [ + 7.028145873570653, + 50.92060395159074 + ], + [ + 7.028541548042069, + 50.920431013651275 + ], + [ + 7.0285794067949485, + 50.92040703099142 + ], + [ + 7.028948709188521, + 50.92017293421582 + ], + [ + 7.0290763715437885, + 50.92003543915255 + ], + [ + 7.029343961564164, + 50.91986978448925 + ], + [ + 7.029392066922426, + 50.919839601618605 + ], + [ + 7.030686802903438, + 50.91902739161435 + ], + [ + 7.031011162256245, + 50.91882366723652 + ], + [ + 7.031186737567406, + 50.91871128272943 + ], + [ + 7.03201615184226, + 50.918180395814396 + ], + [ + 7.03235606150869, + 50.917962816091176 + ], + [ + 7.032435826736685, + 50.91793010782025 + ], + [ + 7.032968661487848, + 50.91759980437822 + ], + [ + 7.0330087445960245, + 50.917574989889246 + ], + [ + 7.032681157699115, + 50.91751780726543 + ], + [ + 7.032471108848565, + 50.91748114020823 + ], + [ + 7.032326493779261, + 50.917455896145874 + ], + [ + 7.0319825810296175, + 50.91736816079618 + ], + [ + 7.030984335405919, + 50.91719792762338 + ], + [ + 7.03090429979501, + 50.917182957364446 + ], + [ + 7.030744373972342, + 50.91715314864346 + ], + [ + 7.030573982499695, + 50.917078729671225 + ], + [ + 7.030416359766203, + 50.91699247523202 + ], + [ + 7.030331182571287, + 50.91692832382524 + ], + [ + 7.030229193334775, + 50.91685099164999 + ], + [ + 7.030173227547718, + 50.916789591410826 + ], + [ + 7.0301493567104565, + 50.916759373489775 + ], + [ + 7.030032442727885, + 50.91658983031474 + ], + [ + 7.030016107475294, + 50.916566066625826 + ], + [ + 7.029996185782794, + 50.91653842277176 + ], + [ + 7.029950249186197, + 50.916474774179704 + ], + [ + 7.029892215428357, + 50.916393840517415 + ], + [ + 7.029650696449768, + 50.91604784868727 + ], + [ + 7.0295968835672396, + 50.91597041632281 + ], + [ + 7.029430777305163, + 50.9156662730994 + ], + [ + 7.029398808828428, + 50.915608017991026 + ], + [ + 7.029359245503793, + 50.91553394780298 + ], + [ + 7.029314659067862, + 50.91535416786867 + ], + [ + 7.0292932514109, + 50.915168229141386 + ], + [ + 7.029349377918045, + 50.91496521453228 + ], + [ + 7.0294387086993915, + 50.914796195531736 + ], + [ + 7.029472599535929, + 50.914732017426296 + ], + [ + 7.029566932932634, + 50.91455606138781 + ], + [ + 7.029684407896321, + 50.91441082993994 + ], + [ + 7.02962636207338, + 50.91438221865822 + ], + [ + 7.029502579022096, + 50.91432784037997 + ], + [ + 7.029462603027819, + 50.91431074025099 + ], + [ + 7.029330022220627, + 50.91425391176297 + ], + [ + 7.029281415668124, + 50.91423329410739 + ], + [ + 7.029199973355458, + 50.914192218001105 + ], + [ + 7.029144609480548, + 50.91416385052149 + ], + [ + 7.028841141142771, + 50.91434088020951 + ], + [ + 7.028438483719149, + 50.91454144849517 + ], + [ + 7.027711625508249, + 50.91484302414151 + ], + [ + 7.027156790523423, + 50.915069653394625 + ], + [ + 7.0266320741055015, + 50.915283813107855 + ], + [ + 7.0260542631544505, + 50.91552126657586 + ], + [ + 7.025627202477501, + 50.9157014599712 + ], + [ + 7.0254586176013785, + 50.91576770691544 + ], + [ + 7.025326760543113, + 50.91581635910339 + ], + [ + 7.025288512440446, + 50.915829660376374 + ], + [ + 7.025185794559309, + 50.91585262106888 + ], + [ + 7.025121798198956, + 50.91586692563852 + ], + [ + 7.024979311658005, + 50.91589326043983 + ], + [ + 7.024833674364331, + 50.915908154798366 + ], + [ + 7.024765299387932, + 50.915915152325674 + ], + [ + 7.024567011215266, + 50.91593199645332 + ], + [ + 7.024383193206503, + 50.915929094822225 + ], + [ + 7.024113850270555, + 50.91592087333035 + ], + [ + 7.023882974557236, + 50.91589781889515 + ], + [ + 7.023599692672512, + 50.91587783116692 + ], + [ + 7.022237231132512, + 50.91569560616059 + ], + [ + 7.021787835294355, + 50.91562244060251 + ], + [ + 7.0215656225890335, + 50.91558622846654 + ], + [ + 7.021230171336459, + 50.91553162958728 + ], + [ + 7.01945811374379, + 50.915243081666475 + ], + [ + 7.0188413670971945, + 50.91514245085541 + ], + [ + 7.017515311559132, + 50.91492601862406 + ], + [ + 7.017441732930737, + 50.914914533090226 + ], + [ + 7.017395385085625, + 50.914906485186606 + ], + [ + 7.017315978190087, + 50.91489318187071 + ], + [ + 7.017134757221122, + 50.91486379578696 + ], + [ + 7.017051052968406, + 50.914850850084136 + ], + [ + 7.016867841767022, + 50.914971983053384 + ], + [ + 7.016524315761165, + 50.91520977791968 + ], + [ + 7.016382755271516, + 50.915283851312516 + ], + [ + 7.016158270398062, + 50.91540124455031 + ], + [ + 7.015979716912026, + 50.91549401352629 + ], + [ + 7.015758567776644, + 50.91560886261637 + ], + [ + 7.015706002311889, + 50.91565054261721 + ], + [ + 7.015676668009103, + 50.91567343481341 + ], + [ + 7.015344573134774, + 50.91587218632306 + ], + [ + 7.015078471030415, + 50.91604513914206 + ], + [ + 7.0150149301029785, + 50.9160866717593 + ], + [ + 7.014459553035655, + 50.91650157855745 + ], + [ + 7.014425918184054, + 50.91652760894747 + ], + [ + 7.014373658371162, + 50.91657027746894 + ], + [ + 7.014289629536067, + 50.91662191277297 + ], + [ + 7.01399625171457, + 50.916918135794724 + ], + [ + 7.013708474139521, + 50.91726868559775 + ], + [ + 7.013634100944428, + 50.91735459797818 + ], + [ + 7.01359436011482, + 50.917400566752065 + ], + [ + 7.013496405974225, + 50.91751349152826 + ], + [ + 7.013450273156373, + 50.91756658962228 + ], + [ + 7.013400429009944, + 50.91762387766724 + ], + [ + 7.013207289414556, + 50.91779873810903 + ], + [ + 7.013135694890802, + 50.9179565816782 + ], + [ + 7.013105828902163, + 50.91800067320479 + ], + [ + 7.012931227523876, + 50.91825817288973 + ], + [ + 7.012897925941915, + 50.918310258863436 + ], + [ + 7.012798213116894, + 50.91849890012864 + ], + [ + 7.012781277083663, + 50.91852882892981 + ], + [ + 7.012763217274794, + 50.918561255941334 + ], + [ + 7.01274905477301, + 50.91859047108862 + ], + [ + 7.012663474256492, + 50.91877198248367 + ], + [ + 7.0126026802977535, + 50.91895792615738 + ], + [ + 7.012509458047251, + 50.919295118322474 + ], + [ + 7.0125006142130575, + 50.919326658045 + ], + [ + 7.012477225077823, + 50.91941144210832 + ], + [ + 7.012450266827168, + 50.919563678632244 + ], + [ + 7.012406777656552, + 50.91981764324655 + ], + [ + 7.012400318173485, + 50.92001550954471 + ], + [ + 7.012378050300493, + 50.920172722996845 + ], + [ + 7.012369277434146, + 50.92044329027837 + ], + [ + 7.0123652620317065, + 50.92056544399148 + ], + [ + 7.012363223236291, + 50.9205982228964 + ], + [ + 7.012355731582678, + 50.920718577124084 + ], + [ + 7.012336384323832, + 50.920983117490835 + ], + [ + 7.012325858442569, + 50.921261617933915 + ], + [ + 7.012320686173125, + 50.92139708693275 + ], + [ + 7.012319843436048, + 50.9214282754239 + ], + [ + 7.0123174974402644, + 50.921503945580376 + ], + [ + 7.012308981560107, + 50.92177981448828 + ], + [ + 7.012302856255335, + 50.92211877012483 + ], + [ + 7.0122787460757605, + 50.922547030278594 + ], + [ + 7.012278189483569, + 50.922579882979726 + ], + [ + 7.012307100542615, + 50.92280414192806 + ], + [ + 7.012276857276106, + 50.923411150433466 + ], + [ + 7.012405765424864, + 50.92395445932414 + ], + [ + 7.012343388511876, + 50.923989468297485 + ], + [ + 7.012176900652923, + 50.92406464563589 + ], + [ + 7.012106135538762, + 50.92409650413251 + ], + [ + 7.012028032799568, + 50.92413154910907 + ], + [ + 7.011986994760645, + 50.92414829081333 + ], + [ + 7.011951477353587, + 50.92416257410987 + ], + [ + 7.011851804612671, + 50.924201296971475 + ], + [ + 7.011649247119307, + 50.92428547978864 + ], + [ + 7.011545961878851, + 50.924323379086324 + ], + [ + 7.011436321116055, + 50.92436205320411 + ], + [ + 7.011303812140701, + 50.92440921801593 + ], + [ + 7.011206915222417, + 50.9244416866193 + ], + [ + 7.010866386038991, + 50.92454577131468 + ], + [ + 7.010474196227096, + 50.92464796092257 + ], + [ + 7.01029854504922, + 50.924685410827486 + ], + [ + 7.009860818714878, + 50.9247699553352 + ], + [ + 7.009415165556055, + 50.92483341304192 + ], + [ + 7.009238330970347, + 50.92485574880351 + ], + [ + 7.009180133570007, + 50.924862339750916 + ], + [ + 7.008824024486547, + 50.92489572111988 + ], + [ + 7.008705826854225, + 50.9249036635505 + ], + [ + 7.0086539791390425, + 50.92490717967768 + ], + [ + 7.008593216102141, + 50.9249100013615 + ], + [ + 7.00840128830705, + 50.92491901497081 + ], + [ + 7.008165885272883, + 50.92492309083468 + ], + [ + 7.007621968885888, + 50.92492126844509 + ], + [ + 7.006520170572584, + 50.92482533301765 + ], + [ + 7.0055487076604495, + 50.92472502989688 + ], + [ + 7.00508661112929, + 50.9246799424782 + ], + [ + 7.003898786281493, + 50.924564036130775 + ], + [ + 7.002718451125962, + 50.92447602385824 + ], + [ + 7.002196569103303, + 50.924440955266974 + ], + [ + 7.001457482154703, + 50.924427562147834 + ], + [ + 7.001033372017879, + 50.92443481311074 + ], + [ + 7.000685239211541, + 50.924440803399406 + ], + [ + 7.000188411243445, + 50.924472907366166 + ], + [ + 6.999830804535064, + 50.92451586704158 + ], + [ + 6.999786875089096, + 50.92452111669815 + ], + [ + 6.999721609074042, + 50.92452816369999 + ], + [ + 6.999626756147784, + 50.92453836408045 + ], + [ + 6.999501526594293, + 50.92455198124026 + ], + [ + 6.999387367522508, + 50.924565373396234 + ], + [ + 6.99923191403411, + 50.92458537853653 + ], + [ + 6.999187999927982, + 50.92459103025135 + ], + [ + 6.998522293196976, + 50.92467669674824 + ], + [ + 6.998044472591199, + 50.92475980084268 + ], + [ + 6.997536214449538, + 50.924876155024315 + ], + [ + 6.997217582613933, + 50.92495555063576 + ], + [ + 6.997164965374533, + 50.92496930582007 + ], + [ + 6.996341430943892, + 50.92521620585648 + ], + [ + 6.995334415527627, + 50.925540212913994 + ], + [ + 6.994551992479312, + 50.92584685846453 + ], + [ + 6.993672238454679, + 50.9262720003066 + ], + [ + 6.993561912812756, + 50.92631786433335 + ], + [ + 6.992837413829465, + 50.92661896827807 + ], + [ + 6.992768067506737, + 50.926644573586984 + ], + [ + 6.992660458927424, + 50.92668879896302 + ], + [ + 6.991961535335574, + 50.92696669817322 + ], + [ + 6.990338779762711, + 50.92761201045014 + ], + [ + 6.990265123333455, + 50.927641797717605 + ], + [ + 6.990197922297859, + 50.927669331631044 + ], + [ + 6.990124772867128, + 50.927699204886295 + ], + [ + 6.989814280689562, + 50.927853574622794 + ], + [ + 6.989771476361759, + 50.92787487575353 + ], + [ + 6.989082721578889, + 50.92822079260019 + ], + [ + 6.987395563245552, + 50.928903159344 + ], + [ + 6.987282488171029, + 50.928952357126924 + ], + [ + 6.9869566629446025, + 50.929094120926386 + ], + [ + 6.987249746401102, + 50.929394718381 + ], + [ + 6.987228424556434, + 50.9294738698339 + ], + [ + 6.987257828223306, + 50.92951892735689 + ], + [ + 6.989632654787488, + 50.931678143120315 + ], + [ + 6.989742011061077, + 50.93178577120935 + ], + [ + 6.989699633902049, + 50.93193278517948 + ], + [ + 6.989683250576997, + 50.931988243533404 + ], + [ + 6.989710726192941, + 50.932120440812334 + ], + [ + 6.989804586155237, + 50.93224648465423 + ], + [ + 6.9909853423413315, + 50.93324596729736 + ], + [ + 6.991370597848386, + 50.93361503378038 + ], + [ + 6.991865763515085, + 50.934168345790646 + ], + [ + 6.992145013056439, + 50.93453570377307 + ], + [ + 6.9923985364257435, + 50.935090887105815 + ], + [ + 6.992582354372461, + 50.93564040576383 + ], + [ + 6.992604409923472, + 50.93570634483995 + ], + [ + 6.992638053709202, + 50.9358235891581 + ], + [ + 6.992793427822563, + 50.9363650941188 + ], + [ + 6.992975331165236, + 50.93668302741789 + ], + [ + 6.993131437276275, + 50.93684512596364 + ], + [ + 6.993315415502133, + 50.93698854586908 + ], + [ + 6.993356078524078, + 50.93702024623545 + ], + [ + 6.993408037831056, + 50.937060765745656 + ], + [ + 6.993523718894497, + 50.93707172627761 + ], + [ + 6.993598700662072, + 50.93707883758299 + ], + [ + 6.994030991531218, + 50.93712408895987 + ], + [ + 6.994413365559515, + 50.93698771082656 + ], + [ + 6.9953668217695695, + 50.936608529223996 + ], + [ + 6.995878659895932, + 50.93640095546057 + ], + [ + 6.995921053318803, + 50.93638373537975 + ], + [ + 6.996181121297662, + 50.936274278992855 + ], + [ + 6.996891149481238, + 50.935974173780046 + ], + [ + 6.997501718037881, + 50.935716261957936 + ], + [ + 6.9979937661828835, + 50.935485436097125 + ], + [ + 6.998181699960642, + 50.93541290394753 + ], + [ + 6.998216170921174, + 50.935398432370256 + ], + [ + 6.998257559255925, + 50.93538124187964 + ], + [ + 6.998326795438708, + 50.93535916502941 + ] + ] + ] + }, + "properties": { + "Stadtteil": "Humboldt/Gremberg", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "801", + "Population_rel": 0.013886437998602992, + "Population_abs": 15109 + } + } + ] +} \ No newline at end of file diff --git a/frontend/assets/stadtteile_cologne.geojson.license b/frontend/assets/stadtteile_cologne.geojson.license new file mode 100644 index 00000000..dbfdfe15 --- /dev/null +++ b/frontend/assets/stadtteile_cologne.geojson.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +SPDX-FileCopyrightText: 2024 GeoBasis-DE / BKG +SPDX-License-Identifier: DL-DE-BY-2.0 diff --git a/frontend/assets/stadtteile_cologne_list.json b/frontend/assets/stadtteile_cologne_list.json new file mode 100644 index 00000000..4f658dab --- /dev/null +++ b/frontend/assets/stadtteile_cologne_list.json @@ -0,0 +1,604 @@ +[ + { + "Stadtteil": "Braunsfeld", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "304", + "Population_rel": 0.011246829160692622, + "Population_abs": 12237 + }, + { + "Stadtteil": "Muelheim", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "901", + "Population_rel": 0.039184221168339396, + "Population_abs": 42634 + }, + { + "Stadtteil": "Suerth", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "210", + "Population_rel": 0.01003639572074556, + "Population_abs": 10920 + }, + { + "Stadtteil": "Lindweiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "605", + "Population_rel": 0.0032020881585235837, + "Population_abs": 3484 + }, + { + "Stadtteil": "Junkersdorf", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "306", + "Population_rel": 0.01415297231719422, + "Population_abs": 15399 + }, + { + "Stadtteil": "Widdersdorf", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "309", + "Population_rel": 0.011445351273850227, + "Population_abs": 12453 + }, + { + "Stadtteil": "Eil", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "705", + "Population_rel": 0.008521745524061616, + "Population_abs": 9272 + }, + { + "Stadtteil": "Seeberg", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "603", + "Population_rel": 0.010228484246902687, + "Population_abs": 11129 + }, + { + "Stadtteil": "Grengel", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "709", + "Population_rel": 0.005118378000808794, + "Population_abs": 5569 + }, + { + "Stadtteil": "Buchforst", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "902", + "Population_rel": 0.0068526892393662, + "Population_abs": 7456 + }, + { + "Stadtteil": "Holweide", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "904", + "Population_rel": 0.019263078563288114, + "Population_abs": 20959 + }, + { + "Stadtteil": "Merheim", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "806", + "Population_rel": 0.010300172787765155, + "Population_abs": 11207 + }, + { + "Stadtteil": "Duennwald", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "907", + "Population_rel": 0.010678835336936142, + "Population_abs": 11619 + }, + { + "Stadtteil": "Bocklemuend/Mengenich", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "405", + "Population_rel": 0.00986544612330429, + "Population_abs": 10734 + }, + { + "Stadtteil": "Porz", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "706", + "Population_rel": 0.013807396786882834, + "Population_abs": 15023 + }, + { + "Stadtteil": "Muengersdorf", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "305", + "Population_rel": 0.008169736406749752, + "Population_abs": 8889 + }, + { + "Stadtteil": "Zollstock", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "205", + "Population_rel": 0.02145141722730782, + "Population_abs": 23340 + }, + { + "Stadtteil": "Klettenberg", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "301", + "Population_rel": 0.009716554538436086, + "Population_abs": 10572 + }, + { + "Stadtteil": "Urbach", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "707", + "Population_rel": 0.01195268556303077, + "Population_abs": 13005 + }, + { + "Stadtteil": "Neubrueck", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "809", + "Population_rel": 0.008312194404617477, + "Population_abs": 9044 + }, + { + "Stadtteil": "Stammheim", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "908", + "Population_rel": 0.007681702878570641, + "Population_abs": 8358 + }, + { + "Stadtteil": "Bayenthal", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "201", + "Population_rel": 0.009582368295283262, + "Population_abs": 10426 + }, + { + "Stadtteil": "Raderberg", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "203", + "Population_rel": 0.006152347340171317, + "Population_abs": 6694 + }, + { + "Stadtteil": "Rodenkirchen", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "208", + "Population_rel": 0.015909341568324693, + "Population_abs": 17310 + }, + { + "Stadtteil": "Mauenheim", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "502", + "Population_rel": 0.005209367302672696, + "Population_abs": 5668 + }, + { + "Stadtteil": "Ossendorf", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "406", + "Population_rel": 0.01095272232638506, + "Population_abs": 11917 + }, + { + "Stadtteil": "Vogelsang", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "404", + "Population_rel": 0.007579684570420205, + "Population_abs": 8247 + }, + { + "Stadtteil": "Wei\u00df", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "209", + "Population_rel": 0.005429028344546156, + "Population_abs": 5907 + }, + { + "Stadtteil": "Neuehrenfeld", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "402", + "Population_rel": 0.022265725524796883, + "Population_abs": 24226 + }, + { + "Stadtteil": "Ehrenfeld", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "401", + "Population_rel": 0.035298334620050734, + "Population_abs": 38406 + }, + { + "Stadtteil": "Hahnwald", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "207", + "Population_rel": 0.0018988272489981986, + "Population_abs": 2066 + }, + { + "Stadtteil": "Esch/Auweiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "607", + "Population_rel": 0.006420719826476968, + "Population_abs": 6986 + }, + { + "Stadtteil": "Suelz", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "302", + "Population_rel": 0.03378827984265284, + "Population_abs": 36763 + }, + { + "Stadtteil": "Lindenthal", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "303", + "Population_rel": 0.028208521745524063, + "Population_abs": 30692 + }, + { + "Stadtteil": "Nippes", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "501", + "Population_rel": 0.03375335465607882, + "Population_abs": 36725 + }, + { + "Stadtteil": "Bilderstoeckchen", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "507", + "Population_rel": 0.014425940222785927, + "Population_abs": 15696 + }, + { + "Stadtteil": "Ostheim", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "805", + "Population_rel": 0.01286165949781258, + "Population_abs": 13994 + }, + { + "Stadtteil": "Vingst", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "803", + "Population_rel": 0.01186996801588177, + "Population_abs": 12915 + }, + { + "Stadtteil": "Buchheim", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "903", + "Population_rel": 0.011759677953016433, + "Population_abs": 12795 + }, + { + "Stadtteil": "Hoehenhaus", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "906", + "Population_rel": 0.01447005624793206, + "Population_abs": 15744 + }, + { + "Stadtteil": "Lind", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "712", + "Population_rel": 0.00332064997610382, + "Population_abs": 3613 + }, + { + "Stadtteil": "Riehl", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "503", + "Population_rel": 0.010873681114664902, + "Population_abs": 11831 + }, + { + "Stadtteil": "Loevenich", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "308", + "Population_rel": 0.008442704312341459, + "Population_abs": 9186 + }, + { + "Stadtteil": "Rath/Heumar", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "808", + "Population_rel": 0.01082313150251829, + "Population_abs": 11776 + }, + { + "Stadtteil": "Neustadt/Sued", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "102", + "Population_rel": 0.03501709495974413, + "Population_abs": 38100 + }, + { + "Stadtteil": "Altstadt/Nord", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "103", + "Population_rel": 0.01683945443182236, + "Population_abs": 18322 + }, + { + "Stadtteil": "Brueck", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "807", + "Population_rel": 0.009427962207271792, + "Population_abs": 10258 + }, + { + "Stadtteil": "Longerich", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "506", + "Population_rel": 0.012702657990515055, + "Population_abs": 13821 + }, + { + "Stadtteil": "Langel", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "715", + "Population_rel": 0.003217712584096173, + "Population_abs": 3501 + }, + { + "Stadtteil": "Hoehenberg", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "804", + "Population_rel": 0.011558398588287196, + "Population_abs": 12576 + }, + { + "Stadtteil": "Ensen", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "703", + "Population_rel": 0.007082460203668982, + "Population_abs": 7706 + }, + { + "Stadtteil": "Volkhoven/Weiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "608", + "Population_rel": 0.005511745891695158, + "Population_abs": 5997 + }, + { + "Stadtteil": "Chorweiler", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "609", + "Population_rel": 0.011839638248593801, + "Population_abs": 12882 + }, + { + "Stadtteil": "Deutz", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "105", + "Population_rel": 0.014260505128487923, + "Population_abs": 15516 + }, + { + "Stadtteil": "Godorf", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "211", + "Population_rel": 0.002508179846329179, + "Population_abs": 2729 + }, + { + "Stadtteil": "Elsdorf", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "708", + "Population_rel": 0.0015753097312598801, + "Population_abs": 1714 + }, + { + "Stadtteil": "Immendorf", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "212", + "Population_rel": 0.001895150913569354, + "Population_abs": 2062 + }, + { + "Stadtteil": "Bickendorf", + "Stadtbezirk": "Ehrenfeld", + "Stadtteil_ID": "403", + "Population_rel": 0.015218190507701923, + "Population_abs": 16558 + }, + { + "Stadtteil": "Wahn", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "711", + "Population_rel": 0.006638542700636006, + "Population_abs": 7223 + }, + { + "Stadtteil": "Niehl", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "504", + "Population_rel": 0.01849656262637403, + "Population_abs": 20125 + }, + { + "Stadtteil": "Roggendorf/Thenhoven", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "611", + "Population_rel": 0.004171721627881328, + "Population_abs": 4539 + }, + { + "Stadtteil": "Flittard", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "909", + "Population_rel": 0.007414249476122201, + "Population_abs": 8067 + }, + { + "Stadtteil": "Dellbrueck", + "Stadtbezirk": "Muelheim", + "Stadtteil_ID": "905", + "Population_rel": 0.020132531892209846, + "Population_abs": 21905 + }, + { + "Stadtteil": "Altstadt/Sued", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "101", + "Population_rel": 0.025717804492481892, + "Population_abs": 27982 + }, + { + "Stadtteil": "Neustadt/Nord", + "Stadtbezirk": "Innenstadt", + "Stadtteil_ID": "104", + "Population_rel": 0.02631520899966913, + "Population_abs": 28632 + }, + { + "Stadtteil": "Rondorf", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "206", + "Population_rel": 0.008599867651924562, + "Population_abs": 9357 + }, + { + "Stadtteil": "Meschenich", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "213", + "Population_rel": 0.0073747288702621224, + "Population_abs": 8024 + }, + { + "Stadtteil": "Weiden", + "Stadtbezirk": "Lindenthal", + "Stadtteil_ID": "307", + "Population_rel": 0.016040770559905885, + "Population_abs": 17453 + }, + { + "Stadtteil": "Finkenberg", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "716", + "Population_rel": 0.006271828241608764, + "Population_abs": 6824 + }, + { + "Stadtteil": "Raderthal", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "204", + "Population_rel": 0.004475019300761001, + "Population_abs": 4869 + }, + { + "Stadtteil": "Merkenich", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "601", + "Population_rel": 0.005390426822543289, + "Population_abs": 5865 + }, + { + "Stadtteil": "Westhoven", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "702", + "Population_rel": 0.005144112348810705, + "Population_abs": 5597 + }, + { + "Stadtteil": "Pesch", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "606", + "Population_rel": 0.007126576228815117, + "Population_abs": 7754 + }, + { + "Stadtteil": "Weidenpesch", + "Stadtbezirk": "Nippes", + "Stadtteil_ID": "505", + "Population_rel": 0.012723796919230911, + "Population_abs": 13844 + }, + { + "Stadtteil": "Kalk", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "802", + "Population_rel": 0.022175655306790193, + "Population_abs": 24128 + }, + { + "Stadtteil": "Gremberghoven", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "704", + "Population_rel": 0.002819749273923753, + "Population_abs": 3068 + }, + { + "Stadtteil": "Zuendorf", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "714", + "Population_rel": 0.0107496047939414, + "Population_abs": 11696 + }, + { + "Stadtteil": "Heimersdorf", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "604", + "Population_rel": 0.005706591669423919, + "Population_abs": 6209 + }, + { + "Stadtteil": "Wahnheide", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "710", + "Population_rel": 0.007240542627109298, + "Population_abs": 7878 + }, + { + "Stadtteil": "Marienburg", + "Stadtbezirk": "Rodenkirchen", + "Stadtteil_ID": "202", + "Population_rel": 0.006670710635638396, + "Population_abs": 7258 + }, + { + "Stadtteil": "Worringen", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "612", + "Population_rel": 0.00940222785926988, + "Population_abs": 10230 + }, + { + "Stadtteil": "Fuehlingen", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "602", + "Population_rel": 0.0019236425131428992, + "Population_abs": 2093 + }, + { + "Stadtteil": "Blumenberg", + "Stadtbezirk": "Chorweiler", + "Stadtteil_ID": "610", + "Population_rel": 0.004867468107790155, + "Population_abs": 5296 + }, + { + "Stadtteil": "Libur", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "713", + "Population_rel": 0.0010284548362192566, + "Population_abs": 1119 + }, + { + "Stadtteil": "Poll", + "Stadtbezirk": "Porz", + "Stadtteil_ID": "701", + "Population_rel": 0.010356236903055035, + "Population_abs": 11268 + }, + { + "Stadtteil": "Humboldt/Gremberg", + "Stadtbezirk": "Kalk", + "Stadtteil_ID": "801", + "Population_rel": 0.013886437998602992, + "Population_abs": 15109 + } +] diff --git a/frontend/assets/stadtteile_cologne_list.json.license b/frontend/assets/stadtteile_cologne_list.json.license new file mode 100644 index 00000000..dbfdfe15 --- /dev/null +++ b/frontend/assets/stadtteile_cologne_list.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +SPDX-FileCopyrightText: 2024 GeoBasis-DE / BKG +SPDX-License-Identifier: DL-DE-BY-2.0 diff --git a/frontend/locales/de-global.json5 b/frontend/locales/de-global.json5 index 86a1497f..a26ca8f0 100644 --- a/frontend/locales/de-global.json5 +++ b/frontend/locales/de-global.json5 @@ -31,6 +31,9 @@ LK: 'Landkreis', KS: 'Kreisfreie Stadt', SK: 'Stadtkreis', + /* [CDtemp-begin] */ + ST: 'Stadtteil', + /* [CDtemp-end] */ }, scenario: { add: 'Szenario hinzufügen', diff --git a/frontend/locales/en-global.json5 b/frontend/locales/en-global.json5 index de96694e..3796540a 100644 --- a/frontend/locales/en-global.json5 +++ b/frontend/locales/en-global.json5 @@ -40,6 +40,9 @@ LK: 'Rural District', KS: 'Urban District', SK: 'Urban District', + /* [CDtemp-begin] */ + ST: 'City District', + /* [CDtemp-end] */ }, scenario: { add: 'Add scenario', diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 04b67b26..6dc46980 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -32,11 +32,20 @@ import {CaseDataByNode} from 'types/caseData'; import {GroupResponse} from 'types/group'; import {Simulations, SimulationModel, SimulationDataByNode} from 'types/scenario'; import {Dictionary} from 'util/util'; +import data from '../assets/lk_germany_reduced.geojson?url'; +import {FeatureCollection, FeatureProperties} from 'types/map'; +import cologneDistricts from '../assets/stadtteile_cologne.geojson?url'; +import {District} from 'types/cologneDistricts'; +import searchbarMapData from '../assets/lk_germany_reduced_list.json?url'; +import searchbarCologneData from '../assets/stadtteile_cologne_list.json'; +import {useTranslation} from 'react-i18next'; // Create the context export const DataContext = createContext<{ + geoData: FeatureCollection | undefined; mapData: {id: string; value: number}[] | undefined; areMapValuesFetching: boolean; + searchBarData: FeatureProperties[] | undefined; chartCaseData: {day: string; value: number}[] | undefined; chartSimulationData: ({day: string; value: number}[] | null)[] | undefined; chartPercentileData: {day: string; value: number}[][] | undefined; @@ -57,8 +66,10 @@ export const DataContext = createContext<{ scenarioSimulationDataFirstCardFiltersValues: Dictionary | undefined; scenarioSimulationDataSecondCardFiltersValues: Dictionary | undefined; }>({ + geoData: undefined, mapData: undefined, areMapValuesFetching: false, + searchBarData: undefined, chartCaseData: undefined, chartSimulationData: undefined, chartPercentileData: undefined, @@ -82,7 +93,10 @@ export const DataContext = createContext<{ // Create a provider component export const DataProvider = ({children}: {children: React.ReactNode}) => { + const {t} = useTranslation(); + const [geoData, setGeoData] = useState(); const [mapData, setMapData] = useState<{id: string; value: number}[] | undefined>(undefined); + const [searchBarData, setSearchBarData] = useState(undefined); const [processedChartCaseData, setProcessedChartCaseData] = useState<{day: string; value: number}[] | undefined>( undefined ); @@ -262,6 +276,110 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { {skip: !selectedDistrict || selectedDistrict === undefined || Object.keys(selectedDistrict).length == 0} ); + useEffect(() => { + /* [CDtemp-begin] */ + // Fetch both in one Promise + Promise.all([ + fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }).then((result) => result.json()), + fetch(cologneDistricts, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }).then((result) => result.json()), + ]).then( + // on promises accept + ([geodata, colognedata]: [GeoJSON.FeatureCollection, GeoJSON.FeatureCollection]) => { + // Remove Cologne from data + geodata.features = geodata.features.filter((feat) => feat.properties!['RS'] !== '05315'); + // Add RS, GEN, BEZ to cologne districts + geodata.features.push( + ...colognedata.features.map((feat) => { + // Append Stadtteil ID to AGS + feat.properties!['RS'] = `05315${feat.properties!['Stadtteil_ID']}`; + // Append Name (e.g. Köln - Braunsfeld (Lindenthal)) + feat.properties!['GEN'] = `Köln - ${feat.properties!['Stadtteil']} (${feat.properties!['Stadtbezirk']})`; + // Use ST for Stadtteil + feat.properties!['BEZ'] = 'ST'; + return feat; + }) + ); + setGeoData(geodata as FeatureCollection); + }, + // on promises reject + () => { + console.warn('Failed to fetch geoJSON'); + } + ); + /* [CDtemp-end] */ + fetch(data, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => response.json()) + .then( + // resolve Promise + (geojson: FeatureCollection) => { + setGeoData(geojson); + }, + // reject promise + () => { + console.warn('Failed to fetch geoJSON'); + } + ); + }, []); + + useEffect(() => { + // get option list from assets + fetch(searchbarMapData, { + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }) + .then((response) => { + // interpret content as JSON + return response.json(); + }) + .then( + // Resolve Promise + (jsonlist: FeatureProperties[]) => { + /* [CDtemp-begin] */ + // append germany to list + jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''}); + // append city districts + jsonlist.push( + ...(searchbarCologneData as unknown as Array).map((dist) => { + return { + RS: `05315${dist.Stadtteil_ID}`, + GEN: `Köln - ${dist.Stadtteil} (${dist.Stadtbezirk})`, + BEZ: 'ST', + }; + }) + ); + /* [CDtemp-end] */ + // sort list to put germany at the right place (loading and sorting takes 1.5 ~ 2 sec) + jsonlist.sort((a: FeatureProperties, b: FeatureProperties) => { + return a.GEN.toString().localeCompare(b.GEN.toString()); + }); + // fill countyList state with list + setSearchBarData(jsonlist); + }, + // Reject Promise + () => { + console.warn('Did not receive proper county list'); + } + ); + // this init should only run once on first render + }, [t]); + useEffect(() => { if (simulationModelsData && simulationModelsData.results.length > 0) { const {key} = simulationModelsData.results[0]; @@ -344,8 +462,10 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { return ( 0 - ? color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]) + ? color(getScenarioPrimaryColor(selectedScenario, theme)) : undefined, }) ); @@ -383,11 +384,9 @@ export default function LineChart({ // Fallback Tooltip (if HTML breaks for some reason) // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color tooltip: Tooltip.new(root, { - labelText: `[bold ${ - theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0] - }]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, + labelText: `[bold ${getScenarioPrimaryColor(scenario.id, theme)}]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, }), - stroke: color(theme.custom.scenarios[scenario.id % theme.custom.scenarios.length][0]), + stroke: color(getScenarioPrimaryColor(scenario.id, theme)), }) ); series.strokes.template.setAll({ @@ -422,11 +421,11 @@ export default function LineChart({ // Fallback Tooltip (if HTML breaks for some reason) // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) tooltip: Tooltip.new(root, { - labelText: `[bold ${theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]}]${ + labelText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${ groupFilter.name }:[/] {${groupFilter.name}}`, }), - stroke: color(theme.custom.scenarios[selectedScenario % theme.custom.scenarios.length][0]), + stroke: color(getScenarioPrimaryColor(selectedScenario, theme)), }) ); series.strokes.template.setAll({ diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx index 760ab72d..710fdbb8 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx @@ -124,7 +124,8 @@ export default function HeatLegendEdit({ if (selectedScenario == null || defaultLegends.length === 0) { return; } - const scenarioDefault = defaultLegends[selectedScenario % defaultLegends.length]; + const scenarioDefault = + selectedScenario === 0 ? defaultLegends[0] : defaultLegends[(selectedScenario % (defaultLegends.length - 1)) + 1]; const legends = [...heatmapLegends]; legends.unshift(scenarioDefault); diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 7fb9d586..13acfd80 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -32,6 +32,9 @@ interface MapProps { /** Optional fill opacity for the map regions. Default is 1. */ fillOpacity?: number; + /** Optional maximum zoom level for the map. Default is 4. */ + maxZoomLevel?: number; + /** Optional function to generate tooltip text for each region based on its data. Default is a function that returns the region's ID. */ tooltipText?: (regionData: FeatureProperties) => string; @@ -94,6 +97,7 @@ export default function HeatMap({ mapHeight = '650px', defaultFill = '#8c8c8c', fillOpacity = 1, + maxZoomLevel = 4, tooltipText = () => '{id}', tooltipTextWhileFetching = () => 'Loading...', defaultSelectedValue, @@ -173,7 +177,7 @@ export default function HeatMap({ const chart = root.container.children.push( am5map.MapChart.new(root, { projection: am5map.geoMercator(), - maxZoomLevel: 4, + maxZoomLevel: maxZoomLevel, maxPanOut: 0.4, zoomControl: am5map.ZoomControl.new(root, { paddingBottom: 25, @@ -292,6 +296,7 @@ export default function HeatMap({ setSelectedArea, theme.palette.background.default, theme.palette.primary.main, + maxZoomLevel, ]); // Highlight selected district diff --git a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx index 815786f3..387e36f7 100644 --- a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx +++ b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx @@ -4,12 +4,12 @@ import Container from '@mui/material/Container'; import {Box, Autocomplete, useTheme} from '@mui/material'; import SearchIcon from '@mui/icons-material/Search'; -import {SyntheticEvent, useEffect, useState} from 'react'; +import {SyntheticEvent} from 'react'; import React from 'react'; -import {FeatureProperties, FeatureCollection, Feature} from 'types/map'; +import {FeatureProperties} from 'types/map'; interface SearchBarProps { - data: undefined | FeatureCollection; + data: FeatureProperties[] | undefined; defaultValue?: FeatureProperties; sortProperty?: string; optionLabel: (option: FeatureProperties) => string; @@ -30,7 +30,6 @@ interface SearchBarProps { */ export default function SearchBar({ data, - defaultValue, sortProperty, optionLabel, autoCompleteValue, @@ -39,23 +38,8 @@ export default function SearchBar({ onChange, placeholder = '', }: SearchBarProps): JSX.Element { - const [featureproperties, setFeatureProperties] = useState([]); const theme = useTheme(); - // fetch data from URL, add default value and sort by sortProperty - useEffect(() => { - if (!data) return; - const properties = data.features.map((feature: Feature) => { - return feature.properties; - }); - if (defaultValue) properties.push(defaultValue); - if (sortProperty) { - properties.sort((a: FeatureProperties, b: FeatureProperties) => { - return a[sortProperty].toString().localeCompare(b[sortProperty].toString()); - }); - setFeatureProperties(properties); - } - }, [data, defaultValue, sortProperty]); return ( option[sortProperty].toString()[0] : undefined} // provide function to display options in dropdown menu diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index d675dd70..cd4ae2e4 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -3,7 +3,6 @@ import {useState, useEffect, useRef, useCallback, useMemo, useContext} from 'react'; import {useTranslation} from 'react-i18next'; -import data from '../../../assets/lk_germany_reduced.geojson?url'; import {Grid, Stack, useTheme} from '@mui/material'; import * as am5 from '@amcharts/amcharts5'; import React from 'react'; @@ -33,11 +32,20 @@ export default function MapContainer() { const dispatch = useAppDispatch(); const { + geoData, mapData, areMapValuesFetching, - }: {mapData: {id: string; value: number}[] | undefined; areMapValuesFetching: boolean} = useContext(DataContext) || { + searchBarData, + }: { + geoData: FeatureCollection | undefined; + mapData: {id: string; value: number}[] | undefined; + areMapValuesFetching: boolean; + searchBarData: FeatureProperties[] | undefined; + } = useContext(DataContext) || { + geoData: {type: 'FeatureCollection', features: []}, mapData: [], areMapValuesFetching: false, + searchBarData: [], }; const storeSelectedArea = useAppSelector((state) => state.dataSelection.district); @@ -53,7 +61,6 @@ export default function MapContainer() { }; }, [t]); - const [geoData, setGeoData] = useState(); const [selectedArea, setSelectedArea] = useState( storeSelectedArea.name != '' ? {RS: storeSelectedArea.ags, GEN: storeSelectedArea.name, BEZ: storeSelectedArea.type} @@ -73,27 +80,6 @@ export default function MapContainer() { const legendRef = useRef(null); - // fetch geojson - useEffect(() => { - fetch(data, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - }) - .then((response) => response.json()) - .then( - // resolve Promise - (geojson: FeatureCollection) => { - setGeoData(geojson); - }, - // reject promise - () => { - console.warn('Failed to fetch geoJSON'); - } - ); - }, []); - useEffect(() => { dispatch( selectDistrict({ @@ -143,7 +129,7 @@ export default function MapContainer() { > `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} @@ -184,6 +170,7 @@ export default function MapContainer() { selectedScenario={selectedScenario} idValuesToMap={'RS'} localization={localization} + maxZoomLevel={12} /> diff --git a/frontend/src/store/services/caseDataApi.ts b/frontend/src/store/services/caseDataApi.ts index 555cd650..a0025738 100644 --- a/frontend/src/store/services/caseDataApi.ts +++ b/frontend/src/store/services/caseDataApi.ts @@ -4,6 +4,11 @@ import {createApi, fetchBaseQuery} from '@reduxjs/toolkit/query/react'; import {CaseDataByDate, CaseDataByNode} from '../../types/caseData'; import {SimulationDataByNode} from '../../types/scenario'; +/* [CDtemp-begin] */ +import cologneData from '../../../assets/stadtteile_cologne_list.json'; +import {District} from 'types/cologneDistricts'; +import {deepCopy} from '../../util/util'; +/* [CDtemp-end] */ export const caseDataApi = createApi({ reducerPath: 'caseDataApi', @@ -15,12 +20,49 @@ export const caseDataApi = createApi({ const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; const compartments = arg.compartments ? `&compartments=${arg.compartments.join(',')}` : ''; + /* [CDtemp-begin] */ + let cologneDistrict = ''; + let node = ''; + // check if node is cologne city district (8 digits instead of 5) + if (arg.node.length > 5) { + // store city district (last 3) + cologneDistrict = arg.node.slice(-3); + // restore node to fetch cologne data + node = arg.node.slice(0, 5); + } else { + node = arg.node; + } + /* [CDtemp-end] */ // fetch all days - const secondResult = await fetchWithBQ(`/${arg.node}/?all${groups}${compartments}`); + const queryResult = await fetchWithBQ( + `/${ + /* [CDtemp-begin] */ + // arg.node + node + /* [CDtemp-end] */ + }/?all${groups}${compartments}` + ); // return error if any occurs - if (secondResult.error) return {error: secondResult.error}; + if (queryResult.error) return {error: queryResult.error}; - const result = secondResult.data as CaseDataByNode; + const result = queryResult.data as CaseDataByNode; + /* [CDtemp-begin] */ + // if node was cologne district apply weight and modify node id + if (cologneDistrict) { + result.results = result.results.map(({day, compartments}) => { + // find district info by Stadtteil_ID (cut before) + const dist = (cologneData as unknown as Array).find( + (dist) => dist.Stadtteil_ID == cologneDistrict + ); + Object.keys(compartments).forEach((compartmentName) => { + // apply district weight + compartments[compartmentName] *= dist!.Population_rel; + }); + // return modified results + return {day, compartments}; + }); + } + /* [CDtemp-end] */ return {data: result}; }, }), @@ -31,21 +73,98 @@ export const caseDataApi = createApi({ const compartments = arg.compartments ? `&compartments=${arg.compartments.join(',')}` : ''; // fetch all days - const secondResult = await fetchWithBQ(`/${arg.day}/?all${groups}${compartments}`); + const queryResult = await fetchWithBQ(`/${arg.day}/?all${groups}${compartments}`); // return error if any occurs - if (secondResult.error) return {error: secondResult.error}; + if (queryResult.error) return {error: queryResult.error}; - const result = secondResult.data as CaseDataByDate; + const result = queryResult.data as CaseDataByDate; + /* [CDtemp-begin] */ + // get data for cologne + const cologneResult = result.results.find((res) => res.name === '05315'); + // if cologne is in results also calculate districts + if (cologneResult) { + // loop thru cologne districts + (cologneData as unknown as Array).forEach((dist) => { + // calculate compartment data + const districtCompartments = deepCopy(cologneResult.compartments); + // loop thru compartments + Object.keys(districtCompartments).forEach((compName) => { + // apply district weight + districtCompartments[compName] *= dist.Population_rel; + }); + // create result entry for district + result.results.push({ + name: `05315${dist.Stadtteil_ID}`, + compartments: districtCompartments, + }); + }); + } + /* [CDtemp-end] */ return {data: result}; }, }), + // [CDtemp-begin] + /* + // [CDtemp-end] getCaseDataSingleSimulationEntry: builder.query({ query: (arg: CaseDataSingleSimulationEntryParameters) => `${arg.node}/?all&day=${arg.day}&groups=${ arg.groups && arg.groups.length > 0 ? arg.groups.join(',') : 'total' }`, }), + // [CDtemp-begin] + */ + getCaseDataSingleSimulationEntry: builder.query({ + async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { + const day = arg.day ? `&day=${arg.day}` : ''; + const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; + + let cologneDistrict = ''; + let node = ''; + // check if node is cologne city district (8 digits instead of 5) + if (arg.node.length > 5) { + // store city district (last 3) + cologneDistrict = arg.node.slice(-3); + // restore node to fetch cologne data + node = arg.node.slice(0, 5); + } else { + node = arg.node; + } + + // fetch data + const queryResult = await fetchWithBQ( + `${ + /* [CDtemp-begin] */ + // arg.node + node + /* [CDtemp-end] */ + }/?all${day}${groups}` + ); + // return error if any occurs + if (queryResult.error) return {error: queryResult.error}; + const result = queryResult.data as SimulationDataByNode; + + // if node was cologne district apply weight + if (cologneDistrict) { + const distWeight = (cologneData as unknown as Array).find( + (dist) => dist.Stadtteil_ID === cologneDistrict + )!.Population_rel; + // loop through days array + // overwrite cologne results with weighted district results + result.results = result.results.map(({day, compartments}) => { + // loop through available compartments and apply weight + Object.keys(compartments).forEach((compName) => { + compartments[compName] *= distWeight; + }); + return {day, compartments}; + }); + } + + return {data: result}; + }, + }), + // [CDtemp-end] }), }); diff --git a/frontend/src/store/services/scenarioApi.ts b/frontend/src/store/services/scenarioApi.ts index 54fc0e3e..85c9e6ad 100644 --- a/frontend/src/store/services/scenarioApi.ts +++ b/frontend/src/store/services/scenarioApi.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {Dictionary} from 'util/util'; +import {deepCopy, Dictionary} from 'util/util'; import {createApi, fetchBaseQuery} from '@reduxjs/toolkit/query/react'; import { SimulationDataByDate, @@ -10,6 +10,40 @@ import { SimulationModels, Simulations, } from '../../types/scenario'; +/* [CDtemp-begin] */ +import cologneData from '../../../assets/stadtteile_cologne_list.json'; +import {District} from '../../types/cologneDistricts'; + +/** Checks if input node is a city district and returns the node to fetch data, and the city distrct suffix if there is one */ +function validateDistrictNode(inNode: string): {node: string; cologneDistrict?: string} { + if (inNode.length > 5) { + return {node: inNode.slice(0, 5), cologneDistrict: inNode.slice(-3)}; + } + return {node: inNode.slice(0, 5)}; +} + +/** Applies the city district weight if a district suffix is supplied */ +function modifyDistrictResults(cologneDistrict: string | undefined, data: SimulationDataByNode): SimulationDataByNode { + // pass data if it is not for a city district + if (!cologneDistrict) return data; + + // find weight for city district + const weight = (cologneData as unknown as Array).find( + (dist) => dist.Stadtteil_ID === cologneDistrict + )!.Population_rel; + + // loop thru days in data to replace compartment data + data.results = data.results.map(({day, compartments}) => { + // loop through compartments and apply weight + Object.keys(compartments).forEach((compName) => { + compartments[compName] *= weight; + }); + return {day, compartments}; + }); + // return modified data + return data; +} +/* [CDtemp-end] */ export const scenarioApi = createApi({ reducerPath: 'scenarioApi', @@ -38,30 +72,85 @@ export const scenarioApi = createApi({ async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; const compartments = arg.compartments ? `&compartments=${arg.compartments.join(',')}` : ''; - const currResult = await fetchWithBQ(`simulation/${arg.id}/${arg.day}/?all${groups}${compartments}`); if (currResult.error) return {error: currResult.error}; const data = currResult.data as SimulationDataByDate; - + /* [CDtemp-begin] */ + // get data for cologne + const cologneResult = data.results.find((res) => res.name === '05315'); + // if cologne is in results also calculate districts + if (cologneResult) { + // loop thru cologne districts + (cologneData as unknown as Array).forEach((dist) => { + // calculate compartment data + const districtCompartments = deepCopy(cologneResult.compartments); + // loop thru compartments + Object.keys(districtCompartments).forEach((compName) => { + // apply district weight + districtCompartments[compName] *= dist.Population_rel; + }); + // create result entry for district + data.results.push({ + name: `05315${dist.Stadtteil_ID}`, + compartments: districtCompartments, + }); + }); + } + /* [CDtemp-end] */ return {data}; }, }), getSimulationDataByNode: builder.query({ - query: (arg: SimulationDataByNodeParameters) => { + async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; const compartments = arg.compartments ? `&compartments=${arg.compartments.join(',')}&all` : ''; - return `simulation/${arg.id}/${arg.node}/?all${groups}${compartments}`; + /* [CDtemp-begin] */ + const {node, cologneDistrict} = validateDistrictNode(arg.node); + /* [CDtemp-end] */ + + const currResult = await fetchWithBQ( + `simulation/${arg.id}/${ + // [CDtemp] arg.node + node + }/?all${groups}${compartments}` + ); + if (currResult.error) return {error: currResult.error}; + // [CDtemp] const data = currResult.data as SimulationDataByNode; + + /* [CDtemp-begin] */ + // if node was cologne district apply weight + const data = modifyDistrictResults(cologneDistrict, currResult.data as SimulationDataByNode); + /* [CDtemp-end] */ + return {data: data}; }, }), getSingleSimulationEntry: builder.query({ - query: (arg: SingleSimulationEntryParameters) => - `simulation/${arg.id}/${arg.node}/?all&day=${arg.day}&groups=${ - arg.groups && arg.groups.length > 0 ? arg.groups.join(',') : 'total' - }`, + async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { + const day = arg.day ? `&day=${arg.day}` : ''; + const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; + + /* [CDtemp-begin] */ + const {node, cologneDistrict} = validateDistrictNode(arg.node); + /* [CDtemp-end] */ + + const currResult = await fetchWithBQ( + `simulation/${arg.id}/${ + // [CDtemp] arg.node + node + }/?all${day}${groups}` + ); + if (currResult.error) return {error: currResult.error}; + // [CDtemp] const data = currResult.data as SimulationDataByNode; + + /* [CDtemp-begin] */ + const data = modifyDistrictResults(cologneDistrict, currResult.data as SimulationDataByNode); + /* [CDtemp-end] */ + return {data: data}; + }, }), getMultipleSimulationDataByNode: builder.query({ @@ -71,15 +160,29 @@ export const scenarioApi = createApi({ const result: SimulationDataByNode[] = []; + /* [CDtemp-begin] */ + const {node, cologneDistrict} = validateDistrictNode(arg.node); + /* [CDtemp-end] */ + // fetch simulation data for each id for (const id of arg.ids) { - // fetch all entries - const fullResult = await fetchWithBQ(`simulation/${id}/${arg.node}/?all${groups}${compartments}`); + // fetch entry + const fullResult = await fetchWithBQ( + `simulation/${id}/${ + // [CDtemp] arg.node + node + }/?all${groups}${compartments}` + ); // return if errors occur if (fullResult.error) return {error: fullResult.error}; + // [CDtemp] const data = fullResult.data as SimulationDataByNode; + + /* [CDtemp-begin] */ + const data = modifyDistrictResults(cologneDistrict, fullResult.data as SimulationDataByNode); + /* [CDtemp-end] */ // put result into list to return - result[id] = fullResult.data as SimulationDataByNode; + result[id] = data; } return {data: result}; @@ -89,8 +192,17 @@ export const scenarioApi = createApi({ getPercentileData: builder.query({ async queryFn(arg, _queryApi, _extraOptions, fetchWithBQ) { const groups = arg.groups && arg.groups.length > 0 ? `&groups=${arg.groups.join(',')}` : '&groups=total'; + const compartments = arg.compartment ? `&compartments=${arg.compartment}` : ''; + + /* [CDtemp-begin] */ + const {node, cologneDistrict} = validateDistrictNode(arg.node); + /* [CDtemp-end] */ + const url = (percentile: number) => - `simulation/${arg.id}/${arg.node}/?all&percentile=${percentile}&compartments=${arg.compartment}${groups}`; + `simulation/${arg.id}/${ + // [CDtemp] arg.node + node + }/?all&percentile=${percentile}${compartments}${groups}`; const result: SelectedScenarioPercentileData[] = []; @@ -104,6 +216,34 @@ export const scenarioApi = createApi({ if (percentile75.error) return {error: percentile75.error}; result[1] = percentile75.data as SelectedScenarioPercentileData; + /* [CDtemp-begin] */ + if (cologneDistrict) { + // get weight for city district + const weight = (cologneData as unknown as Array).find( + (dist) => dist.Stadtteil_ID === cologneDistrict + )!.Population_rel; + + // loop through both results to adjust city district results + return { + data: result.map((percData) => { + // skip if results are null + if (percData.results === null) return percData; + + // loop thru days in data to replace compartment data + percData.results = percData.results.map(({day, compartments}) => { + // loop through compartments and apply weight + Object.keys(compartments).forEach((compName) => { + compartments[compName] *= weight; + }); + return {day, compartments}; + }); + // return omdified data + return percData; + }), + }; + } + /* [CDtemp-end] */ + return {data: result}; }, }), diff --git a/frontend/src/types/cologneDistricts.ts b/frontend/src/types/cologneDistricts.ts new file mode 100644 index 00000000..0b92edd5 --- /dev/null +++ b/frontend/src/types/cologneDistricts.ts @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 +/* [CDtemp-begin] */ +export interface District { + Stadtteil: string; + Stadtbezirk: string; + Stadtteil_ID: string; + Population_rel: number; + Population_abs: number; +} +/* [CDtemp-end] */ From e1b01788d8124a092c29bda91243f8aad1d8dba3 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 13 Jun 2024 15:09:49 +0200 Subject: [PATCH 044/119] :heavy_check_mark: Add CardtooltipTest --- .../MainCard/CardTooltip.test.tsx | 56 +++++++++++++++++++ .../CardsComponents/CardContainer.tsx | 2 +- .../ScenarioComponents/ScenarioContainer.tsx | 3 +- frontend/src/types/Filtertypes.ts | 34 ----------- frontend/src/types/group.ts | 23 ++++++++ 5 files changed, 81 insertions(+), 37 deletions(-) create mode 100644 frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx delete mode 100644 frontend/src/types/Filtertypes.ts diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx new file mode 100644 index 00000000..66eedcd8 --- /dev/null +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import React, {useState} from 'react'; +import {render, screen} from '@testing-library/react'; +import CardTooltip from 'components/ScenarioComponents/CardsComponents/MainCard/CardTooltip'; +import Theme from 'util/Theme'; +import {ThemeProvider} from '@mui/material'; +import {describe, test, expect} from 'vitest'; + +interface CardTooltipTestInterface { + hovertest: boolean; + index: number; + activeScenario: boolean; + scenarios: number[]; +} + +export default function CardTooltipTest({hovertest, scenarios, index, activeScenario}: CardTooltipTestInterface) { + const color = '#00000'; + const [activeScenarios, setActiveScenarios] = useState(scenarios); + const [numberSelectedScenario, setSelectedScenario] = useState(index); + const compartmentsExpanded = false; + + return ( + + + + ); +} + +describe('CardTooltip', () => { + test('renders the tooltip when hover is true', () => { + render(); + expect(screen.getByRole('button')).toBeInTheDocument(); + expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'scenario.deactivate'); + }); + test('does not render the tooltip when hover is false', () => { + render(); + expect(screen.queryByRole('button')).not.toBeInTheDocument(); + }); + test('renders the tooltip label scenario.activate correctly when hover is true and the sceanrio is not active', () => { + render(); + expect(screen.getByRole('button')).toBeInTheDocument(); + expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'scenario.activate'); + }); +}); diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx index 00c4d2cc..598ec99c 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -9,11 +9,11 @@ import React from 'react'; import {useTheme} from '@mui/material/styles'; import Box from '@mui/material/Box/Box'; import {Dictionary} from 'util/util'; -import {GroupFilter} from 'types/Filtertypes'; import {Scenario} from 'store/ScenarioSlice'; import {cardValue, filterValue} from 'types/Cardtypes'; import {Localization} from 'types/localization'; import {getScenarioPrimaryColor} from 'util/Theme'; +import {GroupFilter} from 'types/group'; interface CardContainerProps { /* A boolean indicating whether the compartments are expanded. */ diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index 3aacdda6..2ca73e03 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -4,7 +4,6 @@ import {Box, darken, useTheme} from '@mui/material'; import {Dictionary, Scenario, cardValue, filterValue} from '../../types/Cardtypes'; import {useContext, useEffect, useMemo, useState} from 'react'; -import {GroupFilter} from '../../types/Filtertypes'; import {GroupCategories, GroupSubcategories} from 'store/services/groupApi'; import {NumberFormatter} from 'util/hooks'; import {useTranslation} from 'react-i18next'; @@ -29,7 +28,7 @@ import CompartmentsRows from './CompartmentsComponents/CompartmentsRows'; import FilterDialogContainer from './FilterComponents/FilterDialogContainer'; import GeneralButton from './ExpandedButtonComponents/ExpandedButton'; import ReferenceDatePicker from './ReferenceDatePickerComponents.tsx/ReferenceDatePicker'; -import {GroupResponse} from 'types/group'; +import {GroupFilter, GroupResponse} from 'types/group'; import {SimulationModel, SimulationDataByNode, Simulations} from 'types/scenario'; import {CaseDataByNode} from 'types/caseData'; import {useAppDispatch, useAppSelector} from 'store/hooks'; diff --git a/frontend/src/types/Filtertypes.ts b/frontend/src/types/Filtertypes.ts deleted file mode 100644 index 664502e5..00000000 --- a/frontend/src/types/Filtertypes.ts +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 - -import {Dictionary} from './Cardtypes'; - -export interface GroupFilter { - id: string; - name: string; - isVisible: boolean; - groups: Dictionary; -} - -export interface GroupCategories { - count: number; - next: null; - previous: null; - results: { - key: string; - name: string; - description: string; - }[]; -} - -export interface GroupSubcategories { - count: number; - next: null; - previous: null; - results: { - key: string; - name: string; - description: string; - category: string; - }[]; -} diff --git a/frontend/src/types/group.ts b/frontend/src/types/group.ts index 35301778..3bd1cc37 100644 --- a/frontend/src/types/group.ts +++ b/frontend/src/types/group.ts @@ -22,3 +22,26 @@ export interface GroupFilter { isVisible: boolean; groups: Dictionary; } + +export interface GroupCategories { + count: number; + next: null; + previous: null; + results: { + key: string; + name: string; + description: string; + }[]; +} + +export interface GroupSubcategories { + count: number; + next: null; + previous: null; + results: { + key: string; + name: string; + description: string; + category: string; + }[]; +} From f68f2a2ccd4274706cb9ee79bf88db052ef423ab Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 13 Jun 2024 15:10:56 +0200 Subject: [PATCH 045/119] :wrench: Refactor Searchbar interface and fix tests --- .../components/Sidebar/SearchBar.test.tsx | 78 +++++++------------ .../Sidebar/MapComponents/SearchBar.tsx | 5 -- .../src/components/Sidebar/MapContainer.tsx | 3 +- 3 files changed, 31 insertions(+), 55 deletions(-) diff --git a/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx b/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx index 95c4a8fb..e650410d 100644 --- a/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/SearchBar.test.tsx @@ -11,51 +11,28 @@ import userEvent from '@testing-library/user-event'; import {FeatureProperties} from 'types/map'; const SearchBarTest = () => { - const geoData = { - type: 'FeatureCollection', - features: [ - { - type: 'Feature', - properties: { - RS: '09771', - GEN: 'Aichach-Friedberg', - BEZ: 'LK', - }, - geometry: { - type: 'Polygon', - coordinates: [ - [ - [10.0, 50.0], - [11.0, 50.0], - [11.0, 51.0], - [10.0, 51.0], - [10.0, 50.0], - ], - ], - }, - }, - { - type: 'Feature', - properties: { - RS: '12345', - GEN: 'Test District', - BEZ: 'Test Type', - }, - geometry: { - type: 'Polygon', - coordinates: [ - [ - [12.0, 52.0], - [13.0, 52.0], - [13.0, 53.0], - [12.0, 53.0], - [12.0, 52.0], - ], - ], - }, - }, - ], - }; + const geoData = [ + { + RS: '12345', + GEN: 'Test District', + BEZ: 'Test Type', + }, + { + RS: '09771', + GEN: 'Aichach-Friedberg', + BEZ: 'LK', + }, + { + RS: '00000', + GEN: 'germany', + BEZ: '', + }, + { + RS: '05315103', + GEN: 'Köln - Altstadt/Nord (Innenstadt)', + BEZ: 'ST', + }, + ]; const defaultValue = useMemo( () => ({ @@ -72,14 +49,12 @@ const SearchBarTest = () => { return ( `${option.GEN}${option.BEZ ? ` (BEZ.${option.BEZ})` : ''}`} autoCompleteValue={{ RS: selectedArea['RS'], GEN: selectedArea['GEN'], BEZ: selectedArea['BEZ'], - id: selectedArea['id'], }} onChange={(_event, option) => { if (option) { @@ -134,7 +109,14 @@ describe('Searchbar', () => { await userEvent.type(screen.getByPlaceholderText('germany'), '{ArrowDown}{Enter}'); - await screen.findByDisplayValue('Test District (BEZ.Test Type)'); + /* [CDtemp-begin] */ + await screen.findByDisplayValue('Köln - Altstadt/Nord (Innenstadt) (BEZ.ST)'); + // [CDtemp] await screen.findByDisplayValue('Test District (BEZ.Test Type)'); + // [CDtemp] expect(Store.getState().dataSelection.district).toStrictEqual({ + // [CDtemp] ags: '12345', + // [CDtemp] name: 'Test District', + // [CDtemp] type: 'Test Type', + // [CDtemp] }); }); afterEach(() => { diff --git a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx index 387e36f7..86e4a42e 100644 --- a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx +++ b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx @@ -10,7 +10,6 @@ import {FeatureProperties} from 'types/map'; interface SearchBarProps { data: FeatureProperties[] | undefined; - defaultValue?: FeatureProperties; sortProperty?: string; optionLabel: (option: FeatureProperties) => string; autoCompleteValue: FeatureProperties; @@ -18,10 +17,6 @@ interface SearchBarProps { valueEqualProperty?: string; onChange: (event: SyntheticEvent, value: FeatureProperties | null) => void; placeholder?: string; - background?: string; - borderColor?: string; - borderColorHover?: string; - borderColorFocus?: string; } /** diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index cd4ae2e4..18cd23f7 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -130,7 +130,6 @@ export default function MapContainer() { `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} autoCompleteValue={{ @@ -170,7 +169,7 @@ export default function MapContainer() { selectedScenario={selectedScenario} idValuesToMap={'RS'} localization={localization} - maxZoomLevel={12} + maxZoomLevel={32} /> From 18cac9e5e193dbfba7b865f8a43f60e11d0224b8 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 13 Jun 2024 15:22:40 +0200 Subject: [PATCH 046/119] :wrench: Small refactoring in the scss in order to mantain the layout across browser --- frontend/src/App.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/App.scss b/frontend/src/App.scss index cba144aa..0fc7a3c0 100644 --- a/frontend/src/App.scss +++ b/frontend/src/App.scss @@ -70,6 +70,7 @@ body { } } +/* Chrome, Edge, and Safari */ .datepicker-paddingTop { padding-top: 19px; } From 5a24fa037c52027844df7473db486d8136bd3181 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 13 Jun 2024 16:21:13 +0200 Subject: [PATCH 047/119] :fire: Remove unused file --- .../Sidebar/MapComponents/SearchBar.tsx | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx index 86e4a42e..b7d3ae14 100644 --- a/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx +++ b/frontend/src/components/Sidebar/MapComponents/SearchBar.tsx @@ -9,13 +9,46 @@ import React from 'react'; import {FeatureProperties} from 'types/map'; interface SearchBarProps { + /** + * Array of data items to be used as options in the autocomplete. + */ data: FeatureProperties[] | undefined; + + /** + * Property name by which the options are sorted and grouped. + */ sortProperty?: string; + + /** + * Function to determine the label for each option. + * @param option - The option whose label is being determined. + * @returns The label for the given option. + */ optionLabel: (option: FeatureProperties) => string; + + /** + * The currently selected value for the autocomplete. + */ autoCompleteValue: FeatureProperties; + + /** + * Property name used to compare options for equality. + */ optionEqualProperty?: string; + + /** + * Property name used to compare the selected value for equality. + */ valueEqualProperty?: string; + + /** + * Event handler for when the selected option changes. + */ onChange: (event: SyntheticEvent, value: FeatureProperties | null) => void; + + /** + * Placeholder text for the search input field. + */ placeholder?: string; } From 60f7fc0883731596944a987430916cb2d1954ac1 Mon Sep 17 00:00:00 2001 From: Serloni Date: Fri, 14 Jun 2024 16:21:29 +0200 Subject: [PATCH 048/119] :beetle: fix bug on flipping card title --- .../Scenario/CardsComponents/MainCard/CardTitle.test.tsx | 8 -------- .../CardsComponents/MainCard/CardTitle.tsx | 6 +----- .../CardsComponents/MainCard/MainCard.tsx | 4 +++- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx index 7f0345bd..df79e3d7 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTitle.test.tsx @@ -12,14 +12,6 @@ describe('CardTitle Component', () => { expect(screen.getByText('Test Label')).toBeInTheDocument(); }); - test('applies the correct styles when isFlipped is false', () => { - render(); - const titleElement = screen.getByText('Test Label'); - expect(titleElement).toHaveStyle({ - transform: 'rotateY(-180deg)', - }); - }); - test('applies the correct color when the color prop is provided', () => { render(); const titleElement = screen.getByText('Test Label'); diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx index 07750af8..ab572cce 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTitle.tsx @@ -7,9 +7,6 @@ interface CardTitleProps { /* Label for the card title */ label: string; - /* Boolean to determine if the card is flipped */ - isFlipped?: boolean; - /* Color of the card title */ color?: string; } @@ -17,7 +14,7 @@ interface CardTitleProps { /** * This component renders the title of a card with optional flipping and color customization. */ -export default function CardTitle({label, isFlipped = true, color}: CardTitleProps) { +export default function CardTitle({label, color}: CardTitleProps) { return ( diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx index 7d781794..c9fecdb7 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/MainCard.tsx @@ -151,10 +151,12 @@ function MainCard({ display: 'flex', height: '65px', alignItems: 'self-end', + justifyContent: 'left', width: 'full', + transform: activeScenarios?.includes(index) ? 'none' : 'rotateY(180deg)', }} > - + Date: Mon, 17 Jun 2024 14:28:30 +0200 Subject: [PATCH 049/119] :wrench: Refactor legend component by wrapping amchart components --- .../LineChartComponents/LineChart.tsx | 2 +- .../Sidebar/MapComponents/HeatLegend.tsx | 74 ++++++++----------- .../src/components/Sidebar/MapContainer.tsx | 15 ++-- frontend/src/components/shared/map/Root.ts | 28 +++++++ frontend/src/components/shared/map/legend.ts | 37 ++++++++++ frontend/src/store/services/groupApi.ts | 2 +- frontend/src/types/cologneDisticts.ts | 11 --- 7 files changed, 105 insertions(+), 64 deletions(-) create mode 100644 frontend/src/components/shared/map/Root.ts create mode 100644 frontend/src/components/shared/map/legend.ts delete mode 100644 frontend/src/types/cologneDisticts.ts diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 4a8e6f1d..3a301e0f 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -259,7 +259,7 @@ export default function LineChart({ rootRef.current?.dispose(); }; }, - // This effect should only run once. dispatch should not change during runtime + // This effect should only run once. [chartId, setSelectedDate] ); diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 8bc4de0b..54e09ffd 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -8,6 +8,8 @@ import React from 'react'; import {HeatmapLegend} from 'types/heatmapLegend'; import {useTheme} from '@mui/material/styles'; import {Localization} from 'types/localization'; +import useRoot from 'components/shared/map/Root'; +import useHeatLegend from 'components/shared/map/legend'; interface HeatProps { /** @@ -80,56 +82,42 @@ export default function HeatLegend({ const unique_id = useMemo(() => id + String(Date.now() + Math.random()), [id]); const theme = useTheme(); - useLayoutEffect(() => { - const root = am5.Root.new(unique_id); - const heatLegend = root.container.children.push( - am5.HeatLegend.new(root, { - orientation: 'horizontal', - startValue: min, - startText: displayText ? localization.formatNumber!(min) : ' ', - endValue: max, - endText: displayText ? localization.formatNumber!(max) : ' ', - // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color - startColor: am5.color(theme.palette.background.paper), - endColor: am5.color(theme.palette.background.paper), - }) - ); - - // compile stop list - const stoplist: {color: am5.Color; opacity: number; offset: number}[] = []; - legend.steps.forEach((item) => { - stoplist.push({ - color: am5.color(item.color), - // opacity of the color between 0..1 - opacity: 1, - // offset is stop position normalized to 0..1 unless already normalized - offset: legend.isNormalized ? item.value : (item.value - min) / (max - min), - }); - }); - heatLegend.markers.template.adapters.add('fillGradient', (gradient) => { - gradient?.set('stops', stoplist); - return gradient; - }); + const root = useRoot(unique_id); + + const heatLegendSettings = useMemo(() => { + return { + orientation: 'horizontal' as 'horizontal' | 'vertical', + startValue: min, + startText: displayText ? localization.formatNumber!(min) : ' ', + endValue: max, + endText: displayText ? localization.formatNumber!(max) : ' ', + // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color + startColor: am5.color(theme.palette.background.paper), + endColor: am5.color(theme.palette.background.paper), + }; + }, [min, max, displayText, localization.formatNumber, theme.palette.background.paper]); + const stoplist = useMemo(() => { + return legend.steps.map((item) => ({ + color: am5.color(item.color), + opacity: 1, + offset: legend.isNormalized ? item.value : (item.value - min) / (max - min), + })); + }, [legend, min, max]); + + const heatLegend = useHeatLegend(root, heatLegendSettings, stoplist); + + useLayoutEffect(() => { + if (!heatLegend) { + return; + } // expose Legend element to District map (for tooltip on event) exposeLegend(heatLegend); return () => { - root.dispose(); exposeLegend(null); }; - }, [ - displayText, - exposeLegend, - localization.formatNumber, - legend.isNormalized, - legend.steps, - max, - min, - theme.palette.background.paper, - unique_id, - localization, - ]); + }, [heatLegend, legend, min, max, exposeLegend]); return ; } diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index 18cd23f7..8187b722 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -23,6 +23,7 @@ import Container from '@mui/material/Container'; import Box from '@mui/material/Box'; import {selectDistrict} from 'store/DataSelectionSlice'; import legendPresets from '../../../assets/heatmap_legend_presets.json?url'; +import {selectHeatmapLegend} from 'store/UserPreferenceSlice'; export default function MapContainer() { const {t} = useTranslation(); @@ -51,6 +52,7 @@ export default function MapContainer() { const storeSelectedArea = useAppSelector((state) => state.dataSelection.district); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); + const storeHeatLegend = useAppSelector((state) => state.userPreference.selectedHeatmap); const defaultValue = useMemo(() => { return { @@ -67,14 +69,7 @@ export default function MapContainer() { : defaultValue ); const [aggregatedMax, setAggregatedMax] = useState(1); - const [legend, setLegend] = useState({ - name: 'uninitialized', - isNormalized: true, - steps: [ - {color: 'rgb(255,255,255)', value: 0}, - {color: 'rgb(255,255,255)', value: 1}, - ], - }); + const [legend, setLegend] = useState(storeHeatLegend); const [longLoad, setLongLoad] = useState(false); const [fixedLegendMaxValue, setFixedLegendMaxValue] = useState(null); @@ -90,6 +85,10 @@ export default function MapContainer() { ); }, [selectedArea, dispatch]); + useEffect(() => { + dispatch(selectHeatmapLegend({legend: legend})); + }, [legend, dispatch]); + const calculateToolTip = useCallback( (regionData: FeatureProperties) => { const bez = t(`BEZ.${regionData.BEZ}`); diff --git a/frontend/src/components/shared/map/Root.ts b/frontend/src/components/shared/map/Root.ts new file mode 100644 index 00000000..69db1567 --- /dev/null +++ b/frontend/src/components/shared/map/Root.ts @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {IRootSettings, Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {useLayoutEffect, useState} from 'react'; + +export default function useRoot( + id: string | HTMLElement, + settings?: IRootSettings, + initializer?: (root: Root) => void +): Root | null { + const [root, setRoot] = useState(); + + useLayoutEffect(() => { + const newRoot = Root.new(id, settings); + setRoot(newRoot); + + if (initializer) { + initializer(newRoot); + } + + return () => { + newRoot.dispose(); + }; + }, [id, settings, initializer]); + + return root ?? null; +} diff --git a/frontend/src/components/shared/map/legend.ts b/frontend/src/components/shared/map/legend.ts new file mode 100644 index 00000000..b379593c --- /dev/null +++ b/frontend/src/components/shared/map/legend.ts @@ -0,0 +1,37 @@ +import {useState, useLayoutEffect} from 'react'; +import {HeatLegend, IHeatLegendSettings} from '@amcharts/amcharts5'; +import * as am5 from '@amcharts/amcharts5'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useHeatLegend( + root: Root | null, + settings: IHeatLegendSettings, + stoplist: {color: am5.Color; opacity: number; offset: number}[], + initializer?: (legend: HeatLegend) => void +): HeatLegend | null { + const [legend, setLegend] = useState(); + + useLayoutEffect(() => { + if (!root) { + return; + } + const newLegend = root.container.children.push(am5.HeatLegend.new(root, settings)); + + newLegend.markers.template.adapters.add('fillGradient', (gradient) => { + gradient?.set('stops', stoplist); + return gradient; + }); + + setLegend(newLegend); + + if (initializer) { + initializer(newLegend); + } + + return () => { + newLegend.dispose(); + }; + }, [root, settings, initializer, stoplist]); + + return legend ?? null; +} diff --git a/frontend/src/store/services/groupApi.ts b/frontend/src/store/services/groupApi.ts index dbf75a6b..7430bb48 100644 --- a/frontend/src/store/services/groupApi.ts +++ b/frontend/src/store/services/groupApi.ts @@ -6,7 +6,7 @@ import {createApi, fetchBaseQuery} from '@reduxjs/toolkit/query/react'; import {GroupFilter, GroupResponse} from 'types/group'; /* [CDtemp-begin] */ import cologneData from '../../../assets/stadtteile_cologne_list.json'; -import {District} from '../../types/cologneDisticts'; +import {District} from '../../types/cologneDistricts'; /* [CDtemp-end] */ export const groupApi = createApi({ diff --git a/frontend/src/types/cologneDisticts.ts b/frontend/src/types/cologneDisticts.ts deleted file mode 100644 index 0b92edd5..00000000 --- a/frontend/src/types/cologneDisticts.ts +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) -// SPDX-License-Identifier: Apache-2.0 -/* [CDtemp-begin] */ -export interface District { - Stadtteil: string; - Stadtbezirk: string; - Stadtteil_ID: string; - Population_rel: number; - Population_abs: number; -} -/* [CDtemp-end] */ From c8d2124b020c6976c958761644be58aa9d9665d0 Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 17 Jun 2024 14:29:39 +0200 Subject: [PATCH 050/119] :wrench: Changed localization inside HeatLegend --- .../components/Sidebar/HeatLegend.test.tsx | 1 + .../Sidebar/MapComponents/HeatLegend.tsx | 25 ++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx b/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx index f1a7a047..a9b70bc2 100644 --- a/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx +++ b/frontend/src/__tests__/components/Sidebar/HeatLegend.test.tsx @@ -19,6 +19,7 @@ const HeatLegendTest = () => { ], }; }, []); + return ; }; diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 54e09ffd..5fccb708 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -52,7 +52,6 @@ interface HeatProps { /** * Optional localization settings for the legend. - * Includes number formatting and language overrides. */ localization?: Localization; } @@ -73,29 +72,37 @@ export default function HeatLegend({ margin: '5px', height: '50px', }, - localization = { - formatNumber: (value) => value.toLocaleString(), - customLang: 'global', - overrides: {}, - }, + localization, }: Readonly): JSX.Element { const unique_id = useMemo(() => id + String(Date.now() + Math.random()), [id]); const theme = useTheme(); const root = useRoot(unique_id); + // Memoize the default localization object to avoid infinite re-renders + const defaultLocalization = useMemo(() => { + return { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }; + }, []); + + // Use the provided localization or default to the memoized one + const localizationToUse = localization || defaultLocalization; + const heatLegendSettings = useMemo(() => { return { orientation: 'horizontal' as 'horizontal' | 'vertical', startValue: min, - startText: displayText ? localization.formatNumber!(min) : ' ', + startText: displayText ? localizationToUse.formatNumber!(min) : ' ', endValue: max, - endText: displayText ? localization.formatNumber!(max) : ' ', + endText: displayText ? localizationToUse.formatNumber!(max) : ' ', // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color startColor: am5.color(theme.palette.background.paper), endColor: am5.color(theme.palette.background.paper), }; - }, [min, max, displayText, localization.formatNumber, theme.palette.background.paper]); + }, [min, displayText, localizationToUse.formatNumber, max, theme.palette.background.paper]); const stoplist = useMemo(() => { return legend.steps.map((item) => ({ From e1aa36c7cf9eb5c7ac4fdebc0b8d47a4abe7d104 Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 17 Jun 2024 14:39:40 +0200 Subject: [PATCH 051/119] :sparkles: Add Reuse Compliance --- frontend/src/components/shared/map/legend.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/components/shared/map/legend.ts b/frontend/src/components/shared/map/legend.ts index b379593c..fcd35fac 100644 --- a/frontend/src/components/shared/map/legend.ts +++ b/frontend/src/components/shared/map/legend.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {useState, useLayoutEffect} from 'react'; import {HeatLegend, IHeatLegendSettings} from '@amcharts/amcharts5'; import * as am5 from '@amcharts/amcharts5'; From 4eefa34882d27e3c6cd8996cc829be9451e3dcee Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 17 Jun 2024 17:25:35 +0200 Subject: [PATCH 052/119] :wrench: Wrapped root,zoom and chart of HeatMap component --- .../Sidebar/MapComponents/HeatLegend.tsx | 17 ++- .../Sidebar/MapComponents/HeatMap.tsx | 136 +++++++++--------- frontend/src/components/shared/map/chart.ts | 35 +++++ frontend/src/components/shared/map/legend.ts | 5 - frontend/src/components/shared/map/zoom.ts | 34 +++++ frontend/src/util/hooks.ts | 10 ++ ...s.timestamp-1718637455791-fadc51df3efa.mjs | 55 +++++++ 7 files changed, 220 insertions(+), 72 deletions(-) create mode 100644 frontend/src/components/shared/map/chart.ts create mode 100644 frontend/src/components/shared/map/zoom.ts create mode 100644 frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 5fccb708..9cb01930 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useLayoutEffect, useMemo} from 'react'; +import {useCallback, useLayoutEffect, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import {Box} from '@mui/material'; import React from 'react'; @@ -112,7 +112,20 @@ export default function HeatLegend({ })); }, [legend, min, max]); - const heatLegend = useHeatLegend(root, heatLegendSettings, stoplist); + const heatLegend = useHeatLegend( + root, + heatLegendSettings, + stoplist, + useCallback( + (legend: am5.HeatLegend) => { + legend.markers.template.adapters.add('fillGradient', (gradient) => { + gradient?.set('stops', stoplist); + return gradient; + }); + }, + [stoplist] + ) + ); useLayoutEffect(() => { if (!heatLegend) { diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 13acfd80..82069976 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useState, useEffect, useRef, useMemo} from 'react'; +import {useState, useEffect, useRef, useMemo, useCallback} from 'react'; import * as am5 from '@amcharts/amcharts5'; import * as am5map from '@amcharts/amcharts5/map'; import {GeoJSON} from 'geojson'; @@ -15,6 +15,9 @@ import {Box} from '@mui/material'; import {useTheme} from '@mui/material/styles'; import React from 'react'; import {Localization} from 'types/localization'; +import useRoot from 'components/shared/map/Root'; +import useMapChart from 'components/shared/map/chart'; +import useZoomControl from 'components/shared/map/zoom'; interface MapProps { /** The data to be displayed on the map, in GeoJSON format. */ @@ -141,6 +144,70 @@ export default function HeatMap({ return isDataFetching; }, [isDataFetching, selectedScenario]); + const root = useRoot(mapId); + + const zoomSettings = useMemo(() => { + return { + paddingBottom: 25, + opacity: 50, + }; + }, []); + + const zoom = useZoomControl(root, zoomSettings); + + const chartSettings = useMemo(() => { + if (!zoom) return null; + return { + projection: am5map.geoMercator(), + maxZoomLevel: maxZoomLevel, + maxPanOut: 0.4, + zoomControl: zoom, + }; + }, [maxZoomLevel, zoom]); + + const chart = useMapChart( + root, + chartSettings, + useCallback( + (chart: am5map.MapChart) => { + if (!root) return; + const zoom = chart.get('zoomControl') as am5map.ZoomControl; + zoom.homeButton.set('visible', true); + const fixSVGPosition = { + width: 25, + height: 25, + dx: -5, + dy: -3, + }; + zoom.homeButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomResetURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + zoom.homeButton.events.on('click', () => { + setSelectedArea(defaultSelectedValue); + }); + zoom.plusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomInURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + zoom.minusButton.set( + 'icon', + am5.Picture.new(root, { + src: svgZoomOutURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); + }, + [root, setSelectedArea, defaultSelectedValue] + ) + ); + // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This // prevents that the indicator is showing for every little change. useEffect(() => { @@ -171,65 +238,7 @@ export default function HeatMap({ // Create Map with GeoData useEffect(() => { - if (!mapData) return; - // Create map instance - const root = am5.Root.new(mapId); - const chart = root.container.children.push( - am5map.MapChart.new(root, { - projection: am5map.geoMercator(), - maxZoomLevel: maxZoomLevel, - maxPanOut: 0.4, - zoomControl: am5map.ZoomControl.new(root, { - paddingBottom: 25, - opacity: 50, - }), - }) - ); - - // Add home button to reset pan & zoom - chart.get('zoomControl')?.homeButton.set('visible', true); - - // Settings to fix positioning of images on buttons - const fixSVGPosition = { - width: 25, - height: 25, - dx: -5, - dy: -3, - }; - - // Set svg icon for home button - chart.get('zoomControl')?.homeButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomResetURL, - ...fixSVGPosition, - }) as unknown as am5.Graphics - ); - - // Add function to select germany when home button is pressed - chart.get('zoomControl')?.homeButton.events.on('click', () => { - if (defaultSelectedValue) { - setSelectedArea(defaultSelectedValue); - } - }); - - // Set svg icon for plus button - chart.get('zoomControl')?.plusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomInURL, - ...fixSVGPosition, - }) as unknown as am5.Graphics - ); - - // Set svg icon for minus button - chart.get('zoomControl')?.minusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomOutURL, - ...fixSVGPosition, - }) as unknown as am5.Graphics - ); + if (!mapData || !root || !chart) return; // Create polygon series const polygonSeries = chart.series.push( @@ -280,12 +289,9 @@ export default function HeatMap({ }); setPolygonSeries(polygonSeries); - - return () => { - chart.dispose(); - root.dispose(); - }; }, [ + chart, + root, defaultFill, defaultSelectedValue, fillOpacity, diff --git a/frontend/src/components/shared/map/chart.ts b/frontend/src/components/shared/map/chart.ts new file mode 100644 index 00000000..9e695212 --- /dev/null +++ b/frontend/src/components/shared/map/chart.ts @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useState, useLayoutEffect} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {MapChart} from '@amcharts/amcharts5/map'; + +export default function useMapChart( + root: Root | null, + settings: am5map.IMapChartSettings | null, + initializer?: (chart: MapChart) => void +): MapChart | null { + const [chart, setChart] = useState(); + + useLayoutEffect(() => { + if (!root || !settings) { + return; + } + + const newChart = root.container.children.push(am5map.MapChart.new(root, settings)); + + setChart(newChart); + + if (initializer) { + initializer(newChart); + } + + return () => { + newChart.dispose(); + }; + }, [root, settings, initializer]); + + return chart ?? null; +} diff --git a/frontend/src/components/shared/map/legend.ts b/frontend/src/components/shared/map/legend.ts index fcd35fac..d7bddf1e 100644 --- a/frontend/src/components/shared/map/legend.ts +++ b/frontend/src/components/shared/map/legend.ts @@ -20,11 +20,6 @@ export default function useHeatLegend( } const newLegend = root.container.children.push(am5.HeatLegend.new(root, settings)); - newLegend.markers.template.adapters.add('fillGradient', (gradient) => { - gradient?.set('stops', stoplist); - return gradient; - }); - setLegend(newLegend); if (initializer) { diff --git a/frontend/src/components/shared/map/zoom.ts b/frontend/src/components/shared/map/zoom.ts new file mode 100644 index 00000000..a377f490 --- /dev/null +++ b/frontend/src/components/shared/map/zoom.ts @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useState, useLayoutEffect} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useZoomControl( + root: Root | null, + settings: am5map.IZoomControlSettings, + initializer?: (zoom: am5map.ZoomControl) => void +): am5map.ZoomControl | null { + const [zoom, setZoom] = useState(); + + useLayoutEffect(() => { + if (!root) { + return; + } + + const newZoom = am5map.ZoomControl.new(root, settings); + + setZoom(newZoom); + + if (initializer) { + initializer(newZoom); + } + + return () => { + newZoom.dispose(); + }; + }, [root, settings, initializer]); + + return zoom ?? null; +} diff --git a/frontend/src/util/hooks.ts b/frontend/src/util/hooks.ts index 026fe040..3bfc9caf 100644 --- a/frontend/src/util/hooks.ts +++ b/frontend/src/util/hooks.ts @@ -101,3 +101,13 @@ export function useEffectDebugger(effectHook: {(): void}, dependencies: Array(value: T): T { + const ref = useRef(); + + if (!ref.current) { + ref.current = value; + } + + return ref.current; +} diff --git a/frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs b/frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs new file mode 100644 index 00000000..21be38d9 --- /dev/null +++ b/frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs @@ -0,0 +1,55 @@ +// vite.config.mts +import { defineConfig, splitVendorChunkPlugin } from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/vite/dist/node/index.js"; +import react from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/@vitejs/plugin-react/dist/index.mjs"; +import tsconfigPaths from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/vite-tsconfig-paths/dist/index.mjs"; +import preload from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/unplugin-inject-preload/dist/vite.js"; +import eslintPlugin from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/@nabla/vite-plugin-eslint/src/index.mjs"; +var vite_config_default = defineConfig((configEnv) => { + return { + assetsInclude: ["**/*.md", "**/*.geojson", "**/*.json5"], + base: "./", + plugins: [ + react(), + eslintPlugin(), + tsconfigPaths(), + splitVendorChunkPlugin(), + preload({ + files: [ + { + entryMatch: /(LOKI_compact)+.+(.svg)$/, + attributes: { as: "image" } + }, + { + entryMatch: /(lk_germany_reduced)+.+(.geojson)$/, + attributes: { as: "fetch", crossOrigin: "anonymous" } + }, + { + entryMatch: /(lk_germany_reduced_list)+.+(.json)$/, + attributes: { as: "fetch", crossOrigin: "anonymous" } + } + ] + }) + ], + build: { + assetsInlineLimit: 0 + }, + test: { + environment: "jsdom", + setupFiles: "./src/__tests__/setup.ts", + coverage: { + reporter: ["text", "clover"], + reportsDirectory: "reports" + }, + threads: false, + server: { + deps: { + inline: ["vitest-canvas-mock"] + } + } + } + }; +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcubXRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcdmlvbF9naVxcXFxwcm9qZWN0c1xcXFxFU0lEXFxcXGZyb250ZW5kXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFx2aW9sX2dpXFxcXHByb2plY3RzXFxcXEVTSURcXFxcZnJvbnRlbmRcXFxcdml0ZS5jb25maWcubXRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9Vc2Vycy92aW9sX2dpL3Byb2plY3RzL0VTSUQvZnJvbnRlbmQvdml0ZS5jb25maWcubXRzXCI7Ly8gU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNCBHZXJtYW4gQWVyb3NwYWNlIENlbnRlciAoRExSKVxyXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MwLTEuMFxyXG5cclxuaW1wb3J0IHtkZWZpbmVDb25maWcsIHNwbGl0VmVuZG9yQ2h1bmtQbHVnaW59IGZyb20gJ3ZpdGUnO1xyXG5pbXBvcnQgcmVhY3QgZnJvbSAnQHZpdGVqcy9wbHVnaW4tcmVhY3QnO1xyXG5pbXBvcnQgdHNjb25maWdQYXRocyBmcm9tICd2aXRlLXRzY29uZmlnLXBhdGhzJztcclxuaW1wb3J0IHByZWxvYWQgZnJvbSAndW5wbHVnaW4taW5qZWN0LXByZWxvYWQvdml0ZSc7XHJcbmltcG9ydCBlc2xpbnRQbHVnaW4gZnJvbSAnQG5hYmxhL3ZpdGUtcGx1Z2luLWVzbGludCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoKGNvbmZpZ0VudikgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBhc3NldHNJbmNsdWRlOiBbJyoqLyoubWQnLCAnKiovKi5nZW9qc29uJywgJyoqLyouanNvbjUnXSxcclxuICAgIGJhc2U6ICcuLycsXHJcbiAgICBwbHVnaW5zOiBbXHJcbiAgICAgIHJlYWN0KCksXHJcbiAgICAgIGVzbGludFBsdWdpbigpLFxyXG4gICAgICB0c2NvbmZpZ1BhdGhzKCksXHJcbiAgICAgIHNwbGl0VmVuZG9yQ2h1bmtQbHVnaW4oKSxcclxuICAgICAgcHJlbG9hZCh7XHJcbiAgICAgICAgZmlsZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZW50cnlNYXRjaDogLyhMT0tJX2NvbXBhY3QpKy4rKC5zdmcpJC8sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHthczogJ2ltYWdlJ30sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbnRyeU1hdGNoOiAvKGxrX2dlcm1hbnlfcmVkdWNlZCkrLisoLmdlb2pzb24pJC8sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHthczogJ2ZldGNoJywgY3Jvc3NPcmlnaW46ICdhbm9ueW1vdXMnfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGVudHJ5TWF0Y2g6IC8obGtfZ2VybWFueV9yZWR1Y2VkX2xpc3QpKy4rKC5qc29uKSQvLFxyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7YXM6ICdmZXRjaCcsIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJ30sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGJ1aWxkOiB7XHJcbiAgICAgIGFzc2V0c0lubGluZUxpbWl0OiAwLFxyXG4gICAgfSxcclxuICAgIHRlc3Q6IHtcclxuICAgICAgZW52aXJvbm1lbnQ6ICdqc2RvbScsXHJcbiAgICAgIHNldHVwRmlsZXM6ICcuL3NyYy9fX3Rlc3RzX18vc2V0dXAudHMnLFxyXG4gICAgICBjb3ZlcmFnZToge1xyXG4gICAgICAgIHJlcG9ydGVyOiBbJ3RleHQnLCAnY2xvdmVyJ10sXHJcbiAgICAgICAgcmVwb3J0c0RpcmVjdG9yeTogJ3JlcG9ydHMnLFxyXG4gICAgICB9LFxyXG4gICAgICB0aHJlYWRzOiBmYWxzZSxcclxuICAgICAgc2VydmVyOiB7XHJcbiAgICAgICAgZGVwczoge1xyXG4gICAgICAgICAgaW5saW5lOiBbJ3ZpdGVzdC1jYW52YXMtbW9jayddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcbn0pO1xyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBR0EsU0FBUSxjQUFjLDhCQUE2QjtBQUNuRCxPQUFPLFdBQVc7QUFDbEIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxhQUFhO0FBQ3BCLE9BQU8sa0JBQWtCO0FBRXpCLElBQU8sc0JBQVEsYUFBYSxDQUFDLGNBQWM7QUFDekMsU0FBTztBQUFBLElBQ0wsZUFBZSxDQUFDLFdBQVcsZ0JBQWdCLFlBQVk7QUFBQSxJQUN2RCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsTUFDUCxNQUFNO0FBQUEsTUFDTixhQUFhO0FBQUEsTUFDYixjQUFjO0FBQUEsTUFDZCx1QkFBdUI7QUFBQSxNQUN2QixRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsVUFDTDtBQUFBLFlBQ0UsWUFBWTtBQUFBLFlBQ1osWUFBWSxFQUFDLElBQUksUUFBTztBQUFBLFVBQzFCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsWUFBWTtBQUFBLFlBQ1osWUFBWSxFQUFDLElBQUksU0FBUyxhQUFhLFlBQVc7QUFBQSxVQUNwRDtBQUFBLFVBQ0E7QUFBQSxZQUNFLFlBQVk7QUFBQSxZQUNaLFlBQVksRUFBQyxJQUFJLFNBQVMsYUFBYSxZQUFXO0FBQUEsVUFDcEQ7QUFBQSxRQUNGO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsbUJBQW1CO0FBQUEsSUFDckI7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLFlBQVk7QUFBQSxNQUNaLFVBQVU7QUFBQSxRQUNSLFVBQVUsQ0FBQyxRQUFRLFFBQVE7QUFBQSxRQUMzQixrQkFBa0I7QUFBQSxNQUNwQjtBQUFBLE1BQ0EsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLFFBQ04sTUFBTTtBQUFBLFVBQ0osUUFBUSxDQUFDLG9CQUFvQjtBQUFBLFFBQy9CO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K From ea3bef7879410c3e1a476463ec4be7c07f6534a4 Mon Sep 17 00:00:00 2001 From: Serloni Date: Mon, 17 Jun 2024 17:28:58 +0200 Subject: [PATCH 053/119] :twisted_rightwards_arrows: merging --- .../Sidebar/MapComponents/HeatMap.tsx | 199 ++++++++---------- .../src/components/Sidebar/MapWrapper/Map.ts | 30 +++ .../Sidebar/MapWrapper/PoligonSeries.ts | 35 +++ .../src/components/Sidebar/MapWrapper/Root.ts | 28 +++ frontend/src/util/hooks.ts | 10 + 5 files changed, 189 insertions(+), 113 deletions(-) create mode 100644 frontend/src/components/Sidebar/MapWrapper/Map.ts create mode 100644 frontend/src/components/Sidebar/MapWrapper/PoligonSeries.ts create mode 100644 frontend/src/components/Sidebar/MapWrapper/Root.ts diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 13acfd80..534bf2c0 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -15,6 +15,10 @@ import {Box} from '@mui/material'; import {useTheme} from '@mui/material/styles'; import React from 'react'; import {Localization} from 'types/localization'; +import useRoot from '../MapWrapper/Root'; +import usePolygonSeries from '../MapWrapper/PoligonSeries'; +import useMapChart from '../MapWrapper/Map'; +import { useConst } from 'util/hooks'; interface MapProps { /** The data to be displayed on the map, in GeoJSON format. */ @@ -89,7 +93,6 @@ interface MapProps { /** * React Component to render a Heatmap. - * @returns {JSX.Element} JSX Element to render a Heatmap. */ export default function HeatMap({ mapData, @@ -115,10 +118,9 @@ export default function HeatMap({ setLongLoad = () => {}, localization, idValuesToMap = 'id', -}: MapProps): JSX.Element { +}: MapProps) { const theme = useTheme(); const lastSelectedPolygon = useRef(null); - const [polygonSeries, setPolygonSeries] = useState(null); const [longLoadTimeout, setLongLoadTimeout] = useState(); // Memoize the default localization object to avoid infinite re-renders @@ -169,137 +171,105 @@ export default function HeatMap({ } }, [fixedLegendMaxValue, setAggregatedMax, values]); - // Create Map with GeoData - useEffect(() => { - if (!mapData) return; - // Create map instance - const root = am5.Root.new(mapId); - const chart = root.container.children.push( - am5map.MapChart.new(root, { + const mapRoot = useRoot(mapId); + + const mapSettings = useMemo(() => { + if (mapRoot) { + return { projection: am5map.geoMercator(), maxZoomLevel: maxZoomLevel, maxPanOut: 0.4, - zoomControl: am5map.ZoomControl.new(root, { - paddingBottom: 25, - opacity: 50, - }), - }) - ); + zoomControl: am5map.ZoomControl.new(mapRoot, {paddingBottom: 25, opacity: 0.5}), + }; + } else return; + }, [mapRoot, maxZoomLevel]); - // Add home button to reset pan & zoom - chart.get('zoomControl')?.homeButton.set('visible', true); + const chart = useMapChart(mapRoot, mapSettings, useConst(() => {})); - // Settings to fix positioning of images on buttons - const fixSVGPosition = { - width: 25, - height: 25, - dx: -5, - dy: -3, - }; - - // Set svg icon for home button - chart.get('zoomControl')?.homeButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomResetURL, - ...fixSVGPosition, - }) as unknown as am5.Graphics - ); + const polygon = useMemo(() => { + return { + geoJSON: mapData as GeoJSON, + tooltipPosition: 'fixed', + } as am5map.IMapPolygonSeriesSettings; + }, [mapData]); - // Add function to select germany when home button is pressed - chart.get('zoomControl')?.homeButton.events.on('click', () => { - if (defaultSelectedValue) { - setSelectedArea(defaultSelectedValue); - } - }); + const polygonSeries = usePolygonSeries(mapRoot, chart, polygon); - // Set svg icon for plus button - chart.get('zoomControl')?.plusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomInURL, - ...fixSVGPosition, - }) as unknown as am5.Graphics - ); + useEffect(() => { + if (mapRoot && chart && polygonSeries) { + chart.zoomControl = am5map.ZoomControl.new(mapRoot, {paddingBottom: 25, opacity: 0.5}); - // Set svg icon for minus button - chart.get('zoomControl')?.minusButton.set( - 'icon', - am5.Picture.new(root, { - src: svgZoomOutURL, - ...fixSVGPosition, - }) as unknown as am5.Graphics - ); + const fixSVGPosition = {width: 25, height: 25, dx: -5, dy: -3}; - // Create polygon series - const polygonSeries = chart.series.push( - am5map.MapPolygonSeries.new(root, { - geoJSON: mapData as GeoJSON, - tooltipPosition: 'fixed', - }) - ); + chart.zoomControl.homeButton.events.on('click', () => { + if (defaultSelectedValue) { + setSelectedArea(defaultSelectedValue); + } + }); - // Get template for polygons to attach events etc to each - const polygonTemplate = polygonSeries.mapPolygons.template; + chart.zoomControl.homeButton.set( + 'icon', + am5.Picture.new(mapRoot, { + src: svgZoomResetURL, + ...fixSVGPosition, + }) as unknown as am5.Graphics + ); - // Set properties for each polygon - polygonTemplate.setAll({ - fill: am5.color(defaultFill), - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - fillOpacity: fillOpacity, - }); + chart.zoomControl.plusButton.set( + 'icon', + am5.Picture.new(mapRoot, {src: svgZoomInURL, ...fixSVGPosition}) as unknown as am5.Graphics + ); + chart.zoomControl.minusButton.set( + 'icon', + am5.Picture.new(mapRoot, {src: svgZoomOutURL, ...fixSVGPosition}) as unknown as am5.Graphics + ); - // Set hover properties for each polygon - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); + const polygonTemplate = polygonSeries.mapPolygons.template; + polygonTemplate.setAll({ + fill: am5.color(defaultFill), + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + fillOpacity: fillOpacity, + }); - // Set click properties for each polygon - polygonTemplate.events.on('click', function (ev) { - if (ev.target.dataItem && ev.target.dataItem.dataContext) { - setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); - } - }); + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); - // Set heat map properties - //show tooltip on heat legend when hovering - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; - legendRef.current.showValue(value, localizationToUse.formatNumber!(value)); - } - }); - //hide tooltip on heat legend when not hovering anymore event - polygonTemplate.events.on('pointerout', () => { - if (legendRef.current) { - void legendRef.current.hideTooltip(); - } - }); + polygonTemplate.events.on('click', function (ev) { + if (ev.target.dataItem?.dataContext) { + setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); + } + }); - setPolygonSeries(polygonSeries); + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef.current) { + const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; + legendRef.current.showValue(value, localizationToUse.formatNumber!(value)); + } + }); - return () => { - chart.dispose(); - root.dispose(); - }; + polygonTemplate.events.on('pointerout', () => { + if (legendRef.current) { + void legendRef.current.hideTooltip(); + } + }); + } }, [ + mapRoot, + chart, + polygonSeries, defaultFill, - defaultSelectedValue, - fillOpacity, - legendRef, - localizationToUse.formatNumber, - mapData, - mapId, - setSelectedArea, theme.palette.background.default, theme.palette.primary.main, - maxZoomLevel, + fillOpacity, + setSelectedArea, + localizationToUse.formatNumber, + legendRef, ]); - // Highlight selected district useEffect(() => { if (!polygonSeries) return; // Reset last selected polygon @@ -380,6 +350,8 @@ export default function HeatMap({ }); } }, [ + mapRoot, + chart, aggregatedMax, defaultFill, idValuesToMap, @@ -393,7 +365,8 @@ export default function HeatMap({ tooltipTextWhileFetching, values, ]); - return ; + + return ; } function getColorFromLegend( diff --git a/frontend/src/components/Sidebar/MapWrapper/Map.ts b/frontend/src/components/Sidebar/MapWrapper/Map.ts new file mode 100644 index 00000000..b6fb0203 --- /dev/null +++ b/frontend/src/components/Sidebar/MapWrapper/Map.ts @@ -0,0 +1,30 @@ +import {useLayoutEffect, useState} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useMapChart( + root: Root | null, + settings: am5map.IMapChartSettings, + initializer?: (chart: am5map.MapChart) => void +): am5map.MapChart | null { + const [chart, setChart] = useState(null); + + useLayoutEffect(() => { + if (!root || !settings) { + return; + } + + const newChart = root.container.children.push(am5map.MapChart.new(root, settings)); + setChart(newChart); + + if (initializer) { + initializer(newChart); + } + + return () => { + newChart.dispose(); + }; + }, [root, settings, initializer]); + + return chart; +} diff --git a/frontend/src/components/Sidebar/MapWrapper/PoligonSeries.ts b/frontend/src/components/Sidebar/MapWrapper/PoligonSeries.ts new file mode 100644 index 00000000..ba46c8c8 --- /dev/null +++ b/frontend/src/components/Sidebar/MapWrapper/PoligonSeries.ts @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useLayoutEffect, useState} from 'react'; +import * as am5map from '@amcharts/amcharts5/map'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function usePolygonSeries( + root: Root | null, + chart: am5map.MapChart | null, + settings: am5map.IMapPolygonSeriesSettings, + initializer?: (polygon: am5map.MapPolygonSeries) => void +): am5map.MapPolygonSeries | undefined { + const [polygon, setPolygon] = useState(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) { + return; + } + + const newPolygon = chart.series.push(am5map.MapPolygonSeries.new(root, settings)); + + if (initializer) { + initializer(newPolygon); + } + + setPolygon(newPolygon); + + return () => { + newPolygon.dispose(); + }; + }, [root, settings, initializer, chart?.series, chart]); + + return polygon; +} diff --git a/frontend/src/components/Sidebar/MapWrapper/Root.ts b/frontend/src/components/Sidebar/MapWrapper/Root.ts new file mode 100644 index 00000000..7db61bb9 --- /dev/null +++ b/frontend/src/components/Sidebar/MapWrapper/Root.ts @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {IRootSettings, Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {useLayoutEffect, useState} from 'react'; + +export default function useRoot( + id: string | HTMLElement, + settings?: IRootSettings, + initializer?: (root: Root) => void +): Root | null { + const [root, setRoot] = useState(); + + useLayoutEffect(() => { + const newRoot = Root.new(id, settings); + setRoot(newRoot); + + if (initializer) { + initializer(newRoot); + } + + return () => { + newRoot.dispose(); + }; + }, [id, settings, initializer]); + + return root ?? null; +} \ No newline at end of file diff --git a/frontend/src/util/hooks.ts b/frontend/src/util/hooks.ts index 026fe040..3bfc9caf 100644 --- a/frontend/src/util/hooks.ts +++ b/frontend/src/util/hooks.ts @@ -101,3 +101,13 @@ export function useEffectDebugger(effectHook: {(): void}, dependencies: Array(value: T): T { + const ref = useRef(); + + if (!ref.current) { + ref.current = value; + } + + return ref.current; +} From d1c078774a62ab733b3c399fa8a669b6f297de8f Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 18 Jun 2024 10:08:14 +0200 Subject: [PATCH 054/119] :wrench: Remove stoplist in legend --- .../Sidebar/MapComponents/HeatLegend.tsx | 1 - frontend/src/components/shared/map/legend.ts | 3 +- ...s.timestamp-1718637455791-fadc51df3efa.mjs | 55 ------------------- 3 files changed, 1 insertion(+), 58 deletions(-) delete mode 100644 frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 9cb01930..76debf0a 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -115,7 +115,6 @@ export default function HeatLegend({ const heatLegend = useHeatLegend( root, heatLegendSettings, - stoplist, useCallback( (legend: am5.HeatLegend) => { legend.markers.template.adapters.add('fillGradient', (gradient) => { diff --git a/frontend/src/components/shared/map/legend.ts b/frontend/src/components/shared/map/legend.ts index d7bddf1e..33b9e3ed 100644 --- a/frontend/src/components/shared/map/legend.ts +++ b/frontend/src/components/shared/map/legend.ts @@ -9,7 +9,6 @@ import {Root} from '@amcharts/amcharts5/.internal/core/Root'; export default function useHeatLegend( root: Root | null, settings: IHeatLegendSettings, - stoplist: {color: am5.Color; opacity: number; offset: number}[], initializer?: (legend: HeatLegend) => void ): HeatLegend | null { const [legend, setLegend] = useState(); @@ -29,7 +28,7 @@ export default function useHeatLegend( return () => { newLegend.dispose(); }; - }, [root, settings, initializer, stoplist]); + }, [root, settings, initializer]); return legend ?? null; } diff --git a/frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs b/frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs deleted file mode 100644 index 21be38d9..00000000 --- a/frontend/vite.config.mts.timestamp-1718637455791-fadc51df3efa.mjs +++ /dev/null @@ -1,55 +0,0 @@ -// vite.config.mts -import { defineConfig, splitVendorChunkPlugin } from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/vite/dist/node/index.js"; -import react from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/@vitejs/plugin-react/dist/index.mjs"; -import tsconfigPaths from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/vite-tsconfig-paths/dist/index.mjs"; -import preload from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/unplugin-inject-preload/dist/vite.js"; -import eslintPlugin from "file:///C:/Users/viol_gi/projects/ESID/frontend/node_modules/@nabla/vite-plugin-eslint/src/index.mjs"; -var vite_config_default = defineConfig((configEnv) => { - return { - assetsInclude: ["**/*.md", "**/*.geojson", "**/*.json5"], - base: "./", - plugins: [ - react(), - eslintPlugin(), - tsconfigPaths(), - splitVendorChunkPlugin(), - preload({ - files: [ - { - entryMatch: /(LOKI_compact)+.+(.svg)$/, - attributes: { as: "image" } - }, - { - entryMatch: /(lk_germany_reduced)+.+(.geojson)$/, - attributes: { as: "fetch", crossOrigin: "anonymous" } - }, - { - entryMatch: /(lk_germany_reduced_list)+.+(.json)$/, - attributes: { as: "fetch", crossOrigin: "anonymous" } - } - ] - }) - ], - build: { - assetsInlineLimit: 0 - }, - test: { - environment: "jsdom", - setupFiles: "./src/__tests__/setup.ts", - coverage: { - reporter: ["text", "clover"], - reportsDirectory: "reports" - }, - threads: false, - server: { - deps: { - inline: ["vitest-canvas-mock"] - } - } - } - }; -}); -export { - vite_config_default as default -}; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcubXRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcdmlvbF9naVxcXFxwcm9qZWN0c1xcXFxFU0lEXFxcXGZyb250ZW5kXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFx2aW9sX2dpXFxcXHByb2plY3RzXFxcXEVTSURcXFxcZnJvbnRlbmRcXFxcdml0ZS5jb25maWcubXRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9Vc2Vycy92aW9sX2dpL3Byb2plY3RzL0VTSUQvZnJvbnRlbmQvdml0ZS5jb25maWcubXRzXCI7Ly8gU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNCBHZXJtYW4gQWVyb3NwYWNlIENlbnRlciAoRExSKVxyXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQ0MwLTEuMFxyXG5cclxuaW1wb3J0IHtkZWZpbmVDb25maWcsIHNwbGl0VmVuZG9yQ2h1bmtQbHVnaW59IGZyb20gJ3ZpdGUnO1xyXG5pbXBvcnQgcmVhY3QgZnJvbSAnQHZpdGVqcy9wbHVnaW4tcmVhY3QnO1xyXG5pbXBvcnQgdHNjb25maWdQYXRocyBmcm9tICd2aXRlLXRzY29uZmlnLXBhdGhzJztcclxuaW1wb3J0IHByZWxvYWQgZnJvbSAndW5wbHVnaW4taW5qZWN0LXByZWxvYWQvdml0ZSc7XHJcbmltcG9ydCBlc2xpbnRQbHVnaW4gZnJvbSAnQG5hYmxhL3ZpdGUtcGx1Z2luLWVzbGludCc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoKGNvbmZpZ0VudikgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBhc3NldHNJbmNsdWRlOiBbJyoqLyoubWQnLCAnKiovKi5nZW9qc29uJywgJyoqLyouanNvbjUnXSxcclxuICAgIGJhc2U6ICcuLycsXHJcbiAgICBwbHVnaW5zOiBbXHJcbiAgICAgIHJlYWN0KCksXHJcbiAgICAgIGVzbGludFBsdWdpbigpLFxyXG4gICAgICB0c2NvbmZpZ1BhdGhzKCksXHJcbiAgICAgIHNwbGl0VmVuZG9yQ2h1bmtQbHVnaW4oKSxcclxuICAgICAgcHJlbG9hZCh7XHJcbiAgICAgICAgZmlsZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZW50cnlNYXRjaDogLyhMT0tJX2NvbXBhY3QpKy4rKC5zdmcpJC8sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHthczogJ2ltYWdlJ30sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbnRyeU1hdGNoOiAvKGxrX2dlcm1hbnlfcmVkdWNlZCkrLisoLmdlb2pzb24pJC8sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHthczogJ2ZldGNoJywgY3Jvc3NPcmlnaW46ICdhbm9ueW1vdXMnfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGVudHJ5TWF0Y2g6IC8obGtfZ2VybWFueV9yZWR1Y2VkX2xpc3QpKy4rKC5qc29uKSQvLFxyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7YXM6ICdmZXRjaCcsIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJ30sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGJ1aWxkOiB7XHJcbiAgICAgIGFzc2V0c0lubGluZUxpbWl0OiAwLFxyXG4gICAgfSxcclxuICAgIHRlc3Q6IHtcclxuICAgICAgZW52aXJvbm1lbnQ6ICdqc2RvbScsXHJcbiAgICAgIHNldHVwRmlsZXM6ICcuL3NyYy9fX3Rlc3RzX18vc2V0dXAudHMnLFxyXG4gICAgICBjb3ZlcmFnZToge1xyXG4gICAgICAgIHJlcG9ydGVyOiBbJ3RleHQnLCAnY2xvdmVyJ10sXHJcbiAgICAgICAgcmVwb3J0c0RpcmVjdG9yeTogJ3JlcG9ydHMnLFxyXG4gICAgICB9LFxyXG4gICAgICB0aHJlYWRzOiBmYWxzZSxcclxuICAgICAgc2VydmVyOiB7XHJcbiAgICAgICAgZGVwczoge1xyXG4gICAgICAgICAgaW5saW5lOiBbJ3ZpdGVzdC1jYW52YXMtbW9jayddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH07XHJcbn0pO1xyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBR0EsU0FBUSxjQUFjLDhCQUE2QjtBQUNuRCxPQUFPLFdBQVc7QUFDbEIsT0FBTyxtQkFBbUI7QUFDMUIsT0FBTyxhQUFhO0FBQ3BCLE9BQU8sa0JBQWtCO0FBRXpCLElBQU8sc0JBQVEsYUFBYSxDQUFDLGNBQWM7QUFDekMsU0FBTztBQUFBLElBQ0wsZUFBZSxDQUFDLFdBQVcsZ0JBQWdCLFlBQVk7QUFBQSxJQUN2RCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsTUFDUCxNQUFNO0FBQUEsTUFDTixhQUFhO0FBQUEsTUFDYixjQUFjO0FBQUEsTUFDZCx1QkFBdUI7QUFBQSxNQUN2QixRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsVUFDTDtBQUFBLFlBQ0UsWUFBWTtBQUFBLFlBQ1osWUFBWSxFQUFDLElBQUksUUFBTztBQUFBLFVBQzFCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsWUFBWTtBQUFBLFlBQ1osWUFBWSxFQUFDLElBQUksU0FBUyxhQUFhLFlBQVc7QUFBQSxVQUNwRDtBQUFBLFVBQ0E7QUFBQSxZQUNFLFlBQVk7QUFBQSxZQUNaLFlBQVksRUFBQyxJQUFJLFNBQVMsYUFBYSxZQUFXO0FBQUEsVUFDcEQ7QUFBQSxRQUNGO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsbUJBQW1CO0FBQUEsSUFDckI7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLFlBQVk7QUFBQSxNQUNaLFVBQVU7QUFBQSxRQUNSLFVBQVUsQ0FBQyxRQUFRLFFBQVE7QUFBQSxRQUMzQixrQkFBa0I7QUFBQSxNQUNwQjtBQUFBLE1BQ0EsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLFFBQ04sTUFBTTtBQUFBLFVBQ0osUUFBUSxDQUFDLG9CQUFvQjtBQUFBLFFBQy9CO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K From 90e940e9e151f97aa3d6baecb4a71ab995c09ed9 Mon Sep 17 00:00:00 2001 From: Serloni Date: Tue, 18 Jun 2024 14:47:29 +0200 Subject: [PATCH 055/119] :beetle: fixed the tooltip translation in the CompartmentsRow component --- .../CompartmentsComponents/CompartmentsRow.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx index d9e288c4..f2137f26 100644 --- a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx @@ -119,9 +119,9 @@ export default function CompartmentsRow({ onClose={closeTooltip} onClick={openTooltip} title={ - localization?.overrides && localization?.overrides[`compartments.${compartment}`] - ? customT(localization?.overrides[`compartments.${compartment}`]) - : defaultT(`compartments.${compartment}`) + localization?.overrides && localization?.overrides[`infection-states.tooltip`] + ? customT(localization?.overrides[`infection-states.tooltip`]) + : defaultT(`infection-states.tooltip`) } > Date: Tue, 18 Jun 2024 14:49:35 +0200 Subject: [PATCH 056/119] :beetle: fixed the tooltip translation in the CompartmentsRow component --- .../CompartmentsComponents/CompartmentsRow.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx index f2137f26..552e280a 100644 --- a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRow.tsx @@ -119,9 +119,9 @@ export default function CompartmentsRow({ onClose={closeTooltip} onClick={openTooltip} title={ - localization?.overrides && localization?.overrides[`infection-states.tooltip`] - ? customT(localization?.overrides[`infection-states.tooltip`]) - : defaultT(`infection-states.tooltip`) + localization?.overrides && localization?.overrides[`tooltip`] + ? customT(localization?.overrides[`tooltip`]) + : defaultT(`tooltip`) } > Date: Wed, 19 Jun 2024 10:57:09 +0200 Subject: [PATCH 057/119] :wrench: Wrap Amchart components inside LineChart --- .../LineChartComponents/LineChart.tsx | 749 +++++++++--------- .../Sidebar/MapComponents/HeatLegend.tsx | 4 +- .../Sidebar/MapComponents/HeatMap.tsx | 8 +- .../{map/legend.ts => HeatMap/Legend.ts} | 0 .../shared/{map/chart.ts => HeatMap/Map.ts} | 0 .../{map/polygon.ts => HeatMap/Polygon.ts} | 0 .../shared/{map/zoom.ts => HeatMap/Zoom.ts} | 0 .../components/shared/LineChart/AxisRange.ts | 51 ++ .../src/components/shared/LineChart/Chart.ts | 35 + .../components/shared/LineChart/DateAxis.ts | 49 ++ .../src/components/shared/LineChart/Filter.ts | 44 + .../components/shared/LineChart/LineSeries.ts | 75 ++ .../components/shared/LineChart/ValueAxis.ts | 50 ++ .../src/components/shared/{map => }/Root.ts | 0 14 files changed, 678 insertions(+), 387 deletions(-) rename frontend/src/components/shared/{map/legend.ts => HeatMap/Legend.ts} (100%) rename frontend/src/components/shared/{map/chart.ts => HeatMap/Map.ts} (100%) rename frontend/src/components/shared/{map/polygon.ts => HeatMap/Polygon.ts} (100%) rename frontend/src/components/shared/{map/zoom.ts => HeatMap/Zoom.ts} (100%) create mode 100644 frontend/src/components/shared/LineChart/AxisRange.ts create mode 100644 frontend/src/components/shared/LineChart/Chart.ts create mode 100644 frontend/src/components/shared/LineChart/DateAxis.ts create mode 100644 frontend/src/components/shared/LineChart/Filter.ts create mode 100644 frontend/src/components/shared/LineChart/LineSeries.ts create mode 100644 frontend/src/components/shared/LineChart/ValueAxis.ts rename frontend/src/components/shared/{map => }/Root.ts (100%) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 3a301e0f..a61cbeeb 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -1,16 +1,15 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useCallback, useEffect, useRef} from 'react'; +import {useCallback, useEffect, useLayoutEffect, useMemo} from 'react'; import {Root} from '@amcharts/amcharts5/.internal/core/Root'; import {Tooltip} from '@amcharts/amcharts5/.internal/core/render/Tooltip'; import {RoundedRectangle} from '@amcharts/amcharts5/.internal/core/render/RoundedRectangle'; import {Color, color} from '@amcharts/amcharts5/.internal/core/util/Color'; import {DataProcessor} from '@amcharts/amcharts5/.internal/core/util/DataProcessor'; -import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; -import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {IXYChartSettings, XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {IDateAxisSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; -import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; import {XYCursor} from '@amcharts/amcharts5/.internal/charts/xy/XYCursor'; import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; @@ -19,11 +18,19 @@ import am5locales_de_DE from '@amcharts/amcharts5/locales/de_DE'; import {darken, useTheme} from '@mui/material/styles'; import Box from '@mui/material/Box'; import {useTranslation} from 'react-i18next'; -import {Dictionary, dateToISOString} from '../../util/util'; +import {Dictionary} from '../../util/util'; import React from 'react'; import {Scenario} from 'store/ScenarioSlice'; import {Localization} from 'types/localization'; import {getScenarioPrimaryColor} from 'util/Theme'; +import useRoot from 'components/shared/Root'; +import {useConst} from 'util/hooks'; +import useXYChart from 'components/shared/LineChart/Chart'; +import useDateAxis from 'components/shared/LineChart/DateAxis'; +import useValueAxis from 'components/shared/LineChart/ValueAxis'; +import {useDateSelectorFilter} from 'components/shared/LineChart/Filter'; +import useDateAxisRange from 'components/shared/LineChart/AxisRange'; +import useLineSeries, {useLineSeriesList} from 'components/shared/LineChart/LineSeries'; interface ScenarioList { scenarios: { @@ -155,127 +162,114 @@ export default function LineChart({ const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); - const rootRef = useRef(null); - const chartRef = useRef(null); + const root = useRoot( + chartId, + undefined, + useConst((root) => { + root.numberFormatter.set('numberFormat', '#,###.'); + }) + ); - const setReferenceDayX = useCallback(() => { - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } + const chartSettings = useConst({ + panX: false, + panY: false, + wheelX: 'panX', + wheelY: 'zoomX', + maxTooltipDistance: -1, + }); + + const chart = useXYChart( + root, + chartSettings, + useCallback( + (chart: XYChart) => { + if (root) { + chart.leftAxesContainer.set('layout', root.verticalLayout); + } + }, + [root] + ) + ); - const midday = new Date(referenceDay).setHours(12, 0, 0); + const xAxisSettings = useMemo(() => { + if (!root || !chart) { + return null; + } - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); - const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); - const docPosition = rootRef.current.rootPointToDocument(globalPosition).x; - setReferenceDayBottom(docPosition); - }, [referenceDay, setReferenceDayBottom]); + return { + renderer: AxisRendererX.new(root, {}), + // Set base interval and aggregated intervals when the chart is zoomed out + baseInterval: {timeUnit: 'day', count: 1}, + gridIntervals: [ + {timeUnit: 'day', count: 1}, + {timeUnit: 'day', count: 3}, + {timeUnit: 'day', count: 7}, + {timeUnit: 'month', count: 1}, + {timeUnit: 'month', count: 3}, + {timeUnit: 'year', count: 1}, + ], + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + } as IDateAxisSettings; + }, [root, chart]); + + const xAxis = useDateAxis( + root, + chart, + xAxisSettings, + useConst((axis) => { + axis.get('renderer').ticks.template.setAll({location: 0.5}); + }) + ); - // Effect to initialize root & chart - useEffect( - () => { - // Create root and chart - const root = Root.new(chartId); - const chart = root.container.children.push( - XYChart.new(root, { - panX: false, - panY: false, - wheelX: 'panX', - wheelY: 'zoomX', - maxTooltipDistance: -1, - }) - ); + const yAxisSettings = useMemo(() => { + if (!root || !chart) { + return null; + } - // Set number formatter - root.numberFormatter.set('numberFormat', '#,###.'); + return { + renderer: AxisRendererY.new(root, {}), + // Fix lower end to 0 + min: 0, + // Add tooltip instance so cursor can display value + tooltip: Tooltip.new(root, {}), + }; + }, [root, chart]); - // Create x-axis - const xAxis = chart.xAxes.push( - DateAxis.new(root, { - renderer: AxisRendererX.new(root, {}), - // Set base interval and aggregated intervals when the chart is zoomed out - baseInterval: {timeUnit: 'day', count: 1}, - gridIntervals: [ - {timeUnit: 'day', count: 1}, - {timeUnit: 'day', count: 3}, - {timeUnit: 'day', count: 7}, - {timeUnit: 'month', count: 1}, - {timeUnit: 'month', count: 3}, - {timeUnit: 'year', count: 1}, - ], - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - // Change axis renderer to have ticks/labels on day center - const xRenderer = xAxis.get('renderer'); - xRenderer.ticks.template.setAll({ - location: 0.5, - }); + const yAxis = useValueAxis(root, chart, yAxisSettings); - // Create y-axis - chart.yAxes.push( - ValueAxis.new(root, { - renderer: AxisRendererY.new(root, {}), - // Fix lower end to 0 - min: 0, - // Add tooltip instance so cursor can display value - tooltip: Tooltip.new(root, {}), - }) - ); - - // Add cursor - chart.set( - 'cursor', - XYCursor.new(root, { - // Only allow zooming along x-axis - behavior: 'zoomX', - // Snap cursor to xAxis ticks - xAxis: xAxis, - }) - ); - - // Add event on double click to select date - chart.events.on('click', (ev) => { - // Get date from axis position from cursor position - const date = xAxis.positionToDate( - xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) - ); - // Remove time information to only have a date - date.setHours(0, 0, 0, 0); - // Set date in store - setSelectedDate(dateToISOString(date)); - }); + // Effect to add cursor to chart + useLayoutEffect(() => { + if (!chart || !root || !xAxis) { + return; + } - // Set refs to be used in other effects - rootRef.current = root; - chartRef.current = chart; + // Add cursor + chart.set( + 'cursor', + XYCursor.new(root, { + // Only allow zooming along x-axis + behavior: 'zoomX', + // Snap cursor to xAxis ticks + xAxis: xAxis, + }) + ); + }, [chart, root, xAxis]); - // Clean-up before re-running this effect - return () => { - // Dispose old root and chart before creating a new instance - chartRef.current?.dispose(); - rootRef.current?.dispose(); - }; - }, - // This effect should only run once. - [chartId, setSelectedDate] - ); + // Effect to add date selector filter to chart + useDateSelectorFilter(chart, xAxis, setSelectedDate); // Effect to change localization of chart if language changes - useEffect( + useLayoutEffect( () => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current) { + // Skip if root or chart or xAxis is not initialized + if (!root || !chart || !xAxis) { return; } // Set localization - rootRef.current.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; + root.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; - // Change date formats for ticks & tooltip (use fallback object to suppress undefined object warnings as this cannot be undefined) - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; xAxis.get('dateFormats', {day: ''})['day'] = localization.overrides && localization.overrides['dayFormat'] ? customT(localization.overrides['dayFormat']) @@ -291,182 +285,283 @@ export default function LineChart({ : defaultT('dayFormat'); }, // Re-run effect if language changes - [localization.customLang, defaultT, customT, localization.overrides, i18n.language] + [i18n.language, root, chart, xAxis, defaultT, customT, localization.overrides] ); // Effect to update min/max date. - useEffect(() => { - // Skip if root or chart is not initialized - if (!rootRef.current || !chartRef.current || !minDate || !maxDate) { + useLayoutEffect(() => { + // Skip if root or chart or xAxis is not initialized + if (!xAxis || !minDate || !maxDate) { return; } - const xAxis: DateAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; xAxis.set('min', new Date(minDate).setHours(0)); xAxis.set('max', new Date(maxDate).setHours(23, 59, 59)); - }, [minDate, maxDate]); + }, [minDate, maxDate, xAxis]); - // Effect to add series to chart - useEffect( - () => { - // Skip if root or chart not initialized - if (!rootRef.current || !chartRef.current) { - return; - } + const selectedDateRangeSettings = useMemo(() => { + if (!root || !selectedDate) { + return {}; + } - const chart: XYChart = chartRef.current; - const root: Root = rootRef.current; - const xAxis: DateAxis = chart.xAxes.getIndex(0) as DateAxis; - const yAxis: ValueAxis = chart.yAxes.getIndex(0) as ValueAxis; - - // Add series for case data - const caseDataSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - // Case Data is always scenario id 0 - id: `${chartId}_0`, - name: - localization.overrides && localization.overrides['chart.caseData'] - ? customT(localization.overrides['chart.caseData']) - : defaultT('chart.caseData'), - valueXField: 'date', - valueYField: '0', - // Prevent data points from connecting across gaps in the data - connect: false, - stroke: color('#000'), - }) - ); - caseDataSeries.strokes.template.setAll({ + return { + data: { + value: new Date(selectedDate).setHours(0, 0, 0), + endValue: new Date(selectedDate).setHours(23, 59, 59), + above: true, + }, + grid: { + stroke: color(theme.palette.primary.main), + strokeOpacity: 1, + strokeWidth: 2, + location: 0.5, + visible: true, + }, + axisFill: { + fill: color(theme.palette.primary.main), + fillOpacity: 0.3, + visible: true, + }, + label: { + fill: color(theme.palette.primary.contrastText), + text: new Date(selectedDate).toLocaleDateString(i18n.language, { + year: 'numeric', + month: 'short', + day: '2-digit', + }), + location: 0.5, + background: RoundedRectangle.new(root, { + fill: color(theme.palette.primary.main), + }), + // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels + layer: Number.MAX_VALUE, + }, + }; + }, [i18n.language, root, selectedDate, theme.palette.primary.contrastText, theme.palette.primary.main]); + useDateAxisRange(selectedDateRangeSettings, root, chart, xAxis); + + const referenceDateRangeSettings = useMemo(() => { + if (!referenceDay) { + return {}; + } + + return { + data: { + value: new Date(referenceDay).setHours(12, 0, 0), + above: true, + }, + grid: { + stroke: color(darken(theme.palette.divider, 0.25)), + strokeOpacity: 1, + strokeWidth: 2, + strokeDasharray: [6, 4], + }, + }; + }, [referenceDay, theme.palette.divider]); + useDateAxisRange(referenceDateRangeSettings, root, chart, xAxis); + + const setReferenceDayX = useCallback(() => { + if (!chart || !root || !xAxis || !referenceDay) { + return; + } + + const midday = new Date(referenceDay).setHours(12, 0, 0); + + const xAxisPosition = xAxis.width() * xAxis.toGlobalPosition(xAxis.dateToPosition(new Date(midday))); + const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); + const docPosition = root.rootPointToDocument(globalPosition).x; + setReferenceDayBottom(docPosition); + }, [chart, root, xAxis, referenceDay]); + + useLayoutEffect(() => { + if (!root || !chart || !xAxis) { + return; + } + + setReferenceDayX(); + const minEvent = xAxis.onPrivate('selectionMin', setReferenceDayX); + const maxEvent = xAxis.onPrivate('selectionMax', setReferenceDayX); + const seriesEvent = chart.series.events.on('push', (ev) => { + ev.newValue.events.on('boundschanged', setReferenceDayX); + }); + + const resizeObserver = new ResizeObserver(setReferenceDayX); + resizeObserver.observe(root.dom); + + return () => { + resizeObserver.disconnect(); + minEvent.dispose(); + maxEvent.dispose(); + seriesEvent.dispose(); + }; + }, [root, chart, xAxis, setReferenceDayX]); + + const caseDataSeriesSettings = useMemo(() => { + if (!xAxis || !yAxis) { + return null; + } + + return { + xAxis: xAxis, + yAxis: yAxis, + // Case Data is always scenario id 0 + id: `${chartId}_0`, + name: + localization.overrides && localization.overrides['chart.caseData'] + ? customT(localization.overrides['chart.caseData']) + : defaultT('chart.caseData'), + valueXField: 'date', + valueYField: '0', + // Prevent data points from connecting across gaps in the data + connect: false, + stroke: color('#000'), + }; + }, [localization.overrides, defaultT, customT, xAxis, yAxis, chartId]); + useLineSeries( + root, + chart, + caseDataSeriesSettings, + useConst((series) => { + series.strokes.template.setAll({ strokeWidth: 2, }); + }) + ); - // Add series for percentile area - const percentileSeries = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `${chartId}_percentiles`, - valueXField: 'date', - valueYField: 'percentileUp', - openValueYField: 'percentileDown', - connect: false, - // Percentiles are only visible if a scenario is selected and it is not case data - visible: selectedScenario !== null && selectedScenario > 0, - // Add fill color according to selected scenario (if selected scenario is set and it's not case data) - fill: - selectedScenario !== null && selectedScenario > 0 - ? color(getScenarioPrimaryColor(selectedScenario, theme)) - : undefined, - }) - ); - percentileSeries.strokes.template.setAll({ + const percentileSeriesSettings = useMemo(() => { + if (!xAxis || !yAxis) { + return null; + } + + return { + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_percentiles`, + valueXField: 'date', + valueYField: 'percentileUp', + openValueYField: 'percentileDown', + connect: false, + // Percentiles are only visible if a scenario is selected and it is not case data + visible: selectedScenario !== null && selectedScenario > 0, + // Add fill color according to selected scenario (if selected scenario is set and it's not case data) + fill: + selectedScenario !== null && selectedScenario > 0 + ? color(getScenarioPrimaryColor(selectedScenario, theme)) + : undefined, + }; + }, [selectedScenario, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + useLineSeries( + root, + chart, + percentileSeriesSettings, + useConst((series) => { + series.strokes.template.setAll({ strokeWidth: 0, }); - percentileSeries.fills.template.setAll({ + series.fills.template.setAll({ fillOpacity: 0.3, visible: true, }); + }) + ); - // Add series for each scenario - if (scenarioList) { - Object.entries(scenarioList.scenarios).forEach(([scenarioId, scenario]) => { - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `${chartId}_${scenarioId}`, - name: simulationDataChartName(scenario), - valueXField: 'date', - valueYField: scenarioId, - // Prevent data points from connecting across gaps in the data - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color - tooltip: Tooltip.new(root, { - labelText: `[bold ${getScenarioPrimaryColor(scenario.id, theme)}]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, - }), - stroke: color(getScenarioPrimaryColor(scenario.id, theme)), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - }); - }); - } + const scenarioSeriesSettings = useMemo(() => { + if (!root || !xAxis || !yAxis || !scenarioList) { + return []; + } - // Add series for groupFilter (if there are any) - if (groupFilterList && selectedScenario) { - // Define line style variants for groups - const groupFilterStrokes = [ - [2, 4], // dotted - [8, 4], // dashed - [8, 4, 2, 4], // dash-dotted - [8, 4, 2, 4, 2, 4], // dash-dot-dotted - ]; - // Loop through visible group filters - Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .forEach((groupFilter, i) => { - // Add series for each group filter - const series = chart.series.push( - LineSeries.new(root, { - xAxis: xAxis, - yAxis: yAxis, - id: `${chartId}_group-filter-${groupFilter.name}`, - name: groupFilter.name, - valueXField: 'date', - valueYField: groupFilter.name, - connect: false, - // Fallback Tooltip (if HTML breaks for some reason) - // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) - tooltip: Tooltip.new(root, { - labelText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${ - groupFilter.name - }:[/] {${groupFilter.name}}`, - }), - stroke: color(getScenarioPrimaryColor(selectedScenario, theme)), - }) - ); - series.strokes.template.setAll({ - strokeWidth: 2, - // Loop through stroke list if group filters exceeds list length - strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], - }); - }); - } - // Clean-up function - return () => { - // Remove all series - chart.series.clear(); - }; - }, - // Re-run if scenario, group filter, or selected scenario (percentile series) change. (t, tBackend, and theme do not change during runtime). - [ - scenarioList, - groupFilterList, - selectedScenario, - defaultT, - customT, - theme, - chartId, - simulationDataChartName, - localization.overrides, - ] + return Object.entries(scenarioList.scenarios).map(([scenarioId, scenario]) => ({ + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_${scenarioId}`, + name: simulationDataChartName(scenario), + valueXField: 'date', + valueYField: scenarioId, + // Prevent data points from connecting across gaps in the data + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // For text color: loop around the theme's scenario color list if scenario IDs exceed color list length, then pick first color of sub-palette which is the main color + tooltip: Tooltip.new(root, { + labelText: `[bold ${getScenarioPrimaryColor(scenario.id, theme)}]${simulationDataChartName(scenario)}:[/] {${scenarioId}}`, + }), + stroke: color(getScenarioPrimaryColor(scenario.id, theme)), + })); + }, [scenarioList, root, simulationDataChartName, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + useLineSeriesList( + root, + chart, + scenarioSeriesSettings, + useConst((series) => { + series.strokes.template.setAll({ + strokeWidth: 2, + }); + }) + ); + + const groupFilterStrokes = useMemo(() => { + return [ + [2, 4], // dotted + [8, 4], // dashed + [8, 4, 2, 4], // dash-dotted + [8, 4, 2, 4, 2, 4], // dash-dot-dotted + ]; + }, []); + + const groupFilterSeriesSettings = useMemo(() => { + if (!root || !xAxis || !yAxis || !groupFilterList || !selectedScenario) { + return []; + } + + // Loop through visible group filters + return Object.values(groupFilterList) + .filter((groupFilter) => groupFilter.isVisible) + .map((groupFilter) => ({ + xAxis: xAxis, + yAxis: yAxis, + id: `${chartId}_group-filter-${groupFilter.name}`, + name: groupFilter.name, + valueXField: 'date', + valueYField: groupFilter.name, + connect: false, + // Fallback Tooltip (if HTML breaks for some reason) + // Use color of selected scenario (scenario ID is 1-based index, color list is 0-based index) loop if scenario ID exceeds length of color list; use first color of palette (main color) + tooltip: Tooltip.new(root, { + labelText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${ + groupFilter.name + }:[/] {${groupFilter.name}}`, + }), + stroke: color(getScenarioPrimaryColor(selectedScenario, theme)), + })); + }, [groupFilterList, root, selectedScenario, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + useLineSeriesList( + root, + chart, + groupFilterSeriesSettings, + useConst((series, i) => { + series.strokes.template.setAll({ + strokeWidth: 2, + // Loop through stroke list if group filters exceeds list length + strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], + }); + }) ); // Effect to hide disabled scenarios (and show them again if not hidden anymore) - useEffect( + useLayoutEffect( () => { - const allSeries = chartRef.current?.series; + const allSeries = chart?.series; // Skip effect if chart is not initialized (contains no series yet) if (!allSeries) return; // Set visibility of each series allSeries.each((series) => { + if (!(series instanceof LineSeries)) { + return; + } + // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) let seriesID = series.get('id'); - if (seriesID?.includes(chartId)) seriesID = seriesID.split('_')[1]; + if (seriesID) seriesID = seriesID.split('_')[1]; // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list if (seriesID === `percentiles`) { return; @@ -480,20 +575,20 @@ export default function LineChart({ }); }, // Re-run effect when the active scenario list changes - [activeScenarios, chartId] + [activeScenarios, chartId, chart] ); // Effect to hide deviations if no scenario is selected useEffect( () => { // Skip effect if chart is not initialized (contains no series yet) - if (!chartRef.current) return; + if (!chart) return; // Find percentile series and only show it if there is a selected scenario - chartRef.current?.series.values + chart?.series.values .filter((series) => { let seriesID = series.get('id'); - if (seriesID?.includes(chartId)) seriesID = seriesID.split('_')[1]; + if (seriesID) seriesID = seriesID.split('_')[1]; return seriesID === 'percentiles'; }) .map((percentileSeries) => { @@ -505,123 +600,13 @@ export default function LineChart({ }); }, // Re-run effect when the selected scenario changes - [chartId, selectedScenario] - ); - - // Effect to add Guide when date selected - useEffect(() => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !selectedDate) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: new Date(selectedDate).setHours(0, 0, 0), - // Make sure the time of the end date object is set to last second of day - endValue: new Date(selectedDate).setHours(23, 59, 59), - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(theme.palette.primary.main), - strokeOpacity: 1, - strokeWidth: 2, - location: 0.5, - visible: true, - }); - - // Set fill of range (rest of the day) - range.get('axisFill')?.setAll({ - fill: color(theme.palette.primary.main), - fillOpacity: 0.3, - visible: true, - }); - - // Set label for range - range.get('label')?.setAll({ - fill: color(theme.palette.primary.contrastText), - text: new Date(selectedDate).toLocaleDateString(localization.customLang, { - year: 'numeric', - month: 'short', - day: '2-digit', - }), - location: 0.5, - background: RoundedRectangle.new(rootRef.current, { - fill: color(theme.palette.primary.main), - }), - // Put Label to the topmost layer to make sure it is drawn on top of the axis tick labels - layer: Number.MAX_VALUE, - }); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - }; - }, [selectedDate, theme, localization.customLang]); - - // Effect to add guide for the reference day - useEffect( - () => { - // Skip effect if chart (or root) is not initialized yet or no date is selected - if (!chartRef.current || !rootRef.current || !referenceDay) { - return; - } - - // Get xAxis from chart - const xAxis = chartRef.current.xAxes.getIndex(0) as DateAxis; - - const referenceDate = new Date(referenceDay); - const start = referenceDate.setHours(12, 0, 0); - - // Create data item for range - const rangeDataItem = xAxis.makeDataItem({ - // Make sure the time of the start date object is set to first second of day - value: start, - // Line and label should drawn above the other elements - above: true, - }); - - // Create the range with the data item - const range = xAxis.createAxisRange(rangeDataItem); - - // Set stroke of range (line with label) - range.get('grid')?.setAll({ - stroke: color(darken(theme.palette.divider, 0.25)), - strokeOpacity: 1, - strokeWidth: 2, - strokeDasharray: [6, 4], - }); - - setReferenceDayX(); - xAxis.onPrivate('selectionMin', setReferenceDayX); - xAxis.onPrivate('selectionMax', setReferenceDayX); - const resizeObserver = new ResizeObserver(setReferenceDayX); - resizeObserver.observe(rootRef.current.dom); - - return () => { - // Discard range before re-running this effect - xAxis.axisRanges.removeValue(range); - resizeObserver.disconnect(); - }; - }, - // Re-run effect when selection changes (date/scenario/compartment/district) or when the active scenarios/filters change (theme and translation do not change after initialization) - [referenceDay, theme, localization.customLang, setReferenceDayX] + [chartId, selectedScenario, chart] ); // Effect to update Simulation and case data useEffect(() => { // Skip effect if chart is not initialized yet - if (!chartRef.current) return; + if (!chart) return; // Also skip if there is no scenario or compartment selected if (selectedScenario === null || !selectedCompartment) return; @@ -683,10 +668,10 @@ export default function LineChart({ }); // Put data into series - chartRef.current.series.each((series, i) => { + chart.series.each((series, i) => { // Set-up data processors for first series (not needed for others since all use the same data) if (i === 0) { - series.data.processor = DataProcessor.new(rootRef.current as Root, { + series.data.processor = DataProcessor.new(root as Root, { // Define date fields and their format (incoming format from API) dateFields: ['date'], dateFormat: 'yyyy-MM-dd', @@ -711,11 +696,11 @@ export default function LineChart({ ${ // Table row for each series of an active scenario - chartRef.current.series.values + chart.series.values .filter((series) => { if (!series.get('id')) return false; let s = series.get('id'); - if (series.get('id')?.includes(chartId)) s = s?.split('_')[1]; + if (s) s = s?.split('_')[1]; return activeScenarios?.includes(Number(s)); }) .map((series): string => { @@ -725,7 +710,7 @@ export default function LineChart({ * - is group filter series */ let seriesID = series.get('id'); - if (seriesID?.includes(chartId)) seriesID = seriesID?.split('_')[1]; + if (seriesID) seriesID = seriesID?.split('_')[1]; if (series.isHidden() || seriesID === 'percentiles' || seriesID?.startsWith('group-filter-')) { return ''; } @@ -772,10 +757,10 @@ export default function LineChart({ seriesID !== selectedScenario.toString() ? '' : // Add table row for each active group filter - (chartRef.current as XYChart).series.values + chart.series.values .filter((series) => { let seriesID = series.get('id'); - if (seriesID?.includes(chartId)) seriesID = seriesID.split('_')[1]; + if (seriesID) seriesID = seriesID.split('_')[1]; return seriesID?.startsWith('group-filter-') && !series.isHidden(); }) .map((groupFilterSeries) => { @@ -802,8 +787,8 @@ export default function LineChart({ `; // Attach tooltip to series - chartRef.current.series.each((series) => { - const tooltip = Tooltip.new(rootRef.current as Root, { + chart.series.each((series) => { + const tooltip = Tooltip.new(root as Root, { labelHTML: tooltipHTML, getFillFromSprite: false, autoTextColor: false, @@ -876,8 +861,8 @@ export default function LineChart({ import('@amcharts/amcharts5/plugins/exporting') .then((module) => { // Update export menu - module.Exporting.new(rootRef.current as Root, { - menu: module.ExportingMenu.new(rootRef.current as Root, {}), + module.Exporting.new(root as Root, { + menu: module.ExportingMenu.new(root as Root, {}), filePrefix: exportedFileName, dataSource: data, dateFields: ['date'], @@ -911,6 +896,8 @@ export default function LineChart({ chartId, localization.overrides, exportedFileName, + chart, + root, ]); return ( diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 76debf0a..637e71e2 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -8,8 +8,8 @@ import React from 'react'; import {HeatmapLegend} from 'types/heatmapLegend'; import {useTheme} from '@mui/material/styles'; import {Localization} from 'types/localization'; -import useRoot from 'components/shared/map/Root'; -import useHeatLegend from 'components/shared/map/legend'; +import useRoot from 'components/shared/Root'; +import useHeatLegend from 'components/shared/HeatMap/Legend'; interface HeatProps { /** diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 5a5625d4..ffa89d62 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -15,10 +15,10 @@ import {Box} from '@mui/material'; import {useTheme} from '@mui/material/styles'; import React from 'react'; import {Localization} from 'types/localization'; -import useRoot from 'components/shared/map/Root'; -import useMapChart from 'components/shared/map/chart'; -import useZoomControl from 'components/shared/map/zoom'; -import usePolygonSeries from 'components/shared/map/polygon'; +import useRoot from 'components/shared/Root'; +import useMapChart from 'components/shared/HeatMap/Map'; +import useZoomControl from 'components/shared/HeatMap/Zoom'; +import usePolygonSeries from 'components/shared/HeatMap/Polygon'; interface MapProps { /** The data to be displayed on the map, in GeoJSON format. */ diff --git a/frontend/src/components/shared/map/legend.ts b/frontend/src/components/shared/HeatMap/Legend.ts similarity index 100% rename from frontend/src/components/shared/map/legend.ts rename to frontend/src/components/shared/HeatMap/Legend.ts diff --git a/frontend/src/components/shared/map/chart.ts b/frontend/src/components/shared/HeatMap/Map.ts similarity index 100% rename from frontend/src/components/shared/map/chart.ts rename to frontend/src/components/shared/HeatMap/Map.ts diff --git a/frontend/src/components/shared/map/polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts similarity index 100% rename from frontend/src/components/shared/map/polygon.ts rename to frontend/src/components/shared/HeatMap/Polygon.ts diff --git a/frontend/src/components/shared/map/zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts similarity index 100% rename from frontend/src/components/shared/map/zoom.ts rename to frontend/src/components/shared/HeatMap/Zoom.ts diff --git a/frontend/src/components/shared/LineChart/AxisRange.ts b/frontend/src/components/shared/LineChart/AxisRange.ts new file mode 100644 index 00000000..b098e17a --- /dev/null +++ b/frontend/src/components/shared/LineChart/AxisRange.ts @@ -0,0 +1,51 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useLayoutEffect} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; +import {DateAxis, IDateAxisDataItem} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {useTranslation} from 'react-i18next'; +import {IGridSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/Grid'; +import {IGraphicsSettings} from '@amcharts/amcharts5/.internal/core/render/Graphics'; +import {IAxisLabelSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel'; + +export default function useDateAxisRange( + settings: { + data?: IDateAxisDataItem; + grid?: Partial; + axisFill?: Partial; + label?: Partial; + }, + root: Root | null, + chart: XYChart | null, + xAxis: DateAxis | null +) { + const {i18n} = useTranslation(); + + useLayoutEffect(() => { + if (!chart || !root || !xAxis || !settings.data) { + return; + } + + const rangeDataItem = xAxis.makeDataItem(settings.data); + const range = xAxis.createAxisRange(rangeDataItem); + + if (settings.grid) { + range.get('grid')?.setAll(settings.grid); + } + + if (settings.axisFill) { + range.get('axisFill')?.setAll(settings.axisFill); + } + + if (settings.label) { + range.get('label')?.setAll(settings.label); + } + + return () => { + xAxis?.axisRanges.removeValue(range); + }; + }, [chart, i18n.language, root, settings.axisFill, settings.data, settings.grid, settings.label, xAxis]); +} diff --git a/frontend/src/components/shared/LineChart/Chart.ts b/frontend/src/components/shared/LineChart/Chart.ts new file mode 100644 index 00000000..fed2da7b --- /dev/null +++ b/frontend/src/components/shared/LineChart/Chart.ts @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {IXYChartSettings, XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {useLayoutEffect, useState} from 'react'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; + +export default function useXYChart( + root: Root | null, + settings: IXYChartSettings, + initializer?: (chart: XYChart) => void +): XYChart | null { + const [chart, setChart] = useState(); + + useLayoutEffect(() => { + if (!root) { + return; + } + + const newChart = XYChart.new(root, settings); + root.container.children.push(newChart); + setChart(newChart); + + if (initializer) { + initializer(newChart); + } + + return () => { + root.container.children.removeValue(newChart); + newChart.dispose(); + }; + }, [root, settings, initializer]); + + return chart ?? null; +} diff --git a/frontend/src/components/shared/LineChart/DateAxis.ts b/frontend/src/components/shared/LineChart/DateAxis.ts new file mode 100644 index 00000000..cd82f0ea --- /dev/null +++ b/frontend/src/components/shared/LineChart/DateAxis.ts @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {DateAxis, IDateAxisSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {useLayoutEffect, useState} from 'react'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; + +export default function useDateAxis( + root: Root | null, + chart: XYChart | null, + settings: IDateAxisSettings | null, + initializer?: (axis: DateAxis) => void +): DateAxis | null { + const [axis, setAxis] = useState>(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) return; + + const newAxis = DateAxis.new(root, settings); + setAxis(newAxis); + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.push(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.push(newAxis); + } else { + console.warn('Could not determine which chart axis to attach to!'); + } + + if (initializer) { + initializer(newAxis); + } + + return () => { + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.removeValue(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.removeValue(newAxis); + } + + newAxis.dispose(); + }; + }, [root, chart, settings, initializer]); + + return axis ?? null; +} diff --git a/frontend/src/components/shared/LineChart/Filter.ts b/frontend/src/components/shared/LineChart/Filter.ts new file mode 100644 index 00000000..37d28c03 --- /dev/null +++ b/frontend/src/components/shared/LineChart/Filter.ts @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {useCallback, useLayoutEffect} from 'react'; +import {ISpritePointerEvent} from '@amcharts/amcharts5'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {dateToISOString} from '../../../util/util'; +import {DateAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; + +export function useDateSelectorFilter( + chart: XYChart | null, + xAxis: DateAxis | null, + setSelectedDate: (date: string) => void +) { + const setDateCallback = useCallback( + (ev: ISpritePointerEvent & {type: 'click'; target: XYChart}) => { + // Get date from axis position from cursor position + const date = xAxis?.positionToDate( + xAxis.toAxisPosition(ev.target.get('cursor')?.getPrivate('positionX') as number) + ); + + if (date) { + // Remove time information to only have a date + date.setHours(0, 0, 0, 0); + // Set date in store + setSelectedDate(dateToISOString(date)); + } + }, + [xAxis, setSelectedDate] + ); + + useLayoutEffect(() => { + if (!chart) { + return; + } + + const event = chart.events.on('click', setDateCallback); + + return () => { + event.dispose(); + }; + }, [chart, setDateCallback]); +} diff --git a/frontend/src/components/shared/LineChart/LineSeries.ts b/frontend/src/components/shared/LineChart/LineSeries.ts new file mode 100644 index 00000000..7b9cb65c --- /dev/null +++ b/frontend/src/components/shared/LineChart/LineSeries.ts @@ -0,0 +1,75 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {ILineSeriesSettings, LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; +import {useLayoutEffect, useState} from 'react'; + +export default function useLineSeries( + root: Root | null, + chart: XYChart | null, + settings: ILineSeriesSettings | null, + initializer?: (series: LineSeries) => void +): LineSeries | null { + const [series, setSeries] = useState(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) { + return; + } + + const series = LineSeries.new(root, settings); + chart.series.push(series); + setSeries(series); + + if (initializer) { + initializer(series); + } + + return () => { + chart.series.removeValue(series); + series.dispose(); + }; + }, [chart, root, settings, initializer]); + + return series ?? null; +} + +export function useLineSeriesList( + root: Root | null, + chart: XYChart | null, + settings: Array, + initializer?: (series: LineSeries, i: number) => void +) { + const [series, setSeries] = useState>(); + + useLayoutEffect(() => { + if (!root || !chart || settings.length === 0) { + return; + } + + const seriesList: Array = []; + for (let i = 0; i < settings.length; i++) { + const setting = settings[i]; + const newSeries = LineSeries.new(root, setting); + seriesList.push(newSeries); + + if (initializer) { + initializer(newSeries, i); + } + } + + chart.series.pushAll(seriesList); + setSeries(seriesList); + + return () => { + for (const entry of seriesList) { + chart.series.removeValue(entry); + entry.dispose(); + } + }; + }, [chart, initializer, root, settings, settings.length]); + + return series ?? null; +} diff --git a/frontend/src/components/shared/LineChart/ValueAxis.ts b/frontend/src/components/shared/LineChart/ValueAxis.ts new file mode 100644 index 00000000..c6f4c58f --- /dev/null +++ b/frontend/src/components/shared/LineChart/ValueAxis.ts @@ -0,0 +1,50 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + +import {Root} from '@amcharts/amcharts5/.internal/core/Root'; +import {IValueAxisSettings} from '@amcharts/amcharts5/xy'; +import {ValueAxis} from '@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis'; +import {useLayoutEffect, useState} from 'react'; +import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; +import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; +import {AxisRendererX} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX'; +import {AxisRendererY} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY'; + +export default function useValueAxis( + root: Root | null, + chart: XYChart | null, + settings: IValueAxisSettings | null, + initializer?: (axis: ValueAxis) => void +): ValueAxis | null { + const [axis, setAxis] = useState>(); + + useLayoutEffect(() => { + if (!root || !chart || !settings) return; + + const newAxis = ValueAxis.new(root, settings); + setAxis(newAxis); + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.push(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.push(newAxis); + } else { + console.warn('Could not determine which chart axis to attach to!'); + } + + if (initializer) { + initializer(newAxis); + } + + return () => { + if (settings.renderer instanceof AxisRendererX) { + chart.xAxes.removeValue(newAxis); + } else if (settings.renderer instanceof AxisRendererY) { + chart.yAxes.removeValue(newAxis); + } + + newAxis.dispose(); + }; + }, [root, chart, settings, initializer]); + + return axis ?? null; +} diff --git a/frontend/src/components/shared/map/Root.ts b/frontend/src/components/shared/Root.ts similarity index 100% rename from frontend/src/components/shared/map/Root.ts rename to frontend/src/components/shared/Root.ts From 53f21ef66661786e10a7d1e7a40d82e2fd8e4556 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 19 Jun 2024 13:14:57 +0200 Subject: [PATCH 058/119] :wrench: Small refactoring in how it's defined test component --- .../Scenario/CardsComponents/CardContainer.test.tsx | 4 ++-- .../components/Scenario/CardsComponents/DataCard.test.tsx | 4 ++-- .../CardsComponents/MainCard/CardTooltip.test.tsx | 5 ++--- .../Scenario/CardsComponents/MainCard/MainCard.test.tsx | 4 ++-- .../CompartmentsComponents/CompartmentsRow.test.tsx | 4 ++-- .../CompartmentsComponents/CompartmentsRows.test.tsx | 4 ++-- .../ExpandedButtonComponents/ExpandedButton.test.tsx | 4 ++-- frontend/src/components/LineChartComponents/LineChart.tsx | 8 ++++---- 8 files changed, 18 insertions(+), 19 deletions(-) diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx index c5be6262..529c8401 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/CardContainer.test.tsx @@ -12,7 +12,7 @@ import {render, screen} from '@testing-library/react'; import Theme from 'util/Theme'; import {ThemeProvider} from '@mui/system'; -export default function CardContainerTest() { +const CardContainerTest = () => { // Mock data for the props const compartmentsExpanded = true; const selectedCompartment = 'Compartment 1'; @@ -94,7 +94,7 @@ export default function CardContainerTest() { ); -} +}; describe('CardContainer', () => { test('renders data cards correctly', () => { diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx index 36158012..c07354e6 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/DataCard.test.tsx @@ -11,7 +11,7 @@ import Theme from 'util/Theme'; import {ThemeProvider} from '@mui/system'; import DataCard from 'components/ScenarioComponents/CardsComponents/DataCard'; -function DataCardTest() { +const DataCardTest = () => { const Index = 0; const CompartmentValues: Dictionary = { 'Compartment 1': 10, @@ -105,7 +105,7 @@ function DataCardTest() { /> ); -} +}; describe('DataCard', () => { test('renders DataCard correctly', () => { diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx index 66eedcd8..4887eb96 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx @@ -14,8 +14,7 @@ interface CardTooltipTestInterface { activeScenario: boolean; scenarios: number[]; } - -export default function CardTooltipTest({hovertest, scenarios, index, activeScenario}: CardTooltipTestInterface) { +const CardTooltipTest = ({hovertest, scenarios, index, activeScenario}: CardTooltipTestInterface) => { const color = '#00000'; const [activeScenarios, setActiveScenarios] = useState(scenarios); const [numberSelectedScenario, setSelectedScenario] = useState(index); @@ -36,7 +35,7 @@ export default function CardTooltipTest({hovertest, scenarios, index, activeScen /> ); -} +}; describe('CardTooltip', () => { test('renders the tooltip when hover is true', () => { diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx index e474e715..b6bd1ead 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/MainCard.test.tsx @@ -9,7 +9,7 @@ import Theme from 'util/Theme'; import {Dictionary} from 'types/Cardtypes'; import MainCard from 'components/ScenarioComponents/CardsComponents/MainCard/MainCard'; -function MainCardTest() { +const MainCardTest = () => { const Index = 0; const CompartmentValues: Dictionary = { 'Compartment 1': 10, @@ -61,7 +61,7 @@ function MainCardTest() { /> ); -} +}; describe('MainCard', () => { test('renders MainCard correctly', () => { diff --git a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx index 25fb8021..068ecca6 100644 --- a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRow.test.tsx @@ -9,7 +9,7 @@ import Theme from 'util/Theme'; import CompartmentsRow from 'components/ScenarioComponents/CompartmentsComponents/CompartmentsRow'; import userEvent from '@testing-library/user-event'; -export default function CompartmentsRowTest() { +const CompartmentsRowTest = () => { const compartmentsExpanded = true; const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; const [selectedCompartment, setSelectedCompartment] = useState('Compartment 1'); @@ -38,7 +38,7 @@ export default function CompartmentsRowTest() { ); -} +}; describe('CompartmentsRows', () => { test('renders the correct compartment names', async () => { diff --git a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx index 2eb84442..d2dbdef6 100644 --- a/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CompartmentsComponents/CompartmentsRows.test.tsx @@ -8,7 +8,7 @@ import {ThemeProvider} from '@emotion/react'; import {render, screen, waitFor} from '@testing-library/react'; import Theme from 'util/Theme'; -export default function CompartmentsRowsTest() { +const CompartmentsRowsTest = () => { const compartmentsExpanded = true; const compartments = ['Compartment 1', 'Compartment 2', 'Compartment 3']; const [selectedCompartment, setSelectedCompartment] = useState('Compartment 1'); @@ -35,7 +35,7 @@ export default function CompartmentsRowsTest() { ); -} +}; describe('CompartmentsRows', () => { test('renders the correct number of compartments', async () => { diff --git a/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx index 0b3285b6..640f0186 100644 --- a/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx +++ b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx @@ -9,7 +9,7 @@ import {ThemeProvider} from '@emotion/react'; import Theme from 'util/Theme'; -export default function GeneralButtonTest() { +const GeneralButtonTest = () => { const buttonTexts = {clicked: 'Clicked', unclicked: 'Unclicked'}; const isDisabled = () => true; const handleClick = () => {}; @@ -21,7 +21,7 @@ export default function GeneralButtonTest() { ); -} +}; describe('GeneralButtonTest', () => { test('renders the button with the correct initial text', async () => { diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index a61cbeeb..63511023 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -371,7 +371,7 @@ export default function LineChart({ const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); const docPosition = root.rootPointToDocument(globalPosition).x; setReferenceDayBottom(docPosition); - }, [chart, root, xAxis, referenceDay]); + }, [chart, root, xAxis, referenceDay, setReferenceDayBottom]); useLayoutEffect(() => { if (!root || !chart || !xAxis) { @@ -449,7 +449,7 @@ export default function LineChart({ ? color(getScenarioPrimaryColor(selectedScenario, theme)) : undefined, }; - }, [selectedScenario, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + }, [selectedScenario, xAxis, yAxis, chartId, theme]); useLineSeries( root, chart, @@ -486,7 +486,7 @@ export default function LineChart({ }), stroke: color(getScenarioPrimaryColor(scenario.id, theme)), })); - }, [scenarioList, root, simulationDataChartName, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + }, [scenarioList, root, simulationDataChartName, xAxis, yAxis, chartId, theme]); useLineSeriesList( root, chart, @@ -532,7 +532,7 @@ export default function LineChart({ }), stroke: color(getScenarioPrimaryColor(selectedScenario, theme)), })); - }, [groupFilterList, root, selectedScenario, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + }, [groupFilterList, root, selectedScenario, xAxis, yAxis, chartId, theme]); useLineSeriesList( root, chart, From a79b9291702322fa36973b1d4db1581b5cc08932 Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 19 Jun 2024 15:27:56 +0200 Subject: [PATCH 059/119] :beetle: Fixed crash on language change --- .../__tests__/components/LineChart.test.tsx | 54 +++++++++++++++++-- frontend/src/__tests__/mocks/resize.ts | 7 +++ .../LineChartComponents/LineChart.tsx | 12 ++--- .../Sidebar/MapComponents/HeatMap.tsx | 50 +++++++---------- .../src/components/shared/HeatMap/Zoom.ts | 1 - .../components/shared/LineChart/LineSeries.ts | 2 +- 6 files changed, 83 insertions(+), 43 deletions(-) create mode 100644 frontend/src/__tests__/mocks/resize.ts diff --git a/frontend/src/__tests__/components/LineChart.test.tsx b/frontend/src/__tests__/components/LineChart.test.tsx index 946177db..74a1a688 100644 --- a/frontend/src/__tests__/components/LineChart.test.tsx +++ b/frontend/src/__tests__/components/LineChart.test.tsx @@ -2,16 +2,60 @@ // SPDX-License-Identifier: Apache-2.0 import LineChart from 'components/LineChartComponents/LineChart'; -import React from 'react'; +import React, {useCallback, useMemo} from 'react'; import {render, screen} from '@testing-library/react'; -import {describe, test, expect} from 'vitest'; +import {describe, test, expect, vi} from 'vitest'; +import {ResizeObserverMock} from '__tests__/mocks/resize'; +import {I18nextProvider} from 'react-i18next'; +import i18n from '../../util/i18nForTests'; +const LineChartTest = () => { + const localization = useMemo(() => { + return { + customLang: 'backend', + overrides: { + 'compartment.Infected': 'infection-states.Infected', + }, + }; + }, []); + const simulationDataChartName = useCallback(() => 'scenario-names', []); + const caseData = useMemo(() => { + return [ + { + day: '2021-04-01', + value: 3723.5826785713944, + }, + { + day: '2021-04-02', + value: 3688.2426285714214, + }, + ]; + }, []); + return ( +
+ {}} + setReferenceDayBottom={() => {}} + simulationDataChartName={simulationDataChartName} + minDate={'2020-02-20'} + maxDate={'2020-02-20'} + selectedScenario={0} + referenceDay={'2020-02-20'} + selectedCompartment={'Infected'} + localization={localization} + caseData={caseData} + /> +
+ ); +}; describe('LineChart', () => { + vi.stubGlobal('ResizeObserver', ResizeObserverMock); test('renders LineChart', () => { render( -
- {}} caseData={undefined} selectedCompartment={''} /> -
+ + + ); expect(screen.getByTestId('chartdiv')).toBeInTheDocument(); diff --git a/frontend/src/__tests__/mocks/resize.ts b/frontend/src/__tests__/mocks/resize.ts new file mode 100644 index 00000000..2cda9a8f --- /dev/null +++ b/frontend/src/__tests__/mocks/resize.ts @@ -0,0 +1,7 @@ +import {vi} from 'vitest'; + +export const ResizeObserverMock = vi.fn(() => ({ + observe: vi.fn(), + unobserve: vi.fn(), + disconnect: vi.fn(), +})); diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index a61cbeeb..8c40f66d 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -371,7 +371,7 @@ export default function LineChart({ const globalPosition = xAxis.toGlobal({x: xAxisPosition, y: 0}); const docPosition = root.rootPointToDocument(globalPosition).x; setReferenceDayBottom(docPosition); - }, [chart, root, xAxis, referenceDay]); + }, [chart, root, xAxis, referenceDay, setReferenceDayBottom]); useLayoutEffect(() => { if (!root || !chart || !xAxis) { @@ -416,7 +416,7 @@ export default function LineChart({ connect: false, stroke: color('#000'), }; - }, [localization.overrides, defaultT, customT, xAxis, yAxis, chartId]); + }, [localization.overrides, xAxis, yAxis, chartId, defaultT, customT]); useLineSeries( root, chart, @@ -429,7 +429,7 @@ export default function LineChart({ ); const percentileSeriesSettings = useMemo(() => { - if (!xAxis || !yAxis) { + if (!xAxis || !yAxis || !selectedScenario) { return null; } @@ -449,7 +449,7 @@ export default function LineChart({ ? color(getScenarioPrimaryColor(selectedScenario, theme)) : undefined, }; - }, [selectedScenario, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + }, [selectedScenario, xAxis, yAxis, chartId, theme]); useLineSeries( root, chart, @@ -486,7 +486,7 @@ export default function LineChart({ }), stroke: color(getScenarioPrimaryColor(scenario.id, theme)), })); - }, [scenarioList, root, simulationDataChartName, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + }, [scenarioList, root, simulationDataChartName, xAxis, yAxis, chartId, theme]); useLineSeriesList( root, chart, @@ -532,7 +532,7 @@ export default function LineChart({ }), stroke: color(getScenarioPrimaryColor(selectedScenario, theme)), })); - }, [groupFilterList, root, selectedScenario, theme.custom.scenarios, xAxis, yAxis, chartId, theme]); + }, [groupFilterList, root, selectedScenario, xAxis, yAxis, chartId, theme]); useLineSeriesList( root, chart, diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index ffa89d62..90ffba81 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -123,18 +123,6 @@ export default function HeatMap({ const lastSelectedPolygon = useRef(null); const [longLoadTimeout, setLongLoadTimeout] = useState(); - // Memoize the default localization object to avoid infinite re-renders - const defaultLocalization = useMemo(() => { - return { - formatNumber: (value: number) => value.toString(), - customLang: 'global', - overrides: {}, - }; - }, []); - - // Use the provided localization or default to the memoized one - const localizationToUse = localization || defaultLocalization; - // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. const isFetching = useMemo(() => { if (selectedScenario == null) { @@ -152,25 +140,12 @@ export default function HeatMap({ }; }, []); - const zoom = useZoomControl(root, zoomSettings); - - const chartSettings = useMemo(() => { - if (!zoom) return null; - return { - projection: am5map.geoMercator(), - maxZoomLevel: maxZoomLevel, - maxPanOut: 0.4, - zoomControl: zoom, - }; - }, [maxZoomLevel, zoom]); - - const chart = useMapChart( + const zoom = useZoomControl( root, - chartSettings, + zoomSettings, useCallback( - (chart: am5map.MapChart) => { + (zoom: am5map.ZoomControl) => { if (!root) return; - const zoom = chart.get('zoomControl') as am5map.ZoomControl; zoom.homeButton.set('visible', true); const fixSVGPosition = { width: 25, @@ -207,6 +182,18 @@ export default function HeatMap({ ) ); + const chartSettings = useMemo(() => { + if (!zoom) return null; + return { + projection: am5map.geoMercator(), + maxZoomLevel: maxZoomLevel, + maxPanOut: 0.4, + zoomControl: zoom, + }; + }, [maxZoomLevel, zoom]); + + const chart = useMapChart(root, chartSettings); + const polygonSettings = useMemo(() => { return { geoJSON: mapData as GeoJSON, @@ -247,7 +234,10 @@ export default function HeatMap({ polygonTemplate.events.on('pointerover', (e) => { if (legendRef.current) { const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; - legendRef.current.showValue(value, localizationToUse.formatNumber!(value)); + legendRef.current.showValue( + value, + localization && localization.formatNumber ? localization.formatNumber(value) : value.toString() + ); } }); //hide tooltip on heat legend when not hovering anymore event @@ -261,10 +251,10 @@ export default function HeatMap({ defaultFill, fillOpacity, legendRef, - localizationToUse.formatNumber, setSelectedArea, theme.palette.background.default, theme.palette.primary.main, + localization, ] ) ); diff --git a/frontend/src/components/shared/HeatMap/Zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts index a377f490..8147c2c0 100644 --- a/frontend/src/components/shared/HeatMap/Zoom.ts +++ b/frontend/src/components/shared/HeatMap/Zoom.ts @@ -24,7 +24,6 @@ export default function useZoomControl( if (initializer) { initializer(newZoom); } - return () => { newZoom.dispose(); }; diff --git a/frontend/src/components/shared/LineChart/LineSeries.ts b/frontend/src/components/shared/LineChart/LineSeries.ts index 7b9cb65c..f984598f 100644 --- a/frontend/src/components/shared/LineChart/LineSeries.ts +++ b/frontend/src/components/shared/LineChart/LineSeries.ts @@ -31,7 +31,7 @@ export default function useLineSeries( chart.series.removeValue(series); series.dispose(); }; - }, [chart, root, settings, initializer]); + }, [root, initializer, chart, settings]); return series ?? null; } From 169b82efcf97b14cf37543fec53acdd2da519dc5 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 19 Jun 2024 16:39:29 +0200 Subject: [PATCH 060/119] :beetle: Fix the updating of the map when changing languages --- frontend/src/__tests__/mocks/resize.ts | 3 ++ .../Sidebar/MapComponents/HeatMap.tsx | 29 +++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/frontend/src/__tests__/mocks/resize.ts b/frontend/src/__tests__/mocks/resize.ts index 2cda9a8f..0a004332 100644 --- a/frontend/src/__tests__/mocks/resize.ts +++ b/frontend/src/__tests__/mocks/resize.ts @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) +// SPDX-License-Identifier: Apache-2.0 + import {vi} from 'vitest'; export const ResizeObserverMock = vi.fn(() => ({ diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 90ffba81..b49611c1 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -229,17 +229,6 @@ export default function HeatMap({ } }); - // Set heat map properties - //show tooltip on heat legend when hovering - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; - legendRef.current.showValue( - value, - localization && localization.formatNumber ? localization.formatNumber(value) : value.toString() - ); - } - }); //hide tooltip on heat legend when not hovering anymore event polygonTemplate.events.on('pointerout', () => { if (legendRef.current) { @@ -254,11 +243,27 @@ export default function HeatMap({ setSelectedArea, theme.palette.background.default, theme.palette.primary.main, - localization, ] ) ); + // Set heat map properties + //show tooltip on heat legend when hovering + useEffect(() => { + if (polygonSeries) { + const polygonTemplate = polygonSeries.mapPolygons.template; + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef.current) { + const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; + legendRef.current.showValue( + value, + localization && localization.formatNumber ? localization.formatNumber(value) : value.toString() + ); + } + }); + } + }, [localization, legendRef, polygonSeries]); + // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This // prevents that the indicator is showing for every little change. useEffect(() => { From 764e83b6a10a36b3822450c76446c005bc3ac5d4 Mon Sep 17 00:00:00 2001 From: Violini Date: Wed, 19 Jun 2024 16:40:54 +0200 Subject: [PATCH 061/119] :beetle: Fix language change problem on map --- .../Sidebar/MapComponents/HeatMap.tsx | 95 +++++++++---------- .../src/components/shared/HeatMap/Polygon.ts | 2 +- 2 files changed, 45 insertions(+), 52 deletions(-) diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 90ffba81..fe0337b3 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useState, useEffect, useRef, useMemo, useCallback} from 'react'; +import {useState, useEffect, useRef, useMemo, useCallback, useLayoutEffect} from 'react'; import * as am5 from '@amcharts/amcharts5'; import * as am5map from '@amcharts/amcharts5/map'; import {GeoJSON} from 'geojson'; @@ -19,6 +19,7 @@ import useRoot from 'components/shared/Root'; import useMapChart from 'components/shared/HeatMap/Map'; import useZoomControl from 'components/shared/HeatMap/Zoom'; import usePolygonSeries from 'components/shared/HeatMap/Polygon'; +import {useConst} from 'util/hooks'; interface MapProps { /** The data to be displayed on the map, in GeoJSON format. */ @@ -205,60 +206,52 @@ export default function HeatMap({ root, chart, polygonSettings, - useCallback( - (polygonSeries: am5map.MapPolygonSeries) => { - const polygonTemplate = polygonSeries.mapPolygons.template; - - // Set properties for each polygon - polygonTemplate.setAll({ - fill: am5.color(defaultFill), - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - fillOpacity: fillOpacity, - }); - - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); + useConst((polygonSeries: am5map.MapPolygonSeries) => { + const polygonTemplate = polygonSeries.mapPolygons.template; + // Set properties for each polygon + polygonTemplate.setAll({ + fill: am5.color(defaultFill), + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + fillOpacity: fillOpacity, + }); - polygonTemplate.events.on('click', function (ev) { - if (ev.target.dataItem?.dataContext) { - setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); - } - }); + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); - // Set heat map properties - //show tooltip on heat legend when hovering - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; - legendRef.current.showValue( - value, - localization && localization.formatNumber ? localization.formatNumber(value) : value.toString() - ); - } - }); - //hide tooltip on heat legend when not hovering anymore event - polygonTemplate.events.on('pointerout', () => { - if (legendRef.current) { - void legendRef.current.hideTooltip(); - } - }); - }, - [ - defaultFill, - fillOpacity, - legendRef, - setSelectedArea, - theme.palette.background.default, - theme.palette.primary.main, - localization, - ] - ) + polygonTemplate.events.on('click', function (ev) { + if (ev.target.dataItem?.dataContext) { + setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); + } + }); + }) ); + // This effect is responsible for showing the tooltip on the heat legend when hovering over a region. + useLayoutEffect(() => { + if (!polygonSeries) return; + const polygonTemplate = polygonSeries.mapPolygons.template; + //show tooltip on heat legend when hovering + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef.current) { + const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; + legendRef.current.showValue( + value, + localization && localization.formatNumber ? localization.formatNumber!(value) : value.toString() + ); + } + }); + //hide tooltip on heat legend when not hovering anymore event + polygonTemplate.events.on('pointerout', () => { + if (legendRef.current) { + void legendRef.current.hideTooltip(); + } + }); + }, [polygonSeries, legendRef, localization]); + // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This // prevents that the indicator is showing for every little change. useEffect(() => { diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts index ba46c8c8..8b877b53 100644 --- a/frontend/src/components/shared/HeatMap/Polygon.ts +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -29,7 +29,7 @@ export default function usePolygonSeries( return () => { newPolygon.dispose(); }; - }, [root, settings, initializer, chart?.series, chart]); + }, [root, settings, chart]); return polygon; } From 8d61afd653fca5613a5b807cd007e5cb3123ff9f Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 20 Jun 2024 14:20:22 +0200 Subject: [PATCH 062/119] :beetle: Fix Reference Day on LineChart Component and Germany translation when changing language on Map Component --- frontend/src/DataContext.tsx | 1 + .../src/components/Sidebar/MapContainer.tsx | 27 ++++++++++++++----- .../components/shared/LineChart/AxisRange.ts | 5 +--- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 6dc46980..94613911 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -354,6 +354,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { /* [CDtemp-begin] */ // append germany to list jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''}); + console.log({RS: '00000', GEN: t('germany'), BEZ: ''}); // append city districts jsonlist.push( ...(searchbarCologneData as unknown as Array).map((dist) => { diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index 8187b722..ddf29e30 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -75,6 +75,13 @@ export default function MapContainer() { const legendRef = useRef(null); + useEffect(() => { + if (selectedArea.RS === '00000') { + setSelectedArea(defaultValue); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [i18n.language]); + useEffect(() => { dispatch( selectDistrict({ @@ -114,6 +121,13 @@ export default function MapContainer() { }; }, [formatNumber]); + const optionLabel = useCallback( + (option: FeatureProperties) => { + return `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`; + }, + [t] + ); + return ( `${option.GEN}${option.BEZ ? ` (${t(`BEZ.${option.BEZ}`)})` : ''}`} + optionLabel={optionLabel} autoCompleteValue={{ - RS: selectedArea['RS'], - GEN: selectedArea['GEN'], - BEZ: selectedArea['BEZ'], - id: selectedArea['id'], + RS: selectedArea.RS, + GEN: selectedArea.GEN, + BEZ: selectedArea.BEZ, + id: selectedArea.id, }} onChange={(_event, option) => { if (option) { - setSelectedArea(option); + if (option.RS && option.GEN && option.BEZ) setSelectedArea(option); + else setSelectedArea(defaultValue); } }} placeholder={`${selectedArea.GEN}${selectedArea.BEZ ? ` (${t(`BEZ.${selectedArea.BEZ}`)})` : ''}`} diff --git a/frontend/src/components/shared/LineChart/AxisRange.ts b/frontend/src/components/shared/LineChart/AxisRange.ts index b098e17a..59efb03b 100644 --- a/frontend/src/components/shared/LineChart/AxisRange.ts +++ b/frontend/src/components/shared/LineChart/AxisRange.ts @@ -6,7 +6,6 @@ import {Root} from '@amcharts/amcharts5/.internal/core/Root'; import {XYChart} from '@amcharts/amcharts5/.internal/charts/xy/XYChart'; import {AxisRenderer} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer'; import {DateAxis, IDateAxisDataItem} from '@amcharts/amcharts5/.internal/charts/xy/axes/DateAxis'; -import {useTranslation} from 'react-i18next'; import {IGridSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/Grid'; import {IGraphicsSettings} from '@amcharts/amcharts5/.internal/core/render/Graphics'; import {IAxisLabelSettings} from '@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel'; @@ -22,8 +21,6 @@ export default function useDateAxisRange( chart: XYChart | null, xAxis: DateAxis | null ) { - const {i18n} = useTranslation(); - useLayoutEffect(() => { if (!chart || !root || !xAxis || !settings.data) { return; @@ -47,5 +44,5 @@ export default function useDateAxisRange( return () => { xAxis?.axisRanges.removeValue(range); }; - }, [chart, i18n.language, root, settings.axisFill, settings.data, settings.grid, settings.label, xAxis]); + }, [chart, root, settings.axisFill, settings.data, settings.grid, settings.label, xAxis]); } From b7608ba716b5dc854bd579d30dc20d853d5096c1 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 20 Jun 2024 14:49:44 +0200 Subject: [PATCH 063/119] :beetle: Fix zoom when changing language --- frontend/src/DataContext.tsx | 1 - .../components/Sidebar/MapComponents/HeatMap.tsx | 14 +++++++++----- frontend/src/components/shared/HeatMap/Polygon.ts | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 94613911..6dc46980 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -354,7 +354,6 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { /* [CDtemp-begin] */ // append germany to list jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''}); - console.log({RS: '00000', GEN: t('germany'), BEZ: ''}); // append city districts jsonlist.push( ...(searchbarCologneData as unknown as Array).map((dist) => { diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index aa269645..0b8e0107 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -147,13 +147,13 @@ export default function HeatMap({ useCallback( (zoom: am5map.ZoomControl) => { if (!root) return; - zoom.homeButton.set('visible', true); const fixSVGPosition = { width: 25, height: 25, dx: -5, dy: -3, }; + zoom.homeButton.set('visible', true); zoom.homeButton.set( 'icon', am5.Picture.new(root, { @@ -161,9 +161,6 @@ export default function HeatMap({ ...fixSVGPosition, }) as unknown as am5.Graphics ); - zoom.homeButton.events.on('click', () => { - setSelectedArea(defaultSelectedValue); - }); zoom.plusButton.set( 'icon', am5.Picture.new(root, { @@ -179,10 +176,17 @@ export default function HeatMap({ }) as unknown as am5.Graphics ); }, - [root, setSelectedArea, defaultSelectedValue] + [root] ) ); + useLayoutEffect(() => { + if (!zoom || !root) return; + zoom.homeButton.events.on('click', () => { + setSelectedArea(defaultSelectedValue); + }); + }, [zoom, root, setSelectedArea, defaultSelectedValue]); + const chartSettings = useMemo(() => { if (!zoom) return null; return { diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts index 64de8d21..5dfa8085 100644 --- a/frontend/src/components/shared/HeatMap/Polygon.ts +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -31,5 +31,6 @@ export default function usePolygonSeries( }; }, [root, settings, chart, initializer]); + console.log(chart, polygon); return polygon; } From 245b73695aae84aecfd2de23cb8c6fddf9747850 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 20 Jun 2024 14:54:16 +0200 Subject: [PATCH 064/119] :beetle: Fix selectedDistrict when changing language --- .../components/Sidebar/MapComponents/HeatMap.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 0b8e0107..063b3eee 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -225,12 +225,6 @@ export default function HeatMap({ strokeWidth: 2, layer: 1, }); - - polygonTemplate.events.on('click', function (ev) { - if (ev.target.dataItem?.dataContext) { - setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); - } - }); }) ); @@ -239,6 +233,12 @@ export default function HeatMap({ if (!polygonSeries) return; const polygonTemplate = polygonSeries.mapPolygons.template; //show tooltip on heat legend when hovering + polygonTemplate.events.on('click', function (ev) { + if (ev.target.dataItem?.dataContext) { + setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); + } + }); + polygonTemplate.events.on('pointerover', (e) => { if (legendRef.current) { const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; @@ -254,7 +254,7 @@ export default function HeatMap({ void legendRef.current.hideTooltip(); } }); - }, [polygonSeries, legendRef, localization]); + }, [polygonSeries, legendRef, localization, setSelectedArea, theme.palette.primary.main]); // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This // prevents that the indicator is showing for every little change. From 0ba74ed1189af0d6ed661763493cba1d3e4b7a97 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 20 Jun 2024 16:02:23 +0200 Subject: [PATCH 065/119] :beetle: Fix the bug on selectedArea on the Heatmap when refreshed the page --- frontend/src/components/Sidebar/MapComponents/HeatMap.tsx | 5 ++++- frontend/src/components/shared/HeatMap/Polygon.ts | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 063b3eee..da6fe23d 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -285,8 +285,10 @@ export default function HeatMap({ }, [fixedLegendMaxValue, setAggregatedMax, values]); // Create Map with GeoData - useEffect(() => { + useLayoutEffect(() => { if (!polygonSeries) return; + if (isFetching) return; + // Reset last selected polygon if (lastSelectedPolygon.current) { lastSelectedPolygon.current.states.create('default', { @@ -321,6 +323,7 @@ export default function HeatMap({ selectedArea.id, theme.palette.background.default, theme.palette.primary.main, + isFetching, ]); // set Data diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts index 5dfa8085..64de8d21 100644 --- a/frontend/src/components/shared/HeatMap/Polygon.ts +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -31,6 +31,5 @@ export default function usePolygonSeries( }; }, [root, settings, chart, initializer]); - console.log(chart, polygon); return polygon; } From 90683a636766f857beadbc53caf5cfc9739be9e2 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 20 Jun 2024 16:37:14 +0200 Subject: [PATCH 066/119] :wrench: Error handling on zoom --- .../src/components/Sidebar/MapComponents/HeatMap.tsx | 12 ++++++++---- frontend/src/components/shared/HeatMap/Polygon.ts | 5 ++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 063b3eee..0555c00f 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -180,11 +180,15 @@ export default function HeatMap({ ) ); - useLayoutEffect(() => { + useEffect(() => { if (!zoom || !root) return; - zoom.homeButton.events.on('click', () => { - setSelectedArea(defaultSelectedValue); - }); + try { + zoom.homeButton.events.on('click', () => { + setSelectedArea(defaultSelectedValue); + }); + } catch (error) { + console.error('Error adding event listener to home button:', error); + } }, [zoom, root, setSelectedArea, defaultSelectedValue]); const chartSettings = useMemo(() => { diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts index 5dfa8085..89295f6f 100644 --- a/frontend/src/components/shared/HeatMap/Polygon.ts +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -10,7 +10,7 @@ export default function usePolygonSeries( chart: am5map.MapChart | null, settings: am5map.IMapPolygonSeriesSettings, initializer?: (polygon: am5map.MapPolygonSeries) => void -): am5map.MapPolygonSeries | undefined { +): am5map.MapPolygonSeries | null { const [polygon, setPolygon] = useState(); useLayoutEffect(() => { @@ -31,6 +31,5 @@ export default function usePolygonSeries( }; }, [root, settings, chart, initializer]); - console.log(chart, polygon); - return polygon; + return polygon ?? null; } From d18605ce98a5e6c10cb9a2946164b375a7555b78 Mon Sep 17 00:00:00 2001 From: Violini Date: Fri, 21 Jun 2024 15:19:44 +0200 Subject: [PATCH 067/119] :wrench: Refactor Wrapping components --- frontend/src/DataContext.tsx | 4 --- .../LineChartComponents/LineChart.tsx | 1 - .../ReferenceDatePicker.tsx | 2 +- .../Sidebar/MapComponents/HeatMap.tsx | 26 ++++++++----------- .../src/components/Sidebar/MapContainer.tsx | 2 +- frontend/src/components/shared/HeatMap/Map.ts | 4 ++- .../src/components/shared/HeatMap/Polygon.ts | 8 +++--- .../src/components/shared/HeatMap/Zoom.ts | 3 --- .../src/components/shared/LineChart/Filter.ts | 3 +-- .../components/shared/LineChart/LineSeries.ts | 3 +-- 10 files changed, 22 insertions(+), 34 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 6dc46980..b556b941 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -57,7 +57,6 @@ export const DataContext = createContext<{ groupCategories: GroupCategories | undefined; groupSubCategories: GroupSubcategories | undefined; scenarioListData: Simulations | undefined; - referenceDay: string | null; caseScenarioSimulationData: CaseDataByNode | undefined; simulationModelData: SimulationModel | undefined; caseScenarioData: SimulationDataByNode | undefined; @@ -81,7 +80,6 @@ export const DataContext = createContext<{ groupCategories: undefined, groupSubCategories: undefined, scenarioListData: undefined, - referenceDay: null, caseScenarioSimulationData: undefined, simulationModelData: undefined, caseScenarioData: undefined, @@ -118,7 +116,6 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const selectedDate = useAppSelector((state) => state.dataSelection.date); const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); const scenarioList = useAppSelector((state) => state.scenarioList); - const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); const groupFilterParams1: PostFilter[] = useMemo(() => { if (selectedDistrict && groupFilterList) { @@ -477,7 +474,6 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { groupCategories, groupSubCategories, scenarioListData, - referenceDay, caseScenarioSimulationData: caseScenarioSimulationData.data, simulationModelData: simulationModelData?.results, caseScenarioData, diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 8c40f66d..58753dd7 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -226,7 +226,6 @@ export default function LineChart({ if (!root || !chart) { return null; } - return { renderer: AxisRendererY.new(root, {}), // Fix lower end to 0 diff --git a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx index bee5a97c..0940c585 100644 --- a/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx +++ b/frontend/src/components/ScenarioComponents/ReferenceDatePickerComponents.tsx/ReferenceDatePicker.tsx @@ -49,7 +49,7 @@ export default function ReferenceDatePicker({ (newDate.isAfter(dayjs(minDate)) || newDate.isSame(dayjs(minDate))) && (newDate.isBefore(dayjs(maxDate)) || newDate.isSame(dayjs(maxDate))) ) - setStartDay(newDate.toString()); + setStartDay(newDate.format('YYYY-MM-DD')); }; return ( diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 2b13b8d9..dc9fade3 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -200,6 +200,7 @@ export default function HeatMap({ const chart = useMapChart(root, chartSettings); const polygonSettings = useMemo(() => { + if (!mapData) return null; return { geoJSON: mapData as GeoJSON, tooltipPosition: 'fixed', @@ -219,20 +220,18 @@ export default function HeatMap({ strokeWidth: 1, fillOpacity: fillOpacity, }); - - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); }) ); - - // This effect is responsible for showing the tooltip on the heat legend when hovering over a region. - useLayoutEffect(() => { + useEffect(() => { if (!polygonSeries) return; const polygonTemplate = polygonSeries.mapPolygons.template; - //show tooltip on heat legend when hovering + + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + polygonTemplate.events.on('click', function (ev) { if (ev.target.dataItem?.dataContext) { setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); @@ -284,7 +283,7 @@ export default function HeatMap({ } }, [fixedLegendMaxValue, setAggregatedMax, values]); - // Create Map with GeoData + // This effect is responsible for highlighting the selected region on the map. useEffect(() => { if (!polygonSeries || isFetching) return; // Reset last selected polygon @@ -325,11 +324,10 @@ export default function HeatMap({ ]); // set Data - useEffect(() => { + useLayoutEffect(() => { if (!polygonSeries) return; if (selectedScenario !== null && !isFetching && values && Number.isFinite(aggregatedMax)) { const map = new Map(); - if (!values) return; values.forEach((value) => { map.set(value.id, value.value); }); @@ -366,8 +364,6 @@ export default function HeatMap({ }); } }, [ - root, - chart, aggregatedMax, defaultFill, idValuesToMap, diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index ddf29e30..b4e646ad 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -163,7 +163,7 @@ export default function MapContainer() { /> - + { + root.container.children.removeValue(newChart); newChart.dispose(); }; }, [root, settings, initializer]); diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts index 89295f6f..ea8a8eed 100644 --- a/frontend/src/components/shared/HeatMap/Polygon.ts +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -8,7 +8,7 @@ import {Root} from '@amcharts/amcharts5/.internal/core/Root'; export default function usePolygonSeries( root: Root | null, chart: am5map.MapChart | null, - settings: am5map.IMapPolygonSeriesSettings, + settings: am5map.IMapPolygonSeriesSettings | null, initializer?: (polygon: am5map.MapPolygonSeries) => void ): am5map.MapPolygonSeries | null { const [polygon, setPolygon] = useState(); @@ -17,16 +17,16 @@ export default function usePolygonSeries( if (!root || !chart || !settings) { return; } - - const newPolygon = chart.series.push(am5map.MapPolygonSeries.new(root, settings)); + const newPolygon = am5map.MapPolygonSeries.new(root, settings); + chart.series.push(newPolygon); if (initializer) { initializer(newPolygon); } - setPolygon(newPolygon); return () => { + chart.series.removeValue(newPolygon); newPolygon.dispose(); }; }, [root, settings, chart, initializer]); diff --git a/frontend/src/components/shared/HeatMap/Zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts index 8147c2c0..09e1ce8a 100644 --- a/frontend/src/components/shared/HeatMap/Zoom.ts +++ b/frontend/src/components/shared/HeatMap/Zoom.ts @@ -24,9 +24,6 @@ export default function useZoomControl( if (initializer) { initializer(newZoom); } - return () => { - newZoom.dispose(); - }; }, [root, settings, initializer]); return zoom ?? null; diff --git a/frontend/src/components/shared/LineChart/Filter.ts b/frontend/src/components/shared/LineChart/Filter.ts index 37d28c03..ca733071 100644 --- a/frontend/src/components/shared/LineChart/Filter.ts +++ b/frontend/src/components/shared/LineChart/Filter.ts @@ -31,10 +31,9 @@ export function useDateSelectorFilter( ); useLayoutEffect(() => { - if (!chart) { + if (!chart || chart.isDisposed()) { return; } - const event = chart.events.on('click', setDateCallback); return () => { diff --git a/frontend/src/components/shared/LineChart/LineSeries.ts b/frontend/src/components/shared/LineChart/LineSeries.ts index f984598f..2e40c9ba 100644 --- a/frontend/src/components/shared/LineChart/LineSeries.ts +++ b/frontend/src/components/shared/LineChart/LineSeries.ts @@ -15,7 +15,7 @@ export default function useLineSeries( const [series, setSeries] = useState(); useLayoutEffect(() => { - if (!root || !chart || !settings) { + if (!root || !chart || !settings || chart.isDisposed() || root.isDisposed()) { return; } @@ -35,7 +35,6 @@ export default function useLineSeries( return series ?? null; } - export function useLineSeriesList( root: Root | null, chart: XYChart | null, From 823eba2765d2a1c5f054356d8dc206795976616d Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 27 Jun 2024 14:56:48 +0200 Subject: [PATCH 068/119] :wrench: Refactor heatmap --- frontend/src/DataContext.tsx | 7 +- frontend/src/components/MainContentTabs.tsx | 6 +- .../Sidebar/MapComponents/HeatMap.tsx | 383 ++++++++++++------ .../src/components/Sidebar/MapContainer.tsx | 4 +- .../src/components/shared/HeatMap/Polygon.ts | 2 +- .../src/components/shared/HeatMap/Zoom.ts | 4 + frontend/src/types/map.ts | 1 + 7 files changed, 265 insertions(+), 142 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index b556b941..adb82c1d 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -33,7 +33,7 @@ import {GroupResponse} from 'types/group'; import {Simulations, SimulationModel, SimulationDataByNode} from 'types/scenario'; import {Dictionary} from 'util/util'; import data from '../assets/lk_germany_reduced.geojson?url'; -import {FeatureCollection, FeatureProperties} from 'types/map'; +import {Feature, FeatureCollection, FeatureProperties} from 'types/map'; import cologneDistricts from '../assets/stadtteile_cologne.geojson?url'; import {District} from 'types/cologneDistricts'; import searchbarMapData from '../assets/lk_germany_reduced_list.json?url'; @@ -306,7 +306,10 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { return feat; }) ); - setGeoData(geodata as FeatureCollection); + const newMap = geodata.features.map((district) => { + return {...district, id: district.properties?.RS}; + }); + setGeoData({type: 'FeatureCollection', features: newMap as Feature[]}); }, // on promises reject () => { diff --git a/frontend/src/components/MainContentTabs.tsx b/frontend/src/components/MainContentTabs.tsx index f953794e..2dea1d5a 100644 --- a/frontend/src/components/MainContentTabs.tsx +++ b/frontend/src/components/MainContentTabs.tsx @@ -16,8 +16,10 @@ import {useTranslation} from 'react-i18next'; import {useAppDispatch, useAppSelector} from '../store/hooks'; import {selectTab} from '../store/UserPreferenceSlice'; import {useTheme} from '@mui/material/styles'; -import ParameterEditor from './ParameterEditor'; -import SimulationChart from './LineChartContainer'; + +// Lazily load the tab contents to enable code splitting. +const ParameterEditor = React.lazy(() => import('./ParameterEditor')); +const SimulationChart = React.lazy(() => import('./LineChartContainer')); /** * This component manages the main content, which is a collection of tabs that the user can navigate through. By default diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index dc9fade3..8b39bc32 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -1,25 +1,23 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useState, useEffect, useRef, useMemo, useCallback, useLayoutEffect} from 'react'; +import {useState, useEffect, useMemo, useCallback, useRef} from 'react'; import * as am5 from '@amcharts/amcharts5'; import * as am5map from '@amcharts/amcharts5/map'; import {GeoJSON} from 'geojson'; -import {FeatureCollection} from '../../../types/map'; import svgZoomResetURL from '../../../../assets/svg/zoom_out_map_white_24dp.svg?url'; import svgZoomInURL from '../../../../assets/svg/zoom_in_white_24dp.svg?url'; import svgZoomOutURL from '../../../../assets/svg/zoom_out_white_24dp.svg?url'; -import {FeatureProperties} from '../../../types/map'; -import {HeatmapLegend} from '../../../types/heatmapLegend'; import {Box} from '@mui/material'; import {useTheme} from '@mui/material/styles'; import React from 'react'; -import {Localization} from 'types/localization'; -import useRoot from 'components/shared/Root'; -import useMapChart from 'components/shared/HeatMap/Map'; -import useZoomControl from 'components/shared/HeatMap/Zoom'; -import usePolygonSeries from 'components/shared/HeatMap/Polygon'; -import {useConst} from 'util/hooks'; +import useMapChart from '../../shared/HeatMap/Map'; +import usePolygonSeries from '../../shared/HeatMap/Polygon'; +import useZoomControl from '../../shared/HeatMap/Zoom'; +import useRoot from '../../shared/Root'; +import {HeatmapLegend} from '../../../types/heatmapLegend'; +import {Localization} from '../../../types/localization'; +import {FeatureCollection, FeatureProperties} from '../../../types/map'; interface MapProps { /** The data to be displayed on the map, in GeoJSON format. */ @@ -41,7 +39,7 @@ interface MapProps { maxZoomLevel?: number; /** Optional function to generate tooltip text for each region based on its data. Default is a function that returns the region's ID. */ - tooltipText?: (regionData: FeatureProperties) => string; + tooltipText?: (regionData: FeatureProperties, value: number) => string; /** Optional function to generate tooltip text while data is being fetched. Default is a function that returns 'Loading...'. */ tooltipTextWhileFetching?: (regionData: FeatureProperties) => string; @@ -77,7 +75,7 @@ interface MapProps { legend: HeatmapLegend; /** Reference to the heatmap legend element. */ - legendRef: React.MutableRefObject; + legendRef?: React.MutableRefObject; /** Optional flag indicating if data loading takes a long time. Default is false. */ longLoad?: boolean; @@ -102,8 +100,8 @@ export default function HeatMap({ defaultFill = '#8c8c8c', fillOpacity = 1, maxZoomLevel = 4, - tooltipText = () => '{id}', - tooltipTextWhileFetching = () => 'Loading...', + tooltipText, + tooltipTextWhileFetching, defaultSelectedValue, selectedScenario = 0, isDataFetching = false, @@ -114,15 +112,24 @@ export default function HeatMap({ setAggregatedMax, fixedLegendMaxValue, legend, - legendRef, + legendRef = {current: null}, longLoad = false, setLongLoad = () => {}, localization, idValuesToMap = 'id', }: MapProps) { const theme = useTheme(); - const lastSelectedPolygon = useRef(null); const [longLoadTimeout, setLongLoadTimeout] = useState(); + const [settings, setSettings] = useState< + | { + id: number | string; + value: number; + polygonSettings?: {[key: string]: am5.Color | number | string}; + }[] + | undefined + >(values); + + const lastSelectedPolygon = useRef(); // This memo returns if the required data is currently being fetched. Either the case data or the scenario data. const isFetching = useMemo(() => { @@ -146,7 +153,7 @@ export default function HeatMap({ zoomSettings, useCallback( (zoom: am5map.ZoomControl) => { - if (!root) return; + if (!root || root.isDisposed()) return; const fixSVGPosition = { width: 25, height: 25, @@ -181,7 +188,7 @@ export default function HeatMap({ ); useEffect(() => { - if (!zoom || !root || root.isDisposed()) return; + if (!zoom || zoom.isDisposed() || !root || root.isDisposed()) return; zoom.homeButton.events.on('click', () => { setSelectedArea(defaultSelectedValue); }); @@ -200,7 +207,6 @@ export default function HeatMap({ const chart = useMapChart(root, chartSettings); const polygonSettings = useMemo(() => { - if (!mapData) return null; return { geoJSON: mapData as GeoJSON, tooltipPosition: 'fixed', @@ -211,49 +217,59 @@ export default function HeatMap({ root, chart, polygonSettings, - useConst((polygonSeries: am5map.MapPolygonSeries) => { - const polygonTemplate = polygonSeries.mapPolygons.template; - // Set properties for each polygon - polygonTemplate.setAll({ - fill: am5.color(defaultFill), - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - fillOpacity: fillOpacity, - }); - }) + useCallback( + (polygonSeries: am5map.MapPolygonSeries) => { + const polygonTemplate = polygonSeries.mapPolygons.template; + + // Set properties for each polygon + polygonTemplate.setAll({ + fill: am5.color(defaultFill), + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + fillOpacity: fillOpacity, + templateField: 'polygonSettings', + }); + + polygonTemplate.states.create('hover', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + }, + [defaultFill, fillOpacity, theme.palette.background.default, theme.palette.primary.main] + ) ); + + // Set heat map properties + //show tooltip on heat legend when hovering useEffect(() => { - if (!polygonSeries) return; - const polygonTemplate = polygonSeries.mapPolygons.template; + if (polygonSeries) { + const polygonTemplate = polygonSeries.mapPolygons.template; - polygonTemplate.states.create('hover', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); + polygonTemplate.events.on('click', function (ev) { + if (ev.target.dataItem?.dataContext) { + setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); + } + }); - polygonTemplate.events.on('click', function (ev) { - if (ev.target.dataItem?.dataContext) { - setSelectedArea(ev.target.dataItem.dataContext as FeatureProperties); - } - }); + polygonTemplate.events.on('pointerover', (e) => { + if (legendRef && legendRef.current) { + const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; + legendRef.current.showValue( + value, + localization && localization.formatNumber ? localization.formatNumber(value) : value.toString() + ); + } + }); - polygonTemplate.events.on('pointerover', (e) => { - if (legendRef.current) { - const value = (e.target.dataItem?.dataContext as FeatureProperties).value as number; - legendRef.current.showValue( - value, - localization && localization.formatNumber ? localization.formatNumber(value) : value.toString() - ); - } - }); - //hide tooltip on heat legend when not hovering anymore event - polygonTemplate.events.on('pointerout', () => { - if (legendRef.current) { - void legendRef.current.hideTooltip(); - } - }); - }, [polygonSeries, legendRef, localization, setSelectedArea, theme.palette.primary.main]); + //hide tooltip on heat legend when not hovering anymore event + polygonTemplate.events.on('pointerout', () => { + if (legendRef && legendRef.current) { + void legendRef.current.hideTooltip(); + } + }); + } + }, [localization, legendRef, polygonSeries, setSelectedArea]); // This effect is responsible for showing the loading indicator if the data is not ready within 1 second. This // prevents that the indicator is showing for every little change. @@ -283,100 +299,197 @@ export default function HeatMap({ } }, [fixedLegendMaxValue, setAggregatedMax, values]); - // This effect is responsible for highlighting the selected region on the map. + // This effect is responsible for updating the fill color of the polygons based on the values and the legend. useEffect(() => { - if (!polygonSeries || isFetching) return; - // Reset last selected polygon - if (lastSelectedPolygon.current) { - lastSelectedPolygon.current.states.create('default', { - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - layer: 0, - }); - lastSelectedPolygon.current.states.apply('default'); - } - // Highlight selected polygon - polygonSeries.mapPolygons.each((mapPolygon) => { - if (mapPolygon.dataItem && mapPolygon.dataItem.dataContext) { - const areaData = mapPolygon.dataItem.dataContext as FeatureProperties; - const id: string | number = areaData[idValuesToMap]; - if (id == selectedArea[idValuesToMap]) { - mapPolygon.states.create('default', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, + if (!polygonSeries) return; + if (selectedScenario !== null && values && Number.isFinite(aggregatedMax) && !isFetching) { + const polygonColors = values.map((value) => { + let fillColor = am5.color(defaultFill); + if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { + // if legend is normalized, also pass mix & max to color function + fillColor = getColorFromLegend(value.value, legend, { + min: 0, + max: aggregatedMax, }); - if (!mapPolygon.isHover()) { - mapPolygon.states.apply('default'); - } - lastSelectedPolygon.current = mapPolygon; + } else { + // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed + fillColor = getColorFromLegend(value.value, legend); } - } - }); - }, [ - isFetching, - idValuesToMap, - polygonSeries, - selectedArea, - selectedArea.id, - theme.palette.background.default, - theme.palette.primary.main, - ]); - - // set Data - useLayoutEffect(() => { - if (!polygonSeries) return; - if (selectedScenario !== null && !isFetching && values && Number.isFinite(aggregatedMax)) { - const map = new Map(); - values.forEach((value) => { - map.set(value.id, value.value); + return { + id: value.id, + value: value.value, + polygonSettings: {fill: fillColor}, + }; }); - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as FeatureProperties; - regionData.value = map.get(regionData[idValuesToMap]) ?? Number.NaN; - // determine fill color - let fillColor = am5.color(defaultFill); - if (Number.isFinite(regionData.value) && typeof regionData.value === 'number') { - if (legend.steps[0].value == 0 && legend.steps[legend.steps.length - 1].value == 1) { - // if legend is normalized, also pass mix & max to color function - fillColor = getColorFromLegend(regionData.value, legend, { - min: 0, - max: aggregatedMax, - }); - } else { - // if legend is not normalized, min & max are first and last stop of legend and don't need to be passed - fillColor = getColorFromLegend(regionData.value, legend); - } + setSettings((settings) => { + if (settings && settings.length > 0) { + return settings.map((setting) => { + const newSetting = polygonColors.find((newSetting) => newSetting.id === setting.id); + if (!setting.polygonSettings) return {id: setting.id, value: setting.value, ...newSetting?.polygonSettings}; + return { + id: setting.id, + value: setting.value, + polygonSettings: {...setting.polygonSettings, ...newSetting?.polygonSettings}, + }; + }); } - polygon.setAll({ - tooltipText: tooltipText(regionData), - fill: fillColor, - }); + return polygonColors; }); } else if (longLoad || !values) { - polygonSeries.mapPolygons.each((polygon) => { - const regionData = polygon.dataItem?.dataContext as FeatureProperties; - regionData.value = Number.NaN; - polygon.setAll({ - tooltipText: tooltipTextWhileFetching(regionData), - fill: am5.color(theme.palette.text.disabled), - }); + polygonSeries.setAll({ + fill: am5.color(theme.palette.text.disabled), }); } }, [ aggregatedMax, - defaultFill, - idValuesToMap, isFetching, - legend, longLoad, - polygonSeries, - selectedScenario, theme.palette.text.disabled, - tooltipText, - tooltipTextWhileFetching, + selectedScenario, + polygonSeries, values, + legend, + defaultFill, + ]); + + const [startingSelectedAreaSettings, setStartingSelectedAreaSettings] = useState< + | { + id: number | string; + value: number; + polygonSettings?: {[key: string]: am5.Color | number | string}; + }[] + | undefined + >(); + + useEffect(() => { + if (startingSelectedAreaSettings === undefined && values) { + const initialSettings = values.map((value) => { + if (value.id === selectedArea[idValuesToMap]) { + return { + id: value.id, + value: value.value, + polygonSettings: { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }, + }; + } + return {id: value.id, value: value.value}; + }); + setStartingSelectedAreaSettings(initialSettings); + } + // eslint-disable-next-line + }, [values]); + + // This effect is responsible for updating the selected polygon's stroke color and width. + useEffect(() => { + setSettings((settings) => { + if (!settings) { + return startingSelectedAreaSettings; + } else { + const selectedId = selectedArea[idValuesToMap]; + const lastSelectedId = lastSelectedPolygon.current; + const primaryStroke = am5.color(theme.palette.primary.main); + const defaultStroke = am5.color(theme.palette.background.default); + + return settings.map((setting) => { + const isSelected = setting.id === selectedId; + const isLastSelected = setting.id === lastSelectedId; + + if (isSelected || isLastSelected) { + return { + id: setting.id, + value: setting.value, + polygonSettings: { + ...setting.polygonSettings, + stroke: isSelected ? primaryStroke : defaultStroke, + strokeWidth: isSelected ? 2 : 1, + layer: isSelected ? 1 : 0, + }, + }; + } + + return setting; + }); + } + }); + lastSelectedPolygon.current = selectedArea[idValuesToMap]; + }, [ + selectedArea, + theme.palette.primary.main, + theme.palette.background.default, + idValuesToMap, + startingSelectedAreaSettings, ]); + const valuesMap = useMemo(() => { + const valuesMap = new Map(); + if (values) + values.forEach((value) => { + valuesMap.set(value.id, value.value); + }); + return valuesMap; + }, [values]); + + const tooltipsMap = useMemo(() => { + const tooltipsMap = new Map(); + if (mapData) { + mapData.features.forEach((feature) => { + if (feature.properties) { + const tooltip = + longLoad || valuesMap.size === 0 + ? tooltipTextWhileFetching + ? tooltipTextWhileFetching(feature.properties) + : 'Loading...' + : tooltipText + ? tooltipText(feature.properties, valuesMap.get(feature.properties[idValuesToMap]) as number) + : `${feature.properties[idValuesToMap]}`; + tooltipsMap.set(feature.properties[idValuesToMap], tooltip); + } + }); + } + return tooltipsMap; + }, [mapData, valuesMap, longLoad, idValuesToMap, tooltipText, tooltipTextWhileFetching]); + + // This effect is responsible for updating the tooltip text for each polygon. + useEffect(() => { + if (!mapData) return; + setSettings((settings) => { + if (!settings) + return mapData.features.map((feature) => { + return { + id: feature.properties[idValuesToMap], + value: 0, + }; + }); + return settings.map((setting) => { + return { + id: setting.id, + value: valuesMap.get(setting.id) as number, + polygonSettings: { + ...setting.polygonSettings, + tooltipText: tooltipsMap.get(setting.id) as string, + }, + }; + }); + }); + }, [valuesMap, tooltipsMap, mapData, idValuesToMap]); + + // This effect is responsible for updating the map data when the mapData prop changes. + useEffect(() => { + if ( + !polygonSeries || + !settings || + !settings.some( + (setting) => + setting.polygonSettings && + setting.polygonSettings.fill != am5.color(defaultFill) && + setting.polygonSettings.tooltipText + ) + ) + return; + polygonSeries.data.setAll(settings); + }, [settings, polygonSeries, defaultFill]); return ; } diff --git a/frontend/src/components/Sidebar/MapContainer.tsx b/frontend/src/components/Sidebar/MapContainer.tsx index b4e646ad..d3df9e85 100644 --- a/frontend/src/components/Sidebar/MapContainer.tsx +++ b/frontend/src/components/Sidebar/MapContainer.tsx @@ -97,11 +97,11 @@ export default function MapContainer() { }, [legend, dispatch]); const calculateToolTip = useCallback( - (regionData: FeatureProperties) => { + (regionData: FeatureProperties, value: number) => { const bez = t(`BEZ.${regionData.BEZ}`); const compartmentName = tBackend(`infection-states.${selectedCompartment}`); return selectedScenario !== null && selectedCompartment - ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(Number(regionData.value))}` + ? `${bez} {GEN}\n${compartmentName}: ${formatNumber(value)}` : `${bez} {GEN}`; }, [formatNumber, selectedCompartment, selectedScenario, t, tBackend] diff --git a/frontend/src/components/shared/HeatMap/Polygon.ts b/frontend/src/components/shared/HeatMap/Polygon.ts index ea8a8eed..48e6bf71 100644 --- a/frontend/src/components/shared/HeatMap/Polygon.ts +++ b/frontend/src/components/shared/HeatMap/Polygon.ts @@ -14,7 +14,7 @@ export default function usePolygonSeries( const [polygon, setPolygon] = useState(); useLayoutEffect(() => { - if (!root || !chart || !settings) { + if (!root || !chart || !settings || root.isDisposed() || chart.isDisposed()) { return; } const newPolygon = am5map.MapPolygonSeries.new(root, settings); diff --git a/frontend/src/components/shared/HeatMap/Zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts index 09e1ce8a..a377f490 100644 --- a/frontend/src/components/shared/HeatMap/Zoom.ts +++ b/frontend/src/components/shared/HeatMap/Zoom.ts @@ -24,6 +24,10 @@ export default function useZoomControl( if (initializer) { initializer(newZoom); } + + return () => { + newZoom.dispose(); + }; }, [root, settings, initializer]); return zoom ?? null; diff --git a/frontend/src/types/map.ts b/frontend/src/types/map.ts index d8ca7bf0..3fbeb689 100644 --- a/frontend/src/types/map.ts +++ b/frontend/src/types/map.ts @@ -8,6 +8,7 @@ export interface Feature { coordinates: number[][][]; }; properties: { + id: string | number; [key: string]: string | number; }; id?: string | number; From 46479cbc134d86e4c31dc0f9978a17fdf28686e1 Mon Sep 17 00:00:00 2001 From: Violini Date: Thu, 27 Jun 2024 15:05:23 +0200 Subject: [PATCH 069/119] :sparkles: Lint DataContext --- frontend/src/DataContext.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index adb82c1d..192cfd81 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -307,7 +307,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { }) ); const newMap = geodata.features.map((district) => { - return {...district, id: district.properties?.RS}; + return {...district, id: district.properties?.RS as string}; }); setGeoData({type: 'FeatureCollection', features: newMap as Feature[]}); }, From 611448c413b02da7686e605ec05360a183dea07e Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 27 Jun 2024 16:40:16 +0200 Subject: [PATCH 070/119] :hammer: update the scenario and the other component to be completly compliant with the new api --- frontend/locales/en-backend.json5 | 6 +- frontend/src/DataContext.tsx | 90 ++++------ .../src/components/LineChartContainer.tsx | 2 +- frontend/src/components/MainContent.tsx | 2 +- .../CardsComponents/CardContainer.tsx | 52 +++--- .../CardsComponents/DataCard.tsx | 54 +++--- .../GroupFilter/FilterButton.tsx | 19 ++- .../GroupFilter/FilterCard.tsx | 43 +++-- .../GroupFilter/FilterRows.tsx | 28 ++-- .../GroupFilter/FiltersContainer.tsx | 54 ++++-- .../CardsComponents/MainCard/CardRows.tsx | 35 ++-- .../CardsComponents/MainCard/CardTitle.tsx | 4 +- .../CardsComponents/MainCard/CardTooltip.tsx | 34 ++-- .../CardsComponents/MainCard/MainCard.tsx | 59 ++++--- .../ReferenceDatePicker.tsx | 37 ++--- .../ScenarioComponents/ScenarioContainer.tsx | 154 ++++++++---------- .../components/ScenarioComponents/hooks.ts | 9 +- .../Sidebar/MapComponents/HeatMap.tsx | 2 +- .../src/components/Sidebar/MapContainer.tsx | 2 +- .../src/components/shared/HeatMap/Zoom.ts | 3 - frontend/src/store/services/caseDataApi.ts | 5 +- frontend/src/store/services/groupApi.ts | 86 +++++++++- frontend/src/store/services/scenarioApi.ts | 41 ++++- 23 files changed, 479 insertions(+), 342 deletions(-) diff --git a/frontend/locales/en-backend.json5 b/frontend/locales/en-backend.json5 index 5b0f3bb3..af2d6b24 100644 --- a/frontend/locales/en-backend.json5 +++ b/frontend/locales/en-backend.json5 @@ -275,9 +275,9 @@ }, 'scenario-names': { 'Baseline Scenario': 'Estimated Cases', - baseline: 'Baseline Scenario', - closed_schools: 'Schools Closed', - remote_work: 'Home Office', + 'baseline': 'Baseline Scenario', + 'closed_schools': 'Schools Closed', + 'remote_work': 'Home Office', '10p_reduced_contacts': '10% Reduced Contacts', 'Summer 2021 Simulation 1': 'Scenario without Interventions', 'Summer 2021 Simulation 2': 'Scenario with Interventions', diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 6dc46980..43d8d90e 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -14,9 +14,8 @@ import { useGetMultipleGroupFilterDataQuery, useGetGroupCategoriesQuery, useGetGroupSubcategoriesQuery, - GroupCategories, - GroupSubcategories, PostFilter, + useGetMultipleGroupFilterDataLineChartQuery, } from 'store/services/groupApi'; import { SelectedScenarioPercentileData, @@ -26,11 +25,10 @@ import { useGetSimulationModelQuery, useGetSimulationModelsQuery, useGetSimulationsQuery, - useGetSingleSimulationEntryQuery, + useGetMultipleSimulationEntryQuery, } from 'store/services/scenarioApi'; import {CaseDataByNode} from 'types/caseData'; -import {GroupResponse} from 'types/group'; -import {Simulations, SimulationModel, SimulationDataByNode} from 'types/scenario'; +import {Simulations, SimulationModel, SimulationDataByNode, SimulationMetaData} from 'types/scenario'; import {Dictionary} from 'util/util'; import data from '../assets/lk_germany_reduced.geojson?url'; import {FeatureCollection, FeatureProperties} from 'types/map'; @@ -39,6 +37,7 @@ import {District} from 'types/cologneDistricts'; import searchbarMapData from '../assets/lk_germany_reduced_list.json?url'; import searchbarCologneData from '../assets/stadtteile_cologne_list.json'; import {useTranslation} from 'react-i18next'; +import { GroupCategories, GroupResponse, GroupSubcategories } from 'types/group'; // Create the context export const DataContext = createContext<{ @@ -61,10 +60,12 @@ export const DataContext = createContext<{ caseScenarioSimulationData: CaseDataByNode | undefined; simulationModelData: SimulationModel | undefined; caseScenarioData: SimulationDataByNode | undefined; - scenarioSimulationDataFirstCard: SimulationDataByNode | undefined; - scenarioSimulationDataSecondCard: SimulationDataByNode | undefined; - scenarioSimulationDataFirstCardFiltersValues: Dictionary | undefined; - scenarioSimulationDataSecondCardFiltersValues: Dictionary | undefined; + scenarioSimulationDataForCardFiltersValues: Dictionary[] | undefined + getId: number[] | undefined + // scenarioSimulationDataSecondCard: SimulationDataByNode | undefined; + // scenarioSimulationDataFirstCardFiltersValues: Dictionary | undefined; + // scenarioSimulationDataSecondCardFiltersValues: Dictionary | undefined; + scenarioSimulationDataForCard: (SimulationDataByNode | undefined)[] | undefined; }>({ geoData: undefined, mapData: undefined, @@ -85,10 +86,12 @@ export const DataContext = createContext<{ caseScenarioSimulationData: undefined, simulationModelData: undefined, caseScenarioData: undefined, - scenarioSimulationDataFirstCard: undefined, - scenarioSimulationDataSecondCard: undefined, - scenarioSimulationDataFirstCardFiltersValues: undefined, - scenarioSimulationDataSecondCardFiltersValues: undefined, + scenarioSimulationDataForCardFiltersValues: undefined, + getId: undefined, + // scenarioSimulationDataSecondCard: undefined, + // scenarioSimulationDataFirstCardFiltersValues: undefined, + // scenarioSimulationDataSecondCardFiltersValues: undefined, + scenarioSimulationDataForCard: undefined, }); // Create a provider component @@ -120,43 +123,22 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const scenarioList = useAppSelector((state) => state.scenarioList); const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); - const groupFilterParams1: PostFilter[] = useMemo(() => { - if (selectedDistrict && groupFilterList) { - return Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => ({ - id: 1, - node: selectedDistrict, - groupFilter: groupFilter, - day: selectedDate ?? '', - })); - } - return []; - }, [selectedDate, groupFilterList, selectedDistrict]); - - const groupFilterParams2: PostFilter[] = useMemo(() => { - if (selectedDistrict && groupFilterList) { - return Object.values(groupFilterList) - .filter((groupFilter) => groupFilter.isVisible) - .map((groupFilter) => ({ - id: 2, - node: selectedDistrict, - groupFilter: groupFilter, - day: selectedDate ?? '', - })); - } - return []; - }, [selectedDate, groupFilterList, selectedDistrict]); + const startValues = useGetSimulationStartValues(selectedDistrict, referenceDay); - const startValues = useGetSimulationStartValues(); const caseScenarioSimulationData = useGetCaseDataByDistrictQuery({ node: '00000', groups: null, compartments: null, }); + const {data: groupCategories} = useGetGroupCategoriesQuery(); const {data: groupSubCategories} = useGetGroupSubcategoriesQuery(); const {data: scenarioListData} = useGetSimulationsQuery(); + const getId = useMemo(() => { + return scenarioListData?.results.map((simulation: SimulationMetaData) => { + return simulation.id; + }); + }, [scenarioListData?.results]); const {data: simulationModelsData} = useGetSimulationModelsQuery(); const {data: simulationModelData} = useGetSimulationModelQuery(simulationModelKey, { skip: simulationModelKey === 'unset', @@ -171,19 +153,19 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { {skip: selectedDate === null} ); - const {data: scenarioSimulationDataFirstCard} = useGetSingleSimulationEntryQuery( + const {data: scenarioSimulationDataForCardFiltersValues} = useGetMultipleGroupFilterDataQuery( { - id: 1, + ids: getId ?? [], node: selectedDistrict, day: selectedDate ?? '', - groups: ['total'], + groupFilterList: groupFilterList, }, {skip: !selectedDate} ); - const {data: scenarioSimulationDataSecondCard} = useGetSingleSimulationEntryQuery( + const {data: scenarioSimulationDataForCard} = useGetMultipleSimulationEntryQuery( { - id: 2, + ids: getId ?? [], node: selectedDistrict, day: selectedDate ?? '', groups: ['total'], @@ -191,9 +173,6 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { {skip: !selectedDate} ); - const {data: scenarioSimulationDataFirstCardFiltersValues} = useGetMultipleGroupFilterDataQuery(groupFilterParams1); - const {data: scenarioSimulationDataSecondCardFiltersValues} = useGetMultipleGroupFilterDataQuery(groupFilterParams2); - const {data: mapSimulationData, isFetching: mapIsSimulationDataFetching} = useGetSimulationDataByDateQuery( { id: selectedScenario ?? 0, @@ -260,7 +239,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { } ); - const {data: chartGroupFilterData} = useGetMultipleGroupFilterDataQuery( + const {data: chartGroupFilterData} = useGetMultipleGroupFilterDataLineChartQuery( groupFilterList && selectedScenario && selectedDistrict && selectedCompartment ? Object.values(groupFilterList) .filter((groupFilter) => groupFilter.isVisible) @@ -481,10 +460,13 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { caseScenarioSimulationData: caseScenarioSimulationData.data, simulationModelData: simulationModelData?.results, caseScenarioData, - scenarioSimulationDataFirstCard, - scenarioSimulationDataSecondCard, - scenarioSimulationDataFirstCardFiltersValues: scenarioSimulationDataFirstCardFiltersValues, - scenarioSimulationDataSecondCardFiltersValues: scenarioSimulationDataSecondCardFiltersValues, + scenarioSimulationDataForCardFiltersValues, + getId, + // scenarioSimulationDataFirstCard, + // scenarioSimulationDataSecondCard, + // scenarioSimulationDataFirstCardFiltersValues: scenarioSimulationDataFirstCardFiltersValues, + // scenarioSimulationDataSecondCardFiltersValues: scenarioSimulationDataSecondCardFiltersValues, + scenarioSimulationDataForCard: scenarioSimulationDataForCard, }} > {children} diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index 9919e64b..abde4c20 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -31,7 +31,7 @@ export default function LineChartContainer() { const minDate = useAppSelector((state) => state.dataSelection.minDate); const maxDate = useAppSelector((state) => state.dataSelection.maxDate); - const [selectedDate, setSelectedDate] = useState(selectedDateInStore ? selectedDateInStore : '2021-09-01'); + const [selectedDate, setSelectedDate] = useState(selectedDateInStore ? selectedDateInStore : '2024-08-07'); const [referenceDayb, setReferenceDayb] = useState(0); const localization = useMemo(() => { diff --git a/frontend/src/components/MainContent.tsx b/frontend/src/components/MainContent.tsx index 09e431ff..125bcae4 100644 --- a/frontend/src/components/MainContent.tsx +++ b/frontend/src/components/MainContent.tsx @@ -34,7 +34,7 @@ export default function MainContent(): JSX.Element { - + diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx index 598ec99c..e35c3ce8 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/CardContainer.tsx @@ -3,64 +3,63 @@ import DataCard from './DataCard'; import {useTranslation} from 'react-i18next'; - import {Dispatch, SetStateAction} from 'react'; import React from 'react'; import {useTheme} from '@mui/material/styles'; import Box from '@mui/material/Box/Box'; -import {Dictionary} from 'util/util'; import {Scenario} from 'store/ScenarioSlice'; import {cardValue, filterValue} from 'types/Cardtypes'; +import {GroupFilter} from 'types/group'; import {Localization} from 'types/localization'; import {getScenarioPrimaryColor} from 'util/Theme'; -import {GroupFilter} from 'types/group'; +import {Dictionary} from 'util/util'; interface CardContainerProps { - /* A boolean indicating whether the compartments are expanded. */ + /** A boolean indicating whether the compartments are expanded. */ compartmentsExpanded: boolean; - /* A dictionary of card values. Each value is an object containing 'startValues', a dictionary used for rate calculation, and 'compartmentValues' for each card. + /** A dictionary of card values. Each value is an object containing 'startValues', a dictionary used for rate calculation, and 'compartmentValues' for each card. *'startValues' help determine whether the values have increased, decreased, or remained the same. */ cardValues: Dictionary | undefined; - /* A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing + /** A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing * the filtered information to be displayed, it's used a disctionary because each card has to have the same amount of filter. */ filterValues?: Dictionary | null; - /* The compartment that is currently selected. */ + /** The compartment that is currently selected. */ selectedCompartment: string; - /* An array of scenarios. */ + /** An array of scenarios. */ scenarios: Scenario[]; - /* An array of compartments. */ + /** An array of compartments. */ compartments: string[]; - /* An array of active scenarios. */ + /** An array of active scenarios. */ activeScenarios: number[] | null; - /* A function to set the active scenarios. */ + /** A function to set the active scenarios. */ setActiveScenarios: React.Dispatch>; - /* The selected scenario. */ + /** The selected scenario. */ selectedScenario: number | null; - /* A function to set the selected scenario. */ + /** A function to set the selected scenario. */ setSelectedScenario: Dispatch>; - /* The minimum number of compartment rows. */ + /** The minimum number of compartment rows. */ minCompartmentsRows: number; - /* The maximum number of compartment rows. */ + /** The maximum number of compartment rows. */ maxCompartmentsRows: number; - /* An object containing localization information (translation & number formattation). */ + /** An object containing localization information (translation & number formattation). */ localization?: Localization; - /* A dictionary of group filters. */ + /** A dictionary of group filters. */ groupFilters: Dictionary | undefined; - /* Boolean to determine if the arrow is displayed */ + /** Boolean to determine if the arrow is displayed */ arrow?: boolean; } @@ -79,7 +78,11 @@ export default function CardContainer({ minCompartmentsRows, maxCompartmentsRows, setActiveScenarios, - localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, selectedScenario, setSelectedScenario, groupFilters, @@ -88,7 +91,6 @@ export default function CardContainer({ const theme = useTheme(); const {t: defaultT} = useTranslation(); const {t: customT} = useTranslation(localization.customLang); - const dataCards = scenarios.map((scenario) => { const cardValue = cardValues ? cardValues[scenario.id.toString()] : null; if (!cardValue) { @@ -98,7 +100,7 @@ export default function CardContainer({ 5 + ? `${(390 / 6) * maxCompartmentsRows}px` + : `${(660 / 6) * maxCompartmentsRows}px` + : minCompartmentsRows < 4 + ? `${(480 / 4) * minCompartmentsRows}px` + : `${(325 / 4) * minCompartmentsRows}px`, overflowX: 'auto', minWidth: 400, paddingLeft: 4, diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx index 8bb3e872..6a0133f8 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/DataCard.tsx @@ -2,72 +2,72 @@ // SPDX-License-Identifier: Apache-2.0 import Box from '@mui/material/Box'; -import {useEffect, useMemo, useState} from 'react'; +import React, {useEffect, useMemo, useState} from 'react'; import MainCard from './MainCard/MainCard'; import FiltersContainer from './GroupFilter/FiltersContainer'; -import React from 'react'; -import {GroupFilter} from 'types/group'; -import {filterValue} from 'types/Cardtypes'; -import {Dictionary} from 'util/util'; -import {Localization} from 'types/localization'; +import { filterValue } from 'types/Cardtypes'; +import { GroupFilter } from 'types/group'; +import { Localization } from 'types/localization'; +import { Dictionary } from 'util/util'; + interface DataCardProps { - /*A unique identifier for the card.*/ + /** A unique identifier for the card.*/ index: number; - /*A dictionary of compartment values associated with the card.*/ + /** A dictionary of compartment values associated with the card.*/ compartmentValues: Dictionary | null; - /* A dictionary of start values used for calculating the rate. This determines whether the values have increased, decreased, or remained the same. */ + /** A dictionary of start values used for calculating the rate. This determines whether the values have increased, decreased, or remained the same. */ startValues: Dictionary | null; - /*The title of the card.*/ + /** The title of the card.*/ label: string; - /*A boolean indicating whether the compartments are expanded.*/ + /** A boolean indicating whether the compartments are expanded.*/ compartmentsExpanded: boolean; - /*An array of compartments.*/ + /** An array of compartments.*/ compartments: string[]; - /*The compartment that is currently selected.*/ + /** The compartment that is currently selected.*/ selectedCompartment: string; - /*A boolean indicating whether the scenario is selected.*/ + /** A boolean indicating whether the scenario is selected.*/ selectedScenario: boolean; - /*The color of the card.*/ + /** The color of the card.*/ color: string; - /*An array of active scenarios.*/ + /** An array of active scenarios.*/ activeScenarios: number[] | null; - /* A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing + /** A dictionary of filter values. This is an array of objects, each containing a title and a dictionary of numbers representing * the filtered information to be displayed, it's used a disctionary because each card has to have the same amount of filter. */ filterValues?: Dictionary | null; - /*A function to set the selected scenario.*/ + /** A function to set the selected scenario.*/ setSelectedScenario: React.Dispatch>; - /*A function to set the active scenarios.*/ + /** A function to set the active scenarios.*/ setActiveScenarios: React.Dispatch>; - /*The number of the selected scenario.*/ + /** The number of the selected scenario.*/ numberSelectedScenario: number | null; /*The minimum number of compartment rows.*/ minCompartmentsRows: number; - /*The maximum number of compartment rows.*/ + /** The maximum number of compartment rows.*/ maxCompartmentsRows: number; - /*An object containing localization information (translation & number formattation).*/ + /** An object containing localization information (translation & number formattation).*/ localization?: Localization; - /*A dictionary of group filters.*/ + /** A dictionary of group filters.*/ groupFilters: Dictionary | undefined; - /* Boolean to determine if the arrow is displayed */ + /** Boolean to determine if the arrow is displayed */ arrow?: boolean; } @@ -93,7 +93,11 @@ export default function DataCard({ maxCompartmentsRows, setSelectedScenario, setActiveScenarios, - localization = {formatNumber: (value: number) => value.toString(), customLang: 'global', overrides: {}}, + localization = { + formatNumber: (value: number) => value.toString(), + customLang: 'global', + overrides: {}, + }, groupFilters, arrow = true, }: DataCardProps) { diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx index dd312763..c20e162c 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/GroupFilter/FilterButton.tsx @@ -1,10 +1,9 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 - +import React from 'react'; import ChevronLeft from '@mui/icons-material/ChevronLeft'; import ChevronRight from '@mui/icons-material/ChevronRight'; import Button from '@mui/material/Button/Button'; -import React from 'react'; interface FilterButtonProps { /* Boolean to determine if the filter button is folded */ @@ -24,6 +23,12 @@ interface FilterButtonProps { /* Maximum number of compartment rows */ maxCompartmentsRows: number; + + /* Minimum number of compartment rows */ + minCompartmentsRows: number; + + /* Boolean to determine if the compartments are expanded */ + compartmentsExpanded: boolean; } /** @@ -37,6 +42,8 @@ export default function FilterButton({ idNumber, backgroundColor, maxCompartmentsRows, + compartmentsExpanded, + minCompartmentsRows, }: FilterButtonProps) { return (
${ @@ -734,9 +722,7 @@ export default function LineChart({ activeScenarios, selectedScenario, scenarioList, - selectedCompartment, theme, - groupFilterList, defaultT, customT, setReferenceDayX, @@ -746,6 +732,7 @@ export default function LineChart({ chart, root, lineChartData, + yAxisLabel, ]); return ( diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index 7dd25306..d963fb08 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -10,8 +10,10 @@ import React from 'react'; import {useAppDispatch, useAppSelector} from 'store/hooks'; import {selectDate} from 'store/DataSelectionSlice'; import {setReferenceDayBottom} from 'store/LayoutSlice'; +import {useTranslation} from 'react-i18next'; export default function LineChartContainer() { + const {t} = useTranslation('backend'); const theme = useTheme(); const dispatch = useAppDispatch(); @@ -19,7 +21,6 @@ export default function LineChartContainer() { const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const groupFilterList = useAppSelector((state) => state.dataSelection.groupFilters); const scenarioList = useAppSelector((state) => state.scenarioList); const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); const selectedDateInStore = useAppSelector((state) => state.dataSelection.date); @@ -34,14 +35,17 @@ export default function LineChartContainer() { return { customLang: 'backend', overrides: { - [`compartment.${selectedCompartment}`]: `infection-states.${selectedCompartment}`, 'scenario-names.baseline': 'scenario-names.baseline', 'scenario-names.closed_schools': 'scenario-names.closed_schools', 'scenario-names.remote_work': 'scenario-names.remote_work', 'scenario-names.10p_reduced_contacts': 'scenario-names.10p_reduced_contacts', }, }; - }, [selectedCompartment]); + }, []); + + const yAxisLabel = useMemo(() => { + return t(`infection-states.${selectedCompartment}`); + }, [selectedCompartment, t]); // Set selected date in store useEffect(() => { @@ -79,8 +83,7 @@ export default function LineChartContainer() { selectedScenario={selectedScenario} activeScenarios={activeScenarios} referenceDay={referenceDay} - selectedCompartment={selectedCompartment ?? ''} - groupFilterList={groupFilterList} + yAxisLabel={yAxisLabel} scenarioList={scenarioList} localization={localization} /> From 41d85a9f8d1240d8e4345493530c538701e294e4 Mon Sep 17 00:00:00 2001 From: Violini Date: Fri, 5 Jul 2024 17:23:26 +0200 Subject: [PATCH 099/119] :wrench: Remove scenarioList in LineChart component --- .../LineChartComponents/LineChart.tsx | 56 +++++++++++++------ .../src/components/LineChartContainer.tsx | 2 - 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 9e3ad742..53f6d888 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -26,7 +26,6 @@ import useValueAxis from 'components/shared/LineChart/ValueAxis'; import {useDateSelectorFilter} from 'components/shared/LineChart/Filter'; import useDateAxisRange from 'components/shared/LineChart/AxisRange'; import {useLineSeriesList} from 'components/shared/LineChart/LineSeries'; -import {ScenarioList} from 'types/scenario'; import {LineSeries} from '@amcharts/amcharts5/.internal/charts/xy/series/LineSeries'; import {LineChartData} from 'types/lineChart'; @@ -67,12 +66,6 @@ interface LineChartProps { /** Optional label for the LineChart. Used when label needs to be changed. To use a static label overrides yAxisLabel */ yAxisLabel?: string; - /** - * Optional list of scenarios available for selection. - * This list includes the details of all possible scenarios that can be plotted on the chart. - */ - scenarioList?: ScenarioList | null; - /** Optional name for the exported file when the chart data is downloaded. Defaults to 'Data'. */ exportedFileName?: string; @@ -94,7 +87,6 @@ export default function LineChart({ selectedScenario = null, activeScenarios = null, referenceDay = null, - scenarioList = null, exportedFileName = 'Data', yAxisLabel, localization = { @@ -675,22 +667,53 @@ export default function LineChart({ // Always put date first, case data second const dataFieldsOrder = ['date', 'caseData']; // Loop through active scenarios (if there are any) - if (activeScenarios) { - activeScenarios.forEach((scenarioId) => { - // Skip case data (already added) - if (scenarioId === 0 || !scenarioId || !scenarioList?.scenarios[scenarioId]) { + // if (activeScenarios) { + // activeScenarios.forEach((scenarioId) => { + // // Skip case data (already added) + // if (scenarioId === 0 || !scenarioList?.scenarios[scenarioId]) { + // return; + // } + // console.log(scenarioId, scenarioList, scenarioList.scenarios[scenarioId]) + + // // Add scenario label to export data field names + // dataFields = { + // ...dataFields, + // [scenarioId]: scenarioList.scenarios[scenarioId].label, + // }; + // // Add scenario id to export data field order (for sorted export like csv) + // dataFieldsOrder.push(`${scenarioId}`); + // // If this is the selected scenario also add percentiles after it + // if (scenarioId == selectedScenario) { + // dataFieldsOrder.push('percentileDown', 'percentileUp'); + // } + // }); + // } + if (lineChartData) { + lineChartData.forEach((serie) => { + if ( + serie.serieId === 0 || + serie.serieId === 'percentiles' || + serie.serieId.toString().startsWith('group-filter-') + ) return; - } + let lineName = serie.name; + if (lineName) { + if (localization.overrides && localization.overrides[lineName]) { + lineName = customT(localization.overrides[lineName]); + } else { + lineName = defaultT(lineName); + } + } // Add scenario label to export data field names dataFields = { ...dataFields, - [scenarioId]: scenarioList.scenarios[scenarioId].label, + [serie.serieId]: lineName, }; // Add scenario id to export data field order (for sorted export like csv) - dataFieldsOrder.push(`${scenarioId}`); + dataFieldsOrder.push(`${serie.serieId}`); // If this is the selected scenario also add percentiles after it - if (scenarioId == selectedScenario) { + if (serie.serieId == selectedScenario) { dataFieldsOrder.push('percentileDown', 'percentileUp'); } }); @@ -721,7 +744,6 @@ export default function LineChart({ }, [ activeScenarios, selectedScenario, - scenarioList, theme, defaultT, customT, diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index d963fb08..bfb6c8ee 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -21,7 +21,6 @@ export default function LineChartContainer() { const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const scenarioList = useAppSelector((state) => state.scenarioList); const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); const selectedDateInStore = useAppSelector((state) => state.dataSelection.date); const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); @@ -84,7 +83,6 @@ export default function LineChartContainer() { activeScenarios={activeScenarios} referenceDay={referenceDay} yAxisLabel={yAxisLabel} - scenarioList={scenarioList} localization={localization} /> From d75b1689b490e3d838c5a6ee32e52266c88bd6f1 Mon Sep 17 00:00:00 2001 From: Serloni Date: Fri, 5 Jul 2024 18:19:56 +0200 Subject: [PATCH 100/119] :sparkle: Fix also the last problem with the heatmap with the zoom now the amchart component should be bugless :) --- frontend/src/components/MainContent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/MainContent.tsx b/frontend/src/components/MainContent.tsx index e1a2bc8f..125bcae4 100644 --- a/frontend/src/components/MainContent.tsx +++ b/frontend/src/components/MainContent.tsx @@ -34,7 +34,7 @@ export default function MainContent(): JSX.Element { - + From da70a6c4ac9b9a9e3a1ceff1e408a0bd6ef3c6c7 Mon Sep 17 00:00:00 2001 From: Serloni Date: Fri, 5 Jul 2024 18:21:55 +0200 Subject: [PATCH 101/119] :sparkles: Fix also the last problem with the heatmap with the zoom now the amchart component should be bugless :) --- frontend/src/components/MainContent.tsx | 2 +- frontend/src/components/shared/HeatMap/Zoom.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/MainContent.tsx b/frontend/src/components/MainContent.tsx index 125bcae4..09e431ff 100644 --- a/frontend/src/components/MainContent.tsx +++ b/frontend/src/components/MainContent.tsx @@ -34,7 +34,7 @@ export default function MainContent(): JSX.Element { - + diff --git a/frontend/src/components/shared/HeatMap/Zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts index 90195811..2c114064 100644 --- a/frontend/src/components/shared/HeatMap/Zoom.ts +++ b/frontend/src/components/shared/HeatMap/Zoom.ts @@ -22,13 +22,13 @@ export default function useZoomControl( if (initializer) { initializer(newZoom); } - + setZoom(newZoom); - return () =>{ - newZoom.removeAll() - newZoom.dispose() - } + return () => { + newZoom.removeAll(); + newZoom.dispose(); + }; }, [root, settings, initializer]); return zoom ?? null; From 20868e808b25dff6380a516d73d385e9ed197532 Mon Sep 17 00:00:00 2001 From: Serloni Date: Mon, 8 Jul 2024 09:32:58 +0200 Subject: [PATCH 102/119] :wrench: Map component final version bugless --- frontend/src/DataContext.tsx | 1 - .../Sidebar/MapComponents/HeatMap.tsx | 78 ++++++++++++------- frontend/src/components/shared/HeatMap/Map.ts | 1 - 3 files changed, 48 insertions(+), 32 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index d2cbdd87..a0324c6a 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -497,7 +497,6 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const seriesWithoutGroup = prevData.filter( (serie) => typeof serie.serieId === 'number' || !serie.serieId.startsWith('group-filter') ); - console.log(seriesWithoutGroup, lineChartData); if (seriesWithoutGroup.length > 0) return [...seriesWithoutGroup, ...lineChartData]; } return lineChartData; diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index a0f7a3e3..985bd1cf 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -144,7 +144,7 @@ export default function HeatMap({ zoomSettings, useCallback( (zoom: am5map.ZoomControl) => { - if (!root || root.isDisposed()) return; + if (!root) return; const fixSVGPosition = { width: 25, height: 25, @@ -179,7 +179,7 @@ export default function HeatMap({ ); // This effect is responsible for setting the selected area when the home button is clicked. - useLayoutEffect(() => { + useEffect(() => { if (!zoom || !root || root.isDisposed() || zoom.isDisposed()) return; zoom.homeButton.events.on('click', () => { setSelectedArea(defaultSelectedValue); @@ -290,34 +290,52 @@ export default function HeatMap({ // Highlight selected polygon and reset last selected polygon useEffect(() => { - if (!polygonSeries) return; + if (!polygonSeries || polygonSeries.isDisposed()) return; // Reset last selected polygon - if (lastSelectedPolygon.current) { - lastSelectedPolygon.current.states.create('default', { - stroke: am5.color(theme.palette.background.default), - strokeWidth: 1, - layer: 0, - }); - lastSelectedPolygon.current.states.apply('default'); - } - // Highlight selected polygon - polygonSeries.mapPolygons.each((mapPolygon) => { - if (mapPolygon.dataItem && mapPolygon.dataItem.dataContext) { - const areaData = mapPolygon.dataItem.dataContext as Feature; - const id: string | number = areaData[areaId as keyof Feature] as string | number; - if (id == selectedArea![areaId as keyof GeoJsonProperties]) { - mapPolygon.states.create('default', { - stroke: am5.color(theme.palette.primary.main), - strokeWidth: 2, - layer: 1, - }); - if (!mapPolygon.isHover()) { - mapPolygon.states.apply('default'); + const updatePolygons = () => { + if (lastSelectedPolygon.current) { + lastSelectedPolygon.current.states.create('default', { + stroke: am5.color(theme.palette.background.default), + strokeWidth: 1, + layer: 0, + }); + lastSelectedPolygon.current.states.apply('default'); + } + // Highlight selected polygon + polygonSeries.mapPolygons.each((mapPolygon) => { + if (mapPolygon.dataItem && mapPolygon.dataItem.dataContext) { + const areaData = mapPolygon.dataItem.dataContext as Feature; + const id: string | number = areaData[areaId as keyof Feature] as string | number; + if (id == selectedArea![areaId as keyof GeoJsonProperties]) { + mapPolygon.states.create('default', { + stroke: am5.color(theme.palette.primary.main), + strokeWidth: 2, + layer: 1, + }); + if (!mapPolygon.isHover()) { + mapPolygon.states.apply('default'); + } + lastSelectedPolygon.current = mapPolygon; } - lastSelectedPolygon.current = mapPolygon; } + }); + }; + + const handleDataValidated = () => { + if (!polygonSeries.isDisposed()) { + updatePolygons(); } - }); + }; + + polygonSeries.events.on('datavalidated', handleDataValidated); + handleDataValidated(); + + // Cleanup event listeners on component unmount or when dependencies change + return () => { + if (!polygonSeries.isDisposed()) { + polygonSeries.events.off('datavalidated', handleDataValidated); + } + }; // This effect should only re-run when the selectedArea or polygonSeries change }, [areaId, polygonSeries, selectedArea, theme.palette.background.default, theme.palette.primary.main]); @@ -364,12 +382,12 @@ export default function HeatMap({ }; const handleDataValidated = () => { - updatePolygons(); + if (!polygonSeries.isDisposed()) { + updatePolygons(); + } }; - polygonSeries.events.on('datavalidated', () => { - handleDataValidated; - }); + polygonSeries.events.on('datavalidated', handleDataValidated); handleDataValidated(); // Cleanup event listeners on component unmount or when dependencies change diff --git a/frontend/src/components/shared/HeatMap/Map.ts b/frontend/src/components/shared/HeatMap/Map.ts index 0b6f0336..be7ced78 100644 --- a/frontend/src/components/shared/HeatMap/Map.ts +++ b/frontend/src/components/shared/HeatMap/Map.ts @@ -28,7 +28,6 @@ export default function useMapChart( } return () => { - root.container.children.removeValue(newChart); newChart.dispose(); }; }, [root, settings, initializer]); From b1f682a2cf544cd4ce6cdf93808d13fdaf5222a9 Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 8 Jul 2024 10:43:23 +0200 Subject: [PATCH 103/119] :wrench: Refactor Linechart component. --- frontend/src/DataContext.tsx | 212 +++++++++--------- .../__tests__/components/LineChart.test.tsx | 36 +-- .../LineChartComponents/LineChart.tsx | 159 +++---------- .../src/components/LineChartContainer.tsx | 4 - .../Sidebar/MapComponents/HeatMap.tsx | 2 +- .../src/components/shared/HeatMap/Zoom.ts | 4 + frontend/src/types/lineChart.ts | 1 + 7 files changed, 169 insertions(+), 249 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index d2cbdd87..9cd3a825 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -376,74 +376,78 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { // This effect sets the chart case data based on the selection. useEffect(() => { + let lineChartData: LineChartData | null = null; if ( - !chartCaseData || - !chartCaseData.results || - chartCaseData.results.length == 0 || - !selectedCompartment || - !activeScenarios || - !activeScenarios.includes(0) - ) - return; - // Process the case data for the selected compartment - const processedChartCaseData = chartCaseData.results.map( - (element: {day: string; compartments: {[key: string]: number}}) => { - return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; - } - ); - // Push the processed case data into the line chart data - const lineChartData: LineChartData = { - values: processedChartCaseData, - name: 'chart.caseData', - valueYField: 0, - stroke: {color: color('#000')}, - serieId: 0, - }; + chartCaseData && + chartCaseData.results && + chartCaseData.results.length > 0 && + selectedCompartment && + activeScenarios && + activeScenarios.includes(0) + ) { + // Process the case data for the selected compartment + const processedChartCaseData = chartCaseData.results.map( + (element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + } + ); + // Push the processed case data into the line chart data + lineChartData = { + values: processedChartCaseData, + name: 'chart.caseData', + valueYField: 0, + stroke: {color: color('#000')}, + serieId: 0, + }; + } // Update the chart data state with the new line chart data setChartData((prevData) => { - if (prevData) { + if (prevData && prevData.length > 0) { const seriesWithoutCase = prevData.filter((serie) => serie.serieId !== 0); - if (seriesWithoutCase.length > 0) return [...seriesWithoutCase, lineChartData]; + if (seriesWithoutCase.length > 0 && lineChartData) return [lineChartData, ...seriesWithoutCase]; + else if (seriesWithoutCase.length) return [...seriesWithoutCase]; } - return [lineChartData]; + if (lineChartData) return [lineChartData]; + return []; }); // This should re-run whenever the case data changes, or a different compartment is selected. }, [chartCaseData, selectedCompartment, activeScenarios]); // This effect sets the chart simulation data based on the selection. useEffect(() => { - if (!chartSimulationData || chartSimulationData.length == 0 || !selectedCompartment || !activeScenarios) return; - // Process the simulation data for the selected compartment - const processedChartSimulationData = chartSimulationData.map((element: SimulationDataByNode | null) => { - if (element && element.results && element.results.length > 0) { - return element.results.map((element: {day: string; compartments: {[key: string]: number}}) => { - return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; - }); - } - return []; - }); - // Define the scenario names for the simulation data - const scenarioNames = Object.values(scenarioList.scenarios) - .filter((scenario) => activeScenarios.includes(scenario.id)) - .map((scenario) => `scenario-names.${scenario.label}`); - let scenarioNamesIndex = 0; const lineChartData: LineChartData[] = []; - // Push the processed simulation data into the line chart data - for (let i = 0; i < processedChartSimulationData.length; i++) { - if (processedChartSimulationData[i]) { - lineChartData.push({ - values: processedChartSimulationData[i], - name: scenarioNames[scenarioNamesIndex], - stroke: {color: color(getScenarioPrimaryColor(i, theme))}, - serieId: i, - valueYField: i, - tooltipText: `[bold ${getScenarioPrimaryColor(i, theme)}]${scenarioNames[scenarioNamesIndex++]}:[/] {${i}}`, - }); + if (chartSimulationData && chartSimulationData.length > 0 && selectedCompartment && activeScenarios) { + // Process the simulation data for the selected compartment + const processedChartSimulationData = chartSimulationData.map((element: SimulationDataByNode | null) => { + if (element && element.results && element.results.length > 0) { + return element.results.map((element: {day: string; compartments: {[key: string]: number}}) => { + return {day: element.day, value: element.compartments[selectedCompartment]} as {day: string; value: number}; + }); + } + return []; + }); + // Define the scenario names for the simulation data + const scenarioNames = Object.values(scenarioList.scenarios) + .filter((scenario) => activeScenarios.includes(scenario.id)) + .map((scenario) => `scenario-names.${scenario.label}`); + let scenarioNamesIndex = 0; + // Push the processed simulation data into the line chart data + for (let i = 0; i < processedChartSimulationData.length; i++) { + if (processedChartSimulationData[i]) { + lineChartData.push({ + values: processedChartSimulationData[i], + name: scenarioNames[scenarioNamesIndex], + stroke: {color: color(getScenarioPrimaryColor(i, theme))}, + serieId: i, + valueYField: i, + tooltipText: `[bold ${getScenarioPrimaryColor(i, theme)}]${scenarioNames[scenarioNamesIndex++]}:[/] {${i}}`, + }); + } } } // Update the chart data state with the new line chart data setChartData((prevData) => { - if (prevData) { + if (prevData && prevData.length > 0) { const seriesWithoutScenarios = prevData.filter( (serie) => typeof serie.serieId === 'string' || serie.serieId === 0 ); @@ -457,7 +461,12 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { // This effect sets the chart group filter data based on the selection. useEffect(() => { const lineChartData: LineChartData[] = []; - if (chartGroupFilterData && Object.keys(chartGroupFilterData).length > 0 && selectedCompartment) { + if ( + chartGroupFilterData && + Object.keys(chartGroupFilterData).length > 0 && + selectedCompartment && + selectedScenario + ) { const processedData: Dictionary<{day: string; value: number}[]> = {}; // Process the group filter data for the selected compartment Object.keys(chartGroupFilterData).forEach((key) => { @@ -474,21 +483,20 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { [8, 4, 2, 4], // dash-dotted [8, 4, 2, 4, 2, 4], // dash-dot-dotted ]; - if (selectedScenario) { - // Push the processed group filter data into the line chart data - for (let i = 0; i < Object.keys(processedData).length; i++) { - lineChartData.push({ - values: processedData[Object.keys(processedData)[i]], - name: Object.keys(processedData)[i], - stroke: { - color: color(getScenarioPrimaryColor(selectedScenario, theme)), - strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], - }, - serieId: `group-filter-${Object.keys(processedData)[i]}`, - valueYField: Object.keys(processedData)[i], - tooltipText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${Object.keys(processedData)[i]}:[/] {${Object.keys(processedData)[i]}}`, - }); - } + // Push the processed group filter data into the line chart data + for (let i = 0; i < Object.keys(processedData).length; i++) { + lineChartData.push({ + values: processedData[Object.keys(processedData)[i]], + name: Object.keys(processedData)[i], + stroke: { + color: color(getScenarioPrimaryColor(selectedScenario, theme)), + strokeDasharray: groupFilterStrokes[i % groupFilterStrokes.length], + }, + serieId: `group-filter-${Object.keys(processedData)[i]}`, + valueYField: Object.keys(processedData)[i], + tooltipText: `[bold ${getScenarioPrimaryColor(selectedScenario, theme)}]${Object.keys(processedData)[i]}:[/] {${Object.keys(processedData)[i]}}`, + parentId: selectedScenario, + }); } } // Update the chart data state with the new line chart data @@ -497,7 +505,6 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { const seriesWithoutGroup = prevData.filter( (serie) => typeof serie.serieId === 'number' || !serie.serieId.startsWith('group-filter') ); - console.log(seriesWithoutGroup, lineChartData); if (seriesWithoutGroup.length > 0) return [...seriesWithoutGroup, ...lineChartData]; } return lineChartData; @@ -507,41 +514,46 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { // This effect sets the chart percentile data based on the selection. useEffect(() => { - if (!chartPercentileData || chartPercentileData.length == 0 || !selectedCompartment) return; - const processedPercentileData: Array<{day: string; value: number[]}> = []; - for (let i = 0; chartPercentileData[0]?.results && i < Object.keys(chartPercentileData[0].results).length; i++) { - if ( - chartPercentileData[0].results && - chartPercentileData[1].results && - Object.values(chartPercentileData[0].results)[i].day === Object.values(chartPercentileData[1].results)[i].day - ) - processedPercentileData.push({ - day: Object.values(chartPercentileData[0].results)[i].day, - value: [ - Object.values(chartPercentileData[0].results)[i].compartments[selectedCompartment], - Object.values(chartPercentileData[1].results)[i].compartments[selectedCompartment], - ], - }); + let lineChartData: LineChartData | null = null; + if (chartPercentileData && chartPercentileData.length > 0 && selectedCompartment) { + const processedPercentileData: Array<{day: string; value: number[]}> = []; + for (let i = 0; chartPercentileData[0]?.results && i < Object.keys(chartPercentileData[0].results).length; i++) { + if ( + chartPercentileData[0].results && + chartPercentileData[1].results && + Object.values(chartPercentileData[0].results)[i].day === Object.values(chartPercentileData[1].results)[i].day + ) + processedPercentileData.push({ + day: Object.values(chartPercentileData[0].results)[i].day, + value: [ + Object.values(chartPercentileData[0].results)[i].compartments[selectedCompartment], + Object.values(chartPercentileData[1].results)[i].compartments[selectedCompartment], + ], + }); + } + lineChartData = { + values: processedPercentileData, + serieId: 'percentiles', + valueYField: 'percentileUp', + openValueYField: 'percentileDown', + visible: selectedScenario !== null && selectedScenario > 0, + fill: + selectedScenario !== null && selectedScenario > 0 + ? color(getScenarioPrimaryColor(selectedScenario, theme)) + : undefined, + fillOpacity: 0.3, + stroke: {strokeWidth: 0}, + parentId: selectedScenario !== null && selectedScenario > 0 ? selectedScenario : undefined, + }; } - const lineChartData: LineChartData = { - values: processedPercentileData, - serieId: 'percentiles', - valueYField: 'percentileUp', - openValueYField: 'percentileDown', - visible: selectedScenario !== null && selectedScenario > 0, - fill: - selectedScenario !== null && selectedScenario > 0 - ? color(getScenarioPrimaryColor(selectedScenario, theme)) - : undefined, - fillOpacity: 0.3, - stroke: {strokeWidth: 0}, - }; setChartData((prevData) => { - if (prevData) { + if (prevData && prevData.length > 0) { const seriesWithoutPercentiles = prevData.filter((serie) => serie.serieId !== 'percentiles'); - if (seriesWithoutPercentiles.length > 0) return [...seriesWithoutPercentiles, lineChartData]; + if (seriesWithoutPercentiles.length > 0 && lineChartData) return [...seriesWithoutPercentiles, lineChartData]; + else if (seriesWithoutPercentiles.length > 0) return [...seriesWithoutPercentiles]; } - return [lineChartData]; + if (lineChartData) return [lineChartData]; + return []; }); // This should re-run whenever the data changes, or whenever a different scenario or a different compartment is selected. }, [chartPercentileData, selectedCompartment, selectedScenario, theme]); diff --git a/frontend/src/__tests__/components/LineChart.test.tsx b/frontend/src/__tests__/components/LineChart.test.tsx index 74a1a688..04498700 100644 --- a/frontend/src/__tests__/components/LineChart.test.tsx +++ b/frontend/src/__tests__/components/LineChart.test.tsx @@ -2,12 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 import LineChart from 'components/LineChartComponents/LineChart'; -import React, {useCallback, useMemo} from 'react'; +import React, {useMemo} from 'react'; import {render, screen} from '@testing-library/react'; import {describe, test, expect, vi} from 'vitest'; import {ResizeObserverMock} from '__tests__/mocks/resize'; import {I18nextProvider} from 'react-i18next'; import i18n from '../../util/i18nForTests'; +import {color} from '@amcharts/amcharts5/.internal/core/util/Color'; const LineChartTest = () => { const localization = useMemo(() => { @@ -18,33 +19,36 @@ const LineChartTest = () => { }, }; }, []); - const simulationDataChartName = useCallback(() => 'scenario-names', []); const caseData = useMemo(() => { - return [ - { - day: '2021-04-01', - value: 3723.5826785713944, - }, - { - day: '2021-04-02', - value: 3688.2426285714214, + return { + values: [ + { + day: '2021-04-01', + value: 3723.5826785713944, + }, + { + day: '2021-04-02', + value: 3688.2426285714214, + }, + ], + serieId: 0, + valueYField: 0, + stroke: { + color: color('#000'), + strokeWidth: 2, }, - ]; + }; }, []); return (
{}} - setReferenceDayBottom={() => {}} - simulationDataChartName={simulationDataChartName} minDate={'2020-02-20'} maxDate={'2020-02-20'} - selectedScenario={0} referenceDay={'2020-02-20'} - selectedCompartment={'Infected'} localization={localization} - caseData={caseData} + lineChartData={[caseData]} />
); diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 53f6d888..d0022e8c 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -54,12 +54,6 @@ interface LineChartProps { /** Optional maximum date for the chart in ISO format (YYYY-MM-DD). */ maxDate?: string | null; - /** Optional currently selected scenario identifier. */ - selectedScenario?: number | null; - - /** Optional array of active scenario identifiers. These scenarios will be displayed on the chart. */ - activeScenarios?: number[] | null; - /** Optional reference day for the chart in ISO format (YYYY-MM-DD). */ referenceDay?: string | null; @@ -84,8 +78,6 @@ export default function LineChart({ setReferenceDayBottom = () => {}, minDate = null, maxDate = null, - selectedScenario = null, - activeScenarios = null, referenceDay = null, exportedFileName = 'Data', yAxisLabel, @@ -395,96 +387,36 @@ export default function LineChart({ ) ); - // Effect to hide disabled scenarios (and show them again if not hidden anymore) - useLayoutEffect( - () => { - if (!chart || chart.isDisposed()) return; - const allSeries = chart.series; - // Skip effect if chart is not initialized (contains no series yet) - if (!allSeries) return; - - // Set visibility of each series - allSeries.each((series) => { - if (!(series instanceof LineSeries)) { - return; - } - - // Everything but scenario series evaluate to NaN (because scenario series have their scenario id as series id while others have names) - let seriesID = series.get('id'); - if (seriesID) seriesID = seriesID.split('_')[1]; - // Hide series if it is a scenario series (and in the scenario list) but not in the active scenarios list - if (seriesID === `percentiles`) { - return; - } - - if (!activeScenarios?.includes(Number(seriesID))) { - void series.hide(); - } else { - void series.show(); - } - }); - }, - // Re-run effect when the active scenario list changes - [activeScenarios, chart] - ); - - // Effect to hide deviations if no scenario is selected - useEffect( - () => { - // Skip effect if chart is not initialized (contains no series yet) - if (!chart || chart.isDisposed()) return; - - // Find percentile series and only show it if there is a selected scenario - chart.series.values - .filter((series) => { - let seriesID = series.get('id'); - if (seriesID) seriesID = seriesID.split('_')[1]; - return seriesID == 'percentiles'; - }) - .map((percentileSeries) => { - if (selectedScenario === null || selectedScenario === 0) { - void percentileSeries.hide(); - } else { - void percentileSeries.show(); - } - }); - }, - // Re-run effect when the selected scenario changes - [selectedScenario, chart] - ); - // Effect to update data in series useEffect(() => { // Skip effect if chart is not initialized yet if (!chart || chart.isDisposed()) return; - // Also skip if there is no scenario or compartment selected - if (selectedScenario === null) return; + // Also skip if there is no data + if (!lineChartData || lineChartData.length == 0) return; // Create empty map to match dates const dataMap = new Map(); - if (lineChartData) { - lineChartData.forEach((serie) => { - const id = serie.serieId; - if (activeScenarios?.includes(Number(id))) { - serie.values.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [id]: entry.value as number}); - }); - } else if (typeof id === 'string' && id.startsWith('group-filter-')) { - serie.values.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.name!]: entry.value as number}); - }); - } else if (serie.openValueYField) { - serie.values.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.valueYField]: (entry.value as number[])[1]}); - dataMap.set(entry.day, { - ...dataMap.get(entry.day), - [String(serie.openValueYField)]: (entry.value as number[])[0], - }); + lineChartData.forEach((serie) => { + const id = serie.serieId; + if (typeof id === 'string' && id.startsWith('group-filter-')) { + serie.values.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.name!]: entry.value as number}); + }); + } else if (serie.openValueYField) { + serie.values.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.valueYField]: (entry.value as number[])[1]}); + dataMap.set(entry.day, { + ...dataMap.get(entry.day), + [String(serie.openValueYField)]: (entry.value as number[])[0], }); - } - }); - } + }); + } else { + serie.values.forEach((entry) => { + dataMap.set(entry.day, {...dataMap.get(entry.day), [id]: entry.value as number}); + }); + } + }); // Sort map by date const dataMapSorted = new Map(Array.from(dataMap).sort(([a], [b]) => String(a).localeCompare(b))); @@ -523,12 +455,6 @@ export default function LineChart({ ${ // Table row for each series of an active scenario chart.series.values - .filter((series) => { - if (!series.get('id')) return false; - let s = series.get('id'); - if (s) s = s?.split('_')[1]; - return activeScenarios?.includes(Number(s)); - }) .map((series): string => { /* Skip if series: * - is hidden @@ -537,7 +463,7 @@ export default function LineChart({ */ let seriesID = series.get('id'); if (seriesID) seriesID = seriesID?.split('_')[1]; - if (series.isHidden() || seriesID === 'percentiles' || seriesID?.startsWith('group-filter-')) { + if (seriesID === 'percentiles' || seriesID?.startsWith('group-filter-')) { return ''; } /* Skip with error if series does not have property: @@ -574,25 +500,24 @@ export default function LineChart({ ${ // Skip percentiles if this series is not the selected scenario or case data - seriesID !== selectedScenario.toString() || selectedScenario === 0 - ? '' - : ` + lineChartData.find((serie) => serie.parentId == seriesID) + ? `
` + : '' } ${ // Add group filters if this series is the selected scenario - seriesID !== selectedScenario.toString() - ? '' - : // Add table row for each active group filter + lineChartData.find((serie) => serie.parentId == seriesID) + ? // Add table row for each active group filter chart.series.values .filter((series) => { let seriesID = series.get('id'); if (seriesID) seriesID = seriesID.split('_')[1]; - return seriesID?.startsWith('group-filter-') && !series.isHidden(); + return seriesID?.startsWith('group-filter-'); }) .map((groupFilterSeries) => { return ` @@ -609,6 +534,7 @@ export default function LineChart({ `; }) .join('') + : '' } `; }) @@ -666,28 +592,7 @@ export default function LineChart({ }; // Always put date first, case data second const dataFieldsOrder = ['date', 'caseData']; - // Loop through active scenarios (if there are any) - // if (activeScenarios) { - // activeScenarios.forEach((scenarioId) => { - // // Skip case data (already added) - // if (scenarioId === 0 || !scenarioList?.scenarios[scenarioId]) { - // return; - // } - // console.log(scenarioId, scenarioList, scenarioList.scenarios[scenarioId]) - - // // Add scenario label to export data field names - // dataFields = { - // ...dataFields, - // [scenarioId]: scenarioList.scenarios[scenarioId].label, - // }; - // // Add scenario id to export data field order (for sorted export like csv) - // dataFieldsOrder.push(`${scenarioId}`); - // // If this is the selected scenario also add percentiles after it - // if (scenarioId == selectedScenario) { - // dataFieldsOrder.push('percentileDown', 'percentileUp'); - // } - // }); - // } + if (lineChartData) { lineChartData.forEach((serie) => { if ( @@ -713,7 +618,7 @@ export default function LineChart({ // Add scenario id to export data field order (for sorted export like csv) dataFieldsOrder.push(`${serie.serieId}`); // If this is the selected scenario also add percentiles after it - if (serie.serieId == selectedScenario) { + if (lineChartData.find((line) => line.openValueYField && line.parentId == serie.serieId)) { dataFieldsOrder.push('percentileDown', 'percentileUp'); } }); @@ -742,8 +647,6 @@ export default function LineChart({ setReferenceDayX(); // Re-run this effect whenever the data itself changes (or any variable the effect uses) }, [ - activeScenarios, - selectedScenario, theme, defaultT, customT, diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index bfb6c8ee..da6c1368 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -19,9 +19,7 @@ export default function LineChartContainer() { const {isChartDataFetching, chartData} = useContext(DataContext); - const selectedScenario = useAppSelector((state) => state.dataSelection.scenario); const selectedCompartment = useAppSelector((state) => state.dataSelection.compartment); - const activeScenarios = useAppSelector((state) => state.dataSelection.activeScenarios); const selectedDateInStore = useAppSelector((state) => state.dataSelection.date); const referenceDay = useAppSelector((state) => state.dataSelection.simulationStart); const minDate = useAppSelector((state) => state.dataSelection.minDate); @@ -79,8 +77,6 @@ export default function LineChartContainer() { lineChartData={chartData} minDate={minDate} maxDate={maxDate} - selectedScenario={selectedScenario} - activeScenarios={activeScenarios} referenceDay={referenceDay} yAxisLabel={yAxisLabel} localization={localization} diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 5ae222e3..985bd1cf 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -180,7 +180,7 @@ export default function HeatMap({ // This effect is responsible for setting the selected area when the home button is clicked. useEffect(() => { - if (!zoom || !root || root.isDisposed()) return; + if (!zoom || !root || root.isDisposed() || zoom.isDisposed()) return; zoom.homeButton.events.on('click', () => { setSelectedArea(defaultSelectedValue); }); diff --git a/frontend/src/components/shared/HeatMap/Zoom.ts b/frontend/src/components/shared/HeatMap/Zoom.ts index 09e1ce8a..0b0131fb 100644 --- a/frontend/src/components/shared/HeatMap/Zoom.ts +++ b/frontend/src/components/shared/HeatMap/Zoom.ts @@ -24,6 +24,10 @@ export default function useZoomControl( if (initializer) { initializer(newZoom); } + return () => { + newZoom.removeAll(); + newZoom.dispose(); + }; }, [root, settings, initializer]); return zoom ?? null; diff --git a/frontend/src/types/lineChart.ts b/frontend/src/types/lineChart.ts index cc4e98a6..4e97e864 100644 --- a/frontend/src/types/lineChart.ts +++ b/frontend/src/types/lineChart.ts @@ -18,4 +18,5 @@ export interface LineChartData { }; fill?: Color; fillOpacity?: number; + parentId?: string | number; } From 81988f6300d183f3a99aa33b973f232414ca4fc2 Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 8 Jul 2024 11:28:37 +0200 Subject: [PATCH 104/119] :sparkles: Modify console error --- frontend/src/DataContext.tsx | 2 +- .../src/components/shared/LineChart/LineSeries.ts | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 9cd3a825..701cf5ff 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -433,7 +433,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { let scenarioNamesIndex = 0; // Push the processed simulation data into the line chart data for (let i = 0; i < processedChartSimulationData.length; i++) { - if (processedChartSimulationData[i]) { + if (processedChartSimulationData[i] && scenarioNames[scenarioNamesIndex]) { lineChartData.push({ values: processedChartSimulationData[i], name: scenarioNames[scenarioNamesIndex], diff --git a/frontend/src/components/shared/LineChart/LineSeries.ts b/frontend/src/components/shared/LineChart/LineSeries.ts index 96639b93..5d74b321 100644 --- a/frontend/src/components/shared/LineChart/LineSeries.ts +++ b/frontend/src/components/shared/LineChart/LineSeries.ts @@ -11,8 +11,8 @@ export function useLineSeriesList( initializer?: (series: LineSeries, i: number) => void ) { const [series, setSeries] = useState>(); + useLayoutEffect(() => { - let isCancelled = false; if ( !root || !chart || @@ -31,8 +31,8 @@ export function useLineSeriesList( for (let i = 0; i < settings.length; i++) { const setting = settings[i]; - if (chart.isDisposed() || root.isDisposed() || isCancelled || setting.xAxis.isDisposed()) { - return; + if (setting.xAxis.isDisposed()) { + continue; } const newSeries = LineSeries.new(root, setting); @@ -45,12 +45,9 @@ export function useLineSeriesList( } } - if (!isCancelled) { - setSeries(seriesList); - } + setSeries(seriesList); return () => { - isCancelled = true; if (!chart.isDisposed()) { chart.series.clear(); } From eb5cbab83d3dc641fa18c086361d527ae836967f Mon Sep 17 00:00:00 2001 From: Violini Date: Mon, 8 Jul 2024 13:39:48 +0200 Subject: [PATCH 105/119] :sparkles: Rename mapcontainer --- frontend/src/App.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 96cbbd0c..fdec4f10 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -7,7 +7,7 @@ import {Provider} from 'react-redux'; import './App.scss'; import TopBar from './components/TopBar'; -import MapContainer from './components/Sidebar/SidebarContainer'; +import SidebarContainer from './components/Sidebar/SidebarContainer'; import MainContent from './components/MainContent'; import {Persistor, Store} from './store'; import Box from '@mui/material/Box'; @@ -47,7 +47,7 @@ export default function App(): JSX.Element { width: '100%', }} > - + From 65969edd48fae9f156af0613618ca87711ad2b70 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 9 Jul 2024 10:35:15 +0200 Subject: [PATCH 106/119] :wrench: Refactor linechart data selection --- frontend/src/DataContext.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 701cf5ff..807e0bde 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -515,7 +515,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { // This effect sets the chart percentile data based on the selection. useEffect(() => { let lineChartData: LineChartData | null = null; - if (chartPercentileData && chartPercentileData.length > 0 && selectedCompartment) { + if (chartPercentileData && chartPercentileData.length > 0 && selectedCompartment && selectedScenario) { const processedPercentileData: Array<{day: string; value: number[]}> = []; for (let i = 0; chartPercentileData[0]?.results && i < Object.keys(chartPercentileData[0].results).length; i++) { if ( @@ -536,14 +536,11 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { serieId: 'percentiles', valueYField: 'percentileUp', openValueYField: 'percentileDown', - visible: selectedScenario !== null && selectedScenario > 0, - fill: - selectedScenario !== null && selectedScenario > 0 - ? color(getScenarioPrimaryColor(selectedScenario, theme)) - : undefined, + visible: true, + fill: color(getScenarioPrimaryColor(selectedScenario, theme)), fillOpacity: 0.3, stroke: {strokeWidth: 0}, - parentId: selectedScenario !== null && selectedScenario > 0 ? selectedScenario : undefined, + parentId: selectedScenario, }; } setChartData((prevData) => { From 94e826ab9827b696f12a5c3c831ed7c9c56903b3 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 9 Jul 2024 11:05:05 +0200 Subject: [PATCH 107/119] :wrench: Refactor localization in Linechart and more button logic --- .../__tests__/components/LineChart.test.tsx | 1 + .../ExpandedButton.test.tsx | 2 +- .../LineChartComponents/LineChart.tsx | 73 ++++++++++--------- .../ExpandedButton.tsx | 6 +- .../ScenarioComponents/ScenarioContainer.tsx | 2 +- 5 files changed, 46 insertions(+), 38 deletions(-) diff --git a/frontend/src/__tests__/components/LineChart.test.tsx b/frontend/src/__tests__/components/LineChart.test.tsx index 04498700..eda9e40d 100644 --- a/frontend/src/__tests__/components/LineChart.test.tsx +++ b/frontend/src/__tests__/components/LineChart.test.tsx @@ -21,6 +21,7 @@ const LineChartTest = () => { }, []); const caseData = useMemo(() => { return { + name: 'chart.caseData', values: [ { day: '2021-04-01', diff --git a/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx index 640f0186..4f6064e4 100644 --- a/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx +++ b/frontend/src/__tests__/components/Scenario/ExpandedButtonComponents/ExpandedButton.test.tsx @@ -11,7 +11,7 @@ import Theme from 'util/Theme'; const GeneralButtonTest = () => { const buttonTexts = {clicked: 'Clicked', unclicked: 'Unclicked'}; - const isDisabled = () => true; + const isDisabled = true; const handleClick = () => {}; return ( diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index d0022e8c..ad08802f 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -81,14 +81,21 @@ export default function LineChart({ referenceDay = null, exportedFileName = 'Data', yAxisLabel, - localization = { - formatNumber: (value) => value.toLocaleString(), - customLang: 'global', - overrides: {}, - }, + localization, }: LineChartProps): JSX.Element { const {t: defaultT, i18n} = useTranslation(); - const {t: customT} = useTranslation(localization.customLang); + + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); + + const {t: customT} = useTranslation(memoizedLocalization.customLang); const theme = useTheme(); const root = useRoot( @@ -242,21 +249,21 @@ export default function LineChart({ root.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; xAxis.get('dateFormats', {day: ''})['day'] = - localization.overrides && localization.overrides['dayFormat'] - ? customT(localization.overrides['dayFormat']) + memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) : defaultT('dayFormat'); xAxis.get('tooltipDateFormats', {day: ''})['day'] = - localization.overrides && localization.overrides['dayFormat'] - ? customT(localization.overrides['dayFormat']) + memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) : defaultT('dayFormat'); // Fix first date of the month falling back to wrong format (also with fallback object) xAxis.get('periodChangeDateFormats', {day: ''})['day'] = - localization.overrides && localization.overrides['dayFormat'] - ? customT(localization.overrides['dayFormat']) + memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) : defaultT('dayFormat'); }, // Re-run effect if language changes - [i18n.language, root, chart, xAxis, defaultT, customT, localization.overrides] + [i18n.language, root, chart, xAxis, defaultT, customT, memoizedLocalization.overrides] ); // Effect to update min/max date. @@ -339,8 +346,8 @@ export default function LineChart({ return lineChartData.map((line) => { let lineName = line.name; if (lineName) { - if (localization.overrides && localization.overrides[lineName]) { - lineName = customT(localization.overrides[lineName]); + if (memoizedLocalization.overrides && memoizedLocalization.overrides[lineName]) { + lineName = customT(memoizedLocalization.overrides[lineName]); } else { lineName = defaultT(lineName); } @@ -362,7 +369,7 @@ export default function LineChart({ fill: line.fill ?? undefined, }; }); - }, [lineChartData, root, xAxis, yAxis, chartId, localization, defaultT, customT]); + }, [lineChartData, root, xAxis, yAxis, chartId, defaultT, customT, memoizedLocalization.overrides]); useLineSeriesList( root, @@ -442,13 +449,13 @@ export default function LineChart({ const tooltipHTML = ` ${'' /* Current Date and selected compartment name */} {date.formatDate("${ - localization.overrides && localization.overrides['dateFormat'] - ? customT(localization.overrides['dateFormat']) + memoizedLocalization.overrides && memoizedLocalization.overrides['dateFormat'] + ? customT(memoizedLocalization.overrides['dateFormat']) : defaultT('dateFormat') }")} (${ yAxisLabel ?? - (localization.overrides && localization.overrides[`yAxisLabel`] - ? customT(localization.overrides[`yAxisLabel`]) + (memoizedLocalization.overrides && memoizedLocalization.overrides[`yAxisLabel`] + ? customT(memoizedLocalization.overrides[`yAxisLabel`]) : defaultT(`yAxisLabel`)) })
[{percentileDown} - {percentileUp}]
@@ -570,23 +577,23 @@ export default function LineChart({ // Always export date and case data (and percentiles of selected scenario) let dataFields = { date: `${ - localization.overrides && localization.overrides['chart.date'] - ? customT(localization.overrides['chart.date']) + memoizedLocalization.overrides && memoizedLocalization.overrides['chart.date'] + ? customT(memoizedLocalization.overrides['chart.date']) : defaultT('chart.date') }`, caseData: `${ - localization.overrides && localization.overrides['chart.caseData'] - ? customT(localization.overrides['chart.caseData']) + memoizedLocalization.overrides && memoizedLocalization.overrides['chart.caseData'] + ? customT(memoizedLocalization.overrides['chart.caseData']) : defaultT('chart.caseData') }`, percentileUp: `${ - localization.overrides && localization.overrides['chart.percentileUp'] - ? customT(localization.overrides['chart.percentileUp']) + memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileUp'] + ? customT(memoizedLocalization.overrides['chart.percentileUp']) : defaultT('chart.percentileUp') }`, percentileDown: `${ - localization.overrides && localization.overrides['chart.percentileDown'] - ? customT(localization.overrides['chart.percentileDown']) + memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileDown'] + ? customT(memoizedLocalization.overrides['chart.percentileDown']) : defaultT('chart.percentileDown') }`, }; @@ -604,8 +611,8 @@ export default function LineChart({ let lineName = serie.name; if (lineName) { - if (localization.overrides && localization.overrides[lineName]) { - lineName = customT(localization.overrides[lineName]); + if (memoizedLocalization.overrides && memoizedLocalization.overrides[lineName]) { + lineName = customT(memoizedLocalization.overrides[lineName]); } else { lineName = defaultT(lineName); } @@ -634,8 +641,8 @@ export default function LineChart({ dataSource: data, dateFields: ['date'], dateFormat: `${ - localization.overrides && localization.overrides['dateFormat'] - ? customT(localization.overrides['dateFormat']) + memoizedLocalization.overrides && memoizedLocalization.overrides['dateFormat'] + ? customT(memoizedLocalization.overrides['dateFormat']) : defaultT('dateFormat') }`, dataFields: dataFields, @@ -652,7 +659,7 @@ export default function LineChart({ customT, setReferenceDayX, chartId, - localization.overrides, + memoizedLocalization.overrides, exportedFileName, chart, root, diff --git a/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx b/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx index 3582818c..67085577 100644 --- a/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx +++ b/frontend/src/components/ScenarioComponents/ExpandedButtonComponents/ExpandedButton.tsx @@ -10,8 +10,8 @@ interface GeneralButtonProps { /** Texts for the button in both states: clicked and unclicked */ buttonTexts: {clicked: string; unclicked: string}; - /** Function to determine if the button is disabled */ - isDisabled: () => boolean; + /** boolean to determine if the button is disabled */ + isDisabled: boolean; /** Function to handle the button click event */ handleClick: () => void; @@ -42,7 +42,7 @@ export default function GeneralButton({ variant='outlined' color='primary' sx={{width: '100%'}} - disabled={isDisabled()} + disabled={isDisabled} aria-label={ localization.overrides && localization.overrides['scenario.more'] ? customT(localization.overrides['scenario.more']) diff --git a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx index 96fafe93..f7e5a5b1 100644 --- a/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx +++ b/frontend/src/components/ScenarioComponents/ScenarioContainer.tsx @@ -406,7 +406,7 @@ export default function ScenarioContainer({minCompartmentsRows = 4, maxCompartme > compartmentsMemo.length < minCompartmentsRows} + isDisabled={compartmentsMemo.length <= minCompartmentsRows} handleClick={() => { if (compartments.indexOf(selectedCompartment) >= minCompartmentsRows) { setSelectedCompartment('MildInfections'); From 5fd6d30db3eaf7bd84dc3960acdecb4acda27e01 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 9 Jul 2024 13:58:39 +0200 Subject: [PATCH 108/119] :wrench: Replace serie id with valueYField --- frontend/src/components/LineChartComponents/LineChart.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index ad08802f..5f4df799 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -420,7 +420,7 @@ export default function LineChart({ }); } else { serie.values.forEach((entry) => { - dataMap.set(entry.day, {...dataMap.get(entry.day), [id]: entry.value as number}); + dataMap.set(entry.day, {...dataMap.get(entry.day), [serie.valueYField]: entry.value as number}); }); } }); From a61a102abd06c888b9c2b7b2589d89a2d6abbc22 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 9 Jul 2024 17:58:58 +0200 Subject: [PATCH 109/119] :wrench: Remove linechart caseData translation in linechart --- frontend/src/components/LineChartComponents/LineChart.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 5f4df799..6d79b644 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -581,11 +581,6 @@ export default function LineChart({ ? customT(memoizedLocalization.overrides['chart.date']) : defaultT('chart.date') }`, - caseData: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.caseData'] - ? customT(memoizedLocalization.overrides['chart.caseData']) - : defaultT('chart.caseData') - }`, percentileUp: `${ memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileUp'] ? customT(memoizedLocalization.overrides['chart.percentileUp']) @@ -603,7 +598,6 @@ export default function LineChart({ if (lineChartData) { lineChartData.forEach((serie) => { if ( - serie.serieId === 0 || serie.serieId === 'percentiles' || serie.serieId.toString().startsWith('group-filter-') ) From d641786b129b3af7e7b92f0d739111981b358d80 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 9 Jul 2024 18:07:19 +0200 Subject: [PATCH 110/119] :wrench: Refactor export data in linechart --- .../src/components/LineChartComponents/LineChart.tsx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 6d79b644..4284744f 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -592,16 +592,12 @@ export default function LineChart({ : defaultT('chart.percentileDown') }`, }; - // Always put date first, case data second - const dataFieldsOrder = ['date', 'caseData']; + // Always put date first, 0 second + const dataFieldsOrder = ['date', '0']; if (lineChartData) { lineChartData.forEach((serie) => { - if ( - serie.serieId === 'percentiles' || - serie.serieId.toString().startsWith('group-filter-') - ) - return; + if (serie.serieId === 'percentiles' || serie.serieId.toString().startsWith('group-filter-')) return; let lineName = serie.name; if (lineName) { @@ -614,7 +610,7 @@ export default function LineChart({ // Add scenario label to export data field names dataFields = { ...dataFields, - [serie.serieId]: lineName, + [String(serie.serieId)]: lineName, }; // Add scenario id to export data field order (for sorted export like csv) dataFieldsOrder.push(`${serie.serieId}`); From d9fb6782b51b09130f186b391bdf1c79f9e8e3f7 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 10 Jul 2024 10:23:41 +0200 Subject: [PATCH 111/119] :wrench: Refactor some small detail --- .../LineChartComponents/LineChart.tsx | 73 ++++++++--------- .../CardsComponents/MainCard/CardTooltip.tsx | 24 +++--- frontend/src/main.tsx | 1 - frontend/src/store/services/groupApi.ts | 79 +++++++++++++++---- frontend/src/types/card.ts | 12 +++ frontend/src/types/group.ts | 13 +++ frontend/src/types/heatmapLegend.ts | 21 +++++ frontend/src/types/lineChart.ts | 59 +++++++++++++- frontend/src/types/localization.ts | 16 ++++ 9 files changed, 229 insertions(+), 69 deletions(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index ad08802f..d0022e8c 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -81,21 +81,14 @@ export default function LineChart({ referenceDay = null, exportedFileName = 'Data', yAxisLabel, - localization, + localization = { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + }, }: LineChartProps): JSX.Element { const {t: defaultT, i18n} = useTranslation(); - - const memoizedLocalization = useMemo(() => { - return ( - localization || { - formatNumber: (value) => value.toLocaleString(), - customLang: 'global', - overrides: {}, - } - ); - }, [localization]); - - const {t: customT} = useTranslation(memoizedLocalization.customLang); + const {t: customT} = useTranslation(localization.customLang); const theme = useTheme(); const root = useRoot( @@ -249,21 +242,21 @@ export default function LineChart({ root.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; xAxis.get('dateFormats', {day: ''})['day'] = - memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] - ? customT(memoizedLocalization.overrides['dayFormat']) + localization.overrides && localization.overrides['dayFormat'] + ? customT(localization.overrides['dayFormat']) : defaultT('dayFormat'); xAxis.get('tooltipDateFormats', {day: ''})['day'] = - memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] - ? customT(memoizedLocalization.overrides['dayFormat']) + localization.overrides && localization.overrides['dayFormat'] + ? customT(localization.overrides['dayFormat']) : defaultT('dayFormat'); // Fix first date of the month falling back to wrong format (also with fallback object) xAxis.get('periodChangeDateFormats', {day: ''})['day'] = - memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] - ? customT(memoizedLocalization.overrides['dayFormat']) + localization.overrides && localization.overrides['dayFormat'] + ? customT(localization.overrides['dayFormat']) : defaultT('dayFormat'); }, // Re-run effect if language changes - [i18n.language, root, chart, xAxis, defaultT, customT, memoizedLocalization.overrides] + [i18n.language, root, chart, xAxis, defaultT, customT, localization.overrides] ); // Effect to update min/max date. @@ -346,8 +339,8 @@ export default function LineChart({ return lineChartData.map((line) => { let lineName = line.name; if (lineName) { - if (memoizedLocalization.overrides && memoizedLocalization.overrides[lineName]) { - lineName = customT(memoizedLocalization.overrides[lineName]); + if (localization.overrides && localization.overrides[lineName]) { + lineName = customT(localization.overrides[lineName]); } else { lineName = defaultT(lineName); } @@ -369,7 +362,7 @@ export default function LineChart({ fill: line.fill ?? undefined, }; }); - }, [lineChartData, root, xAxis, yAxis, chartId, defaultT, customT, memoizedLocalization.overrides]); + }, [lineChartData, root, xAxis, yAxis, chartId, localization, defaultT, customT]); useLineSeriesList( root, @@ -449,13 +442,13 @@ export default function LineChart({ const tooltipHTML = ` ${'' /* Current Date and selected compartment name */} {date.formatDate("${ - memoizedLocalization.overrides && memoizedLocalization.overrides['dateFormat'] - ? customT(memoizedLocalization.overrides['dateFormat']) + localization.overrides && localization.overrides['dateFormat'] + ? customT(localization.overrides['dateFormat']) : defaultT('dateFormat') }")} (${ yAxisLabel ?? - (memoizedLocalization.overrides && memoizedLocalization.overrides[`yAxisLabel`] - ? customT(memoizedLocalization.overrides[`yAxisLabel`]) + (localization.overrides && localization.overrides[`yAxisLabel`] + ? customT(localization.overrides[`yAxisLabel`]) : defaultT(`yAxisLabel`)) })
@@ -577,23 +570,23 @@ export default function LineChart({ // Always export date and case data (and percentiles of selected scenario) let dataFields = { date: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.date'] - ? customT(memoizedLocalization.overrides['chart.date']) + localization.overrides && localization.overrides['chart.date'] + ? customT(localization.overrides['chart.date']) : defaultT('chart.date') }`, caseData: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.caseData'] - ? customT(memoizedLocalization.overrides['chart.caseData']) + localization.overrides && localization.overrides['chart.caseData'] + ? customT(localization.overrides['chart.caseData']) : defaultT('chart.caseData') }`, percentileUp: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileUp'] - ? customT(memoizedLocalization.overrides['chart.percentileUp']) + localization.overrides && localization.overrides['chart.percentileUp'] + ? customT(localization.overrides['chart.percentileUp']) : defaultT('chart.percentileUp') }`, percentileDown: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileDown'] - ? customT(memoizedLocalization.overrides['chart.percentileDown']) + localization.overrides && localization.overrides['chart.percentileDown'] + ? customT(localization.overrides['chart.percentileDown']) : defaultT('chart.percentileDown') }`, }; @@ -611,8 +604,8 @@ export default function LineChart({ let lineName = serie.name; if (lineName) { - if (memoizedLocalization.overrides && memoizedLocalization.overrides[lineName]) { - lineName = customT(memoizedLocalization.overrides[lineName]); + if (localization.overrides && localization.overrides[lineName]) { + lineName = customT(localization.overrides[lineName]); } else { lineName = defaultT(lineName); } @@ -641,8 +634,8 @@ export default function LineChart({ dataSource: data, dateFields: ['date'], dateFormat: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['dateFormat'] - ? customT(memoizedLocalization.overrides['dateFormat']) + localization.overrides && localization.overrides['dateFormat'] + ? customT(localization.overrides['dateFormat']) : defaultT('dateFormat') }`, dataFields: dataFields, @@ -659,7 +652,7 @@ export default function LineChart({ customT, setReferenceDayX, chartId, - memoizedLocalization.overrides, + localization.overrides, exportedFileName, chart, root, diff --git a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx index f4f5c177..45e77c2a 100644 --- a/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx +++ b/frontend/src/components/ScenarioComponents/CardsComponents/MainCard/CardTooltip.tsx @@ -102,12 +102,12 @@ export default function CardTooltip({ @@ -119,12 +119,12 @@ export default function CardTooltip({ }} aria-label={ activeScenario - ? localization.overrides && localization.overrides['scenario.deactivate'.toString()] - ? customT(localization.overrides['scenario.deactivate'.toString()]) - : defaultT('scenario.deactivate'.toString()) - : localization.overrides && localization.overrides['scenario.activate'.toString()] - ? customT(localization.overrides['scenario.activate'.toString()]) - : defaultT('scenario.activate'.toString()) + ? localization.overrides && localization.overrides['scenario.deactivate'] + ? customT(localization.overrides['scenario.deactivate']) + : defaultT('scenario.deactivate') + : localization.overrides && localization.overrides['scenario.activate'] + ? customT(localization.overrides['scenario.activate']) + : defaultT('scenario.activate') } > {activeScenario ? : } diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index e63346ab..d028bbe8 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -3,7 +3,6 @@ import {createRoot} from 'react-dom/client'; import React from 'react'; - import App from './App'; import './util/i18n'; diff --git a/frontend/src/store/services/groupApi.ts b/frontend/src/store/services/groupApi.ts index 77d20fae..fa0fb77c 100644 --- a/frontend/src/store/services/groupApi.ts +++ b/frontend/src/store/services/groupApi.ts @@ -198,60 +198,109 @@ export const groupApi = createApi({ }), }); +/** + * Represents the structure of a post filter. + */ export interface PostFilter { + /** The unique identifier. */ id: number; + + /** The node associated. */ node: string; + + /** The group filter associated. */ groupFilter: GroupFilter; + + /** The day associated. Optional. */ day?: string; + + /** The compartment associated. Optional. */ compartment?: string; } +/** + * Represents the structure of multiple post filters. + */ export interface PostFilters { + /** The array of unique identifiers. */ ids: number[]; + + /** The node associated */ node: string; + + /** The dictionary of group filters associated */ groupFilterList: Dictionary | undefined; + + /** The day associated. Optional. */ day?: string; + + /** The compartment associated. Optional. */ compartment?: string; } +/** + * Represents the structure of a group category. + */ export interface GroupCategory { + /** The key of the group category. */ key: string; + + /** The name of the group category. */ name: string; + + /** The description of the group category. */ description: string; } +/** + * Represents the structure of multiple group categories. + */ export interface GroupCategories { + /** The count of group categories. */ count: number; + + /** The next group category. Null if there is no next group category. */ next: null; + + /** The previous group category. Null if there is no previous group category. */ previous: null; - results: - | { - key: string; - name: string; - description: string; - }[] - | Array; + + /** The array of group categories. */ + results: Array; } +/** + * Represents the structure of a group subcategory. + */ export interface GroupSubcategory { + /** The key of the group subcategory. */ key: string; + + /** The name of the group subcategory. */ name: string; + + /** The description of the group subcategory. */ description: string; + + /** The category of the group subcategory. */ category: string; } +/** + * Represents the structure of multiple group subcategories. + */ export interface GroupSubcategories { + /** The count of group subcategories. */ count: number; + + /** The next group subcategory. Null if there is no next group subcategory. */ next: null; + + /** The previous group subcategory. Null if there is no previous group subcategory. */ previous: null; - results: - | { - key: string; - name: string; - description: string; - category: string; - }[] - | Array; + + /** The array of group subcategories. */ + results: Array; } export const { diff --git a/frontend/src/types/card.ts b/frontend/src/types/card.ts index ce1eeab4..712e21ec 100644 --- a/frontend/src/types/card.ts +++ b/frontend/src/types/card.ts @@ -9,12 +9,24 @@ export const initialState = { compartments: [] as string[], }; +/** + * Represents the value of a card. + */ export interface cardValue { + /** A dictionary of compartment values associated with the card.*/ compartmentValues: Dictionary | null; + + /** A dictionary of start values */ startValues: Dictionary | null; } +/** + * Represents the filter value for a card. + */ export interface filterValue { + /** The filter title. */ filteredTitle: string; + + /** The filtered values. */ filteredValues: Dictionary | null; } diff --git a/frontend/src/types/group.ts b/frontend/src/types/group.ts index 35301778..d268d88a 100644 --- a/frontend/src/types/group.ts +++ b/frontend/src/types/group.ts @@ -3,6 +3,9 @@ import {Dictionary} from 'util/util'; +/** + * Represents the response object returned from the server when fetching filtered information. + */ export interface GroupResponse { count: number; next: string | null; @@ -16,9 +19,19 @@ export interface GroupData { name: string; } +/** + * Represents the structure of a filter group. + */ export interface GroupFilter { + /** The unique identifier of the filter group. */ id: string; + + /** The display name of the filter group. */ name: string; + + /** Indicates whether the filter group is visible. */ isVisible: boolean; + + /** The dictionary of field selecte in the editor that it will be used to filter the info */ groups: Dictionary; } diff --git a/frontend/src/types/heatmapLegend.ts b/frontend/src/types/heatmapLegend.ts index 35244a0d..6a18485a 100644 --- a/frontend/src/types/heatmapLegend.ts +++ b/frontend/src/types/heatmapLegend.ts @@ -1,11 +1,32 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 +/** + * Represents a heatmap legend. + */ export interface HeatmapLegend { + /** + * The name of the legend. + */ name: string; + + /** + * Indicates whether the legend values are normalized. + */ isNormalized: boolean; + + /** + * The steps in the legend, each containing a color and a corresponding value. + */ steps: { + /** + * The color associated with the value. + */ color: string; + + /** + * The value associated with the color. + */ value: number; }[]; } diff --git a/frontend/src/types/lineChart.ts b/frontend/src/types/lineChart.ts index 4e97e864..24b95e31 100644 --- a/frontend/src/types/lineChart.ts +++ b/frontend/src/types/lineChart.ts @@ -3,20 +3,77 @@ import {Color} from '@amcharts/amcharts5/.internal/core/util/Color'; +/** + * Represents the data for a line chart. + */ export interface LineChartData { - values: {day: string; value: number | number[]}[]; + /** + * The values for the line chart. + */ + values: { day: string; value: number | number[] }[]; + + /** + * The name of the line chart. + */ name?: string; + + /** + * The ID of the series. + */ serieId: string | number; + + /** + * The field used for the Y-axis value. + */ valueYField: string | number; + + /** + * The field used for the open Y-axis value. + */ openValueYField?: string | number; + + /** + * Indicates whether the line chart is visible. + */ visible?: boolean; + + /** + * The tooltip text for the line chart. + */ tooltipText?: string; + + /** + * The stroke properties for the line chart. + */ stroke: { + /** + * The color of the stroke. + */ color?: Color; + + /** + * The width of the stroke. + */ strokeWidth?: number; + + /** + * The dash array for the stroke. + */ strokeDasharray?: number[]; }; + + /** + * The fill color for the line chart. + */ fill?: Color; + + /** + * The opacity of the fill color. + */ fillOpacity?: number; + + /** + * The ID of the parent element. + */ parentId?: string | number; } diff --git a/frontend/src/types/localization.ts b/frontend/src/types/localization.ts index 83f0e196..f3a70350 100644 --- a/frontend/src/types/localization.ts +++ b/frontend/src/types/localization.ts @@ -1,9 +1,25 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 +/** + * Represents the Localization interface for providing translation and also formattation. + */ export interface Localization { + /** + * A function that formats a number value as a string. + * @param value - The number value to be formatted. + * @returns The formatted number as a string. + */ formatNumber?: (value: number) => string; + + /** + * A custom language string. + */ customLang?: string; + + /** + * An object that contains key-value pairs for overriding specific localization strings. + */ overrides?: { [key: string]: string; }; From a5e036db84efe9bdee66a5db5b4df5afe52688af Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 10 Jul 2024 10:30:17 +0200 Subject: [PATCH 112/119] :sparkle: Fix the formatting --- frontend/src/types/heatmapLegend.ts | 6 +++--- frontend/src/types/lineChart.ts | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/frontend/src/types/heatmapLegend.ts b/frontend/src/types/heatmapLegend.ts index 6a18485a..f5ae3b8e 100644 --- a/frontend/src/types/heatmapLegend.ts +++ b/frontend/src/types/heatmapLegend.ts @@ -9,12 +9,12 @@ export interface HeatmapLegend { * The name of the legend. */ name: string; - + /** * Indicates whether the legend values are normalized. */ isNormalized: boolean; - + /** * The steps in the legend, each containing a color and a corresponding value. */ @@ -23,7 +23,7 @@ export interface HeatmapLegend { * The color associated with the value. */ color: string; - + /** * The value associated with the color. */ diff --git a/frontend/src/types/lineChart.ts b/frontend/src/types/lineChart.ts index 24b95e31..3231cf99 100644 --- a/frontend/src/types/lineChart.ts +++ b/frontend/src/types/lineChart.ts @@ -10,38 +10,38 @@ export interface LineChartData { /** * The values for the line chart. */ - values: { day: string; value: number | number[] }[]; - + values: {day: string; value: number | number[]}[]; + /** * The name of the line chart. */ name?: string; - + /** * The ID of the series. */ serieId: string | number; - + /** * The field used for the Y-axis value. */ valueYField: string | number; - + /** * The field used for the open Y-axis value. */ openValueYField?: string | number; - + /** * Indicates whether the line chart is visible. */ visible?: boolean; - + /** * The tooltip text for the line chart. */ tooltipText?: string; - + /** * The stroke properties for the line chart. */ @@ -50,28 +50,28 @@ export interface LineChartData { * The color of the stroke. */ color?: Color; - + /** * The width of the stroke. */ strokeWidth?: number; - + /** * The dash array for the stroke. */ strokeDasharray?: number[]; }; - + /** * The fill color for the line chart. */ fill?: Color; - + /** * The opacity of the fill color. */ fillOpacity?: number; - + /** * The ID of the parent element. */ From 5ab82805a3de2934db7b3c29d3a6a61ab0bc2744 Mon Sep 17 00:00:00 2001 From: Serloni Date: Wed, 10 Jul 2024 17:16:25 +0200 Subject: [PATCH 113/119] :wrench: Fix Compartment values null logic in the compartments components --- .../CompartmentsComponents/CompartmentsRows.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx index e44c4f5d..cdf584d4 100644 --- a/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx +++ b/frontend/src/components/ScenarioComponents/CompartmentsComponents/CompartmentsRows.tsx @@ -54,12 +54,15 @@ export default function CompartmentsRows({ const {t: customT} = useTranslation(localization.customLang); function GetFormattedAndTranslatedValues(filteredValues: number | null): string { - if (compartmentValues && filteredValues) - return localization.formatNumber ? localization.formatNumber(filteredValues) : filteredValues.toString(); + if ((compartmentValues && filteredValues) || (compartmentValues && !filteredValues)) + return filteredValues + ? localization.formatNumber + ? localization.formatNumber(filteredValues) + : filteredValues.toString() + : '0'; const noDataText = localization.overrides?.['no-data'] ? customT(localization.overrides['no-data']) : defaultT('no-data'); - return noDataText; } return ( From 9cc84875f7582b49b4190dada13d415dacae7354 Mon Sep 17 00:00:00 2001 From: Serloni Date: Thu, 11 Jul 2024 16:26:43 +0200 Subject: [PATCH 114/119] :wrench: Fix typo error in the CardTooltip test --- .../Scenario/CardsComponents/MainCard/CardTooltip.test.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx index 4887eb96..632395e3 100644 --- a/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx +++ b/frontend/src/__tests__/components/Scenario/CardsComponents/MainCard/CardTooltip.test.tsx @@ -18,7 +18,6 @@ const CardTooltipTest = ({hovertest, scenarios, index, activeScenario}: CardTool const color = '#00000'; const [activeScenarios, setActiveScenarios] = useState(scenarios); const [numberSelectedScenario, setSelectedScenario] = useState(index); - const compartmentsExpanded = false; return ( @@ -29,7 +28,6 @@ const CardTooltipTest = ({hovertest, scenarios, index, activeScenario}: CardTool activeScenario={activeScenario} activeScenarios={activeScenarios} numberSelectedScenario={numberSelectedScenario} - compartmentsExpanded={compartmentsExpanded} setActiveScenarios={setActiveScenarios} setSelectedScenario={setSelectedScenario} /> @@ -47,7 +45,7 @@ describe('CardTooltip', () => { render(); expect(screen.queryByRole('button')).not.toBeInTheDocument(); }); - test('renders the tooltip label scenario.activate correctly when hover is true and the sceanrio is not active', () => { + test('renders the tooltip label scenario.activate correctly when hover is true and the scenario is not active', () => { render(); expect(screen.getByRole('button')).toBeInTheDocument(); expect(screen.getByRole('button')).toHaveAttribute('aria-label', 'scenario.activate'); From eb064df61ee388b3e454440f353a9b588907992c Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 16 Jul 2024 10:55:38 +0200 Subject: [PATCH 115/119] :wrench: Refactor localization in LineChart --- frontend/package-lock.json | 17 ------- frontend/src/DataContext.tsx | 15 +++--- .../LineChartComponents/LineChart.tsx | 48 +++++++------------ .../src/components/LineChartContainer.tsx | 24 ++-------- .../Sidebar/MapComponents/HeatMap.tsx | 1 + 5 files changed, 32 insertions(+), 73 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 725f3c0a..9056e01c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -7889,23 +7889,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, "node_modules/log-update": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", diff --git a/frontend/src/DataContext.tsx b/frontend/src/DataContext.tsx index 807e0bde..56143502 100644 --- a/frontend/src/DataContext.tsx +++ b/frontend/src/DataContext.tsx @@ -81,7 +81,8 @@ export const DataContext = createContext<{ // Create a provider component export const DataProvider = ({children}: {children: React.ReactNode}) => { - const {t} = useTranslation(); + const {t: defaultT} = useTranslation(); + const {t: backendT} = useTranslation('backend'); const theme = useTheme(); const [geoData, setGeoData] = useState(); @@ -312,7 +313,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { (jsonlist: GeoJsonProperties[]) => { /* [CDtemp-begin] */ // append germany to list - jsonlist.push({RS: '00000', GEN: t('germany'), BEZ: ''} as unknown as District); + jsonlist.push({RS: '00000', GEN: defaultT('germany'), BEZ: ''} as unknown as District); // append city districts jsonlist.push( ...(searchbarCologneData as unknown as Array).map((dist) => { @@ -337,7 +338,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { } ); // this init should only run once on first render - }, [t]); + }, [defaultT]); // This useEffect is used in order to set the SimulationModelKey useEffect(() => { @@ -394,7 +395,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { // Push the processed case data into the line chart data lineChartData = { values: processedChartCaseData, - name: 'chart.caseData', + name: defaultT('chart.caseData'), valueYField: 0, stroke: {color: color('#000')}, serieId: 0, @@ -411,7 +412,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { return []; }); // This should re-run whenever the case data changes, or a different compartment is selected. - }, [chartCaseData, selectedCompartment, activeScenarios]); + }, [chartCaseData, selectedCompartment, activeScenarios, defaultT]); // This effect sets the chart simulation data based on the selection. useEffect(() => { @@ -429,7 +430,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { // Define the scenario names for the simulation data const scenarioNames = Object.values(scenarioList.scenarios) .filter((scenario) => activeScenarios.includes(scenario.id)) - .map((scenario) => `scenario-names.${scenario.label}`); + .map((scenario) => backendT(`scenario-names.${scenario.label}`)); let scenarioNamesIndex = 0; // Push the processed simulation data into the line chart data for (let i = 0; i < processedChartSimulationData.length; i++) { @@ -456,7 +457,7 @@ export const DataProvider = ({children}: {children: React.ReactNode}) => { return lineChartData; }); // This should re-run whenever the simulation data changes, or a different compartment is selected. - }, [chartSimulationData, selectedCompartment, theme, activeScenarios, scenarioList]); + }, [chartSimulationData, selectedCompartment, theme, activeScenarios, scenarioList, backendT]); // This effect sets the chart group filter data based on the selection. useEffect(() => { diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 4284744f..5ff1196c 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -248,19 +248,16 @@ export default function LineChart({ // Set localization root.locale = i18n.language === 'de' ? am5locales_de_DE : am5locales_en_US; - xAxis.get('dateFormats', {day: ''})['day'] = - memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] - ? customT(memoizedLocalization.overrides['dayFormat']) - : defaultT('dayFormat'); - xAxis.get('tooltipDateFormats', {day: ''})['day'] = - memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] - ? customT(memoizedLocalization.overrides['dayFormat']) - : defaultT('dayFormat'); + xAxis.get('dateFormats', {day: ''})['day'] = memoizedLocalization.overrides?.['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) + : defaultT('dayFormat'); + xAxis.get('tooltipDateFormats', {day: ''})['day'] = memoizedLocalization.overrides?.['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) + : defaultT('dayFormat'); // Fix first date of the month falling back to wrong format (also with fallback object) - xAxis.get('periodChangeDateFormats', {day: ''})['day'] = - memoizedLocalization.overrides && memoizedLocalization.overrides['dayFormat'] - ? customT(memoizedLocalization.overrides['dayFormat']) - : defaultT('dayFormat'); + xAxis.get('periodChangeDateFormats', {day: ''})['day'] = memoizedLocalization.overrides?.['dayFormat'] + ? customT(memoizedLocalization.overrides['dayFormat']) + : defaultT('dayFormat'); }, // Re-run effect if language changes [i18n.language, root, chart, xAxis, defaultT, customT, memoizedLocalization.overrides] @@ -342,21 +339,12 @@ export default function LineChart({ if (!root || !xAxis || !yAxis || !lineChartData) { return []; } - return lineChartData.map((line) => { - let lineName = line.name; - if (lineName) { - if (memoizedLocalization.overrides && memoizedLocalization.overrides[lineName]) { - lineName = customT(memoizedLocalization.overrides[lineName]); - } else { - lineName = defaultT(lineName); - } - } return { xAxis: xAxis, yAxis: yAxis, id: `${chartId}_${line.serieId}`, - name: lineName ?? '', + name: line.name ?? '', valueXField: 'date', valueYField: String(line.valueYField), openValueYField: line.openValueYField ? String(line.openValueYField) : undefined, @@ -369,7 +357,7 @@ export default function LineChart({ fill: line.fill ?? undefined, }; }); - }, [lineChartData, root, xAxis, yAxis, chartId, defaultT, customT, memoizedLocalization.overrides]); + }, [lineChartData, root, xAxis, yAxis, chartId]); useLineSeriesList( root, @@ -449,12 +437,12 @@ export default function LineChart({ const tooltipHTML = ` ${'' /* Current Date and selected compartment name */} {date.formatDate("${ - memoizedLocalization.overrides && memoizedLocalization.overrides['dateFormat'] + memoizedLocalization.overrides?.['dateFormat'] ? customT(memoizedLocalization.overrides['dateFormat']) : defaultT('dateFormat') }")} (${ yAxisLabel ?? - (memoizedLocalization.overrides && memoizedLocalization.overrides[`yAxisLabel`] + (memoizedLocalization.overrides?.[`yAxisLabel`] ? customT(memoizedLocalization.overrides[`yAxisLabel`]) : defaultT(`yAxisLabel`)) }) @@ -577,17 +565,17 @@ export default function LineChart({ // Always export date and case data (and percentiles of selected scenario) let dataFields = { date: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.date'] + memoizedLocalization.overrides?.['chart.date'] ? customT(memoizedLocalization.overrides['chart.date']) : defaultT('chart.date') }`, percentileUp: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileUp'] + memoizedLocalization.overrides?.['chart.percentileUp'] ? customT(memoizedLocalization.overrides['chart.percentileUp']) : defaultT('chart.percentileUp') }`, percentileDown: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['chart.percentileDown'] + memoizedLocalization.overrides?.['chart.percentileDown'] ? customT(memoizedLocalization.overrides['chart.percentileDown']) : defaultT('chart.percentileDown') }`, @@ -601,7 +589,7 @@ export default function LineChart({ let lineName = serie.name; if (lineName) { - if (memoizedLocalization.overrides && memoizedLocalization.overrides[lineName]) { + if (memoizedLocalization.overrides?.[lineName]) { lineName = customT(memoizedLocalization.overrides[lineName]); } else { lineName = defaultT(lineName); @@ -631,7 +619,7 @@ export default function LineChart({ dataSource: data, dateFields: ['date'], dateFormat: `${ - memoizedLocalization.overrides && memoizedLocalization.overrides['dateFormat'] + memoizedLocalization.overrides?.['dateFormat'] ? customT(memoizedLocalization.overrides['dateFormat']) : defaultT('dateFormat') }`, diff --git a/frontend/src/components/LineChartContainer.tsx b/frontend/src/components/LineChartContainer.tsx index da6c1368..b53e725c 100644 --- a/frontend/src/components/LineChartContainer.tsx +++ b/frontend/src/components/LineChartContainer.tsx @@ -1,12 +1,11 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useContext, useEffect, useMemo, useState} from 'react'; +import React, {useContext, useEffect, useMemo, useState} from 'react'; import LineChart from './LineChartComponents/LineChart'; import LoadingContainer from './shared/LoadingContainer'; import {useTheme} from '@mui/material'; import {DataContext} from '../DataContext'; -import React from 'react'; import {useAppDispatch, useAppSelector} from 'store/hooks'; import {selectDate} from 'store/DataSelectionSlice'; import {setReferenceDayBottom} from 'store/LayoutSlice'; @@ -26,19 +25,7 @@ export default function LineChartContainer() { const maxDate = useAppSelector((state) => state.dataSelection.maxDate); const [selectedDate, setSelectedDate] = useState(selectedDateInStore ?? '2024-08-07'); - const [referenceDayb, setReferenceDayb] = useState(0); - - const localization = useMemo(() => { - return { - customLang: 'backend', - overrides: { - 'scenario-names.baseline': 'scenario-names.baseline', - 'scenario-names.closed_schools': 'scenario-names.closed_schools', - 'scenario-names.remote_work': 'scenario-names.remote_work', - 'scenario-names.10p_reduced_contacts': 'scenario-names.10p_reduced_contacts', - }, - }; - }, []); + const [referenceDayBottomPosition, setReferenceDayBottomPosition] = useState(0); const yAxisLabel = useMemo(() => { return t(`infection-states.${selectedCompartment}`); @@ -60,9 +47,9 @@ export default function LineChartContainer() { // Set reference day in store useEffect(() => { - dispatch(setReferenceDayBottom(referenceDayb)); + dispatch(setReferenceDayBottom(referenceDayBottomPosition)); // This effect should only run when the referenceDay changes - }, [referenceDayb, dispatch]); + }, [referenceDayBottomPosition, dispatch]); return ( ); diff --git a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx index 985bd1cf..27c21fa3 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatMap.tsx @@ -204,6 +204,7 @@ export default function HeatMap({ return { geoJSON: mapData, tooltipPosition: 'fixed', + layer: 0, } as am5map.IMapPolygonSeriesSettings; }, [mapData]); From e2004bbd6955db9230169195c88bd83d62801231 Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 16 Jul 2024 11:11:19 +0200 Subject: [PATCH 116/119] :wrench: Remove unused lines --- .../src/components/LineChartComponents/LineChart.tsx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/frontend/src/components/LineChartComponents/LineChart.tsx b/frontend/src/components/LineChartComponents/LineChart.tsx index 5ff1196c..4dbdab11 100644 --- a/frontend/src/components/LineChartComponents/LineChart.tsx +++ b/frontend/src/components/LineChartComponents/LineChart.tsx @@ -587,18 +587,10 @@ export default function LineChart({ lineChartData.forEach((serie) => { if (serie.serieId === 'percentiles' || serie.serieId.toString().startsWith('group-filter-')) return; - let lineName = serie.name; - if (lineName) { - if (memoizedLocalization.overrides?.[lineName]) { - lineName = customT(memoizedLocalization.overrides[lineName]); - } else { - lineName = defaultT(lineName); - } - } // Add scenario label to export data field names dataFields = { ...dataFields, - [String(serie.serieId)]: lineName, + [String(serie.serieId)]: serie.name ?? '', }; // Add scenario id to export data field order (for sorted export like csv) dataFieldsOrder.push(`${serie.serieId}`); From 279a46d7847baa15f7ee26752e684c816c99c91a Mon Sep 17 00:00:00 2001 From: Violini Date: Tue, 16 Jul 2024 13:16:37 +0200 Subject: [PATCH 117/119] :wrench: Refactor localization in Map components --- .../Sidebar/MapComponents/HeatLegend.tsx | 29 ++++----- .../Sidebar/MapComponents/HeatLegendEdit.tsx | 59 +++++++++++-------- .../Sidebar/MapComponents/HeatMap.tsx | 5 +- .../Sidebar/MapComponents/LockMaxValue.tsx | 33 +++++++---- .../Sidebar/MapComponents/SearchBar.tsx | 3 +- 5 files changed, 71 insertions(+), 58 deletions(-) diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx index 3aa71559..d5535485 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegend.tsx @@ -1,10 +1,9 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import {useCallback, useLayoutEffect, useMemo} from 'react'; +import React, {useCallback, useLayoutEffect, useMemo} from 'react'; import * as am5 from '@amcharts/amcharts5'; import {Box} from '@mui/material'; -import React from 'react'; import {HeatmapLegend} from 'types/heatmapLegend'; import {useTheme} from '@mui/material/styles'; import {Localization} from 'types/localization'; @@ -79,30 +78,28 @@ export default function HeatLegend({ const root = useRoot(unique_id); - // Memoize the default localization object to avoid infinite re-renders - const defaultLocalization = useMemo(() => { - return { - formatNumber: (value: number) => value.toString(), - customLang: 'global', - overrides: {}, - }; - }, []); - - // Use the provided localization or default to the memoized one - const localizationToUse = localization || defaultLocalization; + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); const heatLegendSettings = useMemo(() => { return { orientation: 'horizontal' as 'horizontal' | 'vertical', startValue: min, - startText: displayText ? localizationToUse.formatNumber!(min) : ' ', + startText: displayText ? memoizedLocalization.formatNumber!(min) : ' ', endValue: max, - endText: displayText ? localizationToUse.formatNumber!(max) : ' ', + endText: displayText ? memoizedLocalization.formatNumber!(max) : ' ', // set start & end color to paper background as gradient is overwritten later and this sets the tooltip background color startColor: am5.color(theme.palette.background.paper), endColor: am5.color(theme.palette.background.paper), }; - }, [min, displayText, localizationToUse.formatNumber, max, theme.palette.background.paper]); + }, [min, displayText, memoizedLocalization.formatNumber, max, theme.palette.background.paper]); const stoplist = useMemo(() => { return legend.steps.map((item) => ({ diff --git a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx index e15bfcfd..5b6390aa 100644 --- a/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx +++ b/frontend/src/components/Sidebar/MapComponents/HeatLegendEdit.tsx @@ -1,19 +1,21 @@ // SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR) // SPDX-License-Identifier: Apache-2.0 -import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react'; -import Box from '@mui/material/Box'; -import Button from '@mui/material/Button'; -import Dialog from '@mui/material/Dialog'; -import FormControl from '@mui/material/FormControl'; -import Grid from '@mui/material/Grid'; -import IconButton from '@mui/material/IconButton'; -import MenuItem from '@mui/material/MenuItem'; +import React, {useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react'; import Select, {SelectChangeEvent} from '@mui/material/Select'; -import Tooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; import EditIcon from '@mui/icons-material/Edit'; -import {useTheme} from '@mui/material'; +import { + useTheme, + Typography, + IconButton, + MenuItem, + FormControl, + Dialog, + Button, + Box, + Grid, + Tooltip, +} from '@mui/material'; import {HeatmapLegend} from 'types/heatmapLegend'; import {Localization} from 'types/localization'; import {useTranslation} from 'react-i18next'; @@ -54,16 +56,23 @@ export default function HeatLegendEdit({ setLegend, legend, selectedScenario = null, - localization = { - formatNumber: (value) => value.toLocaleString(), - customLang: 'global', - overrides: {}, - }, + localization, legendPresetsUrl = null, }: HeatLegendEditProps): JSX.Element { const theme = useTheme(); const {t: defaultT} = useTranslation(); - const {t: customT} = useTranslation(localization.customLang); + + const memoizedLocalization = useMemo(() => { + return ( + localization || { + formatNumber: (value) => value.toLocaleString(), + customLang: 'global', + overrides: {}, + } + ); + }, [localization]); + + const {t: customT} = useTranslation(memoizedLocalization.customLang); // This contains all legends using the default colors. const defaultLegends = useDefaultLegends(); @@ -153,8 +162,8 @@ export default function HeatLegendEdit({ <> setHeatLegendEditOpen(true)} aria-label={ - localization.overrides && localization.overrides['heatlegend.edit'] - ? customT(localization.overrides['heatlegend.edit']) + memoizedLocalization.overrides?.['heatlegend.edit'] + ? customT(memoizedLocalization.overrides['heatlegend.edit']) : defaultT('heatlegend.edit') } size='small' @@ -185,8 +194,8 @@ export default function HeatLegendEdit({