@opengeoweb/webmap-react 12.10.0 → 12.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/index.esm.js +3379 -858
  2. package/package.json +7 -4
  3. package/src/lib/components/LayerInfo/LayerInfoDialog.stories.d.ts +1 -1
  4. package/src/lib/components/Legend/Legend.stories.d.ts +1 -1
  5. package/src/lib/components/MapDimensionSelect/DimensionSelectDialog.stories.d.ts +1 -1
  6. package/src/lib/components/MapDimensionSelect/MapDimensionSelect.stories.d.ts +1 -1
  7. package/src/lib/components/MapDraw/storyComponents/storyUtils.d.ts +0 -1
  8. package/src/lib/components/MapDrawTool/MapDrawTool.stories.d.ts +1 -1
  9. package/src/lib/components/MapDrawTool/MapDrawToolMultipleDrawTools.stories.d.ts +1 -1
  10. package/src/lib/components/MapDrawTool/storyExamplesMapDrawToolMultipleDrawTools.d.ts +1 -1
  11. package/src/lib/components/MapDrawTool/utils.d.ts +2 -2
  12. package/src/lib/components/OpenLayers/OpenLayers.BaseLayer.stories.d.ts +1 -1
  13. package/src/lib/components/OpenLayers/OpenLayersMapView.Error.stories.d.ts +1 -1
  14. package/src/lib/components/OpenLayers/OpenLayersMapView.MapPin.stories.d.ts +1 -1
  15. package/src/lib/components/OpenLayers/OpenLayersMapView.Passive.stories.d.ts +1 -1
  16. package/src/lib/components/OpenLayers/OpenLayersMapView.RadarAnimation.stories.d.ts +1 -1
  17. package/src/lib/components/OpenLayers/OpenLayersMapView.RadarData.stories.d.ts +1 -1
  18. package/src/lib/components/OpenLayers/OpenLayersMapView.SetProjectionBBox.stories.d.ts +1 -1
  19. package/src/lib/components/OpenLayers/OpenLayersMapView.SetProjectionBBoxLocalState.stories.d.ts +1 -1
  20. package/src/lib/components/OpenLayers/OpenLayersMapView.ShiftToZoom.stories.d.ts +1 -1
  21. package/src/lib/components/OpenLayers/OpenLayersMapView.ShowLayerInfo.stories.d.ts +1 -1
  22. package/src/lib/components/OpenLayers/OpenLayersMapView.TiledBaseLayers.stories.d.ts +1 -1
  23. package/src/lib/components/OpenLayers/OpenLayersMapView.VFXData.stories.d.ts +1 -1
  24. package/src/lib/components/OpenLayers/context/MapContext.d.ts +0 -1
  25. package/src/lib/components/OpenLayers/context/TimeContext.d.ts +0 -1
  26. package/src/lib/components/OpenLayers/controls/OpenLayersGetFeatureInfo.d.ts +0 -1
  27. package/src/lib/components/OpenLayers/controls/OpenLayersZoomControl.d.ts +0 -1
  28. package/src/lib/components/OpenLayers/draw/OpenLayersMapDraw.stories.d.ts +1 -1
  29. package/src/lib/components/OpenLayers/layers/FeatureLayer.d.ts +0 -1
  30. package/src/lib/components/OpenLayers/layers/OpenLayersFeatureLayer.d.ts +1 -2
  31. package/src/lib/components/OpenLayers/layers/TiledWMSLayer.d.ts +0 -1
  32. package/src/lib/components/OpenLayers/layers/TimeAwareEDRLocationLayer.d.ts +6 -3
  33. package/src/lib/components/OpenLayers/layers/TimeawareImageSourceWMSLayer.d.ts +0 -1
  34. package/src/lib/components/OpenLayers/layers/WMSLayer.d.ts +0 -1
  35. package/src/lib/components/OpenLayers/layers/WMTSLayer.d.ts +0 -1
  36. package/src/lib/components/OpenLayers/layers/XYZLayer.d.ts +0 -1
  37. package/src/lib/components/OpenLayers/tools/ClickOnMapTool.d.ts +0 -1
  38. package/src/lib/components/OpenLayers/utils/ShowTimeAwareLayerInfo.d.ts +0 -1
  39. package/src/lib/components/OpenLayers/utils/constants.d.ts +2 -0
  40. package/src/lib/components/OpenLayers/utils/makeDimValuesToPrefetch.d.ts +9 -1
  41. package/src/lib/components/TanStackDemo/EDRLayerApi.stories.d.ts +2 -2
  42. package/src/lib/edr-layer-api/api.d.ts +4 -0
  43. package/src/lib/edr-layer-api/colormaps/colormaps.d.ts +6 -3
  44. package/src/lib/edr-layer-api/colormaps/edrOlLegendUtils.d.ts +2 -1
  45. package/src/lib/edr-layer-api/hooks.d.ts +6 -5
  46. package/src/lib/edr-layer-api/hooks.spec.d.ts +1 -0
  47. package/src/lib/edr-layer-api/index.d.ts +1 -0
  48. package/src/lib/edr-layer-api/utils/useGetEDRLayerInstance.d.ts +11 -0
  49. package/src/lib/edr-layer-api/utils/useGetEDRLayerInstance.spec.d.ts +1 -0
  50. package/src/lib/hooks/useHooksGetCapabilities.d.ts +1 -1
  51. package/src/lib/utils/i18n.d.ts +1 -1
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { WMImageStore, legendImageStore, WMImageEventType, webmapUtils, getLegendGraphicURLForLayer, WEBMAP_NAMESPACE, WMProj4Defs, privateWebMapUtils, WMLayer, LayerType, WMInvalidDateValues, getCorrectWMSDimName, tilesettings } from '@opengeoweb/webmap';
1
+ import { WMImageStore, legendImageStore, WMImageEventType, webmapUtils, getLegendGraphicURLForLayer, WEBMAP_NAMESPACE, WMProj4Defs, privateWebMapUtils, WMLayer, LayerType, WMInvalidDateValues, getCorrectWMSDimName, WMJSDimension, tilesettings } from '@opengeoweb/webmap';
2
2
  export { WEBMAP_NAMESPACE, webmapTranslations } from '@opengeoweb/webmap';
3
3
  import * as React from 'react';
4
4
  import React__default, { createContext, useRef, useState, useEffect, useCallback, useContext, useMemo, useLayoutEffect } from 'react';
@@ -37,11 +37,11 @@ import TileLayer from 'ol/layer/Tile';
37
37
  import { WMTS, XYZ, TileWMS } from 'ol/source';
38
38
  import WMTSCapabilities from 'ol/format/WMTSCapabilities';
39
39
  import { optionsFromCapabilities } from 'ol/source/WMTS';
40
- import { Vector } from 'ol/layer';
41
- import VectorSource from 'ol/source/Vector';
42
- import GeoJSON from 'ol/format/GeoJSON';
43
40
  import { Circle, Stroke, Fill, Style, Text, Icon as Icon$2 } from 'ol/style';
44
41
  import { http, HttpResponse } from 'msw';
42
+ import GeoJSON from 'ol/format/GeoJSON';
43
+ import { Vector } from 'ol/layer';
44
+ import VectorSource from 'ol/source/Vector';
45
45
  import VectorLayer from 'ol/layer/Vector';
46
46
  import { createBox } from 'ol/interaction/Draw';
47
47
  import Style$1 from 'ol/style/Style';
@@ -253,6 +253,9 @@ var webmapReactTranslations = {
253
253
  * */
254
254
  var TimeContext = /*#__PURE__*/createContext({});
255
255
 
256
+ function _OverloadYield(e, d) {
257
+ this.v = e, this.k = d;
258
+ }
256
259
  function _arrayLikeToArray(r, a) {
257
260
  (null == a || a > r.length) && (a = r.length);
258
261
  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
@@ -310,6 +313,54 @@ function _createClass(e, r, t) {
310
313
  writable: false
311
314
  }), e;
312
315
  }
316
+ function _createForOfIteratorHelper(r, e) {
317
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
318
+ if (!t) {
319
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
320
+ t && (r = t);
321
+ var n = 0,
322
+ F = function () {};
323
+ return {
324
+ s: F,
325
+ n: function () {
326
+ return n >= r.length ? {
327
+ done: true
328
+ } : {
329
+ done: false,
330
+ value: r[n++]
331
+ };
332
+ },
333
+ e: function (r) {
334
+ throw r;
335
+ },
336
+ f: F
337
+ };
338
+ }
339
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
340
+ }
341
+ var o,
342
+ a = true,
343
+ u = false;
344
+ return {
345
+ s: function () {
346
+ t = t.call(r);
347
+ },
348
+ n: function () {
349
+ var r = t.next();
350
+ return a = r.done, r;
351
+ },
352
+ e: function (r) {
353
+ u = true, o = r;
354
+ },
355
+ f: function () {
356
+ try {
357
+ a || null == t.return || t.return();
358
+ } finally {
359
+ if (u) throw o;
360
+ }
361
+ }
362
+ };
363
+ }
313
364
  function _defineProperty(e, r, t) {
314
365
  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
315
366
  value: t,
@@ -425,306 +476,180 @@ function _possibleConstructorReturn(t, e) {
425
476
  if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
426
477
  return _assertThisInitialized(t);
427
478
  }
428
- function _regeneratorRuntime() {
429
- _regeneratorRuntime = function () {
430
- return e;
431
- };
432
- var t,
433
- e = {},
434
- r = Object.prototype,
435
- n = r.hasOwnProperty,
436
- o = Object.defineProperty || function (t, e, r) {
437
- t[e] = r.value;
438
- },
439
- i = "function" == typeof Symbol ? Symbol : {},
440
- a = i.iterator || "@@iterator",
441
- c = i.asyncIterator || "@@asyncIterator",
442
- u = i.toStringTag || "@@toStringTag";
443
- function define(t, e, r) {
444
- return Object.defineProperty(t, e, {
445
- value: r,
446
- enumerable: true,
447
- configurable: true,
448
- writable: true
449
- }), t[e];
450
- }
451
- try {
452
- define({}, "");
453
- } catch (t) {
454
- define = function (t, e, r) {
455
- return t[e] = r;
456
- };
457
- }
458
- function wrap(t, e, r, n) {
459
- var i = e && e.prototype instanceof Generator ? e : Generator,
460
- a = Object.create(i.prototype),
461
- c = new Context(n || []);
462
- return o(a, "_invoke", {
463
- value: makeInvokeMethod(t, r, c)
464
- }), a;
465
- }
466
- function tryCatch(t, e, r) {
467
- try {
468
- return {
469
- type: "normal",
470
- arg: t.call(e, r)
471
- };
472
- } catch (t) {
473
- return {
474
- type: "throw",
475
- arg: t
479
+ function _regenerator() {
480
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
481
+ var e,
482
+ t,
483
+ r = "function" == typeof Symbol ? Symbol : {},
484
+ n = r.iterator || "@@iterator",
485
+ o = r.toStringTag || "@@toStringTag";
486
+ function i(r, n, o, i) {
487
+ var c = n && n.prototype instanceof Generator ? n : Generator,
488
+ u = Object.create(c.prototype);
489
+ return _regeneratorDefine(u, "_invoke", function (r, n, o) {
490
+ var i,
491
+ c,
492
+ u,
493
+ f = 0,
494
+ p = o || [],
495
+ y = false,
496
+ G = {
497
+ p: 0,
498
+ n: 0,
499
+ v: e,
500
+ a: d,
501
+ f: d.bind(e, 4),
502
+ d: function (t, r) {
503
+ return i = t, c = 0, u = e, G.n = r, a;
504
+ }
505
+ };
506
+ function d(r, n) {
507
+ for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
508
+ var o,
509
+ i = p[t],
510
+ d = G.p,
511
+ l = i[2];
512
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
513
+ }
514
+ if (o || r > 1) return a;
515
+ throw y = true, n;
516
+ }
517
+ return function (o, p, l) {
518
+ if (f > 1) throw TypeError("Generator is already running");
519
+ for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
520
+ i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
521
+ try {
522
+ if (f = 2, i) {
523
+ if (c || (o = "next"), t = i[o]) {
524
+ if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
525
+ if (!t.done) return t;
526
+ u = t.value, c < 2 && (c = 0);
527
+ } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
528
+ i = e;
529
+ } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
530
+ } catch (t) {
531
+ i = e, c = 1, u = t;
532
+ } finally {
533
+ f = 1;
534
+ }
535
+ }
536
+ return {
537
+ value: t,
538
+ done: y
539
+ };
476
540
  };
477
- }
541
+ }(r, o, i), true), u;
478
542
  }
479
- e.wrap = wrap;
480
- var h = "suspendedStart",
481
- l = "suspendedYield",
482
- f = "executing",
483
- s = "completed",
484
- y = {};
543
+ var a = {};
485
544
  function Generator() {}
486
545
  function GeneratorFunction() {}
487
546
  function GeneratorFunctionPrototype() {}
488
- var p = {};
489
- define(p, a, function () {
547
+ t = Object.getPrototypeOf;
548
+ var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
549
+ return this;
550
+ }), t),
551
+ u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
552
+ function f(e) {
553
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
554
+ }
555
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
490
556
  return this;
557
+ }), _regeneratorDefine(u, "toString", function () {
558
+ return "[object Generator]";
559
+ }), (_regenerator = function () {
560
+ return {
561
+ w: i,
562
+ m: f
563
+ };
564
+ })();
565
+ }
566
+ function _regeneratorAsync(n, e, r, t, o) {
567
+ var a = _regeneratorAsyncGen(n, e, r, t, o);
568
+ return a.next().then(function (n) {
569
+ return n.done ? n.value : a.next();
491
570
  });
492
- var d = Object.getPrototypeOf,
493
- v = d && d(d(values([])));
494
- v && v !== r && n.call(v, a) && (p = v);
495
- var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
496
- function defineIteratorMethods(t) {
497
- ["next", "throw", "return"].forEach(function (e) {
498
- define(t, e, function (t) {
499
- return this._invoke(e, t);
571
+ }
572
+ function _regeneratorAsyncGen(r, e, t, o, n) {
573
+ return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise);
574
+ }
575
+ function _regeneratorAsyncIterator(t, e) {
576
+ function n(r, o, i, f) {
577
+ try {
578
+ var c = t[r](o),
579
+ u = c.value;
580
+ return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) {
581
+ n("next", t, i, f);
582
+ }, function (t) {
583
+ n("throw", t, i, f);
584
+ }) : e.resolve(u).then(function (t) {
585
+ c.value = t, i(c);
586
+ }, function (t) {
587
+ return n("throw", t, i, f);
500
588
  });
501
- });
589
+ } catch (t) {
590
+ f(t);
591
+ }
592
+ }
593
+ var r;
594
+ this.next || (_regeneratorDefine(_regeneratorAsyncIterator.prototype), _regeneratorDefine(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
595
+ return this;
596
+ })), _regeneratorDefine(this, "_invoke", function (t, o, i) {
597
+ function f() {
598
+ return new e(function (e, r) {
599
+ n(t, i, e, r);
600
+ });
601
+ }
602
+ return r = r ? r.then(f, f) : f();
603
+ }, true);
604
+ }
605
+ function _regeneratorDefine(e, r, n, t) {
606
+ var i = Object.defineProperty;
607
+ try {
608
+ i({}, "", {});
609
+ } catch (e) {
610
+ i = 0;
502
611
  }
503
- function AsyncIterator(t, e) {
504
- function invoke(r, o, i, a) {
505
- var c = tryCatch(t[r], t, o);
506
- if ("throw" !== c.type) {
507
- var u = c.arg,
508
- h = u.value;
509
- return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
510
- invoke("next", t, i, a);
511
- }, function (t) {
512
- invoke("throw", t, i, a);
513
- }) : e.resolve(h).then(function (t) {
514
- u.value = t, i(u);
515
- }, function (t) {
516
- return invoke("throw", t, i, a);
612
+ _regeneratorDefine = function (e, r, n, t) {
613
+ if (r) i ? i(e, r, {
614
+ value: n,
615
+ enumerable: !t,
616
+ configurable: !t,
617
+ writable: !t
618
+ }) : e[r] = n;else {
619
+ function o(r, n) {
620
+ _regeneratorDefine(e, r, function (e) {
621
+ return this._invoke(r, n, e);
517
622
  });
518
623
  }
519
- a(c.arg);
520
- }
521
- var r;
522
- o(this, "_invoke", {
523
- value: function (t, n) {
524
- function callInvokeWithMethodAndArg() {
525
- return new e(function (e, r) {
526
- invoke(t, n, e, r);
527
- });
528
- }
529
- return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
530
- }
531
- });
532
- }
533
- function makeInvokeMethod(e, r, n) {
534
- var o = h;
535
- return function (i, a) {
536
- if (o === f) throw Error("Generator is already running");
537
- if (o === s) {
538
- if ("throw" === i) throw a;
539
- return {
540
- value: t,
541
- done: true
624
+ o("next", 0), o("throw", 1), o("return", 2);
625
+ }
626
+ }, _regeneratorDefine(e, r, n, t);
627
+ }
628
+ function _regeneratorKeys(e) {
629
+ var n = Object(e),
630
+ r = [];
631
+ for (var t in n) r.unshift(t);
632
+ return function e() {
633
+ for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = false, e;
634
+ return e.done = true, e;
635
+ };
636
+ }
637
+ function _regeneratorValues(e) {
638
+ if (null != e) {
639
+ var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
640
+ r = 0;
641
+ if (t) return t.call(e);
642
+ if ("function" == typeof e.next) return e;
643
+ if (!isNaN(e.length)) return {
644
+ next: function () {
645
+ return e && r >= e.length && (e = void 0), {
646
+ value: e && e[r++],
647
+ done: !e
542
648
  };
543
649
  }
544
- for (n.method = i, n.arg = a;;) {
545
- var c = n.delegate;
546
- if (c) {
547
- var u = maybeInvokeDelegate(c, n);
548
- if (u) {
549
- if (u === y) continue;
550
- return u;
551
- }
552
- }
553
- if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
554
- if (o === h) throw o = s, n.arg;
555
- n.dispatchException(n.arg);
556
- } else "return" === n.method && n.abrupt("return", n.arg);
557
- o = f;
558
- var p = tryCatch(e, r, n);
559
- if ("normal" === p.type) {
560
- if (o = n.done ? s : l, p.arg === y) continue;
561
- return {
562
- value: p.arg,
563
- done: n.done
564
- };
565
- }
566
- "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
567
- }
568
- };
569
- }
570
- function maybeInvokeDelegate(e, r) {
571
- var n = r.method,
572
- o = e.iterator[n];
573
- if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
574
- var i = tryCatch(o, e.iterator, r.arg);
575
- if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
576
- var a = i.arg;
577
- return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
578
- }
579
- function pushTryEntry(t) {
580
- var e = {
581
- tryLoc: t[0]
582
650
  };
583
- 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
584
- }
585
- function resetTryEntry(t) {
586
- var e = t.completion || {};
587
- e.type = "normal", delete e.arg, t.completion = e;
588
- }
589
- function Context(t) {
590
- this.tryEntries = [{
591
- tryLoc: "root"
592
- }], t.forEach(pushTryEntry, this), this.reset(true);
593
- }
594
- function values(e) {
595
- if (e || "" === e) {
596
- var r = e[a];
597
- if (r) return r.call(e);
598
- if ("function" == typeof e.next) return e;
599
- if (!isNaN(e.length)) {
600
- var o = -1,
601
- i = function next() {
602
- for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = false, next;
603
- return next.value = t, next.done = true, next;
604
- };
605
- return i.next = i;
606
- }
607
- }
608
- throw new TypeError(typeof e + " is not iterable");
609
651
  }
610
- return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
611
- value: GeneratorFunctionPrototype,
612
- configurable: true
613
- }), o(GeneratorFunctionPrototype, "constructor", {
614
- value: GeneratorFunction,
615
- configurable: true
616
- }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
617
- var e = "function" == typeof t && t.constructor;
618
- return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
619
- }, e.mark = function (t) {
620
- return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
621
- }, e.awrap = function (t) {
622
- return {
623
- __await: t
624
- };
625
- }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
626
- return this;
627
- }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
628
- void 0 === i && (i = Promise);
629
- var a = new AsyncIterator(wrap(t, r, n, o), i);
630
- return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
631
- return t.done ? t.value : a.next();
632
- });
633
- }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
634
- return this;
635
- }), define(g, "toString", function () {
636
- return "[object Generator]";
637
- }), e.keys = function (t) {
638
- var e = Object(t),
639
- r = [];
640
- for (var n in e) r.push(n);
641
- return r.reverse(), function next() {
642
- for (; r.length;) {
643
- var t = r.pop();
644
- if (t in e) return next.value = t, next.done = false, next;
645
- }
646
- return next.done = true, next;
647
- };
648
- }, e.values = values, Context.prototype = {
649
- constructor: Context,
650
- reset: function (e) {
651
- if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = false, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
652
- },
653
- stop: function () {
654
- this.done = true;
655
- var t = this.tryEntries[0].completion;
656
- if ("throw" === t.type) throw t.arg;
657
- return this.rval;
658
- },
659
- dispatchException: function (e) {
660
- if (this.done) throw e;
661
- var r = this;
662
- function handle(n, o) {
663
- return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
664
- }
665
- for (var o = this.tryEntries.length - 1; o >= 0; --o) {
666
- var i = this.tryEntries[o],
667
- a = i.completion;
668
- if ("root" === i.tryLoc) return handle("end");
669
- if (i.tryLoc <= this.prev) {
670
- var c = n.call(i, "catchLoc"),
671
- u = n.call(i, "finallyLoc");
672
- if (c && u) {
673
- if (this.prev < i.catchLoc) return handle(i.catchLoc, true);
674
- if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
675
- } else if (c) {
676
- if (this.prev < i.catchLoc) return handle(i.catchLoc, true);
677
- } else {
678
- if (!u) throw Error("try statement without catch or finally");
679
- if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
680
- }
681
- }
682
- }
683
- },
684
- abrupt: function (t, e) {
685
- for (var r = this.tryEntries.length - 1; r >= 0; --r) {
686
- var o = this.tryEntries[r];
687
- if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
688
- var i = o;
689
- break;
690
- }
691
- }
692
- i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
693
- var a = i ? i.completion : {};
694
- return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
695
- },
696
- complete: function (t, e) {
697
- if ("throw" === t.type) throw t.arg;
698
- return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
699
- },
700
- finish: function (t) {
701
- for (var e = this.tryEntries.length - 1; e >= 0; --e) {
702
- var r = this.tryEntries[e];
703
- if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
704
- }
705
- },
706
- catch: function (t) {
707
- for (var e = this.tryEntries.length - 1; e >= 0; --e) {
708
- var r = this.tryEntries[e];
709
- if (r.tryLoc === t) {
710
- var n = r.completion;
711
- if ("throw" === n.type) {
712
- var o = n.arg;
713
- resetTryEntry(r);
714
- }
715
- return o;
716
- }
717
- }
718
- throw Error("illegal catch attempt");
719
- },
720
- delegateYield: function (e, r, n) {
721
- return this.delegate = {
722
- iterator: values(e),
723
- resultName: r,
724
- nextLoc: n
725
- }, "next" === this.method && (this.arg = t), y;
726
- }
727
- }, e;
652
+ throw new TypeError(typeof e + " is not iterable");
728
653
  }
729
654
  function _setPrototypeOf(t, e) {
730
655
  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
@@ -767,6 +692,74 @@ function _unsupportedIterableToArray(r, a) {
767
692
  return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
768
693
  }
769
694
  }
695
+ function _regeneratorRuntime() {
696
+
697
+ var r = _regenerator(),
698
+ e = r.m(_regeneratorRuntime),
699
+ t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
700
+ function n(r) {
701
+ var e = "function" == typeof r && r.constructor;
702
+ return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
703
+ }
704
+ var o = {
705
+ throw: 1,
706
+ return: 2,
707
+ break: 3,
708
+ continue: 3
709
+ };
710
+ function a(r) {
711
+ var e, t;
712
+ return function (n) {
713
+ e || (e = {
714
+ stop: function () {
715
+ return t(n.a, 2);
716
+ },
717
+ catch: function () {
718
+ return n.v;
719
+ },
720
+ abrupt: function (r, e) {
721
+ return t(n.a, o[r], e);
722
+ },
723
+ delegateYield: function (r, o, a) {
724
+ return e.resultName = o, t(n.d, _regeneratorValues(r), a);
725
+ },
726
+ finish: function (r) {
727
+ return t(n.f, r);
728
+ }
729
+ }, t = function (r, t, o) {
730
+ n.p = e.prev, n.n = e.next;
731
+ try {
732
+ return r(t, o);
733
+ } finally {
734
+ e.next = n.n;
735
+ }
736
+ }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
737
+ try {
738
+ return r.call(this, e);
739
+ } finally {
740
+ n.p = e.prev, n.n = e.next;
741
+ }
742
+ };
743
+ }
744
+ return (_regeneratorRuntime = function () {
745
+ return {
746
+ wrap: function (e, t, n, o) {
747
+ return r.w(a(e), t, n, o && o.reverse());
748
+ },
749
+ isGeneratorFunction: n,
750
+ mark: r.m,
751
+ awrap: function (r, e) {
752
+ return new _OverloadYield(r, e);
753
+ },
754
+ AsyncIterator: _regeneratorAsyncIterator,
755
+ async: function (r, e, t, o, u) {
756
+ return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u);
757
+ },
758
+ keys: _regeneratorKeys,
759
+ values: _regeneratorValues
760
+ };
761
+ })();
762
+ }
770
763
 
