fix: NASA GIBS Imagery nutzt REST-URL statt KVP-Endpunkt
wmts.cgi mit times/clock funktionierte nicht -- Tiles wurden nicht geladen. Jetzt gleicher Ansatz wie nightlights.js: Datum direkt in REST-URL eingebaut. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -5,85 +5,81 @@
|
||||
const ImagerySwitch = {
|
||||
_viewer: null,
|
||||
_currentLayer: null,
|
||||
_currentId: "default",
|
||||
_currentId: 'default',
|
||||
|
||||
_sources: {
|
||||
"default": { name: "Cesium Ion (Standard)", url: null },
|
||||
"esri": {
|
||||
name: "Esri World Imagery",
|
||||
url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
|
||||
'default': { name: 'Cesium Ion (Standard)' },
|
||||
'esri': {
|
||||
name: 'Esri World Imagery',
|
||||
url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
|
||||
},
|
||||
"nasa-modis": {
|
||||
name: "NASA MODIS Terra (Heute)",
|
||||
wmts: {
|
||||
url: "https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi",
|
||||
layer: "MODIS_Terra_CorrectedReflectance_TrueColor",
|
||||
tileMatrixSetID: "250m",
|
||||
format: "image/jpeg",
|
||||
time: "today",
|
||||
'nasa-modis': {
|
||||
name: 'NASA MODIS Terra (Heute)',
|
||||
gibs: {
|
||||
layer: 'MODIS_Terra_CorrectedReflectance_TrueColor',
|
||||
tileMatrixSet: '250m',
|
||||
ext: 'jpg',
|
||||
time: 'today',
|
||||
maxLevel: 8,
|
||||
},
|
||||
},
|
||||
"nasa-viirs": {
|
||||
name: "NASA VIIRS SNPP (Heute)",
|
||||
wmts: {
|
||||
url: "https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi",
|
||||
layer: "VIIRS_SNPP_CorrectedReflectance_TrueColor",
|
||||
tileMatrixSetID: "250m",
|
||||
format: "image/jpeg",
|
||||
time: "today",
|
||||
'nasa-viirs': {
|
||||
name: 'NASA VIIRS SNPP (Heute)',
|
||||
gibs: {
|
||||
layer: 'VIIRS_SNPP_CorrectedReflectance_TrueColor',
|
||||
tileMatrixSet: '250m',
|
||||
ext: 'jpg',
|
||||
time: 'today',
|
||||
maxLevel: 8,
|
||||
},
|
||||
},
|
||||
"nasa-goes-east": {
|
||||
name: "NASA GOES East (Live)",
|
||||
wmts: {
|
||||
url: "https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi",
|
||||
layer: "GOES-East_ABI_GeoColor",
|
||||
tileMatrixSetID: "2km",
|
||||
format: "image/jpeg",
|
||||
time: null,
|
||||
'nasa-goes-east': {
|
||||
name: 'NASA GOES East (Live)',
|
||||
gibs: {
|
||||
layer: 'GOES-East_ABI_GeoColor',
|
||||
tileMatrixSet: '2km',
|
||||
ext: 'jpg',
|
||||
time: 'today',
|
||||
maxLevel: 5,
|
||||
},
|
||||
},
|
||||
"nasa-goes-west": {
|
||||
name: "NASA GOES West (Live)",
|
||||
wmts: {
|
||||
url: "https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi",
|
||||
layer: "GOES-West_ABI_GeoColor",
|
||||
tileMatrixSetID: "2km",
|
||||
format: "image/jpeg",
|
||||
time: null,
|
||||
'nasa-goes-west': {
|
||||
name: 'NASA GOES West (Live)',
|
||||
gibs: {
|
||||
layer: 'GOES-West_ABI_GeoColor',
|
||||
tileMatrixSet: '2km',
|
||||
ext: 'jpg',
|
||||
time: 'today',
|
||||
maxLevel: 5,
|
||||
},
|
||||
},
|
||||
"s2-2024": {
|
||||
name: "Sentinel-2 (2024)",
|
||||
url: "https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2024_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg",
|
||||
's2-2024': {
|
||||
name: 'Sentinel-2 (2024)',
|
||||
url: 'https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2024_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg',
|
||||
},
|
||||
"s2-2023": {
|
||||
name: "Sentinel-2 (2023)",
|
||||
url: "https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2023_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg",
|
||||
's2-2023': {
|
||||
name: 'Sentinel-2 (2023)',
|
||||
url: 'https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2023_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg',
|
||||
},
|
||||
"s2-2022": {
|
||||
name: "Sentinel-2 (2022)",
|
||||
url: "https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2022_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg",
|
||||
's2-2022': {
|
||||
name: 'Sentinel-2 (2022)',
|
||||
url: 'https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2022_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg',
|
||||
},
|
||||
"s2-2020": {
|
||||
name: "Sentinel-2 (2020)",
|
||||
url: "https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2020_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg",
|
||||
's2-2020': {
|
||||
name: 'Sentinel-2 (2020)',
|
||||
url: 'https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2020_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg',
|
||||
},
|
||||
"s2-2018": {
|
||||
name: "Sentinel-2 (2018)",
|
||||
url: "https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2018_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg",
|
||||
's2-2018': {
|
||||
name: 'Sentinel-2 (2018)',
|
||||
url: 'https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2018_3857/default/GoogleMapsCompatible/{z}/{x}/{y}.jpg',
|
||||
},
|
||||
"topo": {
|
||||
name: "OpenTopoMap",
|
||||
url: "https://tile.opentopomap.org/{z}/{x}/{y}.png",
|
||||
'topo': {
|
||||
name: 'OpenTopoMap',
|
||||
url: 'https://tile.opentopomap.org/{z}/{x}/{y}.png',
|
||||
},
|
||||
"osm": {
|
||||
name: "OpenStreetMap",
|
||||
url: "https://a.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
'osm': {
|
||||
name: 'OpenStreetMap',
|
||||
url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
},
|
||||
},
|
||||
|
||||
@@ -91,10 +87,29 @@ const ImagerySwitch = {
|
||||
this._viewer = viewer;
|
||||
},
|
||||
|
||||
_getGibsLabels(maxLevel) {
|
||||
_buildGibsProvider(g) {
|
||||
var today = new Date().toISOString().slice(0, 10);
|
||||
var time = (g.time === 'today') ? today : g.time;
|
||||
var labels = [];
|
||||
for (var i = 0; i <= maxLevel; i++) labels.push(String(i));
|
||||
return labels;
|
||||
for (var i = 0; i <= g.maxLevel; i++) labels.push(String(i));
|
||||
|
||||
// REST-URL (gleicher Ansatz wie nightlights.js -- bewaehrt)
|
||||
var restUrl = 'https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/'
|
||||
+ g.layer + '/default/' + time + '/' + g.tileMatrixSet
|
||||
+ '/{TileMatrix}/{TileRow}/{TileCol}.' + g.ext;
|
||||
|
||||
return new Cesium.WebMapTileServiceImageryProvider({
|
||||
url: restUrl,
|
||||
layer: g.layer,
|
||||
style: 'default',
|
||||
tileMatrixSetID: g.tileMatrixSet,
|
||||
tileMatrixLabels: labels,
|
||||
format: 'image/' + g.ext,
|
||||
tilingScheme: new Cesium.GeographicTilingScheme(),
|
||||
tileWidth: 512,
|
||||
tileHeight: 512,
|
||||
credit: 'NASA GIBS',
|
||||
});
|
||||
},
|
||||
|
||||
switchTo(id) {
|
||||
@@ -108,47 +123,18 @@ const ImagerySwitch = {
|
||||
this._currentLayer = null;
|
||||
}
|
||||
|
||||
if (id === "default") {
|
||||
if (id === 'default') {
|
||||
// Cesium Ion Default -- nichts hinzufuegen
|
||||
this._currentId = id;
|
||||
} else if (src.wmts) {
|
||||
// NASA GIBS WMTS Provider
|
||||
var w = src.wmts;
|
||||
var opts = {
|
||||
url: w.url,
|
||||
layer: w.layer,
|
||||
tileMatrixSetID: w.tileMatrixSetID,
|
||||
format: w.format,
|
||||
style: "default",
|
||||
tileWidth: 512,
|
||||
tileHeight: 512,
|
||||
tilingScheme: new Cesium.GeographicTilingScheme(),
|
||||
tileMatrixLabels: this._getGibsLabels(w.maxLevel),
|
||||
credit: "NASA GIBS",
|
||||
};
|
||||
if (w.time === "today") {
|
||||
opts.times = new Cesium.TimeIntervalCollection([
|
||||
new Cesium.TimeInterval({
|
||||
start: Cesium.JulianDate.fromIso8601(new Date().toISOString().slice(0, 10)),
|
||||
stop: Cesium.JulianDate.fromIso8601("9999-12-31"),
|
||||
}),
|
||||
]);
|
||||
opts.clock = this._viewer.clock;
|
||||
} else if (w.time) {
|
||||
opts.times = new Cesium.TimeIntervalCollection([
|
||||
new Cesium.TimeInterval({
|
||||
start: Cesium.JulianDate.fromIso8601(w.time),
|
||||
stop: Cesium.JulianDate.fromIso8601("9999-12-31"),
|
||||
}),
|
||||
]);
|
||||
opts.clock = this._viewer.clock;
|
||||
}
|
||||
} else if (src.gibs) {
|
||||
// NASA GIBS WMTS (REST-URL)
|
||||
this._currentLayer = this._viewer.imageryLayers.addImageryProvider(
|
||||
new Cesium.WebMapTileServiceImageryProvider(opts)
|
||||
this._buildGibsProvider(src.gibs)
|
||||
);
|
||||
this._viewer.imageryLayers.lower(this._currentLayer);
|
||||
this._currentId = id;
|
||||
} else {
|
||||
// URL Template Provider (Esri, Sentinel, OSM)
|
||||
} else if (src.url) {
|
||||
// URL Template (Esri, Sentinel, OSM)
|
||||
this._currentLayer = this._viewer.imageryLayers.addImageryProvider(
|
||||
new Cesium.UrlTemplateImageryProvider({
|
||||
url: src.url,
|
||||
@@ -160,10 +146,9 @@ const ImagerySwitch = {
|
||||
this._currentId = id;
|
||||
}
|
||||
|
||||
// Dropdown aktualisieren
|
||||
var sel = document.getElementById("imagery-select");
|
||||
var sel = document.getElementById('imagery-select');
|
||||
if (sel) sel.value = id;
|
||||
var label = document.getElementById("imagery-label");
|
||||
var label = document.getElementById('imagery-label');
|
||||
if (label) label.textContent = src.name;
|
||||
},
|
||||
};
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren