@opengeoweb/webmap-react 12.10.0 → 12.12.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 (52) hide show
  1. package/index.esm.js +3483 -892
  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/ShowTimeAwareLayerInfo.spec.d.ts +1 -0
  40. package/src/lib/components/OpenLayers/utils/constants.d.ts +2 -0
  41. package/src/lib/components/OpenLayers/utils/makeDimValuesToPrefetch.d.ts +9 -1
  42. package/src/lib/components/TanStackDemo/EDRLayerApi.stories.d.ts +2 -2
  43. package/src/lib/edr-layer-api/api.d.ts +4 -0
  44. package/src/lib/edr-layer-api/colormaps/colormaps.d.ts +6 -3
  45. package/src/lib/edr-layer-api/colormaps/edrOlLegendUtils.d.ts +2 -1
  46. package/src/lib/edr-layer-api/hooks.d.ts +6 -5
  47. package/src/lib/edr-layer-api/hooks.spec.d.ts +1 -0
  48. package/src/lib/edr-layer-api/index.d.ts +1 -0
  49. package/src/lib/edr-layer-api/utils/useGetEDRLayerInstance.d.ts +11 -0
  50. package/src/lib/edr-layer-api/utils/useGetEDRLayerInstance.spec.d.ts +1 -0
  51. package/src/lib/hooks/useHooksGetCapabilities.d.ts +1 -1
  52. 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
