s2-tools
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
785 lines • 25.9 kB
TypeScript
/**
* Schema for PROJJSON (v0.7)
* @see https://proj.org/schemas/v0.7/projjson.schema.json
*/
export interface PROJJSON {
$schema?: string;
type?: string;
name?: string;
source_crs?: CRS;
target_crs?: CRS;
method?: Method;
parameters?: ParameterValue[];
id?: Id;
ids?: Id[];
accuracy?: string;
scope?: string;
area?: string;
bbox?: BBox;
vertical_extent?: VerticalExtent;
temporal_extent?: TemporalExtent;
remarks?: string;
usages?: Usage[];
}
/** Coordinate Reference System */
export type CRS = BoundCRS | CompoundCRS | EngineeringCRS | GeodeticCRS | ProjectedCRS | TemporalCRS | VerticalCRS;
/** Bounding Box */
export interface BBox {
east_longitude: number;
west_longitude: number;
south_latitude: number;
north_latitude: number;
}
/** Vertical Extent */
export interface VerticalExtent {
minimum: number;
maximum: number;
unit?: Unit;
}
/** Temporal Extent */
export interface TemporalExtent {
start: string;
end: string;
}
/** ID Object */
export interface Id {
authority: string;
code: string | number;
version?: string | number;
authority_citation?: string;
uri?: string;
}
/** Usage Object */
export interface Usage {
scope?: string;
area?: string;
bbox?: BBox;
vertical_extent?: VerticalExtent;
temporal_extent?: TemporalExtent;
}
/** Parameter Value */
export interface ParameterValue {
$schema?: string;
type: 'ParameterValue';
name: string;
value: string | number;
unit?: Unit;
id?: Id;
ids?: Id[];
}
/** Method Object */
export interface Method {
$schema?: string;
type: 'OperationMethod';
name: string;
id?: Id;
ids?: Id[];
}
/** Unit Definition */
export type Unit = 'metre' | 'degree' | 'unity' | {
type: 'LinearUnit' | 'AngularUnit' | 'ScaleUnit' | 'TimeUnit' | 'ParametricUnit' | 'Unit';
name: string;
conversion_factor?: number;
id?: Id;
ids?: Id[];
};
/** CRS Variants */
export interface BoundCRS {
type: 'BoundCRS';
name: string;
source_crs: CRS;
target_crs: CRS;
transformation: AbridgedTransformation;
scope?: string;
area?: string;
bbox?: BBox;
vertical_extent?: VerticalExtent;
temporal_extent?: TemporalExtent;
usages?: Usage[];
remarks?: string;
id?: Id;
ids?: Id[];
}
/** Abridged Transformation */
export interface AbridgedTransformation {
type: 'AbridgedTransformation';
name: string;
source_crs?: CRS;
method: Method;
parameters: ParameterValue[];
id?: Id;
ids?: Id[];
}
/**
* CompoundCRS Interface
*
* Represents a compound coordinate reference system, which combines two or more coordinate reference systems.
*/
export interface CompoundCRS {
/** Indicates the type of CRS. Always "CompoundCRS" for this interface. */
type: 'CompoundCRS';
/** The name of the compound CRS. */
name: string;
/**
* Array of component CRS objects.
* Each component is a CRS, such as GeodeticCRS, VerticalCRS, etc.
*/
components: CRS[];
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the CRS. */
scope?: string;
/** The area of use for the CRS. */
area?: string;
/** The bounding box of the CRS. */
bbox?: BBox;
/** The vertical extent of the CRS. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the CRS. */
temporal_extent?: TemporalExtent;
/** An array of usages for the CRS. */
usages?: Usage[];
/** Remarks or additional information about the CRS. */
remarks?: string;
/** An identifier for the CRS. */
id?: Id;
/** An array of identifiers for the CRS. */
ids?: Id[];
}
/**
* EngineeringCRS Interface
*
* Represents an engineering coordinate reference system.
*/
export interface EngineeringCRS {
/** Indicates the type of CRS. Always "EngineeringCRS" for this interface. */
type: 'EngineeringCRS';
/** The name of the engineering CRS. */
name: string;
/** The engineering datum associated with this CRS. */
datum: EngineeringDatum;
/** The coordinate system used in this CRS. */
coordinate_system?: CoordinateSystem;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the CRS. */
scope?: string;
/** The area of use for the CRS. */
area?: string;
/** The bounding box of the CRS. */
bbox?: BBox;
/** The vertical extent of the CRS. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the CRS. */
temporal_extent?: TemporalExtent;
/** An array of usages for the CRS. */
usages?: Usage[];
/** Remarks or additional information about the CRS. */
remarks?: string;
/** An identifier for the CRS. */
id?: Id;
/** An array of identifiers for the CRS. */
ids?: Id[];
}
/**
* EngineeringDatum Interface
*
* Represents the datum associated with an engineering CRS.
*/
export interface EngineeringDatum {
/** Indicates the type of datum. Always "EngineeringDatum" for this interface. */
type: 'EngineeringDatum';
/** The name of the datum. */
name: string;
/** Anchor point of the datum. */
anchor?: string;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the datum. */
scope?: string;
/** The area of use for the datum. */
area?: string;
/** The bounding box of the datum. */
bbox?: BBox;
/** The vertical extent of the datum. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the datum. */
temporal_extent?: TemporalExtent;
/** An array of usages for the datum. */
usages?: Usage[];
/** Remarks or additional information about the datum. */
remarks?: string;
/** An identifier for the datum. */
id?: Id;
/** An array of identifiers for the datum. */
ids?: Id[];
}
/**
* CoordinateSystem Interface
*
* Represents a coordinate system, which defines the axes and their properties.
*/
export interface CoordinateSystem {
/** Indicates the type of coordinate system. Always "CoordinateSystem" for this interface. */
type: 'CoordinateSystem';
/** The name of the coordinate system. */
name?: string;
/**
* The subtype of the coordinate system.
* Examples include Cartesian, spherical, ellipsoidal, vertical, etc.
*/
subtype: 'Cartesian' | 'spherical' | 'ellipsoidal' | 'vertical' | 'ordinal' | 'parametric' | 'affine' | 'TemporalDateTime' | 'TemporalCount' | 'TemporalMeasure';
/** An array of axis definitions that describe the coordinate system. */
axis: Axis[];
/** The schema URL or identifier. */
$schema?: string;
/** An identifier for the coordinate system. */
id?: Id;
/** An array of identifiers for the coordinate system. */
ids?: Id[];
}
/**
* Axis Interface
*
* Represents an individual axis in a coordinate system.
*/
export interface Axis {
/** Indicates the type of axis. Always "Axis" for this interface. */
type: 'Axis';
/** The name of the axis. */
name: string;
/** Abbreviation for the axis name. */
abbreviation: string;
/**
* The direction of the axis.
* Examples include north, east, up, down, geocentricX, geocentricY, geocentricZ, etc.
*/
direction: 'north' | 'northNorthEast' | 'northEast' | 'eastNorthEast' | 'east' | 'eastSouthEast' | 'southEast' | 'southSouthEast' | 'south' | 'southSouthWest' | 'southWest' | 'westSouthWest' | 'west' | 'westNorthWest' | 'northWest' | 'northNorthWest' | 'up' | 'down' | 'geocentricX' | 'geocentricY' | 'geocentricZ' | 'columnPositive' | 'columnNegative' | 'rowPositive' | 'rowNegative' | 'displayRight' | 'displayLeft' | 'displayUp' | 'displayDown' | 'forward' | 'aft' | 'port' | 'starboard' | 'clockwise' | 'counterClockwise' | 'towards' | 'awayFrom' | 'future' | 'past' | 'unspecified';
/** The meridian for the axis, if applicable. */
meridian?: Meridian;
/** The unit of measurement for the axis. */
unit?: Unit;
/** The minimum value allowed for the axis. */
minimum_value?: number;
/** The maximum value allowed for the axis. */
maximum_value?: number;
/**
* The range meaning for the axis.
* Can be either "exact" or "wraparound".
*/
range_meaning?: 'exact' | 'wraparound';
/** An identifier for the axis. */
id?: Id;
/** An array of identifiers for the axis. */
ids?: Id[];
}
/**
* Meridian Interface
*
* Represents a meridian, which defines the longitude for an axis.
*/
export interface Meridian {
/** Indicates the type of meridian. Always "Meridian" for this interface. */
type: 'Meridian';
/** The longitude of the meridian. */
longitude: number | ValueAndUnit;
/** The schema URL or identifier. */
$schema?: string;
/** An identifier for the meridian. */
id?: Id;
/** An array of identifiers for the meridian. */
ids?: Id[];
}
/**
* ValueAndUnit Interface
*
* Represents a value paired with a unit of measurement.
*/
export interface ValueAndUnit {
/** The numeric value. */
value: number;
/** The unit of measurement. */
unit: Unit;
}
/**
* GeodeticCRS Interface
*
* Represents a geodetic or geographic coordinate reference system.
*/
export interface GeodeticCRS {
/** Indicates the type of CRS. Can be "GeodeticCRS" or "GeographicCRS". */
type: 'GeodeticCRS' | 'GeographicCRS';
/** The name of the geodetic CRS. */
name: string;
/**
* The datum associated with the geodetic CRS.
* One and only one of `datum` or `datum_ensemble` must be provided.
*/
datum?: GeodeticReferenceFrame | DynamicGeodeticReferenceFrame;
/** The datum ensemble associated with the geodetic CRS. */
datum_ensemble?: DatumEnsemble;
/** The coordinate system used in the geodetic CRS. */
coordinate_system?: CoordinateSystem;
/** An array of deformation models associated with the geodetic CRS. */
deformation_models?: DeformationModel[];
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the CRS. */
scope?: string;
/** The area of use for the CRS. */
area?: string;
/** The bounding box of the CRS. */
bbox?: BBox;
/** The vertical extent of the CRS. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the CRS. */
temporal_extent?: TemporalExtent;
/** An array of usages for the CRS. */
usages?: Usage[];
/** Remarks or additional information about the CRS. */
remarks?: string;
/** An identifier for the CRS. */
id?: Id;
/** An array of identifiers for the CRS. */
ids?: Id[];
}
/**
* GeodeticReferenceFrame Interface
*
* Represents the geodetic reference frame associated with a geodetic CRS.
*/
export interface GeodeticReferenceFrame {
/** Indicates the type of reference frame. Always "GeodeticReferenceFrame" for this interface. */
type: 'GeodeticReferenceFrame';
/** The name of the reference frame. */
name: string;
/** The anchor point of the reference frame. */
anchor?: string;
/** The epoch of the anchor point. */
anchor_epoch?: number;
/** The ellipsoid used in the reference frame. */
ellipsoid: Ellipsoid;
/** The prime meridian associated with the reference frame. */
prime_meridian?: PrimeMeridian;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the reference frame. */
scope?: string;
/** The area of use for the reference frame. */
area?: string;
/** The bounding box of the reference frame. */
bbox?: BBox;
/** The vertical extent of the reference frame. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the reference frame. */
temporal_extent?: TemporalExtent;
/** An array of usages for the reference frame. */
usages?: Usage[];
/** Remarks or additional information about the reference frame. */
remarks?: string;
/** An identifier for the reference frame. */
id?: Id;
/** An array of identifiers for the reference frame. */
ids?: Id[];
}
/**
* DynamicGeodeticReferenceFrame Interface
*
* Represents a dynamic geodetic reference frame.
*/
export interface DynamicGeodeticReferenceFrame {
/** Indicates the type of reference frame. Always "DynamicGeodeticReferenceFrame" for this interface. */
type: 'DynamicGeodeticReferenceFrame';
/** The name of the reference frame. */
name: string;
/** The anchor point of the reference frame. */
anchor?: string;
/** The epoch of the anchor point. */
anchor_epoch?: number;
/** The ellipsoid used in the reference frame. */
ellipsoid: Ellipsoid;
/** The prime meridian associated with the reference frame. */
prime_meridian?: PrimeMeridian;
/** The frame reference epoch. */
frame_reference_epoch: number;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the reference frame. */
scope?: string;
/** The area of use for the reference frame. */
area?: string;
/** The bounding box of the reference frame. */
bbox?: BBox;
/** The vertical extent of the reference frame. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the reference frame. */
temporal_extent?: TemporalExtent;
/** An array of usages for the reference frame. */
usages?: Usage[];
/** Remarks or additional information about the reference frame. */
remarks?: string;
/** An identifier for the reference frame. */
id?: Id;
/** An array of identifiers for the reference frame. */
ids?: Id[];
}
/**
* DatumEnsemble Interface
*
* Represents a datum ensemble, which is a collection of datums.
*/
export interface DatumEnsemble {
/** Indicates the type of datum ensemble. Always "DatumEnsemble" for this interface. */
type: 'DatumEnsemble';
/** The name of the datum ensemble. */
name: string;
/** An array of members in the datum ensemble. */
members: Array<{
name: string;
id?: Id;
ids?: Id[];
}>;
/** The ellipsoid associated with the datum ensemble. */
ellipsoid?: Ellipsoid;
/** The accuracy of the datum ensemble. */
accuracy: string;
/** An identifier for the datum ensemble. */
id?: Id;
/** An array of identifiers for the datum ensemble. */
ids?: Id[];
}
/**
* DeformationModel Interface
*
* Represents a deformation model associated with a geodetic CRS.
*/
export interface DeformationModel {
/** The name of the deformation model. */
name: string;
/** An identifier for the deformation model. */
id?: Id;
}
/**
* Ellipsoid Interface
*
* Represents an ellipsoid, a geometric figure used in geodetic reference frames.
*/
export interface Ellipsoid {
/** Indicates the type of ellipsoid. Always "Ellipsoid" for this interface. */
type: 'Ellipsoid';
/** The name of the ellipsoid. */
name: string;
/**
* The semi-major axis of the ellipsoid.
* Represented as a number or a value with a unit.
*/
semi_major_axis?: number | ValueAndUnit;
/**
* The semi-minor axis of the ellipsoid.
* Represented as a number or a value with a unit.
* Required when `inverse_flattening` is not provided.
*/
semi_minor_axis?: number | ValueAndUnit;
/**
* The inverse flattening of the ellipsoid.
* Required when `semi_minor_axis` is not provided.
*/
inverse_flattening?: number;
/**
* The radius of the ellipsoid, used for spherical representations.
* Required when neither `semi_minor_axis` nor `inverse_flattening` are provided.
*/
radius?: number | ValueAndUnit;
/** The schema URL or identifier. */
$schema?: string;
/** An identifier for the ellipsoid. */
id?: Id;
/** An array of identifiers for the ellipsoid. */
ids?: Id[];
}
/**
* PrimeMeridian Interface
*
* Represents a prime meridian, which defines the origin of longitude in a geographic coordinate system.
*/
export interface PrimeMeridian {
/** Indicates the type of prime meridian. Always "PrimeMeridian" for this interface. */
type: 'PrimeMeridian';
/** The name of the prime meridian. */
name: string;
/**
* The longitude of the prime meridian.
* Represented as a number or a value with a unit.
*/
longitude: number | ValueAndUnit;
/** The schema URL or identifier. */
$schema?: string;
/** An identifier for the prime meridian. */
id?: Id;
/** An array of identifiers for the prime meridian. */
ids?: Id[];
}
/**
* ProjectedCRS Interface
*
* Represents a projected coordinate reference system, which transforms geodetic or geographic coordinates
* into a flat, two-dimensional plane using a map projection.
*/
export interface ProjectedCRS {
/** Indicates the type of CRS. Always "ProjectedCRS" for this interface. */
type: 'ProjectedCRS';
/** The name of the projected CRS. */
name: string;
/**
* The base CRS upon which the projection is defined.
* Typically a geodetic CRS.
*/
base_crs: GeodeticCRS;
/** The conversion defining the map projection. */
conversion: Conversion;
/** The coordinate system used in the projected CRS. */
coordinate_system?: CoordinateSystem;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the CRS. */
scope?: string;
/** The area of use for the CRS. */
area?: string;
/** The bounding box of the CRS. */
bbox?: BBox;
/** The vertical extent of the CRS. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the CRS. */
temporal_extent?: TemporalExtent;
/** An array of usages for the CRS. */
usages?: Usage[];
/** Remarks or additional information about the CRS. */
remarks?: string;
/** An identifier for the CRS. */
id?: Id;
/** An array of identifiers for the CRS. */
ids?: Id[];
}
/**
* Conversion Interface
*
* Represents the map projection or transformation used in a projected CRS.
*/
export interface Conversion {
/** Indicates the type of conversion. Always "Conversion" for this interface. */
type: 'Conversion';
/** The name of the conversion (map projection or transformation). */
name: string;
/** The method used for the conversion. */
method: Method;
/** An array of parameter values defining the conversion. */
parameters?: ParameterValue[];
/** The schema URL or identifier. */
$schema?: string;
/** An identifier for the conversion. */
id?: Id;
/** An array of identifiers for the conversion. */
ids?: Id[];
}
/**
* TemporalCRS Interface
*
* Represents a temporal coordinate reference system, which defines time-based coordinates.
*/
export interface TemporalCRS {
/** Indicates the type of CRS. Always "TemporalCRS" for this interface. */
type: 'TemporalCRS';
/** The name of the temporal CRS. */
name: string;
/** The temporal datum associated with the CRS. */
datum: TemporalDatum;
/** The coordinate system used in the temporal CRS. */
coordinate_system?: CoordinateSystem;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the CRS. */
scope?: string;
/** The area of use for the CRS. */
area?: string;
/** The bounding box of the CRS. */
bbox?: BBox;
/** The vertical extent of the CRS. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the CRS. */
temporal_extent?: TemporalExtent;
/** An array of usages for the CRS. */
usages?: Usage[];
/** Remarks or additional information about the CRS. */
remarks?: string;
/** An identifier for the CRS. */
id?: Id;
/** An array of identifiers for the CRS. */
ids?: Id[];
}
/**
* TemporalDatum Interface
*
* Represents the temporal datum associated with a temporal CRS.
*/
export interface TemporalDatum {
/** Indicates the type of datum. Always "TemporalDatum" for this interface. */
type: 'TemporalDatum';
/** The name of the temporal datum. */
name: string;
/** The calendar system used for the datum. */
calendar: string;
/** The time origin of the temporal datum, typically an ISO 8601 date/time string. */
time_origin: string;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the datum. */
scope?: string;
/** The area of use for the datum. */
area?: string;
/** The bounding box of the datum. */
bbox?: BBox;
/** The vertical extent of the datum. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the datum. */
temporal_extent?: TemporalExtent;
/** An array of usages for the datum. */
usages?: Usage[];
/** Remarks or additional information about the datum. */
remarks?: string;
/** An identifier for the datum. */
id?: Id;
/** An array of identifiers for the datum. */
ids?: Id[];
}
/**
* VerticalCRS Interface
*
* Represents a vertical coordinate reference system, which is used for height or depth measurements.
*/
export interface VerticalCRS {
/** Indicates the type of CRS. Always "VerticalCRS" for this interface. */
type: 'VerticalCRS';
/** The name of the vertical CRS. */
name: string;
/**
* The vertical datum associated with the CRS.
* One and only one of `datum` or `datum_ensemble` must be provided.
*/
datum?: VerticalReferenceFrame | DynamicVerticalReferenceFrame;
/** The datum ensemble associated with the CRS. */
datum_ensemble?: DatumEnsemble;
/** The coordinate system used in the vertical CRS. */
coordinate_system?: CoordinateSystem;
/** The geoid model associated with the vertical CRS. */
geoid_model?: GeoidModel;
/** An array of geoid models associated with the vertical CRS. */
geoid_models?: GeoidModel[];
/** An array of deformation models associated with the vertical CRS. */
deformation_models?: DeformationModel[];
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the CRS. */
scope?: string;
/** The area of use for the CRS. */
area?: string;
/** The bounding box of the CRS. */
bbox?: BBox;
/** The vertical extent of the CRS. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the CRS. */
temporal_extent?: TemporalExtent;
/** An array of usages for the CRS. */
usages?: Usage[];
/** Remarks or additional information about the CRS. */
remarks?: string;
/** An identifier for the CRS. */
id?: Id;
/** An array of identifiers for the CRS. */
ids?: Id[];
}
/**
* VerticalReferenceFrame Interface
*
* Represents the vertical reference frame associated with a vertical CRS.
*/
export interface VerticalReferenceFrame {
/** Indicates the type of reference frame. Always "VerticalReferenceFrame" for this interface. */
type: 'VerticalReferenceFrame';
/** The name of the vertical reference frame. */
name: string;
/** The anchor point of the reference frame. */
anchor?: string;
/** The epoch of the anchor point. */
anchor_epoch?: number;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the reference frame. */
scope?: string;
/** The area of use for the reference frame. */
area?: string;
/** The bounding box of the reference frame. */
bbox?: BBox;
/** The vertical extent of the reference frame. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the reference frame. */
temporal_extent?: TemporalExtent;
/** An array of usages for the reference frame. */
usages?: Usage[];
/** Remarks or additional information about the reference frame. */
remarks?: string;
/** An identifier for the reference frame. */
id?: Id;
/** An array of identifiers for the reference frame. */
ids?: Id[];
}
/**
* DynamicVerticalReferenceFrame Interface
*
* Represents a dynamic vertical reference frame.
*/
export interface DynamicVerticalReferenceFrame {
/** Indicates the type of reference frame. Always "DynamicVerticalReferenceFrame" for this interface. */
type: 'DynamicVerticalReferenceFrame';
/** The name of the reference frame. */
name: string;
/** The anchor point of the reference frame. */
anchor?: string;
/** The epoch of the anchor point. */
anchor_epoch?: number;
/** The frame reference epoch for the dynamic reference frame. */
frame_reference_epoch: number;
/** The schema URL or identifier. */
$schema?: string;
/** The scope of the reference frame. */
scope?: string;
/** The area of use for the reference frame. */
area?: string;
/** The bounding box of the reference frame. */
bbox?: BBox;
/** The vertical extent of the reference frame. */
vertical_extent?: VerticalExtent;
/** The temporal extent of the reference frame. */
temporal_extent?: TemporalExtent;
/** An array of usages for the reference frame. */
usages?: Usage[];
/** Remarks or additional information about the reference frame. */
remarks?: string;
/** An identifier for the reference frame. */
id?: Id;
/** An array of identifiers for the reference frame. */
ids?: Id[];
}
/**
* GeoidModel Interface
*
* Represents a geoid model associated with a vertical CRS.
*/
export interface GeoidModel {
/** The name of the geoid model. */
name: string;
/** The interpolation CRS for the geoid model. */
interpolation_crs?: CRS;
/** An identifier for the geoid model. */
id?: Id;
}
//# sourceMappingURL=jsonScheme.d.ts.map