@geolibre/core 3.6.1 → 3.8.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 +822 -18
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4976 -3886
- package/dist/index.mjs.map +1 -1
- package/dist/{project-diff-BJDslj2U.d.mts → project-diff-BksHN-qY.d.mts} +194 -451
- package/dist/project-diff-BksHN-qY.d.mts.map +1 -0
- package/dist/{project-diff-RBRpSza4.mjs → project-diff-DJkOd8ff.mjs} +1964 -687
- package/dist/project-diff-DJkOd8ff.mjs.map +1 -0
- package/dist/worker-safe.d.mts +2 -1
- package/dist/worker-safe.mjs +3 -1
- package/package.json +10 -5
- package/dist/project-diff-BJDslj2U.d.mts.map +0 -1
- package/dist/project-diff-RBRpSza4.mjs.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { A as LineString, D as GeoJSON$1, E as FeatureCollection, O as GeoJsonProperties, T as Feature, j as MultiLineString, k as Geometry } from "./ellipsoids-BdHOMRmm.mjs";
|
|
1
2
|
/**
|
|
2
3
|
* Maps the project's basemap onto imagery the Cesium globe can render.
|
|
3
4
|
*
|
|
@@ -200,180 +201,6 @@ declare function sameCesiumImagery(a: CesiumBasemapImagery, b: CesiumBasemapImag
|
|
|
200
201
|
* @returns What the globe should draw beneath the data layers.
|
|
201
202
|
*/
|
|
202
203
|
declare function basemapToCesiumImagery(styleUrl: string | undefined, cesiumBasemap?: CesiumBasemapId): CesiumBasemapImagery;
|
|
203
|
-
/**
|
|
204
|
-
* The value values for the "type" property of GeoJSON Objects.
|
|
205
|
-
* https://tools.ietf.org/html/rfc7946#section-1.4
|
|
206
|
-
*/
|
|
207
|
-
type GeoJsonTypes = GeoJSON$1["type"];
|
|
208
|
-
/**
|
|
209
|
-
* Bounding box
|
|
210
|
-
* https://tools.ietf.org/html/rfc7946#section-5
|
|
211
|
-
*/
|
|
212
|
-
type BBox = [number, number, number, number] | [number, number, number, number, number, number];
|
|
213
|
-
/**
|
|
214
|
-
* A Position is an array of coordinates.
|
|
215
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.1
|
|
216
|
-
* Array should contain between two and three elements.
|
|
217
|
-
* The previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),
|
|
218
|
-
* but the current specification only allows X, Y, and (optionally) Z to be defined.
|
|
219
|
-
*
|
|
220
|
-
* Note: the type will not be narrowed down to `[number, number] | [number, number, number]` due to
|
|
221
|
-
* marginal benefits and the large impact of breaking change.
|
|
222
|
-
*
|
|
223
|
-
* See previous discussions on the type narrowing:
|
|
224
|
-
* - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/pull/21590|Nov 2017}
|
|
225
|
-
* - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/67773|Dec 2023}
|
|
226
|
-
* - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/71441| Dec 2024}
|
|
227
|
-
*
|
|
228
|
-
* One can use a
|
|
229
|
-
* {@link https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates|user-defined type guard that returns a type predicate}
|
|
230
|
-
* to determine if a position is a 2D or 3D position.
|
|
231
|
-
*
|
|
232
|
-
* @example
|
|
233
|
-
* import type { Position } from 'geojson';
|
|
234
|
-
*
|
|
235
|
-
* type StrictPosition = [x: number, y: number] | [x: number, y: number, z: number]
|
|
236
|
-
*
|
|
237
|
-
* function isStrictPosition(position: Position): position is StrictPosition {
|
|
238
|
-
* return position.length === 2 || position.length === 3
|
|
239
|
-
* };
|
|
240
|
-
*
|
|
241
|
-
* let position: Position = [-116.91, 45.54];
|
|
242
|
-
*
|
|
243
|
-
* let x: number;
|
|
244
|
-
* let y: number;
|
|
245
|
-
* let z: number | undefined;
|
|
246
|
-
*
|
|
247
|
-
* if (isStrictPosition(position)) {
|
|
248
|
-
* // `tsc` would throw an error if we tried to destructure a fourth parameter
|
|
249
|
-
* [x, y, z] = position;
|
|
250
|
-
* } else {
|
|
251
|
-
* throw new TypeError("Position is not a 2D or 3D point");
|
|
252
|
-
* }
|
|
253
|
-
*/
|
|
254
|
-
type Position = number[];
|
|
255
|
-
/**
|
|
256
|
-
* The base GeoJSON object.
|
|
257
|
-
* https://tools.ietf.org/html/rfc7946#section-3
|
|
258
|
-
* The GeoJSON specification also allows foreign members
|
|
259
|
-
* (https://tools.ietf.org/html/rfc7946#section-6.1)
|
|
260
|
-
* Developers should use "&" type in TypeScript or extend the interface
|
|
261
|
-
* to add these foreign members.
|
|
262
|
-
*/
|
|
263
|
-
interface GeoJsonObject {
|
|
264
|
-
// Don't include foreign members directly into this type def.
|
|
265
|
-
// in order to preserve type safety.
|
|
266
|
-
// [key: string]: any;
|
|
267
|
-
/**
|
|
268
|
-
* Specifies the type of GeoJSON object.
|
|
269
|
-
*/
|
|
270
|
-
type: GeoJsonTypes;
|
|
271
|
-
/**
|
|
272
|
-
* Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.
|
|
273
|
-
* The value of the bbox member is an array of length 2*n where n is the number of dimensions
|
|
274
|
-
* represented in the contained geometries, with all axes of the most southwesterly point
|
|
275
|
-
* followed by all axes of the more northeasterly point.
|
|
276
|
-
* The axes order of a bbox follows the axes order of geometries.
|
|
277
|
-
* https://tools.ietf.org/html/rfc7946#section-5
|
|
278
|
-
*/
|
|
279
|
-
bbox?: BBox | undefined;
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Union of GeoJSON objects.
|
|
283
|
-
*/
|
|
284
|
-
type GeoJSON$1<G extends Geometry | null = Geometry, P = GeoJsonProperties> = G | Feature<G, P> | FeatureCollection<G, P>;
|
|
285
|
-
/**
|
|
286
|
-
* Geometry object.
|
|
287
|
-
* https://tools.ietf.org/html/rfc7946#section-3
|
|
288
|
-
*/
|
|
289
|
-
type Geometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon | GeometryCollection;
|
|
290
|
-
/**
|
|
291
|
-
* Point geometry object.
|
|
292
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.2
|
|
293
|
-
*/
|
|
294
|
-
interface Point extends GeoJsonObject {
|
|
295
|
-
type: "Point";
|
|
296
|
-
coordinates: Position;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* MultiPoint geometry object.
|
|
300
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.3
|
|
301
|
-
*/
|
|
302
|
-
interface MultiPoint extends GeoJsonObject {
|
|
303
|
-
type: "MultiPoint";
|
|
304
|
-
coordinates: Position[];
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* LineString geometry object.
|
|
308
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.4
|
|
309
|
-
*/
|
|
310
|
-
interface LineString extends GeoJsonObject {
|
|
311
|
-
type: "LineString";
|
|
312
|
-
coordinates: Position[];
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* MultiLineString geometry object.
|
|
316
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.5
|
|
317
|
-
*/
|
|
318
|
-
interface MultiLineString extends GeoJsonObject {
|
|
319
|
-
type: "MultiLineString";
|
|
320
|
-
coordinates: Position[][];
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Polygon geometry object.
|
|
324
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.6
|
|
325
|
-
*/
|
|
326
|
-
interface Polygon extends GeoJsonObject {
|
|
327
|
-
type: "Polygon";
|
|
328
|
-
coordinates: Position[][];
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* MultiPolygon geometry object.
|
|
332
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.7
|
|
333
|
-
*/
|
|
334
|
-
interface MultiPolygon extends GeoJsonObject {
|
|
335
|
-
type: "MultiPolygon";
|
|
336
|
-
coordinates: Position[][][];
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Geometry Collection
|
|
340
|
-
* https://tools.ietf.org/html/rfc7946#section-3.1.8
|
|
341
|
-
*/
|
|
342
|
-
interface GeometryCollection<G extends Geometry = Geometry> extends GeoJsonObject {
|
|
343
|
-
type: "GeometryCollection";
|
|
344
|
-
geometries: G[];
|
|
345
|
-
}
|
|
346
|
-
type GeoJsonProperties = {
|
|
347
|
-
[name: string]: any;
|
|
348
|
-
} | null;
|
|
349
|
-
/**
|
|
350
|
-
* A feature object which contains a geometry and associated properties.
|
|
351
|
-
* https://tools.ietf.org/html/rfc7946#section-3.2
|
|
352
|
-
*/
|
|
353
|
-
interface Feature<G extends Geometry | null = Geometry, P = GeoJsonProperties> extends GeoJsonObject {
|
|
354
|
-
type: "Feature";
|
|
355
|
-
/**
|
|
356
|
-
* The feature's geometry
|
|
357
|
-
*/
|
|
358
|
-
geometry: G;
|
|
359
|
-
/**
|
|
360
|
-
* A value that uniquely identifies this feature in a
|
|
361
|
-
* https://tools.ietf.org/html/rfc7946#section-3.2.
|
|
362
|
-
*/
|
|
363
|
-
id?: string | number | undefined;
|
|
364
|
-
/**
|
|
365
|
-
* Properties associated with this feature.
|
|
366
|
-
*/
|
|
367
|
-
properties: P;
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* A collection of feature objects.
|
|
371
|
-
* https://tools.ietf.org/html/rfc7946#section-3.3
|
|
372
|
-
*/
|
|
373
|
-
interface FeatureCollection<G extends Geometry | null = Geometry, P = GeoJsonProperties> extends GeoJsonObject {
|
|
374
|
-
type: "FeatureCollection";
|
|
375
|
-
features: Array<Feature<G, P>>;
|
|
376
|
-
}
|
|
377
204
|
/** Supported GeoArrow geometry types. */
|
|
378
205
|
type GeoArrowGeometryType = "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon";
|
|
379
206
|
/**
|
|
@@ -480,6 +307,10 @@ interface PrintLayoutConfig {
|
|
|
480
307
|
customHeight: number;
|
|
481
308
|
customUnit: "mm" | "px";
|
|
482
309
|
pageMargin: "normal" | "narrow" | "none";
|
|
310
|
+
/** Colour of the page around the map: title block, footer row and margins. */
|
|
311
|
+
pageBackground: string;
|
|
312
|
+
/** Look of the panels over the map: white or dark. */
|
|
313
|
+
panelTheme: "light" | "dark";
|
|
483
314
|
showPageBorder: boolean;
|
|
484
315
|
pageBorderColor: string;
|
|
485
316
|
pageBorderWidth: number;
|
|
@@ -781,6 +612,20 @@ type GeometryGeneratorType = "none" | "centroid" | "bounding-box" | "convex-hull
|
|
|
781
612
|
* scale (zoom). See {@link LayerStyle.strokeWidthUnit}.
|
|
782
613
|
*/
|
|
783
614
|
type StrokeWidthUnit = "pixels" | "meters";
|
|
615
|
+
/**
|
|
616
|
+
* The named dash patterns the Style panel offers for {@link LayerStyle.strokeDash},
|
|
617
|
+
* in MapLibre `line-dasharray` units (multiples of the line width). `solid` is
|
|
618
|
+
* the empty pattern. QGIS pen styles map onto the same names.
|
|
619
|
+
*/
|
|
620
|
+
declare const STROKE_DASH_PRESETS: {
|
|
621
|
+
readonly solid: readonly [];
|
|
622
|
+
readonly dashed: readonly [4, 2];
|
|
623
|
+
readonly dotted: readonly [1, 2];
|
|
624
|
+
readonly "dash-dot": readonly [4, 2, 1, 2];
|
|
625
|
+
readonly "long-dash": readonly [8, 3];
|
|
626
|
+
};
|
|
627
|
+
/** A named entry of {@link STROKE_DASH_PRESETS}. */
|
|
628
|
+
type StrokeDashPreset = keyof typeof STROKE_DASH_PRESETS;
|
|
784
629
|
/**
|
|
785
630
|
* The chart drawn on top of each feature by the diagram renderer (QGIS-style
|
|
786
631
|
* diagram symbology), or `"none"` when diagrams are off. Diagrams visualize
|
|
@@ -978,6 +823,21 @@ interface LayerStyle {
|
|
|
978
823
|
* point/circle outlines remain pixel-based.
|
|
979
824
|
*/
|
|
980
825
|
strokeWidthUnit: StrokeWidthUnit;
|
|
826
|
+
/**
|
|
827
|
+
* Opacity (0..1) of lines, polygon outlines and point outlines, applied on
|
|
828
|
+
* top of the layer opacity, so a translucent outline can sit over an opaque
|
|
829
|
+
* fill. A per-feature simplestyle `stroke-opacity` replaces it for features
|
|
830
|
+
* that carry one, as `fill-opacity` replaces {@link fillOpacity}.
|
|
831
|
+
*/
|
|
832
|
+
strokeOpacity: number;
|
|
833
|
+
/**
|
|
834
|
+
* Dash pattern of lines and polygon outlines: alternating dash and gap
|
|
835
|
+
* lengths in multiples of the stroke width, as MapLibre's `line-dasharray`
|
|
836
|
+
* takes them. Empty draws a solid line. See {@link STROKE_DASH_PRESETS}.
|
|
837
|
+
*/
|
|
838
|
+
strokeDash: number[];
|
|
839
|
+
/** Blur in pixels applied to lines and polygon outlines; 0 keeps them sharp. */
|
|
840
|
+
strokeBlur: number;
|
|
981
841
|
fillOpacity: number;
|
|
982
842
|
circleRadius: number;
|
|
983
843
|
textColor: string;
|
|
@@ -991,9 +851,29 @@ interface LayerStyle {
|
|
|
991
851
|
extrusionHeightProperty: string;
|
|
992
852
|
extrusionHeightScale: number;
|
|
993
853
|
extrusionBase: number;
|
|
854
|
+
/**
|
|
855
|
+
* Attribute whose value, times {@link extrusionBaseScale}, is added to
|
|
856
|
+
* {@link extrusionBase} per feature, so one layer can stack floors from a
|
|
857
|
+
* `level` field. Empty keeps the flat base. Like the height, the base is an
|
|
858
|
+
* altitude in metres, not a thickness: the roof still comes from the height.
|
|
859
|
+
*/
|
|
860
|
+
extrusionBaseProperty: string;
|
|
861
|
+
/** Multiplier for {@link extrusionBaseProperty} (e.g. metres per floor). */
|
|
862
|
+
extrusionBaseScale: number;
|
|
863
|
+
/**
|
|
864
|
+
* When above 0, every feature is this many metres tall on top of its base
|
|
865
|
+
* (roof = base + floor height), and the height property and expression are
|
|
866
|
+
* ignored. 0 keeps the height as the roof's altitude.
|
|
867
|
+
*/
|
|
868
|
+
extrusionFloorHeight: number;
|
|
994
869
|
extrusionAdvancedStyleEnabled: boolean;
|
|
995
870
|
extrusionColorExpression: string;
|
|
996
871
|
extrusionHeightExpression: string;
|
|
872
|
+
/**
|
|
873
|
+
* Advanced-mode MapLibre expression for the extrusion base, as JSON. When it
|
|
874
|
+
* parses it wins over {@link extrusionBase} and {@link extrusionBaseProperty}.
|
|
875
|
+
*/
|
|
876
|
+
extrusionBaseExpression: string;
|
|
997
877
|
/**
|
|
998
878
|
* When true, a vector layer whose coordinates carry Z values (e.g. a GPX
|
|
999
879
|
* track with elevations) renders in true 3D through the shared deck.gl
|
|
@@ -1259,7 +1139,34 @@ interface LayerJoin {
|
|
|
1259
1139
|
stats?: LayerJoinStats;
|
|
1260
1140
|
}
|
|
1261
1141
|
/** Edit-widget kinds the Attribute Form designer can assign to a field. */
|
|
1262
|
-
type AttributeFormWidget = "text" | "number" | "range" | "checkbox" | "date" | "valueMap";
|
|
1142
|
+
type AttributeFormWidget = "text" | "number" | "range" | "checkbox" | "date" | "valueMap" | "attachment";
|
|
1143
|
+
/**
|
|
1144
|
+
* Where a dropdown reads its entries from when they are another layer's rows
|
|
1145
|
+
* (a QGIS Value Relation or Relation Reference). Resolved against that
|
|
1146
|
+
* layer's current features each time a form is shown, so a record added to
|
|
1147
|
+
* the referenced layer is selectable at once.
|
|
1148
|
+
*/
|
|
1149
|
+
interface AttributeFormValueRelation {
|
|
1150
|
+
/** Id of the referenced layer in the same project. */
|
|
1151
|
+
layerId: string;
|
|
1152
|
+
/** Property of the referenced features that is stored on this field. */
|
|
1153
|
+
keyField: string;
|
|
1154
|
+
/** Property shown as the entry's label. */
|
|
1155
|
+
labelField?: string;
|
|
1156
|
+
/**
|
|
1157
|
+
* QGIS expression evaluated per referenced feature for the label, used when
|
|
1158
|
+
* there is no {@link labelField} (a Relation Reference shows the referenced
|
|
1159
|
+
* layer's display expression).
|
|
1160
|
+
*/
|
|
1161
|
+
labelExpression?: string;
|
|
1162
|
+
}
|
|
1163
|
+
/** A run of fields in a form: a tab or group box in QGIS, or the fields between two. */
|
|
1164
|
+
interface AttributeFormSection {
|
|
1165
|
+
/** Heading shown above the run; empty for none. */
|
|
1166
|
+
title: string;
|
|
1167
|
+
/** Field names, in the order they are shown. */
|
|
1168
|
+
fields: string[];
|
|
1169
|
+
}
|
|
1263
1170
|
/** One selectable entry of a `valueMap` widget (stored value + display label). */
|
|
1264
1171
|
interface AttributeFormValueMapEntry {
|
|
1265
1172
|
/** The value written to the feature property (compared as a string). */
|
|
@@ -1286,8 +1193,14 @@ interface AttributeFormFieldConfig {
|
|
|
1286
1193
|
* exempt: unchecked is a valid state, not a missing value.
|
|
1287
1194
|
*/
|
|
1288
1195
|
required?: boolean;
|
|
1289
|
-
/**
|
|
1196
|
+
/**
|
|
1197
|
+
* Dropdown entries for the `valueMap` widget. With a {@link valueRelation}
|
|
1198
|
+
* these are only the fallback used while the referenced layer is missing or
|
|
1199
|
+
* has not loaded.
|
|
1200
|
+
*/
|
|
1290
1201
|
valueMap?: AttributeFormValueMapEntry[];
|
|
1202
|
+
/** Read the dropdown's entries from another layer's features. */
|
|
1203
|
+
valueRelation?: AttributeFormValueRelation;
|
|
1291
1204
|
/**
|
|
1292
1205
|
* Declared storage type of the field. When set, coercion follows it instead
|
|
1293
1206
|
* of guessing from the value map (a text field whose codes are "1" and "2"
|
|
@@ -1318,10 +1231,25 @@ interface AttributeFormFieldConfig {
|
|
|
1318
1231
|
* Empty/invalid expressions fail open so a typo cannot hide data entry.
|
|
1319
1232
|
*/
|
|
1320
1233
|
visibilityExpression?: string;
|
|
1234
|
+
/**
|
|
1235
|
+
* Expression that pre-fills the field when a new feature is captured, in
|
|
1236
|
+
* the QGIS expression subset `qgis-expression.ts` evaluates: `now()`,
|
|
1237
|
+
* `uuid()`, `"site" || '-' || format_date(now(), 'yyyyMMdd')`, or a GPS
|
|
1238
|
+
* variable such as `@position_horizontal_accuracy`. An expression that
|
|
1239
|
+
* cannot be evaluated leaves the field empty.
|
|
1240
|
+
*/
|
|
1241
|
+
defaultValue?: string;
|
|
1321
1242
|
}
|
|
1322
1243
|
/** The Attribute Form designer's whole per-layer configuration. */
|
|
1323
1244
|
interface AttributeFormConfig {
|
|
1324
1245
|
fields: AttributeFormFieldConfig[];
|
|
1246
|
+
/**
|
|
1247
|
+
* Runs of fields the capture form shows in order, each under its title. A
|
|
1248
|
+
* run with an empty title has no heading (fields that sit between two
|
|
1249
|
+
* groups). A field no section lists is shown after them. Absent means one
|
|
1250
|
+
* flat list.
|
|
1251
|
+
*/
|
|
1252
|
+
sections?: AttributeFormSection[];
|
|
1325
1253
|
}
|
|
1326
1254
|
/** Point of contact recorded in a layer's {@link LayerDescriptiveMetadata}. */
|
|
1327
1255
|
interface LayerMetadataContact {
|
|
@@ -1553,6 +1481,37 @@ interface LayerQuickFilter {
|
|
|
1553
1481
|
/** `text`: the needle. Blank means no constraint. */
|
|
1554
1482
|
text?: string;
|
|
1555
1483
|
}
|
|
1484
|
+
/**
|
|
1485
|
+
* Floor picker (issue #3341): which floors of a multi-level layer are drawn.
|
|
1486
|
+
*
|
|
1487
|
+
* `all` (the default) draws every floor; `only` draws the chosen one; `below`
|
|
1488
|
+
* draws it and every floor under it, the cutaway view of a building with the
|
|
1489
|
+
* upper storeys lifted off.
|
|
1490
|
+
*/
|
|
1491
|
+
type LevelFilterMode = "all" | "only" | "below";
|
|
1492
|
+
/**
|
|
1493
|
+
* A layer linked to the on-map floor picker. The picker lists the levels found
|
|
1494
|
+
* in {@link field} across every linked layer and writes the choice back here.
|
|
1495
|
+
*
|
|
1496
|
+
* {@link values} holds the raw attribute values that match the choice, so the
|
|
1497
|
+
* compiled filter is a plain `in` test every renderer evaluates the same way,
|
|
1498
|
+
* even for OpenStreetMap's multi-level values such as `"0;1"` or `"0-2"`.
|
|
1499
|
+
*/
|
|
1500
|
+
interface LayerLevelFilter {
|
|
1501
|
+
/** The feature property that holds the floor, e.g. `level` or `ordinal`. */
|
|
1502
|
+
field: string;
|
|
1503
|
+
/** Which floors are drawn. Defaults to `all`. */
|
|
1504
|
+
mode?: LevelFilterMode;
|
|
1505
|
+
/** The chosen level, as the picker labels it (`"-1"`, `"0"`, `"G"`). */
|
|
1506
|
+
level?: string | null;
|
|
1507
|
+
/**
|
|
1508
|
+
* The raw `field` values that match {@link level} under {@link mode},
|
|
1509
|
+
* resolved from the layer's features when the choice is made. Ignored in
|
|
1510
|
+
* `all` mode. Absent while unresolved, which draws every floor until the
|
|
1511
|
+
* picker resolves it.
|
|
1512
|
+
*/
|
|
1513
|
+
values?: (string | number)[];
|
|
1514
|
+
}
|
|
1556
1515
|
/** Persisted refresh policy and most recent synchronization result for a layer. */
|
|
1557
1516
|
interface LayerConnection {
|
|
1558
1517
|
/** Owning layer id. Repeated here so records remain self-describing when exported. */
|
|
@@ -1735,6 +1694,13 @@ interface GeoLibreLayer {
|
|
|
1735
1694
|
* a host page's filter and a user's filter narrow the layer together.
|
|
1736
1695
|
*/
|
|
1737
1696
|
quickFilters?: LayerQuickFilter[];
|
|
1697
|
+
/**
|
|
1698
|
+
* Floor picker link (issue #3341). Persisted control state: the picker
|
|
1699
|
+
* compiles it into the layer's filter alongside {@link filterExpression} and
|
|
1700
|
+
* {@link quickFilters}, so it narrows the layer together with the Time Slider
|
|
1701
|
+
* window and every other filter.
|
|
1702
|
+
*/
|
|
1703
|
+
levelFilter?: LayerLevelFilter;
|
|
1738
1704
|
sourcePath?: string;
|
|
1739
1705
|
/**
|
|
1740
1706
|
* Id of the {@link LayerGroup} this layer belongs to, or `undefined` when the
|
|
@@ -1838,6 +1804,30 @@ declare const SQL_QUERY_SOURCE_KIND = "sql-query";
|
|
|
1838
1804
|
* readout, and the spectral profile) share one value.
|
|
1839
1805
|
*/
|
|
1840
1806
|
declare const NETCDF_IMAGE_SOURCE_KIND = "netcdf-image";
|
|
1807
|
+
/**
|
|
1808
|
+
* Metadata `sourceKind` marking an ArcGIS ImageServer drawn as a `raster` layer.
|
|
1809
|
+
*
|
|
1810
|
+
* Defined here so the plugin that adds these layers and `@geolibre/map` (whose
|
|
1811
|
+
* Identify reads their pixel values through the service's `/identify`) share
|
|
1812
|
+
* one value.
|
|
1813
|
+
*/
|
|
1814
|
+
declare const ARCGIS_IMAGE_SERVICE_SOURCE_KIND = "arcgis-image-service";
|
|
1815
|
+
/**
|
|
1816
|
+
* Metadata `sourceKind` marking a Microsoft Planetary Computer raster layer
|
|
1817
|
+
* (one STAC item, or a mosaic of many) drawn by the Planetary Computer panel.
|
|
1818
|
+
*
|
|
1819
|
+
* Defined here so the plugin that adds these layers, the Layer Library's
|
|
1820
|
+
* restore dispatch, and `@geolibre/map` (whose Identify reads their pixel
|
|
1821
|
+
* values through the application's raster bridge) share one value.
|
|
1822
|
+
*/
|
|
1823
|
+
declare const PLANETARY_COMPUTER_SOURCE_KIND = "planetary-computer-raster";
|
|
1824
|
+
/**
|
|
1825
|
+
* Whether a layer is a Planetary Computer raster the panel's control draws.
|
|
1826
|
+
*
|
|
1827
|
+
* @param layer - The layer to test.
|
|
1828
|
+
* @returns True for a control-drawn Planetary Computer item or mosaic layer.
|
|
1829
|
+
*/
|
|
1830
|
+
declare function isPlanetaryComputerLayer(layer: GeoLibreLayer): boolean;
|
|
1841
1831
|
/**
|
|
1842
1832
|
* Detect a DuckDB query layer rendered through the plugin's external deck.gl
|
|
1843
1833
|
* overlay. Shared by `@geolibre/map`, `@geolibre/plugins`, and the desktop
|
|
@@ -2056,6 +2046,17 @@ interface MapPreferences {
|
|
|
2056
2046
|
* Ignored by 2D renderers; absent means the renderer's normal global source.
|
|
2057
2047
|
*/
|
|
2058
2048
|
terrainIonAssetId?: number;
|
|
2049
|
+
/**
|
|
2050
|
+
* Vertical exaggeration of the 3D terrain, as set in Terrain settings.
|
|
2051
|
+
* Absent means the renderer default (1).
|
|
2052
|
+
*/
|
|
2053
|
+
terrainExaggeration?: number;
|
|
2054
|
+
/**
|
|
2055
|
+
* HTTP(S) URL of the Cloud Optimized GeoTIFF DEM the 3D terrain is drawn
|
|
2056
|
+
* from. Absent means the renderer's built-in global terrain. A DEM opened
|
|
2057
|
+
* from a local file has no URL to save, so it is not kept.
|
|
2058
|
+
*/
|
|
2059
|
+
terrainSource?: string;
|
|
2059
2060
|
/** Mapbox-only style. New projects use Streets; absent follows the shared basemap. */
|
|
2060
2061
|
mapboxStyleUrl?: string;
|
|
2061
2062
|
/**
|
|
@@ -2923,278 +2924,6 @@ interface NonGeographicCoordinates {
|
|
|
2923
2924
|
* @returns Details when a coordinate is out of geographic range, else null.
|
|
2924
2925
|
*/
|
|
2925
2926
|
declare function detectNonGeographicCoordinates(geojson: GeoJSON.FeatureCollection | undefined, sampleLimit?: number): NonGeographicCoordinates | null;
|
|
2926
|
-
/**
|
|
2927
|
-
* Celestial-body ellipsoids and the planetary basemaps that pair with them.
|
|
2928
|
-
*
|
|
2929
|
-
* GeoLibre is Earth-centric by construction: the default map is Web Mercator
|
|
2930
|
-
* and all vector data is kept as lon/lat GeoJSON. This module does *not*
|
|
2931
|
-
* change that (a map drawn in a body's own polar or simple-cylindrical CRS is
|
|
2932
|
-
* `map-crs.ts`). What it adds is a per-project notion of *which body* the
|
|
2933
|
-
* coordinates describe, so that:
|
|
2934
|
-
*
|
|
2935
|
-
* - distance / area / scale measurements use that body's radius instead of a
|
|
2936
|
-
* hardcoded Earth radius, and
|
|
2937
|
-
* - Moon / Mars basemaps (published in a Web-Mercator tiling scheme) can be
|
|
2938
|
-
* selected like any other basemap.
|
|
2939
|
-
*
|
|
2940
|
-
* The active ellipsoid is a lightweight module-level singleton kept in sync with
|
|
2941
|
-
* the project's map preferences (see the store's `setPreferences`). Measurement
|
|
2942
|
-
* helpers read it lazily at call time, so callers in other packages don't need
|
|
2943
|
-
* the value threaded through their signatures — a deliberate prototype-friendly
|
|
2944
|
-
* shortcut over a full CRS/context refactor.
|
|
2945
|
-
*/
|
|
2946
|
-
/** A biaxial (rotational) ellipsoid describing a celestial body. */
|
|
2947
|
-
interface Ellipsoid {
|
|
2948
|
-
/** Stable id persisted in the project (`map.ellipsoidId`). */
|
|
2949
|
-
id: string;
|
|
2950
|
-
/** Human-readable name shown in the UI. */
|
|
2951
|
-
name: string;
|
|
2952
|
-
/** Equatorial (semi-major) radius in metres — the "web mercator" radius. */
|
|
2953
|
-
semiMajorAxisMeters: number;
|
|
2954
|
-
/**
|
|
2955
|
-
* Inverse flattening `1/f`. `0` denotes a perfect sphere (Moon), in which case
|
|
2956
|
-
* the polar radius equals {@link semiMajorAxisMeters}.
|
|
2957
|
-
*/
|
|
2958
|
-
inverseFlattening: number;
|
|
2959
|
-
}
|
|
2960
|
-
/**
|
|
2961
|
-
* Built-in ellipsoids. Earth is WGS 84; every other body uses IAU-adopted
|
|
2962
|
-
* figures. Only Earth and Mars are appreciably oblate; the rest are modelled as
|
|
2963
|
-
* spheres (`inverseFlattening: 0`), which is how the IAU/USGS simple-cylindrical
|
|
2964
|
-
* products treat them and is well within the accuracy MapLibre's unit-sphere
|
|
2965
|
-
* rendering can represent anyway.
|
|
2966
|
-
*/
|
|
2967
|
-
declare const ELLIPSOIDS: readonly [{
|
|
2968
|
-
readonly id: "earth";
|
|
2969
|
-
readonly name: "Earth (WGS 84)";
|
|
2970
|
-
readonly semiMajorAxisMeters: 6378137;
|
|
2971
|
-
readonly inverseFlattening: 298.257223563;
|
|
2972
|
-
}, {
|
|
2973
|
-
readonly id: "moon";
|
|
2974
|
-
readonly name: "Moon";
|
|
2975
|
-
readonly semiMajorAxisMeters: 1737400;
|
|
2976
|
-
readonly inverseFlattening: 0;
|
|
2977
|
-
}, {
|
|
2978
|
-
readonly id: "mars";
|
|
2979
|
-
readonly name: "Mars (IAU 2000)";
|
|
2980
|
-
readonly semiMajorAxisMeters: 3396190;
|
|
2981
|
-
readonly inverseFlattening: 169.894447;
|
|
2982
|
-
}, {
|
|
2983
|
-
readonly id: "mercury";
|
|
2984
|
-
readonly name: "Mercury";
|
|
2985
|
-
readonly semiMajorAxisMeters: 2439400;
|
|
2986
|
-
readonly inverseFlattening: 0;
|
|
2987
|
-
}, {
|
|
2988
|
-
readonly id: "venus";
|
|
2989
|
-
readonly name: "Venus";
|
|
2990
|
-
readonly semiMajorAxisMeters: 6051800;
|
|
2991
|
-
readonly inverseFlattening: 0;
|
|
2992
|
-
}, {
|
|
2993
|
-
readonly id: "io";
|
|
2994
|
-
readonly name: "Io";
|
|
2995
|
-
readonly semiMajorAxisMeters: 1821600;
|
|
2996
|
-
readonly inverseFlattening: 0;
|
|
2997
|
-
}, {
|
|
2998
|
-
readonly id: "europa";
|
|
2999
|
-
readonly name: "Europa";
|
|
3000
|
-
readonly semiMajorAxisMeters: 1560800;
|
|
3001
|
-
readonly inverseFlattening: 0;
|
|
3002
|
-
}, {
|
|
3003
|
-
readonly id: "ganymede";
|
|
3004
|
-
readonly name: "Ganymede";
|
|
3005
|
-
readonly semiMajorAxisMeters: 2631200;
|
|
3006
|
-
readonly inverseFlattening: 0;
|
|
3007
|
-
}, {
|
|
3008
|
-
readonly id: "callisto";
|
|
3009
|
-
readonly name: "Callisto";
|
|
3010
|
-
readonly semiMajorAxisMeters: 2410300;
|
|
3011
|
-
readonly inverseFlattening: 0;
|
|
3012
|
-
}, {
|
|
3013
|
-
readonly id: "titan";
|
|
3014
|
-
readonly name: "Titan";
|
|
3015
|
-
readonly semiMajorAxisMeters: 2574730;
|
|
3016
|
-
readonly inverseFlattening: 0;
|
|
3017
|
-
}, {
|
|
3018
|
-
readonly id: "pluto";
|
|
3019
|
-
readonly name: "Pluto";
|
|
3020
|
-
readonly semiMajorAxisMeters: 1188300;
|
|
3021
|
-
readonly inverseFlattening: 0;
|
|
3022
|
-
}, {
|
|
3023
|
-
readonly id: "charon";
|
|
3024
|
-
readonly name: "Charon";
|
|
3025
|
-
readonly semiMajorAxisMeters: 606000;
|
|
3026
|
-
readonly inverseFlattening: 0;
|
|
3027
|
-
}];
|
|
3028
|
-
type EllipsoidId = (typeof ELLIPSOIDS)[number]["id"];
|
|
3029
|
-
declare const DEFAULT_ELLIPSOID_ID: EllipsoidId;
|
|
3030
|
-
/** Look an ellipsoid up by id, falling back to Earth for unknown ids. */
|
|
3031
|
-
declare function getEllipsoid(id: string | undefined): Ellipsoid;
|
|
3032
|
-
/**
|
|
3033
|
-
* Mean radius `R = (2a + b) / 3` in metres, where `b` is the polar radius
|
|
3034
|
-
* derived from the inverse flattening. This is the radius used for spherical
|
|
3035
|
-
* (haversine) distance and area math.
|
|
3036
|
-
*/
|
|
3037
|
-
declare function meanRadiusMeters(ellipsoid: Ellipsoid): number;
|
|
3038
|
-
/** Earth's mean radius in metres — the radius Turf.js and MapLibre bake in. */
|
|
3039
|
-
declare const EARTH_MEAN_RADIUS_METERS: number;
|
|
3040
|
-
/**
|
|
3041
|
-
* Point the measurement helpers at a body. Unknown ids fall back to Earth so a
|
|
3042
|
-
* malformed project can never break measurements. Safe to call on every
|
|
3043
|
-
* preferences change; it is a cheap assignment.
|
|
3044
|
-
*/
|
|
3045
|
-
declare function setActiveEllipsoidId(id: string | undefined): void;
|
|
3046
|
-
declare function getActiveEllipsoid(): Ellipsoid;
|
|
3047
|
-
/** Mean radius (metres) of the active body — for haversine distance/area. */
|
|
3048
|
-
declare function getActiveMeanRadiusMeters(): number;
|
|
3049
|
-
/** Semi-major axis (metres) of the active body — for its Web-Mercator scale. */
|
|
3050
|
-
declare function getActiveSemiMajorAxisMeters(): number;
|
|
3051
|
-
/**
|
|
3052
|
-
* The active body's mean radius as a fraction of Earth's — `R_body / R_earth`,
|
|
3053
|
-
* and exactly `1` on Earth.
|
|
3054
|
-
*
|
|
3055
|
-
* Everything GeoLibre measures ultimately comes from lon/lat *angles*, and the
|
|
3056
|
-
* only thing that turns an angle into a ground distance is the radius it is
|
|
3057
|
-
* multiplied by. Turf.js hardcodes Earth's, with no per-call override (that is
|
|
3058
|
-
* the "Turf is Earth-locked" half of GeoLibre#1128), so rather than patch or
|
|
3059
|
-
* replace Turf we post-scale what it returns and pre-scale what we hand it. The
|
|
3060
|
-
* result is exact for a sphere, which is how every non-Earth body GeoLibre
|
|
3061
|
-
* offers is modelled anyway, and within Mars' 0.6% flattening at worst.
|
|
3062
|
-
*
|
|
3063
|
-
* Suggested by @thareUSGS (USGS Astrogeology) on GeoLibre#1128 as the practical
|
|
3064
|
-
* workaround planetary web maps have long used on Earth-locked engines.
|
|
3065
|
-
*/
|
|
3066
|
-
declare function getActiveBodyRadiusRatio(): number;
|
|
3067
|
-
/**
|
|
3068
|
-
* Convert a length Turf.js measured on Earth into the active body's true ground
|
|
3069
|
-
* length. A no-op on Earth.
|
|
3070
|
-
*
|
|
3071
|
-
* Use on anything Turf *returns* — a distance, a length, a perimeter.
|
|
3072
|
-
*
|
|
3073
|
-
* The correction is a dimensionless ratio, so it is unit-agnostic: pass the
|
|
3074
|
-
* length in whatever unit Turf gave it back (metres, kilometres, miles) and the
|
|
3075
|
-
* result is in that same unit. There is no hidden unit conversion here.
|
|
3076
|
-
*/
|
|
3077
|
-
declare function earthLengthToBody(length: number): number;
|
|
3078
|
-
/**
|
|
3079
|
-
* Convert a true ground length on the active body into the Earth-equivalent
|
|
3080
|
-
* length to hand Turf.js. A no-op on Earth.
|
|
3081
|
-
*
|
|
3082
|
-
* Use on anything passed *into* Turf as a distance — a buffer width, a circle
|
|
3083
|
-
* or sector radius, a search threshold — so the resulting geometry spans that
|
|
3084
|
-
* distance on this body rather than on Earth.
|
|
3085
|
-
*
|
|
3086
|
-
* Unit-agnostic like {@link earthLengthToBody}: pass the length in whatever
|
|
3087
|
-
* unit you are about to hand Turf alongside it, and the result is in that unit.
|
|
3088
|
-
*/
|
|
3089
|
-
declare function bodyLengthToEarth(length: number): number;
|
|
3090
|
-
/**
|
|
3091
|
-
* Convert an area Turf.js measured on Earth into the active body's true ground
|
|
3092
|
-
* area. A no-op on Earth.
|
|
3093
|
-
*
|
|
3094
|
-
* Areas scale with the *square* of the radius ratio, so this is not the same
|
|
3095
|
-
* correction as {@link earthLengthToBody}. Unit-agnostic in the same way, for
|
|
3096
|
-
* whatever squared unit the area is expressed in.
|
|
3097
|
-
*/
|
|
3098
|
-
declare function earthAreaToBody(area: number): number;
|
|
3099
|
-
/**
|
|
3100
|
-
* A raster basemap for a celestial body — the Moon and Mars mosaics, plus the
|
|
3101
|
-
* Earth satellite imagery the planet switcher pairs with Earth. The tiles are
|
|
3102
|
-
* XYZ (or TMS, see {@link scheme}) images in that body's Web-Mercator scheme, so
|
|
3103
|
-
* MapLibre renders them directly. The `styleUrl` is a `geolibre://basemap/<id>`
|
|
3104
|
-
* sentinel; the map controller expands it into a raster style at apply time (it
|
|
3105
|
-
* is not a fetchable URL).
|
|
3106
|
-
*/
|
|
3107
|
-
interface PlanetaryBasemap {
|
|
3108
|
-
id: string;
|
|
3109
|
-
name: string;
|
|
3110
|
-
/** Sentinel stored as the basemap style URL. */
|
|
3111
|
-
styleUrl: string;
|
|
3112
|
-
/** XYZ (or TMS, see {@link scheme}) tile template. */
|
|
3113
|
-
tileUrl: string;
|
|
3114
|
-
/**
|
|
3115
|
-
* Tile row ordering. OpenPlanetaryMap's single-layer raster mosaics (the S3
|
|
3116
|
-
* datasets) are published as **TMS** (tile origin bottom-left, Y flipped),
|
|
3117
|
-
* whereas the CARTO `opmbuilder` named maps are standard **XYZ**. Omit for
|
|
3118
|
-
* XYZ; MapLibre defaults to `"xyz"` when `scheme` is absent.
|
|
3119
|
-
*/
|
|
3120
|
-
scheme?: "tms";
|
|
3121
|
-
/** Max native zoom of the source (MapLibre overzooms beyond this). */
|
|
3122
|
-
maxZoom: number;
|
|
3123
|
-
/** Attribution shown on the map. */
|
|
3124
|
-
attribution: string;
|
|
3125
|
-
/** The body this basemap depicts, so selecting it can set the ellipsoid. */
|
|
3126
|
-
ellipsoidId: EllipsoidId;
|
|
3127
|
-
}
|
|
3128
|
-
declare const PLANETARY_BASEMAP_SENTINEL_PREFIX = "geolibre://basemap/";
|
|
3129
|
-
declare const PLANETARY_BASEMAPS: readonly PlanetaryBasemap[];
|
|
3130
|
-
/**
|
|
3131
|
-
* The section a planetary basemap is grouped under in the New Project and
|
|
3132
|
-
* Change Basemap pickers. The Moon and Mars keep dedicated sections (they are
|
|
3133
|
-
* the most-used bodies and each has several mosaics); every other body is
|
|
3134
|
-
* collapsed into a single "other" section so the picker isn't a wall of
|
|
3135
|
-
* one-item headings.
|
|
3136
|
-
*/
|
|
3137
|
-
type PlanetaryBasemapSectionId = "moon" | "mars" | "other";
|
|
3138
|
-
/** A picker section paired with the planetary basemaps it lists. */
|
|
3139
|
-
interface PlanetaryBasemapGroup {
|
|
3140
|
-
id: PlanetaryBasemapSectionId;
|
|
3141
|
-
basemaps: readonly PlanetaryBasemap[];
|
|
3142
|
-
}
|
|
3143
|
-
/**
|
|
3144
|
-
* {@link PLANETARY_BASEMAPS} grouped for the pickers: one section each for the
|
|
3145
|
-
* Moon and Mars, then a single "Other celestial bodies" section for the rest,
|
|
3146
|
-
* in {@link PLANETARY_BASEMAPS} order (grouped by body). Empty sections are
|
|
3147
|
-
* dropped.
|
|
3148
|
-
*/
|
|
3149
|
-
declare const PLANETARY_BASEMAP_GROUPS: readonly PlanetaryBasemapGroup[];
|
|
3150
|
-
/** Resolve a `geolibre://basemap/<id>` sentinel to its planetary basemap. */
|
|
3151
|
-
declare function getPlanetaryBasemapByStyleUrl(styleUrl: string | undefined): PlanetaryBasemap | undefined;
|
|
3152
|
-
/** Look a planetary basemap up by its stable id. */
|
|
3153
|
-
declare function getPlanetaryBasemapById(id: string): PlanetaryBasemap | undefined;
|
|
3154
|
-
/**
|
|
3155
|
-
* The celestial bodies offered by the Layers-panel planet switcher, in menu
|
|
3156
|
-
* order (like Google Earth's planet dropdown). Each body is paired with the
|
|
3157
|
-
* basemap the switcher applies for it — USGS satellite imagery for Earth, the
|
|
3158
|
-
* OpenPlanetaryMap Hillshaded Albedo mosaic for the Moon, and the OpenPlanetaryMap
|
|
3159
|
-
* Viking mosaic for Mars.
|
|
3160
|
-
*/
|
|
3161
|
-
declare const PLANET_SWITCHER_OPTIONS: readonly [{
|
|
3162
|
-
readonly ellipsoidId: "earth";
|
|
3163
|
-
readonly basemapId: "earth-usgs-imagery";
|
|
3164
|
-
}, {
|
|
3165
|
-
readonly ellipsoidId: "moon";
|
|
3166
|
-
readonly basemapId: "moon-hillshaded-albedo";
|
|
3167
|
-
}, {
|
|
3168
|
-
readonly ellipsoidId: "mars";
|
|
3169
|
-
readonly basemapId: "mars-viking-mdim21";
|
|
3170
|
-
}, {
|
|
3171
|
-
readonly ellipsoidId: "callisto";
|
|
3172
|
-
readonly basemapId: "callisto-galileo-voyager";
|
|
3173
|
-
}, {
|
|
3174
|
-
readonly ellipsoidId: "charon";
|
|
3175
|
-
readonly basemapId: "charon-mosaic";
|
|
3176
|
-
}, {
|
|
3177
|
-
readonly ellipsoidId: "europa";
|
|
3178
|
-
readonly basemapId: "europa-galileo-voyager";
|
|
3179
|
-
}, {
|
|
3180
|
-
readonly ellipsoidId: "ganymede";
|
|
3181
|
-
readonly basemapId: "ganymede-galileo-voyager";
|
|
3182
|
-
}, {
|
|
3183
|
-
readonly ellipsoidId: "io";
|
|
3184
|
-
readonly basemapId: "io-galileo-color";
|
|
3185
|
-
}, {
|
|
3186
|
-
readonly ellipsoidId: "mercury";
|
|
3187
|
-
readonly basemapId: "mercury-messenger-color";
|
|
3188
|
-
}, {
|
|
3189
|
-
readonly ellipsoidId: "pluto";
|
|
3190
|
-
readonly basemapId: "pluto-mosaic";
|
|
3191
|
-
}, {
|
|
3192
|
-
readonly ellipsoidId: "titan";
|
|
3193
|
-
readonly basemapId: "titan-cassini";
|
|
3194
|
-
}, {
|
|
3195
|
-
readonly ellipsoidId: "venus";
|
|
3196
|
-
readonly basemapId: "venus-magellan-color";
|
|
3197
|
-
}];
|
|
3198
2927
|
/**
|
|
3199
2928
|
* Helpers for vector data whose coordinates carry a Z value (elevation), e.g.
|
|
3200
2929
|
* GPX tracks with `<ele>` readings or LineStringZ/PointZ geometries. MapLibre's
|
|
@@ -3651,6 +3380,20 @@ declare function normalizeDashboardColumns(value: unknown): number;
|
|
|
3651
3380
|
*/
|
|
3652
3381
|
declare function normalizeProjectInteraction(value: unknown): ProjectInteraction | null;
|
|
3653
3382
|
declare function isAllowedPluginManifestUrl(url: string): boolean;
|
|
3383
|
+
/**
|
|
3384
|
+
* Re-file a 3D Tiles record whose URL is an ArcGIS scene service as an I3S
|
|
3385
|
+
* scene layer (issue #3377).
|
|
3386
|
+
*
|
|
3387
|
+
* The app draws a scene layer only when its source kind is `arcgis-i3s`. The
|
|
3388
|
+
* Python `add_3d_tiles()` used to write a SceneServer URL as a plain tileset
|
|
3389
|
+
* (`3d-tiles-url`), which the 3D Tiles control then loads as a `tileset.json`,
|
|
3390
|
+
* so nothing drew. This gives such a record the shape the app's 3D Tiles panel
|
|
3391
|
+
* writes (`createArcgisI3sStoreLayer`), keeping its id, name and settings.
|
|
3392
|
+
*
|
|
3393
|
+
* @param layer - A layer from a project file.
|
|
3394
|
+
* @returns The layer, re-filed as an I3S scene layer when it is a misfiled one.
|
|
3395
|
+
*/
|
|
3396
|
+
declare function withI3sSceneLayerKind(layer: GeoLibreLayer): GeoLibreLayer;
|
|
3654
3397
|
declare function normalizeProjectComments(rawComments: unknown): ProjectComment[];
|
|
3655
3398
|
declare function projectFromStore(state: {
|
|
3656
3399
|
projectName: string;
|
|
@@ -3821,7 +3564,7 @@ interface LayerDiff {
|
|
|
3821
3564
|
style: ProjectValueChange[];
|
|
3822
3565
|
/** Label style keys (`style.labels.*`), without the `labels.` prefix. */
|
|
3823
3566
|
labels: ProjectValueChange[];
|
|
3824
|
-
/** `filterExpression` and `
|
|
3567
|
+
/** `filterExpression`, `quickFilters` and `levelFilter`. */
|
|
3825
3568
|
filter: ProjectValueChange[];
|
|
3826
3569
|
/** `type`, `source.*` and `sourcePath`. */
|
|
3827
3570
|
source: ProjectValueChange[];
|
|
@@ -3918,5 +3661,5 @@ declare function diffFeatureCollections(before: FeatureCollection | null | undef
|
|
|
3918
3661
|
* @returns The grouped change summary.
|
|
3919
3662
|
*/
|
|
3920
3663
|
declare function diffProjects(before: GeoLibreProject, after: GeoLibreProject, options?: ProjectDiffOptions): ProjectDiff;
|
|
3921
|
-
export {
|
|
3922
|
-
//# sourceMappingURL=project-diff-
|
|
3664
|
+
export { cascadeLayerJoinRefresh as $, ModelGraphEdge as $n, StyleLibraryEntryKind as $r, DashboardWidgetType as $t, normalizeMapViewState as A, normalizeCesiumBasemap as Ai, LayerQuickFilter as An, ProjectPluginState as Ar, CollabInvite as At, normalizeWidgets as B, LevelFilterMode as Bn, SecondaryMapView as Br, DEFAULT_BASEMAP as Bt, isSessionOnlyLayer as C, geoArrowToFeatureCollection as Ci, LayerJoinStats as Cn, ProcessingRunStatus as Cr, AttributeFormSection as Ct, normalizeDashboardColumns as D, CesiumBasemapImagery as Di, LayerMetadataLink as Dn, ProjectControlSetting as Dr, BLANK_BASEMAP as Dt, normalizeBookmarks as E, CesiumBasemapId as Ei, LayerMetadataContact as En, ProjectComment as Er, AttributeFormWidget as Et, normalizeProcessingHistory as F, LegendCustomEntry as Fn, QuickFilterTextOperator as Fr, CollaborationRole as Ft, serializeProject as G, MIN_DASHBOARD_COLUMNS as Gn, StoryChapterLocation as Gr, DEFAULT_MAP_GRID_LAYOUT as Gt, portableWmsTileUrl as H, MAX_DASHBOARD_COLUMNS as Hn, StoryChapter as Hr, DEFAULT_DASHBOARD_COLUMNS as Ht, normalizeProjectComments as I, LegendCustomItem as In, RecentProjectEntry as Ir, CollaborationState as It, storyMapHasContent as J, MapProjection as Jn, StoryMap as Jr, DEFAULT_STORY_MAP as Jt, serializeProjectWithLayerCache as K, MapGridLayout as Kn, StoryInsetPosition as Kr, DEFAULT_PRIMARY_RENDERER as Kt, normalizeProjectInteraction as L, LegendCustomShape as Ln, RuntimeEnvironmentVariable as Lr, CommentAnchor as Lt, normalizeModels as M, LayerType as Mn, ProjectTemplateEntry as Mr, CollaborationMode as Mt, normalizeObiaWorkbench as N, LayerVirtualField as Nn, QuickFilterDateKind as Nr, CollaborationParticipant as Nt, normalizeLegendConfig as O, availableCesiumBasemap as Oi, LayerMetadataTemporalExtent as On, ProjectInteraction as Or, BLEND_MODES as Ot, normalizePrimaryRenderer as P, LegendConfig as Pn, QuickFilterKind as Pr, CollaborationPresence as Pt, applyLayerJoins as Q, MarkerShape as Qn, StyleLibraryEntry as Qr, DashboardWidgetAggregation as Qt, normalizeSecondaryMapViews as R, LegendItemOverride as Rn, SQL_QUERY_SOURCE_KIND as Rr, CommentAuthor as Rt, isAllowedPluginManifestUrl as S, featureCollectionToGeoArrow as Si, LayerJoin as Sn, ProcessingRunKind as Sr, AttributeFormFieldConfig as St, normalizeBookmarkGroups as T, CESIUM_BASEMAPS as Ti, LayerLibraryEntry as Tn, ProjectBookmarkGroup as Tr, AttributeFormValueRelation as Tt, projectFromStore as U, MAX_MAP_GRID_DIM as Un, StoryChapterAlignment as Ur, DEFAULT_LAYER_STYLE as Ut, parseProject as V, LineDecoration as Vn, StoryActiveSlideMode as Vr, DEFAULT_BLEND_MODE as Vt, resolveMapGrid as W, MAX_PROCESSING_HISTORY as Wn, StoryChapterAnimation as Wr, DEFAULT_LEGEND_CONFIG as Wt, ApplyLayerJoinsResult as X, MapScaleUnit as Xn, StrokeDashPreset as Xr, DUCKDB_VECTOR_ROUTE_BYTES as Xt, withI3sSceneLayerKind as Y, MapRendererKind as Yn, StorySlideMode as Yr, DUCKDB_VECTOR_FEATURE_WARN_COUNT as Yt, applyJoinsToLayer as Z, MapViewState as Zn, StrokeWidthUnit as Zr, DashboardWidget as Zt, createEmptyProject as _, scrubPrintLayoutForLayers as _i, LabelTransform as _n, ProcessingModel as _r, AddTileLayerOptions as _t, ProjectDiffOptions as a, isPlanetaryComputerLayer as ai, FillPattern as an, NETCDF_IMAGE_SOURCE_KIND as ar, PolylineDecodeResult as at, detachProjectCopy as b, GeoArrowGeometryType as bi, LayerDescriptiveMetadata as bn, ProcessingRerunRequest as br, AppRole as bt, diffProjects as c, DEFAULT_PRINT_LAYOUT as ci, GeocodingLocator as cn, PLANETARY_COMPUTER_SOURCE_KIND as cr, decodePolylineDetailed as ct, CreateProjectOptions as d, PrintLayoutLegendEntry as di, IndicatorAggregation as dn, ParticipantIdentity as dr, polylineStrToGeoJSON as dt, VectorRule as ei, DiagramField as en, ModelGraphNode as er, collectTransitiveJoinSourceIds as et, DEFAULT_PROJECT_NAME as f, PrintLayoutPageFilter as fi, LARGE_VECTOR_FEATURE_THRESHOLD as fn, PointRenderer as fr, unescapePolyline as ft, createDefaultMapView as g, printLayoutConfigsEqual as gi, LabelStyle as gn, PopupFieldKind as gr, ARCGIS_IMAGE_SERVICE_SOURCE_KIND as gt, applyProjectToStore as h, normalizePrintLayoutConfig as hi, LabelDedupe as hn, PopupFieldFormat as hr, transformGeojsonElevation as ht, ProjectDiff as i, isDuckDBQueryLayer as ii, FieldVisibility as in, ModelToolProvider as ir, PolylineBatchOptions as it, normalizeModelGraph as j, sameCesiumImagery as ji, LayerStyle as jn, ProjectPreferences as jr, CollaborationChatMessage as jt, normalizeMapLayout as k, basemapToCesiumImagery as ki, LayerPopupConfig as kn, ProjectPluginControlPosition as kr, BlendMode as kt, jsonValuesEqual as l, PrintLayoutConfig as li, GeocodingPreferences as ln, PROJECT_VERSION as lr, encodePolyline as lt, ProjectLayerSerializationCache as m, isDefaultPrintLayout as mi, LabelAnchor as mn, PopupFieldConfig as mr, horizontalBbox as mt, LayerDiff as n, VectorStyleStop as ni, DiagramType as nn, ModelGraphPort as nr, reapplyLayerJoins as nt, ProjectValueChange as o, shouldUseTiledRendering as oi, GeoLibreLayer as on, NonGeographicCoordinates as or, batchDecodePolylines as ot, MAX_PROJECT_BOOKMARKS as p, createDefaultPrintLayout as pi, LAYER_TYPES as pn, PopupDateFormat as pr, geojsonHasZCoordinates as pt, serializeProjectWithLayerCacheAsync as q, MapPreferences as qn, StoryLayerOpacityChange as qr, DEFAULT_PROJECT_PREFERENCES as qt, PluginDiff as r, detectNonGeographicCoordinates as ri, EditorTrackingConfig as rn, ModelPortKind as rr, stripJoinFields as rt, diffFeatureCollections as s, styleValue as si, GeoLibreProject as sn, OPENFREEMAP_BASEMAPS as sr, decodePolyline as st, FeatureChangeSummary as t, VectorStyleMode as ti, DiagramSizeMode as tn, ModelGraphNodeKind as tr, layerJoinKey as tt, previewValue as u, PrintLayoutCorner as ui, GeometryGeneratorType as un, PROTOMAPS_BASEMAPS as ur, geoJSONToPolylineStr as ut, createProjectLayerSerializationCache as v, scrubPrintLayoutForRemovedLayers as vi, LayerCapabilities as vn, ProcessingModelGraph as vr, AppCapabilities as vt, normalizeBlankBackgroundColor as w, isGeoArrowBatch as wi, LayerLevelFilter as wn, ProjectBookmark as wr, AttributeFormValueMapEntry as wt, hydrateProjectLayer as x, computeGeoArrowBBox as xi, LayerGroup as xn, ProcessingRun as xr, AttributeFormConfig as xt, createProjectTemplate as y, GeoArrowBatch as yi, LayerConnection as yn, ProcessingModelStep as yr, AppPrivilege as yt, normalizeStoryMap as z, LegendPanelPosition as zn, STROKE_DASH_PRESETS as zr, CommentReply as zt };
|
|
3665
|
+
//# sourceMappingURL=project-diff-BksHN-qY.d.mts.map
|