@@ -4969,6 +5003,47 @@ var getTimeStepsToCheck = function getTimeStepsToCheck(timespan) {
4969
5003
  */
4970
5004
  var getTimeStepsToCheckMemoized = memoize(getTimeStepsToCheck);
4971
5005
 
5006
+ var getDimensionName = function getDimensionName(dimName) {
5007
+ switch (dimName) {
5008
+ case 'time':
5009
+ return 'val';
5010
+ case 'reference_time':
5011
+ return 'ref';
5012
+ default:
5013
+ {
5014
+ var split = dimName.split('_');
5015
+ if (split[0] === 'pressure') {
5016
+ return 'p';
5017
+ }
5018
+ if (split[0] === 'height') {
5019
+ return 'h';
5020
+ }
5021
+ return split[0];
5022
+ }
5023
+ }
5024
+ };
5025
+ var formatDimensionVal = function formatDimensionVal(dimName, dimVal) {
5026
+ switch (dimName) {
5027
+ case 'time':
5028
+ case 'reference_time':
5029
+ {
5030
+ var date = dateUtils.stringToDate(dimVal, "yyyy-MM-dd'T'HH:mm:ss'Z'", true);
5031
+ if (date) {
5032
+ return dateUtils.dateToString(date, "MM-dd HH:mm'Z'", true);
5033
+ }
5034
+ return dimVal;
5035
+ }
5036
+ default:
5037
+ {
5038
+ return dimVal;
5039
+ }
5040
+ }
5041
+ };
5042
+ var getDimensionInfo = function getDimensionInfo(wmLayerDimension) {
5043
+ var layerName = getDimensionName(wmLayerDimension.name);
5044
+ var layerVal = formatDimensionVal(wmLayerDimension.name, wmLayerDimension.currentValue);
5045
+ return "".concat(layerName, " ").concat(layerVal);
5046
+ };
4972
5047
  var ShowTimeAwareLayerInfo = function ShowTimeAwareLayerInfo(_ref) {
4973
5048
  var _wmLayer$dimensions;
4974
5049
  var wmLayer = _ref.wmLayer,
@@ -5005,9 +5080,9 @@ var ShowTimeAwareLayerInfo = function ShowTimeAwareLayerInfo(_ref) {
5005
5080
  var isSelectedStep = visible && (wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.currentValue) === closestValue;
5006
5081
  var colorImageIsAvailable = requestedStepHasImage ? '#40AF50' : '#FF0000';
5007
5082
  var colorLayerIsOutsideRange = requestedStepIsOutsideRange ? '#5080FA' : colorImageIsAvailable;
5008
- var height = requestedStepIsOutsideRange ? '15px' : '26px';
5009
- var top = requestedStepIsOutsideRange ? '5px' : '0px';
5010
- var left = "".concat(index * itemWidth, "px");
5083
+ var height = requestedStepIsOutsideRange ? '15px' : '20px';
5084
+ var top = requestedStepIsOutsideRange ? '5px' : '2px';
5085
+ var left = "calc(25% + ".concat(index * itemWidth, "px)");
5011
5086
  var opacity = isSelectedStep ? 1 : 0.8;
5012
5087
  return jsx("span", {
5013
5088
  style: {
@@ -5026,62 +5101,87 @@ var ShowTimeAwareLayerInfo = function ShowTimeAwareLayerInfo(_ref) {
5026
5101
  });
5027
5102
  // eslint-disable-next-line react-hooks/exhaustive-deps
5028
5103
  }, [layer, timeStepsToCheck, visible, wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.currentValue, render]);
5029
- return jsxs("div", {
5030
- style: {
5031
- height: '26px',
5032
- position: 'relative',
5033
- left: '50px',
5034
- right: '10px',
5035
- marginTop: '12px',
5036
- marginBottom: '-10px'
5037
- },
5038
- children: [jsx("div", {
5039
- children: jsx("div", {
5040
- children: items
5041
- })
5042
- }), jsxs("div", {
5104
+ var dimsInfo = wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.dimensions.map(function (wmLayerDimension) {
5105
+ return getDimensionInfo(wmLayerDimension);
5106
+ });
5107
+ var tooltipText = jsxs("span", {
5108
+ children: [wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.title, ": ", jsx("br", {}), wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.dimensions.map(function (dim, index) {
5109
+ return jsxs("span", {
5110
+ children: [dim.name, ": ", formatDimensionVal(dim.name, dim.currentValue), index < dimsInfo.length - 1 && jsx("br", {})]
5111
+ }, "".concat(dim.name, "-").concat(dim.currentValue));
5112
+ })]
5113
+ });
5114
+ return jsx(CustomTooltip, {
5115
+ title: tooltipText,
5116
+ children: jsxs("div", {
5043
5117
  style: {
5044
- position: 'absolute',
5045
- left: '10px',
5046
- paddingTop: '3px',
5047
- fontSize: '12px',
5048
- fontFamily: 'Roboto',
5049
- opacity: 0.85
5118
+ position: 'relative',
5119
+ width: 'calc(100% - 60px)',
5120
+ left: '50px',
5121
+ right: '10px',
5122
+ marginTop: '12px',
5123
+ marginBottom: '-10px'
5050
5124
  },
5051
- children: [jsx("span", {
5125
+ "data-testid": "debug-info",
5126
+ children: [jsx("div", {
5052
5127
  style: {
5053
- width: '300px',
5054
- position: 'absolute',
5055
- display: 'inline-block',
5056
- height: '15px'
5128
+ width: '100%'
5057
5129
  },
5058
- children: wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.title
5059
- }), jsx("span", {
5130
+ children: jsx("div", {
5131
+ children: items
5132
+ })
5133
+ }), jsxs("div", {
5060
5134
  style: {
5061
- position: 'absolute',
5062
- left: '320px',
5063
- display: 'inline-block',
5064
- width: '600px',
5065
- opacity: '0.7'
5135
+ left: '10px',
5136
+ paddingTop: '3px',
5137
+ fontSize: '12px',
5138
+ fontFamily: 'Roboto',
5139
+ opacity: 0.85,
5140
+ width: '100%'
5066
5141
  },
5067
- children: wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.dimensions.map(function (wmLayerDimension) {
5068
- return jsxs("span", {
5069
- style: {
5070
- margin: '0 4px',
5071
- padding: '1px 5px',
5072
- background: 'blue',
5073
- color: 'white',
5074
- fontSize: '11px'
5075
- },
5076
- children: [wmLayerDimension.name, " = ", wmLayerDimension.currentValue]
5077
- }, wmLayerDimension.name);
5078
- })
5142
+ children: [jsx("span", {
5143
+ style: {
5144
+ display: 'inline-block',
5145
+ verticalAlign: 'top',
5146
+ width: '25%',
5147
+ overflow: 'hidden',
5148
+ textOverflow: 'ellipsis',
5149
+ whiteSpace: 'nowrap',
5150
+ fontSize: '12px',
5151
+ paddingRight: '4px',
5152
+ paddingLeft: '4px',
5153
+ color: '#051039',
5154
+ backgroundColor: 'rgba(236, 237, 238, 0.7)',
5155
+ borderRadius: 2
5156
+ },
5157
+ children: wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.title
5158
+ }), jsx("span", {
5159
+ style: {
5160
+ display: 'inline-block',
5161
+ width: '75%',
5162
+ opacity: '0.7'
5163
+ },
5164
+ children: dimsInfo.map(function (dimension) {
5165
+ return jsx("span", {
5166
+ style: {
5167
+ margin: '0 0 0 0px',
5168
+ padding: '1px 5px',
5169
+ background: 'blue',
5170
+ borderRadius: 2,
5171
+ color: 'white',
5172
+ fontSize: '11px'
5173
+ },
5174
+ children: dimension
5175
+ }, dimension);
5176
+ })
5177
+ })]
5079
5178
  })]
5080
- })]
5081
- });
5179
+ })
5180
+ }, wmLayer.id);
5082
5181
  };
5083
5182
 
5084
5183
  var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5184
+ var _wmLayer$dimensions$f, _wmLayer$dimensions4;
5085
5185
  var layerId = _ref.layerId,
5086
5186
  getCapsURL = _ref.getCapsURL,
5087
5187
  layerOptions = _ref.layerOptions,
@@ -5106,16 +5206,14 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5106
5206
  // get a wmLayer instance
5107
5207
  var wmLayer = useGetWMLayerInstance(getCapsURL, layerName, layerId, onLayerError);
5108
5208
  // 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]);
5209
+ var dimensionsValues = getDimensionParamsForWMS(dimensions, wmLayer);
5112
5210
  // 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) {
5211
+ var dimensionsValuesEffectCheck = dimensionsValues && Object.entries(dimensionsValues).map(function (dimensionNameAndCurrentValue) {
5114
5212
  return "".concat(dimensionNameAndCurrentValue[0], ":").concat(dimensionNameAndCurrentValue[1]);
5115
5213
  }).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
5214
+ // 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
5215
  useEffect(function () {
5118
- if (!map || !wmLayer || visible === false) {
5216
+ if (!map || !wmLayer || visible === false || !dimensionsValues) {
5119
5217
  return function () {};
5120
5218
  }
5121
5219
  // When this component mounts, an ImageLayer is added to the map. Once it unmounts, this layer is removed from the map.
@@ -5138,16 +5236,16 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5138
5236
  map.removeLayer(olLayer);
5139
5237
  olLayer.dispose();
5140
5238
  };
5141
- // The dependency list should only contain the map and wmLayer. Other prop changes are handled by other effects.
5239
+ // The dependency list should only contain the map, wmLayer, visible and dimensionValues. Other prop changes are handled by other effects.
5142
5240
  // eslint-disable-next-line react-hooks/exhaustive-deps
5143
- }, [map, wmLayer, visible]);
5241
+ }, [map, wmLayer, visible, dimensionsValues === undefined]);
5144
5242
  useEffect(function () {
5145
5243
  onLayerReady && wmLayer && layerId && onLayerReady(layerId);
5146
5244
  }, [layerId, wmLayer, onLayerReady]);
5147
5245
  // Initialize layer for GeoWeb, call onInitializeLayer
5148
5246
  useEffect(function () {
5149
5247
  var initializeLayer = /*#__PURE__*/function () {
5150
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5248
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5151
5249
  var _wmLayer$dimensions, _wmLayer$dimensions2, wmTimeDim, layerPropsTimeDim, timeValueToInitialize, refTimeDim, layerPropsRefTimeDim, refTimeToFind, firstRefTime;
5152
5250
  return _regeneratorRuntime().wrap(function _callee$(_context) {
5153
5251
  while (1) switch (_context.prev = _context.next) {
@@ -5245,15 +5343,9 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5245
5343
  // Layer dim values useEffect,
5246
5344
  useEffect(function () {
5247
5345
  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
- });
5346
+ dimensionsValues && (layer === null || layer === void 0 || (_layer$getSource3 = layer.getSource()) === null || _layer$getSource3 === void 0 ? void 0 : _layer$getSource3.setDimProps(dimensionsValues));
5255
5347
  // eslint-disable-next-line react-hooks/exhaustive-deps
5256
- }, [layer, dimensionsValuesEffectCheck, wmLayer]);
5348
+ }, [layer, dimensionsValuesEffectCheck]);
5257
5349
  // Prefetch useEffect
5258
5350
  useEffect(function () {
5259
5351
  var _wmLayer$dimensions3;
@@ -5285,7 +5377,11 @@ var TimeawareImageSourceWMSLayer = function TimeawareImageSourceWMSLayer(_ref) {
5285
5377
  // - dimensionsValues,
5286
5378
  // eslint-disable-next-line react-hooks/exhaustive-deps
5287
5379
  }, [layer, wmLayer, timespan === null || timespan === void 0 ? void 0 : timespan.start, timespan === null || timespan === void 0 ? void 0 : timespan.end, timespan === null || timespan === void 0 ? void 0 : timespan.step, layerName, styleName, dimensionsValuesEffectCheck]);
5288
- return debugMode ? jsx(ShowTimeAwareLayerInfo, {
5380
+ // Only show debug info for data layers with time dimension
5381
+ var hasTimeDim = (_wmLayer$dimensions$f = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions4 = wmLayer.dimensions) === null || _wmLayer$dimensions4 === void 0 ? void 0 : _wmLayer$dimensions4.findIndex(function (dimension) {
5382
+ return dimension.name === 'time';
5383
+ })) !== null && _wmLayer$dimensions$f !== void 0 ? _wmLayer$dimensions$f : -1;
5384
+ return debugMode && hasTimeDim !== -1 ? jsx(ShowTimeAwareLayerInfo, {
5289
5385
  wmLayer: wmLayer,
5290
5386
  stepsToCheck: getTimeStepsToCheckMemoized(timespan),
5291
5387
  layer: layer,
@@ -5666,7 +5762,7 @@ var useAnimationForLayer = function useAnimationForLayer(layerProps, intervalInM
5666
5762
  useEffect(function () {
5667
5763
  calculateTimeSpan();
5668
5764
  }, [calculateTimeSpan, wmLayer]);
5669
- var refetchLayer = React__default.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5765
+ var refetchLayer = React__default.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5670
5766
  return _regeneratorRuntime().wrap(function _callee$(_context) {
5671
5767
  while (1) switch (_context.prev = _context.next) {
5672
5768
  case 0:
@@ -6357,296 +6453,105 @@ var publicLayers = /*#__PURE__*/Object.freeze({
6357
6453
  veiligheidsRegiosGebiedsIndelingenLabels: veiligheidsRegiosGebiedsIndelingenLabels
6358
6454
  });
6359
6455
 
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
- });
6446
- }
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);
6554
- }
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
- };
6623
-
6624
- var makeUrlFromParams = function makeUrlFromParams(params) {
6456
+ /* *
6457
+ * Licensed under the Apache License, Version 2.0 (the "License");
6458
+ * you may not use this file except in compliance with the License.
6459
+ * You may obtain a copy of the License at
6460
+ *
6461
+ * http://www.apache.org/licenses/LICENSE-2.0
6462
+ *
6463
+ * Unless required by applicable law or agreed to in writing, software
6464
+ * distributed under the License is distributed on an "AS IS" BASIS,
6465
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6466
+ * See the License for the specific language governing permissions and
6467
+ * limitations under the License.
6468
+ *
6469
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6470
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
6471
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
6472
+ * */
6473
+ var joinUrlParams = function joinUrlParams(params) {
6625
6474
  return params.filter(function (x) {
6626
6475
  return x !== undefined && x.length > 0;
6627
6476
  }).join('/');
6628
6477
  };
6629
- var useEDRCollection = function useEDRCollection(edrBaseUrl, collectionId) {
6630
- var instanceId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
6631
- var params = [edrBaseUrl, collectionId, instanceId];
6478
+ var fetchEDRLayerCollection = /*#__PURE__*/function () {
6479
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(edrBaseUrlWithCollection) {
6480
+ var instanceId,
6481
+ _args = arguments;
6482
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6483
+ while (1) switch (_context.prev = _context.next) {
6484
+ case 0:
6485
+ instanceId = _args.length > 1 && _args[1] !== undefined ? _args[1] : '';
6486
+ _context.next = 3;
6487
+ return fetch(joinUrlParams([edrBaseUrlWithCollection, instanceId]));
6488
+ case 3:
6489
+ _context.next = 5;
6490
+ return _context.sent.json();
6491
+ case 5:
6492
+ return _context.abrupt("return", _context.sent);
6493
+ case 6:
6494
+ case "end":
6495
+ return _context.stop();
6496
+ }
6497
+ }, _callee);
6498
+ }));
6499
+ return function fetchEDRLayerCollection(_x) {
6500
+ return _ref.apply(this, arguments);
6501
+ };
6502
+ }();
6503
+ var fetchEDRLayerCollectionCube = /*#__PURE__*/function () {
6504
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(edrBaseUrlWithCollection, parameterName) {
6505
+ var datetime,
6506
+ instanceId,
6507
+ bbox,
6508
+ queryParams,
6509
+ url,
6510
+ response,
6511
+ _args2 = arguments;
6512
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6513
+ while (1) switch (_context2.prev = _context2.next) {
6514
+ case 0:
6515
+ datetime = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : '';
6516
+ instanceId = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : '';
6517
+ bbox = _args2.length > 4 && _args2[4] !== undefined ? _args2[4] : '-180,-90,180,90';
6518
+ queryParams = new URLSearchParams();
6519
+ queryParams.append('bbox', bbox);
6520
+ queryParams.append('parameter-name', parameterName);
6521
+ datetime && queryParams.append('datetime', datetime);
6522
+ url = "".concat(joinUrlParams([edrBaseUrlWithCollection, instanceId, 'cube']), "?").concat(queryParams.toString());
6523
+ _context2.next = 10;
6524
+ return fetch(url);
6525
+ case 10:
6526
+ response = _context2.sent;
6527
+ _context2.next = 13;
6528
+ return response.json();
6529
+ case 13:
6530
+ return _context2.abrupt("return", _context2.sent);
6531
+ case 14:
6532
+ case "end":
6533
+ return _context2.stop();
6534
+ }
6535
+ }, _callee2);
6536
+ }));
6537
+ return function fetchEDRLayerCollectionCube(_x2, _x3) {
6538
+ return _ref2.apply(this, arguments);
6539
+ };
6540
+ }();
6541
+
6542
+ var DEFAULT_STALE_TIME = 60000; // One minute
6543
+ var useEDRLayerCollection = function useEDRLayerCollection(edrBaseUrlWithCollection) {
6544
+ var instanceId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
6632
6545
  return useQuery({
6633
- queryKey: params,
6546
+ staleTime: DEFAULT_STALE_TIME,
6547
+ queryKey: [edrBaseUrlWithCollection, instanceId, 'useEDRLayerCollection'],
6634
6548
  queryFn: function () {
6635
- var _queryFn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6636
- var url, response;
6549
+ var _queryFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6637
6550
  return _regeneratorRuntime().wrap(function _callee$(_context) {
6638
6551
  while (1) switch (_context.prev = _context.next) {
6639
6552
  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:
6553
+ return _context.abrupt("return", fetchEDRLayerCollection(edrBaseUrlWithCollection, instanceId));
6554
+ case 1:
6650
6555
  case "end":
6651
6556
  return _context.stop();
6652
6557
  }
@@ -6656,30 +6561,26 @@ var useEDRCollection = function useEDRCollection(edrBaseUrl, collectionId) {
6656
6561
  return _queryFn.apply(this, arguments);
6657
6562
  }
6658
6563
  return queryFn;
6659
- }()
6564
+ }(),
6565
+ enabled: edrBaseUrlWithCollection.length > 0
6660
6566
  });
6661
6567
  };
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'];
6568
+ var useEDRLayerCollectionCube = function useEDRLayerCollectionCube(edrBaseUrlWithCollection, parameterName) {
6569
+ var datetime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
6570
+ var instanceId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
6571
+ var bbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '-180,-90,180,90';
6572
+ var params = [edrBaseUrlWithCollection, instanceId, 'cube'];
6573
+ var queryKey = [].concat(params, [bbox, parameterName, datetime]);
6665
6574
  return useQuery({
6666
- queryKey: params,
6575
+ staleTime: DEFAULT_STALE_TIME,
6576
+ queryKey: queryKey,
6667
6577
  queryFn: function () {
6668
- var _queryFn2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
6669
- var url, response;
6578
+ var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
6670
6579
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6671
6580
  while (1) switch (_context2.prev = _context2.next) {
6672
6581
  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:
6582
+ return _context2.abrupt("return", fetchEDRLayerCollectionCube(edrBaseUrlWithCollection, parameterName, datetime, instanceId, bbox));
6583
+ case 1:
6683
6584
  case "end":
6684
6585
  return _context2.stop();
6685
6586
  }
@@ -6689,54 +6590,8 @@ var useEDRCollectionLocation = function useEDRCollectionLocation(edrBaseUrl, col
6689
6590
  return _queryFn2.apply(this, arguments);
6690
6591
  }
6691
6592
  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
- }()
6593
+ }(),
6594
+ enabled: parameterName.length > 0
6740
6595
  });
6741
6596
  };
6742
6597
 
@@ -6757,9 +6612,12 @@ var useEDRCollectionCube = function useEDRCollectionCube(edrBaseUrl, collectionI
6757
6612
  * Copyright 2025 - Finnish Meteorological Institute (FMI)
6758
6613
  * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
6759
6614
  * */
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'];
6615
+ 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'];
6616
+ var precipitationMMLegendColorsWoW = ['#BACDCB', '#A3C3C9', '#8BBCC8', '#6AAEC1', '#42A1C0', '#377EAF', '#46669C', '#56528D', '#86008D', '#610066'];
6617
+ 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
6618
  var colorMaps = {
6762
- wowTemperatureLegendColors: wowTemperatureLegendColors
6619
+ temperatureLegendColorsWoW: temperatureLegendColorsWoW,
6620
+ temperatureLegendColorsCWK: temperatureLegendColorsCWK
6763
6621
  };
6764
6622
 
6765
6623
  /* *
@@ -6866,17 +6724,186 @@ var makeFeatureStyleLoading = function makeFeatureStyleLoading(feature) {
6866
6724
  })
6867
6725
  });
6868
6726
  };
6869
-
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 = {
6727
+ var defaultLegend$1 = makeLegendFromColorMap({
6728
+ colors: colorMaps.temperatureLegendColorsWoW,
6729
+ min: -18,
6730
+ max: 38
6731
+ });
6732
+ var defaultStyle$1 = function defaultStyle(feature) {
6733
+ return makeFeatureStyleDisc(feature, defaultLegend$1);
6734
+ };
6735
+ /**
6736
+ * Converts a stylename to openlayers style for features
6737
+ * @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.
6738
+ * @returns StyleLike
6739
+ */
6740
+ var styleNameToStyleLikeNotMemoed = function styleNameToStyleLikeNotMemoed(styleName) {
6741
+ var minMaxPartFromNumericIndex = styleName.indexOf(':');
6742
+ var legMinMax = minMaxPartFromNumericIndex > 0 ? styleName.substring(minMaxPartFromNumericIndex + 1).split(',').map(function (stringValue) {
6743
+ return parseFloat(stringValue);
6744
+ }) : [undefined, undefined];
6745
+ var min = legMinMax.length === 2 ? legMinMax[0] : undefined;
6746
+ var max = legMinMax.length === 2 ? legMinMax[1] : undefined;
6747
+ var legendName = styleName === null || styleName === void 0 ? void 0 : styleName.split(':')[0];
6748
+ if (legendName === 'temperatureLegendColorsWoW') {
6749
+ return function (feature) {
6750
+ return makeFeatureStyleDisc(feature, makeLegendFromColorMap({
6751
+ colors: colorMaps.temperatureLegendColorsWoW,
6752
+ min: min !== undefined ? min : -18,
6753
+ max: max !== undefined ? max : 38
6754
+ }));
6755
+ };
6756
+ }
6757
+ if (legendName === 'temperatureLegendColorsCWK') {
6758
+ return function (feature) {
6759
+ return makeFeatureStyleDisc(feature, makeLegendFromColorMap({
6760
+ colors: colorMaps.temperatureLegendColorsCWK,
6761
+ min: min !== undefined ? min : -18,
6762
+ max: max !== undefined ? max : 38
6763
+ }));
6764
+ };
6765
+ }
6766
+ if (legendName === 'precipitationMMLegendColorsWoW') {
6767
+ return function (feature) {
6768
+ return makeFeatureStyleDisc(feature, makeLegendFromColorMap({
6769
+ colors: colorMaps.temperatureLegendColorsCWK,
6770
+ min: min !== undefined ? min : 0,
6771
+ max: max !== undefined ? max : 30
6772
+ }));
6773
+ };
6774
+ }
6775
+ return defaultStyle$1;
6776
+ };
6777
+ var styleNameToStyleLike = memoize(styleNameToStyleLikeNotMemoed);
6778
+
6779
+ /**
6780
+ * Returns WMLayer instance in EDR mode. The layer will contains parsed dimensions and styles and keeps a state for these properties.
6781
+ *
6782
+ * @param {string} serviceUrl
6783
+ * @param {string} name
6784
+ * @returns {(WMLayer | null)}
6785
+ */
6786
+ var useGetEDRWMLayerInstance = function useGetEDRWMLayerInstance(serviceUrl, name, id, onLayerError) {
6787
+ var _React$useState = React__default.useState(null),
6788
+ _React$useState2 = _slicedToArray(_React$useState, 2),
6789
+ layer = _React$useState2[0],
6790
+ setLayer = _React$useState2[1];
6791
+ var refId = useRef(id || webmapUtils.generateLayerId());
6792
+ React__default.useEffect(function () {
6793
+ var layerId = refId.current;
6794
+ // Check if the layer is already registered
6795
+ var tmpWMLayer = webmapUtils.getWMLayerById(layerId);
6796
+ if (!tmpWMLayer || tmpWMLayer.service !== serviceUrl && name.length > 0) {
6797
+ // Make a new layer if the serviceUrl changes. (But not when the name changes)
6798
+ var _wmLayer = new WMLayer({
6799
+ name: name,
6800
+ service: serviceUrl,
6801
+ layerType: LayerType.edrLayer,
6802
+ id: layerId
6803
+ });
6804
+ webmapUtils.registerWMLayer(_wmLayer, layerId);
6805
+ }
6806
+ // Set the name and parse the layer
6807
+ var wmLayer = webmapUtils.getWMLayerById(layerId);
6808
+ wmLayer.setName(name).then(function () {
6809
+ setLayer(wmLayer);
6810
+ })["catch"](function (e) {
6811
+ setLayer(wmLayer);
6812
+ });
6813
+ }, [name, onLayerError, serviceUrl]);
6814
+ return layer;
6815
+ };
6816
+ var useGetEDRLayerInstance = function useGetEDRLayerInstance(edrBaseUrl, parameter, layerId, onInitializeLayer) {
6817
+ var wmLayer = useGetEDRWMLayerInstance(edrBaseUrl, parameter, layerId);
6818
+ var collectionInfo = useEDRLayerCollection(edrBaseUrl);
6819
+ var _React$useState3 = React__default.useState(undefined),
6820
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
6821
+ timeRangeDuration = _React$useState4[0],
6822
+ setTimeRangeDuration = _React$useState4[1];
6823
+ React__default.useEffect(function () {
6824
+ if (wmLayer && collectionInfo.data && collectionInfo.isFetched) {
6825
+ var _collectionInfo$data, _collectionInfo$data2;
6826
+ // TODO: Extract PT10M from the EDR service: https://gitlab.com/opengeoweb/geoweb-assets/-/issues/4139
6827
+ 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");
6828
+ if (!wmLayer.getDimension('time')) {
6829
+ var _collectionInfo$data3;
6830
+ var dim = new WMJSDimension({
6831
+ name: 'time',
6832
+ 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],
6833
+ units: 'ISO8601',
6834
+ values: timeRangeDurationFromEdrCollection
6835
+ });
6836
+ dim.initialize();
6837
+ wmLayer.dimensions.push(dim);
6838
+ } else {
6839
+ var _wmLayer$getDimension;
6840
+ (_wmLayer$getDimension = wmLayer.getDimension('time')) === null || _wmLayer$getDimension === void 0 || _wmLayer$getDimension.reInitializeValues(timeRangeDurationFromEdrCollection);
6841
+ }
6842
+ setTimeRangeDuration(timeRangeDurationFromEdrCollection);
6843
+ wmLayer.isConfigured = true;
6844
+ }
6845
+ }, [collectionInfo.data, collectionInfo.isFetched, wmLayer]);
6846
+ React__default.useEffect(function () {
6847
+ var initializeLayer = /*#__PURE__*/function () {
6848
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
6849
+ var _wmLayer$dimensions, wmTimeDim, timeValueToInitialize, layerProps;
6850
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
6851
+ while (1) switch (_context.prev = _context.next) {
6852
+ case 0:
6853
+ if (wmLayer) {
6854
+ // Set time dimension current value based on layerprops dimension value
6855
+ wmTimeDim = wmLayer === null || wmLayer === void 0 || (_wmLayer$dimensions = wmLayer.dimensions) === null || _wmLayer$dimensions === void 0 ? void 0 : _wmLayer$dimensions.find(function (wmDimension) {
6856
+ return wmDimension.name === 'time';
6857
+ });
6858
+ timeValueToInitialize = wmTimeDim === null || wmTimeDim === void 0 ? void 0 : wmTimeDim.getValue();
6859
+ wmTimeDim && timeValueToInitialize && wmTimeDim.setValue(timeValueToInitialize);
6860
+ layerProps = {
6861
+ layerId: wmLayer.id,
6862
+ dimensions: wmLayer.dimensions.map(function (dimension) {
6863
+ return {
6864
+ name: dimension.name,
6865
+ units: dimension.units,
6866
+ currentValue: dimension.currentValue,
6867
+ maxValue: dimension.getLastValue(),
6868
+ minValue: dimension.getFirstValue(),
6869
+ synced: dimension.synced,
6870
+ values: dimension.values,
6871
+ unitSymbol: dimension.unitSymbol
6872
+ };
6873
+ }),
6874
+ style: ''
6875
+ };
6876
+ onInitializeLayer && onInitializeLayer(layerProps);
6877
+ }
6878
+ case 1:
6879
+ case "end":
6880
+ return _context.stop();
6881
+ }
6882
+ }, _callee);
6883
+ }));
6884
+ return function initializeLayer() {
6885
+ return _ref.apply(this, arguments);
6886
+ };
6887
+ }();
6888
+ timeRangeDuration && initializeLayer()["catch"](function (e) {
6889
+ return window.console.error(e);
6890
+ });
6891
+ return function () {};
6892
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6893
+ }, [wmLayer, parameter, timeRangeDuration]);
6894
+ return wmLayer;
6895
+ };
6896
+
6897
+ var id$1 = "10-minute-in-situ-meteorological-observations";
6898
+ var title$1 = "[PRE-RELEASE] Meteo data - near real-time automatic ground-based meteorological in-situ surface observations of the Netherlands, per 10 minutes";
6899
+ 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.";
6900
+ var links$1 = [
6901
+ {
6902
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations",
6903
+ rel: "self"
6904
+ }
6905
+ ];
6906
+ var extent$1 = {
6880
6907
  spatial: {
6881
6908
  bbox: [
6882
6909
  [
@@ -6991,7 +7018,7 @@ var extent = {
6991
7018
  }
6992
7019
  ]
6993
7020
  };
6994
- var data_queries = {
7021
+ var data_queries$1 = {
6995
7022
  position: {
6996
7023
  link: {
6997
7024
  href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/position",
@@ -7053,14 +7080,14 @@ var data_queries = {
7053
7080
  }
7054
7081
  }
7055
7082
  };
7056
- var crs = [
7083
+ var crs$1 = [
7057
7084
  "WGS84"
7058
7085
  ];
7059
- var output_formats = [
7086
+ var output_formats$1 = [
7060
7087
  "CoverageJSON",
7061
7088
  "netCDF4"
7062
7089
  ];
7063
- var parameter_names = {
7090
+ var parameter_names$1 = {
7064
7091
  D1H: {
7065
7092
  type: "Parameter",
7066
7093
  label: "Rainfall Duration in last Hour",
@@ -9117,96 +9144,2357 @@ var parameter_names = {
9117
9144
  }
9118
9145
  };
9119
9146
  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
9147
+ id: id$1,
9148
+ title: title$1,
9149
+ description: description$1,
9150
+ links: links$1,
9151
+ extent: extent$1,
9152
+ data_queries: data_queries$1,
9153
+ crs: crs$1,
9154
+ output_formats: output_formats$1,
9155
+ parameter_names: parameter_names$1
9129
9156
  };
9130
9157
 
9131
- var type$1 = "FeatureCollection";
9132
- var features = [
9133
- {
9134
- type: "Feature",
9135
- geometry: {
9136
- type: "Point",
9137
- coordinates: [
9138
- 2.9358,
9139
- 54.3256,
9140
- 42.7
9141
- ]
9142
- },
9143
- properties: {
9144
- name: "D15-FA-1",
9145
- wmoId: "06201"
9146
- },
9147
- id: "0-20000-0-06201"
9148
- },
9158
+ var id = "10-minute-in-situ-meteorological-observations";
9159
+ var title = "[PRE-RELEASE] Meteo data - near real-time automatic ground-based meteorological in-situ surface observations of the Netherlands, per 10 minutes";
9160
+ 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.";
9161
+ var links = [
9149
9162
  {
9150
- type: "Feature",
9151
- geometry: {
9152
- type: "Point",
9153
- coordinates: [
9154
- 3.3417,
9155
- 52.36,
9156
- 41.84
9163
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations",
9164
+ rel: "self"
9165
+ }
9166
+ ];
9167
+ var extent = {
9168
+ spatial: {
9169
+ bbox: [
9170
+ [
9171
+ -68.2758,
9172
+ 12.13,
9173
+ 7.1492,
9174
+ 55.3992
9157
9175
  ]
9158
- },
9159
- properties: {
9160
- name: "P11-B",
9161
- wmoId: "06203"
9162
- },
9163
- id: "0-20000-0-06203"
9176
+ ],
9177
+ crs: "EPSG:4326"
9164
9178
  },
9165
- {
9166
- type: "Feature",
9167
- geometry: {
9168
- type: "Point",
9169
- coordinates: [
9170
- 3.6278,
9171
- 53.2694,
9172
- 41.8
9179
+ temporal: {
9180
+ interval: [
9181
+ [
9182
+ "2012-01-01T00:00:00Z",
9183
+ "2025-05-26T12:10:00Z"
9173
9184
  ]
9174
- },
9175
- properties: {
9176
- name: "K14-FA-1C",
9177
- wmoId: "06204"
9178
- },
9179
- id: "0-20000-0-06204"
9185
+ ],
9186
+ values: [
9187
+ "2012-01-01T00:00:00Z/2025-05-26T12:10:00Z"
9188
+ ],
9189
+ trs: "datetime"
9180
9190
  },
9181
- {
9182
- type: "Feature",
9183
- geometry: {
9184
- type: "Point",
9185
- coordinates: [
9186
- 3.8103,
9187
- 55.3992,
9188
- 48.35
9189
- ]
9191
+ custom: [
9192
+ {
9193
+ id: "duration",
9194
+ interval: [
9195
+ [
9196
+ "-PT10M",
9197
+ "N/A"
9198
+ ]
9199
+ ],
9200
+ values: [
9201
+ "-PT10M",
9202
+ "-PT12H",
9203
+ "-PT14H",
9204
+ "-PT19M",
9205
+ "-PT1H",
9206
+ "-PT1M",
9207
+ "-PT24H",
9208
+ "-PT3H",
9209
+ "-PT6H",
9210
+ "N/A"
9211
+ ],
9212
+ reference: "https://en.wikipedia.org/wiki/ISO_8601#Durations"
9190
9213
  },
9191
- properties: {
9192
- name: "A12-CPP",
9193
- wmoId: "06205"
9214
+ {
9215
+ id: "level",
9216
+ interval: [
9217
+ [
9218
+ -1,
9219
+ 10
9220
+ ]
9221
+ ],
9222
+ values: [
9223
+ -1,
9224
+ -0.5,
9225
+ -0.2,
9226
+ -0.1,
9227
+ -0.05,
9228
+ 0.1,
9229
+ 1.5,
9230
+ 10
9231
+ ],
9232
+ reference: "Height of measurement above ground level in meters"
9194
9233
  },
9195
- id: "0-20000-0-06205"
9196
- },
9197
- {
9198
- type: "Feature",
9199
- geometry: {
9200
- type: "Point",
9201
- coordinates: [
9202
- 4.0122,
9203
- 54.1167,
9204
- 43.4
9205
- ]
9234
+ {
9235
+ id: "method",
9236
+ interval: [
9237
+ [
9238
+ "maximum",
9239
+ "sum"
9240
+ ]
9241
+ ],
9242
+ values: [
9243
+ "maximum",
9244
+ "mean",
9245
+ "minimum",
9246
+ "stddev",
9247
+ "sum"
9248
+ ],
9249
+ reference: "Time aggregation functions"
9206
9250
  },
9207
- properties: {
9208
- name: "F16-A",
9209
- wmoId: "06206"
9251
+ {
9252
+ id: "standard_name",
9253
+ interval: [
9254
+ [
9255
+ "air_pressure",
9256
+ "wind_speed_of_gust"
9257
+ ]
9258
+ ],
9259
+ values: [
9260
+ "air_pressure",
9261
+ "air_pressure_at_mean_sea_level",
9262
+ "air_temperature",
9263
+ "cloud_area_fraction",
9264
+ "cloud_base_altitude",
9265
+ "dew_point_temperature",
9266
+ "integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air",
9267
+ "lwe_precipitation_rate",
9268
+ "predominant_precipitation_type_at_surface",
9269
+ "rainfall_amount",
9270
+ "relative_humidity",
9271
+ "soil_temperature",
9272
+ "surface_downwelling_shortwave_flux_in_air",
9273
+ "visibility_in_air",
9274
+ "wind_from_direction",
9275
+ "wind_speed",
9276
+ "wind_speed_of_gust"
9277
+ ],
9278
+ reference: "https://vocab.nerc.ac.uk/standard_name/"
9279
+ }
9280
+ ]
9281
+ };
9282
+ var data_queries = {
9283
+ position: {
9284
+ link: {
9285
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/position",
9286
+ rel: "data",
9287
+ variables: {
9288
+ query_type: "position",
9289
+ output_formats: [
9290
+ "CoverageJSON",
9291
+ "netCDF4"
9292
+ ],
9293
+ output_format: [
9294
+ "CoverageJSON"
9295
+ ]
9296
+ }
9297
+ }
9298
+ },
9299
+ area: {
9300
+ link: {
9301
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/area",
9302
+ rel: "data",
9303
+ variables: {
9304
+ query_type: "area",
9305
+ output_format: [
9306
+ "CoverageJSON"
9307
+ ]
9308
+ }
9309
+ }
9310
+ },
9311
+ cube: {
9312
+ link: {
9313
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/cube",
9314
+ rel: "data",
9315
+ variables: {
9316
+ query_type: "cube",
9317
+ output_formats: [
9318
+ "CoverageJSON",
9319
+ "netCDF4"
9320
+ ],
9321
+ output_format: [
9322
+ "CoverageJSON"
9323
+ ]
9324
+ }
9325
+ }
9326
+ },
9327
+ locations: {
9328
+ link: {
9329
+ href: "https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/locations",
9330
+ rel: "data",
9331
+ variables: {
9332
+ query_type: "locations",
9333
+ output_formats: [
9334
+ "CoverageJSON",
9335
+ "netCDF4"
9336
+ ],
9337
+ output_format: [
9338
+ "CoverageJSON"
9339
+ ]
9340
+ }
9341
+ }
9342
+ }
9343
+ };
9344
+ var crs = [
9345
+ "WGS84"
9346
+ ];
9347
+ var output_formats = [
9348
+ "CoverageJSON",
9349
+ "netCDF4"
9350
+ ];
9351
+ var parameter_names = {
9352
+ D1H: {
9353
+ type: "Parameter",
9354
+ label: "Rainfall Duration in last Hour",
9355
+ description: "Past hour rainfall duration in minutes",
9356
+ "data-type": "float",
9357
+ unit: {
9358
+ label: "minute",
9359
+ symbol: {
9360
+ value: "min",
9361
+ type: "https://qudt.org/vocab/unit/MIN"
9362
+ }
9363
+ },
9364
+ observedProperty: {
9365
+ label: "Precipitation Duration",
9366
+ description: "Period during which more than 0.05 mm of precipitation was measured."
9367
+ },
9368
+ measurementType: {
9369
+ method: "sum",
9370
+ duration: "-PT1H"
9371
+ }
9372
+ },
9373
+ dd: {
9374
+ type: "Parameter",
9375
+ label: "Wind Direction Mean with MD",
9376
+ description: "Past 10 minute mean wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9377
+ "data-type": "float",
9378
+ unit: {
9379
+ label: "degree",
9380
+ symbol: {
9381
+ value: "°",
9382
+ type: "https://qudt.org/vocab/unit/DEG"
9383
+ }
9384
+ },
9385
+ observedProperty: {
9386
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9387
+ label: "Wind from direction"
9388
+ },
9389
+ measurementType: {
9390
+ method: "mean",
9391
+ duration: "-PT10M"
9392
+ },
9393
+ "eumetnet:standard_name": "wind_from_direction"
9394
+ },
9395
+ dn: {
9396
+ type: "Parameter",
9397
+ label: "Wind Direction Minimum with MD",
9398
+ description: "Past 10 minute minimum wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9399
+ "data-type": "float",
9400
+ unit: {
9401
+ label: "degree",
9402
+ symbol: {
9403
+ value: "°",
9404
+ type: "https://qudt.org/vocab/unit/DEG"
9405
+ }
9406
+ },
9407
+ observedProperty: {
9408
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9409
+ label: "Wind from direction"
9410
+ },
9411
+ measurementType: {
9412
+ method: "minimum",
9413
+ duration: "-PT10M"
9414
+ },
9415
+ "eumetnet:standard_name": "wind_from_direction"
9416
+ },
9417
+ dr: {
9418
+ type: "Parameter",
9419
+ label: "Precipitation Duration (Rain Gauge)",
9420
+ description: "Past 10 minute duration of precipitation in seconds, measured by rain gauge",
9421
+ "data-type": "float",
9422
+ unit: {
9423
+ label: "second",
9424
+ symbol: {
9425
+ value: "s",
9426
+ type: "https://qudt.org/vocab/unit/SEC"
9427
+ }
9428
+ },
9429
+ observedProperty: {
9430
+ label: "Precipitation Duration",
9431
+ description: "Period during which more than 0.05 mm of precipitation was measured."
9432
+ },
9433
+ measurementType: {
9434
+ method: "N/A",
9435
+ duration: "-PT10M"
9436
+ }
9437
+ },
9438
+ dsd: {
9439
+ type: "Parameter",
9440
+ label: "Wind Direction Std Dev with MD",
9441
+ description: "Past 10 minute standard deviation of wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9442
+ "data-type": "float",
9443
+ unit: {
9444
+ label: "degree",
9445
+ symbol: {
9446
+ value: "°",
9447
+ type: "https://qudt.org/vocab/unit/DEG"
9448
+ }
9449
+ },
9450
+ observedProperty: {
9451
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9452
+ label: "Wind from direction"
9453
+ },
9454
+ measurementType: {
9455
+ method: "stddev",
9456
+ duration: "-PT10M"
9457
+ },
9458
+ "eumetnet:standard_name": "wind_from_direction"
9459
+ },
9460
+ dx: {
9461
+ type: "Parameter",
9462
+ label: "Wind Direction Maximum with MD",
9463
+ description: "Past 10 minute maximum wind direction in degrees, measured at sensor height, with Marked Discontinuity (MD)",
9464
+ "data-type": "float",
9465
+ unit: {
9466
+ label: "degree",
9467
+ symbol: {
9468
+ value: "°",
9469
+ type: "https://qudt.org/vocab/unit/DEG"
9470
+ }
9471
+ },
9472
+ observedProperty: {
9473
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_from_direction/",
9474
+ label: "Wind from direction"
9475
+ },
9476
+ measurementType: {
9477
+ method: "maximum",
9478
+ duration: "-PT10M"
9479
+ },
9480
+ "eumetnet:standard_name": "wind_from_direction"
9481
+ },
9482
+ ff: {
9483
+ type: "Parameter",
9484
+ label: "Wind Speed at 10 m Mean with MD",
9485
+ description: "Past 10 minute mean wind speed, representative for 10 meters, in meters per second, with Marked Discontinuity (MD)",
9486
+ "data-type": "float",
9487
+ unit: {
9488
+ label: "meter per second",
9489
+ symbol: {
9490
+ value: "m/s",
9491
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9492
+ }
9493
+ },
9494
+ observedProperty: {
9495
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
9496
+ label: "Wind speed"
9497
+ },
9498
+ measurementType: {
9499
+ method: "mean",
9500
+ duration: "-PT10M"
9501
+ },
9502
+ "eumetnet:standard_name": "wind_speed",
9503
+ "eumetnet:level": 10
9504
+ },
9505
+ ffs: {
9506
+ type: "Parameter",
9507
+ label: "Wind Speed Sensor Mean with MD",
9508
+ description: "Past 10 minute mean wind speed, measured at sensor height, in meters per second, with Marked Discontinuity (MD)",
9509
+ "data-type": "float",
9510
+ unit: {
9511
+ label: "meter per second",
9512
+ symbol: {
9513
+ value: "m/s",
9514
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9515
+ }
9516
+ },
9517
+ observedProperty: {
9518
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
9519
+ label: "Wind speed"
9520
+ },
9521
+ measurementType: {
9522
+ method: "mean",
9523
+ duration: "-PT10M"
9524
+ },
9525
+ "eumetnet:standard_name": "wind_speed"
9526
+ },
9527
+ fsd: {
9528
+ type: "Parameter",
9529
+ label: "Wind Speed Std Dev with MD",
9530
+ description: "Past 10 minute standard deviation of wind speed, measured at sensor height, in meters per second, with Marked Discontinuity (MD)",
9531
+ "data-type": "float",
9532
+ unit: {
9533
+ label: "meter per second",
9534
+ symbol: {
9535
+ value: "m/s",
9536
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9537
+ }
9538
+ },
9539
+ observedProperty: {
9540
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
9541
+ label: "Wind speed"
9542
+ },
9543
+ measurementType: {
9544
+ method: "stddev",
9545
+ duration: "-PT10M"
9546
+ },
9547
+ "eumetnet:standard_name": "wind_speed"
9548
+ },
9549
+ fx: {
9550
+ type: "Parameter",
9551
+ label: "Wind Gust at 10 m Maximum last Interval",
9552
+ description: "Past 19 minute maximum wind gust, representative for 10 meters, in meters per second",
9553
+ "data-type": "float",
9554
+ unit: {
9555
+ label: "meter per second",
9556
+ symbol: {
9557
+ value: "m/s",
9558
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9559
+ }
9560
+ },
9561
+ observedProperty: {
9562
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9563
+ label: "Wind speed of gust"
9564
+ },
9565
+ measurementType: {
9566
+ method: "maximum",
9567
+ duration: "-PT19M"
9568
+ },
9569
+ "eumetnet:standard_name": "wind_speed_of_gust",
9570
+ "eumetnet:level": 10
9571
+ },
9572
+ fxs: {
9573
+ type: "Parameter",
9574
+ label: "Wind Gust Sensor Maximum last Interval",
9575
+ description: "Past 19 minute maximum wind gust, measured at sensor height, in meters per second",
9576
+ "data-type": "float",
9577
+ unit: {
9578
+ label: "meter per second",
9579
+ symbol: {
9580
+ value: "m/s",
9581
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9582
+ }
9583
+ },
9584
+ observedProperty: {
9585
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9586
+ label: "Wind speed of gust"
9587
+ },
9588
+ measurementType: {
9589
+ method: "maximum",
9590
+ duration: "-PT19M"
9591
+ },
9592
+ "eumetnet:standard_name": "wind_speed_of_gust"
9593
+ },
9594
+ gff: {
9595
+ type: "Parameter",
9596
+ label: "Wind Gust at 10 m Maximum with MD",
9597
+ description: "Past 10 minute maximum wind gust, representative for 10 meters, in meters per second, with Marked Discontinuity (MD)",
9598
+ "data-type": "float",
9599
+ unit: {
9600
+ label: "meter per second",
9601
+ symbol: {
9602
+ value: "m/s",
9603
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9604
+ }
9605
+ },
9606
+ observedProperty: {
9607
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9608
+ label: "Wind speed of gust"
9609
+ },
9610
+ measurementType: {
9611
+ method: "maximum",
9612
+ duration: "-PT10M"
9613
+ },
9614
+ "eumetnet:standard_name": "wind_speed_of_gust",
9615
+ "eumetnet:level": 10
9616
+ },
9617
+ gffs: {
9618
+ type: "Parameter",
9619
+ label: "Wind Gust Sensor Maximum with MD",
9620
+ description: "Past 10 minute maximum wind gust, measured at sensor height, in meters per second, with Marked Discontinuity (MD)",
9621
+ "data-type": "float",
9622
+ unit: {
9623
+ label: "meter per second",
9624
+ symbol: {
9625
+ value: "m/s",
9626
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
9627
+ }
9628
+ },
9629
+ observedProperty: {
9630
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
9631
+ label: "Wind speed of gust"
9632
+ },
9633
+ measurementType: {
9634
+ method: "maximum",
9635
+ duration: "-PT10M"
9636
+ },
9637
+ "eumetnet:standard_name": "wind_speed_of_gust"
9638
+ },
9639
+ h: {
9640
+ type: "Parameter",
9641
+ label: "Cloud Base",
9642
+ description: "Past 10 minute cloud base altitude, in feet",
9643
+ "data-type": "float",
9644
+ unit: {
9645
+ label: "foot",
9646
+ symbol: {
9647
+ value: "ft",
9648
+ type: "https://qudt.org/vocab/unit/FT"
9649
+ }
9650
+ },
9651
+ observedProperty: {
9652
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9653
+ label: "Cloud base altitude"
9654
+ },
9655
+ measurementType: {
9656
+ method: "N/A",
9657
+ duration: "-PT10M"
9658
+ },
9659
+ "eumetnet:standard_name": "cloud_base_altitude"
9660
+ },
9661
+ h1: {
9662
+ type: "Parameter",
9663
+ label: "Cloud Base First Layer",
9664
+ description: "Past 10 minute first layer cloud base altitude, in feet",
9665
+ "data-type": "float",
9666
+ unit: {
9667
+ label: "foot",
9668
+ symbol: {
9669
+ value: "ft",
9670
+ type: "https://qudt.org/vocab/unit/FT"
9671
+ }
9672
+ },
9673
+ observedProperty: {
9674
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9675
+ label: "Cloud base altitude"
9676
+ },
9677
+ measurementType: {
9678
+ method: "N/A",
9679
+ duration: "-PT10M"
9680
+ },
9681
+ "eumetnet:standard_name": "cloud_base_altitude"
9682
+ },
9683
+ h2: {
9684
+ type: "Parameter",
9685
+ label: "Cloud Base Second Layer",
9686
+ description: "Past 10 minute second layer cloud base altitude, in feet",
9687
+ "data-type": "float",
9688
+ unit: {
9689
+ label: "foot",
9690
+ symbol: {
9691
+ value: "ft",
9692
+ type: "https://qudt.org/vocab/unit/FT"
9693
+ }
9694
+ },
9695
+ observedProperty: {
9696
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9697
+ label: "Cloud base altitude"
9698
+ },
9699
+ measurementType: {
9700
+ method: "N/A",
9701
+ duration: "-PT10M"
9702
+ },
9703
+ "eumetnet:standard_name": "cloud_base_altitude"
9704
+ },
9705
+ h3: {
9706
+ type: "Parameter",
9707
+ label: "Cloud Base Third Layer",
9708
+ description: "Past 10 minute third layer cloud base altitude, in feet",
9709
+ "data-type": "float",
9710
+ unit: {
9711
+ label: "foot",
9712
+ symbol: {
9713
+ value: "ft",
9714
+ type: "https://qudt.org/vocab/unit/FT"
9715
+ }
9716
+ },
9717
+ observedProperty: {
9718
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9719
+ label: "Cloud base altitude"
9720
+ },
9721
+ measurementType: {
9722
+ method: "N/A",
9723
+ duration: "-PT10M"
9724
+ },
9725
+ "eumetnet:standard_name": "cloud_base_altitude"
9726
+ },
9727
+ hc: {
9728
+ type: "Parameter",
9729
+ label: "Cloud Base Ceilometer",
9730
+ description: "Past 10 minute cloud base ceilometer, in feet",
9731
+ "data-type": "float",
9732
+ unit: {
9733
+ label: "foot",
9734
+ symbol: {
9735
+ value: "ft",
9736
+ type: "https://qudt.org/vocab/unit/FT"
9737
+ }
9738
+ },
9739
+ observedProperty: {
9740
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9741
+ label: "Cloud base altitude"
9742
+ },
9743
+ measurementType: {
9744
+ method: "N/A",
9745
+ duration: "-PT10M"
9746
+ },
9747
+ "eumetnet:standard_name": "cloud_base_altitude"
9748
+ },
9749
+ hc1: {
9750
+ type: "Parameter",
9751
+ label: "Cloud Base Ceilometer First Layer",
9752
+ description: "Past 10 minute first layer cloud base ceilometer, in feet",
9753
+ "data-type": "float",
9754
+ unit: {
9755
+ label: "foot",
9756
+ symbol: {
9757
+ value: "ft",
9758
+ type: "https://qudt.org/vocab/unit/FT"
9759
+ }
9760
+ },
9761
+ observedProperty: {
9762
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9763
+ label: "Cloud base altitude"
9764
+ },
9765
+ measurementType: {
9766
+ method: "N/A",
9767
+ duration: "-PT10M"
9768
+ },
9769
+ "eumetnet:standard_name": "cloud_base_altitude"
9770
+ },
9771
+ hc2: {
9772
+ type: "Parameter",
9773
+ label: "Cloud Base Ceilometer Second Layer",
9774
+ description: "Past 10 minute second layer cloud base ceilometer, in feet",
9775
+ "data-type": "float",
9776
+ unit: {
9777
+ label: "foot",
9778
+ symbol: {
9779
+ value: "ft",
9780
+ type: "https://qudt.org/vocab/unit/FT"
9781
+ }
9782
+ },
9783
+ observedProperty: {
9784
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9785
+ label: "Cloud base altitude"
9786
+ },
9787
+ measurementType: {
9788
+ method: "N/A",
9789
+ duration: "-PT10M"
9790
+ },
9791
+ "eumetnet:standard_name": "cloud_base_altitude"
9792
+ },
9793
+ hc3: {
9794
+ type: "Parameter",
9795
+ label: "Cloud Base Ceilometer Third Layer",
9796
+ description: "Past 10 minute third layer cloud base ceilometer, in feet",
9797
+ "data-type": "float",
9798
+ unit: {
9799
+ label: "foot",
9800
+ symbol: {
9801
+ value: "ft",
9802
+ type: "https://qudt.org/vocab/unit/FT"
9803
+ }
9804
+ },
9805
+ observedProperty: {
9806
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_base_altitude/",
9807
+ label: "Cloud base altitude"
9808
+ },
9809
+ measurementType: {
9810
+ method: "N/A",
9811
+ duration: "-PT10M"
9812
+ },
9813
+ "eumetnet:standard_name": "cloud_base_altitude"
9814
+ },
9815
+ n: {
9816
+ type: "Parameter",
9817
+ label: "Total Cloud Cover",
9818
+ description: "Past 10 minute total cloud cover, in okta",
9819
+ "data-type": "float",
9820
+ unit: {
9821
+ label: "okta",
9822
+ symbol: {
9823
+ value: "okta",
9824
+ type: "https://qudt.org/vocab/unit/OKTA"
9825
+ }
9826
+ },
9827
+ observedProperty: {
9828
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9829
+ label: "Cloud area fraction"
9830
+ },
9831
+ measurementType: {
9832
+ method: "N/A",
9833
+ duration: "-PT10M"
9834
+ },
9835
+ "eumetnet:standard_name": "cloud_area_fraction"
9836
+ },
9837
+ n1: {
9838
+ type: "Parameter",
9839
+ label: "Cloud Amount First Layer",
9840
+ description: "Past 10 minute first layer cloud amount, in okta",
9841
+ "data-type": "float",
9842
+ unit: {
9843
+ label: "okta",
9844
+ symbol: {
9845
+ value: "okta",
9846
+ type: "https://qudt.org/vocab/unit/OKTA"
9847
+ }
9848
+ },
9849
+ observedProperty: {
9850
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9851
+ label: "Cloud area fraction"
9852
+ },
9853
+ measurementType: {
9854
+ method: "N/A",
9855
+ duration: "-PT10M"
9856
+ },
9857
+ "eumetnet:standard_name": "cloud_area_fraction"
9858
+ },
9859
+ n2: {
9860
+ type: "Parameter",
9861
+ label: "Cloud Amount Second Layer",
9862
+ description: "Past 10 minute second layer cloud amount, in okta",
9863
+ "data-type": "float",
9864
+ unit: {
9865
+ label: "okta",
9866
+ symbol: {
9867
+ value: "okta",
9868
+ type: "https://qudt.org/vocab/unit/OKTA"
9869
+ }
9870
+ },
9871
+ observedProperty: {
9872
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9873
+ label: "Cloud area fraction"
9874
+ },
9875
+ measurementType: {
9876
+ method: "N/A",
9877
+ duration: "-PT10M"
9878
+ },
9879
+ "eumetnet:standard_name": "cloud_area_fraction"
9880
+ },
9881
+ n3: {
9882
+ type: "Parameter",
9883
+ label: "Cloud Amount Third Layer",
9884
+ description: "Past 10 minute third layer cloud amount, in okta",
9885
+ "data-type": "float",
9886
+ unit: {
9887
+ label: "okta",
9888
+ symbol: {
9889
+ value: "okta",
9890
+ type: "https://qudt.org/vocab/unit/OKTA"
9891
+ }
9892
+ },
9893
+ observedProperty: {
9894
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9895
+ label: "Cloud area fraction"
9896
+ },
9897
+ measurementType: {
9898
+ method: "N/A",
9899
+ duration: "-PT10M"
9900
+ },
9901
+ "eumetnet:standard_name": "cloud_area_fraction"
9902
+ },
9903
+ nc: {
9904
+ type: "Parameter",
9905
+ label: "Total Cloud Cover Ceilometer",
9906
+ description: "Past 10 minute total cloud cover ceilometer, in okta",
9907
+ "data-type": "float",
9908
+ unit: {
9909
+ label: "okta",
9910
+ symbol: {
9911
+ value: "okta",
9912
+ type: "https://qudt.org/vocab/unit/OKTA"
9913
+ }
9914
+ },
9915
+ observedProperty: {
9916
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9917
+ label: "Cloud area fraction"
9918
+ },
9919
+ measurementType: {
9920
+ method: "N/A",
9921
+ duration: "-PT10M"
9922
+ },
9923
+ "eumetnet:standard_name": "cloud_area_fraction"
9924
+ },
9925
+ nc1: {
9926
+ type: "Parameter",
9927
+ label: "Cloud Amount Ceilometer First Layer",
9928
+ description: "Past 10 minute first layer cloud amount ceilometer, in okta",
9929
+ "data-type": "float",
9930
+ unit: {
9931
+ label: "okta",
9932
+ symbol: {
9933
+ value: "okta",
9934
+ type: "https://qudt.org/vocab/unit/OKTA"
9935
+ }
9936
+ },
9937
+ observedProperty: {
9938
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9939
+ label: "Cloud area fraction"
9940
+ },
9941
+ measurementType: {
9942
+ method: "N/A",
9943
+ duration: "-PT10M"
9944
+ },
9945
+ "eumetnet:standard_name": "cloud_area_fraction"
9946
+ },
9947
+ nc2: {
9948
+ type: "Parameter",
9949
+ label: "Cloud Amount Ceilometer Second Layer",
9950
+ description: "Past 10 minute second layer cloud amount ceilometer, in okta",
9951
+ "data-type": "float",
9952
+ unit: {
9953
+ label: "okta",
9954
+ symbol: {
9955
+ value: "okta",
9956
+ type: "https://qudt.org/vocab/unit/OKTA"
9957
+ }
9958
+ },
9959
+ observedProperty: {
9960
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9961
+ label: "Cloud area fraction"
9962
+ },
9963
+ measurementType: {
9964
+ method: "N/A",
9965
+ duration: "-PT10M"
9966
+ },
9967
+ "eumetnet:standard_name": "cloud_area_fraction"
9968
+ },
9969
+ nc3: {
9970
+ type: "Parameter",
9971
+ label: "Cloud Amount Ceilometer Third Layer",
9972
+ description: "Past 10 minute third layer cloud amount ceilometer, in okta",
9973
+ "data-type": "float",
9974
+ unit: {
9975
+ label: "okta",
9976
+ symbol: {
9977
+ value: "okta",
9978
+ type: "https://qudt.org/vocab/unit/OKTA"
9979
+ }
9980
+ },
9981
+ observedProperty: {
9982
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
9983
+ label: "Cloud area fraction"
9984
+ },
9985
+ measurementType: {
9986
+ method: "N/A",
9987
+ duration: "-PT10M"
9988
+ },
9989
+ "eumetnet:standard_name": "cloud_area_fraction"
9990
+ },
9991
+ nhc: {
9992
+ type: "Parameter",
9993
+ label: "Low and Middle Cloud Amount Ceilometer",
9994
+ description: "Past 10 minute low and middle cloud amount ceilometer, in okta",
9995
+ "data-type": "float",
9996
+ unit: {
9997
+ label: "okta",
9998
+ symbol: {
9999
+ value: "okta",
10000
+ type: "https://qudt.org/vocab/unit/OKTA"
10001
+ }
10002
+ },
10003
+ observedProperty: {
10004
+ id: "https://vocab.nerc.ac.uk/standard_name/cloud_area_fraction/",
10005
+ label: "Cloud area fraction"
10006
+ },
10007
+ measurementType: {
10008
+ method: "N/A",
10009
+ duration: "-PT10M"
10010
+ },
10011
+ "eumetnet:standard_name": "cloud_area_fraction"
10012
+ },
10013
+ p0: {
10014
+ type: "Parameter",
10015
+ label: "Air Pressure at Station Level 1 Min Mean",
10016
+ description: "Past minute mean air pressure at station level",
10017
+ "data-type": "float",
10018
+ unit: {
10019
+ label: "hectopascal",
10020
+ symbol: {
10021
+ value: "hPa",
10022
+ type: "https://qudt.org/vocab/unit/HectoPA"
10023
+ }
10024
+ },
10025
+ observedProperty: {
10026
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure/",
10027
+ label: "Air pressure"
10028
+ },
10029
+ measurementType: {
10030
+ method: "mean",
10031
+ duration: "-PT1M"
10032
+ },
10033
+ "eumetnet:standard_name": "air_pressure"
10034
+ },
10035
+ pg: {
10036
+ type: "Parameter",
10037
+ label: "Precipitation Intensity (Present Weather Sensor) Mean",
10038
+ description: "Past 10 minute mean precipitation intensity in millimeters per hour, measured by Present Weather Sensor",
10039
+ "data-type": "float",
10040
+ unit: {
10041
+ label: "millimeter per hour",
10042
+ symbol: {
10043
+ value: "mm/h",
10044
+ type: "https://qudt.org/vocab/unit/MilliM-PER-HR"
10045
+ }
10046
+ },
10047
+ observedProperty: {
10048
+ id: "https://vocab.nerc.ac.uk/standard_name/lwe_precipitation_rate/",
10049
+ label: "Lwe precipitation rate"
10050
+ },
10051
+ measurementType: {
10052
+ method: "mean",
10053
+ duration: "-PT10M"
10054
+ },
10055
+ "eumetnet:standard_name": "lwe_precipitation_rate"
10056
+ },
10057
+ pp: {
10058
+ type: "Parameter",
10059
+ label: "Air Pressure at Mean Sea Level 1 Min Mean",
10060
+ description: "Past minute mean air pressure at mean sea level in hectopascal",
10061
+ "data-type": "float",
10062
+ unit: {
10063
+ label: "hectopascal",
10064
+ symbol: {
10065
+ value: "hPa",
10066
+ type: "https://qudt.org/vocab/unit/HectoPA"
10067
+ }
10068
+ },
10069
+ observedProperty: {
10070
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure_at_mean_sea_level/",
10071
+ label: "Air pressure at mean sea level"
10072
+ },
10073
+ measurementType: {
10074
+ method: "mean",
10075
+ duration: "-PT1M"
10076
+ },
10077
+ "eumetnet:standard_name": "air_pressure_at_mean_sea_level"
10078
+ },
10079
+ pr: {
10080
+ type: "Parameter",
10081
+ label: "Precipitation Duration (Present Weather Sensor)",
10082
+ description: "Past 10 minute duration of precipitation in seconds, measured by Present Weather Sensor",
10083
+ "data-type": "float",
10084
+ unit: {
10085
+ label: "second",
10086
+ symbol: {
10087
+ value: "s",
10088
+ type: "https://qudt.org/vocab/unit/SEC"
10089
+ }
10090
+ },
10091
+ observedProperty: {
10092
+ label: "Precipitation Duration",
10093
+ description: "Period during which more than 0.05 mm of precipitation was measured."
10094
+ },
10095
+ measurementType: {
10096
+ method: "N/A",
10097
+ duration: "-PT10M"
10098
+ }
10099
+ },
10100
+ ps: {
10101
+ type: "Parameter",
10102
+ label: "Air Pressure at Sensor Level Mean",
10103
+ description: "Past 10 minute mean air pressure at sensor level in hectopascal",
10104
+ "data-type": "float",
10105
+ unit: {
10106
+ label: "hectopascal",
10107
+ symbol: {
10108
+ value: "hPa",
10109
+ type: "https://qudt.org/vocab/unit/HectoPA"
10110
+ }
10111
+ },
10112
+ observedProperty: {
10113
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure/",
10114
+ label: "Air pressure"
10115
+ },
10116
+ measurementType: {
10117
+ method: "mean",
10118
+ duration: "-PT10M"
10119
+ },
10120
+ "eumetnet:standard_name": "air_pressure"
10121
+ },
10122
+ pwc: {
10123
+ type: "Parameter",
10124
+ label: "Corrected Precipitation Type Maximum",
10125
+ 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",
10126
+ "data-type": "integer",
10127
+ unit: {
10128
+ label: "unitless",
10129
+ symbol: {
10130
+ value: "一",
10131
+ type: "https://qudt.org/vocab/unit/UNITLESS"
10132
+ }
10133
+ },
10134
+ observedProperty: {
10135
+ id: "https://vocab.nerc.ac.uk/standard_name/predominant_precipitation_type_at_surface/",
10136
+ label: "Predominant precipitation type at surface"
10137
+ },
10138
+ measurementType: {
10139
+ method: "maximum",
10140
+ duration: "-PT10M"
10141
+ },
10142
+ "eumetnet:standard_name": "predominant_precipitation_type_at_surface"
10143
+ },
10144
+ Q1H: {
10145
+ type: "Parameter",
10146
+ label: "Global Radiation 1 Hour Sum",
10147
+ description: "Past hour sum of global radiation in the last hour, in joules per square centimeter",
10148
+ "data-type": "float",
10149
+ unit: {
10150
+ label: "joule per square centimeter",
10151
+ symbol: {
10152
+ value: "J/cm²",
10153
+ type: "https://qudt.org/vocab/unit/J-PER-CentiM2"
10154
+ }
10155
+ },
10156
+ observedProperty: {
10157
+ id: "https://vocab.nerc.ac.uk/standard_name/integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air/",
10158
+ label: "Integral wrt time of surface downwelling shortwave flux in air"
10159
+ },
10160
+ measurementType: {
10161
+ method: "sum",
10162
+ duration: "-PT1H"
10163
+ },
10164
+ "eumetnet:standard_name": "integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air"
10165
+ },
10166
+ Q24H: {
10167
+ type: "Parameter",
10168
+ label: "Global Radiation 24 Hour Sum",
10169
+ description: "Past 24 hour sum of global radiation, in joules per square centimeter",
10170
+ "data-type": "float",
10171
+ unit: {
10172
+ label: "joule per square centimeter",
10173
+ symbol: {
10174
+ value: "J/cm²",
10175
+ type: "https://qudt.org/vocab/unit/J-PER-CentiM2"
10176
+ }
10177
+ },
10178
+ observedProperty: {
10179
+ id: "https://vocab.nerc.ac.uk/standard_name/integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air/",
10180
+ label: "Integral wrt time of surface downwelling shortwave flux in air"
10181
+ },
10182
+ measurementType: {
10183
+ method: "sum",
10184
+ duration: "-PT24H"
10185
+ },
10186
+ "eumetnet:standard_name": "integral_wrt_time_of_surface_downwelling_shortwave_flux_in_air"
10187
+ },
10188
+ qg: {
10189
+ type: "Parameter",
10190
+ label: "Global Solar Radiation Mean",
10191
+ description: "Past 10 minute mean global solar radiation in watt per square meter",
10192
+ "data-type": "float",
10193
+ unit: {
10194
+ label: "watt per square meter",
10195
+ symbol: {
10196
+ value: "W/m²",
10197
+ type: "https://qudt.org/vocab/unit/W-PER-M2"
10198
+ }
10199
+ },
10200
+ observedProperty: {
10201
+ id: "https://vocab.nerc.ac.uk/standard_name/surface_downwelling_shortwave_flux_in_air/",
10202
+ label: "Surface downwelling shortwave flux in air"
10203
+ },
10204
+ measurementType: {
10205
+ method: "mean",
10206
+ duration: "-PT10M"
10207
+ },
10208
+ "eumetnet:standard_name": "surface_downwelling_shortwave_flux_in_air"
10209
+ },
10210
+ qgn: {
10211
+ type: "Parameter",
10212
+ label: "Global Solar Radiation Minimum",
10213
+ description: "Past 10 minute minimum global solar radiation, in watt per square meter",
10214
+ "data-type": "float",
10215
+ unit: {
10216
+ label: "watt per square meter",
10217
+ symbol: {
10218
+ value: "W/m²",
10219
+ type: "https://qudt.org/vocab/unit/W-PER-M2"
10220
+ }
10221
+ },
10222
+ observedProperty: {
10223
+ id: "https://vocab.nerc.ac.uk/standard_name/surface_downwelling_shortwave_flux_in_air/",
10224
+ label: "Surface downwelling shortwave flux in air"
10225
+ },
10226
+ measurementType: {
10227
+ method: "minimum",
10228
+ duration: "-PT10M"
10229
+ },
10230
+ "eumetnet:standard_name": "surface_downwelling_shortwave_flux_in_air"
10231
+ },
10232
+ qgx: {
10233
+ type: "Parameter",
10234
+ label: "Global Solar Radiation Maximum",
10235
+ description: "Past 10 minute maximum global solar radiation, in watt per square meter",
10236
+ "data-type": "float",
10237
+ unit: {
10238
+ label: "watt per square meter",
10239
+ symbol: {
10240
+ value: "W/m²",
10241
+ type: "https://qudt.org/vocab/unit/W-PER-M2"
10242
+ }
10243
+ },
10244
+ observedProperty: {
10245
+ id: "https://vocab.nerc.ac.uk/standard_name/surface_downwelling_shortwave_flux_in_air/",
10246
+ label: "Surface downwelling shortwave flux in air"
10247
+ },
10248
+ measurementType: {
10249
+ method: "maximum",
10250
+ duration: "-PT10M"
10251
+ },
10252
+ "eumetnet:standard_name": "surface_downwelling_shortwave_flux_in_air"
10253
+ },
10254
+ qnh: {
10255
+ type: "Parameter",
10256
+ label: "QNH 1 Min Mean",
10257
+ description: "Past minute mean QNH, in hectopascal",
10258
+ "data-type": "float",
10259
+ unit: {
10260
+ label: "hectopascal",
10261
+ symbol: {
10262
+ value: "hPa",
10263
+ type: "https://qudt.org/vocab/unit/HectoPA"
10264
+ }
10265
+ },
10266
+ observedProperty: {
10267
+ id: "https://vocab.nerc.ac.uk/standard_name/air_pressure_at_mean_sea_level/",
10268
+ label: "Air pressure at mean sea level"
10269
+ },
10270
+ measurementType: {
10271
+ method: "mean",
10272
+ duration: "-PT1M"
10273
+ },
10274
+ "eumetnet:standard_name": "air_pressure_at_mean_sea_level"
10275
+ },
10276
+ R12H: {
10277
+ type: "Parameter",
10278
+ label: "Rainfall in last 12 Hours",
10279
+ description: "Past 12 hour rainfall, in millimeters",
10280
+ "data-type": "float",
10281
+ unit: {
10282
+ label: "millimeter",
10283
+ symbol: {
10284
+ value: "mm",
10285
+ type: "https://qudt.org/vocab/unit/MilliM"
10286
+ }
10287
+ },
10288
+ observedProperty: {
10289
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10290
+ label: "Rainfall amount"
10291
+ },
10292
+ measurementType: {
10293
+ method: "sum",
10294
+ duration: "-PT12H"
10295
+ },
10296
+ "eumetnet:standard_name": "rainfall_amount"
10297
+ },
10298
+ R1H: {
10299
+ type: "Parameter",
10300
+ label: "Rainfall in last Hour",
10301
+ description: "Past hour rainfall, in millimeters",
10302
+ "data-type": "float",
10303
+ unit: {
10304
+ label: "millimeter",
10305
+ symbol: {
10306
+ value: "mm",
10307
+ type: "https://qudt.org/vocab/unit/MilliM"
10308
+ }
10309
+ },
10310
+ observedProperty: {
10311
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10312
+ label: "Rainfall amount"
10313
+ },
10314
+ measurementType: {
10315
+ method: "sum",
10316
+ duration: "-PT1H"
10317
+ },
10318
+ "eumetnet:standard_name": "rainfall_amount"
10319
+ },
10320
+ R24H: {
10321
+ type: "Parameter",
10322
+ label: "Rainfall in last 24 Hours",
10323
+ description: "Past 24 hour rainfall, in millimeters",
10324
+ "data-type": "float",
10325
+ unit: {
10326
+ label: "millimeter",
10327
+ symbol: {
10328
+ value: "mm",
10329
+ type: "https://qudt.org/vocab/unit/MilliM"
10330
+ }
10331
+ },
10332
+ observedProperty: {
10333
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10334
+ label: "Rainfall amount"
10335
+ },
10336
+ measurementType: {
10337
+ method: "sum",
10338
+ duration: "-PT24H"
10339
+ },
10340
+ "eumetnet:standard_name": "rainfall_amount"
10341
+ },
10342
+ R6H: {
10343
+ type: "Parameter",
10344
+ label: "Rainfall in last 6 Hours",
10345
+ description: "Past 6 hour rainfall, in millimeters",
10346
+ "data-type": "float",
10347
+ unit: {
10348
+ label: "millimeter",
10349
+ symbol: {
10350
+ value: "mm",
10351
+ type: "https://qudt.org/vocab/unit/MilliM"
10352
+ }
10353
+ },
10354
+ observedProperty: {
10355
+ id: "https://vocab.nerc.ac.uk/standard_name/rainfall_amount/",
10356
+ label: "Rainfall amount"
10357
+ },
10358
+ measurementType: {
10359
+ method: "sum",
10360
+ duration: "-PT6H"
10361
+ },
10362
+ "eumetnet:standard_name": "rainfall_amount"
10363
+ },
10364
+ rg: {
10365
+ type: "Parameter",
10366
+ label: "Precipitation Intensity (Rain Gauge) Mean",
10367
+ description: "Past 10 minute mean precipitation intensity in millimeters per hour, measured by rain gauge",
10368
+ "data-type": "float",
10369
+ unit: {
10370
+ label: "millimeter per hour",
10371
+ symbol: {
10372
+ value: "mm/h",
10373
+ type: "https://qudt.org/vocab/unit/MilliM-PER-HR"
10374
+ }
10375
+ },
10376
+ observedProperty: {
10377
+ id: "https://vocab.nerc.ac.uk/standard_name/lwe_precipitation_rate/",
10378
+ label: "Lwe precipitation rate"
10379
+ },
10380
+ measurementType: {
10381
+ method: "mean",
10382
+ duration: "-PT10M"
10383
+ },
10384
+ "eumetnet:standard_name": "lwe_precipitation_rate"
10385
+ },
10386
+ rh: {
10387
+ type: "Parameter",
10388
+ label: "Relative Humidity 1.50 m 1 Min Mean",
10389
+ description: "Past minute mean relative humidity at 1.50 meters, in percentage",
10390
+ "data-type": "float",
10391
+ unit: {
10392
+ label: "percent",
10393
+ symbol: {
10394
+ value: "%",
10395
+ type: "https://qudt.org/vocab/unit/PERCENT"
10396
+ }
10397
+ },
10398
+ observedProperty: {
10399
+ id: "https://vocab.nerc.ac.uk/standard_name/relative_humidity/",
10400
+ label: "Relative humidity"
10401
+ },
10402
+ measurementType: {
10403
+ method: "mean",
10404
+ duration: "-PT1M"
10405
+ },
10406
+ "eumetnet:standard_name": "relative_humidity",
10407
+ "eumetnet:level": 1.5
10408
+ },
10409
+ rh10: {
10410
+ type: "Parameter",
10411
+ label: "Relative Humidity Mean",
10412
+ description: "10 minute mean relative humidity, in percentage",
10413
+ "data-type": "float",
10414
+ unit: {
10415
+ label: "percent",
10416
+ symbol: {
10417
+ value: "%",
10418
+ type: "https://qudt.org/vocab/unit/PERCENT"
10419
+ }
10420
+ },
10421
+ observedProperty: {
10422
+ id: "https://vocab.nerc.ac.uk/standard_name/relative_humidity/",
10423
+ label: "Relative humidity"
10424
+ },
10425
+ measurementType: {
10426
+ method: "mean",
10427
+ duration: "N/A"
10428
+ },
10429
+ "eumetnet:standard_name": "relative_humidity"
10430
+ },
10431
+ Sav1H: {
10432
+ type: "Parameter",
10433
+ label: "Wind Speed Mean last 1 Hour",
10434
+ description: "Past hour mean wind speed, in meters per second",
10435
+ "data-type": "float",
10436
+ unit: {
10437
+ label: "meter per second",
10438
+ symbol: {
10439
+ value: "m/s",
10440
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10441
+ }
10442
+ },
10443
+ observedProperty: {
10444
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10445
+ label: "Wind speed"
10446
+ },
10447
+ measurementType: {
10448
+ method: "mean",
10449
+ duration: "-PT1H"
10450
+ },
10451
+ "eumetnet:standard_name": "wind_speed"
10452
+ },
10453
+ Sax1H: {
10454
+ type: "Parameter",
10455
+ label: "Wind Speed Maximum last 1 Hour",
10456
+ description: "Past hour maximum wind speed, in meters per second",
10457
+ "data-type": "float",
10458
+ unit: {
10459
+ label: "meter per second",
10460
+ symbol: {
10461
+ value: "m/s",
10462
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10463
+ }
10464
+ },
10465
+ observedProperty: {
10466
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10467
+ label: "Wind speed"
10468
+ },
10469
+ measurementType: {
10470
+ method: "maximum",
10471
+ duration: "-PT1H"
10472
+ },
10473
+ "eumetnet:standard_name": "wind_speed"
10474
+ },
10475
+ Sax3H: {
10476
+ type: "Parameter",
10477
+ label: "Wind Speed Maximum last 3 Hours",
10478
+ description: "Past 3 hour maximum wind speed, in meters per second",
10479
+ "data-type": "float",
10480
+ unit: {
10481
+ label: "meter per second",
10482
+ symbol: {
10483
+ value: "m/s",
10484
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10485
+ }
10486
+ },
10487
+ observedProperty: {
10488
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10489
+ label: "Wind speed"
10490
+ },
10491
+ measurementType: {
10492
+ method: "maximum",
10493
+ duration: "-PT3H"
10494
+ },
10495
+ "eumetnet:standard_name": "wind_speed"
10496
+ },
10497
+ Sax6H: {
10498
+ type: "Parameter",
10499
+ label: "Wind Speed Maximum last 6 Hours",
10500
+ description: "Past 6 hour maximum wind speed, in meters per second",
10501
+ "data-type": "float",
10502
+ unit: {
10503
+ label: "meter per second",
10504
+ symbol: {
10505
+ value: "m/s",
10506
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10507
+ }
10508
+ },
10509
+ observedProperty: {
10510
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed/",
10511
+ label: "Wind speed"
10512
+ },
10513
+ measurementType: {
10514
+ method: "maximum",
10515
+ duration: "-PT6H"
10516
+ },
10517
+ "eumetnet:standard_name": "wind_speed"
10518
+ },
10519
+ sq: {
10520
+ type: "Parameter",
10521
+ label: "Squall Indicator",
10522
+ description: "Past 10 minute squall indicator, 0: no squall, 1: squall, or empty",
10523
+ "data-type": "integer",
10524
+ unit: {
10525
+ label: "unitless",
10526
+ symbol: {
10527
+ value: "一",
10528
+ type: "https://qudt.org/vocab/unit/UNITLESS"
10529
+ }
10530
+ },
10531
+ observedProperty: {
10532
+ label: "squall indicator",
10533
+ 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"
10534
+ },
10535
+ measurementType: {
10536
+ method: "N/A",
10537
+ duration: "-PT10M"
10538
+ }
10539
+ },
10540
+ ss: {
10541
+ type: "Parameter",
10542
+ label: "Sunshine Duration",
10543
+ description: "Past 10 minute duration of sunshine in minutes",
10544
+ "data-type": "float",
10545
+ unit: {
10546
+ label: "minute",
10547
+ symbol: {
10548
+ value: "min",
10549
+ type: "https://qudt.org/vocab/unit/MIN"
10550
+ }
10551
+ },
10552
+ observedProperty: {
10553
+ id: "https://vocab.nerc.ac.uk/standard_name/duration_of_sunshine/",
10554
+ label: "Duration of sunshine"
10555
+ },
10556
+ measurementType: {
10557
+ method: "sum",
10558
+ duration: "-PT10M"
10559
+ }
10560
+ },
10561
+ Sx1H: {
10562
+ type: "Parameter",
10563
+ label: "Wind Gust Maximum last 1 Hour",
10564
+ description: "Past hour maximum wind gust, in meters per second",
10565
+ "data-type": "float",
10566
+ unit: {
10567
+ label: "meter per second",
10568
+ symbol: {
10569
+ value: "m/s",
10570
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10571
+ }
10572
+ },
10573
+ observedProperty: {
10574
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
10575
+ label: "Wind speed of gust"
10576
+ },
10577
+ measurementType: {
10578
+ method: "maximum",
10579
+ duration: "-PT1H"
10580
+ },
10581
+ "eumetnet:standard_name": "wind_speed_of_gust"
10582
+ },
10583
+ Sx3H: {
10584
+ type: "Parameter",
10585
+ label: "Wind Gust Maximum last 3 Hours",
10586
+ description: "Past 3 hour maximum wind gust, in meters per second",
10587
+ "data-type": "float",
10588
+ unit: {
10589
+ label: "meter per second",
10590
+ symbol: {
10591
+ value: "m/s",
10592
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10593
+ }
10594
+ },
10595
+ observedProperty: {
10596
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
10597
+ label: "Wind speed of gust"
10598
+ },
10599
+ measurementType: {
10600
+ method: "maximum",
10601
+ duration: "-PT3H"
10602
+ },
10603
+ "eumetnet:standard_name": "wind_speed_of_gust"
10604
+ },
10605
+ Sx6H: {
10606
+ type: "Parameter",
10607
+ label: "Wind Gust Maximum last 6 Hours",
10608
+ description: "Past 6 hour maximum wind gust, in meters per second",
10609
+ "data-type": "float",
10610
+ unit: {
10611
+ label: "meter per second",
10612
+ symbol: {
10613
+ value: "m/s",
10614
+ type: "https://qudt.org/vocab/unit/M-PER-SEC"
10615
+ }
10616
+ },
10617
+ observedProperty: {
10618
+ id: "https://vocab.nerc.ac.uk/standard_name/wind_speed_of_gust/",
10619
+ label: "Wind speed of gust"
10620
+ },
10621
+ measurementType: {
10622
+ method: "maximum",
10623
+ duration: "-PT6H"
10624
+ },
10625
+ "eumetnet:standard_name": "wind_speed_of_gust"
10626
+ },
10627
+ t10: {
10628
+ type: "Parameter",
10629
+ label: "Air Temperature Mean",
10630
+ description: "10 minute mean air temperature, in degrees Celsius",
10631
+ "data-type": "float",
10632
+ unit: {
10633
+ label: "degrees celsius",
10634
+ symbol: {
10635
+ value: "°C",
10636
+ type: "https://qudt.org/vocab/unit/DEG_C"
10637
+ }
10638
+ },
10639
+ observedProperty: {
10640
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10641
+ label: "Air temperature"
10642
+ },
10643
+ measurementType: {
10644
+ method: "mean",
10645
+ duration: "N/A"
10646
+ },
10647
+ "eumetnet:standard_name": "air_temperature"
10648
+ },
10649
+ ta: {
10650
+ type: "Parameter",
10651
+ label: "Air Temperature 1.50 m 1 Min Mean",
10652
+ description: "Past minute mean air temperature at 1.50 meters, in degrees Celsius",
10653
+ "data-type": "float",
10654
+ unit: {
10655
+ label: "degrees celsius",
10656
+ symbol: {
10657
+ value: "°C",
10658
+ type: "https://qudt.org/vocab/unit/DEG_C"
10659
+ }
10660
+ },
10661
+ observedProperty: {
10662
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10663
+ label: "Air temperature"
10664
+ },
10665
+ measurementType: {
10666
+ method: "mean",
10667
+ duration: "-PT1M"
10668
+ },
10669
+ "eumetnet:standard_name": "air_temperature",
10670
+ "eumetnet:level": 1.5
10671
+ },
10672
+ tb: {
10673
+ type: "Parameter",
10674
+ label: "Wet Bulb Temperature 1.50 m Mean",
10675
+ description: "Past 10 minute mean wet bulb temperature at 1.50 meters, in degrees Celsius",
10676
+ "data-type": "float",
10677
+ unit: {
10678
+ label: "degrees celsius",
10679
+ symbol: {
10680
+ value: "°C",
10681
+ type: "https://qudt.org/vocab/unit/DEG_C"
10682
+ }
10683
+ },
10684
+ observedProperty: {
10685
+ id: "https://vocab.nerc.ac.uk/standard_name/wet_bulb_temperature/",
10686
+ label: "Wet bulb temperature"
10687
+ },
10688
+ measurementType: {
10689
+ method: "mean",
10690
+ duration: "-PT10M"
10691
+ },
10692
+ "eumetnet:standard_name": "soil_temperature"
10693
+ },
10694
+ tb1: {
10695
+ type: "Parameter",
10696
+ label: "Soil Temperature -5 cm Mean",
10697
+ description: "Past 10 minute mean soil temperature at -5 centimeters, in degrees Celsius",
10698
+ "data-type": "float",
10699
+ unit: {
10700
+ label: "degrees celsius",
10701
+ symbol: {
10702
+ value: "°C",
10703
+ type: "https://qudt.org/vocab/unit/DEG_C"
10704
+ }
10705
+ },
10706
+ observedProperty: {
10707
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10708
+ label: "Soil temperature"
10709
+ },
10710
+ measurementType: {
10711
+ method: "mean",
10712
+ duration: "-PT10M"
10713
+ },
10714
+ "eumetnet:standard_name": "soil_temperature",
10715
+ "eumetnet:level": -0.05
10716
+ },
10717
+ Tb1n6: {
10718
+ type: "Parameter",
10719
+ label: "Soil Temperature -5 cm Minimum last 6 Hours",
10720
+ description: "Past 6 hour minimum soil temperature at -5 centimeters, in degrees Celsius",
10721
+ "data-type": "float",
10722
+ unit: {
10723
+ label: "degrees celsius",
10724
+ symbol: {
10725
+ value: "°C",
10726
+ type: "https://qudt.org/vocab/unit/DEG_C"
10727
+ }
10728
+ },
10729
+ observedProperty: {
10730
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10731
+ label: "Soil temperature"
10732
+ },
10733
+ measurementType: {
10734
+ method: "minimum",
10735
+ duration: "-PT6H"
10736
+ },
10737
+ "eumetnet:standard_name": "soil_temperature",
10738
+ "eumetnet:level": -0.05
10739
+ },
10740
+ Tb1x6: {
10741
+ type: "Parameter",
10742
+ label: "Soil Temperature -5 cm Maximum last 6 Hours",
10743
+ description: "Past 6 hour maximum soil temperature at -5 centimeters, in degrees Celsius",
10744
+ "data-type": "float",
10745
+ unit: {
10746
+ label: "degrees celsius",
10747
+ symbol: {
10748
+ value: "°C",
10749
+ type: "https://qudt.org/vocab/unit/DEG_C"
10750
+ }
10751
+ },
10752
+ observedProperty: {
10753
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10754
+ label: "Soil temperature"
10755
+ },
10756
+ measurementType: {
10757
+ method: "maximum",
10758
+ duration: "-PT6H"
10759
+ },
10760
+ "eumetnet:standard_name": "soil_temperature",
10761
+ "eumetnet:level": -0.05
10762
+ },
10763
+ tb2: {
10764
+ type: "Parameter",
10765
+ label: "Soil Temperature -10 cm Mean",
10766
+ description: "Past 10 minute mean soil temperature at -10 centimeters, in degrees Celsius",
10767
+ "data-type": "float",
10768
+ unit: {
10769
+ label: "degrees celsius",
10770
+ symbol: {
10771
+ value: "°C",
10772
+ type: "https://qudt.org/vocab/unit/DEG_C"
10773
+ }
10774
+ },
10775
+ observedProperty: {
10776
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10777
+ label: "Soil temperature"
10778
+ },
10779
+ measurementType: {
10780
+ method: "mean",
10781
+ duration: "-PT10M"
10782
+ },
10783
+ "eumetnet:standard_name": "soil_temperature",
10784
+ "eumetnet:level": -0.1
10785
+ },
10786
+ Tb2n6: {
10787
+ type: "Parameter",
10788
+ label: "Soil Temperature -10 cm Minimum past 6 Hours",
10789
+ description: "Past 6 hour maximum soil temperature at -10 centimeters, in degrees Celsius",
10790
+ "data-type": "float",
10791
+ unit: {
10792
+ label: "degrees celsius",
10793
+ symbol: {
10794
+ value: "°C",
10795
+ type: "https://qudt.org/vocab/unit/DEG_C"
10796
+ }
10797
+ },
10798
+ observedProperty: {
10799
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10800
+ label: "Soil temperature"
10801
+ },
10802
+ measurementType: {
10803
+ method: "minimum",
10804
+ duration: "-PT6H"
10805
+ },
10806
+ "eumetnet:standard_name": "soil_temperature",
10807
+ "eumetnet:level": -0.1
10808
+ },
10809
+ Tb2x6: {
10810
+ type: "Parameter",
10811
+ label: "Soil Temperature -10 cm Maximum past 6 Hours",
10812
+ description: "Past 6 hour maximum soil temperature at -10 centimeters, in degrees Celsius",
10813
+ "data-type": "float",
10814
+ unit: {
10815
+ label: "degrees celsius",
10816
+ symbol: {
10817
+ value: "°C",
10818
+ type: "https://qudt.org/vocab/unit/DEG_C"
10819
+ }
10820
+ },
10821
+ observedProperty: {
10822
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10823
+ label: "Soil temperature"
10824
+ },
10825
+ measurementType: {
10826
+ method: "maximum",
10827
+ duration: "-PT6H"
10828
+ },
10829
+ "eumetnet:standard_name": "soil_temperature",
10830
+ "eumetnet:level": -0.1
10831
+ },
10832
+ tb3: {
10833
+ type: "Parameter",
10834
+ label: "Soil Temperature -20 cm Mean",
10835
+ description: "Past 10 minute mean soil temperature at -20 centimeters, in degrees Celsius",
10836
+ "data-type": "float",
10837
+ unit: {
10838
+ label: "degrees celsius",
10839
+ symbol: {
10840
+ value: "°C",
10841
+ type: "https://qudt.org/vocab/unit/DEG_C"
10842
+ }
10843
+ },
10844
+ observedProperty: {
10845
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10846
+ label: "Soil temperature"
10847
+ },
10848
+ measurementType: {
10849
+ method: "mean",
10850
+ duration: "-PT10M"
10851
+ },
10852
+ "eumetnet:standard_name": "soil_temperature",
10853
+ "eumetnet:level": -0.2
10854
+ },
10855
+ tb4: {
10856
+ type: "Parameter",
10857
+ label: "Soil Temperature -50 cm Mean",
10858
+ description: "Past 10 minute mean soil temperature at -50 centimeters, in degrees Celsius",
10859
+ "data-type": "float",
10860
+ unit: {
10861
+ label: "degrees celsius",
10862
+ symbol: {
10863
+ value: "°C",
10864
+ type: "https://qudt.org/vocab/unit/DEG_C"
10865
+ }
10866
+ },
10867
+ observedProperty: {
10868
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10869
+ label: "Soil temperature"
10870
+ },
10871
+ measurementType: {
10872
+ method: "mean",
10873
+ duration: "-PT10M"
10874
+ },
10875
+ "eumetnet:standard_name": "soil_temperature",
10876
+ "eumetnet:level": -0.5
10877
+ },
10878
+ tb5: {
10879
+ type: "Parameter",
10880
+ label: "Soil Temperature -100 cm Mean",
10881
+ description: "Past 10 minute mean soil temperature at -100 centimeters, in degrees Celsius",
10882
+ "data-type": "float",
10883
+ unit: {
10884
+ label: "degrees celsius",
10885
+ symbol: {
10886
+ value: "°C",
10887
+ type: "https://qudt.org/vocab/unit/DEG_C"
10888
+ }
10889
+ },
10890
+ observedProperty: {
10891
+ id: "https://vocab.nerc.ac.uk/standard_name/soil_temperature/",
10892
+ label: "Soil temperature"
10893
+ },
10894
+ measurementType: {
10895
+ method: "mean",
10896
+ duration: "-PT10M"
10897
+ },
10898
+ "eumetnet:standard_name": "soil_temperature",
10899
+ "eumetnet:level": -1
10900
+ },
10901
+ td: {
10902
+ type: "Parameter",
10903
+ label: "Dew Point Temperature 1.50 m 1 Min Mean",
10904
+ description: "Past minute mean dew point temperature at 1.50 meters, in degrees Celsius",
10905
+ "data-type": "float",
10906
+ unit: {
10907
+ label: "degrees celsius",
10908
+ symbol: {
10909
+ value: "°C",
10910
+ type: "https://qudt.org/vocab/unit/DEG_C"
10911
+ }
10912
+ },
10913
+ observedProperty: {
10914
+ id: "https://vocab.nerc.ac.uk/standard_name/dew_point_temperature/",
10915
+ label: "Dew point temperature"
10916
+ },
10917
+ measurementType: {
10918
+ method: "mean",
10919
+ duration: "-PT1M"
10920
+ },
10921
+ "eumetnet:standard_name": "dew_point_temperature"
10922
+ },
10923
+ td10: {
10924
+ type: "Parameter",
10925
+ label: "Dew Point Temperature Mean",
10926
+ description: "10 minute mean dew point temperature, in degrees Celsius",
10927
+ "data-type": "float",
10928
+ unit: {
10929
+ label: "degrees celsius",
10930
+ symbol: {
10931
+ value: "°C",
10932
+ type: "https://qudt.org/vocab/unit/DEG_C"
10933
+ }
10934
+ },
10935
+ observedProperty: {
10936
+ id: "https://vocab.nerc.ac.uk/standard_name/dew_point_temperature/",
10937
+ label: "Dew point temperature"
10938
+ },
10939
+ measurementType: {
10940
+ method: "mean",
10941
+ duration: "N/A"
10942
+ },
10943
+ "eumetnet:standard_name": "dew_point_temperature"
10944
+ },
10945
+ tg: {
10946
+ type: "Parameter",
10947
+ label: "Air Temperature 10 cm Mean",
10948
+ description: "Past 10 minute mean air temperature at 10 centimeters, in degrees Celsius",
10949
+ "data-type": "float",
10950
+ unit: {
10951
+ label: "degrees celsius",
10952
+ symbol: {
10953
+ value: "°C",
10954
+ type: "https://qudt.org/vocab/unit/DEG_C"
10955
+ }
10956
+ },
10957
+ observedProperty: {
10958
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10959
+ label: "Air temperature"
10960
+ },
10961
+ measurementType: {
10962
+ method: "mean",
10963
+ duration: "-PT10M"
10964
+ },
10965
+ "eumetnet:standard_name": "air_temperature",
10966
+ "eumetnet:level": 0.1
10967
+ },
10968
+ tgn: {
10969
+ type: "Parameter",
10970
+ label: "Air Temperature 10 cm Minimum",
10971
+ description: "Past 10 minute minimum air temperature at 10 centimeters, in degrees Celsius",
10972
+ "data-type": "float",
10973
+ unit: {
10974
+ label: "degrees celsius",
10975
+ symbol: {
10976
+ value: "°C",
10977
+ type: "https://qudt.org/vocab/unit/DEG_C"
10978
+ }
10979
+ },
10980
+ observedProperty: {
10981
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
10982
+ label: "Air temperature"
10983
+ },
10984
+ measurementType: {
10985
+ method: "minimum",
10986
+ duration: "-PT10M"
10987
+ },
10988
+ "eumetnet:standard_name": "air_temperature",
10989
+ "eumetnet:level": 0.1
10990
+ },
10991
+ Tgn12: {
10992
+ type: "Parameter",
10993
+ label: "Air Temperature 10 cm Minimum last 12 Hours",
10994
+ description: "Past 12 hour minimum air temperature at 10 centimeters, in degrees Celsius",
10995
+ "data-type": "float",
10996
+ unit: {
10997
+ label: "degrees celsius",
10998
+ symbol: {
10999
+ value: "°C",
11000
+ type: "https://qudt.org/vocab/unit/DEG_C"
11001
+ }
11002
+ },
11003
+ observedProperty: {
11004
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11005
+ label: "Air temperature"
11006
+ },
11007
+ measurementType: {
11008
+ method: "minimum",
11009
+ duration: "-PT12H"
11010
+ },
11011
+ "eumetnet:standard_name": "air_temperature",
11012
+ "eumetnet:level": 0.1
11013
+ },
11014
+ Tgn14: {
11015
+ type: "Parameter",
11016
+ label: "Air Temperature 10 cm Minimum last 14 Hours",
11017
+ description: "Past 14 hour minimum air temperature at 10 centimeters, in degrees Celsius",
11018
+ "data-type": "float",
11019
+ unit: {
11020
+ label: "degrees celsius",
11021
+ symbol: {
11022
+ value: "°C",
11023
+ type: "https://qudt.org/vocab/unit/DEG_C"
11024
+ }
11025
+ },
11026
+ observedProperty: {
11027
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11028
+ label: "Air temperature"
11029
+ },
11030
+ measurementType: {
11031
+ method: "minimum",
11032
+ duration: "-PT14H"
11033
+ },
11034
+ "eumetnet:standard_name": "air_temperature",
11035
+ "eumetnet:level": 0.1
11036
+ },
11037
+ Tgn6: {
11038
+ type: "Parameter",
11039
+ label: "Air Temperature 10 cm Minimum last 6 Hours",
11040
+ description: "Past 6 hour minimum air temperature at 10 centimeters, in degrees Celsius",
11041
+ "data-type": "float",
11042
+ unit: {
11043
+ label: "degrees celsius",
11044
+ symbol: {
11045
+ value: "°C",
11046
+ type: "https://qudt.org/vocab/unit/DEG_C"
11047
+ }
11048
+ },
11049
+ observedProperty: {
11050
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11051
+ label: "Air temperature"
11052
+ },
11053
+ measurementType: {
11054
+ method: "minimum",
11055
+ duration: "-PT6H"
11056
+ },
11057
+ "eumetnet:standard_name": "air_temperature",
11058
+ "eumetnet:level": 0.1
11059
+ },
11060
+ tn: {
11061
+ type: "Parameter",
11062
+ label: "Air Temperature 1.50 m Minimum",
11063
+ description: "Past 10 minute minimum air temperature at 1.50 meters, in degrees Celsius",
11064
+ "data-type": "float",
11065
+ unit: {
11066
+ label: "degrees celsius",
11067
+ symbol: {
11068
+ value: "°C",
11069
+ type: "https://qudt.org/vocab/unit/DEG_C"
11070
+ }
11071
+ },
11072
+ observedProperty: {
11073
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11074
+ label: "Air temperature"
11075
+ },
11076
+ measurementType: {
11077
+ method: "minimum",
11078
+ duration: "-PT10M"
11079
+ },
11080
+ "eumetnet:standard_name": "air_temperature",
11081
+ "eumetnet:level": 1.5
11082
+ },
11083
+ Tn12: {
11084
+ type: "Parameter",
11085
+ label: "Air Temperature Minimum last 12 Hours",
11086
+ description: "Past 12 hour minimum air temperature, in degrees Celsius",
11087
+ "data-type": "float",
11088
+ unit: {
11089
+ label: "degrees celsius",
11090
+ symbol: {
11091
+ value: "°C",
11092
+ type: "https://qudt.org/vocab/unit/DEG_C"
11093
+ }
11094
+ },
11095
+ observedProperty: {
11096
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11097
+ label: "Air temperature"
11098
+ },
11099
+ measurementType: {
11100
+ method: "minimum",
11101
+ duration: "-PT12H"
11102
+ },
11103
+ "eumetnet:standard_name": "air_temperature",
11104
+ "eumetnet:level": 1.5
11105
+ },
11106
+ Tn14: {
11107
+ type: "Parameter",
11108
+ label: "Air Temperature Minimum last 14 Hours",
11109
+ description: "Past 14 hour minimum air temperature, in degrees Celsius",
11110
+ "data-type": "float",
11111
+ unit: {
11112
+ label: "degrees celsius",
11113
+ symbol: {
11114
+ value: "°C",
11115
+ type: "https://qudt.org/vocab/unit/DEG_C"
11116
+ }
11117
+ },
11118
+ observedProperty: {
11119
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11120
+ label: "Air temperature"
11121
+ },
11122
+ measurementType: {
11123
+ method: "minimum",
11124
+ duration: "-PT14H"
11125
+ },
11126
+ "eumetnet:standard_name": "air_temperature",
11127
+ "eumetnet:level": 1.5
11128
+ },
11129
+ Tn6: {
11130
+ type: "Parameter",
11131
+ label: "Air Temperature Minimum last 6 Hours",
11132
+ description: "Past 6 hour minimum air temperature, in degrees Celsius",
11133
+ "data-type": "float",
11134
+ unit: {
11135
+ label: "degrees celsius",
11136
+ symbol: {
11137
+ value: "°C",
11138
+ type: "https://qudt.org/vocab/unit/DEG_C"
11139
+ }
11140
+ },
11141
+ observedProperty: {
11142
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11143
+ label: "Air temperature"
11144
+ },
11145
+ measurementType: {
11146
+ method: "minimum",
11147
+ duration: "-PT6H"
11148
+ },
11149
+ "eumetnet:standard_name": "air_temperature",
11150
+ "eumetnet:level": 1.5
11151
+ },
11152
+ tsd: {
11153
+ type: "Parameter",
11154
+ label: "Air Temperature Std Dev",
11155
+ description: "Past 10 minute standard deviation of all air temperature samples, in degrees Celsius",
11156
+ "data-type": "float",
11157
+ unit: {
11158
+ label: "degrees celsius",
11159
+ symbol: {
11160
+ value: "°C",
11161
+ type: "https://qudt.org/vocab/unit/DEG_C"
11162
+ }
11163
+ },
11164
+ observedProperty: {
11165
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11166
+ label: "Air temperature"
11167
+ },
11168
+ measurementType: {
11169
+ method: "stddev",
11170
+ duration: "-PT10M"
11171
+ },
11172
+ "eumetnet:level": 1.5
11173
+ },
11174
+ tx: {
11175
+ type: "Parameter",
11176
+ label: "Air Temperature 1.50 m Maximum",
11177
+ description: "Past 10 minute maximum air temperature at 1.50 meters, in degrees Celsius",
11178
+ "data-type": "float",
11179
+ unit: {
11180
+ label: "degrees celsius",
11181
+ symbol: {
11182
+ value: "°C",
11183
+ type: "https://qudt.org/vocab/unit/DEG_C"
11184
+ }
11185
+ },
11186
+ observedProperty: {
11187
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11188
+ label: "Air temperature"
11189
+ },
11190
+ measurementType: {
11191
+ method: "maximum",
11192
+ duration: "-PT10M"
11193
+ },
11194
+ "eumetnet:standard_name": "air_temperature",
11195
+ "eumetnet:level": 1.5
11196
+ },
11197
+ Tx12: {
11198
+ type: "Parameter",
11199
+ label: "Air Temperature Maximum last 12 Hours",
11200
+ description: "Past 12 hour maximum air temperature, in degrees Celsius",
11201
+ "data-type": "float",
11202
+ unit: {
11203
+ label: "degrees celsius",
11204
+ symbol: {
11205
+ value: "°C",
11206
+ type: "https://qudt.org/vocab/unit/DEG_C"
11207
+ }
11208
+ },
11209
+ observedProperty: {
11210
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11211
+ label: "Air temperature"
11212
+ },
11213
+ measurementType: {
11214
+ method: "maximum",
11215
+ duration: "-PT12H"
11216
+ },
11217
+ "eumetnet:standard_name": "air_temperature",
11218
+ "eumetnet:level": 1.5
11219
+ },
11220
+ Tx24: {
11221
+ type: "Parameter",
11222
+ label: "Air Temperature Maximum last 24 Hours",
11223
+ description: "Past 24 hour maximum air temperature, in degrees Celsius",
11224
+ "data-type": "float",
11225
+ unit: {
11226
+ label: "degrees celsius",
11227
+ symbol: {
11228
+ value: "°C",
11229
+ type: "https://qudt.org/vocab/unit/DEG_C"
11230
+ }
11231
+ },
11232
+ observedProperty: {
11233
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11234
+ label: "Air temperature"
11235
+ },
11236
+ measurementType: {
11237
+ method: "maximum",
11238
+ duration: "-PT24H"
11239
+ },
11240
+ "eumetnet:standard_name": "air_temperature",
11241
+ "eumetnet:level": 1.5
11242
+ },
11243
+ Tx6: {
11244
+ type: "Parameter",
11245
+ label: "Air Temperature Maximum last 6 Hours",
11246
+ description: "Past 6 hour maximum air temperature, in degrees Celsius",
11247
+ "data-type": "float",
11248
+ unit: {
11249
+ label: "degrees celsius",
11250
+ symbol: {
11251
+ value: "°C",
11252
+ type: "https://qudt.org/vocab/unit/DEG_C"
11253
+ }
11254
+ },
11255
+ observedProperty: {
11256
+ id: "https://vocab.nerc.ac.uk/standard_name/air_temperature/",
11257
+ label: "Air temperature"
11258
+ },
11259
+ measurementType: {
11260
+ method: "maximum",
11261
+ duration: "-PT6H"
11262
+ },
11263
+ "eumetnet:standard_name": "air_temperature",
11264
+ "eumetnet:level": 1.5
11265
+ },
11266
+ vv: {
11267
+ type: "Parameter",
11268
+ label: "Horizontal Visibility Mean",
11269
+ description: "Past 10 minute mean horizontal visibility, in meters",
11270
+ "data-type": "float",
11271
+ unit: {
11272
+ label: "meter",
11273
+ symbol: {
11274
+ value: "m",
11275
+ type: "https://qudt.org/vocab/unit/M.html"
11276
+ }
11277
+ },
11278
+ observedProperty: {
11279
+ id: "https://vocab.nerc.ac.uk/standard_name/visibility_in_air/",
11280
+ label: "Visibility in air"
11281
+ },
11282
+ measurementType: {
11283
+ method: "mean",
11284
+ duration: "-PT10M"
11285
+ },
11286
+ "eumetnet:standard_name": "visibility_in_air"
11287
+ },
11288
+ W10: {
11289
+ type: "Parameter",
11290
+ label: "Past Weather Indicator",
11291
+ 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",
11292
+ "data-type": "integer",
11293
+ unit: {
11294
+ label: "unitless",
11295
+ symbol: {
11296
+ value: "一",
11297
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11298
+ }
11299
+ },
11300
+ observedProperty: {
11301
+ label: "Present weather code",
11302
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11303
+ },
11304
+ measurementType: {
11305
+ method: "N/A",
11306
+ duration: "-PT10M"
11307
+ }
11308
+ },
11309
+ "W10-10": {
11310
+ type: "Parameter",
11311
+ label: "Past Weather Indicator for previous 10 min interval",
11312
+ 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",
11313
+ "data-type": "integer",
11314
+ unit: {
11315
+ label: "unitless",
11316
+ symbol: {
11317
+ value: "一",
11318
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11319
+ }
11320
+ },
11321
+ observedProperty: {
11322
+ label: "Present weather code",
11323
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11324
+ }
11325
+ },
11326
+ ww: {
11327
+ type: "Parameter",
11328
+ label: "WaWa Weather Code",
11329
+ description: "Past 10 minute WaWa Weather Code; Handboek waarnemingen; 5.4 Weercodegenerator; Tabel 6; https://www.knmi.nl/kennis-en-datacentrum/publicatie/handboek-waarnemingen",
11330
+ "data-type": "float",
11331
+ unit: {
11332
+ label: "unitless",
11333
+ symbol: {
11334
+ value: "一",
11335
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11336
+ }
11337
+ },
11338
+ observedProperty: {
11339
+ label: "Present weather code",
11340
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11341
+ },
11342
+ measurementType: {
11343
+ method: "N/A",
11344
+ duration: "-PT10M"
11345
+ }
11346
+ },
11347
+ "ww-10": {
11348
+ type: "Parameter",
11349
+ label: "WaWa Weather Code for previous 10 min interval",
11350
+ 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",
11351
+ "data-type": "float",
11352
+ unit: {
11353
+ label: "unitless",
11354
+ symbol: {
11355
+ value: "一",
11356
+ type: "https://qudt.org/vocab/unit/UNITLESS"
11357
+ }
11358
+ },
11359
+ observedProperty: {
11360
+ label: "Present weather code",
11361
+ description: "The present weather (clear, fog, snow, etc.) described with a numeric code."
11362
+ }
11363
+ },
11364
+ za: {
11365
+ type: "Parameter",
11366
+ label: "Background Luminance Mean",
11367
+ description: "Past 10 minute mean background luminance, in candela per square meter",
11368
+ "data-type": "float",
11369
+ unit: {
11370
+ label: "candela per square meter",
11371
+ symbol: {
11372
+ value: "cd/m²",
11373
+ type: "https://qudt.org/vocab/unit/CD-PER-M2"
11374
+ }
11375
+ },
11376
+ observedProperty: {
11377
+ label: "Background Luminance",
11378
+ 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²"
11379
+ },
11380
+ measurementType: {
11381
+ method: "mean",
11382
+ duration: "-PT10M"
11383
+ }
11384
+ },
11385
+ zm: {
11386
+ type: "Parameter",
11387
+ label: "Meteorological Optical Range Mean",
11388
+ description: "Past 10 minute mean meteorological optical range, in meters",
11389
+ "data-type": "float",
11390
+ unit: {
11391
+ label: "meter",
11392
+ symbol: {
11393
+ value: "m",
11394
+ type: "https://qudt.org/vocab/unit/M.html"
11395
+ }
11396
+ },
11397
+ observedProperty: {
11398
+ label: "Meteorological optical range",
11399
+ 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."
11400
+ },
11401
+ measurementType: {
11402
+ method: "mean",
11403
+ duration: "-PT10M"
11404
+ }
11405
+ }
11406
+ };
11407
+ var knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_update = {
11408
+ id: id,
11409
+ title: title,
11410
+ description: description,
11411
+ links: links,
11412
+ extent: extent,
11413
+ data_queries: data_queries,
11414
+ crs: crs,
11415
+ output_formats: output_formats,
11416
+ parameter_names: parameter_names
11417
+ };
11418
+
11419
+ var type$1 = "FeatureCollection";
11420
+ var features = [
11421
+ {
11422
+ type: "Feature",
11423
+ geometry: {
11424
+ type: "Point",
11425
+ coordinates: [
11426
+ 2.9358,
11427
+ 54.3256,
11428
+ 42.7
11429
+ ]
11430
+ },
11431
+ properties: {
11432
+ name: "D15-FA-1",
11433
+ wmoId: "06201"
11434
+ },
11435
+ id: "0-20000-0-06201"
11436
+ },
11437
+ {
11438
+ type: "Feature",
11439
+ geometry: {
11440
+ type: "Point",
11441
+ coordinates: [
11442
+ 3.3417,
11443
+ 52.36,
11444
+ 41.84
11445
+ ]
11446
+ },
11447
+ properties: {
11448
+ name: "P11-B",
11449
+ wmoId: "06203"
11450
+ },
11451
+ id: "0-20000-0-06203"
11452
+ },
11453
+ {
11454
+ type: "Feature",
11455
+ geometry: {
11456
+ type: "Point",
11457
+ coordinates: [
11458
+ 3.6278,
11459
+ 53.2694,
11460
+ 41.8
11461
+ ]
11462
+ },
11463
+ properties: {
11464
+ name: "K14-FA-1C",
11465
+ wmoId: "06204"
11466
+ },
11467
+ id: "0-20000-0-06204"
11468
+ },
11469
+ {
11470
+ type: "Feature",
11471
+ geometry: {
11472
+ type: "Point",
11473
+ coordinates: [
11474
+ 3.8103,
11475
+ 55.3992,
11476
+ 48.35
11477
+ ]
11478
+ },
11479
+ properties: {
11480
+ name: "A12-CPP",
11481
+ wmoId: "06205"
11482
+ },
11483
+ id: "0-20000-0-06205"
11484
+ },
11485
+ {
11486
+ type: "Feature",
11487
+ geometry: {
11488
+ type: "Point",
11489
+ coordinates: [
11490
+ 4.0122,
11491
+ 54.1167,
11492
+ 43.4
11493
+ ]
11494
+ },
11495
+ properties: {
11496
+ name: "F16-A",
11497
+ wmoId: "06206"
9210
11498
  },
9211
11499
  id: "0-20000-0-06206"
9212
11500
  },
@@ -12545,42 +14833,230 @@ var knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_
12545
14833
  referencing: referencing
12546
14834
  };
12547
14835
 
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);
14836
+ /* *
14837
+ * Licensed under the Apache License, Version 2.0 (the "License");
14838
+ * you may not use this file except in compliance with the License.
14839
+ * You may obtain a copy of the License at
14840
+ *
14841
+ * http://www.apache.org/licenses/LICENSE-2.0
14842
+ *
14843
+ * Unless required by applicable law or agreed to in writing, software
14844
+ * distributed under the License is distributed on an "AS IS" BASIS,
14845
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14846
+ * See the License for the specific language governing permissions and
14847
+ * limitations under the License.
14848
+ *
14849
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14850
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
14851
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
14852
+ * */
14853
+ var fakeEdrLayerApiHandlers = [http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations', function () {
14854
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations);
14855
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations-update', function () {
14856
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_update);
14857
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/locations', function () {
14858
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_locations);
14859
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations/cube', function (_ref) {
14860
+ var request = _ref.request;
14861
+ var url = new URL(request.url);
14862
+ var parameterName = url.searchParams.get('parameter-name');
14863
+ var dateTime = url.searchParams.get('datetime');
14864
+ var bbox = url.searchParams.get('bbox');
14865
+ if (parameterName === 'ta' && dateTime === '2025-05-20T05:00:00Z' && bbox === '-180,-90,180,90') {
14866
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_ta_20250520_0500);
14867
+ }
14868
+ return HttpResponse.json({
14869
+ error: "Parameter not found (got: [".concat(parameterName, "]/[").concat(dateTime, "]/[").concat(bbox, "]")
14870
+ }, {
14871
+ status: 404
14872
+ });
14873
+ }), http.get('https://gw-edr.pub.knmi.cloud/edr/collections/10-minute-in-situ-meteorological-observations-update/cube', function (_ref2) {
14874
+ var request = _ref2.request;
14875
+ var url = new URL(request.url);
14876
+ var parameterName = url.searchParams.get('parameter-name');
14877
+ var dateTime = url.searchParams.get('datetime');
14878
+ var bbox = url.searchParams.get('bbox');
14879
+ if (parameterName === 'ta' && dateTime === '2025-05-20T05:00:00Z' && bbox === '-180,-90,180,90') {
14880
+ return HttpResponse.json(knmi_kdp_edr_collections_10_minute_in_situ_meteorological_observations_cube_ta_20250520_0500);
14881
+ }
14882
+ return HttpResponse.json({
14883
+ error: "Parameter not found (got: [".concat(parameterName, "]/[").concat(dateTime, "]/[").concat(bbox, "]")
14884
+ }, {
14885
+ status: 404
14886
+ });
14887
+ })];
14888
+
14889
+ var FeatureLayer = function FeatureLayer(_ref) {
14890
+ var features = _ref.features,
14891
+ style = _ref.style,
14892
+ zIndex = _ref.zIndex,
14893
+ hoverSelect = _ref.hoverSelect,
14894
+ clickOnFeature = _ref.clickOnFeature,
14895
+ testId = _ref.testId,
14896
+ opacity = _ref.opacity;
14897
+ var _useContext = useContext(MapContext),
14898
+ map = _useContext.map;
14899
+ var _useState = useState(),
14900
+ _useState2 = _slicedToArray(_useState, 2),
14901
+ source = _useState2[0],
14902
+ setSource = _useState2[1];
14903
+ var layerRef = useRef();
14904
+ useEffect(function () {
14905
+ if (!map) {
14906
+ return function () {};
14907
+ }
14908
+ var source = new VectorSource({
14909
+ features: []
14910
+ });
14911
+ var layer = new Vector({
14912
+ source: source,
14913
+ zIndex: zIndex,
14914
+ style: style,
14915
+ properties: {
14916
+ testId: testId
14917
+ },
14918
+ opacity: opacity
14919
+ });
14920
+ layerRef.current = layer;
14921
+ layer.set('layerType', 'FeatureLayer');
14922
+ setSource(source);
14923
+ map.addLayer(layer);
14924
+ return function () {
14925
+ setSource(undefined);
14926
+ source.clear();
14927
+ map.removeLayer(layer);
14928
+ };
14929
+ // NOTE: style should not be part of this effect, as it changes always, causing the layer to be add/removed continuousely.
14930
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14931
+ }, [map, zIndex, testId]);
14932
+ useEffect(function () {
14933
+ // Handle style function:
14934
+ if (layerRef.current && style) {
14935
+ var _layerRef$current;
14936
+ (_layerRef$current = layerRef.current) === null || _layerRef$current === void 0 || _layerRef$current.setStyle(style);
14937
+ }
14938
+ }, [style]);
14939
+ useEffect(function () {
14940
+ // Handle opacity:
14941
+ if (layerRef.current && opacity) {
14942
+ var _layerRef$current2;
14943
+ (_layerRef$current2 = layerRef.current) === null || _layerRef$current2 === void 0 || _layerRef$current2.setOpacity(opacity);
14944
+ }
14945
+ }, [opacity]);
14946
+ useEffect(function () {
14947
+ if (!source) {
14948
+ return;
14949
+ }
14950
+ source.clear();
14951
+ if (features && features.length > 0) {
14952
+ source.addFeatures(features);
14953
+ }
14954
+ }, [source, features]);
14955
+ useEffect(function () {
14956
+ if (!map || !source || !hoverSelect || !hoverSelect.active) {
14957
+ return function () {};
14958
+ }
14959
+ var previousHover = [];
14960
+ var pointerMoveFunction = debounce(function (evt) {
14961
+ var hoveredFeature = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
14962
+ if (!layer || layer.getSource() !== source) {
14963
+ return false;
14964
+ }
14965
+ return feature;
14966
+ });
14967
+ if (hoveredFeature && previousHover.includes(hoveredFeature)) {
14968
+ return;
14969
+ }
14970
+ var unhovered = previousHover.length > 0;
14971
+ previousHover.forEach(function (feature) {
14972
+ feature.set('hover', false);
14973
+ });
14974
+ previousHover.splice(0);
14975
+ if (hoveredFeature) {
14976
+ previousHover.push(hoveredFeature);
14977
+ hoveredFeature.set('hover', true);
14978
+ hoverSelect.onHover && hoverSelect.onHover(hoveredFeature);
14979
+ } else if (unhovered) {
14980
+ hoverSelect.onHover && hoverSelect.onHover(undefined);
14981
+ }
14982
+ }, 5, {});
14983
+ var eventKey = map.on('pointermove', pointerMoveFunction);
14984
+ return function () {
14985
+ pointerMoveFunction.cancel();
14986
+ source.getFeatures().forEach(function (feature) {
14987
+ feature.set('hover', false);
14988
+ });
14989
+ unByKey(eventKey);
14990
+ hoverSelect.onHover && hoverSelect.onHover(undefined);
14991
+ };
14992
+ }, [map, source, hoverSelect]);
14993
+ useEffect(function () {
14994
+ if (!map || !source || !clickOnFeature) {
14995
+ return function () {};
14996
+ }
14997
+ var clickFunction = function clickFunction(evt) {
14998
+ var features = [];
14999
+ map.forEachFeatureAtPixel(evt.pixel, function (feature) {
15000
+ features.push(feature);
15001
+ }, {
15002
+ hitTolerance: clickOnFeature.hitTolerance
15003
+ });
15004
+ clickOnFeature.onClick(features);
15005
+ };
15006
+ var eventKey = map.on('click', clickFunction);
15007
+ return function () {
15008
+ unByKey(eventKey);
15009
+ };
15010
+ }, [map, source, clickOnFeature]);
15011
+ return null;
15012
+ };
15013
+
15014
+ var defaultLegend = makeLegendFromColorMap({
15015
+ colors: colorMaps.temperatureLegendColorsWoW,
15016
+ min: -18,
15017
+ max: 38
15018
+ });
15019
+ // Style needs to be optional to match the other layers. Therefore a default style is made here once.
15020
+ var defaultStyle = function defaultStyle(feature) {
15021
+ return makeFeatureStyleDisc(feature, defaultLegend);
15022
+ };
15023
+ var OpenLayersFeatureLayer = function OpenLayersFeatureLayer(_ref) {
15024
+ var featureCollection = _ref.featureCollection,
15025
+ _ref$style = _ref.style,
15026
+ style = _ref$style === void 0 ? defaultStyle : _ref$style,
15027
+ zIndex = _ref.zIndex,
15028
+ hoverSelect = _ref.hoverSelect,
15029
+ clickOnFeature = _ref.clickOnFeature,
15030
+ testId = _ref.testId,
15031
+ opacity = _ref.opacity;
15032
+ var projection = useProjection();
15033
+ var featureCollectionRef = useRef();
15034
+ var features = useRef([]);
15035
+ var featureCollectionHasChanges = featureCollectionRef.current !== featureCollection;
15036
+ if (featureCollectionHasChanges) {
15037
+ if (projection && featureCollection) {
15038
+ // eslint-disable-next-line no-console
15039
+ featureCollectionRef.current = featureCollection;
15040
+ var formatter = new GeoJSON({
15041
+ featureProjection: projection
15042
+ });
15043
+ features.current = formatter.readFeatures(featureCollection);
15044
+ }
12577
15045
  }
12578
- return HttpResponse.json({
12579
- error: "Parameter not found (got: [".concat(parameterName, "]/[").concat(dateTime, "]/[").concat(bbox, "]")
12580
- }, {
12581
- status: 404
15046
+ // If no featureCollection is given, e.g. in edit mode of a polygon, the feature should not be displayed.
15047
+ if (!featureCollection) {
15048
+ return null;
15049
+ }
15050
+ return jsx(FeatureLayer, {
15051
+ features: features.current,
15052
+ style: style,
15053
+ zIndex: zIndex,
15054
+ hoverSelect: hoverSelect,
15055
+ clickOnFeature: clickOnFeature,
15056
+ testId: testId,
15057
+ opacity: opacity
12582
15058
  });
12583
- })];
15059
+ };
12584
15060
 
12585
15061
  /* *
12586
15062
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -12616,32 +15092,26 @@ var coverageCollectionToFeatureCollection = function coverageCollectionToFeature
12616
15092
  })) || [];
12617
15093
  var featurePoint = {
12618
15094
  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
- })
15095
+ features: latLonValues
12623
15096
  };
12624
15097
  return featurePoint;
12625
15098
  };
12626
15099
 
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
15100
  var TimeAwareEDRLocationLayer = function TimeAwareEDRLocationLayer(_ref) {
12637
- var currentTime = _ref.currentTime,
12638
- timestep = _ref.timestep,
12639
- edrBaseUrl = _ref.edrBaseUrl,
12640
- collectionId = _ref.collectionId,
15101
+ var _wmLayer$getDimension;
15102
+ var edrBaseUrl = _ref.edrBaseUrl,
12641
15103
  parameter = _ref.parameter,
12642
15104
  style = _ref.style,
12643
- zIndex = _ref.zIndex;
12644
- var discretizedTime = discretizeTime(currentTime, timestep);
15105
+ zIndex = _ref.zIndex,
15106
+ opacity = _ref.opacity,
15107
+ dimensions = _ref.dimensions,
15108
+ layerId = _ref.layerId,
15109
+ onInitializeLayer = _ref.onInitializeLayer;
15110
+ // get a wmLayer instance
15111
+ var wmLayer = useGetEDRLayerInstance(edrBaseUrl, parameter, layerId, onInitializeLayer);
15112
+ // dimensionsValues is a key/value dictionary with dimension names specifically for WMS GetMap requests. We re-use it here for EDR.
15113
+ var dimensionsValues = getDimensionParamsForWMS(dimensions, wmLayer);
15114
+ var timeValue = dimensionsValues && dimensionsValues['TIME'];
12645
15115
  var _React$useState = React__default.useState({
12646
15116
  features: [],
12647
15117
  type: 'FeatureCollection'
@@ -12649,22 +15119,143 @@ var TimeAwareEDRLocationLayer = function TimeAwareEDRLocationLayer(_ref) {
12649
15119
  _React$useState2 = _slicedToArray(_React$useState, 2),
12650
15120
  featurePoints = _React$useState2[0],
12651
15121
  setFeaturePoints = _React$useState2[1];
12652
- var result = useEDRCollectionCube(edrBaseUrl, collectionId, parameter, discretizedTime);
15122
+ var edrQueryDateTime = (wmLayer === null || wmLayer === void 0 || (_wmLayer$getDimension = wmLayer.getDimension('time')) === null || _wmLayer$getDimension === void 0 ? void 0 : _wmLayer$getDimension.getClosestValue(timeValue)) || timeValue;
15123
+ var result = useEDRLayerCollectionCube(edrBaseUrl, parameter, edrQueryDateTime);
12653
15124
  React__default.useEffect(function () {
12654
15125
  var featurePoint = coverageCollectionToFeatureCollection(result.data, parameter);
12655
15126
  if (!featurePoint) {
12656
15127
  return;
12657
15128
  }
12658
15129
  setFeaturePoints(featurePoint);
12659
- // eslint-disable-next-line react-hooks/exhaustive-deps
12660
- }, [edrBaseUrl, parameter, result.data]);
15130
+ }, [parameter, result.data]);
12661
15131
  return jsx(OpenLayersFeatureLayer, {
12662
15132
  featureCollection: featurePoints,
12663
15133
  style: result.isFetching ? makeFeatureStyleLoading : style,
15134
+ opacity: opacity,
12664
15135
  zIndex: zIndex
12665
15136
  });
12666
15137
  };
12667
15138
 
15139
+ var OpenLayersLayer = function OpenLayersLayer(layerProps) {
15140
+ var id = layerProps.id,
15141
+ service = layerProps.service,
15142
+ enabled = layerProps.enabled,
15143
+ name = layerProps.name,
15144
+ style = layerProps.style,
15145
+ dimensions = layerProps.dimensions,
15146
+ opacity = layerProps.opacity,
15147
+ zIndex = layerProps.zIndex,
15148
+ onInitializeLayer = layerProps.onInitializeLayer,
15149
+ onLayerReady = layerProps.onLayerReady,
15150
+ onLayerError = layerProps.onLayerError,
15151
+ debugMode = layerProps.debugMode,
15152
+ _layerProps$layerType = layerProps.layerType,
15153
+ layerType = _layerProps$layerType === void 0 ? LayerType.mapLayer : _layerProps$layerType,
15154
+ _layerProps$tileServe = layerProps.tileServerSettings,
15155
+ tileServerSettings = _layerProps$tileServe === void 0 ? tilesettings : _layerProps$tileServe;
15156
+ var isBaseLayer = layerType === LayerType.baseLayer;
15157
+ var isOverlay = layerType === LayerType.overLayer;
15158
+ var layerOptions = useMemo(function () {
15159
+ return {
15160
+ opacity: opacity !== null && opacity !== undefined ? opacity : 1,
15161
+ zIndex: zIndex || 0
15162
+ };
15163
+ }, [opacity, zIndex]);
15164
+ var _useContext = useContext(MapContext),
15165
+ map = _useContext.map;
15166
+ // Check standard maplayers
15167
+ if (!isOverlay && !isBaseLayer) {
15168
+ switch (layerType) {
15169
+ case LayerType.mapLayer:
15170
+ return jsx(TimeawareImageSourceWMSLayer, {
15171
+ getCapsURL: service,
15172
+ layerName: name,
15173
+ layerOptions: layerOptions,
15174
+ layerId: id,
15175
+ dimensions: dimensions,
15176
+ visible: !!(enabled !== false),
15177
+ styleName: style,
15178
+ onInitializeLayer: onInitializeLayer,
15179
+ onLayerReady: onLayerReady,
15180
+ onLayerError: onLayerError,
15181
+ debugMode: debugMode
15182
+ });
15183
+ case LayerType.edrLayer:
15184
+ {
15185
+ var styleLike = style !== undefined ? styleNameToStyleLike(style) : undefined;
15186
+ return jsx(TimeAwareEDRLocationLayer, {
15187
+ layerId: id,
15188
+ edrBaseUrl: service,
15189
+ parameter: name,
15190
+ dimensions: dimensions,
15191
+ zIndex: layerOptions.zIndex,
15192
+ style: styleLike,
15193
+ opacity: layerOptions.opacity,
15194
+ onInitializeLayer: onInitializeLayer
15195
+ });
15196
+ }
15197
+ }
15198
+ }
15199
+ // Check the other layers
15200
+ if (isBaseLayer || isOverlay) {
15201
+ var type = layerProps.type,
15202
+ _name = layerProps.name,
15203
+ _service = layerProps.service,
15204
+ tileServer = layerProps.tileServer;
15205
+ if (type === 'twms' && _name) {
15206
+ var _map$getView;
15207
+ var tileSettingByName = tileServerSettings[_name] || tileServer && tileServer[_name];
15208
+ if (!tileSettingByName) {
15209
+ console.warn("Tilesetting with name ".concat(_name, " not found in "), tileServerSettings, tileServer);
15210
+ }
15211
+ 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();
15212
+ var projectionUsedFromTileServer = tileSettingByName[projectionName] ? projectionName : 'EPSG:3857';
15213
+ var tileSettingForCRS = tileSettingByName && projectionName && tileSettingByName[projectionUsedFromTileServer];
15214
+ if (tileSettingForCRS) {
15215
+ var home = tileSettingForCRS.home,
15216
+ tileServerType = tileSettingForCRS.tileServerType,
15217
+ urlTemplateOverride = tileSettingForCRS.urlTemplate;
15218
+ var urlTemplate = (urlTemplateOverride === null || urlTemplateOverride === void 0 ? void 0 : urlTemplateOverride(home)) || '';
15219
+ if (!urlTemplateOverride) {
15220
+ switch (tileServerType) {
15221
+ case 'arcgisonline':
15222
+ urlTemplate = "".concat(home, "{z}/{y}/{x}.png");
15223
+ break;
15224
+ case 'osm':
15225
+ urlTemplate = "".concat(home, "{z}/{x}/{y}.png");
15226
+ break;
15227
+ case 'wmst':
15228
+ urlTemplate = "".concat(home, "{z}/{y}/{x}");
15229
+ break;
15230
+ }
15231
+ }
15232
+ if (!urlTemplate) {
15233
+ console.warn("Tile server type ".concat(tileServerType, " not supported"), tileServerSettings, tileServer);
15234
+ }
15235
+ return jsx(XYZLayer, {
15236
+ urlTemplate: urlTemplate,
15237
+ layerOptions: layerOptions,
15238
+ layerProps: _objectSpread2(_objectSpread2({}, layerProps), {}, {
15239
+ enabled: true
15240
+ }),
15241
+ tileProjectionCode: projectionUsedFromTileServer
15242
+ });
15243
+ }
15244
+ } else if (_name && _service) {
15245
+ return jsx(WMSLayer, {
15246
+ layerName: _name,
15247
+ layerOptions: layerOptions,
15248
+ layerProps: layerProps,
15249
+ url: _service,
15250
+ styleName: style || 'default'
15251
+ });
15252
+ } else if (baseLayer) {
15253
+ return jsx(DefaultBaseLayers, {});
15254
+ }
15255
+ }
15256
+ return jsx("div", {});
15257
+ };
15258
+
12668
15259
  var createIconStyle = memoize(function (input, options) {
12669
15260
  var _options$render, _options$render2;
12670
15261
  var svgPath = _typeof(input) === 'object' ? input.path : input;
@@ -13641,4 +16232,4 @@ var getLayerUpdateInfo = function getLayerUpdateInfo(wmLayer, mapId) {
13641
16232
  return updateObject;
13642
16233
  };
13643
16234
 
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 };
16235
+ 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 };