@math.gl/geospatial 5.0.0-beta.1 → 5.0.0-beta.2
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/crs/crs-identifier.d.ts +23 -0
- package/dist/crs/crs-identifier.d.ts.map +1 -0
- package/dist/crs/crs-identifier.js +74 -0
- package/dist/crs/crs-identifier.js.map +1 -0
- package/dist/crs/index.cjs +48 -0
- package/dist/crs/index.cjs.map +2 -2
- package/dist/crs/index.d.ts +1 -0
- package/dist/crs/index.d.ts.map +1 -1
- package/dist/crs/index.js +1 -0
- package/dist/crs/index.js.map +1 -1
- package/dist/discontinuous/cap-map.d.ts.map +1 -1
- package/dist/discontinuous/cap-map.js +197 -13
- package/dist/discontinuous/cap-map.js.map +1 -1
- package/dist/discontinuous/elastic/geometry.d.ts +1 -1
- package/dist/discontinuous/elastic/geometry.d.ts.map +1 -1
- package/dist/discontinuous/elastic/geometry.js +7 -7
- package/dist/discontinuous/elastic/geometry.js.map +1 -1
- package/dist/discontinuous/elastic/map.d.ts.map +1 -1
- package/dist/discontinuous/elastic/map.js +263 -23
- package/dist/discontinuous/elastic/map.js.map +1 -1
- package/dist/discontinuous/elastic/source-arc.d.ts +10 -0
- package/dist/discontinuous/elastic/source-arc.d.ts.map +1 -0
- package/dist/discontinuous/elastic/source-arc.js +111 -0
- package/dist/discontinuous/elastic/source-arc.js.map +1 -0
- package/dist/discontinuous/global-polygons.d.ts +1 -1
- package/dist/discontinuous/global-polygons.d.ts.map +1 -1
- package/dist/discontinuous/global-polygons.js +49 -1
- package/dist/discontinuous/global-polygons.js.map +1 -1
- package/dist/discontinuous/map-engine.d.ts +9 -0
- package/dist/discontinuous/map-engine.d.ts.map +1 -1
- package/dist/discontinuous/map-layout.d.ts +21 -0
- package/dist/discontinuous/map-layout.d.ts.map +1 -1
- package/dist/discontinuous/map-layout.js +116 -1
- package/dist/discontinuous/map-layout.js.map +1 -1
- package/dist/discontinuous/map-transition.d.ts.map +1 -1
- package/dist/discontinuous/map-transition.js +66 -3
- package/dist/discontinuous/map-transition.js.map +1 -1
- package/dist/discontinuous/mercator-map.d.ts +2 -2
- package/dist/discontinuous/mercator-map.d.ts.map +1 -1
- package/dist/discontinuous/mercator-map.js +123 -11
- package/dist/discontinuous/mercator-map.js.map +1 -1
- package/dist/discontinuous/polygon-constraints.d.ts +16 -0
- package/dist/discontinuous/polygon-constraints.d.ts.map +1 -0
- package/dist/discontinuous/polygon-constraints.js +157 -0
- package/dist/discontinuous/polygon-constraints.js.map +1 -0
- package/dist/discontinuous/prepare-features.d.ts +27 -0
- package/dist/discontinuous/prepare-features.d.ts.map +1 -1
- package/dist/discontinuous/prepare-features.js +106 -5
- package/dist/discontinuous/prepare-features.js.map +1 -1
- package/dist/discontinuous/rotated-map.d.ts +9 -0
- package/dist/discontinuous/rotated-map.d.ts.map +1 -1
- package/dist/discontinuous/source-arc.d.ts +4 -0
- package/dist/discontinuous/source-arc.d.ts.map +1 -0
- package/dist/discontinuous/source-arc.js +23 -0
- package/dist/discontinuous/source-arc.js.map +1 -0
- package/dist/discontinuous/world-kernels.d.ts +1 -1
- package/dist/discontinuous.cjs +1047 -75
- package/dist/discontinuous.cjs.map +3 -3
- package/dist/index.cjs +48 -0
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/turf.cjs +69 -5
- package/dist/turf.cjs.map +2 -2
- package/dist/turf.d.ts +9 -0
- package/dist/turf.d.ts.map +1 -1
- package/dist/turf.js +67 -0
- package/dist/turf.js.map +1 -1
- package/dist/workers/index.cjs +1075 -79
- package/dist/workers/index.cjs.map +3 -3
- package/dist/workers/operations.cjs +1049 -77
- package/dist/workers/operations.cjs.map +3 -3
- package/package.json +5 -5
- package/src/crs/crs-identifier.ts +86 -0
- package/src/crs/index.ts +1 -0
- package/src/discontinuous/cap-map.ts +248 -19
- package/src/discontinuous/elastic/geometry.ts +18 -7
- package/src/discontinuous/elastic/map.ts +334 -30
- package/src/discontinuous/elastic/source-arc.ts +129 -0
- package/src/discontinuous/global-polygons.ts +56 -2
- package/src/discontinuous/map-layout.ts +165 -2
- package/src/discontinuous/map-transition.ts +67 -3
- package/src/discontinuous/mercator-map.ts +151 -12
- package/src/discontinuous/polygon-constraints.ts +184 -0
- package/src/discontinuous/prepare-features.ts +154 -6
- package/src/discontinuous/source-arc.ts +31 -0
- package/src/index.ts +1 -0
- package/src/turf.ts +86 -0
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
4
|
import polygonClipping from 'polygon-clipping';
|
|
5
|
+
import { tracePolygonConstraints, composePolygonEdge } from "./polygon-constraints.js";
|
|
6
|
+
import { sourceArc } from "./source-arc.js";
|
|
5
7
|
import { DiscontinuousMap } from "./map-layout.js";
|
|
6
|
-
import { geographic, RAD } from "./math.js";
|
|
8
|
+
import { angle, coordinates, geographic, RAD, unit } from "./math.js";
|
|
7
9
|
/** Spherical Mercator, clipped to a finite latitude band after seam splitting. */
|
|
8
10
|
export class MercatorMap extends DiscontinuousMap {
|
|
9
11
|
constructor(radius = 1, centralMeridian = 0, maxLatitude = 85.0511287798066) {
|
|
@@ -96,17 +98,74 @@ export class MercatorMap extends DiscontinuousMap {
|
|
|
96
98
|
continue;
|
|
97
99
|
}
|
|
98
100
|
const at = (t) => [a[0] + (b[0] - a[0]) * t, a[1] + dy * t];
|
|
99
|
-
|
|
101
|
+
// Locate the latitude cut on the sampled source great-circle arc, not
|
|
102
|
+
// on its projected chord. Retain the parent segment throughout this stage.
|
|
103
|
+
const endpoint = (t) => {
|
|
104
|
+
if (t === 0 || t === 1)
|
|
105
|
+
return { xy: at(t), source: part.sourceCoordinates[i - 1 + t], t };
|
|
106
|
+
const va = geographic(part.sourceCoordinates[i - 1]), vb = geographic(part.sourceCoordinates[i]), arc = angle(va, vb);
|
|
107
|
+
const sourceAt = (t) => {
|
|
108
|
+
if (!arc)
|
|
109
|
+
return part.sourceCoordinates[i - 1];
|
|
110
|
+
const a = Math.sin((1 - t) * arc) / Math.sin(arc), b = Math.sin(t * arc) / Math.sin(arc);
|
|
111
|
+
return coordinates(unit(va.map((v, k) => a * v + b * vb[k])));
|
|
112
|
+
};
|
|
113
|
+
const latitude = Math.sign(at(t)[1]) * this.limit;
|
|
114
|
+
let lo = 0, hi = 1;
|
|
115
|
+
for (let j = 0; j < 52; j++) {
|
|
116
|
+
const mid = (lo + hi) / 2;
|
|
117
|
+
if (sourceAt(mid)[1] < latitude === part.sourceCoordinates[i - 1][1] < latitude)
|
|
118
|
+
lo = mid;
|
|
119
|
+
else
|
|
120
|
+
hi = mid;
|
|
121
|
+
}
|
|
122
|
+
const f = (lo + hi) / 2, source = sourceAt(f);
|
|
123
|
+
const xy = super.projectPoint(source, part.regionId).position;
|
|
124
|
+
return { xy, source, t: f };
|
|
125
|
+
};
|
|
126
|
+
const start = endpoint(t0), end = endpoint(t1);
|
|
127
|
+
const append = (point, index) => {
|
|
128
|
+
current.coordinates.push(point.xy);
|
|
129
|
+
current.sourceCoordinates.push(point.source);
|
|
130
|
+
const source = part.provenance, target = current.provenance;
|
|
131
|
+
if (!source || !target)
|
|
132
|
+
return;
|
|
133
|
+
const segment = source.segments[i];
|
|
134
|
+
const from = source.segments[i - 1] === segment ? source.parameters[i - 1] : 0;
|
|
135
|
+
target.segments.push(point.t === 0 || point.t === 1 ? source.segments[index] : segment);
|
|
136
|
+
target.parameters.push(point.t === 0 || point.t === 1
|
|
137
|
+
? source.parameters[index]
|
|
138
|
+
: from + point.t * (source.parameters[i] - from));
|
|
139
|
+
target.vertices.push(point.t === 0 || point.t === 1 ? source.vertices[index] : 0xffffffff);
|
|
140
|
+
if (options?.pathDistances)
|
|
141
|
+
target.angularDistances.push(source.angularDistances[i - 1] +
|
|
142
|
+
point.t * (source.angularDistances[i] - source.angularDistances[i - 1]));
|
|
143
|
+
};
|
|
100
144
|
if (!current || t0 > 0) {
|
|
101
145
|
current = {
|
|
102
146
|
regionId: part.regionId,
|
|
103
|
-
coordinates: [
|
|
104
|
-
sourceCoordinates: [
|
|
147
|
+
coordinates: [],
|
|
148
|
+
sourceCoordinates: [],
|
|
149
|
+
...(part.provenance
|
|
150
|
+
? {
|
|
151
|
+
provenance: {
|
|
152
|
+
segments: [],
|
|
153
|
+
parameters: [],
|
|
154
|
+
vertices: [],
|
|
155
|
+
angularDistances: [],
|
|
156
|
+
...(options?.pathBoundaries
|
|
157
|
+
? { startReason: t0 > 0 ? 'coverage-boundary' : part.provenance.startReason }
|
|
158
|
+
: {})
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
: {})
|
|
105
162
|
};
|
|
106
163
|
result.push(current);
|
|
164
|
+
append(start, i - 1);
|
|
107
165
|
}
|
|
108
|
-
|
|
109
|
-
current.
|
|
166
|
+
append(end, i);
|
|
167
|
+
if (current.provenance && options?.pathBoundaries)
|
|
168
|
+
current.provenance.endReason = t1 < 1 ? 'coverage-boundary' : part.provenance.endReason;
|
|
110
169
|
if (t1 < 1)
|
|
111
170
|
current = undefined;
|
|
112
171
|
}
|
|
@@ -124,11 +183,64 @@ export class MercatorMap extends DiscontinuousMap {
|
|
|
124
183
|
[-x, -y]
|
|
125
184
|
]
|
|
126
185
|
];
|
|
127
|
-
return super.projectPolygon(rings, options).flatMap(part => polygonClipping.intersection(part.coordinates, box).map(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
186
|
+
return super.projectPolygon(rings, options).flatMap(part => polygonClipping.intersection(part.coordinates, box).map(polygon => {
|
|
187
|
+
const traced = tracePolygonConstraints(part.coordinates, polygon, 1e-10, part.edgeProvenance);
|
|
188
|
+
const sources = traced.rings.map(r => r.map(p => this.source(p)));
|
|
189
|
+
traced.owners.forEach((owners, r) => owners.forEach((owner, i) => {
|
|
190
|
+
if (!owner)
|
|
191
|
+
return;
|
|
192
|
+
const [parentRing, parentEdge] = owner, a = part.sourceCoordinates[parentRing][parentEdge], b = part.sourceCoordinates[parentRing][parentEdge + 1], at = sourceArc(a, b);
|
|
193
|
+
for (const j of [i, i + 1]) {
|
|
194
|
+
const q = traced.rings[r][j], first = part.coordinates[parentRing][parentEdge], last = part.coordinates[parentRing][parentEdge + 1];
|
|
195
|
+
if (Math.hypot(q[0] - first[0], q[1] - first[1]) < 1e-10 * this.radius)
|
|
196
|
+
sources[r][j] = [...a];
|
|
197
|
+
else if (Math.hypot(q[0] - last[0], q[1] - last[1]) < 1e-10 * this.radius)
|
|
198
|
+
sources[r][j] = [...b];
|
|
199
|
+
else {
|
|
200
|
+
const latitude = Math.sign(q[1]) * this.limit;
|
|
201
|
+
let lo = 0, hi = 1;
|
|
202
|
+
if (a[1] < latitude === b[1] < latitude)
|
|
203
|
+
throw new Error('Unresolved Mercator source constraint intersection');
|
|
204
|
+
for (let k = 0; k < 52; k++) {
|
|
205
|
+
const mid = (lo + hi) / 2;
|
|
206
|
+
if (at(mid)[1] < latitude === a[1] < latitude)
|
|
207
|
+
lo = mid;
|
|
208
|
+
else
|
|
209
|
+
hi = mid;
|
|
210
|
+
}
|
|
211
|
+
sources[r][j] = at((lo + hi) / 2);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}));
|
|
215
|
+
for (const r of sources)
|
|
216
|
+
r[r.length - 1] = [...r[0]];
|
|
217
|
+
return {
|
|
218
|
+
regionId: part.regionId,
|
|
219
|
+
sourceCoordinates: sources,
|
|
220
|
+
coordinates: sources.map(r => r.map(p => super.projectPoint(p, part.regionId).position)),
|
|
221
|
+
...(options?.polygonEdgeProvenance
|
|
222
|
+
? {
|
|
223
|
+
edgeProvenance: traced.owners.map((owners, r) => owners.map((owner, i) => {
|
|
224
|
+
if (owner) {
|
|
225
|
+
const [pr, pe] = owner;
|
|
226
|
+
return composePolygonEdge(part.edgeProvenance[pr][pe], part.sourceCoordinates[pr][pe], part.sourceCoordinates[pr][pe + 1], sources[r][i], sources[r][i + 1]);
|
|
227
|
+
}
|
|
228
|
+
if (!sources[r]
|
|
229
|
+
.slice(i, i + 2)
|
|
230
|
+
.every(p => Math.abs(Math.abs(p[1]) - this.limit) < 1e-7))
|
|
231
|
+
throw new Error('Unknown Mercator clipping constraint');
|
|
232
|
+
return {
|
|
233
|
+
kind: 'coverage-boundary',
|
|
234
|
+
ring: 0xffffffff,
|
|
235
|
+
segment: 0xffffffff,
|
|
236
|
+
t0: 0,
|
|
237
|
+
t1: 0
|
|
238
|
+
};
|
|
239
|
+
}))
|
|
240
|
+
}
|
|
241
|
+
: {})
|
|
242
|
+
};
|
|
243
|
+
}));
|
|
132
244
|
}
|
|
133
245
|
}
|
|
134
246
|
//# sourceMappingURL=mercator-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mercator-map.js","sourceRoot":"","sources":["../../src/discontinuous/mercator-map.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mercator-map.js","sourceRoot":"","sources":["../../src/discontinuous/mercator-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Position } from "./math.js";
|
|
2
|
+
import type { MapPolygonEdge } from "./map-layout.js";
|
|
3
|
+
export type ConstraintOwner = readonly [ring: number, edge: number] | null;
|
|
4
|
+
/** Attribute boolean output to indexed input constraints before final map
|
|
5
|
+
* projection/resampling. Restore vertices erased by collinear-edge merging.
|
|
6
|
+
* Ambiguous ancestry rejects; target rendering coordinates never identify an
|
|
7
|
+
* original source segment. The caller owns this computational clipping chart.
|
|
8
|
+
*/
|
|
9
|
+
export declare function tracePolygonConstraints(input: Position[][], output: Position[][], tolerance?: number, priorities?: MapPolygonEdge[][], accept?: (point: Position) => boolean, degenerate?: (a: Position, b: Position) => boolean): {
|
|
10
|
+
rings: Position[][];
|
|
11
|
+
owners: (readonly [ring: number, edge: number])[][];
|
|
12
|
+
};
|
|
13
|
+
/** Compose directed fractions through a known parent edge; never search raw
|
|
14
|
+
* input geometry for an original segment after resampling or projection. */
|
|
15
|
+
export declare function composePolygonEdge(parent: MapPolygonEdge, a: Position, b: Position, start: Position, end: Position): MapPolygonEdge;
|
|
16
|
+
//# sourceMappingURL=polygon-constraints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygon-constraints.d.ts","sourceRoot":"","sources":["../../src/discontinuous/polygon-constraints.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,QAAQ,EAAC,kBAAe;AACxD,OAAO,KAAK,EAAC,cAAc,EAAC,wBAAqB;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3E;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,EAAE,EAAE,EACnB,MAAM,EAAE,QAAQ,EAAE,EAAE,EACpB,SAAS,SAAQ,EACjB,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE,EAC/B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,EACrC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,OAAO;;;EAmJnD;AACD;4EAC4E;AAC5E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,QAAQ,EACX,CAAC,EAAE,QAAQ,EACX,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,QAAQ,GACZ,cAAc,CAUhB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// math.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
import { angle, geographic } from "./math.js";
|
|
5
|
+
/** Attribute boolean output to indexed input constraints before final map
|
|
6
|
+
* projection/resampling. Restore vertices erased by collinear-edge merging.
|
|
7
|
+
* Ambiguous ancestry rejects; target rendering coordinates never identify an
|
|
8
|
+
* original source segment. The caller owns this computational clipping chart.
|
|
9
|
+
*/
|
|
10
|
+
export function tracePolygonConstraints(input, output, tolerance = 1e-10, priorities, accept, degenerate) {
|
|
11
|
+
const constraints = input.flatMap((ring, r) => ring.slice(0, -1).map((a, i) => ({ a, b: ring[i + 1], r, i })));
|
|
12
|
+
let work = 0;
|
|
13
|
+
const tick = () => {
|
|
14
|
+
if (++work > 20000000)
|
|
15
|
+
throw new Error('Polygon constraint work limit exceeded');
|
|
16
|
+
};
|
|
17
|
+
const fraction = (p, a, b) => {
|
|
18
|
+
const dx = b[0] - a[0], dy = b[1] - a[1], l = dx * dx + dy * dy;
|
|
19
|
+
return l ? ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / l : NaN;
|
|
20
|
+
};
|
|
21
|
+
const on = (p, a, b) => {
|
|
22
|
+
tick();
|
|
23
|
+
const t = fraction(p, a, b), length = Math.hypot(b[0] - a[0], b[1] - a[1]);
|
|
24
|
+
return (length > 0 &&
|
|
25
|
+
t >= -tolerance &&
|
|
26
|
+
t <= 1 + tolerance &&
|
|
27
|
+
Math.hypot(p[0] - a[0] - t * (b[0] - a[0]), p[1] - a[1] - t * (b[1] - a[1])) <=
|
|
28
|
+
tolerance * Math.max(1, length));
|
|
29
|
+
};
|
|
30
|
+
const boxes = constraints.map(c => [
|
|
31
|
+
Math.min(c.a[0], c.b[0]),
|
|
32
|
+
Math.min(c.a[1], c.b[1]),
|
|
33
|
+
Math.max(c.a[0], c.b[0]),
|
|
34
|
+
Math.max(c.a[1], c.b[1])
|
|
35
|
+
]);
|
|
36
|
+
const build = (ids) => {
|
|
37
|
+
const box = [Infinity, Infinity, -Infinity, -Infinity];
|
|
38
|
+
for (const id of ids) {
|
|
39
|
+
tick();
|
|
40
|
+
const b = boxes[id];
|
|
41
|
+
box[0] = Math.min(box[0], b[0]);
|
|
42
|
+
box[1] = Math.min(box[1], b[1]);
|
|
43
|
+
box[2] = Math.max(box[2], b[2]);
|
|
44
|
+
box[3] = Math.max(box[3], b[3]);
|
|
45
|
+
}
|
|
46
|
+
if (ids.length <= 16)
|
|
47
|
+
return { box, ids };
|
|
48
|
+
const axis = box[2] - box[0] >= box[3] - box[1] ? 0 : 1;
|
|
49
|
+
ids.sort((a, b) => {
|
|
50
|
+
tick();
|
|
51
|
+
return boxes[a][axis] + boxes[a][axis + 2] - boxes[b][axis] - boxes[b][axis + 2];
|
|
52
|
+
});
|
|
53
|
+
const middle = Math.floor(ids.length / 2);
|
|
54
|
+
return { box, left: build(ids.slice(0, middle)), right: build(ids.slice(middle)) };
|
|
55
|
+
};
|
|
56
|
+
const root = build(constraints.map((_, i) => i));
|
|
57
|
+
const padding = tolerance * Math.max(1, root.box[2] - root.box[0], root.box[3] - root.box[1]);
|
|
58
|
+
const query = (a, b) => {
|
|
59
|
+
const box = [
|
|
60
|
+
Math.min(a[0], b[0]) - padding,
|
|
61
|
+
Math.min(a[1], b[1]) - padding,
|
|
62
|
+
Math.max(a[0], b[0]) + padding,
|
|
63
|
+
Math.max(a[1], b[1]) + padding
|
|
64
|
+
], ids = [];
|
|
65
|
+
const overlaps = (b) => b[0] <= box[2] && b[2] >= box[0] && b[1] <= box[3] && b[3] >= box[1];
|
|
66
|
+
const visit = (node) => {
|
|
67
|
+
tick();
|
|
68
|
+
if (!overlaps(node.box))
|
|
69
|
+
return;
|
|
70
|
+
if (node.ids) {
|
|
71
|
+
for (const id of node.ids) {
|
|
72
|
+
tick();
|
|
73
|
+
if (overlaps(boxes[id]))
|
|
74
|
+
ids.push(id);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
visit(node.left);
|
|
79
|
+
visit(node.right);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
visit(root);
|
|
83
|
+
return ids.map(id => constraints[id]);
|
|
84
|
+
};
|
|
85
|
+
const rings = [], owners = [];
|
|
86
|
+
for (const ring of output) {
|
|
87
|
+
const points = [];
|
|
88
|
+
for (let i = 1; i < ring.length; i++) {
|
|
89
|
+
const a = ring[i - 1], b = ring[i];
|
|
90
|
+
if (a.every((v, k) => v === b[k]))
|
|
91
|
+
continue;
|
|
92
|
+
const breaks = [{ t: 0, p: a }];
|
|
93
|
+
for (const c of query(a, b))
|
|
94
|
+
if (on(c.a, a, b) && (!accept || accept(c.a))) {
|
|
95
|
+
const t = fraction(c.a, a, b);
|
|
96
|
+
if (t > 1e-12 && t < 1 - 1e-12)
|
|
97
|
+
breaks.push({ t, p: c.a });
|
|
98
|
+
}
|
|
99
|
+
breaks.sort((a, b) => a.t - b.t);
|
|
100
|
+
for (const item of breaks)
|
|
101
|
+
if (!points.length ||
|
|
102
|
+
Math.hypot(...points[points.length - 1].map((v, k) => v - item.p[k])) > 1e-14)
|
|
103
|
+
points.push([...item.p]);
|
|
104
|
+
}
|
|
105
|
+
if (points.length < 3)
|
|
106
|
+
continue;
|
|
107
|
+
points.push([...points[0]]);
|
|
108
|
+
const tags = [];
|
|
109
|
+
for (let i = 1; i < points.length; i++) {
|
|
110
|
+
const a = points[i - 1], b = points[i];
|
|
111
|
+
if (degenerate?.(a, b)) {
|
|
112
|
+
tags.push(null);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
let candidates = query(a, b).filter(c => on(a, c.a, c.b) && on(b, c.a, c.b));
|
|
116
|
+
const same = (p, q) => Math.hypot(...p.map((v, k) => v - q[k])) <=
|
|
117
|
+
64 * Number.EPSILON * Math.max(1, ...p.map(Math.abs), ...q.map(Math.abs));
|
|
118
|
+
const exact = candidates.filter(c => (same(a, c.a) && same(b, c.b)) || (same(a, c.b) && same(b, c.a)));
|
|
119
|
+
if (exact.length)
|
|
120
|
+
candidates = exact;
|
|
121
|
+
if (candidates.some(c => priorities?.[c.r]?.[c.i]?.kind === 'source-boundary'))
|
|
122
|
+
candidates = candidates.filter(c => priorities?.[c.r]?.[c.i]?.kind === 'source-boundary');
|
|
123
|
+
if (candidates.length > 1) {
|
|
124
|
+
const score = (c) => Math.max(...[a, b].map(p => {
|
|
125
|
+
const t = Math.min(1, Math.max(0, fraction(p, c.a, c.b)));
|
|
126
|
+
return Math.hypot(p[0] - c.a[0] - t * (c.b[0] - c.a[0]), p[1] - c.a[1] - t * (c.b[1] - c.a[1]));
|
|
127
|
+
}));
|
|
128
|
+
candidates.sort((a, b) => score(a) - score(b));
|
|
129
|
+
const epsilon = 64 * Number.EPSILON * Math.max(1, ...a.map(Math.abs), ...b.map(Math.abs));
|
|
130
|
+
if (score(candidates[1]) - score(candidates[0]) > epsilon)
|
|
131
|
+
candidates = [candidates[0]];
|
|
132
|
+
else if (Math.hypot(a[0] - b[0], a[1] - b[1]) <= 2 * epsilon)
|
|
133
|
+
candidates = [];
|
|
134
|
+
else
|
|
135
|
+
throw new Error('Ambiguous polygon clipping constraint ancestry');
|
|
136
|
+
}
|
|
137
|
+
tags.push(candidates.length ? [candidates[0].r, candidates[0].i] : null);
|
|
138
|
+
}
|
|
139
|
+
rings.push(points);
|
|
140
|
+
owners.push(tags);
|
|
141
|
+
}
|
|
142
|
+
return { rings, owners };
|
|
143
|
+
}
|
|
144
|
+
/** Compose directed fractions through a known parent edge; never search raw
|
|
145
|
+
* input geometry for an original segment after resampling or projection. */
|
|
146
|
+
export function composePolygonEdge(parent, a, b, start, end) {
|
|
147
|
+
if (parent.kind !== 'source-boundary')
|
|
148
|
+
return { ...parent };
|
|
149
|
+
const v = geographic(a), length = angle(v, geographic(b));
|
|
150
|
+
const parameter = (p) => (length ? Math.min(1, angle(v, geographic(p)) / length) : 0);
|
|
151
|
+
return {
|
|
152
|
+
...parent,
|
|
153
|
+
t0: parent.t0 + parameter(start) * (parent.t1 - parent.t0),
|
|
154
|
+
t1: parent.t0 + parameter(end) * (parent.t1 - parent.t0)
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=polygon-constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygon-constraints.js","sourceRoot":"","sources":["../../src/discontinuous/polygon-constraints.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,16 @@ export type PreparedMapGeometry = {
|
|
|
59
59
|
paths: PreparedMapVertices & {
|
|
60
60
|
parts: PreparedMapPathPart[];
|
|
61
61
|
pathStarts: Uint32Array;
|
|
62
|
+
provenance?: {
|
|
63
|
+
sourceSegmentIndices?: Uint32Array;
|
|
64
|
+
sourceSegmentParameters?: Float64Array;
|
|
65
|
+
sourceVertexIndices?: Uint32Array;
|
|
66
|
+
sourceDistances?: Float64Array;
|
|
67
|
+
distanceRadius?: number;
|
|
68
|
+
/** Per part: source endpoint, coverage boundary, cut, or continuous join. */
|
|
69
|
+
startReasons?: string[];
|
|
70
|
+
endReasons?: string[];
|
|
71
|
+
};
|
|
62
72
|
};
|
|
63
73
|
polygons: PreparedMapVertices & {
|
|
64
74
|
parts: PreparedMapPart[];
|
|
@@ -66,11 +76,28 @@ export type PreparedMapGeometry = {
|
|
|
66
76
|
ringStarts: Uint32Array;
|
|
67
77
|
/** Ring offsets for polygon parts, with a terminal sentinel. Outer ring comes first. */
|
|
68
78
|
polygonStarts: Uint32Array;
|
|
79
|
+
/** One edge from each vertex to the next; repeated closing vertices have kind 0. */
|
|
80
|
+
edgeProvenance?: {
|
|
81
|
+
kinds: Uint8Array;
|
|
82
|
+
sourceRingIndices: Uint32Array;
|
|
83
|
+
sourceSegmentIndices: Uint32Array;
|
|
84
|
+
sourceParameterRanges: Float64Array;
|
|
85
|
+
};
|
|
69
86
|
};
|
|
70
87
|
};
|
|
71
88
|
/** Static preparation controls. This does not triangulate, interpolate attributes or pose meshes. */
|
|
72
89
|
export type MapPrepareFeaturesOptions = {
|
|
73
90
|
sampling?: MapSamplingOptions;
|
|
91
|
+
provenance?: {
|
|
92
|
+
sourceSegments?: boolean;
|
|
93
|
+
boundaries?: boolean;
|
|
94
|
+
polygonEdges?: boolean;
|
|
95
|
+
/** Source minor-great-circle distance in meters on the declared sphere. */
|
|
96
|
+
distances?: {
|
|
97
|
+
metric: 'spherical';
|
|
98
|
+
radius: number;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
74
101
|
/** Project original polygon boundaries separately; default true. */
|
|
75
102
|
polygonOutlines?: boolean;
|
|
76
103
|
/** Directed global spherical polygons; original outlines never include atlas connectors. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-features.d.ts","sourceRoot":"","sources":["../../src/discontinuous/prepare-features.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,mBAAmB,EAAC,6BAA0B;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,wBAAqB;AAC5C,OAAO,KAAK,EAAqB,kBAAkB,EAAC,wBAAqB;AAEzE,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAC1B;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CAAC,GAC/C;IAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAA;CAAC,GAChF;IAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;CAAC,GAC/F;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;CAAC,GAC7F;IAAC,IAAI,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAA;CAAC,CAAC;AAC5E,0FAA0F;AAC1F,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AACF,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IAClD,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACjC,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AACF,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,YAAY,CAAC;IACxB,eAAe,EAAE,YAAY,CAAC;CAC/B,CAAC;AACF,+FAA+F;AAC/F,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6EAA6E;IAC7E,MAAM,EAAE,mBAAmB,GAAG;QAAC,KAAK,EAAE,eAAe,EAAE,CAAA;KAAC,CAAC;IACzD,KAAK,EAAE,mBAAmB,GAAG;
|
|
1
|
+
{"version":3,"file":"prepare-features.d.ts","sourceRoot":"","sources":["../../src/discontinuous/prepare-features.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,25 @@ export function prepareMapFeatures(map, features, options = {}) {
|
|
|
32
32
|
throw new Error('Expected a feature array');
|
|
33
33
|
if (options.polygonOutlines !== undefined && typeof options.polygonOutlines !== 'boolean')
|
|
34
34
|
throw new Error('polygonOutlines must be boolean');
|
|
35
|
+
const provenance = options.provenance;
|
|
36
|
+
if (provenance !== undefined &&
|
|
37
|
+
(!provenance || typeof provenance !== 'object' || Array.isArray(provenance)))
|
|
38
|
+
throw new Error('Unsupported provenance policy');
|
|
39
|
+
if (provenance?.distances !== undefined &&
|
|
40
|
+
(!provenance.distances || typeof provenance.distances !== 'object'))
|
|
41
|
+
throw new Error('Unsupported provenance distance policy');
|
|
42
|
+
if (provenance &&
|
|
43
|
+
(typeof provenance !== 'object' ||
|
|
44
|
+
Object.keys(provenance).some(k => !['sourceSegments', 'boundaries', 'distances', 'polygonEdges'].includes(k)) ||
|
|
45
|
+
[provenance.sourceSegments, provenance.boundaries, provenance.polygonEdges].some(v => v !== undefined && typeof v !== 'boolean') ||
|
|
46
|
+
(provenance.distances &&
|
|
47
|
+
(provenance.distances.metric !== 'spherical' ||
|
|
48
|
+
!Number.isFinite(provenance.distances.radius) ||
|
|
49
|
+
provenance.distances.radius <= 0))))
|
|
50
|
+
throw new Error('Unsupported provenance policy');
|
|
51
|
+
const edgeKinds = [], edgeRings = [], edgeSegments = [], edgeParameters = [];
|
|
52
|
+
const lineage = Boolean(provenance?.sourceSegments || provenance?.boundaries || provenance?.distances);
|
|
53
|
+
const segments = [], parameters = [], originalVertices = [], distances = [], startReasons = [], endReasons = [];
|
|
35
54
|
const regionIds = map.regions.map(r => r.id), regionIndices = new Map(regionIds.map((id, i) => [id, i]));
|
|
36
55
|
const points = vertices(), paths = vertices(), polygons = vertices();
|
|
37
56
|
const pointParts = [], pathParts = [], polygonParts = [];
|
|
@@ -52,7 +71,27 @@ export function prepareMapFeatures(map, features, options = {}) {
|
|
|
52
71
|
const isRing = ringIndex !== undefined;
|
|
53
72
|
if (isRing && !closed(line))
|
|
54
73
|
line.push([...line[0]]);
|
|
55
|
-
for (const p of map.projectLine(line,
|
|
74
|
+
for (const p of map.projectLine(line, {
|
|
75
|
+
...options.sampling,
|
|
76
|
+
pathProvenance: lineage,
|
|
77
|
+
pathDistances: Boolean(provenance?.distances),
|
|
78
|
+
pathBoundaries: Boolean(provenance?.boundaries)
|
|
79
|
+
})) {
|
|
80
|
+
if (lineage) {
|
|
81
|
+
if (!p.provenance)
|
|
82
|
+
throw new Error('Map backend does not support path provenance');
|
|
83
|
+
if (provenance?.sourceSegments) {
|
|
84
|
+
segments.push(...p.provenance.segments);
|
|
85
|
+
parameters.push(...p.provenance.parameters);
|
|
86
|
+
originalVertices.push(...p.provenance.vertices);
|
|
87
|
+
}
|
|
88
|
+
if (provenance?.distances)
|
|
89
|
+
distances.push(...p.provenance.angularDistances.map(d => d * provenance.distances.radius));
|
|
90
|
+
if (provenance?.boundaries) {
|
|
91
|
+
startReasons.push(p.provenance.startReason);
|
|
92
|
+
endReasons.push(p.provenance.endReason);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
56
95
|
append(paths, p.coordinates, p.sourceCoordinates);
|
|
57
96
|
pathParts.push({
|
|
58
97
|
...part(featureIndex, geometryPath, p.regionId),
|
|
@@ -68,10 +107,38 @@ export function prepareMapFeatures(map, features, options = {}) {
|
|
|
68
107
|
return;
|
|
69
108
|
const rings = input.map(r => r.map(position));
|
|
70
109
|
const parts = options.sphericalCuts
|
|
71
|
-
? map.projectGlobalPolygon(rings, {
|
|
72
|
-
|
|
110
|
+
? map.projectGlobalPolygon(rings, {
|
|
111
|
+
...options.sampling,
|
|
112
|
+
...options.sphericalCuts,
|
|
113
|
+
polygonEdgeProvenance: provenance?.polygonEdges
|
|
114
|
+
})
|
|
115
|
+
: map.projectPolygon(rings, {
|
|
116
|
+
...options.sampling,
|
|
117
|
+
polygonEdgeProvenance: provenance?.polygonEdges
|
|
118
|
+
});
|
|
73
119
|
for (const p of parts) {
|
|
74
120
|
for (let i = 0; i < p.coordinates.length; i++) {
|
|
121
|
+
if (provenance?.polygonEdges) {
|
|
122
|
+
const edges = p.edgeProvenance?.[i];
|
|
123
|
+
if (!edges)
|
|
124
|
+
throw new Error('Map backend does not support polygon edge provenance');
|
|
125
|
+
const kinds = [
|
|
126
|
+
'source-boundary',
|
|
127
|
+
'coverage-boundary',
|
|
128
|
+
'chart-cut',
|
|
129
|
+
'continuous-chart-join'
|
|
130
|
+
];
|
|
131
|
+
for (const edge of edges) {
|
|
132
|
+
edgeKinds.push(kinds.indexOf(edge.kind) + 1);
|
|
133
|
+
edgeRings.push(edge.ring);
|
|
134
|
+
edgeSegments.push(edge.segment);
|
|
135
|
+
edgeParameters.push(edge.t0, edge.t1);
|
|
136
|
+
}
|
|
137
|
+
edgeKinds.push(0);
|
|
138
|
+
edgeRings.push(0xffffffff);
|
|
139
|
+
edgeSegments.push(0xffffffff);
|
|
140
|
+
edgeParameters.push(0, 0);
|
|
141
|
+
}
|
|
75
142
|
append(polygons, p.coordinates[i], p.sourceCoordinates[i]);
|
|
76
143
|
ringStarts.push(polygons.positions.length / 2);
|
|
77
144
|
}
|
|
@@ -137,12 +204,46 @@ export function prepareMapFeatures(map, features, options = {}) {
|
|
|
137
204
|
featureIds,
|
|
138
205
|
regionIds,
|
|
139
206
|
points: { ...pack(points), parts: pointParts },
|
|
140
|
-
paths: {
|
|
207
|
+
paths: {
|
|
208
|
+
...pack(paths),
|
|
209
|
+
parts: pathParts,
|
|
210
|
+
pathStarts: new Uint32Array(pathStarts),
|
|
211
|
+
...(lineage
|
|
212
|
+
? {
|
|
213
|
+
provenance: {
|
|
214
|
+
...(provenance?.sourceSegments
|
|
215
|
+
? {
|
|
216
|
+
sourceSegmentIndices: new Uint32Array(segments),
|
|
217
|
+
sourceSegmentParameters: new Float64Array(parameters),
|
|
218
|
+
sourceVertexIndices: new Uint32Array(originalVertices)
|
|
219
|
+
}
|
|
220
|
+
: {}),
|
|
221
|
+
...(provenance?.distances
|
|
222
|
+
? {
|
|
223
|
+
sourceDistances: new Float64Array(distances),
|
|
224
|
+
distanceRadius: provenance.distances.radius
|
|
225
|
+
}
|
|
226
|
+
: {}),
|
|
227
|
+
...(provenance?.boundaries ? { startReasons, endReasons } : {})
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
: {})
|
|
231
|
+
},
|
|
141
232
|
polygons: {
|
|
142
233
|
...pack(polygons),
|
|
143
234
|
parts: polygonParts,
|
|
144
235
|
ringStarts: new Uint32Array(ringStarts),
|
|
145
|
-
polygonStarts: new Uint32Array(polygonStarts)
|
|
236
|
+
polygonStarts: new Uint32Array(polygonStarts),
|
|
237
|
+
...(provenance?.polygonEdges
|
|
238
|
+
? {
|
|
239
|
+
edgeProvenance: {
|
|
240
|
+
kinds: new Uint8Array(edgeKinds),
|
|
241
|
+
sourceRingIndices: new Uint32Array(edgeRings),
|
|
242
|
+
sourceSegmentIndices: new Uint32Array(edgeSegments),
|
|
243
|
+
sourceParameterRanges: new Float64Array(edgeParameters)
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
: {})
|
|
146
247
|
}
|
|
147
248
|
};
|
|
148
249
|
}
|