@oceanum/eidos 0.9.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.
- package/README.md +78 -0
- package/index.html +13 -0
- package/package.json +20 -0
- package/project.json +4 -0
- package/public/favicon.ico +0 -0
- package/scripts/debug-schema.js +30 -0
- package/scripts/generate-interfaces.js +48 -0
- package/scripts/schema-bundler.js +609 -0
- package/scripts/schema-to-typescript.js +604 -0
- package/src/index.ts +3 -0
- package/src/lib/eidosmodel.ts +46 -0
- package/src/lib/react.tsx +8 -0
- package/src/lib/render.ts +86 -0
- package/src/schema/interfaces.ts +1157 -0
- package/test-example.js +64 -0
- package/tsconfig.json +13 -0
- package/tsconfig.lib.json +25 -0
- package/tsconfig.spec.json +31 -0
- package/vite.config.ts +44 -0
|
@@ -0,0 +1,1157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated TypeScript interfaces for EIDOS schemas
|
|
3
|
+
* Generated from: https://schemas.oceanum.io/eidos/root.json
|
|
4
|
+
*
|
|
5
|
+
* Each interface corresponds to a definition in the EIDOS schema bundle.
|
|
6
|
+
* These interfaces can be used for type validation and IDE support.
|
|
7
|
+
*
|
|
8
|
+
* Do not modify this file directly - regenerate using:
|
|
9
|
+
* npx nx run eidos:generate-types
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const 08Constant = "0.8" as const;
|
|
13
|
+
const WorldNodeType = "world" as const;
|
|
14
|
+
const PlotNodeType = "plot" as const;
|
|
15
|
+
const DocumentNodeType = "document" as const;
|
|
16
|
+
const GridNodeType = "grid" as const;
|
|
17
|
+
const MenuNodeType = "menu" as const;
|
|
18
|
+
const WorldlayerNodeType = "worldlayer" as const;
|
|
19
|
+
const ControlgroupNodeType = "controlgroup" as const;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* EIDOS specification
|
|
23
|
+
* Complete specification for defining interactive oceanic and geospatial data visualizations using the EIDOS framework. An EIDOS specification is a declarative JSON document that describes the entire structure, layout, data sources, and interactions for a data visualization application. This top-level schema defines the root structure that contains metadata, data definitions, theming, and the hierarchical node structure that defines the user interface.
|
|
24
|
+
*/
|
|
25
|
+
export interface EidosSpec {
|
|
26
|
+
/**
|
|
27
|
+
* Version of EIDOS
|
|
28
|
+
*/
|
|
29
|
+
version?: 08Constant;
|
|
30
|
+
/**
|
|
31
|
+
* Unique identifier for this specification. Must be URL-safe using only lowercase letters, numbers, hyphens, and underscores. This ID is used for referencing the specification in URLs, file systems, and databases. It should be descriptive but concise.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* "seastate-demo"
|
|
35
|
+
* "plot-demo"
|
|
36
|
+
* "grid-layout-demo"
|
|
37
|
+
*/
|
|
38
|
+
id: string;
|
|
39
|
+
/**
|
|
40
|
+
* Human-readable display name for this specification. This is the name shown to users in lists, menus, and interfaces. It can contain spaces, special characters, and mixed case. Should be descriptive and meaningful to end users.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* "DemoOverlay"
|
|
44
|
+
* "DemoPlot"
|
|
45
|
+
* "DemoGrid"
|
|
46
|
+
*/
|
|
47
|
+
name: string;
|
|
48
|
+
/**
|
|
49
|
+
* Detailed description of what this specification does and its purpose. This is primarily for documentation and metadata purposes - it's not typically displayed in the main interface but may be shown in tooltips, help text, or specification listings. Useful for developers and content creators.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* "Demonstration overlay"
|
|
53
|
+
* "Demonstration grid layout"
|
|
54
|
+
* "Demonstration document"
|
|
55
|
+
*/
|
|
56
|
+
description?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Title displayed at top of screen
|
|
59
|
+
*/
|
|
60
|
+
title?: string;
|
|
61
|
+
/**
|
|
62
|
+
* URL of logo image
|
|
63
|
+
*/
|
|
64
|
+
logo?: string | object;
|
|
65
|
+
theme?: EidosTheme;
|
|
66
|
+
/**
|
|
67
|
+
* Data Sources
|
|
68
|
+
* Array of data source definitions that provide data to the visualization components. Each data source can be a static dataset, OceanQL query, Oceanum Datamesh source, or other supported data provider. Data sources are referenced by ID throughout the specification.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* [{"id":"sig-wave-height-trki","dataType":"oceanumDatamesh","dataSpec":{"datasource":"oceanum_wave_trki_era5_v1_grid","variables":["hs","tps"],"geofilter":{"type":"feature","geom":{"type":"Feature","geometry":{"type":"Point","coordinates":[174.3,-38.5]}}},"timefilter":{"times":["2018-01-01 00:00:00Z","2019-01-01 00:00:00Z"]}}}]
|
|
72
|
+
*/
|
|
73
|
+
data?: EidosData[];
|
|
74
|
+
root: World | Plot | Document | Grid | Menu;
|
|
75
|
+
panels?: EidosPanel[];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* PlotSpec
|
|
80
|
+
* Placeholder for Vega/Vega-Lite plot specifications
|
|
81
|
+
*/
|
|
82
|
+
export interface PlotSpec {
|
|
83
|
+
/**
|
|
84
|
+
* The Vega/Vega-Lite schema URL
|
|
85
|
+
*/
|
|
86
|
+
$schema?: string;
|
|
87
|
+
/**
|
|
88
|
+
* The data specification
|
|
89
|
+
*/
|
|
90
|
+
data?: object;
|
|
91
|
+
/**
|
|
92
|
+
* The mark type or definition
|
|
93
|
+
*/
|
|
94
|
+
mark?: any;
|
|
95
|
+
/**
|
|
96
|
+
* The encoding specification
|
|
97
|
+
*/
|
|
98
|
+
encoding?: object;
|
|
99
|
+
/**
|
|
100
|
+
* The configuration options
|
|
101
|
+
*/
|
|
102
|
+
config?: object;
|
|
103
|
+
[key: string]: any;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Eidos theme
|
|
108
|
+
*/
|
|
109
|
+
export interface EidosTheme {
|
|
110
|
+
/**
|
|
111
|
+
* Color scheme for the view
|
|
112
|
+
*/
|
|
113
|
+
preset?: "default" | "dark";
|
|
114
|
+
style?: EidosStyle;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* EIDOS data
|
|
119
|
+
* Data source specification for EIDOS visualizations. Defines how to access and process data from various sources including Oceanum Datamesh, Zarr arrays, inline datasets, GeoJSON features, and data transformations. Each data source has a unique ID that can be referenced by visualization components.
|
|
120
|
+
*/
|
|
121
|
+
export interface EidosData {
|
|
122
|
+
/**
|
|
123
|
+
* Unique identifier for this data source within the specification. Must be alphanumeric with hyphens and underscores only. This ID is used to reference the data source from visualization layers and components.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* "sig-wave-height-trki"
|
|
127
|
+
* "ship-positions"
|
|
128
|
+
* "weather-data"
|
|
129
|
+
*/
|
|
130
|
+
id: string;
|
|
131
|
+
/**
|
|
132
|
+
* Type of data source that determines how the data is accessed and processed. Each type requires different configuration in the dataSpec property.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* "dataset"
|
|
136
|
+
* "geojson"
|
|
137
|
+
* "transform"
|
|
138
|
+
*/
|
|
139
|
+
dataType: "oceanql" | "zarr" | "dataset" | "geojson" | "transform";
|
|
140
|
+
dataSpec: Dataset | Transform | Geojson | Oceanquery | Zarr;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* World
|
|
145
|
+
* Interactive 2D/3D map node for displaying geospatial and oceanic data. World nodes can contain multiple data layers (gridded data, features, tracks, etc.) and provide map controls, time navigation, and spatial interaction capabilities. Ideal for visualizing spatial data, environmental conditions, and geographic features.
|
|
146
|
+
*/
|
|
147
|
+
export interface World {
|
|
148
|
+
/**
|
|
149
|
+
* Unique identifier for this world node within the specification. Used for referencing this node in events, interactions, and programmatic access.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* "map-1"
|
|
153
|
+
* "world-view"
|
|
154
|
+
* "main-map"
|
|
155
|
+
*/
|
|
156
|
+
id: string;
|
|
157
|
+
/**
|
|
158
|
+
* Human-readable title for this world node.
|
|
159
|
+
*/
|
|
160
|
+
title?: string;
|
|
161
|
+
/**
|
|
162
|
+
* Node type identifier. Must be 'world' for map/globe visualizations.
|
|
163
|
+
*/
|
|
164
|
+
nodeType?: WorldNodeType;
|
|
165
|
+
/**
|
|
166
|
+
* Array of world layers and controls to display on this map. Each layer represents a different data visualization (e.g., gridded data, vector features, tracks, 3D objects). Layers are rendered in order with later layers appearing on top.
|
|
167
|
+
*/
|
|
168
|
+
children?: Worldlayer | ControlGroup[];
|
|
169
|
+
/**
|
|
170
|
+
* Base map layer providing the background cartography. Can be a preset like 'oceanum' or 'terrain', or a custom tile layer configuration.
|
|
171
|
+
*/
|
|
172
|
+
baseLayer?: Baselayer;
|
|
173
|
+
/**
|
|
174
|
+
* Initial camera position and orientation for the map view, including center coordinates, zoom level, pitch, and bearing.
|
|
175
|
+
*/
|
|
176
|
+
viewState?: View;
|
|
177
|
+
timezone?: Geojson;
|
|
178
|
+
currentTime?: Geojson;
|
|
179
|
+
timeControl?: Geojson;
|
|
180
|
+
levelControl?: Geojson;
|
|
181
|
+
/**
|
|
182
|
+
* Current level value for the world view
|
|
183
|
+
*/
|
|
184
|
+
currentLevel?: number;
|
|
185
|
+
/**
|
|
186
|
+
* Layer selector control configuration. Set to true/false to show/hide the layer selector, or provide an object to customize its appearance and behavior.
|
|
187
|
+
*/
|
|
188
|
+
layerSelector?: boolean | LayerSelector;
|
|
189
|
+
/**
|
|
190
|
+
* Interactive map controls for spatial selection, measurement, and drawing. Controls appear as toolbar buttons and allow users to interact with the map (e.g., draw polygons, measure distances, drop points).
|
|
191
|
+
*/
|
|
192
|
+
mapControls?: ControlGroup[];
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Plot
|
|
197
|
+
* Specification for plot view environmental digital twin display and interaction
|
|
198
|
+
*/
|
|
199
|
+
export interface Plot {
|
|
200
|
+
/**
|
|
201
|
+
* Unique id of the node
|
|
202
|
+
*/
|
|
203
|
+
id: string;
|
|
204
|
+
/**
|
|
205
|
+
* Title of the plot
|
|
206
|
+
*/
|
|
207
|
+
title?: string;
|
|
208
|
+
nodeType?: PlotNodeType;
|
|
209
|
+
plotType?: "vega" | "vega-lite";
|
|
210
|
+
plotSpec: any & PlotSpec;
|
|
211
|
+
/**
|
|
212
|
+
* Actions to enable for the plot
|
|
213
|
+
*/
|
|
214
|
+
actions?: object;
|
|
215
|
+
timezone?: Geojson;
|
|
216
|
+
currentTime?: Geojson;
|
|
217
|
+
timeControl?: Geojson;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Document
|
|
222
|
+
* Specification for document node
|
|
223
|
+
*/
|
|
224
|
+
export interface Document {
|
|
225
|
+
/**
|
|
226
|
+
* Unique id of the node
|
|
227
|
+
*/
|
|
228
|
+
id: string;
|
|
229
|
+
/**
|
|
230
|
+
* Title of the document
|
|
231
|
+
*/
|
|
232
|
+
title?: string;
|
|
233
|
+
nodeType?: DocumentNodeType;
|
|
234
|
+
/**
|
|
235
|
+
* Document content as templated markdown
|
|
236
|
+
*/
|
|
237
|
+
content: string;
|
|
238
|
+
style?: DocumentStyle;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Grid
|
|
243
|
+
* Layout node that arranges child nodes in a responsive grid pattern. Grid nodes are containers that organize multiple visualization components (maps, plots, documents) into rows and columns. Each child node can span multiple grid cells, allowing for flexible dashboard-style layouts.
|
|
244
|
+
*/
|
|
245
|
+
export interface Grid {
|
|
246
|
+
/**
|
|
247
|
+
* Unique identifier for this grid node within the specification. Used for referencing this node in events, interactions, and programmatic access.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* "main-grid"
|
|
251
|
+
* "dashboard-layout"
|
|
252
|
+
* "analysis-grid"
|
|
253
|
+
*/
|
|
254
|
+
id: string;
|
|
255
|
+
/**
|
|
256
|
+
* Node type identifier. Must be 'grid' for layout containers that arrange children in a grid pattern.
|
|
257
|
+
*/
|
|
258
|
+
nodeType?: GridNodeType;
|
|
259
|
+
/**
|
|
260
|
+
* Defines the overall grid dimensions. All child nodes must fit within these bounds. The grid acts as a responsive layout container that adapts to screen size while maintaining relative proportions.
|
|
261
|
+
*/
|
|
262
|
+
gridSize: object;
|
|
263
|
+
/**
|
|
264
|
+
* Optional array defining precise positioning for each child node. If provided, must have the same length as the children array. Each element defines the grid position and size for the corresponding child.
|
|
265
|
+
*/
|
|
266
|
+
gridLayout?: object[];
|
|
267
|
+
/**
|
|
268
|
+
* Array of child nodes to display within the grid. Children are positioned automatically if gridLayout is not specified, or according to the gridLayout array if provided. Can contain any type of EIDOS node.
|
|
269
|
+
*/
|
|
270
|
+
children: World | Plot | Document | Menu[];
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Menu
|
|
275
|
+
*/
|
|
276
|
+
export interface Menu {
|
|
277
|
+
/**
|
|
278
|
+
* Unique id of the node
|
|
279
|
+
*/
|
|
280
|
+
id: string;
|
|
281
|
+
nodeType?: MenuNodeType;
|
|
282
|
+
activeItem?: string;
|
|
283
|
+
/**
|
|
284
|
+
* Location of menu relative to content
|
|
285
|
+
*/
|
|
286
|
+
position?: "top" | "left" | "bottom" | "right";
|
|
287
|
+
/**
|
|
288
|
+
* Whether menu is open
|
|
289
|
+
*/
|
|
290
|
+
open?: boolean;
|
|
291
|
+
children: World | Plot | Document | Grid[];
|
|
292
|
+
openOnMouseOver?: boolean;
|
|
293
|
+
menuLayout: object[];
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Eidos panel
|
|
298
|
+
* Spec for panel node (world, plot, document, grid or menu). A panel node is displayed as a modal window on top of the parent element. Opening can be triggered by an event.
|
|
299
|
+
*/
|
|
300
|
+
export interface EidosPanel {
|
|
301
|
+
/**
|
|
302
|
+
* Unique ID of the panel
|
|
303
|
+
*/
|
|
304
|
+
id: string;
|
|
305
|
+
node: World | Plot | Document | Grid | Menu;
|
|
306
|
+
/**
|
|
307
|
+
* event object that triggers panel
|
|
308
|
+
*/
|
|
309
|
+
trigger?: object;
|
|
310
|
+
/**
|
|
311
|
+
* If true, this panel is exclusive and will close other panels when opened
|
|
312
|
+
*/
|
|
313
|
+
exclusive?: boolean;
|
|
314
|
+
height?: Geojson;
|
|
315
|
+
width?: Geojson;
|
|
316
|
+
position?: Geojson;
|
|
317
|
+
/**
|
|
318
|
+
* Title of panel
|
|
319
|
+
*/
|
|
320
|
+
title?: string;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Eidos style
|
|
325
|
+
* Style properties organized by category
|
|
326
|
+
*/
|
|
327
|
+
export interface EidosStyle {
|
|
328
|
+
color?: ColorStyle;
|
|
329
|
+
text?: TextStyle;
|
|
330
|
+
control?: ControlStyle;
|
|
331
|
+
panel?: PanelStyle;
|
|
332
|
+
grid?: GridStyle;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Dataset
|
|
337
|
+
* Inline dataset
|
|
338
|
+
*/
|
|
339
|
+
export interface Dataset {
|
|
340
|
+
name?: string;
|
|
341
|
+
/**
|
|
342
|
+
* Attributes of the dataset
|
|
343
|
+
*/
|
|
344
|
+
attributes?: object;
|
|
345
|
+
/**
|
|
346
|
+
* Data variables
|
|
347
|
+
*/
|
|
348
|
+
variables: object;
|
|
349
|
+
/**
|
|
350
|
+
* Dimensions
|
|
351
|
+
*/
|
|
352
|
+
dimensions: object;
|
|
353
|
+
coordkeys: Coordkeys;
|
|
354
|
+
[key: string]: any;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Transform
|
|
359
|
+
* Specification for data transform.
|
|
360
|
+
*/
|
|
361
|
+
export interface Transform {
|
|
362
|
+
/**
|
|
363
|
+
* Human readable name of this transform instance
|
|
364
|
+
*/
|
|
365
|
+
name?: string;
|
|
366
|
+
/**
|
|
367
|
+
* Modules to add as key:<Module URL>
|
|
368
|
+
*/
|
|
369
|
+
modules?: object;
|
|
370
|
+
/**
|
|
371
|
+
* Source inputs
|
|
372
|
+
*/
|
|
373
|
+
inputs: any[];
|
|
374
|
+
/**
|
|
375
|
+
* Output data type
|
|
376
|
+
*/
|
|
377
|
+
outputType?: "dataset" | "geojson";
|
|
378
|
+
/**
|
|
379
|
+
* Transform code
|
|
380
|
+
* Transform code as body of function
|
|
381
|
+
*/
|
|
382
|
+
code: string;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* GeoJSON
|
|
387
|
+
* GeoJSON schemas
|
|
388
|
+
*/
|
|
389
|
+
export interface Geojson {
|
|
390
|
+
[key: string]: GeoJSON;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* OceanQuery
|
|
395
|
+
*/
|
|
396
|
+
export interface Oceanquery {
|
|
397
|
+
/**
|
|
398
|
+
* The id of the datasource
|
|
399
|
+
*/
|
|
400
|
+
datasource: string;
|
|
401
|
+
/**
|
|
402
|
+
* Datasource parameters
|
|
403
|
+
*/
|
|
404
|
+
parameters?: object | null;
|
|
405
|
+
/**
|
|
406
|
+
* Optional description of this query
|
|
407
|
+
*/
|
|
408
|
+
description?: string | null;
|
|
409
|
+
/**
|
|
410
|
+
* List of selected variables
|
|
411
|
+
*/
|
|
412
|
+
variables?: string[] | null;
|
|
413
|
+
/**
|
|
414
|
+
* Time filter
|
|
415
|
+
*/
|
|
416
|
+
timefilter?: Timefilter | null;
|
|
417
|
+
/**
|
|
418
|
+
* Spatial filter or interpolator
|
|
419
|
+
*/
|
|
420
|
+
geofilter?: Geofilter | null;
|
|
421
|
+
/**
|
|
422
|
+
* List of additional coordinate filters
|
|
423
|
+
*/
|
|
424
|
+
coordfilter?: Coordselector[] | null;
|
|
425
|
+
/**
|
|
426
|
+
* Spatial reference for filter and output
|
|
427
|
+
*/
|
|
428
|
+
crs?: number | string | null;
|
|
429
|
+
/**
|
|
430
|
+
* Aggregate operations
|
|
431
|
+
*/
|
|
432
|
+
aggregate?: Aggregate | null;
|
|
433
|
+
/**
|
|
434
|
+
* Limit size of response
|
|
435
|
+
*/
|
|
436
|
+
limit?: number | null;
|
|
437
|
+
/**
|
|
438
|
+
* Unique ID of this query
|
|
439
|
+
*/
|
|
440
|
+
id?: string | null;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
export interface Zarr {
|
|
444
|
+
/**
|
|
445
|
+
* Zarr group URL
|
|
446
|
+
*/
|
|
447
|
+
group: string;
|
|
448
|
+
/**
|
|
449
|
+
* Headers for zarr dataset
|
|
450
|
+
*/
|
|
451
|
+
headers?: object;
|
|
452
|
+
coordkeys: Coordkeys;
|
|
453
|
+
ttl?: number | null;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* WorldLayer
|
|
458
|
+
* A data layer displayed on a world map. World layers visualize different types of geospatial data including gridded datasets (like temperature, wave height), vector features (points, lines, polygons), tracks (moving objects), and 3D scene elements.
|
|
459
|
+
*/
|
|
460
|
+
export interface Worldlayer {
|
|
461
|
+
/**
|
|
462
|
+
* Unique identifier for this layer within the world node. Used for layer management, visibility control, and programmatic access.
|
|
463
|
+
*
|
|
464
|
+
* @example
|
|
465
|
+
* "wave-height"
|
|
466
|
+
* "ship-tracks"
|
|
467
|
+
* "weather-stations"
|
|
468
|
+
*/
|
|
469
|
+
id: string;
|
|
470
|
+
/**
|
|
471
|
+
* Display name for this layer shown in the layer selector and legend. Should be descriptive and user-friendly.
|
|
472
|
+
*
|
|
473
|
+
* @example
|
|
474
|
+
* "Significant Wave Height"
|
|
475
|
+
* "Ship Positions"
|
|
476
|
+
* "Weather Stations"
|
|
477
|
+
*/
|
|
478
|
+
name?: string;
|
|
479
|
+
nodeType: WorldlayerNodeType;
|
|
480
|
+
/**
|
|
481
|
+
* Reference to a data source defined in the root 'data' array. This connects the layer to its data source for visualization.
|
|
482
|
+
*
|
|
483
|
+
* @example
|
|
484
|
+
* "hs-1"
|
|
485
|
+
* "sig-wave-height-trki"
|
|
486
|
+
* "ship-positions"
|
|
487
|
+
*/
|
|
488
|
+
dataId?: string;
|
|
489
|
+
/**
|
|
490
|
+
* Whether this layer is initially visible when the map loads. Users can toggle visibility through the layer selector.
|
|
491
|
+
*/
|
|
492
|
+
visible?: boolean;
|
|
493
|
+
/**
|
|
494
|
+
* Layer IDs that this layer can be shown with. An empty array means it the layer is exclusive and cannot be shown with any other layer. If this iproperty is missing or null, the layer can be shown with any other layer
|
|
495
|
+
*/
|
|
496
|
+
showWith?: string[] | null;
|
|
497
|
+
/**
|
|
498
|
+
* Linked layer id which controls this layer visibility
|
|
499
|
+
*/
|
|
500
|
+
linked?: string;
|
|
501
|
+
/**
|
|
502
|
+
* Configuration for tooltips displayed when hovering over layer elements. Uses Handlebars templates for dynamic content.
|
|
503
|
+
*/
|
|
504
|
+
hoverInfo?: MapHoverInfo;
|
|
505
|
+
layerSpec: Layerspec;
|
|
506
|
+
/**
|
|
507
|
+
* Minimum zoom level at which layer is visible
|
|
508
|
+
*/
|
|
509
|
+
minZoom?: number;
|
|
510
|
+
/**
|
|
511
|
+
* Maximum zoom level at which layer is visible
|
|
512
|
+
*/
|
|
513
|
+
maxZoom?: number;
|
|
514
|
+
/**
|
|
515
|
+
* Time selection criteria for layer
|
|
516
|
+
*/
|
|
517
|
+
timeSelect?: Timeselect;
|
|
518
|
+
/**
|
|
519
|
+
* Level selection criteria for layer
|
|
520
|
+
*/
|
|
521
|
+
levelSelect?: Levelselect;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Control group
|
|
526
|
+
*/
|
|
527
|
+
export interface ControlGroup {
|
|
528
|
+
/**
|
|
529
|
+
* Control group id
|
|
530
|
+
*/
|
|
531
|
+
id: string;
|
|
532
|
+
nodeType?: ControlgroupNodeType;
|
|
533
|
+
orientation?: "horizontal" | "vertical";
|
|
534
|
+
/**
|
|
535
|
+
* Control list
|
|
536
|
+
*/
|
|
537
|
+
children: Control[];
|
|
538
|
+
/**
|
|
539
|
+
* Visibility of control group
|
|
540
|
+
*/
|
|
541
|
+
visible?: boolean;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
export type Baselayer = Baselayerpreset | object;
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Camera configuration defining the initial viewport of the map including position, zoom level, and orientation. This sets how users first see the map when it loads.
|
|
548
|
+
*/
|
|
549
|
+
export interface View {
|
|
550
|
+
/**
|
|
551
|
+
* Type of world view
|
|
552
|
+
*/
|
|
553
|
+
viewType?: "map" | "globe";
|
|
554
|
+
/**
|
|
555
|
+
* Longitude coordinate of the map center in decimal degrees (-180 to 180). Positive values are East, negative values are West.
|
|
556
|
+
*
|
|
557
|
+
* @example
|
|
558
|
+
* 174.3
|
|
559
|
+
* -122.4
|
|
560
|
+
* 2.3
|
|
561
|
+
*/
|
|
562
|
+
longitude: number;
|
|
563
|
+
/**
|
|
564
|
+
* Latitude coordinate of the map center in decimal degrees (-90 to 90). Positive values are North, negative values are South.
|
|
565
|
+
*
|
|
566
|
+
* @example
|
|
567
|
+
* -38.5
|
|
568
|
+
* 37.7
|
|
569
|
+
* 48.9
|
|
570
|
+
*/
|
|
571
|
+
latitude: number;
|
|
572
|
+
/**
|
|
573
|
+
* Pitch angle of view
|
|
574
|
+
*/
|
|
575
|
+
pitch?: number;
|
|
576
|
+
/**
|
|
577
|
+
* Bearing angle of view
|
|
578
|
+
*/
|
|
579
|
+
bearing?: number;
|
|
580
|
+
/**
|
|
581
|
+
* Maximum zoom level
|
|
582
|
+
*/
|
|
583
|
+
maxZoom?: number;
|
|
584
|
+
/**
|
|
585
|
+
* Initial zoom level of the map. Higher values show more detail. Typically ranges from 0 (world view) to 20+ (street level).
|
|
586
|
+
*
|
|
587
|
+
* @example
|
|
588
|
+
* 2
|
|
589
|
+
* 8
|
|
590
|
+
* 12
|
|
591
|
+
*/
|
|
592
|
+
zoom?: number;
|
|
593
|
+
/**
|
|
594
|
+
* Maximum pitch angle
|
|
595
|
+
*/
|
|
596
|
+
maxPitch?: number;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Layer selector
|
|
601
|
+
*/
|
|
602
|
+
export interface LayerSelector {
|
|
603
|
+
/**
|
|
604
|
+
* Visibility of layer selector
|
|
605
|
+
*/
|
|
606
|
+
open?: boolean;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Document style
|
|
611
|
+
* Document style overrides
|
|
612
|
+
*/
|
|
613
|
+
export interface DocumentStyle {
|
|
614
|
+
/**
|
|
615
|
+
* Font size
|
|
616
|
+
*/
|
|
617
|
+
fontSize?: string;
|
|
618
|
+
/**
|
|
619
|
+
* Font family
|
|
620
|
+
*/
|
|
621
|
+
fontFamily?: string;
|
|
622
|
+
/**
|
|
623
|
+
* Font color
|
|
624
|
+
*/
|
|
625
|
+
fontColor?: string;
|
|
626
|
+
/**
|
|
627
|
+
* Line height
|
|
628
|
+
*/
|
|
629
|
+
lineHeight?: string;
|
|
630
|
+
/**
|
|
631
|
+
* Background color
|
|
632
|
+
*/
|
|
633
|
+
backgroundColor?: string;
|
|
634
|
+
/**
|
|
635
|
+
* Padding
|
|
636
|
+
*/
|
|
637
|
+
padding?: string;
|
|
638
|
+
/**
|
|
639
|
+
* Margin
|
|
640
|
+
*/
|
|
641
|
+
margin?: string;
|
|
642
|
+
/**
|
|
643
|
+
* Justify content
|
|
644
|
+
*/
|
|
645
|
+
justifyContent?: "left" | "center" | "right";
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Color style
|
|
650
|
+
* Color palette configuration
|
|
651
|
+
*/
|
|
652
|
+
export interface ColorStyle {
|
|
653
|
+
/**
|
|
654
|
+
* Primary color of the view
|
|
655
|
+
*/
|
|
656
|
+
primary?: string;
|
|
657
|
+
/**
|
|
658
|
+
* Secondary color of the view
|
|
659
|
+
*/
|
|
660
|
+
secondary?: string;
|
|
661
|
+
/**
|
|
662
|
+
* Accent color of the view
|
|
663
|
+
*/
|
|
664
|
+
accent?: string;
|
|
665
|
+
/**
|
|
666
|
+
* Background color of the view
|
|
667
|
+
*/
|
|
668
|
+
background?: string;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
/**
|
|
672
|
+
* Text style
|
|
673
|
+
* Typography configuration
|
|
674
|
+
*/
|
|
675
|
+
export interface TextStyle {
|
|
676
|
+
/**
|
|
677
|
+
* Text color of the view
|
|
678
|
+
*/
|
|
679
|
+
color?: string;
|
|
680
|
+
/**
|
|
681
|
+
* Font family of the view
|
|
682
|
+
*/
|
|
683
|
+
fontFamily?: string;
|
|
684
|
+
/**
|
|
685
|
+
* Font size of the text
|
|
686
|
+
*/
|
|
687
|
+
fontSize?: any;
|
|
688
|
+
/**
|
|
689
|
+
* Font weight of the text
|
|
690
|
+
*/
|
|
691
|
+
fontWeight?: string;
|
|
692
|
+
/**
|
|
693
|
+
* Line height of the text
|
|
694
|
+
*/
|
|
695
|
+
lineHeight?: any;
|
|
696
|
+
/**
|
|
697
|
+
* Text alignment of the view
|
|
698
|
+
*/
|
|
699
|
+
align?: string;
|
|
700
|
+
/**
|
|
701
|
+
* Size of the title
|
|
702
|
+
*/
|
|
703
|
+
titleSize?: any;
|
|
704
|
+
/**
|
|
705
|
+
* Size of the subtitle
|
|
706
|
+
*/
|
|
707
|
+
subtitleSize?: any;
|
|
708
|
+
/**
|
|
709
|
+
* Size of the heading
|
|
710
|
+
*/
|
|
711
|
+
headingSize?: any;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
/**
|
|
715
|
+
* Control style
|
|
716
|
+
* Control element styling
|
|
717
|
+
*/
|
|
718
|
+
export interface ControlStyle {
|
|
719
|
+
/**
|
|
720
|
+
* Opacity of control elements
|
|
721
|
+
*/
|
|
722
|
+
opacity?: string;
|
|
723
|
+
/**
|
|
724
|
+
* Border color of control elements
|
|
725
|
+
*/
|
|
726
|
+
borderColor?: string;
|
|
727
|
+
/**
|
|
728
|
+
* Background color of control elements
|
|
729
|
+
*/
|
|
730
|
+
backgroundColor?: string;
|
|
731
|
+
/**
|
|
732
|
+
* Text color of control elements
|
|
733
|
+
*/
|
|
734
|
+
textColor?: string;
|
|
735
|
+
/**
|
|
736
|
+
* Border width of control elements
|
|
737
|
+
*/
|
|
738
|
+
borderWidth?: any;
|
|
739
|
+
/**
|
|
740
|
+
* Border style of control elements
|
|
741
|
+
*/
|
|
742
|
+
borderStyle?: string;
|
|
743
|
+
/**
|
|
744
|
+
* Border radius of control elements
|
|
745
|
+
*/
|
|
746
|
+
borderRadius?: any;
|
|
747
|
+
/**
|
|
748
|
+
* Backdrop filter effect for controls
|
|
749
|
+
*/
|
|
750
|
+
backdropFilter?: string;
|
|
751
|
+
/**
|
|
752
|
+
* Box shadow effect for controls
|
|
753
|
+
*/
|
|
754
|
+
boxShadow?: string;
|
|
755
|
+
/**
|
|
756
|
+
* Inset box shadow effect for controls
|
|
757
|
+
*/
|
|
758
|
+
boxShadowInset?: string;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
/**
|
|
762
|
+
* Panel style
|
|
763
|
+
* Panel element styling
|
|
764
|
+
*/
|
|
765
|
+
export interface PanelStyle {
|
|
766
|
+
/**
|
|
767
|
+
* Opacity of panel elements
|
|
768
|
+
*/
|
|
769
|
+
opacity?: string;
|
|
770
|
+
/**
|
|
771
|
+
* Border color of panel elements
|
|
772
|
+
*/
|
|
773
|
+
borderColor?: string;
|
|
774
|
+
/**
|
|
775
|
+
* Background color of panel elements
|
|
776
|
+
*/
|
|
777
|
+
backgroundColor?: string;
|
|
778
|
+
/**
|
|
779
|
+
* Text color of panel elements
|
|
780
|
+
*/
|
|
781
|
+
textColor?: string;
|
|
782
|
+
/**
|
|
783
|
+
* Border width of panel elements
|
|
784
|
+
*/
|
|
785
|
+
borderWidth?: any;
|
|
786
|
+
/**
|
|
787
|
+
* Border style of panel elements
|
|
788
|
+
*/
|
|
789
|
+
borderStyle?: string;
|
|
790
|
+
/**
|
|
791
|
+
* Border radius of panel elements
|
|
792
|
+
*/
|
|
793
|
+
borderRadius?: any;
|
|
794
|
+
/**
|
|
795
|
+
* Backdrop filter effect for panels
|
|
796
|
+
*/
|
|
797
|
+
backdropFilter?: string;
|
|
798
|
+
/**
|
|
799
|
+
* Box shadow effect for panels
|
|
800
|
+
*/
|
|
801
|
+
boxShadow?: string;
|
|
802
|
+
/**
|
|
803
|
+
* Inset box shadow effect for panels
|
|
804
|
+
*/
|
|
805
|
+
boxShadowInset?: string;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
/**
|
|
809
|
+
* Grid style
|
|
810
|
+
* Grid element styling
|
|
811
|
+
*/
|
|
812
|
+
export interface GridStyle {
|
|
813
|
+
/**
|
|
814
|
+
* Border width of grid elements
|
|
815
|
+
*/
|
|
816
|
+
borderWidth?: any;
|
|
817
|
+
/**
|
|
818
|
+
* Border radius of grid elements
|
|
819
|
+
*/
|
|
820
|
+
borderRadius?: any;
|
|
821
|
+
/**
|
|
822
|
+
* Border style of grid elements
|
|
823
|
+
*/
|
|
824
|
+
borderStyle?: string;
|
|
825
|
+
/**
|
|
826
|
+
* Border color of grid elements
|
|
827
|
+
*/
|
|
828
|
+
borderColor?: string;
|
|
829
|
+
/**
|
|
830
|
+
* Padding of grid elements
|
|
831
|
+
*/
|
|
832
|
+
padding?: any;
|
|
833
|
+
/**
|
|
834
|
+
* Margin of grid elements
|
|
835
|
+
*/
|
|
836
|
+
margin?: any;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
* Coordinate keys mapping variables to dimensions (x: longitude, y: latitude, z: depth/altitude, g: geometry, t: time)
|
|
841
|
+
*/
|
|
842
|
+
export interface Coordkeys {
|
|
843
|
+
[key: string]: object;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
/**
|
|
847
|
+
* TimeFilter
|
|
848
|
+
*/
|
|
849
|
+
export interface Timefilter {
|
|
850
|
+
/**
|
|
851
|
+
* Timefilter type
|
|
852
|
+
*/
|
|
853
|
+
type?: Timefiltertype;
|
|
854
|
+
/**
|
|
855
|
+
* Time range or series
|
|
856
|
+
*/
|
|
857
|
+
times: string | null[];
|
|
858
|
+
/**
|
|
859
|
+
* Temporal resolution of data
|
|
860
|
+
*/
|
|
861
|
+
resolution?: string | null;
|
|
862
|
+
/**
|
|
863
|
+
* Resampling operator
|
|
864
|
+
*/
|
|
865
|
+
resample?: Resampletype | null;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
/**
|
|
869
|
+
* GeoFilter
|
|
870
|
+
*/
|
|
871
|
+
export interface Geofilter {
|
|
872
|
+
/**
|
|
873
|
+
* GeoFilter type
|
|
874
|
+
*/
|
|
875
|
+
type?: Geofiltertype;
|
|
876
|
+
/**
|
|
877
|
+
* bbox OR geojson Feature
|
|
878
|
+
*/
|
|
879
|
+
geom: number[];
|
|
880
|
+
/**
|
|
881
|
+
* Maximum spatial resolution of data
|
|
882
|
+
*/
|
|
883
|
+
resolution?: number | null;
|
|
884
|
+
/**
|
|
885
|
+
* Include all touched grid pixels
|
|
886
|
+
*/
|
|
887
|
+
alltouched?: boolean | null;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
/**
|
|
891
|
+
* CoordSelector
|
|
892
|
+
*/
|
|
893
|
+
export interface Coordselector {
|
|
894
|
+
/**
|
|
895
|
+
* Coordinate name
|
|
896
|
+
*/
|
|
897
|
+
coord: string;
|
|
898
|
+
/**
|
|
899
|
+
* List of coordinate values to select by
|
|
900
|
+
*/
|
|
901
|
+
values: string | number[];
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* Aggregate
|
|
906
|
+
*/
|
|
907
|
+
export interface Aggregate {
|
|
908
|
+
/**
|
|
909
|
+
* Aggregate operations to perform
|
|
910
|
+
*/
|
|
911
|
+
operations?: AggregateOps[];
|
|
912
|
+
/**
|
|
913
|
+
* Aggregate over spatial filter
|
|
914
|
+
*/
|
|
915
|
+
spatial?: boolean | null;
|
|
916
|
+
/**
|
|
917
|
+
* Aggregate over temporal filter
|
|
918
|
+
*/
|
|
919
|
+
temporal?: boolean | null;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* Map hover info
|
|
924
|
+
* Properties for tooltip shown on hover
|
|
925
|
+
*/
|
|
926
|
+
export interface MapHoverInfo {
|
|
927
|
+
/**
|
|
928
|
+
* Tooltip as Handlebars template. The picked object is passed as the render context.
|
|
929
|
+
*/
|
|
930
|
+
template: string;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
/**
|
|
934
|
+
* Layer specification
|
|
935
|
+
*/
|
|
936
|
+
export type Layerspec = Feature | Gridded | Label | Scenegraph | Seasurface | Track | Wmts;
|
|
937
|
+
|
|
938
|
+
export interface Timeselect {
|
|
939
|
+
mode: "nearest" | "exact" | "range";
|
|
940
|
+
/**
|
|
941
|
+
* Time tolerance duration for nearest time select
|
|
942
|
+
*/
|
|
943
|
+
tolerance?: string;
|
|
944
|
+
/**
|
|
945
|
+
* Time aggregation
|
|
946
|
+
* Aggregation method for time range
|
|
947
|
+
*/
|
|
948
|
+
aggregate?: "last" | "first" | "sum" | "mean" | "max" | "min";
|
|
949
|
+
/**
|
|
950
|
+
* Data field to group by
|
|
951
|
+
*/
|
|
952
|
+
groupby?: string;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* Level selection criteria for layer
|
|
957
|
+
*/
|
|
958
|
+
export interface Levelselect {
|
|
959
|
+
/**
|
|
960
|
+
* Level selection mode
|
|
961
|
+
*/
|
|
962
|
+
mode?: "nearest" | "exact" | "range";
|
|
963
|
+
/**
|
|
964
|
+
* Level tolerance for nearest level select
|
|
965
|
+
*/
|
|
966
|
+
tolerance?: number;
|
|
967
|
+
/**
|
|
968
|
+
* Default level value for this layer
|
|
969
|
+
*/
|
|
970
|
+
level?: number;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
/**
|
|
974
|
+
* Control
|
|
975
|
+
* Control properties
|
|
976
|
+
*/
|
|
977
|
+
export interface Control {
|
|
978
|
+
/**
|
|
979
|
+
* Control type
|
|
980
|
+
*/
|
|
981
|
+
nodeType: "points" | "polygon" | "bbox" | "radius" | "drop" | "measure";
|
|
982
|
+
/**
|
|
983
|
+
* Control id
|
|
984
|
+
*/
|
|
985
|
+
id: string;
|
|
986
|
+
/**
|
|
987
|
+
* Control active state
|
|
988
|
+
*/
|
|
989
|
+
active?: boolean;
|
|
990
|
+
/**
|
|
991
|
+
* Control disabled state
|
|
992
|
+
*/
|
|
993
|
+
disabled?: boolean;
|
|
994
|
+
/**
|
|
995
|
+
* Control state
|
|
996
|
+
*/
|
|
997
|
+
state?: object;
|
|
998
|
+
/**
|
|
999
|
+
* Icon URLs
|
|
1000
|
+
*/
|
|
1001
|
+
icon?: object;
|
|
1002
|
+
/**
|
|
1003
|
+
* Tooltip text
|
|
1004
|
+
*/
|
|
1005
|
+
tooltip?: string;
|
|
1006
|
+
config?: object;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
/**
|
|
1010
|
+
* Base layer type
|
|
1011
|
+
*/
|
|
1012
|
+
export type Baselayerpreset = "oceanum" | "terrain";
|
|
1013
|
+
|
|
1014
|
+
/**
|
|
1015
|
+
* ResampleType
|
|
1016
|
+
*/
|
|
1017
|
+
export type Resampletype = "mean" | "nearest";
|
|
1018
|
+
|
|
1019
|
+
/**
|
|
1020
|
+
* Aggregate Ops
|
|
1021
|
+
*/
|
|
1022
|
+
export type AggregateOps = "mean" | "min" | "max" | "std" | "sum";
|
|
1023
|
+
|
|
1024
|
+
/**
|
|
1025
|
+
* Feature
|
|
1026
|
+
* Feature Model
|
|
1027
|
+
*/
|
|
1028
|
+
export interface Feature {
|
|
1029
|
+
/**
|
|
1030
|
+
* Type
|
|
1031
|
+
*/
|
|
1032
|
+
type: "Feature";
|
|
1033
|
+
geometry: Geometry;
|
|
1034
|
+
/**
|
|
1035
|
+
* Properties
|
|
1036
|
+
*/
|
|
1037
|
+
properties?: Properties;
|
|
1038
|
+
/**
|
|
1039
|
+
* Id
|
|
1040
|
+
*/
|
|
1041
|
+
id?: string;
|
|
1042
|
+
/**
|
|
1043
|
+
* Bbox
|
|
1044
|
+
*/
|
|
1045
|
+
bbox?: any[];
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
/**
|
|
1049
|
+
* Geometry
|
|
1050
|
+
* Geometry Model
|
|
1051
|
+
*/
|
|
1052
|
+
export type Geometry = Point | Multipoint | Linestring | Multilinestring | Polygon | Multipolygon | Geometrycollection;
|
|
1053
|
+
|
|
1054
|
+
/**
|
|
1055
|
+
* Point
|
|
1056
|
+
* Point Model
|
|
1057
|
+
*/
|
|
1058
|
+
export interface Point {
|
|
1059
|
+
/**
|
|
1060
|
+
* Coordinates
|
|
1061
|
+
*/
|
|
1062
|
+
coordinates: any[];
|
|
1063
|
+
/**
|
|
1064
|
+
* Type
|
|
1065
|
+
*/
|
|
1066
|
+
type?: Type;
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
/**
|
|
1070
|
+
* MultiPoint
|
|
1071
|
+
* MultiPoint Model
|
|
1072
|
+
*/
|
|
1073
|
+
export interface Multipoint {
|
|
1074
|
+
/**
|
|
1075
|
+
* Coordinates
|
|
1076
|
+
*/
|
|
1077
|
+
coordinates: any[][];
|
|
1078
|
+
/**
|
|
1079
|
+
* Type
|
|
1080
|
+
*/
|
|
1081
|
+
type?: Type;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
/**
|
|
1085
|
+
* LineString
|
|
1086
|
+
* LineString Model
|
|
1087
|
+
*/
|
|
1088
|
+
export interface Linestring {
|
|
1089
|
+
/**
|
|
1090
|
+
* Coordinates
|
|
1091
|
+
*/
|
|
1092
|
+
coordinates: any[][];
|
|
1093
|
+
/**
|
|
1094
|
+
* Type
|
|
1095
|
+
*/
|
|
1096
|
+
type?: Type;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
/**
|
|
1100
|
+
* MultiLineString
|
|
1101
|
+
* MultiLineString Model
|
|
1102
|
+
*/
|
|
1103
|
+
export interface Multilinestring {
|
|
1104
|
+
/**
|
|
1105
|
+
* Coordinates
|
|
1106
|
+
*/
|
|
1107
|
+
coordinates: any[][][];
|
|
1108
|
+
/**
|
|
1109
|
+
* Type
|
|
1110
|
+
*/
|
|
1111
|
+
type?: Type;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
/**
|
|
1115
|
+
* Polygon
|
|
1116
|
+
* Polygon Model
|
|
1117
|
+
*/
|
|
1118
|
+
export interface Polygon {
|
|
1119
|
+
/**
|
|
1120
|
+
* Coordinates
|
|
1121
|
+
*/
|
|
1122
|
+
coordinates: any[][][];
|
|
1123
|
+
/**
|
|
1124
|
+
* Type
|
|
1125
|
+
*/
|
|
1126
|
+
type?: Type;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
/**
|
|
1130
|
+
* MultiPolygon
|
|
1131
|
+
* MultiPolygon Model
|
|
1132
|
+
*/
|
|
1133
|
+
export interface Multipolygon {
|
|
1134
|
+
/**
|
|
1135
|
+
* Coordinates
|
|
1136
|
+
*/
|
|
1137
|
+
coordinates: any[][][][];
|
|
1138
|
+
/**
|
|
1139
|
+
* Type
|
|
1140
|
+
*/
|
|
1141
|
+
type?: Type;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
/**
|
|
1145
|
+
* GeometryCollection
|
|
1146
|
+
* GeometryCollection Model
|
|
1147
|
+
*/
|
|
1148
|
+
export interface Geometrycollection {
|
|
1149
|
+
/**
|
|
1150
|
+
* Type
|
|
1151
|
+
*/
|
|
1152
|
+
type?: Type;
|
|
1153
|
+
/**
|
|
1154
|
+
* Geometries
|
|
1155
|
+
*/
|
|
1156
|
+
geometries: Geometry[];
|
|
1157
|
+
}
|