Did you know ... Search Documentation:
Pack logtalk -- logtalk-3.100.1/docs/apis/_sources/crs_projections_protocol_0.rst.txt

.. index:: single: crs_projections_protocol .. _crs_projections_protocol/0:

.. rst-class:: right

protocol

crs_projections_protocol

Coordinate reference systems and coordinate transformation predicates protocol.

| Availability: | logtalk_load(crs_projections(loader))

| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-05-10

| Compilation flags: | static

| Dependencies: | (none)

| Remarks: | (none)

| Inherited public predicates: | (none)

.. contents:: :local: :backlinks: top

Public predicates

.. index:: valid_crs/1 .. _crs_projections_protocol/0::valid_crs/1:

valid_crs/1 ^^^^^^^^^^^^^^^

True when the argument is a supported coordinate reference system. Supported values are wgs84, wgs84_3d, web_mercator, world_mercator, ecef, enu(OriginCoordinate), lambert_azimuthal_equal_area(OriginCoordinate), and utm(Zone,Hemisphere) terms.

| Compilation flags: | static

| Template: | valid_crs(CRS) | Mode and number of proofs: | valid_crs(@term) - zero_or_one


.. index:: crs_name/2 .. _crs_projections_protocol/0::crs_name/2:

crs_name/2 ^^^^^^^^^^^^^^

Maps a supported coordinate reference system to a human-readable name.

| Compilation flags: | static

| Template: | crs_name(CRS,Name) | Mode and number of proofs: | crs_name(+term,-atom) - zero_or_one


.. index:: crs_kind/2 .. _crs_projections_protocol/0::crs_kind/2:

crs_kind/2 ^^^^^^^^^^^^^^

Classifies a supported coordinate reference system as geographic, projected, geocentric, or local_tangent_plane.

| Compilation flags: | static

| Template: | crs_kind(CRS,Kind) | Mode and number of proofs: | crs_kind(+term,-atom) - zero_or_one


.. index:: crs_units/2 .. _crs_projections_protocol/0::crs_units/2:

crs_units/2 ^^^^^^^^^^^^^^^

Returns the coordinate axis units used by a supported coordinate reference system. Supported values are degrees, meters, and [degrees,degrees,meters].

| Compilation flags: | static

| Template: | crs_units(CRS,Units) | Mode and number of proofs: | crs_units(+term,-term) - zero_or_one


.. index:: crs_dimensions/2 .. _crs_projections_protocol/0::crs_dimensions/2:

crs_dimensions/2 ^^^^^^^^^^^^^^^^^^^^

Returns the coordinate dimensionality for a supported coordinate reference system.

| Compilation flags: | static

| Template: | crs_dimensions(CRS,Dimensions) | Mode and number of proofs: | crs_dimensions(+term,-positive_integer) - zero_or_one


.. index:: crs_epsg/2 .. _crs_projections_protocol/0::crs_epsg/2:

crs_epsg/2 ^^^^^^^^^^^^^^

Maps a supported coordinate reference system to the corresponding EPSG code.

| Compilation flags: | static

| Template: | crs_epsg(CRS,EPSG) | Mode and number of proofs: | crs_epsg(+term,-positive_integer) - zero_or_one


.. index:: epsg_crs/2 .. _crs_projections_protocol/0::epsg_crs/2:

epsg_crs/2 ^^^^^^^^^^^^^^

Maps a supported EPSG code to the corresponding coordinate reference system term.

| Compilation flags: | static

| Template: | epsg_crs(EPSG,CRS) | Mode and number of proofs: | epsg_crs(+positive_integer,-term) - zero_or_one


.. index:: valid_coordinate/2 .. _crs_projections_protocol/0::valid_coordinate/2:

valid_coordinate/2 ^^^^^^^^^^^^^^^^^^^^^^

True when the coordinate is valid for the given coordinate reference system. wgs84 coordinates are represented as geographic(Latitude,Longitude) in degrees, wgs84_3d coordinates as geographic(Latitude,Longitude,EllipsoidalHeight) in degrees and meters, web_mercator, world_mercator, and lambert_azimuthal_equal_area(OriginCoordinate) coordinates as projected(X,Y) pairs in meters, ecef coordinates as ecef(X,Y,Z) triples in meters, enu(OriginCoordinate) coordinates as enu(East,North,Up) triples in meters, and utm(Zone,Hemisphere) coordinates as grid(Easting,Northing) pairs in meters.

