@allmaps/transform
Version:
Coordinate transformation functions
82 lines (81 loc) • 7.23 kB
TypeScript
import { BaseTransformation } from '../transformation-types/BaseTransformation.js';
import type { Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, Geometry, TypedLineString, TypedPolygon, TypedMultiPoint, TypedMultiLineString, TypedMultiPolygon, TypedGeometry, Bbox } from '@allmaps/types';
import type { GeneralGcp, GeneralGcpAndDistortions, TransformationType, GeneralGcpTransformOptions, GeneralGcpTransformerOptions } from '../shared/types.js';
/**
* Abstract class for Ground Control Point Transformers.
*
* This class contains all logic to transform geometries
* made available trough the GeneralGcpTransform and GcpTransform classes.
*
* The extending GeneralGcpTransform class handles the general case where:
* - We read in Ground Control Points using the GeneralGcp type, with `source` and `destination` fields.
* - We use the terms 'forward' and 'backward' for the two transformations.
* - Both source and destination space are exected to be 2D cartesian spaces with the same handedness (x- and y-axes have the same orientations).
*
* The extending GcpTransform class handles the typical Allmaps case where:
* - We read in Ground Control Points using the Gcp type, with `resource` and `geo` fields.
* - We use the terms 'toGeo' for the 'forward' transformation and 'toResource' for the 'backward' transformation.
* - The `differentHandedness` setting is `true` by default, since we expect the resource coordinates to identify pixels on an image, with origin in the top left and the y-axis pointing down.
* */
export declare abstract class BaseGcpTransformer {
protected generalGcpsInternal: GeneralGcp[];
private sourcePointsInternal;
private destinationPointsInternal;
readonly type: TransformationType;
protected transformerOptions: GeneralGcpTransformerOptions;
protected forwardTransformation?: BaseTransformation;
protected backwardTransformation?: BaseTransformation;
/**
* Create a BaseGcpTransformer
*
* @param generalGcps - An array of General Ground Control Points (GCPs)
* @param type - The transformation type
* @param partialGeneralGcpTransformerOptions - General GCP Transformer options
*/ constructor(generalGcps: GeneralGcp[], type?: TransformationType, partialGeneralGcpTransformerOptions?: Partial<GeneralGcpTransformerOptions>);
/**
* Get the forward transformation. Create if it doesn't exist yet.
*/
protected getForwardTransformationInternal(): BaseTransformation;
/**
* Get the backward transformation. Create if it doesn't exist yet.
*/
protected getBackwardTransformationInternal(): BaseTransformation;
/**
* Create the (forward or backward) transformation.
*
* Results in forward transformation if source and destination points are entered as such.
* Results in backward if source points are entered for destination points and vice versa.
*
* Results in a transformation of this instance's transformation type.
*
* @param sourcePoints - source points
* @param destinationPoints - destination points
* @returns Transformation
*/
private createTransformation;
protected transformForwardInternal<P = Point>(sourcePoint: Point, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): P;
protected transformForwardInternal<P = Point>(sourceLineString: LineString, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedLineString<P>;
protected transformForwardInternal<P = Point>(sourcePolygon: Polygon, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedPolygon<P>;
protected transformForwardInternal<P = Point>(sourceMultiPoint: MultiPoint, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedMultiPoint<P>;
protected transformForwardInternal<P = Point>(sourceMultiLineString: MultiLineString, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedMultiLineString<P>;
protected transformForwardInternal<P = Point>(sourceMultiPolygon: MultiPolygon, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedMultiPolygon<P>;
protected transformForwardInternal<P = Point>(sourceGeometry: Geometry, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedGeometry<P>;
protected transformBackwardInternal<P = Point>(destinationPoint: Point, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): P;
protected transformBackwardInternal<P = Point>(destinationLineString: LineString, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedLineString<P>;
protected transformBackwardInternal<P = Point>(destinationPolygon: Polygon, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedPolygon<P>;
protected transformBackwardInternal<P = Point>(destinationMultiPoint: MultiPoint, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedMultiPoint<P>;
protected transformBackwardInternal<P = Point>(destinationMultiLineString: MultiLineString, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedMultiLineString<P>;
protected transformBackwardInternal<P = Point>(destinationMultiPolygon: MultiPolygon, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedMultiPolygon<P>;
protected transformBackwardInternal<P = Point>(destinationGeometry: Geometry, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>, generalGcpToP?: (generalGcp: GeneralGcpAndDistortions) => P): TypedGeometry<P>;
private transformPointForwardInternal;
private transformPointBackwardInternal;
private transformLineStringForwardInternal;
private transformLineStringBackwardInternal;
private transformRingForwardInternal;
private transformRingBackwardInternal;
private transformPolygonForwardInternal;
private transformPolygonBackwardInternal;
protected isNonWarping(): boolean;
protected getForwardTransformationResolutionInternal(sourceBbox?: Bbox, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>): number | undefined;
protected getBackwardTransformationResolutionInternal(destinationBbox?: Bbox, partialGeneralGcpTransformOptions?: Partial<GeneralGcpTransformOptions>): number | undefined;
}