GeoPositionENU[{east,north,up},p]
represents a position with local Cartesian coordinates {east,north,up} in a reference system centered at the position p.
GeoPositionENU[{{e1,n1,u1},{e2,n2,u2},…},p]
represents an array of positions.
GeoPositionENU[entity,p]
returns the Cartesian position with respect to p of the specified geographical entity.
GeoPositionENU
GeoPositionENU[{east,north,up},p]
represents a position with local Cartesian coordinates {east,north,up} in a reference system centered at the position p.
GeoPositionENU[{{e1,n1,u1},{e2,n2,u2},…},p]
represents an array of positions.
GeoPositionENU[entity,p]
returns the Cartesian position with respect to p of the specified geographical entity.
Details
- In GeoPositionENU[{e,n,u},p], coordinate numeric values e,n,u are assumed to be in meters.
- In GeoPositionENU[enu,p], the origin position p can be given as a geo Entity object or any form of geodetic position with head GeoPosition, GeoPositionXYZ, GeoPositionENU or GeoGridPosition.
- GeoPositionENU[{e,n,u,t},p] includes a time t measured in seconds since the beginning of January 1, 1900 in the GMT time zone.
- A GeoPositionENU object with no explicit time assumes the current date.
- The datum of GeoPosition[enu,p] is the datum of its origin p. Typical values for datum specifications include "ITRF00", "NAD83CORS96" and "WGS84".
- GeoPositionENU[GeoPositionENU[enu,p1],p2] converts between two different ENU systems.
- GeoPositionENU[pos,p] converts any geodetic position pos to an ENU position with origin p.
- GeoPositionENU[…][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 GeoPositionENU object "Data" first argument of the GeoPositionENU object "DateList" date list {y,m,d,h,m,s} in GMT time "DateObject" full date object "Datum" datum of the GeoPositionENU object "Depth" point depth: 0 for a single position, 1 for a list of them, … "Dimension" number of coordinates for each position "Origin" origin position of the GeoPositionENU object "PackingType" Integer or Real if data is packed; None otherwise "E" numeric coordinate e in meters "N" numeric coordinate n in meters "U" numeric coordinate u in meters "ENU" numeric {e,n,u} triple in meters "NEU" numeric {n,e,u} triple in meters "EN" numeric {e,n} pair in meters "NE" numeric {n,e} pair in meters "EU" numeric {e,u} pair in meters "NU" numeric {n,u} pair in meters
Examples
open all close allBasic Examples (3)
Cartesian coordinates of a location with respect to the ENU frame at another one:
GeoPositionENU[Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"SanFrancisco", "California", "UnitedStates"}]]Move 100 kilometers north along the tangent plane at a position:
GeoPositionENU[{0, 100000, 0}, GeoPosition[{45, 0}]]Convert to a geodetic position, now with nonzero height:
GeoPosition[%]Move 10 kilometers vertically from New York:
GeoPositionENU[{0, 0, Quantity[10, "Kilometers"]}, Entity["City", {"NewYork", "NewYork", "UnitedStates"}]]GeoPosition[%]Scope (11)
Position Specification (5)
A Cartesian position from another one, with coordinates given in meters:
GeoPositionENU[{10000, 32500, -120}, GeoPosition[{-50, -100}]]Specify time in seconds since January 1, 1900:
GeoPositionENU[{10000, 32500, -120, 3.6*^9}, GeoPosition[{-50, -100}]]Provide Cartesian coordinates as Quantity lengths with any unit:
GeoPositionENU[Quantity[{10, 32.5, -120}, "Kilometers"], Here]GeoPositionENU[{Quantity[10., "Miles"], Quantity[20000., "Feet"], Quantity[300., "Inches"]}, Here]Give one or both positions as entities:
GeoPositionENU[Entity["City", {"Barcelona", "Barcelona", "Spain"}], GeoPosition[{40, 0}]]GeoPositionENU[GeoPosition[{50, 0}], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]GeoPositionENU[Entity["City", {"Barcelona", "Barcelona", "Spain"}], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]Specify the origin as any type of geodetic position:
GeoPositionENU[{5436.4, -2463.1, 984.45}, GeoPosition[{50, -100}]]GeoPositionENU[{5436.4, -2463.1, 984.45}, GeoPositionXYZ[{150000, -5*^6, 3.95*^6}]]GeoPositionENU[{400, -100, 100}, GeoPositionENU[{3000, 2000, 1000}, Here]]GeoPositionENU[{400, -100, 100}, GeoGridPosition[{-1., 1.}, "Albers"]]Specify a datum in the origin:
p = GeoPosition[{0, 0}, "ITRF90"];GeoPositionENU[{1000, 2000, 0}, p]Changing the datum of the origin affects the coordinate values:
GeoPositionENU[%, GeoPosition[p, "WGS72"]]Change back to the original datum:
GeoPositionENU[%, p]Geo Position Arrays (4)
To speed up computations, use an array of positions in the first argument:
triples = RandomReal[100000, {10000, 3}];All points are transformed at once:
AbsoluteTiming[r1 = GeoPosition[GeoPositionENU[triples, Here]];]Here each point is transformed individually:
AbsoluteTiming[r2 = GeoPosition /@ (GeoPositionENU[#, Here]& /@ triples);]Results coincide up to numerical error:
First[r1] - (First /@ r2)//Abs//MaxChanges of datum are also faster using an array of points as the first argument:
triples = RandomReal[100000, {10000, 3}];p = GeoPosition[{40, -90}, "WGS72"];
q = GeoPosition[p, "ITRF90"];AbsoluteTiming[r1 = GeoPositionENU[GeoPositionENU[triples, p], q];]AbsoluteTiming[r2 = GeoPositionENU[GeoPositionENU[#, p], q]& /@ triples;]First[r1] - (First /@ r2)//Abs//MaxGeoPositionENU can contain nested lists of points, as long as all points have the same length and depth:
GeoPositionENU[{{{1., 2., 3.}, {4., 5., 6.}}, {{7., 8., 9.}}}, Here]Manipulations will preserve the nesting structure:
GeoGridPosition[%, "Mercator"]GeoPositionENU[%, Here]However, this is not allowed, because the first point has a time specification, but not the second:
GeoPositionENU[{{1, 2, 3, 0}, {4, 5, 6}}, Here]This is not allowed because the second point is deeper than the first:
GeoPositionENU[{{1, 2, 3}, {{4, 5, 6}}}, Here]Convert a list of geo positions into a single geo position array:
p = GeoPosition[{-40, 100}];{GeoPositionENU[{0, 0, 0}, p], GeoPositionENU[{1500., -50000., 40000.}, p], GeoPositionENU[{50000., -3000., 40000.}, p]}GeoPositionENU[%, p]Convert back to a list of geo positions:
Thread[%]Coordinate Extraction (2)
Use properties to extract information from a GeoPositionENU object:
p = GeoPositionENU[Entity["City", {"NewYork", "NewYork", "UnitedStates"}], Here]p["Properties"]AssociationMap[p, %]//Normal//ColumnUse properties to extract information from a GeoPositionENU array:
p = GeoPositionENU[RandomGeoPosition["World", {10, 20}], Entity["City", {"BuenosAires", "BuenosAires", "Argentina"}]]p["Count"]It is a matrix of points, so it has point depth 2:
p["Depth"]Each point has dimension 3, namely the e,n,u coordinates:
p["Dimension"]The array of coordinates is packed with type Real:
p["PackingType"]Any other property will return an array of values corresponding to the points of the array:
p["AbsoluteTime"]//Dimensionsp["DateList"]//DimensionsProperties & Relations (3)
Move 1000 kilometers from p in NW direction in several forms:
p = GeoPosition[{22, 170, 0}];
d = Quantity[1000, "Kilometers"];
α = Quantity[-45, "AngularDegrees"];Move along a geodesic on the Earth's surface:
q1 = GeoDestination[p, {d, α}]Move on the tangent plane at p, arriving at a point above the surface:
q2 = GeoPosition[GeoPositionENU[{d Sin[α], d Cos[α], 0}, p]]The antipodal coordinates change sign only in the north component:
GeoAntipode[GeoPositionENU[{191170., -1.11392*^6, -101045.}, GeoPosition[{51.5, -0.116}]]]GeoPositionENU[{},p] represents an empty array of geo positions:
GeoPositionENU[{}, Here]%["Count"]Interactive Examples (1)
The ENU Cartesian system (respective red, green, blue axes) at a point {lat,lon} on a sphere:
ENUsystem[90, -90] := GeometricTransformation[{Red, Line[{{0, 0, 0}, {1, 0, 0}}], Green, Line[{{0, 0, 0}, {0, 1, 0}}], Blue, Line[{{0, 0, 0}, {0, 0, 1}}]}, TranslationTransform[{0, 0, 1}]];
ENUsystem[lat_, -90] := GeometricTransformation[ENUsystem[90, -90], RotationTransform[(90 - lat)Degree, {1, 0, 0}]];
ENUsystem[lat_, lon_] := GeometricTransformation[ENUsystem[lat, -90], RotationTransform[lon Degree, {0, 0, 1}]];
Manipulate[Graphics3D[{Sphere[], ENUsystem[lat, lon], Green, Tube[{{0, 0, -1.4}, {0, 0, 1.4}}]}, PlotRange -> {{-2, 2}, {-2, 2}, {-2, 2}}], {{lat, 0}, -90, 90}, {{lon, 0}, -180, 180}, SaveDefinitions -> True]Related Guides
-
▪
- Geodesy
Text
Wolfram Research (2008), GeoPositionENU, Wolfram Language function, https://reference.wolfram.com/language/ref/GeoPositionENU.html (updated 2019).
CMS
Wolfram Language. 2008. "GeoPositionENU." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2019. https://reference.wolfram.com/language/ref/GeoPositionENU.html.
APA
Wolfram Language. (2008). GeoPositionENU. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GeoPositionENU.html
BibTeX
@misc{reference.wolfram_2026_geopositionenu, author="Wolfram Research", title="{GeoPositionENU}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/GeoPositionENU.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_geopositionenu, organization={Wolfram Research}, title={GeoPositionENU}, year={2019}, url={https://reference.wolfram.com/language/ref/GeoPositionENU.html}, note=[Accessed: 13-June-2026]}