@geolibre/core 3.6.0 → 3.7.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/dist/ellipsoids-BdHOMRmm.d.mts +448 -0
- package/dist/ellipsoids-BdHOMRmm.d.mts.map +1 -0
- package/dist/ellipsoids-DlTLddDu.mjs +496 -0
- package/dist/ellipsoids-DlTLddDu.mjs.map +1 -0
- package/dist/geodesic.d.mts +70 -0
- package/dist/geodesic.d.mts.map +1 -0
- package/dist/geodesic.mjs +155 -0
- package/dist/geodesic.mjs.map +1 -0
- package/dist/index.d.mts +535 -14
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1481 -1942
- package/dist/index.mjs.map +1 -1
- package/dist/{project-diff-BJDslj2U.d.mts → project-diff-B6AfZk8o.d.mts} +95 -449
- package/dist/project-diff-B6AfZk8o.d.mts.map +1 -0
- package/dist/{project-diff-CSG1AgSK.mjs → project-diff-DPGO-zCS.mjs} +1593 -498
- package/dist/project-diff-DPGO-zCS.mjs.map +1 -0
- package/dist/worker-safe.d.mts +2 -1
- package/dist/worker-safe.mjs +3 -1
- package/package.json +9 -4
- package/dist/project-diff-BJDslj2U.d.mts.map +0 -1
- package/dist/project-diff-CSG1AgSK.mjs.map +0 -1
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The value values for the "type" property of GeoJSON Objects.
|
|
3
|
+
* https://tools.ietf.org/html/rfc7946#section-1.4
|
|
4
|
+
*/
|
|
5
|
+
type GeoJsonTypes = GeoJSON["type"];
|
|
6
|
+
/**
|
|
7
|
+
* Bounding box
|
|
8
|
+
* https://tools.ietf.org/html/rfc7946#section-5
|
|
9
|
+
*/
|
|
10
|
+
type BBox = [number, number, number, number] | [number, number, number, number, number, number];
|
|
11
|
+
/**
|
|
12
|
+
* A Position is an array of coordinates.
|
|
13
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.1
|
|
14
|
+
* Array should contain between two and three elements.
|
|
15
|
+
* The previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),
|
|
16
|
+
* but the current specification only allows X, Y, and (optionally) Z to be defined.
|
|
17
|
+
*
|
|
18
|
+
* Note: the type will not be narrowed down to `[number, number] | [number, number, number]` due to
|
|
19
|
+
* marginal benefits and the large impact of breaking change.
|
|
20
|
+
*
|
|
21
|
+
* See previous discussions on the type narrowing:
|
|
22
|
+
* - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/pull/21590|Nov 2017}
|
|
23
|
+
* - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/67773|Dec 2023}
|
|
24
|
+
* - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/71441| Dec 2024}
|
|
25
|
+
*
|
|
26
|
+
* One can use a
|
|
27
|
+
* {@link https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates|user-defined type guard that returns a type predicate}
|
|
28
|
+
* to determine if a position is a 2D or 3D position.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* import type { Position } from 'geojson';
|
|
32
|
+
*
|
|
33
|
+
* type StrictPosition = [x: number, y: number] | [x: number, y: number, z: number]
|
|
34
|
+
*
|
|
35
|
+
* function isStrictPosition(position: Position): position is StrictPosition {
|
|
36
|
+
* return position.length === 2 || position.length === 3
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* let position: Position = [-116.91, 45.54];
|
|
40
|
+
*
|
|
41
|
+
* let x: number;
|
|
42
|
+
* let y: number;
|
|
43
|
+
* let z: number | undefined;
|
|
44
|
+
*
|
|
45
|
+
* if (isStrictPosition(position)) {
|
|
46
|
+
* // `tsc` would throw an error if we tried to destructure a fourth parameter
|
|
47
|
+
* [x, y, z] = position;
|
|
48
|
+
* } else {
|
|
49
|
+
* throw new TypeError("Position is not a 2D or 3D point");
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
type Position = number[];
|
|
53
|
+
/**
|
|
54
|
+
* The base GeoJSON object.
|
|
55
|
+
* https://tools.ietf.org/html/rfc7946#section-3
|
|
56
|
+
* The GeoJSON specification also allows foreign members
|
|
57
|
+
* (https://tools.ietf.org/html/rfc7946#section-6.1)
|
|
58
|
+
* Developers should use "&" type in TypeScript or extend the interface
|
|
59
|
+
* to add these foreign members.
|
|
60
|
+
*/
|
|
61
|
+
interface GeoJsonObject {
|
|
62
|
+
// Don't include foreign members directly into this type def.
|
|
63
|
+
// in order to preserve type safety.
|
|
64
|
+
// [key: string]: any;
|
|
65
|
+
/**
|
|
66
|
+
* Specifies the type of GeoJSON object.
|
|
67
|
+
*/
|
|
68
|
+
type: GeoJsonTypes;
|
|
69
|
+
/**
|
|
70
|
+
* Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.
|
|
71
|
+
* The value of the bbox member is an array of length 2*n where n is the number of dimensions
|
|
72
|
+
* represented in the contained geometries, with all axes of the most southwesterly point
|
|
73
|
+
* followed by all axes of the more northeasterly point.
|
|
74
|
+
* The axes order of a bbox follows the axes order of geometries.
|
|
75
|
+
* https://tools.ietf.org/html/rfc7946#section-5
|
|
76
|
+
*/
|
|
77
|
+
bbox?: BBox | undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Union of GeoJSON objects.
|
|
81
|
+
*/
|
|
82
|
+
type GeoJSON<G extends Geometry | null = Geometry, P = GeoJsonProperties> = G | Feature<G, P> | FeatureCollection<G, P>;
|
|
83
|
+
/**
|
|
84
|
+
* Geometry object.
|
|
85
|
+
* https://tools.ietf.org/html/rfc7946#section-3
|
|
86
|
+
*/
|
|
87
|
+
type Geometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon | GeometryCollection;
|
|
88
|
+
/**
|
|
89
|
+
* Point geometry object.
|
|
90
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.2
|
|
91
|
+
*/
|
|
92
|
+
interface Point extends GeoJsonObject {
|
|
93
|
+
type: "Point";
|
|
94
|
+
coordinates: Position;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* MultiPoint geometry object.
|
|
98
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.3
|
|
99
|
+
*/
|
|
100
|
+
interface MultiPoint extends GeoJsonObject {
|
|
101
|
+
type: "MultiPoint";
|
|
102
|
+
coordinates: Position[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* LineString geometry object.
|
|
106
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.4
|
|
107
|
+
*/
|
|
108
|
+
interface LineString extends GeoJsonObject {
|
|
109
|
+
type: "LineString";
|
|
110
|
+
coordinates: Position[];
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* MultiLineString geometry object.
|
|
114
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.5
|
|
115
|
+
*/
|
|
116
|
+
interface MultiLineString extends GeoJsonObject {
|
|
117
|
+
type: "MultiLineString";
|
|
118
|
+
coordinates: Position[][];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Polygon geometry object.
|
|
122
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.6
|
|
123
|
+
*/
|
|
124
|
+
interface Polygon extends GeoJsonObject {
|
|
125
|
+
type: "Polygon";
|
|
126
|
+
coordinates: Position[][];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* MultiPolygon geometry object.
|
|
130
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.7
|
|
131
|
+
*/
|
|
132
|
+
interface MultiPolygon extends GeoJsonObject {
|
|
133
|
+
type: "MultiPolygon";
|
|
134
|
+
coordinates: Position[][][];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Geometry Collection
|
|
138
|
+
* https://tools.ietf.org/html/rfc7946#section-3.1.8
|
|
139
|
+
*/
|
|
140
|
+
interface GeometryCollection<G extends Geometry = Geometry> extends GeoJsonObject {
|
|
141
|
+
type: "GeometryCollection";
|
|
142
|
+
geometries: G[];
|
|
143
|
+
}
|
|
144
|
+
type GeoJsonProperties = {
|
|
145
|
+
[name: string]: any;
|
|
146
|
+
} | null;
|
|
147
|
+
/**
|
|
148
|
+
* A feature object which contains a geometry and associated properties.
|
|
149
|
+
* https://tools.ietf.org/html/rfc7946#section-3.2
|
|
150
|
+
*/
|
|
151
|
+
interface Feature<G extends Geometry | null = Geometry, P = GeoJsonProperties> extends GeoJsonObject {
|
|
152
|
+
type: "Feature";
|
|
153
|
+
/**
|
|
154
|
+
* The feature's geometry
|
|
155
|
+
*/
|
|
156
|
+
geometry: G;
|
|
157
|
+
/**
|
|
158
|
+
* A value that uniquely identifies this feature in a
|
|
159
|
+
* https://tools.ietf.org/html/rfc7946#section-3.2.
|
|
160
|
+
*/
|
|
161
|
+
id?: string | number | undefined;
|
|
162
|
+
/**
|
|
163
|
+
* Properties associated with this feature.
|
|
164
|
+
*/
|
|
165
|
+
properties: P;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* A collection of feature objects.
|
|
169
|
+
* https://tools.ietf.org/html/rfc7946#section-3.3
|
|
170
|
+
*/
|
|
171
|
+
interface FeatureCollection<G extends Geometry | null = Geometry, P = GeoJsonProperties> extends GeoJsonObject {
|
|
172
|
+
type: "FeatureCollection";
|
|
173
|
+
features: Array<Feature<G, P>>;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Celestial-body ellipsoids and the planetary basemaps that pair with them.
|
|
177
|
+
*
|
|
178
|
+
* GeoLibre is Earth-centric by construction: the default map is Web Mercator
|
|
179
|
+
* and all vector data is kept as lon/lat GeoJSON. This module does *not*
|
|
180
|
+
* change that (a map drawn in a body's own polar or simple-cylindrical CRS is
|
|
181
|
+
* `map-crs.ts`). What it adds is a per-project notion of *which body* the
|
|
182
|
+
* coordinates describe, so that:
|
|
183
|
+
*
|
|
184
|
+
* - distance / area / scale measurements use that body's radius instead of a
|
|
185
|
+
* hardcoded Earth radius, and
|
|
186
|
+
* - Moon / Mars basemaps (published in a Web-Mercator tiling scheme) can be
|
|
187
|
+
* selected like any other basemap.
|
|
188
|
+
*
|
|
189
|
+
* The active ellipsoid is a lightweight module-level singleton kept in sync with
|
|
190
|
+
* the project's map preferences (see the store's `setPreferences`). Measurement
|
|
191
|
+
* helpers read it lazily at call time, so callers in other packages don't need
|
|
192
|
+
* the value threaded through their signatures — a deliberate prototype-friendly
|
|
193
|
+
* shortcut over a full CRS/context refactor.
|
|
194
|
+
*/
|
|
195
|
+
/** A biaxial (rotational) ellipsoid describing a celestial body. */
|
|
196
|
+
interface Ellipsoid {
|
|
197
|
+
/** Stable id persisted in the project (`map.ellipsoidId`). */
|
|
198
|
+
id: string;
|
|
199
|
+
/** Human-readable name shown in the UI. */
|
|
200
|
+
name: string;
|
|
201
|
+
/** Equatorial (semi-major) radius in metres — the "web mercator" radius. */
|
|
202
|
+
semiMajorAxisMeters: number;
|
|
203
|
+
/**
|
|
204
|
+
* Inverse flattening `1/f`. `0` denotes a perfect sphere (Moon), in which case
|
|
205
|
+
* the polar radius equals {@link semiMajorAxisMeters}.
|
|
206
|
+
*/
|
|
207
|
+
inverseFlattening: number;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Built-in ellipsoids. Earth is WGS 84; every other body uses IAU-adopted
|
|
211
|
+
* figures. Only Earth and Mars are appreciably oblate; the rest are modelled as
|
|
212
|
+
* spheres (`inverseFlattening: 0`), which is how the IAU/USGS simple-cylindrical
|
|
213
|
+
* products treat them and is well within the accuracy MapLibre's unit-sphere
|
|
214
|
+
* rendering can represent anyway.
|
|
215
|
+
*/
|
|
216
|
+
declare const ELLIPSOIDS: readonly [{
|
|
217
|
+
readonly id: "earth";
|
|
218
|
+
readonly name: "Earth (WGS 84)";
|
|
219
|
+
readonly semiMajorAxisMeters: 6378137;
|
|
220
|
+
readonly inverseFlattening: 298.257223563;
|
|
221
|
+
}, {
|
|
222
|
+
readonly id: "moon";
|
|
223
|
+
readonly name: "Moon";
|
|
224
|
+
readonly semiMajorAxisMeters: 1737400;
|
|
225
|
+
readonly inverseFlattening: 0;
|
|
226
|
+
}, {
|
|
227
|
+
readonly id: "mars";
|
|
228
|
+
readonly name: "Mars (IAU 2000)";
|
|
229
|
+
readonly semiMajorAxisMeters: 3396190;
|
|
230
|
+
readonly inverseFlattening: 169.894447;
|
|
231
|
+
}, {
|
|
232
|
+
readonly id: "mercury";
|
|
233
|
+
readonly name: "Mercury";
|
|
234
|
+
readonly semiMajorAxisMeters: 2439400;
|
|
235
|
+
readonly inverseFlattening: 0;
|
|
236
|
+
}, {
|
|
237
|
+
readonly id: "venus";
|
|
238
|
+
readonly name: "Venus";
|
|
239
|
+
readonly semiMajorAxisMeters: 6051800;
|
|
240
|
+
readonly inverseFlattening: 0;
|
|
241
|
+
}, {
|
|
242
|
+
readonly id: "io";
|
|
243
|
+
readonly name: "Io";
|
|
244
|
+
readonly semiMajorAxisMeters: 1821600;
|
|
245
|
+
readonly inverseFlattening: 0;
|
|
246
|
+
}, {
|
|
247
|
+
readonly id: "europa";
|
|
248
|
+
readonly name: "Europa";
|
|
249
|
+
readonly semiMajorAxisMeters: 1560800;
|
|
250
|
+
readonly inverseFlattening: 0;
|
|
251
|
+
}, {
|
|
252
|
+
readonly id: "ganymede";
|
|
253
|
+
readonly name: "Ganymede";
|
|
254
|
+
readonly semiMajorAxisMeters: 2631200;
|
|
255
|
+
readonly inverseFlattening: 0;
|
|
256
|
+
}, {
|
|
257
|
+
readonly id: "callisto";
|
|
258
|
+
readonly name: "Callisto";
|
|
259
|
+
readonly semiMajorAxisMeters: 2410300;
|
|
260
|
+
readonly inverseFlattening: 0;
|
|
261
|
+
}, {
|
|
262
|
+
readonly id: "titan";
|
|
263
|
+
readonly name: "Titan";
|
|
264
|
+
readonly semiMajorAxisMeters: 2574730;
|
|
265
|
+
readonly inverseFlattening: 0;
|
|
266
|
+
}, {
|
|
267
|
+
readonly id: "pluto";
|
|
268
|
+
readonly name: "Pluto";
|
|
269
|
+
readonly semiMajorAxisMeters: 1188300;
|
|
270
|
+
readonly inverseFlattening: 0;
|
|
271
|
+
}, {
|
|
272
|
+
readonly id: "charon";
|
|
273
|
+
readonly name: "Charon";
|
|
274
|
+
readonly semiMajorAxisMeters: 606000;
|
|
275
|
+
readonly inverseFlattening: 0;
|
|
276
|
+
}];
|
|
277
|
+
type EllipsoidId = (typeof ELLIPSOIDS)[number]["id"];
|
|
278
|
+
declare const DEFAULT_ELLIPSOID_ID: EllipsoidId;
|
|
279
|
+
/** Look an ellipsoid up by id, falling back to Earth for unknown ids. */
|
|
280
|
+
declare function getEllipsoid(id: string | undefined): Ellipsoid;
|
|
281
|
+
/**
|
|
282
|
+
* Mean radius `R = (2a + b) / 3` in metres, where `b` is the polar radius
|
|
283
|
+
* derived from the inverse flattening. This is the radius used for spherical
|
|
284
|
+
* (haversine) distance and area math.
|
|
285
|
+
*/
|
|
286
|
+
declare function meanRadiusMeters(ellipsoid: Ellipsoid): number;
|
|
287
|
+
/** Earth's mean radius in metres — the radius Turf.js and MapLibre bake in. */
|
|
288
|
+
declare const EARTH_MEAN_RADIUS_METERS: number;
|
|
289
|
+
/**
|
|
290
|
+
* Point the measurement helpers at a body. Unknown ids fall back to Earth so a
|
|
291
|
+
* malformed project can never break measurements. Safe to call on every
|
|
292
|
+
* preferences change; it is a cheap assignment.
|
|
293
|
+
*/
|
|
294
|
+
declare function setActiveEllipsoidId(id: string | undefined): void;
|
|
295
|
+
declare function getActiveEllipsoid(): Ellipsoid;
|
|
296
|
+
/** Mean radius (metres) of the active body — for haversine distance/area. */
|
|
297
|
+
declare function getActiveMeanRadiusMeters(): number;
|
|
298
|
+
/** Semi-major axis (metres) of the active body — for its Web-Mercator scale. */
|
|
299
|
+
declare function getActiveSemiMajorAxisMeters(): number;
|
|
300
|
+
/**
|
|
301
|
+
* The active body's mean radius as a fraction of Earth's — `R_body / R_earth`,
|
|
302
|
+
* and exactly `1` on Earth.
|
|
303
|
+
*
|
|
304
|
+
* Everything GeoLibre measures ultimately comes from lon/lat *angles*, and the
|
|
305
|
+
* only thing that turns an angle into a ground distance is the radius it is
|
|
306
|
+
* multiplied by. Turf.js hardcodes Earth's, with no per-call override (that is
|
|
307
|
+
* the "Turf is Earth-locked" half of GeoLibre#1128), so rather than patch or
|
|
308
|
+
* replace Turf we post-scale what it returns and pre-scale what we hand it. The
|
|
309
|
+
* result is exact for a sphere, which is how every non-Earth body GeoLibre
|
|
310
|
+
* offers is modelled anyway, and within Mars' 0.6% flattening at worst.
|
|
311
|
+
*
|
|
312
|
+
* Suggested by @thareUSGS (USGS Astrogeology) on GeoLibre#1128 as the practical
|
|
313
|
+
* workaround planetary web maps have long used on Earth-locked engines.
|
|
314
|
+
*/
|
|
315
|
+
declare function getActiveBodyRadiusRatio(): number;
|
|
316
|
+
/**
|
|
317
|
+
* Convert a length Turf.js measured on Earth into the active body's true ground
|
|
318
|
+
* length. A no-op on Earth.
|
|
319
|
+
*
|
|
320
|
+
* Use on anything Turf *returns* — a distance, a length, a perimeter.
|
|
321
|
+
*
|
|
322
|
+
* The correction is a dimensionless ratio, so it is unit-agnostic: pass the
|
|
323
|
+
* length in whatever unit Turf gave it back (metres, kilometres, miles) and the
|
|
324
|
+
* result is in that same unit. There is no hidden unit conversion here.
|
|
325
|
+
*/
|
|
326
|
+
declare function earthLengthToBody(length: number): number;
|
|
327
|
+
/**
|
|
328
|
+
* Convert a true ground length on the active body into the Earth-equivalent
|
|
329
|
+
* length to hand Turf.js. A no-op on Earth.
|
|
330
|
+
*
|
|
331
|
+
* Use on anything passed *into* Turf as a distance — a buffer width, a circle
|
|
332
|
+
* or sector radius, a search threshold — so the resulting geometry spans that
|
|
333
|
+
* distance on this body rather than on Earth.
|
|
334
|
+
*
|
|
335
|
+
* Unit-agnostic like {@link earthLengthToBody}: pass the length in whatever
|
|
336
|
+
* unit you are about to hand Turf alongside it, and the result is in that unit.
|
|
337
|
+
*/
|
|
338
|
+
declare function bodyLengthToEarth(length: number): number;
|
|
339
|
+
/**
|
|
340
|
+
* Convert an area Turf.js measured on Earth into the active body's true ground
|
|
341
|
+
* area. A no-op on Earth.
|
|
342
|
+
*
|
|
343
|
+
* Areas scale with the *square* of the radius ratio, so this is not the same
|
|
344
|
+
* correction as {@link earthLengthToBody}. Unit-agnostic in the same way, for
|
|
345
|
+
* whatever squared unit the area is expressed in.
|
|
346
|
+
*/
|
|
347
|
+
declare function earthAreaToBody(area: number): number;
|
|
348
|
+
/**
|
|
349
|
+
* A raster basemap for a celestial body — the Moon and Mars mosaics, plus the
|
|
350
|
+
* Earth satellite imagery the planet switcher pairs with Earth. The tiles are
|
|
351
|
+
* XYZ (or TMS, see {@link scheme}) images in that body's Web-Mercator scheme, so
|
|
352
|
+
* MapLibre renders them directly. The `styleUrl` is a `geolibre://basemap/<id>`
|
|
353
|
+
* sentinel; the map controller expands it into a raster style at apply time (it
|
|
354
|
+
* is not a fetchable URL).
|
|
355
|
+
*/
|
|
356
|
+
interface PlanetaryBasemap {
|
|
357
|
+
id: string;
|
|
358
|
+
name: string;
|
|
359
|
+
/** Sentinel stored as the basemap style URL. */
|
|
360
|
+
styleUrl: string;
|
|
361
|
+
/** XYZ (or TMS, see {@link scheme}) tile template. */
|
|
362
|
+
tileUrl: string;
|
|
363
|
+
/**
|
|
364
|
+
* Tile row ordering. OpenPlanetaryMap's single-layer raster mosaics (the S3
|
|
365
|
+
* datasets) are published as **TMS** (tile origin bottom-left, Y flipped),
|
|
366
|
+
* whereas the CARTO `opmbuilder` named maps are standard **XYZ**. Omit for
|
|
367
|
+
* XYZ; MapLibre defaults to `"xyz"` when `scheme` is absent.
|
|
368
|
+
*/
|
|
369
|
+
scheme?: "tms";
|
|
370
|
+
/** Max native zoom of the source (MapLibre overzooms beyond this). */
|
|
371
|
+
maxZoom: number;
|
|
372
|
+
/** Attribution shown on the map. */
|
|
373
|
+
attribution: string;
|
|
374
|
+
/** The body this basemap depicts, so selecting it can set the ellipsoid. */
|
|
375
|
+
ellipsoidId: EllipsoidId;
|
|
376
|
+
}
|
|
377
|
+
declare const PLANETARY_BASEMAP_SENTINEL_PREFIX = "geolibre://basemap/";
|
|
378
|
+
declare const PLANETARY_BASEMAPS: readonly PlanetaryBasemap[];
|
|
379
|
+
/**
|
|
380
|
+
* The section a planetary basemap is grouped under in the New Project and
|
|
381
|
+
* Change Basemap pickers. The Moon and Mars keep dedicated sections (they are
|
|
382
|
+
* the most-used bodies and each has several mosaics); every other body is
|
|
383
|
+
* collapsed into a single "other" section so the picker isn't a wall of
|
|
384
|
+
* one-item headings.
|
|
385
|
+
*/
|
|
386
|
+
type PlanetaryBasemapSectionId = "moon" | "mars" | "other";
|
|
387
|
+
/** A picker section paired with the planetary basemaps it lists. */
|
|
388
|
+
interface PlanetaryBasemapGroup {
|
|
389
|
+
id: PlanetaryBasemapSectionId;
|
|
390
|
+
basemaps: readonly PlanetaryBasemap[];
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* {@link PLANETARY_BASEMAPS} grouped for the pickers: one section each for the
|
|
394
|
+
* Moon and Mars, then a single "Other celestial bodies" section for the rest,
|
|
395
|
+
* in {@link PLANETARY_BASEMAPS} order (grouped by body). Empty sections are
|
|
396
|
+
* dropped.
|
|
397
|
+
*/
|
|
398
|
+
declare const PLANETARY_BASEMAP_GROUPS: readonly PlanetaryBasemapGroup[];
|
|
399
|
+
/** Resolve a `geolibre://basemap/<id>` sentinel to its planetary basemap. */
|
|
400
|
+
declare function getPlanetaryBasemapByStyleUrl(styleUrl: string | undefined): PlanetaryBasemap | undefined;
|
|
401
|
+
/** Look a planetary basemap up by its stable id. */
|
|
402
|
+
declare function getPlanetaryBasemapById(id: string): PlanetaryBasemap | undefined;
|
|
403
|
+
/**
|
|
404
|
+
* The celestial bodies offered by the Layers-panel planet switcher, in menu
|
|
405
|
+
* order (like Google Earth's planet dropdown). Each body is paired with the
|
|
406
|
+
* basemap the switcher applies for it — USGS satellite imagery for Earth, the
|
|
407
|
+
* OpenPlanetaryMap Hillshaded Albedo mosaic for the Moon, and the OpenPlanetaryMap
|
|
408
|
+
* Viking mosaic for Mars.
|
|
409
|
+
*/
|
|
410
|
+
declare const PLANET_SWITCHER_OPTIONS: readonly [{
|
|
411
|
+
readonly ellipsoidId: "earth";
|
|
412
|
+
readonly basemapId: "earth-usgs-imagery";
|
|
413
|
+
}, {
|
|
414
|
+
readonly ellipsoidId: "moon";
|
|
415
|
+
readonly basemapId: "moon-hillshaded-albedo";
|
|
416
|
+
}, {
|
|
417
|
+
readonly ellipsoidId: "mars";
|
|
418
|
+
readonly basemapId: "mars-viking-mdim21";
|
|
419
|
+
}, {
|
|
420
|
+
readonly ellipsoidId: "callisto";
|
|
421
|
+
readonly basemapId: "callisto-galileo-voyager";
|
|
422
|
+
}, {
|
|
423
|
+
readonly ellipsoidId: "charon";
|
|
424
|
+
readonly basemapId: "charon-mosaic";
|
|
425
|
+
}, {
|
|
426
|
+
readonly ellipsoidId: "europa";
|
|
427
|
+
readonly basemapId: "europa-galileo-voyager";
|
|
428
|
+
}, {
|
|
429
|
+
readonly ellipsoidId: "ganymede";
|
|
430
|
+
readonly basemapId: "ganymede-galileo-voyager";
|
|
431
|
+
}, {
|
|
432
|
+
readonly ellipsoidId: "io";
|
|
433
|
+
readonly basemapId: "io-galileo-color";
|
|
434
|
+
}, {
|
|
435
|
+
readonly ellipsoidId: "mercury";
|
|
436
|
+
readonly basemapId: "mercury-messenger-color";
|
|
437
|
+
}, {
|
|
438
|
+
readonly ellipsoidId: "pluto";
|
|
439
|
+
readonly basemapId: "pluto-mosaic";
|
|
440
|
+
}, {
|
|
441
|
+
readonly ellipsoidId: "titan";
|
|
442
|
+
readonly basemapId: "titan-cassini";
|
|
443
|
+
}, {
|
|
444
|
+
readonly ellipsoidId: "venus";
|
|
445
|
+
readonly basemapId: "venus-magellan-color";
|
|
446
|
+
}];
|
|
447
|
+
export { LineString as A, meanRadiusMeters as C, GeoJSON as D, FeatureCollection as E, Position as F, MultiPolygon as M, Point as N, GeoJsonProperties as O, Polygon as P, getPlanetaryBasemapByStyleUrl as S, Feature as T, getActiveEllipsoid as _, EllipsoidId as a, getEllipsoid as b, PLANETARY_BASEMAP_SENTINEL_PREFIX as c, PlanetaryBasemapGroup as d, PlanetaryBasemapSectionId as f, getActiveBodyRadiusRatio as g, earthLengthToBody as h, Ellipsoid as i, MultiLineString as j, Geometry as k, PLANET_SWITCHER_OPTIONS as l, earthAreaToBody as m, EARTH_MEAN_RADIUS_METERS as n, PLANETARY_BASEMAPS as o, bodyLengthToEarth as p, ELLIPSOIDS as r, PLANETARY_BASEMAP_GROUPS as s, DEFAULT_ELLIPSOID_ID as t, PlanetaryBasemap as u, getActiveMeanRadiusMeters as v, setActiveEllipsoidId as w, getPlanetaryBasemapById as x, getActiveSemiMajorAxisMeters as y };
|
|
448
|
+
//# sourceMappingURL=ellipsoids-BdHOMRmm.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ellipsoids-BdHOMRmm.d.mts","names":[],"sources":["../../../node_modules/@types/geojson/index.d.ts","../src/ellipsoids.ts"],"ignoreList":[0],"mappings":";;;;KAeY,eAAe;;;;;KAMf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2CA;;;;;;;;;UAUK;;;;;;;EAOb,MAAM;;;;;;;;;EASN,OAAO;;;;;KAMC,QAAQ,UAAU,kBAAkB,UAAU,IAAI,qBACxD,IACA,QAAQ,GAAG,KACX,kBAAkB,GAAG;;;;;KAMf,WAAW,QAAQ,aAAa,aAAa,kBAAkB,UAAU,eAAe;;;;;UAOnF,cAAc;EAC3B;EACA,aAAa;;;;;;UAOA,mBAAmB;EAChC;EACA,aAAa;;;;;;UAOA,mBAAmB;EAChC;EACA,aAAa;;;;;;UAOA,wBAAwB;EACrC;EACA,aAAa;;;;;;UAOA,gBAAgB;EAC7B;EACA,aAAa;;;;;;UAOA,qBAAqB;EAClC;EACA,aAAa;;;;;;UAOA,mBAAmB,UAAU,WAAW,kBAAkB;EACvE;EACA,YAAY;;KAGJ;GAAuB;;;;;;UAMlB,QAAQ,UAAU,kBAAkB,UAAU,IAAI,2BAA2B;EAC1F;;;;EAIA,UAAU;;;;;EAKV;;;;EAIA,YAAY;;;;;;UAOC,kBAAkB,UAAU,kBAAkB,UAAU,IAAI,2BAA2B;EACpG;EACA,UAAU,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;UClLd;;EAEf;;EAEA;;EAEA;;;;;EAKA;;;;;;;;;cAUW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2ED,sBAAsB;cAErB,sBAAsB;;iBAGnB,aAAa,yBAAyB;;;;;;iBAWtC,iBAAiB,WAAW;;cAS/B;;;;;;iBAWG,qBAAqB;iBAIrB,sBAAsB;;iBAKtB;;iBAKA;;;;;;;;;;;;;;;;iBAqBA;;;;;;;;;;;iBAcA,kBAAkB;;;;;;;;;;;;iBAelB,kBAAkB;;;;;;;;;iBAYlB,gBAAgB;;;;;;;;;UAef;EACf;EACA;;EAEA;;EAEA;;;;;;;EAOA;;EAEA;;EAEA;;EAEA,aAAa;;cAGF;cA0CA,6BAA6B;;;;;;;;KAwO9B;;UAGK;EACf,IAAI;EACJ,mBAAmB;;;;;;;;cAcR,mCAAmC;;iBAyChC,8BACd,+BACC;;iBAUa,wBAAwB,aAAa;;;;;;;;cAWxC"}
|