diff --git a/app/src/components/IndicatorData.vue b/app/src/components/IndicatorData.vue index 42a6ded2b1..a080094ef3 100644 --- a/app/src/components/IndicatorData.vue +++ b/app/src/components/IndicatorData.vue @@ -131,6 +131,7 @@ export default { 'AQA', 'AQB', 'AQC', 'AQ3', 'REP4_1', 'REP4_4', 'REP4_6', 'MOBI1', 'MOBI1_1', 'PRCTS', 'SMCTS', 'VITS', 'E12c', 'E12d', 'E13c', 'ADO', 'ADO_1', 'ADO_2', 'ADO_3', 'Lakes_SWT', 'CROPOMHU1', 'CROPOMHU2', 'CROPOMAT1', 'CROPOMAT2', 'CROPOMHUMR1', 'CROPOMHUMR2', 'CROPOMHUSC1', 'CROPOMHUSC2', 'CROPOMRO1', 'CROPOMRO2', + 'Water_Discharge_timeseries', // Year overlap comparison 'E13e', 'E13f', 'E13g', 'E13h', 'E13i', 'E13l', 'E13m', 'Modis_SNPP_2023', 'E10a2', 'E10a6', 'N3a2', 'N3a2_chl_esa', 'N3a2_chl_jaxa', 'N3a2_TSM_esa', 'N3a2_TSM_jaxa', 'REP4_2', 'REP1', 'REP1_1', 'REP1_2', @@ -1387,6 +1388,7 @@ export default { }); const conf = { data, + fill: false, label: indicator.yAxis, backgroundColor: colors, borderColor: colors, diff --git a/app/src/components/OLExportButton.vue b/app/src/components/OLExportButton.vue index 0125d33be0..877103a779 100644 --- a/app/src/components/OLExportButton.vue +++ b/app/src/components/OLExportButton.vue @@ -119,7 +119,9 @@ import { getUid } from 'ol/util'; import { toLonLat } from 'ol/proj'; import LayerGroup from 'ol/layer/Group'; import TileLayer from 'ol/layer/Tile'; +import WebGLTileLayer from 'ol/layer/WebGLTile'; import { TileWMS, WMTS, XYZ } from 'ol/source'; +import GeoTIFFSource from 'ol/source/GeoTIFF'; import VectorSource from 'ol/source/Vector'; import { GeoJSON, MVT, WKB } from 'ol/format'; import VectorLayer from 'ol/layer/Vector'; @@ -184,7 +186,7 @@ Text describing the current step of the tour and why it is interesting what the layerArray.map((l) => { if (l instanceof LayerGroup) { layers.push(this.extractLayerConfig(l.getLayersArray())); - } else if (l instanceof TileLayer || l instanceof VectorLayer) { + } else if (l instanceof TileLayer || l instanceof VectorLayer || l instanceof WebGLTileLayer) { const layerConfig = { type: 'Tile', properties: { @@ -194,6 +196,9 @@ Text describing the current step of the tour and why it is interesting what the if (l instanceof VectorLayer) { layerConfig.type = 'Vector'; } + if (l instanceof WebGLTileLayer) { + layerConfig.type = 'WebGLTile'; + } // Evaluate what other information we need to extract for different source types const olsource = l.getSource(); // only export visible layers @@ -212,16 +217,34 @@ Text describing the current step of the tour and why it is interesting what the if (olsource instanceof WMTS) { foundType = 'WMTS'; } + if (olsource instanceof GeoTIFFSource) { + foundType = 'GeoTIFF'; + } // Extract source config const source = { type: foundType, }; - if (['XYZ', 'TileWMS', 'WMTS'].includes(foundType)) { + if (['XYZ', 'TileWMS', 'WMTS', 'GeoTIFF'].includes(foundType)) { if ('url' in olsource) { source.url = olsource.url; } else if ('urls' in olsource) { source.urls = olsource.urls; } + if (foundType === 'GeoTIFF') { + // TODO: probably there should be a better way to access the style + if ('style_' in l) { + layerConfig.style = l.style_; + } + // TODO: getting sources should probably also be done more reliantly, not private + // variable and making sure other configs are considered e.g. normalization + const urls = []; + l.getSources().forEach((s) => { + urls.push({ url: s.sourceInfo_[0].url }); + }); + source.normalize = false; + source.sources = urls; + source.interpolate = false; + } } else if (foundType === 'Vector') { source.url = olsource.getUrl(); if (typeof source.url === 'undefined') { diff --git a/app/src/config/layers.js b/app/src/config/layers.js index 1bf5a222cc..8a08396fab 100644 --- a/app/src/config/layers.js +++ b/app/src/config/layers.js @@ -92,7 +92,7 @@ export const baseLayers = Object.freeze({ // }, geolandbasemap: { name: 'Geoland Basemap', - url: '//maps1.wien.gv.at/basemap/geolandbasemap/normal/google3857/{z}/{y}/{x}.png', + url: 'https://mapsneu.wien.gv.at/basemap/geolandbasemap/normal/google3857/{z}/{y}/{x}.png', attribution: '{ Datenquelle: basemap.at }', visible: false, maxNativeZoom: 18, @@ -100,7 +100,7 @@ export const baseLayers = Object.freeze({ }, bmapgelaende: { name: 'Geoland Basemap Gelände', - url: '//maps1.wien.gv.at/basemap/bmapgelaende/grau/google3857/{z}/{y}/{x}.jpeg', + url: 'https://mapsneu.wien.gv.at/basemap/bmapgelaende/grau/google3857/{z}/{y}/{x}.jpeg', attribution: '{ Datenquelle: basemap.at }', visible: false, maxNativeZoom: 18, @@ -108,7 +108,7 @@ export const baseLayers = Object.freeze({ }, bmaporthofoto30cm: { name: 'Geoland Basemap Orthofoto', - url: '//maps1.wien.gv.at/basemap/bmaporthofoto30cm/normal/google3857/{z}/{y}/{x}.jpeg', + url: 'https://mapsneu.wien.gv.at/basemap/bmaporthofoto30cm/normal/google3857/{z}/{y}/{x}.jpeg', attribution: '{ Datenquelle: basemap.at }', visible: false, maxNativeZoom: 18,