@nika-js/onlymap 0.5.6 → 0.5.7

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.
@@ -1,4 +1,4 @@
1
- import { r as p, n as d } from "./index-G3hmIs2P.js";
1
+ import { r as p, n as d } from "./index-CUKgoX_E.js";
2
2
  function g(t) {
3
3
  if (t == null) return !0;
4
4
  const e = t, n = e.id?.code;
@@ -0,0 +1,83 @@
1
+ import type { LayerAssetState } from "./ir";
2
+ export type ImageBounds = [west: number, south: number, east: number, north: number];
3
+ export interface DroneExifData {
4
+ latitude: number;
5
+ longitude: number;
6
+ RelativeAltitude: number;
7
+ ExifImageWidth: number;
8
+ ExifImageHeight: number;
9
+ GimbalYawDegree: number;
10
+ GimbalPitchDegree: number;
11
+ GimbalRollDegree: number;
12
+ FocalLength?: number;
13
+ Make?: string;
14
+ Model?: string;
15
+ GPSAltitude?: number;
16
+ }
17
+ export interface DroneImageMetadata {
18
+ /** Normalized source metadata. GPS remains the camera position, not the pitch-adjusted footprint center. */
19
+ exifData: DroneExifData;
20
+ sourceCenter: [longitude: number, latitude: number];
21
+ adjustedCenter: [longitude: number, latitude: number];
22
+ gsdX: number;
23
+ gsdY: number;
24
+ fovDegrees: number;
25
+ sensorWidthMm: number;
26
+ sensorHeightMm: number;
27
+ nonNadir: boolean;
28
+ pixelRotationDegrees: number;
29
+ }
30
+ export interface ResolveImageOverlayOptions {
31
+ /** Manual camera overrides for models absent from the bundled database. Width and height must be supplied together. */
32
+ sensorWidthMm?: number;
33
+ sensorHeightMm?: number;
34
+ /** Overrides EXIF FocalLength. No guessed focal-length fallback is used. */
35
+ focalLengthMm?: number;
36
+ }
37
+ export interface ResolvedImageOverlay {
38
+ /** Original JPEG when no pixel transform was needed; otherwise a transparency-preserving PNG. */
39
+ image: Blob;
40
+ bounds: ImageBounds;
41
+ metadata: DroneImageMetadata;
42
+ }
43
+ export interface DroneSensorDimensions {
44
+ widthMm: number;
45
+ heightMm: number;
46
+ }
47
+ /**
48
+ * PlanetGPT's stage-1 camera roster. Pixel pitch was present in its tuple but
49
+ * never participates in FOV/GSD, so this contract retains only used values.
50
+ */
51
+ export declare const DRONE_SENSOR_DATABASE: Readonly<Record<string, DroneSensorDimensions>>;
52
+ /** Normalize exifr's permissive output into the serializable contract used by all later stages. */
53
+ export declare function normalizeDroneExif(rawValue: unknown): DroneExifData;
54
+ export declare function determineDroneFovDegrees(exif: DroneExifData, options?: ResolveImageOverlayOptions): {
55
+ fovDegrees: number;
56
+ sensor: DroneSensorDimensions;
57
+ focalLengthMm: number;
58
+ };
59
+ /** PlanetGPT-compatible non-nadir center approximation. */
60
+ export declare function adjustCenterForPitch(latitude: number, longitude: number, altitude: number, pitch: number, yaw: number): {
61
+ latitude: number;
62
+ longitude: number;
63
+ };
64
+ /** PlanetGPT-compatible yaw-expanded, north-aligned WGS84 footprint. */
65
+ export declare function calculateDroneFootprint(latitude: number, longitude: number, altitude: number, yaw: number, imageWidth: number, imageHeight: number, diagonalFovDegrees: number): {
66
+ bounds: ImageBounds;
67
+ gsdX: number;
68
+ gsdY: number;
69
+ };
70
+ /**
71
+ * Public one-shot resolver. Hosts with persistence upload `image`, store
72
+ * `bounds` + `metadata`, and reconstruct later with explicit bounds so
73
+ * collaborators/reloads never re-read EXIF.
74
+ */
75
+ export declare function resolveImageOverlay(input: string | Blob, options?: ResolveImageOverlayOptions): Promise<ResolvedImageOverlay>;
76
+ /**
77
+ * Shared synchronous IR bridge for DOM and programmatic front ends. It starts
78
+ * one async resolution, returns a pending placeholder, and asks every waiting
79
+ * map/controller to reconcile once the cached result settles.
80
+ */
81
+ export declare function resolveImageOverlayProps(props: Record<string, unknown>, onLoaded: () => void, snapshot?: boolean): LayerAssetState;
82
+ /** @internal Test isolation; URL caches otherwise intentionally live for the page, like Data Layer URL caches. */
83
+ export declare function resetImageOverlayCacheForTests(): void;
@@ -1,4 +1,4 @@
1
- import { ak as Bt, ax as Xt, ay as Yt, az as Us } from "./index-G3hmIs2P.js";
1
+ import { ak as Bt, ax as Xt, ay as Yt, az as Us } from "./index-CUKgoX_E.js";
2
2
  import { w as gs, t as Hs, f as Ws, m as Qs } from "./mgrs-BY9bIvp4.js";
3
3
  import { c as Xs } from "./convert-arrow-schema-DrAihRf9.js";
4
4
  import { y as Ys, A as bt, a as Ks, z as Vs, R as Zs } from "./recordbatch-Bpc0uxFn.js";