/** * 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