771
764
  var WorkerQueue = /*#__PURE__*/function () {
772
765
  function WorkerQueue(concurrency) {
@@ -859,6 +852,10 @@ var NUMBER_PREFETCH_WORKERS = 4;
859
852
  var NUM_IMAGES_TO_CACHE = 10000;
860
853
  var WMS_EXTENT_RATIO_TO_VIEWPORT = 1.2;
861
854
  var TIMEAWAREIMAGEWRAPPER_IMAGEDIDNOTLOADSUCCESFULLY = 'Image did not load succesfully';
855
+ // // To debug what dimensions are actually being used in the map, use:
856
+ // export const ADD_SHOW_DIMS_OPTION = true;
857
+ // export const WMS_EXTENT_RATIO_TO_VIEWPORT = 1.0;
858
+ // export const ENABLE_PREFETCH = false;
862
859
 
863
860
  var openLayersGetMapImageStore = new WMImageStore(NUM_IMAGES_TO_CACHE, {
864
861
  id: 'ol'
@@ -2340,9 +2337,9 @@ var useGeoJSON = function useGeoJSON() {
2340
2337
  drawMode = _useState8[0],
2341
2338
  setDrawMode = _useState8[1];
2342
2339
  var _useState9 = useState(0),
2343
- _useState10 = _slicedToArray(_useState9, 2),
2344
- currentFeatureNrToEdit = _useState10[0],
2345
- setCurrentFeatureNrToEdit = _useState10[1];
2340
+ _useState0 = _slicedToArray(_useState9, 2),
2341
+ currentFeatureNrToEdit = _useState0[0],
2342
+ setCurrentFeatureNrToEdit = _useState0[1];
2346
2343
  var changeDrawMode = function changeDrawMode(selectedKey) {
2347
2344
  setDrawMode(selectedKey);
2348
2345
  if (selectedKey === 'POLYGON') {
@@ -2955,21 +2952,21 @@ var useMapDrawTool = function useMapDrawTool(_ref) {
2955
2952
  drawModes = _React$useState8[0],
2956
2953
  setDrawModes = _React$useState8[1];
2957
2954
  var _React$useState9 = React__default.useState(''),
2958
- _React$useState10 = _slicedToArray(_React$useState9, 2),
2959
- activeTool = _React$useState10[0],
2960
- setActiveTool = _React$useState10[1];
2961
- var _React$useState11 = React__default.useState(''),
2955
+ _React$useState0 = _slicedToArray(_React$useState9, 2),
2956
+ activeTool = _React$useState0[0],
2957
+ setActiveTool = _React$useState0[1];
2958
+ var _React$useState1 = React__default.useState(''),
2959
+ _React$useState10 = _slicedToArray(_React$useState1, 2),
2960
+ drawMode = _React$useState10[0],
2961
+ setDrawMode = _React$useState10[1];
2962
+ var _React$useState11 = React__default.useState(false),
2962
2963
  _React$useState12 = _slicedToArray(_React$useState11, 2),
2963
- drawMode = _React$useState12[0],
2964
- setDrawMode = _React$useState12[1];
2965
- var _React$useState13 = React__default.useState(false),
2964
+ isInEditMode = _React$useState12[0],
2965
+ setEditMode = _React$useState12[1];
2966
+ var _React$useState13 = React__default.useState(0),
2966
2967
  _React$useState14 = _slicedToArray(_React$useState13, 2),
2967
- isInEditMode = _React$useState14[0],
2968
- setEditMode = _React$useState14[1];
2969
- var _React$useState15 = React__default.useState(0),
2970
- _React$useState16 = _slicedToArray(_React$useState15, 2),
2971
- featureLayerIndex = _React$useState16[0],
2972
- setFeatureLayerIndex = _React$useState16[1];
2968
+ featureLayerIndex = _React$useState14[0],
2969
+ setFeatureLayerIndex = _React$useState14[1];
2973
2970
  var changeProperties = function changeProperties(styleProperties) {
2974
2971
  // update all modes with new properties
2975
2972
  var newModes = drawModes.map(function (mode) {
@@ -4378,15 +4375,19 @@ var MapMousePosition = function MapMousePosition() {
4378
4375
  sx: {
4379
4376
  zIndex: 10,
4380
4377
  justifySelf: 'center',
4381
- bottom: '32px',
4382
- left: '2px',
4378
+ bottom: '36px',
4379
+ left: '6px',
4383
4380
  position: 'absolute'
4384
4381
  },
4385
4382
  children: jsxs(Typography, {
4386
4383
  "data-testid": "map-mouse-position-typography",
4387
4384
  sx: {
4388
4385
  fontSize: 9,
4389
- textShadow: '1px 1px 2px #ffffffE6, -1px 1px 2px #ffffffE6, -1px -1px 2px #ffffffE6, 1px -1px 2px #ffffffE6'
4386
+ color: '#051039',
4387
+ backgroundColor: 'rgba(236, 237, 238, 0.7)',
4388
+ borderRadius: 1,
4389
+ px: 0.5,
4390
+ py: 0.25
4390
4391
  },
4391
4392
  children: [mousePosition === null || mousePosition === void 0 ? void 0 : mousePosition.projection, ": ", mousePosition === null || mousePosition === void 0 ? void 0 : mousePosition.mousePosition, jsx("br", {}), "lonlat: ".concat(mousePosition === null || mousePosition === void 0 ? void 0 : mousePosition.mousePositionLatLon)]
4392
4393
  })
@@ -4827,9 +4828,9 @@ var useGetWMSLayerStyleList = function useGetWMSLayerStyleList(serviceUrl, name)
4827
4828
  */
4828
4829
  var useGetWMLayerInstance = function useGetWMLayerInstance(serviceUrl, name, id, onLayerError) {
4829
4830
  var _React$useState9 = React__default.useState(null),
4830
- _React$useState10 = _slicedToArray(_React$useState9, 2),
4831
- layer = _React$useState10[0],
4832
- setLayer = _React$useState10[1];
4831
+ _React$useState0 = _slicedToArray(_React$useState9, 2),
4832
+ layer = _React$useState0[0],
4833
+ setLayer = _React$useState0[1];
4833
4834
  var refId = useRef(undefined);
4834
4835
  React__default.useEffect(function () {
4835
4836
  var layerId = refId.current || id || webmapUtils.generateLayerId();
@@ -4862,7 +4863,7 @@ var useGetWMLayerInstance = function useGetWMLayerInstance(serviceUrl, name, id,
4862
4863
  /**
4863
4864
  * Used for querying WMTS GetCapabilities documents
4864
4865
  * @param serviceUrl
4865
- * @returns {UseQueryResult<string>}
4866
+ * @returns
4866
4867
  */
4867
4868
  var useQueryWMTSGetCapabilities = function useQueryWMTSGetCapabilities(serviceUrl) {
4868
4869
  var uriKey = new URLSearchParams(serviceUrl).toString();
@@ -4918,21 +4919,54 @@ var makeDimValuesToPrefetch = function makeDimValuesToPrefetch(wmTimeDim, stepsT
4918
4919
  }
4919
4920
  return [];
4920
4921
  };
4922
+ /**
4923
+ * We use the WMLayer dimension logic to obtain the dimension value to use in the WMS GetMap request. The input is the dimensions array which is typically the properties set for the layer component.
4924
+ * The input time is descretized to the closest value which is available in the WMS layer.
4925
+ *
4926
+ * @param dimensions Array of dimension key/values to use as input
4927
+ * @param wmLayer The layer for which we would like to do the request
4928
+ * @returns A map which returns a key/value to use
4929
+ */
4921
4930
  var getDimensionParamsForWMS = function getDimensionParamsForWMS(dimensions, wmLayer) {
4922
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4931
+ // Check if pre-requisites are OK. Possibly still fetching WMS GetCapabilities.
4932
+ if (!dimensions || !(wmLayer !== null && wmLayer !== void 0 && wmLayer.isConfigured)) {
4933
+ return undefined;
4934
+ }
4923
4935
  var dimProps = {};
4924
- dimensions === null || dimensions === void 0 || dimensions.forEach(function (dimension) {
4925
- var _wmLayer$getDimension;
4926
- if (!dimension.name) {
4927
- return;
4928
- }
4929
- // Take the closest WMLayer dimension value, if not available just use the already existing value
4930
- var closestValue = (wmLayer === null || wmLayer === void 0 || (_wmLayer$getDimension = wmLayer.getDimension(dimension.name)) === null || _wmLayer$getDimension === void 0 ? void 0 : _wmLayer$getDimension.getClosestValue(dimension.currentValue)) || dimension.currentValue;
4931
- if (!WMInvalidDateValues.has(closestValue)) {
4932
- dimProps[getCorrectWMSDimName(dimension.name)] = closestValue;
4936
+ if ((dimensions === null || dimensions === void 0 ? void 0 : dimensions.length) === 0 && (wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.dimensions.length) === 0 && (wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.isConfigured) === true) {
4937
+ // It is possible that a layer has no dimensions. In that case return a map without any key values.
4938
+ return dimProps;
4939
+ }
4940
+ // Loop without forEach so we can exit and return.
4941
+ var _iterator = _createForOfIteratorHelper(dimensions),
4942
+ _step;
4943
+ try {
4944
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
4945
+ var dimension = _step.value;
4946
+ var wmLayerDimension = dimension.name && (wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.getDimension(dimension === null || dimension === void 0 ? void 0 : dimension.name));
4947
+ if (!wmLayerDimension) {
4948
+ return undefined;
4949
+ }
4950
+ // Take the closest WMLayer dimension value
4951
+ var closestValue = wmLayerDimension.getClosestValue(dimension.currentValue);
4952
+ if (!WMInvalidDateValues.has(closestValue)) {
4953
+ wmLayerDimension.setValue(closestValue);
4954
+ dimProps[getCorrectWMSDimName(dimension.name)] = closestValue;
4955
+ } else {
4956
+ // The dimension name does not occur in the layer, or the requested value is not in the range of the dimension
4957
+ return undefined;
4958
+ }
4933
4959
  }
4934
- });
4935
- return dimProps;
4960
+ // Check if all dims where used which occur in the WMLayer
4961
+ } catch (err) {
4962
+ _iterator.e(err);
4963
+ } finally {
4964
+ _iterator.f();
4965
+ }
4966
+ return wmLayer !== null && wmLayer !== void 0 && wmLayer.dimensions.every(function (wmLayerDim) {
4967
+ var wmsName = getCorrectWMSDimName(wmLayerDim.name);
4968
+ return wmsName in dimProps;
4969
+ }) ? dimProps : undefined;
4936
4970
  };
4937
4971
  /**
4938
4972
  * Calculates number of timesteps for given timespan
@@ -5106,16 +5140,14 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5106
5140
  // get a wmLayer instance
5107
5141
  var wmLayer = useGetWMLayerInstance(getCapsURL, layerName, layerId, onLayerError);
5108
5142
  // dimensionsValues is a key/value dictionary with dimension names specifically for WMS GetMap requests
5109
- var dimensionsValues = useMemo(function () {
5110
- return getDimensionParamsForWMS(dimensions, wmLayer);
5111
- }, [dimensions, wmLayer]);
5143
+ var dimensionsValues = getDimensionParamsForWMS(dimensions, wmLayer);
5112
5144
  // This string can be used safely in a useEffect or other React hook to check if the contents changed
5113
- var dimensionsValuesEffectCheck = Object.entries(dimensionsValues).map(function (dimensionNameAndCurrentValue) {
5145
+ var dimensionsValuesEffectCheck = dimensionsValues && Object.entries(dimensionsValues).map(function (dimensionNameAndCurrentValue) {
5114
5146
  return "".concat(dimensionNameAndCurrentValue[0], ":").concat(dimensionNameAndCurrentValue[1]);
5115
5147
  }).join(',');
5116
- // Make a TimeawareImageSource and add it to the map, add and remove should only be done when the map, layer id or visibility changes
5148
+ // Make a TimeawareImageSource and add it to the map, add and remove should only be done when the map changes, layer id changes, visibility changes or dimensionsValues get defined.
5117
5149
  useEffect(function () {
5118
- if (!map || !wmLayer || visible === false) {
5150
+ if (!map || !wmLayer || visible === false || !dimensionsValues) {
5119
5151
  return function () {};
5120
5152
  }
5121
5153
  // When this component mounts, an ImageLayer is added to the map. Once it unmounts, this layer is removed from the map.
@@ -5138,16 +5170,16 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5138
5170
  map.removeLayer(olLayer);
5139
5171
  olLayer.dispose();
5140
5172
  };
5141
- // The dependency list should only contain the map and wmLayer. Other prop changes are handled by other effects.
5173
+ // The dependency list should only contain the map, wmLayer, visible and dimensionValues. Other prop changes are handled by other effects.
5142
5174
  // eslint-disable-next-line react-hooks/exhaustive-deps
5143
- }, [map, wmLayer, visible]);
5175
+ }, [map, wmLayer, visible, dimensionsValues === undefined]);
5144
5176
  useEffect(function () {
5145
5177
  onLayerReady && wmLayer && layerId && onLayerReady(layerId);
5146
5178
  }, [layerId, wmLayer, onLayerReady]);
5147
5179
  // Initialize layer for GeoWeb, call onInitializeLayer
5148
5180
  useEffect(function () {
5149
5181
  var initializeLayer = /*#__PURE__*/function () {
5150
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5182
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5151
5183
  var _wmLayer$dimensions, _wmLayer$dimensions2, wmTimeDim, layerPropsTimeDim, timeValueToInitialize, refTimeDim, layerPropsRefTimeDim, refTimeToFind, firstRefTime;
5152
5184
  return _regeneratorRuntime().wrap(function _callee$(_context) {
5153
5185
  while (1) switch (_context.prev = _context.next) {
@@ -5245,15 +5277,9 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5245
5277
  // Layer dim values useEffect,
5246
5278
  useEffect(function () {
5247
5279
  var _layer$getSource3;
5248
- layer === null || layer === void 0 || (_layer$getSource3 = layer.getSource()) === null || _layer$getSource3 === void 0 || _layer$getSource3.setDimProps(dimensionsValues);
5249
- dimensions === null || dimensions === void 0 || dimensions.forEach(function (dim) {
5250
- if (dim.name && dim.currentValue) {
5251
- var layerDim = wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.getDimension(dim.name);
5252
- layerDim === null || layerDim === void 0 || layerDim.setClosestValue(dim.currentValue);
5253
- }
5254
- });
5280
+ dimensionsValues && (layer === null || layer === void 0 || (_layer$getSource3 = layer.getSource()) === null || _layer$getSource3 === void 0 ? void 0 : _layer$getSource3.setDimProps(dimensionsValues));
5255
5281
  // eslint-disable-next-line react-hooks/exhaustive-deps
5256
- }, [layer, dimensionsValuesEffectCheck, wmLayer]);
5282
+ }, [layer, dimensionsValuesEffectCheck]);
5257
5283
  // Prefetch useEffect
5258
5284
  useEffect(function () {
5259
5285
  var _wmLayer$dimensions3;
@@ -5666,7 +5692,7 @@ var useAnimationForLayer = function useAnimationForLayer(layerProps, intervalInM
5666
5692
  useEffect(function () {
5667
5693
  calculateTimeSpan();
5668
5694
  }, [calculateTimeSpan, wmLayer]);
5669
- var refetchLayer = React__default.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5695
+ var refetchLayer = React__default.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5670
5696
  return _regeneratorRuntime().wrap(function _callee$(_context) {
5671
5697
  while (1) switch (_context.prev = _context.next) {
5672
5698
  case 0:
@@ -6357,296 +6383,105 @@ var publicLayers = /*#__PURE__*/Object.freeze({
6357
6383
  veiligheidsRegiosGebiedsIndelingenLabels: veiligheidsRegiosGebiedsIndelingenLabels
6358
6384
  });
6359
6385
 
6360
- var OpenLayersLayer = function OpenLayersLayer(layerProps) {
6361
- var id = layerProps.id,
6362
- service = layerProps.service,
6363
- enabled = layerProps.enabled,
6364
- name = layerProps.name,
6365
- style = layerProps.style,
6366
- dimensions = layerProps.dimensions,
6367
- opacity = layerProps.opacity,
6368
- zIndex = layerProps.zIndex,
6369
- onInitializeLayer = layerProps.onInitializeLayer,
6370
- onLayerReady = layerProps.onLayerReady,
6371
- onLayerError = layerProps.onLayerError,
6372
- debugMode = layerProps.debugMode,
6373
- layerType = layerProps.layerType,
6374
- _layerProps$tileServe = layerProps.tileServerSettings,
6375
- tileServerSettings = _layerProps$tileServe === void 0 ? tilesettings : _layerProps$tileServe;
6376
- var isBaseLayer = layerType === LayerType.baseLayer;
6377
- var isOverlay = layerType === LayerType.overLayer;
6378
- var layerOptions = useMemo(function () {
6379
- return {
6380
- opacity: opacity !== null && opacity !== undefined ? opacity : 1,
6381
- zIndex: zIndex || 0
6382
- };
6383
- }, [opacity, zIndex]);
6384
- var _useContext = useContext(MapContext),
6385
- map = _useContext.map;
6386
- // Check standard maplayers
6387
- if (!isOverlay && !isBaseLayer) {
6388
- return jsx(TimeawareImageSourceWMSLayer, {
6389
- getCapsURL: service,
6390
- layerName: name,
6391
- layerOptions: layerOptions,
6392
- layerId: id,
6393
- dimensions: dimensions,
6394
- visible: !!(enabled !== false),
6395
- styleName: style,
6396
- onInitializeLayer: onInitializeLayer,
6397
- onLayerReady: onLayerReady,
6398
- onLayerError: onLayerError,
6399
- debugMode: debugMode
6400
- });
6401
- }
6402
- // Check the other layers
6403
- if (isBaseLayer || isOverlay) {
6404
- var type = layerProps.type,
6405
- _name = layerProps.name,
6406
- _service = layerProps.service,
6407
- tileServer = layerProps.tileServer;
6408
- if (type === 'twms' && _name) {
6409
- var _map$getView;
6410
- var tileSettingByName = tileServerSettings[_name] || tileServer && tileServer[_name];
6411
- if (!tileSettingByName) {
6412
- console.warn("Tilesetting with name ".concat(_name, " not found in "), tileServerSettings, tileServer);
6413
- }
6414
- var projectionName = map === null || map === void 0 || (_map$getView = map.getView()) === null || _map$getView === void 0 || (_map$getView = _map$getView.getProjection()) === null || _map$getView === void 0 ? void 0 : _map$getView.getCode();
6415
- var projectionUsedFromTileServer = tileSettingByName[projectionName] ? projectionName : 'EPSG:3857';
6416
- var tileSettingForCRS = tileSettingByName && projectionName && tileSettingByName[projectionUsedFromTileServer];
6417
- if (tileSettingForCRS) {
6418
- var home = tileSettingForCRS.home,
6419
- tileServerType = tileSettingForCRS.tileServerType,
6420
- urlTemplateOverride = tileSettingForCRS.urlTemplate;
6421
- var urlTemplate = (urlTemplateOverride === null || urlTemplateOverride === void 0 ? void 0 : urlTemplateOverride(home)) || '';
6422
- if (!urlTemplateOverride) {
6423
- switch (tileServerType) {
6424
- case 'arcgisonline':
6425
- urlTemplate = "".concat(home, "{z}/{y}/{x}.png");
6426
- break;
6427
- case 'osm':
6428
- urlTemplate = "".concat(home, "{z}/{x}/{y}.png");
6429
- break;
6430
- case 'wmst':
6431
- urlTemplate = "".concat(home, "{z}/{y}/{x}");
6432
- break;
6433
- }
6434
- }
6435
- if (!urlTemplate) {
6436
- console.warn("Tile server type ".concat(tileServerType, " not supported"), tileServerSettings, tileServer);
6437
- }
6438
- return jsx(XYZLayer, {
6439
- urlTemplate: urlTemplate,
6440
- layerOptions: layerOptions,
6441
- layerProps: _objectSpread2(_objectSpread2({}, layerProps), {}, {
6442
- enabled: true
6443
- }),
6444
- tileProjectionCode: projectionUsedFromTileServer
6445
- });
6386
+ /* *
6387
+ * Licensed under the Apache License, Version 2.0 (the "License");
6388
+ * you may not use this file except in compliance with the License.
6389
+ * You may obtain a copy of the License at
6390
+ *
6391
+ * http://www.apache.org/licenses/LICENSE-2.0
6392
+ *
6393
+ * Unless required by applicable law or agreed to in writing, software
6394
+ * distributed under the License is distributed on an "AS IS" BASIS,
6395
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6396
+ * See the License for the specific language governing permissions and
6397
+ * limitations under the License.
6398
+ *
6399
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6400
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
6401
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
6402
+ * */
6403
+ var joinUrlParams = function joinUrlParams(params) {
6404
+ return params.filter(function (x) {
6405
+ return x !== undefined && x.length > 0;
6406
+ }).join('/');
6407
+ };
6408
+ var fetchEDRLayerCollection = /*#__PURE__*/function () {
6409
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(edrBaseUrlWithCollection) {
6410
+ var instanceId,
6411
+ _args = arguments;
6412
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6413
+ while (1) switch (_context.prev = _context.next) {
6414
+ case 0:
6415
+ instanceId = _args.length > 1 && _args[1] !== undefined ? _args[1] : '';
6416
+ _context.next = 3;
6417
+ return fetch(joinUrlParams([edrBaseUrlWithCollection, instanceId]));
6418
+ case 3:
6419
+ _context.next = 5;
6420
+ return _context.sent.json();
6421
+ case 5:
6422
+ return _context.abrupt("return", _context.sent);
6423
+ case 6:
6424
+ case "end":
6425
+ return _context.stop();
6446
6426
  }
6447
- } else if (_name && _service) {
6448
- return jsx(WMSLayer, {
6449
- layerName: _name,
6450
- layerOptions: layerOptions,
6451
- layerProps: layerProps,
6452
- url: _service,
6453
- styleName: style || 'default'
6454
- });
6455
- } else if (baseLayer) {
6456
- return jsx(DefaultBaseLayers, {});
6457
- }
6458
- }
6459
- return jsx("div", {});
6460
- };
6461
-
6462
- var FeatureLayer = function FeatureLayer(_ref) {
6463
- var features = _ref.features,
6464
- style = _ref.style,
6465
- zIndex = _ref.zIndex,
6466
- hoverSelect = _ref.hoverSelect,
6467
- clickOnFeature = _ref.clickOnFeature,
6468
- testId = _ref.testId,
6469
- opacity = _ref.opacity;
6470
- var _useContext = useContext(MapContext),
6471
- map = _useContext.map;
6472
- var _useState = useState(),
6473
- _useState2 = _slicedToArray(_useState, 2),
6474
- source = _useState2[0],
6475
- setSource = _useState2[1];
6476
- var layerRef = useRef();
6477
- useEffect(function () {
6478
- if (!map) {
6479
- return function () {};
6480
- }
6481
- var source = new VectorSource({
6482
- features: []
6483
- });
6484
- var layer = new Vector({
6485
- source: source,
6486
- zIndex: zIndex,
6487
- style: style,
6488
- properties: {
6489
- testId: testId
6490
- },
6491
- opacity: opacity
6492
- });
6493
- layerRef.current = layer;
6494
- layer.set('layerType', 'FeatureLayer');
6495
- setSource(source);
6496
- map.addLayer(layer);
6497
- return function () {
6498
- setSource(undefined);
6499
- source.clear();
6500
- map.removeLayer(layer);
6501
- };
6502
- // NOTE: style should not be part of this effect, as it changes always, causing the layer to be add/removed continuousely.
6503
- // eslint-disable-next-line react-hooks/exhaustive-deps
6504
- }, [map, zIndex, testId]);
6505
- useEffect(function () {
6506
- // Handle style function:
6507
- if (layerRef.current && style) {
6508
- var _layerRef$current;
6509
- (_layerRef$current = layerRef.current) === null || _layerRef$current === void 0 || _layerRef$current.setStyle(style);
6510
- }
6511
- }, [style]);
6512
- useEffect(function () {
6513
- // Handle opacity:
6514
- if (layerRef.current && opacity) {
6515
- var _layerRef$current2;
6516
- (_layerRef$current2 = layerRef.current) === null || _layerRef$current2 === void 0 || _layerRef$current2.setOpacity(opacity);
6517
- }
6518
- }, [opacity]);
6519
- useEffect(function () {
6520
- if (!source) {
6521
- return;
6522
- }
6523
- source.clear();
6524
- if (features && features.length > 0) {
6525
- source.addFeatures(features);
6526
- }
6527
- }, [source, features]);
6528
- useEffect(function () {
6529
- if (!map || !source || !hoverSelect || !hoverSelect.active) {
6530
- return function () {};
6531
- }
6532
- var previousHover = [];
6533
- var pointerMoveFunction = debounce(function (evt) {
6534
- var hoveredFeature = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
6535
- if (!layer || layer.getSource() !== source) {
6536
- return false;
6537
- }
6538
- return feature;
6539
- });
6540
- if (hoveredFeature && previousHover.includes(hoveredFeature)) {
6541
- return;
6542
- }
6543
- var unhovered = previousHover.length > 0;
6544
- previousHover.forEach(function (feature) {
6545
- feature.set('hover', false);
6546
- });
6547
- previousHover.splice(0);
6548
- if (hoveredFeature) {
6549
- previousHover.push(hoveredFeature);
6550
- hoveredFeature.set('hover', true);
6551
- hoverSelect.onHover && hoverSelect.onHover(hoveredFeature);
6552
- } else if (unhovered) {
6553
- hoverSelect.onHover && hoverSelect.onHover(undefined);
6427
+ }, _callee);
6428
+ }));
6429
+ return function fetchEDRLayerCollection(_x) {
6430
+ return _ref.apply(this, arguments);
6431
+ };
6432
+ }();
6433
+ var fetchEDRLayerCollectionCube = /*#__PURE__*/function () {
6434
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(edrBaseUrlWithCollection, parameterName) {
6435
+ var datetime,
6436
+ instanceId,
6437
+ bbox,
6438
+ queryParams,
6439
+ url,
6440
+ response,
6441
+ _args2 = arguments;
6442
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6443
+ while (1) switch (_context2.prev = _context2.next) {
6444
+ case 0:
6445
+ datetime = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : '';
6446
+ instanceId = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : '';
6447
+ bbox = _args2.length > 4 && _args2[4] !== undefined ? _args2[4] : '-180,-90,180,90';
6448
+ queryParams = new URLSearchParams();
6449
+ queryParams.append('bbox', bbox);
6450
+ queryParams.append('parameter-name', parameterName);
6451
+ datetime && queryParams.append('datetime', datetime);
6452
+ url = "".concat(joinUrlParams([edrBaseUrlWithCollection, instanceId, 'cube']), "?").concat(queryParams.toString());
6453
+ _context2.next = 10;
6454
+ return fetch(url);
6455
+ case 10:
6456
+ response = _context2.sent;
6457
+ _context2.next = 13;
6458
+ return response.json();
6459
+ case 13:
6460
+ return _context2.abrupt("return", _context2.sent);
6461
+ case 14:
6462
+ case "end":
6463
+ return _context2.stop();
6554
6464
  }
6555
- }, 5, {});
6556
- var eventKey = map.on('pointermove', pointerMoveFunction);
6557
- return function () {
6558
- pointerMoveFunction.cancel();
6559
- source.getFeatures().forEach(function (feature) {
6560
- feature.set('hover', false);
6561
- });
6562
- unByKey(eventKey);
6563
- hoverSelect.onHover && hoverSelect.onHover(undefined);
6564
- };
6565
- }, [map, source, hoverSelect]);
6566
- useEffect(function () {
6567
- if (!map || !source || !clickOnFeature) {
6568
- return function () {};
6569
- }
6570
- var clickFunction = function clickFunction(evt) {
6571
- var features = [];
6572
- map.forEachFeatureAtPixel(evt.pixel, function (feature) {
6573
- features.push(feature);
6574
- }, {
6575
- hitTolerance: clickOnFeature.hitTolerance
6576
- });
6577
- clickOnFeature.onClick(features);
6578
- };
6579
- var eventKey = map.on('click', clickFunction);
6580
- return function () {
6581
- unByKey(eventKey);
6582
- };
6583
- }, [map, source, clickOnFeature]);
6584
- return null;
6585
- };
6586
-
6587
- var OpenLayersFeatureLayer = function OpenLayersFeatureLayer(_ref) {
6588
- var featureCollection = _ref.featureCollection,
6589
- style = _ref.style,
6590
- zIndex = _ref.zIndex,
6591
- hoverSelect = _ref.hoverSelect,
6592
- clickOnFeature = _ref.clickOnFeature,
6593
- testId = _ref.testId,
6594
- opacity = _ref.opacity;
6595
- var projection = useProjection();
6596
- var featureCollectionRef = useRef();
6597
- var features = useRef([]);
6598
- var featureCollectionHasChanges = featureCollectionRef.current !== featureCollection;
6599
- if (featureCollectionHasChanges) {
6600
- if (projection && featureCollection) {
6601
- // eslint-disable-next-line no-console
6602
- featureCollectionRef.current = featureCollection;
6603
- var formatter = new GeoJSON({
6604
- featureProjection: projection
6605
- });
6606
- features.current = formatter.readFeatures(featureCollection);
6607
- }
6608
- }
6609
- // If no featureCollection is given, e.g. in edit mode of a polygon, the feature should not be displayed.
6610
- if (!featureCollection) {
6611
- return null;
6612
- }
6613
- return jsx(FeatureLayer, {
6614
- features: features.current,
6615
- style: style,
6616
- zIndex: zIndex,
6617
- hoverSelect: hoverSelect,
6618
- clickOnFeature: clickOnFeature,
6619
- testId: testId,
6620
- opacity: opacity
6621
- });
6622
- };
6465
+ }, _callee2);
6466
+ }));
6467
+ return function fetchEDRLayerCollectionCube(_x2, _x3) {
6468
+ return _ref2.apply(this, arguments);
6469
+ };
6470
+ }();
6623
6471
 
6624
- var makeUrlFromParams = function makeUrlFromParams(params) {
6625
- return params.filter(function (x) {
6626
- return x !== undefined && x.length > 0;
6627
- }).join('/');
6628
- };
6629
- var useEDRCollection = function useEDRCollection(edrBaseUrl, collectionId) {
6630
- var instanceId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
6631
- var params = [edrBaseUrl, collectionId, instanceId];
6472
+ var DEFAULT_STALE_TIME = 60000; // One minute
6473
+ var useEDRLayerCollection = function useEDRLayerCollection(edrBaseUrlWithCollection) {
6474
+ var instanceId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
6632
6475
  return useQuery({
6633
- queryKey: params,
6476
+ staleTime: DEFAULT_STALE_TIME,
6477
+ queryKey: [edrBaseUrlWithCollection, instanceId, 'useEDRLayerCollection'],
6634
6478
  queryFn: function () {
6635
- var _queryFn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6636
- var url, response;
6479
+ var _queryFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6637
6480
  return _regeneratorRuntime().wrap(function _callee$(_context) {
6638
6481
  while (1) switch (_context.prev = _context.next) {
6639
6482
  case 0:
6640
- url = makeUrlFromParams(params);
6641
- _context.next = 3;
6642
- return fetch(url);
6643
- case 3:
6644
- response = _context.sent;
6645
- _context.next = 6;
6646
- return response.json();
6647
- case 6:
6648
- return _context.abrupt("return", _context.sent);
6649
- case 7:
6483
+ return _context.abrupt("return", fetchEDRLayerCollection(edrBaseUrlWithCollection, instanceId));
6484
+ case 1:
6650
6485
  case "end":
6651
6486
  return _context.stop();
6652
6487
  }
@@ -6656,30 +6491,26 @@ var useEDRCollection = function useEDRCollection(edrBaseUrl, collectionId) {
6656
6491
  return _queryFn.apply(this, arguments);
6657
6492
  }
6658
6493
  return queryFn;
6659
- }()
6494
+ }(),
6495
+ enabled: edrBaseUrlWithCollection.length > 0
6660
6496
  });
6661
6497
  };
6662
- var useEDRCollectionLocation = function useEDRCollectionLocation(edrBaseUrl, collectionId) {
6663
- var instanceId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
6664
- var params = [edrBaseUrl, collectionId, instanceId, 'locations'];
6498
+ var useEDRLayerCollectionCube = function useEDRLayerCollectionCube(edrBaseUrlWithCollection, parameterName) {
6499
+ var datetime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
6500
+ var instanceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
6501
+ var bbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '-180,-90,180,90';
6502
+ var params = [edrBaseUrlWithCollection, instanceId, 'cube'];
6503
+ var queryKey = [].concat(params, [bbox, parameterName, datetime]);
6665
6504
  return useQuery({
6666
- queryKey: params,
6505
+ staleTime: DEFAULT_STALE_TIME,
6506
+ queryKey: queryKey,
6667
6507
  queryFn: function () {
6668
- var _queryFn2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
6669
- var url, response;
6508
+ var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
6670
6509
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6671
6510
  while (1) switch (_context2.prev = _context2.next) {
6672
6511
  case 0:
6673
- url = makeUrlFromParams(params);
6674
- _context2.next = 3;
6675
- return fetch(url);
6676
- case 3:
6677
- response = _context2.sent;
6678
- _context2.next = 6;
6679
- return response.json();
6680
- case 6:
6681
- return _context2.abrupt("return", _context2.sent);
6682
- case 7:
6512
+ return _context2.abrupt("return", fetchEDRLayerCollectionCube(edrBaseUrlWithCollection, parameterName, datetime, instanceId, bbox));
6513
+ case 1:
6683
6514
  case "end":
6684
6515
  return _context2.stop();
6685
6516
  }
@@ -6689,54 +6520,8 @@ var useEDRCollectionLocation = function useEDRCollectionLocation(edrBaseUrl, col
6689
6520
  return _queryFn2.apply(this, arguments);
6690
6521
  }
6691
6522
  return queryFn;
6692
- }()
6693
- });
6694
- };
6695
- var useEDRCollectionCube = function useEDRCollectionCube(edrBaseUrl, collectionId, parameterName) {
6696
- var datetime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
6697
- var instanceId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';
6698
- var bbox = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '-180,-90,180,90';
6699
- var params = [edrBaseUrl, collectionId, instanceId, 'cube'];
6700
- var queryKey = [].concat(params, [bbox, parameterName, datetime]);
6701
- return useQuery({
6702
- staleTime: 5 * 60 * 1000,
6703
- queryKey: queryKey,
6704
- queryFn: function () {
6705
- var _queryFn3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
6706
- var queryParams, url, response;
6707
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
6708
- while (1) switch (_context3.prev = _context3.next) {
6709
- case 0:
6710
- if (parameterName.length) {
6711
- _context3.next = 2;
6712
- break;
6713
- }
6714
- throw new Error('parameterName must be defined');
6715
- case 2:
6716
- queryParams = new URLSearchParams();
6717
- queryParams.append('bbox', bbox);
6718
- queryParams.append('parameter-name', parameterName);
6719
- queryParams.append('datetime', datetime);
6720
- url = "".concat(makeUrlFromParams(params), "?").concat(queryParams.toString());
6721
- _context3.next = 9;
6722
- return fetch(url);
6723
- case 9:
6724
- response = _context3.sent;
6725
- _context3.next = 12;
6726
- return response.json();
6727
- case 12:
6728
- return _context3.abrupt("return", _context3.sent);
6729
- case 13:
6730
- case "end":
6731
- return _context3.stop();
6732
- }
6733
- }, _callee3);
6734
- }));
6735
- function queryFn() {
6736
- return _queryFn3.apply(this, arguments);
6737
- }
6738
- return queryFn;
6739
- }()
6523
+ }(),
6524
+ enabled: parameterName.length > 0
6740
6525
  });
6741
6526
  };
6742
6527
 
@@ -6757,9 +6542,12 @@ var useEDRCollectionCube = function useEDRCollectionCube(edrBaseUrl, collectionI
6757
6542
  * Copyright 2025 - Finnish Meteorological Institute (FMI)
6758
6543
  * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
6759
6544
  * */
6760
- var wowTemperatureLegendColors = ['#2E2E73', '#282898', '#201FBB', '#1A1ADC', '#3654DE', '#548EDC', '#72CADE', '#6DD8DF', '#55CDE2', '#38BBDC', '#20B0DC', '#19BAA6', '#1CCE6A', '#1BDF22', '#82C319', '#DCA819', '#DD921A', '#DE7C1A', '#DF671A', '#DE501A', '#DD3819', '#DD2319', '#D21A1E', '#C31927', '#AD1A30', '#9A1A3B', '#871A44', '#871A44'];
6545
+ var temperatureLegendColorsWoW = ['#2E2E73', '#282898', '#201FBB', '#1A1ADC', '#3654DE', '#548EDC', '#72CADE', '#6DD8DF', '#55CDE2', '#38BBDC', '#20B0DC', '#19BAA6', '#1CCE6A', '#1BDF22', '#82C319', '#DCA819', '#DD921A', '#DE7C1A', '#DF671A', '#DE501A', '#DD3819', '#DD2319', '#D21A1E', '#C31927', '#AD1A30', '#9A1A3B', '#871A44', '#871A44'];
6546
+ var precipitationMMLegendColorsWoW = ['#BACDCB', '#A3C3C9', '#8BBCC8', '#6AAEC1', '#42A1C0', '#377EAF', '#46669C', '#56528D', '#86008D', '#610066'];
6547
+ var temperatureLegendColorsCWK = ['#BFB1FF', '#8E7EE4', '#6450CC', '#422BB1', '#260E99', '#B1E4FF', '#7EC3E4', '#50A3CC', '#2B85B1', '#0E6B99', '#E4FFB1', '#C3E47E', '#A3CC50', '#85B12B', '#6B990E', '#FFD8B1', '#E4B17E', '#CC8E50', '#B16E2B', '#99540E', '#FFB1B1', '#E47E7E', '#CC5050', '#B12B2B', '#990E0E', '#BFB1FF', '#8E7EE4', '#6450CC', '#422BB1', '#260E99', '#B1E4FF', '#7EC3E4', '#50A3CC', '#2B85B1', '#0E6B99', '#E4FFB1', '#C3E47E', '#A3CC50', '#85B12B', '#6B990E', '#FFD8B1', '#E4B17E', '#CC8E50', '#B16E2B', '#99540E', '#FFB1B1', '#E47E7E', '#CC5050', '#B12B2B', '#990E0E', '#BFB1FF', '#8E7EE4', '#6450CC', '#422BB1', '#260E99', '#B1E4FF', '#7EC3E4', '#50A3CC', '#2B85B1', '#0E6B99', '#E4FFB1', '#C3E47E', '#A3CC50', '#85B12B', '#6B990E', '#FFD8B1', '#E4B17E', '#CC8E50', '#B16E2B', '#99540E', '#FFB1B1', '#E47E7E', '#CC5050', '#B12B2B', '#990E0E'];
6761
6548
  var colorMaps = {
6762
- wowTemperatureLegendColors: wowTemperatureLegendColors
6549
+ temperatureLegendColorsWoW: temperatureLegendColorsWoW,
6550
+ temperatureLegendColorsCWK: temperatureLegendColorsCWK
6763
6551
  };
6764
6552
 
6765
6553
  /* *
@@ -6866,43 +6654,212 @@ var makeFeatureStyleLoading = function makeFeatureStyleLoading(feature) {
6866
6654
  })
6867
6655
  });
6868
6656
  };
6657
+ var defaultLegend$1 = makeLegendFromColorMap({
6658
+ colors: colorMaps.temperatureLegendColorsWoW,
6659
+ min: -18,
6660
+ max: 38
6661
+ });
6662
+ var defaultStyle$1 = function defaultStyle(feature) {
6663
+ return makeFeatureStyleDisc(feature, defaultLegend$1);
6664
+ };
6665
+ /**
6666
+ * Converts a stylename to openlayers style for features
6667
+ * @param styleName Strings like temperatureLegendColorsWoW:0,20 will get the legend temperatureLegendColorsWoW with a range from 0,20. This makes it flexible to adjust the colorrange via the stylename.
6668
+ * @returns StyleLike
6669
+ */
6670
+ var styleNameToStyleLikeNotMemoed = function styleNameToStyleLikeNotMemoed(styleName) {
6671
+ var minMaxPartFromNumericIndex = styleName.indexOf(':');
6672
+ var legMinMax = minMaxPartFromNumericIndex > 0 ? styleName.substring(minMaxPartFromNumericIndex + 1).split(',').map(function (stringValue) {
6673
+ return parseFloat(stringValue);
6674
+ }) : [undefined, undefined];
6675
+ var min = legMinMax.length === 2 ? legMinMax[0] : undefined;
6676
+ var max = legMinMax.length === 2 ? legMinMax[1] : undefined;
6677
+ var legendName = styleName === null || styleName === void 0 ? void 0 : styleName.split(':')[0];
6678
+ if (legendName === 'temperatureLegendColorsWoW') {
6679
+ return function (feature) {
6680
+ return makeFeatureStyleDisc(feature, makeLegendFromColorMap({
6681
+ colors: colorMaps.temperatureLegendColorsWoW,
6682
+ min: min !== undefined ? min : -18,
6683
+ max: max !== undefined ? max : 38
6684
+ }));
6685
+ };
6686
+ }
6687
+ if (legendName === 'temperatureLegendColorsCWK') {
6688
+ return function (feature) {
6689
+ return makeFeatureStyleDisc(feature, makeLegendFromColorMap({
6690
+ colors: colorMaps.temperatureLegendColorsCWK,
6691
+ min: min !== undefined ? min : -18,
6692
+ max: max !== undefined ? max : 38
6693
+ }));
6694
+ };
6695
+ }
6696
+ if (legendName === 'precipitationMMLegendColorsWoW') {
6697
+ return function (feature) {
6698
+ return makeFeatureStyleDisc(feature, makeLegendFromColorMap({
6699
+ colors: colorMaps.temperatureLegendColorsCWK,
6700
+ min: min !== undefined ? min : 0,
6701
+ max: max !== undefined ? max : 30
6702
+ }));
6703
+ };
6704
+ }
6705
+ return defaultStyle$1;
6706
+ };
6707
+ var styleNameToStyleLike = memoize(styleNameToStyleLikeNotMemoed);
6869
6708
 
6870
- var id = "10-minute-in-situ-meteorological-observations";
6871
- var title = "[PRE-RELEASE] Meteo data - near real-time automatic ground-based meteorological in-situ surface observations of the Netherlands, per 10 minutes";
6872
- var description = "KNMI collects meteorological surface observations from automatic weather stations\n(in-situ) situated in the Netherlands and BES islands. The network consists of sea and land-based locations,\nincluding wind poles and sites at airports. The weather stations report every 10 minutes meteorological variables\nsuch as temperature, relative humidity, wind, air pressure, visibility, precipitation and cloud cover.\nThe number of available variables differs per station. The data for the past 10-minutes interval is available\na few minutes later and contains a timestamp denoting the end of the observation interval in UTC.\nIt is possible that a station's observations may not be immediately available. The dataset can be updated with\nmissing data up to seven days later.";
6873
- var links = [
6874
- {
6875
- href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations",
6876
- rel: "self"
6877
- }
6878
- ];
6879
- var extent = {
6880
- spatial: {
6881
- bbox: [
6882
- [
6883
- -68.2758,
6884
- 12.13,
6885
- 7.1492,
6886
- 55.3992
6887
- ]
6888
- ],
6889
- crs: "EPSG:4326"
6890
- },
6891
- temporal: {
6892
- interval: [
6893
- [
6894
- "2012-01-01T00:00:00Z",
6895
- "2025-05-26T12:00:00Z"
6896
- ]
6897
- ],
6898
- values: [
6899
- "2012-01-01T00:00:00Z/2025-05-26T12:00:00Z"
6900
- ],
6901
- trs: "datetime"
6902
- },
6903
- custom: [
6904
- {
6905
- id: "duration",
6709
+ /**
6710
+ * Returns WMLayer instance in EDR mode. The layer will contains parsed dimensions and styles and keeps a state for these properties.
6711
+ *
6712
+ * @param {string} serviceUrl
6713
+ * @param {string} name
6714
+ * @returns {(WMLayer | null)}
6715
+ */
6716
+ var useGetEDRWMLayerInstance = function useGetEDRWMLayerInstance(serviceUrl, name, id, onLayerError) {
6717
+ var _React$useState = React__default.useState(null),
6718
+ _React$useState2 = _slicedToArray(_React$useState, 2),
6719
+ layer = _React$useState2[0],
6720
+ setLayer = _React$useState2[1];
6721
+ var refId = useRef(id || webmapUtils.generateLayerId());
6722
+ React__default.useEffect(function () {
6723
+ var layerId = refId.current;
6724
+ // Check if the layer is already registered
6725
+ var tmpWMLayer = webmapUtils.getWMLayerById(layerId);
6726
+ if (!tmpWMLayer || tmpWMLayer.service !== serviceUrl && name.length > 0) {
6727
+ // Make a new layer if the serviceUrl changes. (But not when the name changes)
6728
+ var _wmLayer = new WMLayer({
6729
+ name: name,
6730
+ service: serviceUrl,
6731
+ layerType: LayerType.edrLayer,
6732
+ id: layerId
6733
+ });
6734
+ webmapUtils.registerWMLayer(_wmLayer, layerId);
6735
+ }
6736
+ // Set the name and parse the layer
6737
+ var wmLayer = webmapUtils.getWMLayerById(layerId);
6738
+ wmLayer.setName(name).then(function () {
6739
+ setLayer(wmLayer);
6740
+ })["catch"](function (e) {
6741
+ setLayer(wmLayer);
6742
+ });
6743
+ }, [name, onLayerError, serviceUrl]);
6744
+ return layer;
6745
+ };
6746
+ var useGetEDRLayerInstance = function useGetEDRLayerInstance(edrBaseUrl, parameter, layerId, onInitializeLayer) {
6747
+ var wmLayer = useGetEDRWMLayerInstance(edrBaseUrl, parameter, layerId);
6748
+ var collectionInfo = useEDRLayerCollection(edrBaseUrl);
6749
+ var _React$useState3 = React__default.useState(undefined),
6750
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
6751
+ timeRangeDuration = _React$useState4[0],
6752
+ setTimeRangeDuration = _React$useState4[1];
6753
+ React__default.useEffect(function () {
6754
+ if (wmLayer && collectionInfo.data && collectionInfo.isFetched) {
6755
+ var _collectionInfo$data, _collectionInfo$data2;
6756
+ // TODO: Extract PT10M from the EDR service: https://gitlab.com/opengeoweb/geoweb-assets/-/issues/4139
6757
+ var timeRangeDurationFromEdrCollection = "".concat((_collectionInfo$data = collectionInfo.data) === null || _collectionInfo$data === void 0 || (_collectionInfo$data = _collectionInfo$data.extent) === null || _collectionInfo$data === void 0 || (_collectionInfo$data = _collectionInfo$data.temporal) === null || _collectionInfo$data === void 0 ? void 0 : _collectionInfo$data.interval[0][0], "/").concat((_collectionInfo$data2 = collectionInfo.data) === null || _collectionInfo$data2 === void 0 || (_collectionInfo$data2 = _collectionInfo$data2.extent) === null || _collectionInfo$data2 === void 0 || (_collectionInfo$data2 = _collectionInfo$data2.temporal) === null || _collectionInfo$data2 === void 0 ? void 0 : _collectionInfo$data2.interval[0][1], "/PT10M");
6758
+ if (!wmLayer.getDimension('time')) {
6759
+ var _collectionInfo$data3;
6760
+ var dim = new WMJSDimension({
6761
+ name: 'time',
6762
+ currentValue: (_collectionInfo$data3 = collectionInfo.data) === null || _collectionInfo$data3 === void 0 || (_collectionInfo$data3 = _collectionInfo$data3.extent) === null || _collectionInfo$data3 === void 0 || (_collectionInfo$data3 = _collectionInfo$data3.temporal) === null || _collectionInfo$data3 === void 0 ? void 0 : _collectionInfo$data3.interval[0][1],
6763
+ units: 'ISO8601',
6764
+ values: timeRangeDurationFromEdrCollection
6765
+ });
6766
+ dim.initialize();
6767
+ wmLayer.dimensions.push(dim);
6768
+ } else {
6769
+ var _wmLayer$getDimension;
6770
+ (_wmLayer$getDimension = wmLayer.getDimension('time')) === null || _wmLayer$getDimension === void 0 || _wmLayer$getDimension.reInitializeValues(timeRangeDurationFromEdrCollection);
6771
+ }
6772
+ setTimeRangeDuration(timeRangeDurationFromEdrCollection);
6773
+ wmLayer.isConfigured = true;
6774
+ }
6775
+ }, [collectionInfo.data, collectionInfo.isFetched, wmLayer]);
6776
+ React__default.useEffect(function () {
6777
+ var initializeLayer = /*#__PURE__*/function () {
6778
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6779
+ var _wmLayer$dimensions, wmTimeDim, timeValueToInitialize, layerProps;
6780
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6781
+ while (1) switch (_context.prev = _context.next) {
6782
+ case 0:
6783
+ if (wmLayer) {
6784
+ // Set time dimension current value based on layerprops dimension value
6785
+ wmTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions = wmLayer.dimensions) === null || _wmLayer$dimensions === void 0 ? void 0 : _wmLayer$dimensions.find(function (wmDimension) {
6786
+ return wmDimension.name === 'time';
6787
+ });
6788
+ timeValueToInitialize = wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.getValue();
6789
+ wmTimeDim && timeValueToInitialize && wmTimeDim.setValue(timeValueToInitialize);
6790
+ layerProps = {
6791
+ layerId: wmLayer.id,
6792
+ dimensions: wmLayer.dimensions.map(function (dimension) {
6793
+ return {
6794
+ name: dimension.name,
6795
+ units: dimension.units,
6796
+ currentValue: dimension.currentValue,
6797
+ maxValue: dimension.getLastValue(),
6798
+ minValue: dimension.getFirstValue(),
6799
+ synced: dimension.synced,
6800
+ values: dimension.values,
6801
+ unitSymbol: dimension.unitSymbol
6802
+ };
6803
+ }),
6804
+ style: ''
6805
+ };
6806
+ onInitializeLayer && onInitializeLayer(layerProps);
6807
+ }
6808
+ case 1:
6809
+ case "end":
6810
+ return _context.stop();
6811
+ }
6812
+ }, _callee);
6813
+ }));
6814
+ return function initializeLayer() {
6815
+ return _ref.apply(this, arguments);
6816
+ };
6817
+ }();
6818
+ timeRangeDuration && initializeLayer()["catch"](function (e) {
6819
+ return window.console.error(e);
6820
+ });
6821
+ return function () {};
6822
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6823
+ }, [wmLayer, parameter, timeRangeDuration]);
6824
+ return wmLayer;
6825
+ };
6826
+
6827
+ var id$1 = "10-minute-in-situ-meteorological-observations";
6828
+ var title$1 = "[PRE-RELEASE] Meteo data - near real-time automatic ground-based meteorological in-situ surface observations of the Netherlands, per 10 minutes";
6829
+ var description$1 = "KNMI collects meteorological surface observations from automatic weather stations\n(in-situ) situated in the Netherlands and BES islands. The network consists of sea and land-based locations,\nincluding wind poles and sites at airports. The weather stations report every 10 minutes meteorological variables\nsuch as temperature, relative humidity, wind, air pressure, visibility, precipitation and cloud cover.\nThe number of available variables differs per station. The data for the past 10-minutes interval is available\na few minutes later and contains a timestamp denoting the end of the observation interval in UTC.\nIt is possible that a station's observations may not be immediately available. The dataset can be updated with\nmissing data up to seven days later.";
6830
+ var links$1 = [
6831
+ {
6832
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations",
6833
+ rel: "self"
6834
+ }
6835
+ ];
6836
+ var extent$1 = {
6837
+ spatial: {
6838
+ bbox: [
6839
+ [
6840
+ -68.2758,
6841
+ 12.13,
6842
+ 7.1492,
6843
+ 55.3992
6844
+ ]
6845
+ ],
6846
+ crs: "EPSG:4326"
6847
+ },
6848
+ temporal: {
6849
+ interval: [
6850
+ [
6851
+ "2012-01-01T00:00:00Z",
6852
+ "2025-05-26T12:00:00Z"
6853
+ ]
6854
+ ],
6855
+ values: [
6856
+ "2012-01-01T00:00:00Z/2025-05-26T12:00:00Z"
6857
+ ],
6858
+ trs: "datetime"
6859
+ },
6860
+ custom: [
6861
+ {
6862
+ id: "duration",
6906
6863
  interval: [
6907
6864
  [
6908
6865
  "-PT10M",
@@ -6991,7 +6948,7 @@ var extent = {
6991
6948
  }
6992
6949
  ]
6993
6950
  };
6994
- var data_queries = {
6951
+ var data_queries$1 = {
6995
6952
  position: {
6996
6953
  link: {
6997
6954
  href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/position",
@@ -7053,14 +7010,14 @@ var data_queries = {
7053
7010
  }
7054
7011
  }
7055
7012
  };
7056
- var crs = [
7013
+ var crs$1 = [
7057
7014
  "WGS84"
7058
7015
  ];
7059
- var output_formats = [
7016
+ var output_formats$1 = [
7060
7017
  "CoverageJSON",
7061
7018
  "netCDF4"
7062
7019
  ];
7063
- var parameter_names = {
7020
+ var parameter_names$1 = {
7064
7021
  D1H: {
7065
7022
  type: "Parameter",
7066
7023
  label: "Rainfall Duration in last Hour",
@@ -9117,86 +9074,2347 @@ var parameter_names = {
9117
9074
  }
9118
9075
  };
9119
9076
  var knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations = {
9120
- id: id,
9121
- title: title,
9122
- description: description,
9123
- links: links,
9124
- extent: extent,
9125
- data_queries: data_queries,
9126
- crs: crs,
9127
- output_formats: output_formats,
9128
- parameter_names: parameter_names
9077
+ id: id$1,
9078
+ title: title$1,
9079
+ description: description$1,
9080
+ links: links$1,
9081
+ extent: extent$1,
9082
+ data_queries: data_queries$1,
9083
+ crs: crs$1,
9084
+ output_formats: output_formats$1,
9085
+ parameter_names: parameter_names$1
9129
9086
  };
9130
9087
 
9131
- var type$1 = "FeatureCollection";
9132
- var features = [
9088
+ var id = "10-minute-in-situ-meteorological-observations";
9089
+ var title = "[PRE-RELEASE] Meteo data - near real-time automatic ground-based meteorological in-situ surface observations of the Netherlands, per 10 minutes";
9090
+ var description = "KNMI collects meteorological surface observations from automatic weather stations\n(in-situ) situated in the Netherlands and BES islands. The network consists of sea and land-based locations,\nincluding wind poles and sites at airports. The weather stations report every 10 minutes meteorological variables\nsuch as temperature, relative humidity, wind, air pressure, visibility, precipitation and cloud cover.\nThe number of available variables differs per station. The data for the past 10-minutes interval is available\na few minutes later and contains a timestamp denoting the end of the observation interval in UTC.\nIt is possible that a station's observations may not be immediately available. The dataset can be updated with\nmissing data up to seven days later.";
9091
+ var links = [
9133
9092
  {
9134
- type: "Feature",
9135
- geometry: {
9136
- type: "Point",
9137
- coordinates: [
9138
- 2.9358,
9139
- 54.3256,
9140
- 42.7
9093
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations",
9094
+ rel: "self"
9095
+ }
9096
+ ];
9097
+ var extent = {
9098
+ spatial: {
9099
+ bbox: [
9100
+ [
9101
+ -68.2758,
9102
+ 12.13,
9103
+ 7.1492,
9104
+ 55.3992
9141
9105
  ]
9142
- },
9143
- properties: {
9144
- name: "D15-FA-1",
9145
- wmoId: "06201"
9146
- },
9147
- id: "0-20000-0-06201"
9106
+ ],
9107
+ crs: "EPSG:4326"
9148
9108
  },
9149
- {
9150
- type: "Feature",
9151
- geometry: {
9152
- type: "Point",
9153
- coordinates: [
9154
- 3.3417,
9155
- 52.36,
9156
- 41.84
9109
+ temporal: {
9110
+ interval: [
9111
+ [
9112
+ "2012-01-01T00:00:00Z",
9113
+ "2025-05-26T12:10:00Z"
9157
9114
  ]
9158
- },
9159
- properties: {
9160
- name: "P11-B",
9161
- wmoId: "06203"
9162
- },
9163
- id: "0-20000-0-06203"
9115
+ ],
9116
+ values: [
9117
+ "2012-01-01T00:00:00Z/2025-05-26T12:10:00Z"
9118
+ ],
9119
+ trs: "datetime"
9164
9120
  },
9165
- {
9166
- type: "Feature",
9167
- geometry: {
9168
- type: "Point",
9169
- coordinates: [
9170
- 3.6278,
9171
- 53.2694,
9172
- 41.8
9173
- ]
9174
- },
9175
- properties: {
9176
- name: "K14-FA-1C",
9177
- wmoId: "06204"
9121
+ custom: [
9122
+ {
9123
+ id: "duration",
9124
+ interval: [
9125
+ [
9126
+ "-PT10M",
9127
+ "N/A"
9128
+ ]
9129
+ ],
9130
+ values: [
9131
+ "-PT10M",
9132
+ "-PT12H",
9133
+ "-PT14H",
9134
+ "-PT19M",
9135
+ "-PT1H",
9136
+ "-PT1M",
9137
+ "-PT24H",
9138
+ "-PT3H",
9139
+ "-PT6H",
9140
+ "N/A"
9141
+ ],
9142
+ reference: "https://en.wikipedia.org/wiki/ISO_8601#Durations"
9178
9143
  },
9179
- id: "0-20000-0-06204"
9180
- },
9181
- {
9182
- type: "Feature",
9183
- geometry: {
9184
- type: "Point",
9185
- coordinates: [
9186
- 3.8103,
9187
- 55.3992,
9188
- 48.35
9189
- ]
9144
+ {
9145
+ id: "level",
9146
+ interval: [
9147
+ [
9148
+ -1,
9149
+ 10
9150
+ ]
9151
+ ],
9152
+ values: [
9153
+ -1,
9154
+ -0.5,
9155
+ -0.2,
9156
+ -0.1,
9157
+ -0.05,
9158
+ 0.1,
9159
+ 1.5,
9160
+ 10
9161
+ ],
9162
+ reference: "Height of measurement above ground level in meters"
9190
9163
  },
9191
- properties: {
9192
- name: "A12-CPP",
9193
- wmoId: "06205"
9164
+ {
9165
+ id: "method",
9166
+ interval: [
9167
+ [
9168
+ "maximum",
9169
+ "sum"
9170
+ ]
9171
+ ],
9172
+ values: [
9173
+ "maximum",
9174
+ "mean",
9175
+ "minimum",
9176
+ "stddev",
9177
+ "sum"
9178
+ ],
9179
+ reference: "Time aggregation functions"
9194
9180
  },
9195
- id: "0-20000-0-06205"
9196
- },
9197
- {
9198
- type: "Feature",
9199
- geometry: {
9181
+ {
9182
+ id: "standard_name",
9183
+ interval: [
9184
+ [
9185
+ "air_pressure",
9186
+ "wind_speed_of_gust"
9187
+ ]
9188
+ ],
9189
+ values: [
9190
+ "air_pressure",
9191
+ "air_pressure_at_mean_sea_level",
9192
+ "air_temperature",
9193
+ "cloud_area_fraction",
9194
+ "cloud_base_altitude",
9195
+ "dew_point_temperature",
9196
+ "integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air",
9197
+ "lwe_precipitation_rate",
9198
+ "predominant_precipitation_type_at_surface",
9199
+ "rainfall_amount",
9200
+ "relative_humidity",
9201
+ "soil_temperature",
9202
+ "surface_downwelling_shortwave_flux_in_air",
9203
+ "visibility_in_air",
9204
+ "wind_from_direction",
9205
+ "wind_speed",
9206
+ "wind_speed_of_gust"
9207
+ ],
9208
+ reference: "https://vocab.nerc.ac.uk/standard_name/"
9209
+ }
9210
+ ]
9211
+ };
9212
+ var data_queries = {
9213
+ position: {
9214
+ link: {
9215
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/position",
9216
+ rel: "data",
9217
+ variables: {
9218
+ query_type: "position",
9219
+ output_formats: [
9220
+ "CoverageJSON",
9221
+ "netCDF4"
9222
+ ],
9223
+ output_format: [
9224
+ "CoverageJSON"
9225
+ ]
9226
+ }
9227
+ }
9228
+ },
9229
+ area: {
9230
+ link: {
9231
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/area",
9232
+ rel: "data",
9233
+ variables: {
9234
+ query_type: "area",
9235
+ output_format: [
9236
+ "CoverageJSON"
9237
+ ]
9238
+ }
9239
+ }
9240
+ },
9241
+ cube: {
9242
+ link: {
9243
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/cube",
9244
+ rel: "data",
9245
+ variables: {
9246
+ query_type: "cube",
9247
+ output_formats: [
9248
+ "CoverageJSON",
9249
+ "netCDF4"
9250
+ ],
9251
+ output_format: [
9252
+ "CoverageJSON"
9253
+ ]
9254
+ }
9255
+ }
9256
+ },
9257
+ locations: {
9258
+ link: {
9259
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/locations",
9260
+ rel: "data",
9261
+ variables: {
9262
+ query_type: "locations",
9263
+ output_formats: [
9264
+ "CoverageJSON",
9265
+ "netCDF4"
9266
+ ],
9267
+ output_format: [
9268
+ "CoverageJSON"
9269
+ ]
9270
+ }
9271
+ }
9272
+ }
9273
+ };
9274
+ var crs = [
9275
+ "WGS84"
9276
+ ];
9277
+ var output_formats = [
9278
+ "CoverageJSON",
9279
+ "netCDF4"
9280
+ ];
9281
+ var parameter_names = {
9282
+ D1H: {
9283
+ type: "Parameter",
9284
+ label: "Rainfall Duration in last Hour",
9285
+ description: "Past hour rainfall duration in minutes",
9286
+ "data-type": "float",
9287
+ unit: {
9288
+ label: "minute",
9289
+ symbol: {
9290
+ value: "min",
9291
+ type: "https://qudt.org/vocab/unit/MIN"
9292
+ }
9293
+ },
9294
+ observedProperty: {
9295
+ label: "Precipitation Duration",
9296
+ description: "Period during which more than 0.05 mm of precipitation was measured."
9297
+ },
9298
+ measurementType: {
9299
+ method: "sum",
9300
+ duration: "-PT1H"
9301
+ }
9302
+ },
9303
+ dd: {
9304
+ type: "Parameter",
9305
+ label: "Wind Direction Mean with MD",
9306
+ description: "Past 10 minute mean wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9307
+ "data-type": "float",
9308
+ unit: {
9309
+ label: "degree",
9310
+ symbol: {
9311
+ value: "°",
9312
+ type: "https://qudt.org/vocab/unit/DEG"
9313
+ }
9314
+ },
9315
+ observedProperty: {
9316
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9317
+ label: "Wind from direction"
9318
+ },
9319
+ measurementType: {
9320
+ method: "mean",
9321
+ duration: "-PT10M"
9322
+ },
9323
+ "eumetnet:standard_name": "wind_from_direction"
9324
+ },
9325
+ dn: {
9326
+ type: "Parameter",
9327
+ label: "Wind Direction Minimum with MD",
9328
+ description: "Past 10 minute minimum wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9329
+ "data-type": "float",
9330
+ unit: {
9331
+ label: "degree",
9332
+ symbol: {
9333
+ value: "°",
9334
+ type: "https://qudt.org/vocab/unit/DEG"
9335
+ }
9336
+ },
9337
+ observedProperty: {
9338
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9339
+ label: "Wind from direction"
9340
+ },
9341
+ measurementType: {
9342
+ method: "minimum",
9343
+ duration: "-PT10M"
9344
+ },
9345
+ "eumetnet:standard_name": "wind_from_direction"
9346
+ },
9347
+ dr: {
9348
+ type: "Parameter",
9349
+ label: "Precipitation Duration (Rain Gauge)",
9350
+ description: "Past 10 minute duration of precipitation in seconds, measured by rain gauge",
9351
+ "data-type": "float",
9352
+ unit: {
9353
+ label: "second",
9354
+ symbol: {
9355
+ value: "s",
9356
+ type: "https://qudt.org/vocab/unit/SEC"
9357
+ }
9358
+ },
9359
+ observedProperty: {
9360
+ label: "Precipitation Duration",
9361
+ description: "Period during which more than 0.05 mm of precipitation was measured."
9362
+ },
9363
+ measurementType: {
9364
+ method: "N/A",
9365
+ duration: "-PT10M"
9366
+ }
9367
+ },
9368
+ dsd: {
9369
+ type: "Parameter",
9370
+ label: "Wind Direction Std Dev with MD",
9371
+ description: "Past 10 minute standard deviation of wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9372
+ "data-type": "float",
9373
+ unit: {
9374
+ label: "degree",
9375
+ symbol: {
9376
+ value: "°",
9377
+ type: "https://qudt.org/vocab/unit/DEG"
9378
+ }
9379
+ },
9380
+ observedProperty: {
9381
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9382
+ label: "Wind from direction"
9383
+ },
9384
+ measurementType: {
9385
+ method: "stddev",
9386
+ duration: "-PT10M"
9387
+ },
9388
+ "eumetnet:standard_name": "wind_from_direction"
9389
+ },
9390
+ dx: {
9391
+ type: "Parameter",
9392
+ label: "Wind Direction Maximum with MD",
9393
+ description: "Past 10 minute maximum wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9394
+ "data-type": "float",
9395
+ unit: {
9396
+ label: "degree",
9397
+ symbol: {
9398
+ value: "°",
9399
+ type: "https://qudt.org/vocab/unit/DEG"
9400
+ }
9401
+ },
9402
+ observedProperty: {
9403
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9404
+ label: "Wind from direction"
9405
+ },
9406
+ measurementType: {
9407
+ method: "maximum",
9408
+ duration: "-PT10M"
9409
+ },
9410
+ "eumetnet:standard_name": "wind_from_direction"
9411
+ },
9412
+ ff: {
9413
+ type: "Parameter",
9414
+ label: "Wind Speed at 10 m Mean with MD",
9415
+ description: "Past 10 minute mean wind speed, representative for 10 meters, in meters per second, with Marked Discontinuity (MD)",
9416
+ "data-type": "float",
9417
+ unit: {
9418
+ label: "meter per second",
9419
+ symbol: {
9420
+ value: "m/s",
9421
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9422
+ }
9423
+ },
9424
+ observedProperty: {
9425
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
9426
+ label: "Wind speed"
9427
+ },
9428
+ measurementType: {
9429
+ method: "mean",
9430
+ duration: "-PT10M"
9431
+ },
9432
+ "eumetnet:standard_name": "wind_speed",
9433
+ "eumetnet:level": 10
9434
+ },
9435
+ ffs: {
9436
+ type: "Parameter",
9437
+ label: "Wind Speed Sensor Mean with MD",
9438
+ description: "Past 10 minute mean wind speed, measured at sensor height, in meters per second, with Marked Discontinuity (MD)",
9439
+ "data-type": "float",
9440
+ unit: {
9441
+ label: "meter per second",
9442
+ symbol: {
9443
+ value: "m/s",
9444
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9445
+ }
9446
+ },
9447
+ observedProperty: {
9448
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
9449
+ label: "Wind speed"
9450
+ },
9451
+ measurementType: {
9452
+ method: "mean",
9453
+ duration: "-PT10M"
9454
+ },
9455
+ "eumetnet:standard_name": "wind_speed"
9456
+ },
9457
+ fsd: {
9458
+ type: "Parameter",
9459
+ label: "Wind Speed Std Dev with MD",
9460
+ description: "Past 10 minute standard deviation of wind speed, measured at sensor height, in meters per second, with Marked Discontinuity (MD)",
9461
+ "data-type": "float",
9462
+ unit: {
9463
+ label: "meter per second",
9464
+ symbol: {
9465
+ value: "m/s",
9466
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9467
+ }
9468
+ },
9469
+ observedProperty: {
9470
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
9471
+ label: "Wind speed"
9472
+ },
9473
+ measurementType: {
9474
+ method: "stddev",
9475
+ duration: "-PT10M"
9476
+ },
9477
+ "eumetnet:standard_name": "wind_speed"
9478
+ },
9479
+ fx: {
9480
+ type: "Parameter",
9481
+ label: "Wind Gust at 10 m Maximum last Interval",
9482
+ description: "Past 19 minute maximum wind gust, representative for 10 meters, in meters per second",
9483
+ "data-type": "float",
9484
+ unit: {
9485
+ label: "meter per second",
9486
+ symbol: {
9487
+ value: "m/s",
9488
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9489
+ }
9490
+ },
9491
+ observedProperty: {
9492
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9493
+ label: "Wind speed of gust"
9494
+ },
9495
+ measurementType: {
9496
+ method: "maximum",
9497
+ duration: "-PT19M"
9498
+ },
9499
+ "eumetnet:standard_name": "wind_speed_of_gust",
9500
+ "eumetnet:level": 10
9501
+ },
9502
+ fxs: {
9503
+ type: "Parameter",
9504
+ label: "Wind Gust Sensor Maximum last Interval",
9505
+ description: "Past 19 minute maximum wind gust, measured at sensor height, in meters per second",
9506
+ "data-type": "float",
9507
+ unit: {
9508
+ label: "meter per second",
9509
+ symbol: {
9510
+ value: "m/s",
9511
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9512
+ }
9513
+ },
9514
+ observedProperty: {
9515
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9516
+ label: "Wind speed of gust"
9517
+ },
9518
+ measurementType: {
9519
+ method: "maximum",
9520
+ duration: "-PT19M"
9521
+ },
9522
+ "eumetnet:standard_name": "wind_speed_of_gust"
9523
+ },
9524
+ gff: {
9525
+ type: "Parameter",
9526
+ label: "Wind Gust at 10 m Maximum with MD",
9527
+ description: "Past 10 minute maximum wind gust, representative for 10 meters, in meters per second, with Marked Discontinuity (MD)",
9528
+ "data-type": "float",
9529
+ unit: {
9530
+ label: "meter per second",
9531
+ symbol: {
9532
+ value: "m/s",
9533
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9534
+ }
9535
+ },
9536
+ observedProperty: {
9537
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9538
+ label: "Wind speed of gust"
9539
+ },
9540
+ measurementType: {
9541
+ method: "maximum",
9542
+ duration: "-PT10M"
9543
+ },
9544
+ "eumetnet:standard_name": "wind_speed_of_gust",
9545
+ "eumetnet:level": 10
9546
+ },
9547
+ gffs: {
9548
+ type: "Parameter",
9549
+ label: "Wind Gust Sensor Maximum with MD",
9550
+ description: "Past 10 minute maximum wind gust, measured at sensor height, in meters per second, with Marked Discontinuity (MD)",
9551
+ "data-type": "float",
9552
+ unit: {
9553
+ label: "meter per second",
9554
+ symbol: {
9555
+ value: "m/s",
9556
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9557
+ }
9558
+ },
9559
+ observedProperty: {
9560
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9561
+ label: "Wind speed of gust"
9562
+ },
9563
+ measurementType: {
9564
+ method: "maximum",
9565
+ duration: "-PT10M"
9566
+ },
9567
+ "eumetnet:standard_name": "wind_speed_of_gust"
9568
+ },
9569
+ h: {
9570
+ type: "Parameter",
9571
+ label: "Cloud Base",
9572
+ description: "Past 10 minute cloud base altitude, in feet",
9573
+ "data-type": "float",
9574
+ unit: {
9575
+ label: "foot",
9576
+ symbol: {
9577
+ value: "ft",
9578
+ type: "https://qudt.org/vocab/unit/FT"
9579
+ }
9580
+ },
9581
+ observedProperty: {
9582
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9583
+ label: "Cloud base altitude"
9584
+ },
9585
+ measurementType: {
9586
+ method: "N/A",
9587
+ duration: "-PT10M"
9588
+ },
9589
+ "eumetnet:standard_name": "cloud_base_altitude"
9590
+ },
9591
+ h1: {
9592
+ type: "Parameter",
9593
+ label: "Cloud Base First Layer",
9594
+ description: "Past 10 minute first layer cloud base altitude, in feet",
9595
+ "data-type": "float",
9596
+ unit: {
9597
+ label: "foot",
9598
+ symbol: {
9599
+ value: "ft",
9600
+ type: "https://qudt.org/vocab/unit/FT"
9601
+ }
9602
+ },
9603
+ observedProperty: {
9604
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9605
+ label: "Cloud base altitude"
9606
+ },
9607
+ measurementType: {
9608
+ method: "N/A",
9609
+ duration: "-PT10M"
9610
+ },
9611
+ "eumetnet:standard_name": "cloud_base_altitude"
9612
+ },
9613
+ h2: {
9614
+ type: "Parameter",
9615
+ label: "Cloud Base Second Layer",
9616
+ description: "Past 10 minute second layer cloud base altitude, in feet",
9617
+ "data-type": "float",
9618
+ unit: {
9619
+ label: "foot",
9620
+ symbol: {
9621
+ value: "ft",
9622
+ type: "https://qudt.org/vocab/unit/FT"
9623
+ }
9624
+ },
9625
+ observedProperty: {
9626
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9627
+ label: "Cloud base altitude"
9628
+ },
9629
+ measurementType: {
9630
+ method: "N/A",
9631
+ duration: "-PT10M"
9632
+ },
9633
+ "eumetnet:standard_name": "cloud_base_altitude"
9634
+ },
9635
+ h3: {
9636
+ type: "Parameter",
9637
+ label: "Cloud Base Third Layer",
9638
+ description: "Past 10 minute third layer cloud base altitude, in feet",
9639
+ "data-type": "float",
9640
+ unit: {
9641
+ label: "foot",
9642
+ symbol: {
9643
+ value: "ft",
9644
+ type: "https://qudt.org/vocab/unit/FT"
9645
+ }
9646
+ },
9647
+ observedProperty: {
9648
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9649
+ label: "Cloud base altitude"
9650
+ },
9651
+ measurementType: {
9652
+ method: "N/A",
9653
+ duration: "-PT10M"
9654
+ },
9655
+ "eumetnet:standard_name": "cloud_base_altitude"
9656
+ },
9657
+ hc: {
9658
+ type: "Parameter",
9659
+ label: "Cloud Base Ceilometer",
9660
+ description: "Past 10 minute cloud base ceilometer, in feet",
9661
+ "data-type": "float",
9662
+ unit: {
9663
+ label: "foot",
9664
+ symbol: {
9665
+ value: "ft",
9666
+ type: "https://qudt.org/vocab/unit/FT"
9667
+ }
9668
+ },
9669
+ observedProperty: {
9670
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9671
+ label: "Cloud base altitude"
9672
+ },
9673
+ measurementType: {
9674
+ method: "N/A",
9675
+ duration: "-PT10M"
9676
+ },
9677
+ "eumetnet:standard_name": "cloud_base_altitude"
9678
+ },
9679
+ hc1: {
9680
+ type: "Parameter",
9681
+ label: "Cloud Base Ceilometer First Layer",
9682
+ description: "Past 10 minute first layer cloud base ceilometer, in feet",
9683
+ "data-type": "float",
9684
+ unit: {
9685
+ label: "foot",
9686
+ symbol: {
9687
+ value: "ft",
9688
+ type: "https://qudt.org/vocab/unit/FT"
9689
+ }
9690
+ },
9691
+ observedProperty: {
9692
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9693
+ label: "Cloud base altitude"
9694
+ },
9695
+ measurementType: {
9696
+ method: "N/A",
9697
+ duration: "-PT10M"
9698
+ },
9699
+ "eumetnet:standard_name": "cloud_base_altitude"
9700
+ },
9701
+ hc2: {
9702
+ type: "Parameter",
9703
+ label: "Cloud Base Ceilometer Second Layer",
9704
+ description: "Past 10 minute second layer cloud base ceilometer, in feet",
9705
+ "data-type": "float",
9706
+ unit: {
9707
+ label: "foot",
9708
+ symbol: {
9709
+ value: "ft",
9710
+ type: "https://qudt.org/vocab/unit/FT"
9711
+ }
9712
+ },
9713
+ observedProperty: {
9714
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9715
+ label: "Cloud base altitude"
9716
+ },
9717
+ measurementType: {
9718
+ method: "N/A",
9719
+ duration: "-PT10M"
9720
+ },
9721
+ "eumetnet:standard_name": "cloud_base_altitude"
9722
+ },
9723
+ hc3: {
9724
+ type: "Parameter",
9725
+ label: "Cloud Base Ceilometer Third Layer",
9726
+ description: "Past 10 minute third layer cloud base ceilometer, in feet",
9727
+ "data-type": "float",
9728
+ unit: {
9729
+ label: "foot",
9730
+ symbol: {
9731
+ value: "ft",
9732
+ type: "https://qudt.org/vocab/unit/FT"
9733
+ }
9734
+ },
9735
+ observedProperty: {
9736
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9737
+ label: "Cloud base altitude"
9738
+ },
9739
+ measurementType: {
9740
+ method: "N/A",
9741
+ duration: "-PT10M"
9742
+ },
9743
+ "eumetnet:standard_name": "cloud_base_altitude"
9744
+ },
9745
+ n: {
9746
+ type: "Parameter",
9747
+ label: "Total Cloud Cover",
9748
+ description: "Past 10 minute total cloud cover, in okta",
9749
+ "data-type": "float",
9750
+ unit: {
9751
+ label: "okta",
9752
+ symbol: {
9753
+ value: "okta",
9754
+ type: "https://qudt.org/vocab/unit/OKTA"
9755
+ }
9756
+ },
9757
+ observedProperty: {
9758
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9759
+ label: "Cloud area fraction"
9760
+ },
9761
+ measurementType: {
9762
+ method: "N/A",
9763
+ duration: "-PT10M"
9764
+ },
9765
+ "eumetnet:standard_name": "cloud_area_fraction"
9766
+ },
9767
+ n1: {
9768
+ type: "Parameter",
9769
+ label: "Cloud Amount First Layer",
9770
+ description: "Past 10 minute first layer cloud amount, in okta",
9771
+ "data-type": "float",
9772
+ unit: {
9773
+ label: "okta",
9774
+ symbol: {
9775
+ value: "okta",
9776
+ type: "https://qudt.org/vocab/unit/OKTA"
9777
+ }
9778
+ },
9779
+ observedProperty: {
9780
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9781
+ label: "Cloud area fraction"
9782
+ },
9783
+ measurementType: {
9784
+ method: "N/A",
9785
+ duration: "-PT10M"
9786
+ },
9787
+ "eumetnet:standard_name": "cloud_area_fraction"
9788
+ },
9789
+ n2: {
9790
+ type: "Parameter",
9791
+ label: "Cloud Amount Second Layer",
9792
+ description: "Past 10 minute second layer cloud amount, in okta",
9793
+ "data-type": "float",
9794
+ unit: {
9795
+ label: "okta",
9796
+ symbol: {
9797
+ value: "okta",
9798
+ type: "https://qudt.org/vocab/unit/OKTA"
9799
+ }
9800
+ },
9801
+ observedProperty: {
9802
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9803
+ label: "Cloud area fraction"
9804
+ },
9805
+ measurementType: {
9806
+ method: "N/A",
9807
+ duration: "-PT10M"
9808
+ },
9809
+ "eumetnet:standard_name": "cloud_area_fraction"
9810
+ },
9811
+ n3: {
9812
+ type: "Parameter",
9813
+ label: "Cloud Amount Third Layer",
9814
+ description: "Past 10 minute third layer cloud amount, in okta",
9815
+ "data-type": "float",
9816
+ unit: {
9817
+ label: "okta",
9818
+ symbol: {
9819
+ value: "okta",
9820
+ type: "https://qudt.org/vocab/unit/OKTA"
9821
+ }
9822
+ },
9823
+ observedProperty: {
9824
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9825
+ label: "Cloud area fraction"
9826
+ },
9827
+ measurementType: {
9828
+ method: "N/A",
9829
+ duration: "-PT10M"
9830
+ },
9831
+ "eumetnet:standard_name": "cloud_area_fraction"
9832
+ },
9833
+ nc: {
9834
+ type: "Parameter",
9835
+ label: "Total Cloud Cover Ceilometer",
9836
+ description: "Past 10 minute total cloud cover ceilometer, in okta",
9837
+ "data-type": "float",
9838
+ unit: {
9839
+ label: "okta",
9840
+ symbol: {
9841
+ value: "okta",
9842
+ type: "https://qudt.org/vocab/unit/OKTA"
9843
+ }
9844
+ },
9845
+ observedProperty: {
9846
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9847
+ label: "Cloud area fraction"
9848
+ },
9849
+ measurementType: {
9850
+ method: "N/A",
9851
+ duration: "-PT10M"
9852
+ },
9853
+ "eumetnet:standard_name": "cloud_area_fraction"
9854
+ },
9855
+ nc1: {
9856
+ type: "Parameter",
9857
+ label: "Cloud Amount Ceilometer First Layer",
9858
+ description: "Past 10 minute first layer cloud amount ceilometer, in okta",
9859
+ "data-type": "float",
9860
+ unit: {
9861
+ label: "okta",
9862
+ symbol: {
9863
+ value: "okta",
9864
+ type: "https://qudt.org/vocab/unit/OKTA"
9865
+ }
9866
+ },
9867
+ observedProperty: {
9868
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9869
+ label: "Cloud area fraction"
9870
+ },
9871
+ measurementType: {
9872
+ method: "N/A",
9873
+ duration: "-PT10M"
9874
+ },
9875
+ "eumetnet:standard_name": "cloud_area_fraction"
9876
+ },
9877
+ nc2: {
9878
+ type: "Parameter",
9879
+ label: "Cloud Amount Ceilometer Second Layer",
9880
+ description: "Past 10 minute second layer cloud amount ceilometer, in okta",
9881
+ "data-type": "float",
9882
+ unit: {
9883
+ label: "okta",
9884
+ symbol: {
9885
+ value: "okta",
9886
+ type: "https://qudt.org/vocab/unit/OKTA"
9887
+ }
9888
+ },
9889
+ observedProperty: {
9890
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9891
+ label: "Cloud area fraction"
9892
+ },
9893
+ measurementType: {
9894
+ method: "N/A",
9895
+ duration: "-PT10M"
9896
+ },
9897
+ "eumetnet:standard_name": "cloud_area_fraction"
9898
+ },
9899
+ nc3: {
9900
+ type: "Parameter",
9901
+ label: "Cloud Amount Ceilometer Third Layer",
9902
+ description: "Past 10 minute third layer cloud amount ceilometer, in okta",
9903
+ "data-type": "float",
9904
+ unit: {
9905
+ label: "okta",
9906
+ symbol: {
9907
+ value: "okta",
9908
+ type: "https://qudt.org/vocab/unit/OKTA"
9909
+ }
9910
+ },
9911
+ observedProperty: {
9912
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9913
+ label: "Cloud area fraction"
9914
+ },
9915
+ measurementType: {
9916
+ method: "N/A",
9917
+ duration: "-PT10M"
9918
+ },
9919
+ "eumetnet:standard_name": "cloud_area_fraction"
9920
+ },
9921
+ nhc: {
9922
+ type: "Parameter",
9923
+ label: "Low and Middle Cloud Amount Ceilometer",
9924
+ description: "Past 10 minute low and middle cloud amount ceilometer, in okta",
9925
+ "data-type": "float",
9926
+ unit: {
9927
+ label: "okta",
9928
+ symbol: {
9929
+ value: "okta",
9930
+ type: "https://qudt.org/vocab/unit/OKTA"
9931
+ }
9932
+ },
9933
+ observedProperty: {
9934
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9935
+ label: "Cloud area fraction"
9936
+ },
9937
+ measurementType: {
9938
+ method: "N/A",
9939
+ duration: "-PT10M"
9940
+ },
9941
+ "eumetnet:standard_name": "cloud_area_fraction"
9942
+ },
9943
+ p0: {
9944
+ type: "Parameter",
9945
+ label: "Air Pressure at Station Level 1 Min Mean",
9946
+ description: "Past minute mean air pressure at station level",
9947
+ "data-type": "float",
9948
+ unit: {
9949
+ label: "hectopascal",
9950
+ symbol: {
9951
+ value: "hPa",
9952
+ type: "https://qudt.org/vocab/unit/HectoPA"
9953
+ }
9954
+ },
9955
+ observedProperty: {
9956
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure/",
9957
+ label: "Air pressure"
9958
+ },
9959
+ measurementType: {
9960
+ method: "mean",
9961
+ duration: "-PT1M"
9962
+ },
9963
+ "eumetnet:standard_name": "air_pressure"
9964
+ },
9965
+ pg: {
9966
+ type: "Parameter",
9967
+ label: "Precipitation Intensity (Present Weather Sensor) Mean",
9968
+ description: "Past 10 minute mean precipitation intensity in millimeters per hour, measured by Present Weather Sensor",
9969
+ "data-type": "float",
9970
+ unit: {
9971
+ label: "millimeter per hour",
9972
+ symbol: {
9973
+ value: "mm/h",
9974
+ type: "https://qudt.org/vocab/unit/MilliM-PER-HR"
9975
+ }
9976
+ },
9977
+ observedProperty: {
9978
+ id: "https://vocab.nerc.ac.uk/standard_name/lwe_precipitation_rate/",
9979
+ label: "Lwe precipitation rate"
9980
+ },
9981
+ measurementType: {
9982
+ method: "mean",
9983
+ duration: "-PT10M"
9984
+ },
9985
+ "eumetnet:standard_name": "lwe_precipitation_rate"
9986
+ },
9987
+ pp: {
9988
+ type: "Parameter",
9989
+ label: "Air Pressure at Mean Sea Level 1 Min Mean",
9990
+ description: "Past minute mean air pressure at mean sea level in hectopascal",
9991
+ "data-type": "float",
9992
+ unit: {
9993
+ label: "hectopascal",
9994
+ symbol: {
9995
+ value: "hPa",
9996
+ type: "https://qudt.org/vocab/unit/HectoPA"
9997
+ }
9998
+ },
9999
+ observedProperty: {
10000
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure_at_mean_sea_level/",
10001
+ label: "Air pressure at mean sea level"
10002
+ },
10003
+ measurementType: {
10004
+ method: "mean",
10005
+ duration: "-PT1M"
10006
+ },
10007
+ "eumetnet:standard_name": "air_pressure_at_mean_sea_level"
10008
+ },
10009
+ pr: {
10010
+ type: "Parameter",
10011
+ label: "Precipitation Duration (Present Weather Sensor)",
10012
+ description: "Past 10 minute duration of precipitation in seconds, measured by Present Weather Sensor",
10013
+ "data-type": "float",
10014
+ unit: {
10015
+ label: "second",
10016
+ symbol: {
10017
+ value: "s",
10018
+ type: "https://qudt.org/vocab/unit/SEC"
10019
+ }
10020
+ },
10021
+ observedProperty: {
10022
+ label: "Precipitation Duration",
10023
+ description: "Period during which more than 0.05 mm of precipitation was measured."
10024
+ },
10025
+ measurementType: {
10026
+ method: "N/A",
10027
+ duration: "-PT10M"
10028
+ }
10029
+ },
10030
+ ps: {
10031
+ type: "Parameter",
10032
+ label: "Air Pressure at Sensor Level Mean",
10033
+ description: "Past 10 minute mean air pressure at sensor level in hectopascal",
10034
+ "data-type": "float",
10035
+ unit: {
10036
+ label: "hectopascal",
10037
+ symbol: {
10038
+ value: "hPa",
10039
+ type: "https://qudt.org/vocab/unit/HectoPA"
10040
+ }
10041
+ },
10042
+ observedProperty: {
10043
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure/",
10044
+ label: "Air pressure"
10045
+ },
10046
+ measurementType: {
10047
+ method: "mean",
10048
+ duration: "-PT10M"
10049
+ },
10050
+ "eumetnet:standard_name": "air_pressure"
10051
+ },
10052
+ pwc: {
10053
+ type: "Parameter",
10054
+ label: "Corrected Precipitation Type Maximum",
10055
+ description: "Past 10 minute corrected maximum precipitation type; Handboek waarnemingen. 5.3 PW-code neerslagsoort; https://www.knmi.nl/kennis-en-datacentrum/publicatie/handboek-waarnemingen",
10056
+ "data-type": "integer",
10057
+ unit: {
10058
+ label: "unitless",
10059
+ symbol: {
10060
+ value: "一",
10061
+ type: "https://qudt.org/vocab/unit/UNITLESS"
10062
+ }
10063
+ },
10064
+ observedProperty: {
10065
+ id: "https://vocab.nerc.ac.uk/standard_name/predominant_precipitation_type_at_surface/",
10066
+ label: "Predominant precipitation type at surface"
10067
+ },
10068
+ measurementType: {
10069
+ method: "maximum",
10070
+ duration: "-PT10M"
10071
+ },
10072
+ "eumetnet:standard_name": "predominant_precipitation_type_at_surface"
10073
+ },
10074
+ Q1H: {
10075
+ type: "Parameter",
10076
+ label: "Global Radiation 1 Hour Sum",
10077
+ description: "Past hour sum of global radiation in the last hour, in joules per square centimeter",
10078
+ "data-type": "float",
10079
+ unit: {
10080
+ label: "joule per square centimeter",
10081
+ symbol: {
10082
+ value: "J/cm²",
10083
+ type: "https://qudt.org/vocab/unit/J-PER-CentiM2"
10084
+ }
10085
+ },
10086
+ observedProperty: {
10087
+ id: "https://vocab.nerc.ac.uk/standard_name/integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air/",
10088
+ label: "Integral wrt time of surface downwelling shortwave flux in air"
10089
+ },
10090
+ measurementType: {
10091
+ method: "sum",
10092
+ duration: "-PT1H"
10093
+ },
10094
+ "eumetnet:standard_name": "integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air"
10095
+ },
10096
+ Q24H: {
10097
+ type: "Parameter",
10098
+ label: "Global Radiation 24 Hour Sum",
10099
+ description: "Past 24 hour sum of global radiation, in joules per square centimeter",
10100
+ "data-type": "float",
10101
+ unit: {
10102
+ label: "joule per square centimeter",
10103
+ symbol: {
10104
+ value: "J/cm²",
10105
+ type: "https://qudt.org/vocab/unit/J-PER-CentiM2"
10106
+ }
10107
+ },
10108
+ observedProperty: {
10109
+ id: "https://vocab.nerc.ac.uk/standard_name/integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air/",
10110
+ label: "Integral wrt time of surface downwelling shortwave flux in air"
10111
+ },
10112
+ measurementType: {
10113
+ method: "sum",
10114
+ duration: "-PT24H"
10115
+ },
10116
+ "eumetnet:standard_name": "integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air"
10117
+ },
10118
+ qg: {
10119
+ type: "Parameter",
10120
+ label: "Global Solar Radiation Mean",
10121
+ description: "Past 10 minute mean global solar radiation in watt per square meter",
10122
+ "data-type": "float",
10123
+ unit: {
10124
+ label: "watt per square meter",
10125
+ symbol: {
10126
+ value: "W/m²",
10127
+ type: "https://qudt.org/vocab/unit/W-PER-M2"
10128
+ }
10129
+ },
10130
+ observedProperty: {
10131
+ id: "https://vocab.nerc.ac.uk/standard_name/surface_downwelling_shortwave_flux_in_air/",
10132
+ label: "Surface downwelling shortwave flux in air"
10133
+ },
10134
+ measurementType: {
10135
+ method: "mean",
10136
+ duration: "-PT10M"
10137
+ },
10138
+ "eumetnet:standard_name": "surface_downwelling_shortwave_flux_in_air"
10139
+ },
10140
+ qgn: {
10141
+ type: "Parameter",
10142
+ label: "Global Solar Radiation Minimum",
10143
+ description: "Past 10 minute minimum global solar radiation, in watt per square meter",
10144
+ "data-type": "float",
10145
+ unit: {
10146
+ label: "watt per square meter",
10147
+ symbol: {
10148
+ value: "W/m²",
10149
+ type: "https://qudt.org/vocab/unit/W-PER-M2"
10150
+ }
10151
+ },
10152
+ observedProperty: {
10153
+ id: "https://vocab.nerc.ac.uk/standard_name/surface_downwelling_shortwave_flux_in_air/",
10154
+ label: "Surface downwelling shortwave flux in air"
10155
+ },
10156
+ measurementType: {
10157
+ method: "minimum",
10158
+ duration: "-PT10M"
10159
+ },
10160
+ "eumetnet:standard_name": "surface_downwelling_shortwave_flux_in_air"
10161
+ },
10162
+ qgx: {
10163
+ type: "Parameter",
10164
+ label: "Global Solar Radiation Maximum",
10165
+ description: "Past 10 minute maximum global solar radiation, in watt per square meter",
10166
+ "data-type": "float",
10167
+ unit: {
10168
+ label: "watt per square meter",
10169
+ symbol: {
10170
+ value: "W/m²",
10171
+ type: "https://qudt.org/vocab/unit/W-PER-M2"
10172
+ }
10173
+ },
10174
+ observedProperty: {
10175
+ id: "https://vocab.nerc.ac.uk/standard_name/surface_downwelling_shortwave_flux_in_air/",
10176
+ label: "Surface downwelling shortwave flux in air"
10177
+ },
10178
+ measurementType: {
10179
+ method: "maximum",
10180
+ duration: "-PT10M"
10181
+ },
10182
+ "eumetnet:standard_name": "surface_downwelling_shortwave_flux_in_air"
10183
+ },
10184
+ qnh: {
10185
+ type: "Parameter",
10186
+ label: "QNH 1 Min Mean",
10187
+ description: "Past minute mean QNH, in hectopascal",
10188
+ "data-type": "float",
10189
+ unit: {
10190
+ label: "hectopascal",
10191
+ symbol: {
10192
+ value: "hPa",
10193
+ type: "https://qudt.org/vocab/unit/HectoPA"
10194
+ }
10195
+ },
10196
+ observedProperty: {
10197
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure_at_mean_sea_level/",
10198
+ label: "Air pressure at mean sea level"
10199
+ },
10200
+ measurementType: {
10201
+ method: "mean",
10202
+ duration: "-PT1M"
10203
+ },
10204
+ "eumetnet:standard_name": "air_pressure_at_mean_sea_level"
10205
+ },
10206
+ R12H: {
10207
+ type: "Parameter",
10208
+ label: "Rainfall in last 12 Hours",
10209
+ description: "Past 12 hour rainfall, in millimeters",
10210
+ "data-type": "float",
10211
+ unit: {
10212
+ label: "millimeter",
10213
+ symbol: {
10214
+ value: "mm",
10215
+ type: "https://qudt.org/vocab/unit/MilliM"
10216
+ }
10217
+ },
10218
+ observedProperty: {
10219
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10220
+ label: "Rainfall amount"
10221
+ },
10222
+ measurementType: {
10223
+ method: "sum",
10224
+ duration: "-PT12H"
10225
+ },
10226
+ "eumetnet:standard_name": "rainfall_amount"
10227
+ },
10228
+ R1H: {
10229
+ type: "Parameter",
10230
+ label: "Rainfall in last Hour",
10231
+ description: "Past hour rainfall, in millimeters",
10232
+ "data-type": "float",
10233
+ unit: {
10234
+ label: "millimeter",
10235
+ symbol: {
10236
+ value: "mm",
10237
+ type: "https://qudt.org/vocab/unit/MilliM"
10238
+ }
10239
+ },
10240
+ observedProperty: {
10241
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10242
+ label: "Rainfall amount"
10243
+ },
10244
+ measurementType: {
10245
+ method: "sum",
10246
+ duration: "-PT1H"
10247
+ },
10248
+ "eumetnet:standard_name": "rainfall_amount"
10249
+ },
10250
+ R24H: {
10251
+ type: "Parameter",
10252
+ label: "Rainfall in last 24 Hours",
10253
+ description: "Past 24 hour rainfall, in millimeters",
10254
+ "data-type": "float",
10255
+ unit: {
10256
+ label: "millimeter",
10257
+ symbol: {
10258
+ value: "mm",
10259
+ type: "https://qudt.org/vocab/unit/MilliM"
10260
+ }
10261
+ },
10262
+ observedProperty: {
10263
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10264
+ label: "Rainfall amount"
10265
+ },
10266
+ measurementType: {
10267
+ method: "sum",
10268
+ duration: "-PT24H"
10269
+ },
10270
+ "eumetnet:standard_name": "rainfall_amount"
10271
+ },
10272
+ R6H: {
10273
+ type: "Parameter",
10274
+ label: "Rainfall in last 6 Hours",
10275
+ description: "Past 6 hour rainfall, in millimeters",
10276
+ "data-type": "float",
10277
+ unit: {
10278
+ label: "millimeter",
10279
+ symbol: {
10280
+ value: "mm",
10281
+ type: "https://qudt.org/vocab/unit/MilliM"
10282
+ }
10283
+ },
10284
+ observedProperty: {
10285
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10286
+ label: "Rainfall amount"
10287
+ },
10288
+ measurementType: {
10289
+ method: "sum",
10290
+ duration: "-PT6H"
10291
+ },
10292
+ "eumetnet:standard_name": "rainfall_amount"
10293
+ },
10294
+ rg: {
10295
+ type: "Parameter",
10296
+ label: "Precipitation Intensity (Rain Gauge) Mean",
10297
+ description: "Past 10 minute mean precipitation intensity in millimeters per hour, measured by rain gauge",
10298
+ "data-type": "float",
10299
+ unit: {
10300
+ label: "millimeter per hour",
10301
+ symbol: {
10302
+ value: "mm/h",
10303
+ type: "https://qudt.org/vocab/unit/MilliM-PER-HR"
10304
+ }
10305
+ },
10306
+ observedProperty: {
10307
+ id: "https://vocab.nerc.ac.uk/standard_name/lwe_precipitation_rate/",
10308
+ label: "Lwe precipitation rate"
10309
+ },
10310
+ measurementType: {
10311
+ method: "mean",
10312
+ duration: "-PT10M"
10313
+ },
10314
+ "eumetnet:standard_name": "lwe_precipitation_rate"
10315
+ },
10316
+ rh: {
10317
+ type: "Parameter",
10318
+ label: "Relative Humidity 1.50 m 1 Min Mean",
10319
+ description: "Past minute mean relative humidity at 1.50 meters, in percentage",
10320
+ "data-type": "float",
10321
+ unit: {
10322
+ label: "percent",
10323
+ symbol: {
10324
+ value: "%",
10325
+ type: "https://qudt.org/vocab/unit/PERCENT"
10326
+ }
10327
+ },
10328
+ observedProperty: {
10329
+ id: "https://vocab.nerc.ac.uk/standard_name/relative_humidity/",
10330
+ label: "Relative humidity"
10331
+ },
10332
+ measurementType: {
10333
+ method: "mean",
10334
+ duration: "-PT1M"
10335
+ },
10336
+ "eumetnet:standard_name": "relative_humidity",
10337
+ "eumetnet:level": 1.5
10338
+ },
10339
+ rh10: {
10340
+ type: "Parameter",
10341
+ label: "Relative Humidity Mean",
10342
+ description: "10 minute mean relative humidity, in percentage",
10343
+ "data-type": "float",
10344
+ unit: {
10345
+ label: "percent",
10346
+ symbol: {
10347
+ value: "%",
10348
+ type: "https://qudt.org/vocab/unit/PERCENT"
10349
+ }
10350
+ },
10351
+ observedProperty: {
10352
+ id: "https://vocab.nerc.ac.uk/standard_name/relative_humidity/",
10353
+ label: "Relative humidity"
10354
+ },
10355
+ measurementType: {
10356
+ method: "mean",
10357
+ duration: "N/A"
10358
+ },
10359
+ "eumetnet:standard_name": "relative_humidity"
10360
+ },
10361
+ Sav1H: {
10362
+ type: "Parameter",
10363
+ label: "Wind Speed Mean last 1 Hour",
10364
+ description: "Past hour mean wind speed, in meters per second",
10365
+ "data-type": "float",
10366
+ unit: {
10367
+ label: "meter per second",
10368
+ symbol: {
10369
+ value: "m/s",
10370
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10371
+ }
10372
+ },
10373
+ observedProperty: {
10374
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10375
+ label: "Wind speed"
10376
+ },
10377
+ measurementType: {
10378
+ method: "mean",
10379
+ duration: "-PT1H"
10380
+ },
10381
+ "eumetnet:standard_name": "wind_speed"
10382
+ },
10383
+ Sax1H: {
10384
+ type: "Parameter",
10385
+ label: "Wind Speed Maximum last 1 Hour",
10386
+ description: "Past hour maximum wind speed, in meters per second",
10387
+ "data-type": "float",
10388
+ unit: {
10389
+ label: "meter per second",
10390
+ symbol: {
10391
+ value: "m/s",
10392
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10393
+ }
10394
+ },
10395
+ observedProperty: {
10396
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10397
+ label: "Wind speed"
10398
+ },
10399
+ measurementType: {
10400
+ method: "maximum",
10401
+ duration: "-PT1H"
10402
+ },
10403
+ "eumetnet:standard_name": "wind_speed"
10404
+ },
10405
+ Sax3H: {
10406
+ type: "Parameter",
10407
+ label: "Wind Speed Maximum last 3 Hours",
10408
+ description: "Past 3 hour maximum wind speed, in meters per second",
10409
+ "data-type": "float",
10410
+ unit: {
10411
+ label: "meter per second",
10412
+ symbol: {
10413
+ value: "m/s",
10414
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10415
+ }
10416
+ },
10417
+ observedProperty: {
10418
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10419
+ label: "Wind speed"
10420
+ },
10421
+ measurementType: {
10422
+ method: "maximum",
10423
+ duration: "-PT3H"
10424
+ },
10425
+ "eumetnet:standard_name": "wind_speed"
10426
+ },
10427
+ Sax6H: {
10428
+ type: "Parameter",
10429
+ label: "Wind Speed Maximum last 6 Hours",
10430
+ description: "Past 6 hour maximum wind speed, in meters per second",
10431
+ "data-type": "float",
10432
+ unit: {
10433
+ label: "meter per second",
10434
+ symbol: {
10435
+ value: "m/s",
10436
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10437
+ }
10438
+ },
10439
+ observedProperty: {
10440
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10441
+ label: "Wind speed"
10442
+ },
10443
+ measurementType: {
10444
+ method: "maximum",
10445
+ duration: "-PT6H"
10446
+ },
10447
+ "eumetnet:standard_name": "wind_speed"
10448
+ },
10449
+ sq: {
10450
+ type: "Parameter",
10451
+ label: "Squall Indicator",
10452
+ description: "Past 10 minute squall indicator, 0: no squall, 1: squall, or empty",
10453
+ "data-type": "integer",
10454
+ unit: {
10455
+ label: "unitless",
10456
+ symbol: {
10457
+ value: "一",
10458
+ type: "https://qudt.org/vocab/unit/UNITLESS"
10459
+ }
10460
+ },
10461
+ observedProperty: {
10462
+ label: "squall indicator",
10463
+ description: "A squall is defined by a sudden increase in wind speed of at least 8 m/s (16 knots), the speed rising to 11 m/s (22 knots) or more and lasting for at least one minute"
10464
+ },
10465
+ measurementType: {
10466
+ method: "N/A",
10467
+ duration: "-PT10M"
10468
+ }
10469
+ },
10470
+ ss: {
10471
+ type: "Parameter",
10472
+ label: "Sunshine Duration",
10473
+ description: "Past 10 minute duration of sunshine in minutes",
10474
+ "data-type": "float",
10475
+ unit: {
10476
+ label: "minute",
10477
+ symbol: {
10478
+ value: "min",
10479
+ type: "https://qudt.org/vocab/unit/MIN"
10480
+ }
10481
+ },
10482
+ observedProperty: {
10483
+ id: "https://vocab.nerc.ac.uk/standard_name/duration_of_sunshine/",
10484
+ label: "Duration of sunshine"
10485
+ },
10486
+ measurementType: {
10487
+ method: "sum",
10488
+ duration: "-PT10M"
10489
+ }
10490
+ },
10491
+ Sx1H: {
10492
+ type: "Parameter",
10493
+ label: "Wind Gust Maximum last 1 Hour",
10494
+ description: "Past hour maximum wind gust, in meters per second",
10495
+ "data-type": "float",
10496
+ unit: {
10497
+ label: "meter per second",
10498
+ symbol: {
10499
+ value: "m/s",
10500
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10501
+ }
10502
+ },
10503
+ observedProperty: {
10504
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
10505
+ label: "Wind speed of gust"
10506
+ },
10507
+ measurementType: {
10508
+ method: "maximum",
10509
+ duration: "-PT1H"
10510
+ },
10511
+ "eumetnet:standard_name": "wind_speed_of_gust"
10512
+ },
10513
+ Sx3H: {
10514
+ type: "Parameter",
10515
+ label: "Wind Gust Maximum last 3 Hours",
10516
+ description: "Past 3 hour maximum wind gust, in meters per second",
10517
+ "data-type": "float",
10518
+ unit: {
10519
+ label: "meter per second",
10520
+ symbol: {
10521
+ value: "m/s",
10522
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10523
+ }
10524
+ },
10525
+ observedProperty: {
10526
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
10527
+ label: "Wind speed of gust"
10528
+ },
10529
+ measurementType: {
10530
+ method: "maximum",
10531
+ duration: "-PT3H"
10532
+ },
10533
+ "eumetnet:standard_name": "wind_speed_of_gust"
10534
+ },
10535
+ Sx6H: {
10536
+ type: "Parameter",
10537
+ label: "Wind Gust Maximum last 6 Hours",
10538
+ description: "Past 6 hour maximum wind gust, in meters per second",
10539
+ "data-type": "float",
10540
+ unit: {
10541
+ label: "meter per second",
10542
+ symbol: {
10543
+ value: "m/s",
10544
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10545
+ }
10546
+ },
10547
+ observedProperty: {
10548
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
10549
+ label: "Wind speed of gust"
10550
+ },
10551
+ measurementType: {
10552
+ method: "maximum",
10553
+ duration: "-PT6H"
10554
+ },
10555
+ "eumetnet:standard_name": "wind_speed_of_gust"
10556
+ },
10557
+ t10: {
10558
+ type: "Parameter",
10559
+ label: "Air Temperature Mean",
10560
+ description: "10 minute mean air temperature, in degrees Celsius",
10561
+ "data-type": "float",
10562
+ unit: {
10563
+ label: "degrees celsius",
10564
+ symbol: {
10565
+ value: "°C",
10566
+ type: "https://qudt.org/vocab/unit/DEG_C"
10567
+ }
10568
+ },
10569
+ observedProperty: {
10570
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10571
+ label: "Air temperature"
10572
+ },
10573
+ measurementType: {
10574
+ method: "mean",
10575
+ duration: "N/A"
10576
+ },
10577
+ "eumetnet:standard_name": "air_temperature"
10578
+ },
10579
+ ta: {
10580
+ type: "Parameter",
10581
+ label: "Air Temperature 1.50 m 1 Min Mean",
10582
+ description: "Past minute mean air temperature at 1.50 meters, in degrees Celsius",
10583
+ "data-type": "float",
10584
+ unit: {
10585
+ label: "degrees celsius",
10586
+ symbol: {
10587
+ value: "°C",
10588
+ type: "https://qudt.org/vocab/unit/DEG_C"
10589
+ }
10590
+ },
10591
+ observedProperty: {
10592
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10593
+ label: "Air temperature"
10594
+ },
10595
+ measurementType: {
10596
+ method: "mean",
10597
+ duration: "-PT1M"
10598
+ },
10599
+ "eumetnet:standard_name": "air_temperature",
10600
+ "eumetnet:level": 1.5
10601
+ },
10602
+ tb: {
10603
+ type: "Parameter",
10604
+ label: "Wet Bulb Temperature 1.50 m Mean",
10605
+ description: "Past 10 minute mean wet bulb temperature at 1.50 meters, in degrees Celsius",
10606
+ "data-type": "float",
10607
+ unit: {
10608
+ label: "degrees celsius",
10609
+ symbol: {
10610
+ value: "°C",
10611
+ type: "https://qudt.org/vocab/unit/DEG_C"
10612
+ }
10613
+ },
10614
+ observedProperty: {
10615
+ id: "https://vocab.nerc.ac.uk/standard_name/wet_bulb_temperature/",
10616
+ label: "Wet bulb temperature"
10617
+ },
10618
+ measurementType: {
10619
+ method: "mean",
10620
+ duration: "-PT10M"
10621
+ },
10622
+ "eumetnet:standard_name": "soil_temperature"
10623
+ },
10624
+ tb1: {
10625
+ type: "Parameter",
10626
+ label: "Soil Temperature -5 cm Mean",
10627
+ description: "Past 10 minute mean soil temperature at -5 centimeters, in degrees Celsius",
10628
+ "data-type": "float",
10629
+ unit: {
10630
+ label: "degrees celsius",
10631
+ symbol: {
10632
+ value: "°C",
10633
+ type: "https://qudt.org/vocab/unit/DEG_C"
10634
+ }
10635
+ },
10636
+ observedProperty: {
10637
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10638
+ label: "Soil temperature"
10639
+ },
10640
+ measurementType: {
10641
+ method: "mean",
10642
+ duration: "-PT10M"
10643
+ },
10644
+ "eumetnet:standard_name": "soil_temperature",
10645
+ "eumetnet:level": -0.05
10646
+ },
10647
+ Tb1n6: {
10648
+ type: "Parameter",
10649
+ label: "Soil Temperature -5 cm Minimum last 6 Hours",
10650
+ description: "Past 6 hour minimum soil temperature at -5 centimeters, in degrees Celsius",
10651
+ "data-type": "float",
10652
+ unit: {
10653
+ label: "degrees celsius",
10654
+ symbol: {
10655
+ value: "°C",
10656
+ type: "https://qudt.org/vocab/unit/DEG_C"
10657
+ }
10658
+ },
10659
+ observedProperty: {
10660
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10661
+ label: "Soil temperature"
10662
+ },
10663
+ measurementType: {
10664
+ method: "minimum",
10665
+ duration: "-PT6H"
10666
+ },
10667
+ "eumetnet:standard_name": "soil_temperature",
10668
+ "eumetnet:level": -0.05
10669
+ },
10670
+ Tb1x6: {
10671
+ type: "Parameter",
10672
+ label: "Soil Temperature -5 cm Maximum last 6 Hours",
10673
+ description: "Past 6 hour maximum soil temperature at -5 centimeters, in degrees Celsius",
10674
+ "data-type": "float",
10675
+ unit: {
10676
+ label: "degrees celsius",
10677
+ symbol: {
10678
+ value: "°C",
10679
+ type: "https://qudt.org/vocab/unit/DEG_C"
10680
+ }
10681
+ },
10682
+ observedProperty: {
10683
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10684
+ label: "Soil temperature"
10685
+ },
10686
+ measurementType: {
10687
+ method: "maximum",
10688
+ duration: "-PT6H"
10689
+ },
10690
+ "eumetnet:standard_name": "soil_temperature",
10691
+ "eumetnet:level": -0.05
10692
+ },
10693
+ tb2: {
10694
+ type: "Parameter",
10695
+ label: "Soil Temperature -10 cm Mean",
10696
+ description: "Past 10 minute mean soil temperature at -10 centimeters, in degrees Celsius",
10697
+ "data-type": "float",
10698
+ unit: {
10699
+ label: "degrees celsius",
10700
+ symbol: {
10701
+ value: "°C",
10702
+ type: "https://qudt.org/vocab/unit/DEG_C"
10703
+ }
10704
+ },
10705
+ observedProperty: {
10706
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10707
+ label: "Soil temperature"
10708
+ },
10709
+ measurementType: {
10710
+ method: "mean",
10711
+ duration: "-PT10M"
10712
+ },
10713
+ "eumetnet:standard_name": "soil_temperature",
10714
+ "eumetnet:level": -0.1
10715
+ },
10716
+ Tb2n6: {
10717
+ type: "Parameter",
10718
+ label: "Soil Temperature -10 cm Minimum past 6 Hours",
10719
+ description: "Past 6 hour maximum soil temperature at -10 centimeters, in degrees Celsius",
10720
+ "data-type": "float",
10721
+ unit: {
10722
+ label: "degrees celsius",
10723
+ symbol: {
10724
+ value: "°C",
10725
+ type: "https://qudt.org/vocab/unit/DEG_C"
10726
+ }
10727
+ },
10728
+ observedProperty: {
10729
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10730
+ label: "Soil temperature"
10731
+ },
10732
+ measurementType: {
10733
+ method: "minimum",
10734
+ duration: "-PT6H"
10735
+ },
10736
+ "eumetnet:standard_name": "soil_temperature",
10737
+ "eumetnet:level": -0.1
10738
+ },
10739
+ Tb2x6: {
10740
+ type: "Parameter",
10741
+ label: "Soil Temperature -10 cm Maximum past 6 Hours",
10742
+ description: "Past 6 hour maximum soil temperature at -10 centimeters, in degrees Celsius",
10743
+ "data-type": "float",
10744
+ unit: {
10745
+ label: "degrees celsius",
10746
+ symbol: {
10747
+ value: "°C",
10748
+ type: "https://qudt.org/vocab/unit/DEG_C"
10749
+ }
10750
+ },
10751
+ observedProperty: {
10752
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10753
+ label: "Soil temperature"
10754
+ },
10755
+ measurementType: {
10756
+ method: "maximum",
10757
+ duration: "-PT6H"
10758
+ },
10759
+ "eumetnet:standard_name": "soil_temperature",
10760
+ "eumetnet:level": -0.1
10761
+ },
10762
+ tb3: {
10763
+ type: "Parameter",
10764
+ label: "Soil Temperature -20 cm Mean",
10765
+ description: "Past 10 minute mean soil temperature at -20 centimeters, in degrees Celsius",
10766
+ "data-type": "float",
10767
+ unit: {
10768
+ label: "degrees celsius",
10769
+ symbol: {
10770
+ value: "°C",
10771
+ type: "https://qudt.org/vocab/unit/DEG_C"
10772
+ }
10773
+ },
10774
+ observedProperty: {
10775
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10776
+ label: "Soil temperature"
10777
+ },
10778
+ measurementType: {
10779
+ method: "mean",
10780
+ duration: "-PT10M"
10781
+ },
10782
+ "eumetnet:standard_name": "soil_temperature",
10783
+ "eumetnet:level": -0.2
10784
+ },
10785
+ tb4: {
10786
+ type: "Parameter",
10787
+ label: "Soil Temperature -50 cm Mean",
10788
+ description: "Past 10 minute mean soil temperature at -50 centimeters, in degrees Celsius",
10789
+ "data-type": "float",
10790
+ unit: {
10791
+ label: "degrees celsius",
10792
+ symbol: {
10793
+ value: "°C",
10794
+ type: "https://qudt.org/vocab/unit/DEG_C"
10795
+ }
10796
+ },
10797
+ observedProperty: {
10798
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10799
+ label: "Soil temperature"
10800
+ },
10801
+ measurementType: {
10802
+ method: "mean",
10803
+ duration: "-PT10M"
10804
+ },
10805
+ "eumetnet:standard_name": "soil_temperature",
10806
+ "eumetnet:level": -0.5
10807
+ },
10808
+ tb5: {
10809
+ type: "Parameter",
10810
+ label: "Soil Temperature -100 cm Mean",
10811
+ description: "Past 10 minute mean soil temperature at -100 centimeters, in degrees Celsius",
10812
+ "data-type": "float",
10813
+ unit: {
10814
+ label: "degrees celsius",
10815
+ symbol: {
10816
+ value: "°C",
10817
+ type: "https://qudt.org/vocab/unit/DEG_C"
10818
+ }
10819
+ },
10820
+ observedProperty: {
10821
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10822
+ label: "Soil temperature"
10823
+ },
10824
+ measurementType: {
10825
+ method: "mean",
10826
+ duration: "-PT10M"
10827
+ },
10828
+ "eumetnet:standard_name": "soil_temperature",
10829
+ "eumetnet:level": -1
10830
+ },
10831
+ td: {
10832
+ type: "Parameter",
10833
+ label: "Dew Point Temperature 1.50 m 1 Min Mean",
10834
+ description: "Past minute mean dew point temperature at 1.50 meters, in degrees Celsius",
10835
+ "data-type": "float",
10836
+ unit: {
10837
+ label: "degrees celsius",
10838
+ symbol: {
10839
+ value: "°C",
10840
+ type: "https://qudt.org/vocab/unit/DEG_C"
10841
+ }
10842
+ },
10843
+ observedProperty: {
10844
+ id: "https://vocab.nerc.ac.uk/standard_name/dew_point_temperature/",
10845
+ label: "Dew point temperature"
10846
+ },
10847
+ measurementType: {
10848
+ method: "mean",
10849
+ duration: "-PT1M"
10850
+ },
10851
+ "eumetnet:standard_name": "dew_point_temperature"
10852
+ },
10853
+ td10: {
10854
+ type: "Parameter",
10855
+ label: "Dew Point Temperature Mean",
10856
+ description: "10 minute mean dew point temperature, in degrees Celsius",
10857
+ "data-type": "float",
10858
+ unit: {
10859
+ label: "degrees celsius",
10860
+ symbol: {
10861
+ value: "°C",
10862
+ type: "https://qudt.org/vocab/unit/DEG_C"
10863
+ }
10864
+ },
10865
+ observedProperty: {
10866
+ id: "https://vocab.nerc.ac.uk/standard_name/dew_point_temperature/",
10867
+ label: "Dew point temperature"
10868
+ },
10869
+ measurementType: {
10870
+ method: "mean",
10871
+ duration: "N/A"
10872
+ },
10873
+ "eumetnet:standard_name": "dew_point_temperature"
10874
+ },
10875
+ tg: {
10876
+ type: "Parameter",
10877
+ label: "Air Temperature 10 cm Mean",
10878
+ description: "Past 10 minute mean air temperature at 10 centimeters, in degrees Celsius",
10879
+ "data-type": "float",
10880
+ unit: {
10881
+ label: "degrees celsius",
10882
+ symbol: {
10883
+ value: "°C",
10884
+ type: "https://qudt.org/vocab/unit/DEG_C"
10885
+ }
10886
+ },
10887
+ observedProperty: {
10888
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10889
+ label: "Air temperature"
10890
+ },
10891
+ measurementType: {
10892
+ method: "mean",
10893
+ duration: "-PT10M"
10894
+ },
10895
+ "eumetnet:standard_name": "air_temperature",
10896
+ "eumetnet:level": 0.1
10897
+ },
10898
+ tgn: {
10899
+ type: "Parameter",
10900
+ label: "Air Temperature 10 cm Minimum",
10901
+ description: "Past 10 minute minimum air temperature at 10 centimeters, in degrees Celsius",
10902
+ "data-type": "float",
10903
+ unit: {
10904
+ label: "degrees celsius",
10905
+ symbol: {
10906
+ value: "°C",
10907
+ type: "https://qudt.org/vocab/unit/DEG_C"
10908
+ }
10909
+ },
10910
+ observedProperty: {
10911
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10912
+ label: "Air temperature"
10913
+ },
10914
+ measurementType: {
10915
+ method: "minimum",
10916
+ duration: "-PT10M"
10917
+ },
10918
+ "eumetnet:standard_name": "air_temperature",
10919
+ "eumetnet:level": 0.1
10920
+ },
10921
+ Tgn12: {
10922
+ type: "Parameter",
10923
+ label: "Air Temperature 10 cm Minimum last 12 Hours",
10924
+ description: "Past 12 hour minimum air temperature at 10 centimeters, in degrees Celsius",
10925
+ "data-type": "float",
10926
+ unit: {
10927
+ label: "degrees celsius",
10928
+ symbol: {
10929
+ value: "°C",
10930
+ type: "https://qudt.org/vocab/unit/DEG_C"
10931
+ }
10932
+ },
10933
+ observedProperty: {
10934
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10935
+ label: "Air temperature"
10936
+ },
10937
+ measurementType: {
10938
+ method: "minimum",
10939
+ duration: "-PT12H"
10940
+ },
10941
+ "eumetnet:standard_name": "air_temperature",
10942
+ "eumetnet:level": 0.1
10943
+ },
10944
+ Tgn14: {
10945
+ type: "Parameter",
10946
+ label: "Air Temperature 10 cm Minimum last 14 Hours",
10947
+ description: "Past 14 hour minimum air temperature at 10 centimeters, in degrees Celsius",
10948
+ "data-type": "float",
10949
+ unit: {
10950
+ label: "degrees celsius",
10951
+ symbol: {
10952
+ value: "°C",
10953
+ type: "https://qudt.org/vocab/unit/DEG_C"
10954
+ }
10955
+ },
10956
+ observedProperty: {
10957
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10958
+ label: "Air temperature"
10959
+ },
10960
+ measurementType: {
10961
+ method: "minimum",
10962
+ duration: "-PT14H"
10963
+ },
10964
+ "eumetnet:standard_name": "air_temperature",
10965
+ "eumetnet:level": 0.1
10966
+ },
10967
+ Tgn6: {
10968
+ type: "Parameter",
10969
+ label: "Air Temperature 10 cm Minimum last 6 Hours",
10970
+ description: "Past 6 hour minimum air temperature at 10 centimeters, in degrees Celsius",
10971
+ "data-type": "float",
10972
+ unit: {
10973
+ label: "degrees celsius",
10974
+ symbol: {
10975
+ value: "°C",
10976
+ type: "https://qudt.org/vocab/unit/DEG_C"
10977
+ }
10978
+ },
10979
+ observedProperty: {
10980
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10981
+ label: "Air temperature"
10982
+ },
10983
+ measurementType: {
10984
+ method: "minimum",
10985
+ duration: "-PT6H"
10986
+ },
10987
+ "eumetnet:standard_name": "air_temperature",
10988
+ "eumetnet:level": 0.1
10989
+ },
10990
+ tn: {
10991
+ type: "Parameter",
10992
+ label: "Air Temperature 1.50 m Minimum",
10993
+ description: "Past 10 minute minimum air temperature at 1.50 meters, in degrees Celsius",
10994
+ "data-type": "float",
10995
+ unit: {
10996
+ label: "degrees celsius",
10997
+ symbol: {
10998
+ value: "°C",
10999
+ type: "https://qudt.org/vocab/unit/DEG_C"
11000
+ }
11001
+ },
11002
+ observedProperty: {
11003
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11004
+ label: "Air temperature"
11005
+ },
11006
+ measurementType: {
11007
+ method: "minimum",
11008
+ duration: "-PT10M"
11009
+ },
11010
+ "eumetnet:standard_name": "air_temperature",
11011
+ "eumetnet:level": 1.5
11012
+ },
11013
+ Tn12: {
11014
+ type: "Parameter",
11015
+ label: "Air Temperature Minimum last 12 Hours",
11016
+ description: "Past 12 hour minimum air temperature, in degrees Celsius",
11017
+ "data-type": "float",
11018
+ unit: {
11019
+ label: "degrees celsius",
11020
+ symbol: {
11021
+ value: "°C",
11022
+ type: "https://qudt.org/vocab/unit/DEG_C"
11023
+ }
11024
+ },
11025
+ observedProperty: {
11026
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11027
+ label: "Air temperature"
11028
+ },
11029
+ measurementType: {
11030
+ method: "minimum",
11031
+ duration: "-PT12H"
11032
+ },
11033
+ "eumetnet:standard_name": "air_temperature",
11034
+ "eumetnet:level": 1.5
11035
+ },
11036
+ Tn14: {
11037
+ type: "Parameter",
11038
+ label: "Air Temperature Minimum last 14 Hours",
11039
+ description: "Past 14 hour minimum air temperature, in degrees Celsius",
11040
+ "data-type": "float",
11041
+ unit: {
11042
+ label: "degrees celsius",
11043
+ symbol: {
11044
+ value: "°C",
11045
+ type: "https://qudt.org/vocab/unit/DEG_C"
11046
+ }
11047
+ },
11048
+ observedProperty: {
11049
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11050
+ label: "Air temperature"
11051
+ },
11052
+ measurementType: {
11053
+ method: "minimum",
11054
+ duration: "-PT14H"
11055
+ },
11056
+ "eumetnet:standard_name": "air_temperature",
11057
+ "eumetnet:level": 1.5
11058
+ },
11059
+ Tn6: {
11060
+ type: "Parameter",
11061
+ label: "Air Temperature Minimum last 6 Hours",
11062
+ description: "Past 6 hour minimum air temperature, in degrees Celsius",
11063
+ "data-type": "float",
11064
+ unit: {
11065
+ label: "degrees celsius",
11066
+ symbol: {
11067
+ value: "°C",
11068
+ type: "https://qudt.org/vocab/unit/DEG_C"
11069
+ }
11070
+ },
11071
+ observedProperty: {
11072
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11073
+ label: "Air temperature"
11074
+ },
11075
+ measurementType: {
11076
+ method: "minimum",
11077
+ duration: "-PT6H"
11078
+ },
11079
+ "eumetnet:standard_name": "air_temperature",
11080
+ "eumetnet:level": 1.5
11081
+ },
11082
+ tsd: {
11083
+ type: "Parameter",
11084
+ label: "Air Temperature Std Dev",
11085
+ description: "Past 10 minute standard deviation of all air temperature samples, in degrees Celsius",
11086
+ "data-type": "float",
11087
+ unit: {
11088
+ label: "degrees celsius",
11089
+ symbol: {
11090
+ value: "°C",
11091
+ type: "https://qudt.org/vocab/unit/DEG_C"
11092
+ }
11093
+ },
11094
+ observedProperty: {
11095
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11096
+ label: "Air temperature"
11097
+ },
11098
+ measurementType: {
11099
+ method: "stddev",
11100
+ duration: "-PT10M"
11101
+ },
11102
+ "eumetnet:level": 1.5
11103
+ },
11104
+ tx: {
11105
+ type: "Parameter",
11106
+ label: "Air Temperature 1.50 m Maximum",
11107
+ description: "Past 10 minute maximum air temperature at 1.50 meters, in degrees Celsius",
11108
+ "data-type": "float",
11109
+ unit: {
11110
+ label: "degrees celsius",
11111
+ symbol: {
11112
+ value: "°C",
11113
+ type: "https://qudt.org/vocab/unit/DEG_C"
11114
+ }
11115
+ },
11116
+ observedProperty: {
11117
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11118
+ label: "Air temperature"
11119
+ },
11120
+ measurementType: {
11121
+ method: "maximum",
11122
+ duration: "-PT10M"
11123
+ },
11124
+ "eumetnet:standard_name": "air_temperature",
11125
+ "eumetnet:level": 1.5
11126
+ },
11127
+ Tx12: {
11128
+ type: "Parameter",
11129
+ label: "Air Temperature Maximum last 12 Hours",
11130
+ description: "Past 12 hour maximum air temperature, in degrees Celsius",
11131
+ "data-type": "float",
11132
+ unit: {
11133
+ label: "degrees celsius",
11134
+ symbol: {
11135
+ value: "°C",
11136
+ type: "https://qudt.org/vocab/unit/DEG_C"
11137
+ }
11138
+ },
11139
+ observedProperty: {
11140
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11141
+ label: "Air temperature"
11142
+ },
11143
+ measurementType: {
11144
+ method: "maximum",
11145
+ duration: "-PT12H"
11146
+ },
11147
+ "eumetnet:standard_name": "air_temperature",
11148
+ "eumetnet:level": 1.5
11149
+ },
11150
+ Tx24: {
11151
+ type: "Parameter",
11152
+ label: "Air Temperature Maximum last 24 Hours",
11153
+ description: "Past 24 hour maximum air temperature, in degrees Celsius",
11154
+ "data-type": "float",
11155
+ unit: {
11156
+ label: "degrees celsius",
11157
+ symbol: {
11158
+ value: "°C",
11159
+ type: "https://qudt.org/vocab/unit/DEG_C"
11160
+ }
11161
+ },
11162
+ observedProperty: {
11163
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11164
+ label: "Air temperature"
11165
+ },
11166
+ measurementType: {
11167
+ method: "maximum",
11168
+ duration: "-PT24H"
11169
+ },
11170
+ "eumetnet:standard_name": "air_temperature",
11171
+ "eumetnet:level": 1.5
11172
+ },
11173
+ Tx6: {
11174
+ type: "Parameter",
11175
+ label: "Air Temperature Maximum last 6 Hours",
11176
+ description: "Past 6 hour maximum air temperature, in degrees Celsius",
11177
+ "data-type": "float",
11178
+ unit: {
11179
+ label: "degrees celsius",
11180
+ symbol: {
11181
+ value: "°C",
11182
+ type: "https://qudt.org/vocab/unit/DEG_C"
11183
+ }
11184
+ },
11185
+ observedProperty: {
11186
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11187
+ label: "Air temperature"
11188
+ },
11189
+ measurementType: {
11190
+ method: "maximum",
11191
+ duration: "-PT6H"
11192
+ },
11193
+ "eumetnet:standard_name": "air_temperature",
11194
+ "eumetnet:level": 1.5
11195
+ },
11196
+ vv: {
11197
+ type: "Parameter",
11198
+ label: "Horizontal Visibility Mean",
11199
+ description: "Past 10 minute mean horizontal visibility, in meters",
11200
+ "data-type": "float",
11201
+ unit: {
11202
+ label: "meter",
11203
+ symbol: {
11204
+ value: "m",
11205
+ type: "https://qudt.org/vocab/unit/M.html"
11206
+ }
11207
+ },
11208
+ observedProperty: {
11209
+ id: "https://vocab.nerc.ac.uk/standard_name/visibility_in_air/",
11210
+ label: "Visibility in air"
11211
+ },
11212
+ measurementType: {
11213
+ method: "mean",
11214
+ duration: "-PT10M"
11215
+ },
11216
+ "eumetnet:standard_name": "visibility_in_air"
11217
+ },
11218
+ W10: {
11219
+ type: "Parameter",
11220
+ label: "Past Weather Indicator",
11221
+ description: "Past 10 minute Past Weather Indicator (W10); Handboek waarnemingen. 5.4 Weercodegenerator. Tabel 6; https://www.knmi.nl/kennis-en-datacentrum/publicatie/handboek-waarnemingen",
11222
+ "data-type": "integer",
11223
+ unit: {
11224
+ label: "unitless",
11225
+ symbol: {
11226
+ value: "一",
11227
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11228
+ }
11229
+ },
11230
+ observedProperty: {
11231
+ label: "Present weather code",
11232
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11233
+ },
11234
+ measurementType: {
11235
+ method: "N/A",
11236
+ duration: "-PT10M"
11237
+ }
11238
+ },
11239
+ "W10-10": {
11240
+ type: "Parameter",
11241
+ label: "Past Weather Indicator for previous 10 min interval",
11242
+ description: "Previous 10 minute interval Past Weather Indicator (W10); Handboek waarnemingen. 5.4 Weercodegenerator. Tabel 6; https://www.knmi.nl/kennis-en-datacentrum/publicatie/handboek-waarnemingen",
11243
+ "data-type": "integer",
11244
+ unit: {
11245
+ label: "unitless",
11246
+ symbol: {
11247
+ value: "一",
11248
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11249
+ }
11250
+ },
11251
+ observedProperty: {
11252
+ label: "Present weather code",
11253
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11254
+ }
11255
+ },
11256
+ ww: {
11257
+ type: "Parameter",
11258
+ label: "WaWa Weather Code",
11259
+ description: "Past 10 minute WaWa Weather Code; Handboek waarnemingen; 5.4 Weercodegenerator; Tabel 6; https://www.knmi.nl/kennis-en-datacentrum/publicatie/handboek-waarnemingen",
11260
+ "data-type": "float",
11261
+ unit: {
11262
+ label: "unitless",
11263
+ symbol: {
11264
+ value: "一",
11265
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11266
+ }
11267
+ },
11268
+ observedProperty: {
11269
+ label: "Present weather code",
11270
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11271
+ },
11272
+ measurementType: {
11273
+ method: "N/A",
11274
+ duration: "-PT10M"
11275
+ }
11276
+ },
11277
+ "ww-10": {
11278
+ type: "Parameter",
11279
+ label: "WaWa Weather Code for previous 10 min interval",
11280
+ description: "Previous 10 minute interval WaWa Weather Code Handboek waarnemingen; 5.4 Weercodegenerator; Tabel 6; https://www.knmi.nl/kennis-en-datacentrum/publicatie/handboek-waarnemingen",
11281
+ "data-type": "float",
11282
+ unit: {
11283
+ label: "unitless",
11284
+ symbol: {
11285
+ value: "一",
11286
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11287
+ }
11288
+ },
11289
+ observedProperty: {
11290
+ label: "Present weather code",
11291
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11292
+ }
11293
+ },
11294
+ za: {
11295
+ type: "Parameter",
11296
+ label: "Background Luminance Mean",
11297
+ description: "Past 10 minute mean background luminance, in candela per square meter",
11298
+ "data-type": "float",
11299
+ unit: {
11300
+ label: "candela per square meter",
11301
+ symbol: {
11302
+ value: "cd/m²",
11303
+ type: "https://qudt.org/vocab/unit/CD-PER-M2"
11304
+ }
11305
+ },
11306
+ observedProperty: {
11307
+ label: "Background Luminance",
11308
+ description: "Background Luminance is a measured parameter that represents the intensity of the background brightness of the sky. This value is displayed in cd/m²"
11309
+ },
11310
+ measurementType: {
11311
+ method: "mean",
11312
+ duration: "-PT10M"
11313
+ }
11314
+ },
11315
+ zm: {
11316
+ type: "Parameter",
11317
+ label: "Meteorological Optical Range Mean",
11318
+ description: "Past 10 minute mean meteorological optical range, in meters",
11319
+ "data-type": "float",
11320
+ unit: {
11321
+ label: "meter",
11322
+ symbol: {
11323
+ value: "m",
11324
+ type: "https://qudt.org/vocab/unit/M.html"
11325
+ }
11326
+ },
11327
+ observedProperty: {
11328
+ label: "Meteorological optical range",
11329
+ description: "The Meteorological Optical Range is an objective physical parameter that is directly related to the extinction of light in the atmosphere. It is defined as the length of the path in the atmosphere required to reduce the luminous flux in a collimated beam from an incandescent lamp, at a color temperature of 2700 K, to 5% of its original value. This can be expressed as a function of the measured extinction (σ ): MOR ≈ 3/σ . The background luminance and the presence of light sources do not affect the MOR."
11330
+ },
11331
+ measurementType: {
11332
+ method: "mean",
11333
+ duration: "-PT10M"
11334
+ }
11335
+ }
11336
+ };
11337
+ var knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_update = {
11338
+ id: id,
11339
+ title: title,
11340
+ description: description,
11341
+ links: links,
11342
+ extent: extent,
11343
+ data_queries: data_queries,
11344
+ crs: crs,
11345
+ output_formats: output_formats,
11346
+ parameter_names: parameter_names
11347
+ };
11348
+
11349
+ var type$1 = "FeatureCollection";
11350
+ var features = [
11351
+ {
11352
+ type: "Feature",
11353
+ geometry: {
11354
+ type: "Point",
11355
+ coordinates: [
11356
+ 2.9358,
11357
+ 54.3256,
11358
+ 42.7
11359
+ ]
11360
+ },
11361
+ properties: {
11362
+ name: "D15-FA-1",
11363
+ wmoId: "06201"
11364
+ },
11365
+ id: "0-20000-0-06201"
11366
+ },
11367
+ {
11368
+ type: "Feature",
11369
+ geometry: {
11370
+ type: "Point",
11371
+ coordinates: [
11372
+ 3.3417,
11373
+ 52.36,
11374
+ 41.84
11375
+ ]
11376
+ },
11377
+ properties: {
11378
+ name: "P11-B",
11379
+ wmoId: "06203"
11380
+ },
11381
+ id: "0-20000-0-06203"
11382
+ },
11383
+ {
11384
+ type: "Feature",
11385
+ geometry: {
11386
+ type: "Point",
11387
+ coordinates: [
11388
+ 3.6278,
11389
+ 53.2694,
11390
+ 41.8
11391
+ ]
11392
+ },
11393
+ properties: {
11394
+ name: "K14-FA-1C",
11395
+ wmoId: "06204"
11396
+ },
11397
+ id: "0-20000-0-06204"
11398
+ },
11399
+ {
11400
+ type: "Feature",
11401
+ geometry: {
11402
+ type: "Point",
11403
+ coordinates: [
11404
+ 3.8103,
11405
+ 55.3992,
11406
+ 48.35
11407
+ ]
11408
+ },
11409
+ properties: {
11410
+ name: "A12-CPP",
11411
+ wmoId: "06205"
11412
+ },
11413
+ id: "0-20000-0-06205"
11414
+ },
11415
+ {
11416
+ type: "Feature",
11417
+ geometry: {
9200
11418
  type: "Point",
9201
11419
  coordinates: [
9202
11420
  4.0122,
@@ -12545,42 +14763,230 @@ var knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_
12545
14763
  referencing: referencing
12546
14764
  };
12547
14765
 
12548
- /* *
12549
- * Licensed under the Apache License, Version 2.0 (the "License");
12550
- * you may not use this file except in compliance with the License.
12551
- * You may obtain a copy of the License at
12552
- *
12553
- * http://www.apache.org/licenses/LICENSE-2.0
12554
- *
12555
- * Unless required by applicable law or agreed to in writing, software
12556
- * distributed under the License is distributed on an "AS IS" BASIS,
12557
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12558
- * See the License for the specific language governing permissions and
12559
- * limitations under the License.
12560
- *
12561
- * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
12562
- * Copyright 2025 - Finnish Meteorological Institute (FMI)
12563
- * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
12564
- * */
12565
- var fakeEdrLayerApiHandlers = [http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations', function () {
12566
- return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations);
12567
- }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/locations', function () {
12568
- return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_locations);
12569
- }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/cube', function (_ref) {
12570
- var request = _ref.request;
12571
- var url = new URL(request.url);
12572
- var parameterName = url.searchParams.get('parameter-name');
12573
- var dateTime = url.searchParams.get('datetime');
12574
- var bbox = url.searchParams.get('bbox');
12575
- if (parameterName === 'ta' && dateTime === '2025-05-20T05:00:00Z' && bbox === '-180,-90,180,90') {
12576
- return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_ta_20250520_0500);
14766
+ /* *
14767
+ * Licensed under the Apache License, Version 2.0 (the "License");
14768
+ * you may not use this file except in compliance with the License.
14769
+ * You may obtain a copy of the License at
14770
+ *
14771
+ * http://www.apache.org/licenses/LICENSE-2.0
14772
+ *
14773
+ * Unless required by applicable law or agreed to in writing, software
14774
+ * distributed under the License is distributed on an "AS IS" BASIS,
14775
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14776
+ * See the License for the specific language governing permissions and
14777
+ * limitations under the License.
14778
+ *
14779
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14780
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
14781
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
14782
+ * */
14783
+ var fakeEdrLayerApiHandlers = [http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations', function () {
14784
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations);
14785
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations-update', function () {
14786
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_update);
14787
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/locations', function () {
14788
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_locations);
14789
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/cube', function (_ref) {
14790
+ var request = _ref.request;
14791
+ var url = new URL(request.url);
14792
+ var parameterName = url.searchParams.get('parameter-name');
14793
+ var dateTime = url.searchParams.get('datetime');
14794
+ var bbox = url.searchParams.get('bbox');
14795
+ if (parameterName === 'ta' && dateTime === '2025-05-20T05:00:00Z' && bbox === '-180,-90,180,90') {
14796
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_ta_20250520_0500);
14797
+ }
14798
+ return HttpResponse.json({
14799
+ error: "Parameter not found (got: [".concat(parameterName, "]/[").concat(dateTime, "]/[").concat(bbox, "]")
14800
+ }, {
14801
+ status: 404
14802
+ });
14803
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations-update/cube', function (_ref2) {
14804
+ var request = _ref2.request;
14805
+ var url = new URL(request.url);
14806
+ var parameterName = url.searchParams.get('parameter-name');
14807
+ var dateTime = url.searchParams.get('datetime');
14808
+ var bbox = url.searchParams.get('bbox');
14809
+ if (parameterName === 'ta' && dateTime === '2025-05-20T05:00:00Z' && bbox === '-180,-90,180,90') {
14810
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_ta_20250520_0500);
14811
+ }
14812
+ return HttpResponse.json({
14813
+ error: "Parameter not found (got: [".concat(parameterName, "]/[").concat(dateTime, "]/[").concat(bbox, "]")
14814
+ }, {
14815
+ status: 404
14816
+ });
14817
+ })];
14818
+
14819
+ var FeatureLayer = function FeatureLayer(_ref) {
14820
+ var features = _ref.features,
14821
+ style = _ref.style,
14822
+ zIndex = _ref.zIndex,
14823
+ hoverSelect = _ref.hoverSelect,
14824
+ clickOnFeature = _ref.clickOnFeature,
14825
+ testId = _ref.testId,
14826
+ opacity = _ref.opacity;
14827
+ var _useContext = useContext(MapContext),
14828
+ map = _useContext.map;
14829
+ var _useState = useState(),
14830
+ _useState2 = _slicedToArray(_useState, 2),
14831
+ source = _useState2[0],
14832
+ setSource = _useState2[1];
14833
+ var layerRef = useRef();
14834
+ useEffect(function () {
14835
+ if (!map) {
14836
+ return function () {};
14837
+ }
14838
+ var source = new VectorSource({
14839
+ features: []
14840
+ });
14841
+ var layer = new Vector({
14842
+ source: source,
14843
+ zIndex: zIndex,
14844
+ style: style,
14845
+ properties: {
14846
+ testId: testId
14847
+ },
14848
+ opacity: opacity
14849
+ });
14850
+ layerRef.current = layer;
14851
+ layer.set('layerType', 'FeatureLayer');
14852
+ setSource(source);
14853
+ map.addLayer(layer);
14854
+ return function () {
14855
+ setSource(undefined);
14856
+ source.clear();
14857
+ map.removeLayer(layer);
14858
+ };
14859
+ // NOTE: style should not be part of this effect, as it changes always, causing the layer to be add/removed continuousely.
14860
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14861
+ }, [map, zIndex, testId]);
14862
+ useEffect(function () {
14863
+ // Handle style function:
14864
+ if (layerRef.current && style) {
14865
+ var _layerRef$current;
14866
+ (_layerRef$current = layerRef.current) === null || _layerRef$current === void 0 || _layerRef$current.setStyle(style);
14867
+ }
14868
+ }, [style]);
14869
+ useEffect(function () {
14870
+ // Handle opacity:
14871
+ if (layerRef.current && opacity) {
14872
+ var _layerRef$current2;
14873
+ (_layerRef$current2 = layerRef.current) === null || _layerRef$current2 === void 0 || _layerRef$current2.setOpacity(opacity);
14874
+ }
14875
+ }, [opacity]);
14876
+ useEffect(function () {
14877
+ if (!source) {
14878
+ return;
14879
+ }
14880
+ source.clear();
14881
+ if (features && features.length > 0) {
14882
+ source.addFeatures(features);
14883
+ }
14884
+ }, [source, features]);
14885
+ useEffect(function () {
14886
+ if (!map || !source || !hoverSelect || !hoverSelect.active) {
14887
+ return function () {};
14888
+ }
14889
+ var previousHover = [];
14890
+ var pointerMoveFunction = debounce(function (evt) {
14891
+ var hoveredFeature = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
14892
+ if (!layer || layer.getSource() !== source) {
14893
+ return false;
14894
+ }
14895
+ return feature;
14896
+ });
14897
+ if (hoveredFeature && previousHover.includes(hoveredFeature)) {
14898
+ return;
14899
+ }
14900
+ var unhovered = previousHover.length > 0;
14901
+ previousHover.forEach(function (feature) {
14902
+ feature.set('hover', false);
14903
+ });
14904
+ previousHover.splice(0);
14905
+ if (hoveredFeature) {
14906
+ previousHover.push(hoveredFeature);
14907
+ hoveredFeature.set('hover', true);
14908
+ hoverSelect.onHover && hoverSelect.onHover(hoveredFeature);
14909
+ } else if (unhovered) {
14910
+ hoverSelect.onHover && hoverSelect.onHover(undefined);
14911
+ }
14912
+ }, 5, {});
14913
+ var eventKey = map.on('pointermove', pointerMoveFunction);
14914
+ return function () {
14915
+ pointerMoveFunction.cancel();
14916
+ source.getFeatures().forEach(function (feature) {
14917
+ feature.set('hover', false);
14918
+ });
14919
+ unByKey(eventKey);
14920
+ hoverSelect.onHover && hoverSelect.onHover(undefined);
14921
+ };
14922
+ }, [map, source, hoverSelect]);
14923
+ useEffect(function () {
14924
+ if (!map || !source || !clickOnFeature) {
14925
+ return function () {};
14926
+ }
14927
+ var clickFunction = function clickFunction(evt) {
14928
+ var features = [];
14929
+ map.forEachFeatureAtPixel(evt.pixel, function (feature) {
14930
+ features.push(feature);
14931
+ }, {
14932
+ hitTolerance: clickOnFeature.hitTolerance
14933
+ });
14934
+ clickOnFeature.onClick(features);
14935
+ };
14936
+ var eventKey = map.on('click', clickFunction);
14937
+ return function () {
14938
+ unByKey(eventKey);
14939
+ };
14940
+ }, [map, source, clickOnFeature]);
14941
+ return null;
14942
+ };
14943
+
14944
+ var defaultLegend = makeLegendFromColorMap({
14945
+ colors: colorMaps.temperatureLegendColorsWoW,
14946
+ min: -18,
14947
+ max: 38
14948
+ });
14949
+ // Style needs to be optional to match the other layers. Therefore a default style is made here once.
14950
+ var defaultStyle = function defaultStyle(feature) {
14951
+ return makeFeatureStyleDisc(feature, defaultLegend);
14952
+ };
14953
+ var OpenLayersFeatureLayer = function OpenLayersFeatureLayer(_ref) {
14954
+ var featureCollection = _ref.featureCollection,
14955
+ _ref$style = _ref.style,
14956
+ style = _ref$style === void 0 ? defaultStyle : _ref$style,
14957
+ zIndex = _ref.zIndex,
14958
+ hoverSelect = _ref.hoverSelect,
14959
+ clickOnFeature = _ref.clickOnFeature,
14960
+ testId = _ref.testId,
14961
+ opacity = _ref.opacity;
14962
+ var projection = useProjection();
14963
+ var featureCollectionRef = useRef();
14964
+ var features = useRef([]);
14965
+ var featureCollectionHasChanges = featureCollectionRef.current !== featureCollection;
14966
+ if (featureCollectionHasChanges) {
14967
+ if (projection && featureCollection) {
14968
+ // eslint-disable-next-line no-console
14969
+ featureCollectionRef.current = featureCollection;
14970
+ var formatter = new GeoJSON({
14971
+ featureProjection: projection
14972
+ });
14973
+ features.current = formatter.readFeatures(featureCollection);
14974
+ }
12577
14975
  }
12578
- return HttpResponse.json({
12579
- error: "Parameter not found (got: [".concat(parameterName, "]/[").concat(dateTime, "]/[").concat(bbox, "]")
12580
- }, {
12581
- status: 404
14976
+ // If no featureCollection is given, e.g. in edit mode of a polygon, the feature should not be displayed.
14977
+ if (!featureCollection) {
14978
+ return null;
14979
+ }
14980
+ return jsx(FeatureLayer, {
14981
+ features: features.current,
14982
+ style: style,
14983
+ zIndex: zIndex,
14984
+ hoverSelect: hoverSelect,
14985
+ clickOnFeature: clickOnFeature,
14986
+ testId: testId,
14987
+ opacity: opacity
12582
14988
  });
12583
- })];
14989
+ };
12584
14990
 
12585
14991
  /* *
12586
14992
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -12616,32 +15022,26 @@ var coverageCollectionToFeatureCollection = function coverageCollectionToFeature
12616
15022
  })) || [];
12617
15023
  var featurePoint = {
12618
15024
  type: 'FeatureCollection',
12619
- features: latLonValues.filter(function (val) {
12620
- var _val$properties;
12621
- return val === null || val === void 0 || (_val$properties = val.properties) === null || _val$properties === void 0 ? void 0 : _val$properties.value;
12622
- })
15025
+ features: latLonValues
12623
15026
  };
12624
15027
  return featurePoint;
12625
15028
  };
12626
15029
 
12627
- var discretizeTime = function discretizeTime(isoDate, epochPeriodSeconds) {
12628
- if (!isoDate) {
12629
- return isoDate;
12630
- }
12631
- var dateNumber = dateUtils.parseISO(isoDate).getTime();
12632
- var epochPeriodAsMillis = epochPeriodSeconds * 1000;
12633
- var discretizedDate = Math.round(dateNumber / epochPeriodAsMillis) * epochPeriodAsMillis;
12634
- return dateUtils.fromUnix(discretizedDate / 1000).toISOString();
12635
- };
12636
15030
  var TimeAwareEDRLocationLayer = function TimeAwareEDRLocationLayer(_ref) {
12637
- var currentTime = _ref.currentTime,
12638
- timestep = _ref.timestep,
12639
- edrBaseUrl = _ref.edrBaseUrl,
12640
- collectionId = _ref.collectionId,
15031
+ var _wmLayer$getDimension;
15032
+ var edrBaseUrl = _ref.edrBaseUrl,
12641
15033
  parameter = _ref.parameter,
12642
15034
  style = _ref.style,
12643
- zIndex = _ref.zIndex;
12644
- var discretizedTime = discretizeTime(currentTime, timestep);
15035
+ zIndex = _ref.zIndex,
15036
+ opacity = _ref.opacity,
15037
+ dimensions = _ref.dimensions,
15038
+ layerId = _ref.layerId,
15039
+ onInitializeLayer = _ref.onInitializeLayer;
15040
+ // get a wmLayer instance
15041
+ var wmLayer = useGetEDRLayerInstance(edrBaseUrl, parameter, layerId, onInitializeLayer);
15042
+ // dimensionsValues is a key/value dictionary with dimension names specifically for WMS GetMap requests. We re-use it here for EDR.
15043
+ var dimensionsValues = getDimensionParamsForWMS(dimensions, wmLayer);
15044
+ var timeValue = dimensionsValues && dimensionsValues['TIME'];
12645
15045
  var _React$useState = React__default.useState({
12646
15046
  features: [],
12647
15047
  type: 'FeatureCollection'
@@ -12649,22 +15049,143 @@ var TimeAwareEDRLocationLayer = function TimeAwareEDRLocationLayer(_ref) {
12649
15049
  _React$useState2 = _slicedToArray(_React$useState, 2),
12650
15050
  featurePoints = _React$useState2[0],
12651
15051
  setFeaturePoints = _React$useState2[1];
12652
- var result = useEDRCollectionCube(edrBaseUrl, collectionId, parameter, discretizedTime);
15052
+ var edrQueryDateTime = (wmLayer === null || wmLayer === void 0 || (_wmLayer$getDimension = wmLayer.getDimension('time')) === null || _wmLayer$getDimension === void 0 ? void 0 : _wmLayer$getDimension.getClosestValue(timeValue)) || timeValue;
15053
+ var result = useEDRLayerCollectionCube(edrBaseUrl, parameter, edrQueryDateTime);
12653
15054
  React__default.useEffect(function () {
12654
15055
  var featurePoint = coverageCollectionToFeatureCollection(result.data, parameter);
12655
15056
  if (!featurePoint) {
12656
15057
  return;
12657
15058
  }
12658
15059
  setFeaturePoints(featurePoint);
12659
- // eslint-disable-next-line react-hooks/exhaustive-deps
12660
- }, [edrBaseUrl, parameter, result.data]);
15060
+ }, [parameter, result.data]);
12661
15061
  return jsx(OpenLayersFeatureLayer, {
12662
15062
  featureCollection: featurePoints,
12663
15063
  style: result.isFetching ? makeFeatureStyleLoading : style,
15064
+ opacity: opacity,
12664
15065
  zIndex: zIndex
12665
15066
  });
12666
15067
  };
12667
15068
 
15069
+ var OpenLayersLayer = function OpenLayersLayer(layerProps) {
15070
+ var id = layerProps.id,
15071
+ service = layerProps.service,
15072
+ enabled = layerProps.enabled,
15073
+ name = layerProps.name,
15074
+ style = layerProps.style,
15075
+ dimensions = layerProps.dimensions,
15076
+ opacity = layerProps.opacity,
15077
+ zIndex = layerProps.zIndex,
15078
+ onInitializeLayer = layerProps.onInitializeLayer,
15079
+ onLayerReady = layerProps.onLayerReady,
15080
+ onLayerError = layerProps.onLayerError,
15081
+ debugMode = layerProps.debugMode,
15082
+ _layerProps$layerType = layerProps.layerType,
15083
+ layerType = _layerProps$layerType === void 0 ? LayerType.mapLayer : _layerProps$layerType,
15084
+ _layerProps$tileServe = layerProps.tileServerSettings,
15085
+ tileServerSettings = _layerProps$tileServe === void 0 ? tilesettings : _layerProps$tileServe;
15086
+ var isBaseLayer = layerType === LayerType.baseLayer;
15087
+ var isOverlay = layerType === LayerType.overLayer;
15088
+ var layerOptions = useMemo(function () {
15089
+ return {
15090
+ opacity: opacity !== null && opacity !== undefined ? opacity : 1,
15091
+ zIndex: zIndex || 0
15092
+ };
15093
+ }, [opacity, zIndex]);
15094
+ var _useContext = useContext(MapContext),
15095
+ map = _useContext.map;
15096
+ // Check standard maplayers
15097
+ if (!isOverlay && !isBaseLayer) {
15098
+ switch (layerType) {
15099
+ case LayerType.mapLayer:
15100
+ return jsx(TimeawareImageSourceWMSLayer, {
15101
+ getCapsURL: service,
15102
+ layerName: name,
15103
+ layerOptions: layerOptions,
15104
+ layerId: id,
15105
+ dimensions: dimensions,
15106
+ visible: !!(enabled !== false),
15107
+ styleName: style,
15108
+ onInitializeLayer: onInitializeLayer,
15109
+ onLayerReady: onLayerReady,
15110
+ onLayerError: onLayerError,
15111
+ debugMode: debugMode
15112
+ });
15113
+ case LayerType.edrLayer:
15114
+ {
15115
+ var styleLike = style !== undefined ? styleNameToStyleLike(style) : undefined;
15116
+ return jsx(TimeAwareEDRLocationLayer, {
15117
+ layerId: id,
15118
+ edrBaseUrl: service,
15119
+ parameter: name,
15120
+ dimensions: dimensions,
15121
+ zIndex: layerOptions.zIndex,
15122
+ style: styleLike,
15123
+ opacity: layerOptions.opacity,
15124
+ onInitializeLayer: onInitializeLayer
15125
+ });
15126
+ }
15127
+ }
15128
+ }
15129
+ // Check the other layers
15130
+ if (isBaseLayer || isOverlay) {
15131
+ var type = layerProps.type,
15132
+ _name = layerProps.name,
15133
+ _service = layerProps.service,
15134
+ tileServer = layerProps.tileServer;
15135
+ if (type === 'twms' && _name) {
15136
+ var _map$getView;
15137
+ var tileSettingByName = tileServerSettings[_name] || tileServer && tileServer[_name];
15138
+ if (!tileSettingByName) {
15139
+ console.warn("Tilesetting with name ".concat(_name, " not found in "), tileServerSettings, tileServer);
15140
+ }
15141
+ var projectionName = map === null || map === void 0 || (_map$getView = map.getView()) === null || _map$getView === void 0 || (_map$getView = _map$getView.getProjection()) === null || _map$getView === void 0 ? void 0 : _map$getView.getCode();
15142
+ var projectionUsedFromTileServer = tileSettingByName[projectionName] ? projectionName : 'EPSG:3857';
15143
+ var tileSettingForCRS = tileSettingByName && projectionName && tileSettingByName[projectionUsedFromTileServer];
15144
+ if (tileSettingForCRS) {
15145
+ var home = tileSettingForCRS.home,
15146
+ tileServerType = tileSettingForCRS.tileServerType,
15147
+ urlTemplateOverride = tileSettingForCRS.urlTemplate;
15148
+ var urlTemplate = (urlTemplateOverride === null || urlTemplateOverride === void 0 ? void 0 : urlTemplateOverride(home)) || '';
15149
+ if (!urlTemplateOverride) {
15150
+ switch (tileServerType) {
15151
+ case 'arcgisonline':
15152
+ urlTemplate = "".concat(home, "{z}/{y}/{x}.png");
15153
+ break;
15154
+ case 'osm':
15155
+ urlTemplate = "".concat(home, "{z}/{x}/{y}.png");
15156
+ break;
15157
+ case 'wmst':
15158
+ urlTemplate = "".concat(home, "{z}/{y}/{x}");
15159
+ break;
15160
+ }
15161
+ }
15162
+ if (!urlTemplate) {
15163
+ console.warn("Tile server type ".concat(tileServerType, " not supported"), tileServerSettings, tileServer);
15164
+ }
15165
+ return jsx(XYZLayer, {
15166
+ urlTemplate: urlTemplate,
15167
+ layerOptions: layerOptions,
15168
+ layerProps: _objectSpread2(_objectSpread2({}, layerProps), {}, {
15169
+ enabled: true
15170
+ }),
15171
+ tileProjectionCode: projectionUsedFromTileServer
15172
+ });
15173
+ }
15174
+ } else if (_name && _service) {
15175
+ return jsx(WMSLayer, {
15176
+ layerName: _name,
15177
+ layerOptions: layerOptions,
15178
+ layerProps: layerProps,
15179
+ url: _service,
15180
+ styleName: style || 'default'
15181
+ });
15182
+ } else if (baseLayer) {
15183
+ return jsx(DefaultBaseLayers, {});
15184
+ }
15185
+ }
15186
+ return jsx("div", {});
15187
+ };
15188
+
12668
15189
  var createIconStyle = memoize(function (input, options) {
12669
15190
  var _options$render, _options$render2;
12670
15191
  var svgPath = _typeof(input) === 'object' ? input.path : input;
@@ -13641,4 +16162,4 @@ var getLayerUpdateInfo = function getLayerUpdateInfo(wmLayer, mapId) {
13641
16162
  return updateObject;
13642
16163
  };
13643
16164
 
13644
- export { BaseLayerType, ClickOnMapTool, DRAWMODE, DefaultBaseLayers, DimensionSelectButton, DimensionSelectDialog, DimensionSelectSlider, EditModeButton as EditModeButtonField, FEATURE_FILL, FEATURE_STROKE, FEATURE_STROKE_EDIT, FEATURE_VERTICES_EDIT_HANDLES, FEATURE_VERTICE_HANDLE_IMAGE, FEATURE_VERTICE_IMAGE, FeatureLayer, FeatureLayers, GeoJSONTextField, ICON_LOCATIONMARKER, ICON_LOCATIONMARKER_MODIFY, IntersectionSelect, LayerInfoButton, LayerInfoDialog, LayerInfoLegend, LayerInfoList, LayerInfoText, Legend, LegendButton, LegendDialog, LegendLayout, MapContext, MapControlButton, MapControls, MapDimensionSelect, MapFeatureClass, MapTime, MapWarningProperties, NEW_FEATURE_CREATED, NEW_LINESTRING_CREATED, NEW_POINT_CREATED, OpenLayersFeatureLayer, OpenLayersGetFeatureInfo, OpenLayersLayer, OpenLayersMapDraw, OpenLayersMapView, OpenLayersZoomControl, Proj4js, SelectField, StoryLayoutGrid, TimeAwareEDRLocationLayer, TimeContext, TimeawareImageSource, TimeawareImageSourceWMSLayer, WEBMAP_REACT_NAMESPACE, WMSLayer, WMTSLayer, XYZLayer, ZoomControls, addFeatureProperties, addGeoJSONProperties, addSelectionTypeToGeoJSON, basicExampleDrawOptions, basicExampleMultipleShapeDrawOptions, basicExampleMultipleShapeWithValuesDrawOptions, clearImageCacheForAllMaps, colorMaps, createIconStyle, createInterSections, currentlySupportedDrawModes, defaultBox, defaultDelete, defaultGeoJSONStyleProperties, defaultIntersectionStyleProperties, defaultLayers, defaultModes, defaultPoint, defaultPolygon, defaultTimeFormat, dimensionConfig, drawPolyStoryStyles, drawStyles, emptyGeoJSON, endToolExampleConfig, exampleIntersectionOptions, exampleIntersectionWithShapeOptions, exampleIntersections, exampleIntersectionsMultiDrawTool, fakeEdrLayerApiHandlers, featureBox, featureMultiPoint, featurePoint, featurePolygon, fillOptions, firSelectionType, formatTime, genericOpenLayersFeatureStyle, geowebColorToOpenLayersColor, getDimensionIcon, getDimensionLabel, getDimensionValue, getDimensionsList, getDoubleControlToolIcon, getFeatureCollection, getFeatureExtent, getFirTitle, getGeoJSONPropertyValue, getGeoJson, getIcon, getIntersectionToolIcon, getIsInsideAcceptanceTime, getLastEmptyFeatureIndex, getLayerBbox, getLayerStyles, getLayerUpdateInfo, getLegendClass, getProj4, getTimeDimension, getToolIcon, initializeOpenLayersProjections, inlineFeatureStyle, intersectPointGeoJSONS, intersectPolygonGeoJSONS, intersectionFeatureBE, intersectionFeatureNL, isGeoJSONFeatureCreatedByTool, isGeoJSONGeometryEmpty, isPointFeatureCollection, lineString, lineStringCollection, makeFeatureStyleDisc, makeFeatureStyleLoading, makeLegendFromColorMap, makeView, marksByDimension, modifyStyles, moveFeature, multiLineStringLabelStyle, multiPolygonLabelStyle, opacityOptions, openLayersGetMapImageStore, projectorCache, publicLayers, publicServices, rewindGeometry, selectPreferredWMSProjection, setMapCenter, setViewFromExtent, setViewFromFeature, simpleBoxGeoJSON, simpleBoxGeoJSONWrongOrder, simpleFlightRouteLineStringGeoJSON, simpleFlightRoutePointsGeoJSON, simpleGeometryCollectionGeoJSON, simpleLineStringGeoJSON, simpleMultiPolygon, simplePointsGeojson, simplePolygonGeoJSON, simpleSmallLineStringGeoJSON, startToolExampleConfig, strokeWidthOptions, textLabelStyle, textStyle, textStyleWithMargin, updateEditModeButtonsWithFir, useAnimationForLayer, useEDRCollection, useEDRCollectionCube, useEDRCollectionLocation, useGeoJSON, useGetWMLayerInstance, useGetWMSLayerStyleList, useIconStyle, useMapDrawTool, useProjection, useQueryGetWMSGetCapabilities, useQueryGetWMSLayer, useQueryGetWMSLayers, useQueryGetWMSLayersTree, useQueryGetWMSServiceInfo, useQueryWMTSGetCapabilities, useSetIntervalWhenVisible, useViewFromLayer, viewUtils, webmapReactTranslations, wowTemperatureLegendColors };
16165
+ export { BaseLayerType, ClickOnMapTool, DRAWMODE, DefaultBaseLayers, DimensionSelectButton, DimensionSelectDialog, DimensionSelectSlider, EditModeButton as EditModeButtonField, FEATURE_FILL, FEATURE_STROKE, FEATURE_STROKE_EDIT, FEATURE_VERTICES_EDIT_HANDLES, FEATURE_VERTICE_HANDLE_IMAGE, FEATURE_VERTICE_IMAGE, FeatureLayer, FeatureLayers, GeoJSONTextField, ICON_LOCATIONMARKER, ICON_LOCATIONMARKER_MODIFY, IntersectionSelect, LayerInfoButton, LayerInfoDialog, LayerInfoLegend, LayerInfoList, LayerInfoText, Legend, LegendButton, LegendDialog, LegendLayout, MapContext, MapControlButton, MapControls, MapDimensionSelect, MapFeatureClass, MapTime, MapWarningProperties, NEW_FEATURE_CREATED, NEW_LINESTRING_CREATED, NEW_POINT_CREATED, OpenLayersFeatureLayer, OpenLayersGetFeatureInfo, OpenLayersLayer, OpenLayersMapDraw, OpenLayersMapView, OpenLayersZoomControl, Proj4js, SelectField, StoryLayoutGrid, TimeAwareEDRLocationLayer, TimeContext, TimeawareImageSource, TimeawareImageSourceWMSLayer, WEBMAP_REACT_NAMESPACE, WMSLayer, WMTSLayer, XYZLayer, ZoomControls, addFeatureProperties, addGeoJSONProperties, addSelectionTypeToGeoJSON, basicExampleDrawOptions, basicExampleMultipleShapeDrawOptions, basicExampleMultipleShapeWithValuesDrawOptions, clearImageCacheForAllMaps, colorMaps, createIconStyle, createInterSections, currentlySupportedDrawModes, defaultBox, defaultDelete, defaultGeoJSONStyleProperties, defaultIntersectionStyleProperties, defaultLayers, defaultModes, defaultPoint, defaultPolygon, defaultTimeFormat, dimensionConfig, drawPolyStoryStyles, drawStyles, emptyGeoJSON, endToolExampleConfig, exampleIntersectionOptions, exampleIntersectionWithShapeOptions, exampleIntersections, exampleIntersectionsMultiDrawTool, fakeEdrLayerApiHandlers, featureBox, featureMultiPoint, featurePoint, featurePolygon, fillOptions, firSelectionType, formatTime, genericOpenLayersFeatureStyle, geowebColorToOpenLayersColor, getDimensionIcon, getDimensionLabel, getDimensionValue, getDimensionsList, getDoubleControlToolIcon, getFeatureCollection, getFeatureExtent, getFirTitle, getGeoJSONPropertyValue, getGeoJson, getIcon, getIntersectionToolIcon, getIsInsideAcceptanceTime, getLastEmptyFeatureIndex, getLayerBbox, getLayerStyles, getLayerUpdateInfo, getLegendClass, getProj4, getTimeDimension, getToolIcon, initializeOpenLayersProjections, inlineFeatureStyle, intersectPointGeoJSONS, intersectPolygonGeoJSONS, intersectionFeatureBE, intersectionFeatureNL, isGeoJSONFeatureCreatedByTool, isGeoJSONGeometryEmpty, isPointFeatureCollection, lineString, lineStringCollection, makeFeatureStyleDisc, makeFeatureStyleLoading, makeLegendFromColorMap, makeView, marksByDimension, modifyStyles, moveFeature, multiLineStringLabelStyle, multiPolygonLabelStyle, opacityOptions, openLayersGetMapImageStore, precipitationMMLegendColorsWoW, projectorCache, publicLayers, publicServices, rewindGeometry, selectPreferredWMSProjection, setMapCenter, setViewFromExtent, setViewFromFeature, simpleBoxGeoJSON, simpleBoxGeoJSONWrongOrder, simpleFlightRouteLineStringGeoJSON, simpleFlightRoutePointsGeoJSON, simpleGeometryCollectionGeoJSON, simpleLineStringGeoJSON, simpleMultiPolygon, simplePointsGeojson, simplePolygonGeoJSON, simpleSmallLineStringGeoJSON, startToolExampleConfig, strokeWidthOptions, styleNameToStyleLike, temperatureLegendColorsCWK, temperatureLegendColorsWoW, textLabelStyle, textStyle, textStyleWithMargin, updateEditModeButtonsWithFir, useAnimationForLayer, useEDRLayerCollection, useEDRLayerCollectionCube, useGeoJSON, useGetEDRLayerInstance, useGetWMLayerInstance, useGetWMSLayerStyleList, useIconStyle, useMapDrawTool, useProjection, useQueryGetWMSGetCapabilities, useQueryGetWMSLayer, useQueryGetWMSLayers, useQueryGetWMSLayersTree, useQueryGetWMSServiceInfo, useQueryWMTSGetCapabilities, useSetIntervalWhenVisible, useViewFromLayer, viewUtils, webmapReactTranslations };