API Reference > imodeljs-common > Geometry > HorizontalCRS HorizontalCRS Class Horizontal Geographic Coordinate reference System implementation. An horizontal CRS defines the portion which is horizontal to the Earth surface (within the deformation brought by the projection process). There are two major classes of Horizontal Coordinate Reference Systems: The projected CRS which rely on a projection to flatten the coordinate system space into axises using linear units (meter, US Survey Feet, ...) relative to some origin. The non projected CRS (also named geographic CRS by EPSG nomenclature) that does not require a projection (projection method = None) and horizontal coordinates are expressed as longitude and latitude (see Cartographic) Horizontal Coordinate Systems rely on a projection to flatten the surface of an ellipsoid (see GeodeticEllipsoid) which is the mathematical model of the Earth surface. Explanations in more details of the various concepts can be obtained from other sources including the page on the subject on itwinJS.org (see https://www.itwinjs.org/learning/geolocation/?term=coordinate+system). A few details are still required to grasp the model. Geographic Coordinate Reference Systems rely on the concept of geodetic datums (see GeodeticDatum) to convert latitude/longitude from one frame of reference to another. Such geodetic datum will bind the ellipsoid and possibly define transformation steps required to convert from the currently used geodetic datum to the common datum WGS84 used for worldwide data (such as most popular imagery data sources). If there are no rules established to convert to WGS84 or if those rules are secret then the horizontal CRS can be datum-less and must make direct use of the ellipsoid to define the earth surface. For this purpose either the geodetic datum must be specified using either datumId or datum properties or both. If both these values are undefined then it is possible to define the ellipsoid using properties ellipsoidId or ellipsoid or both. These two pairs of properties are mutually exclusive with datum related properties having precedence. If a datum or datumId is set then ellipsoid properties will automatically be undefined. If datumId or datum is defined then attempts to set ellipsoidId or ellipsoid will fail silently, the values remaining undefined. The ellipsoidId will not be a repeat of the ellipsoidId property part of the geodetic datum definition. Implements HorizontalCRSProps Methods Name Description constructor(_data?: HorizontalCRSProps): HorizontalCRS equals(other: HorizontalCRS): boolean Compares two horizontal CRS. toJSON(): HorizontalCRSProps Creates a JSON from the Horizontal CRS definition fromJSON(data: HorizontalCRSProps): HorizontalCRS Static Creates an Horizontal CRS from JSON representation. Properties Name Type Description datum Readonly undefined | GeodeticDatum The complete definition of the geodetic datum referred to by datumId. datumId Readonly undefined | string The identifier of the geodetic datum as stored in the dictionary or the service database. deprecated Readonly boolean If true then indicates the definition is deprecated. description Readonly undefined | string Description ellipsoid Readonly undefined | GeodeticEllipsoid The complete definition of the geodetic ellipsoid referred to by ellipsoidId. ellipsoidId Readonly undefined | string The identifier of the geodetic ellipsoid as stored in the dictionary or the service database. epsg Readonly undefined | number The EPSG code of the CRS. extent Readonly undefined | HorizontalCRSExtent Extent representing the domain of application of the CRS. id Readonly undefined | string The identifier of the horizontal CRS as stored in the dictionary or the service database name Readonly undefined | string Used only for user-defined definitions that will typically use a GUID as id. projection Readonly undefined | Projection Projection including projection parameters. source Readonly undefined | string The source of the CRS definition. unit Readonly undefined | UnitType The text indicating the unit used. Defined in core/common/src/geometry/CoordinateReferenceSystem.ts Line 145 Last Updated: 12 June, 2024