represents a position in a Cartesian geocentric coordinate system.


represents a point referred to the specified datum.


represents an array of points in a Cartesian geocentric coordinate system.


returns the Cartesian geocentric position of the given geographical entity.


  • GeoPositionXYZ uses an Earth-centered, Earth-fixed Cartesian coordinate system.
  • In GeoPositionXYZ[{x,y,z}], coordinate numeric values x,y,z are assumed to be in meters.
  • GeoPositionXYZ[{x,y,z,t}] includes a time t measured in seconds since the beginning of January 1, 1900 in the GMT time zone.
  • A GeoPositionXYZ object with no explicit time assumes the current date.
  • GeoPositionXYZ[{x,y,z}] assumes the default datum "ITRF00".
  • Standard datums can be specified by name. Typical named datums include:
  • "ITRF00"International Terrestrial Reference Frame 2000
    "NAD27"North American Datum of 1927
    "NAD83CORS96"North American Datum of 1983 (CORS96)
  • The complete list of named datums and reference ellipsoids is given by GeodesyData[].
  • GeoPositionXYZ[GeoPositionXYZ[{x,y,z},datum1],datum2] converts between datums.
  • GeoPositionXYZ[pos,datum] converts from any geographic position type. The following geographic position types can be given: GeoPosition, GeoPositionXYZ, GeoPositionENU, GeoGridPosition.
  • GeoPositionXYZ[pos] converts from any type of geographic position, keeping the same datum of pos.
  • For extended entities, GeoPositionXYZ[entity] uses when possible the position of the geographic center of the entity.
  • GeoPositionXYZ[][prop] gives the specified property of a Cartesian geo position.
  • Possible properties include:
  • "AbsoluteTime"date as number of seconds since Jan 1, 1900, 00:00 GMT
    "Count"number of positions in the GeoPositionXYZ object
    "Data"first argument of the GeoPositionXYZ object
    "DateList"date list {y,m,d,h,m,s} in GMT time
    "DateObject"full date object
    "Datum"datum of the GeoPositionYXZ object
    "Depth"point depth: 0 for a single position, 1 for a list of them,
    "Dimension"number of coordinates for each position
    "PackingType"Integer or Real if data is packed; None otherwise
    "X"numeric coordinate x in meters
    "Y"numeric coordinate y in meters
    "Z"numeric coordinate z in meters
    "XYZ"numeric {x,y,z} triple in meters
    "XY"numeric {x,y} pair in meters
    "XZ"numeric {x,z} pair in meters
    "YZ"numeric {y,z} pair in meters


open allclose all

Basic Examples  (4)

Geodetic point defined by its Earth-centered Cartesian coordinates in meters:

Convert to its {lat,lon,height} form:

Cartesian coordinates of a geographic location:

Current Cartesian coordinates and time for the International Space Station:

Convert Earth-centered coordinates from the default "ITRF00" datum to the "NAD83CORS96" datum:

Convert back to the "ITRF00" datum, with numerical errors smaller than a micrometer:

Scope  (12)

Position Specification  (6)

A geo location specified by x, y, z values in meters with respect to the Earth's center:

Convert into a lat-lon specification, also including height in meters:

Include time information in seconds since 1900:

Project onto a flat map using the Mercator projection. The time information is preserved:

Locate a geographical entity with respect to the Earth's center:

Give coordinates as Quantity objects in any units of length:

Convert from other geo location types to GeoPositionXYZ:

Convert a position from a datum to another:

Convert back to the original datum:

Geo Position Arrays  (4)

To speed up computations, use an array of positions in the first argument:

All points are transformed at once:

Here each point is transformed individually:

Results coincide up to numerical error:

Changes of datum are also faster using an array of points as the first argument:

GeoPositionXYZ can contain nested lists of points, as long as all points have the same length and depth:

Manipulations will preserve the nesting structure:

However, this is not allowed, because the first point has a time specification, but not the second:

This is not allowed because the second point is deeper than the first:

Convert a list of geo positions into a single geo position array:

Convert back to a list of geo positions:

Coordinate Extraction  (2)

Use properties to extract information from a GeoPositionXYZ object:

Use properties to extract information from a GeoPositionXYZ array:

There are 200 points:

It is a matrix of points, so it has point depth 2:

Each point has dimension 3, namely the x,y,z coordinates:

The array of coordinates is packed with type Real:

Any other property will return an array of values corresponding to the points of the array:

Generalizations & Extensions  (3)

Use positions on a sphere of 100 kilometers of radius:

Convert to a 3D vector:

The vector components are given in meters:

Use positions on an ellipsoid of given semiaxes:

Convert to a 3D vector:

Transform back to a GeoPosition object on the ellipsoid:

A position on a geo reference model other than the Earth:

Computations are performed with an ellipsoid of these semiaxis lengths:

Applications  (2)

A hundred random points on the surface of the Earth:

Plot them on a flat map:

Plot them in 3D space:

Take an icosahedron as a GraphicsComplex object:

Express its 12 vertices as a GeoPositionXYZ array on a sphere of appropriate radius:

Convert to a list of {lat,lon} pairs in degrees:

Construct a GeoPath object that contains the geodesic perimeters of the 20 faces of the icosahedron:

Draw the geodesics on a map of the Earth in the "Equirectangular" projection:

Use an azimuthal projection:

Properties & Relations  (6)

Three-dimensional position of the origin of latitude and longitude:

Three-dimensional position of the North and South Poles:

Convert geodetic coordinates to Cartesian coordinates for an ellipsoid of these semiaxes lengths:

Take a point p of geodetic latitude 60°, zero longitude, and geodetic height 0.15:

Convert it to Cartesian coordinates:

Convert back to geodetic coordinates:

Take a point q of the same latitude and longitude, but zero height:

Represent the relation between the coordinates on a vertical cut of the ellipsoid:

The blue line is perpendicular to the tangent at q and forms an angle of 60° with the axis:

The geodetic height of p along the geodetic vertical is the distance between p and q:

GeoPositionXYZ[{}] represents an empty array of geo positions:

It contains zero positions:

GeoPositionXYZ[] is invalid syntax:

GeoPositionXYZ gives Earth's centered position. GeoPositionENU specifies the center to use:

New York is more than eight kilometers below the tangent plane at Washington:

GeoPositionXYZ coincides with GeoPositionENU for this center:

Choose any location on Earth:

The coordinates of the antipode of a GeoPositionXYZ location have opposite sign:

Wolfram Research (2008), GeoPositionXYZ, Wolfram Language function, (updated 2019).


Wolfram Research (2008), GeoPositionXYZ, Wolfram Language function, (updated 2019).


Wolfram Language. 2008. "GeoPositionXYZ." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2019.


Wolfram Language. (2008). GeoPositionXYZ. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2024_geopositionxyz, author="Wolfram Research", title="{GeoPositionXYZ}", year="2019", howpublished="\url{}", note=[Accessed: 18-June-2024 ]}


@online{reference.wolfram_2024_geopositionxyz, organization={Wolfram Research}, title={GeoPositionXYZ}, year={2019}, url={}, note=[Accessed: 18-June-2024 ]}