| Compilation flags: | static

| Template: | valid_coordinate(CRS,Coordinate) | Mode and number of proofs: | valid_coordinate(+term,@compound) - zero_or_one


.. index:: local_tangent_plane/3 .. _crs_projections_protocol/0::local_tangent_plane/3:

local_tangent_plane/3 ^^^^^^^^^^^^^^^^^^^^^^^^^

Projects a WGS84 geographic coordinate to local enu(East,North,Up) coordinates in meters using an origin coordinate. For height-preserving 3D geodetic workflows, use transform/4 with wgs84_3d.

| Compilation flags: | static

| Template: | local_tangent_plane(Origin,Coordinate,LocalCoordinate) | Mode and number of proofs: | local_tangent_plane(+compound,+compound,-compound) - zero_or_one


.. index:: local_tangent_plane_inverse/3 .. _crs_projections_protocol/0::local_tangent_plane_inverse/3:

local_tangent_plane_inverse/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Converts local enu(East,North,Up) coordinates in meters back to a WGS84 geographic coordinate using an origin coordinate. For height-preserving 3D geodetic workflows, use transform/4 with wgs84_3d.

| Compilation flags: | static

| Template: | local_tangent_plane_inverse(Origin,LocalCoordinate,Coordinate) | Mode and number of proofs: | local_tangent_plane_inverse(+compound,+compound,-compound) - zero_or_one


.. index:: lambert_azimuthal_equal_area/3 .. _crs_projections_protocol/0::lambert_azimuthal_equal_area/3:

lambert_azimuthal_equal_area/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Projects a WGS84 geographic coordinate to a Lambert azimuthal equal-area plane centered on an origin coordinate, returning projected(X,Y) coordinates in meters.

| Compilation flags: | static

| Template: | lambert_azimuthal_equal_area(Origin,Coordinate,ProjectedCoordinate) | Mode and number of proofs: | lambert_azimuthal_equal_area(+compound,+compound,-compound) - zero_or_one


.. index:: lambert_azimuthal_equal_area_inverse/3 .. _crs_projections_protocol/0::lambert_azimuthal_equal_area_inverse/3:

lambert_azimuthal_equal_area_inverse/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Converts Lambert azimuthal equal-area projected(X,Y) coordinates back to a WGS84 geographic coordinate using an origin coordinate.

| Compilation flags: | static

| Template: | lambert_azimuthal_equal_area_inverse(Origin,ProjectedCoordinate,Coordinate) | Mode and number of proofs: | lambert_azimuthal_equal_area_inverse(+compound,+compound,-compound) - zero_or_one


.. index:: utm_zone/2 .. _crs_projections_protocol/0::utm_zone/2:

utm_zone/2 ^^^^^^^^^^^^^^

Infers the UTM longitudinal zone for a WGS84 geographic(Latitude,Longitude) coordinate. Uses the standard Norway and Svalbard special-zone rules and only succeeds for coordinates within the UTM latitude coverage.

| Compilation flags: | static

| Template: | utm_zone(Coordinate,Zone) | Mode and number of proofs: | utm_zone(+compound,-integer) - zero_or_one


.. index:: utm_crs/2 .. _crs_projections_protocol/0::utm_crs/2:

utm_crs/2 ^^^^^^^^^^^^^

Infers the native UTM coordinate reference system term utm(Zone,Hemisphere) for a WGS84 geographic(Latitude,Longitude) coordinate.

| Compilation flags: | static

| Template: | utm_crs(Coordinate,CRS) | Mode and number of proofs: | utm_crs(+compound,-compound) - zero_or_one


.. index:: transform/4 .. _crs_projections_protocol/0::transform/4:

transform/4 ^^^^^^^^^^^^^^^

Transforms a coordinate between supported coordinate reference systems. Transformations between projected systems are computed by converting through wgs84.

| Compilation flags: | static

| Template: | transform(SourceCRS,TargetCRS,Coordinate,TransformedCoordinate) | Mode and number of proofs: | transform(+term,+term,+compound,-compound) - zero_or_one


Protected predicates

(none)

Private predicates

(none)

Operators

(none)

.. seealso::

:ref:`crs_projections <crs_projections/0>`, :ref:`geospatial_protocol <geospatial_protocol/0>`