GeoPath[{loc1,loc2},pathtype]
is a GeoGraphics primitive that represents a path of type pathtype between locations loc1 and loc2.
GeoPath[{loc1,loc2,…},pathtype]
represents a path formed by joining paths of type pathtype between consecutive locations loci.
GeoPath[{loc1,d,α},pathtype]
represents a path moving from location loc1 a distance d with initial bearing α.
GeoPath[{{loc11,loc12,…},{loc21,…},…},pathtype]
represents a disjoint collection of paths of type pathtype.
GeoPath
GeoPath[{loc1,loc2},pathtype]
is a GeoGraphics primitive that represents a path of type pathtype between locations loc1 and loc2.
GeoPath[{loc1,loc2,…},pathtype]
represents a path formed by joining paths of type pathtype between consecutive locations loci.
GeoPath[{loc1,d,α},pathtype]
represents a path moving from location loc1 a distance d with initial bearing α.
GeoPath[{{loc11,loc12,…},{loc21,…},…},pathtype]
represents a disjoint collection of paths of type pathtype.
Details and Options
- The locations loci can be specified as latitude and longitude coordinates {lat,lon} in degrees, as GeoPosition[{lat,lon}], or as named entities Entity[…].
- Entities will be interpreted as the position determined by their "Position" property.
- GeoPath supports the geographic path types:
-
"Geodesic" geodesic path between points "Rhumb","RhumbLine","Loxodrome" path of constant bearing between points "GreatEllipse","GreatCircle" path on a plane through Earth's center - GeoPath[{loc1,…}] represents a path of type "Geodesic".
- For multiple locations loci in a "Geodesic" path, each pair of consecutive locations is joined by a geodesic, but the complete path will not be a geodesic in general. The same can be said of other path types.
- A combination of multiple steps of distances di with respective initial bearings αi can be represented using GeoPath[{loc1,GeoDisplacement[{d1,α1}],GeoDisplacement[{d2,α2}],…},pathtype].
- Long paths will generically not appear straight in the map.
- Special named geo paths include:
-
GeoPath[{"Parallel",lat}] parallel of latitude lat, extending 360° in longitude GeoPath[{"Meridian",lon}] meridian of longitude lon, extending 180° in latitude GeoPath[{"Parallel",lat,{lon1,lon2}}] parallel of latitude lat, from longitude lon1 to lon2 GeoPath[{"Meridian",lon,{lat1,lat2}}] meridian of longitude lon, from latitude lat1 to lat2 GeoPath["Equator"] parallel of latitude 0° GeoPath["NorthernTropic"] parallel of latitude 23.43703° GeoPath["SouthernTropic"] parallel of latitude -23.43703° GeoPath["ArcticCircle"] parallel of latitude 66.56297° GeoPath["AntarcticCircle"] parallel of latitude -66.56297° GeoPath["GreenwichMeridian"] meridian of longitude 0° GeoPath["DateLineMeridian"] meridian of longitude 180° GeoPath["DateLine"] international date line - Line thickness can be specified using Thickness or AbsoluteThickness, as well as Thick and Thin.
- Line dashing can be specified using Dashing or AbsoluteDashing, as well as Dashed, Dotted, etc.
- Line shading or coloring can be specified using CMYKColor, GrayLevel, Hue, Opacity, or RGBColor.
- The option VertexColors->{c1,c2,…} can be used to specify that the color of the line should interpolate between colors ci specified for each point.
- Joining of line segments can be specified using JoinForm.
- Line caps can be specified using CapForm.
Examples
open all close allBasic Examples (5)
Shortest path (geodesic) between two locations:
GeoGraphics[GeoPath[{{-35, -55}, {70, 100}}], GeoRange -> "World", Frame -> True]Line of constant rhumb (loxodrome) between two locations:
GeoGraphics[GeoPath[{GeoPosition[{-33, -55}], GeoPosition[{70, 100}]}, "Rhumb"], GeoRange -> "World"]Move 500 kilometers along a geodesic from New York:
GeoGraphics[Arrow@GeoPath[{Entity["City", {"NewYork", "NewYork", "UnitedStates"}], 500000, -120}, "Geodesic"]]Draw a curve of constant bearing between two cities:
GeoGraphics[{Red, GeoPath[{Entity["City", {"Portland", "Oregon", "UnitedStates"}], Entity["City", {"Orlando", "Florida", "UnitedStates"}]}, "Rhumb"]}]Draw the shortest route between several cities:
GeoGraphics[{Red, GeoPath[{Entity["City", {"Portland", "Oregon", "UnitedStates"}], Entity["City", {"Orlando", "Florida", "UnitedStates"}], Entity["City", {"Boston", "Massachusetts", "UnitedStates"}]}, "Geodesic"]}]Scope (8)
Locations can be specified in various forms:
GeoGraphics[{Red, GeoPath[{{25, -80}, GeoPosition[{42, -88}], Entity["City", {"LosAngeles", "California", "UnitedStates"}]}]}]A geodesic specified by relative displacement from an initial location:
GeoGraphics[{Red, GeoPath[{GeoPosition[{-30, -50}], GeoDisplacement[{Quantity[5000, "Kilometers"], "NorthWest"}]}]}]A sequence of displacements along rhumb lines from an initial position:
GeoGraphics[{Red, GeoPath[{GeoPosition[{0, 0}], GeoDisplacement[{1000000, 40}], GeoDisplacement[{500000, -30}], GeoDisplacement[{8000000, -120}], GeoDisplacement[{2000000, 0}]}, "Rhumb"]}]GeoGraphics[{Red, GeoPath[{"Parallel", 40}], Blue, GeoPath[{"Parallel", 10}], Orange, GeoPath[{"Parallel", -40}]}]Draw meridians, from pole to pole:
GeoGraphics[{Red, GeoPath[{"Meridian", -50}], Blue, GeoPath[{"Meridian", 100}]}, GeoRange -> "World", GeoProjection -> "Bonne"]Draw parts of parallels, from west to east or from east to west:
GeoGraphics[{Arrow@GeoPath[{"Parallel", 40, {-170, 140}}], Arrow@GeoPath[{"Parallel", -30, {170, -140}}]}, GeoRange -> "World"]GeoGraphics[{Red, GeoPath["Equator"], Orange, GeoPath["NorthernTropic"], GeoPath["SouthernTropic"], Blue, GeoPath["ArcticCircle"], GeoPath["AntarcticCircle"], Green, GeoPath["GreenwichMeridian"], GeoPath["DateLineMeridian"]}, GeoProjection -> "WinkelTripel"]Draw the international date line:
GeoGraphics[{Red, GeoPath["DateLine"]}, GeoRange -> {All, {90, 270}}, GeoGridLines -> Quantity[15, "AngularDegrees"], Frame -> True]Options (3)
VertexColors (2)
A geo path with vertex colors:
GeoGraphics[GeoPath[{{-70, -70}, {20, 40}}, VertexColors -> {Blue, Red}]]A random walk of 70 geodesic steps of 1000 kilometers on the Earth:
GeoGraphics[GeoPath[Flatten[{GeoPosition[{0, 0}], Table[GeoDisplacement[{10^6, RandomReal[{0, 360}]}], {70}]}], VertexColors -> Table[Hue[(i/100)], {i, 0, 70}]]]CurveClosed (1)
A geo path is not a closed curve in general:
GeoGraphics[GeoPath[{{0, 0}, {70, 120}, {40, 80}}]]Close the path by joining the first and last points with a curve of the same type, a geodesic in this case:
GeoGraphics[GeoPath[{{0, 0}, {70, 120}, {40, 80}}, CurveClosed -> True]]Applications (3)
A geo triangle, with geodesic sides, in the "LambertAzimuthal" projection:
geotriangle = FilledCurve[{GeoPath[{{0, 0}, {90, 0}, {0, 90}, {0, 0}}]}];GeoGraphics[geotriangle, GeoProjection -> "LambertAzimuthal", GeoRange -> "World"]The same geo triangle in the "Equirectangular" projection:
GeoGraphics[geotriangle, GeoProjection -> "Equirectangular", GeoRange -> "World"]GeoGraphics[geotriangle, GeoProjection -> "Bonne", GeoRange -> "World"]Several paths with the same displacement data but with different initial positions. Use Arrow:
GeoGraphics[Table[{Hue[(lat + 90) / 180], Arrow[GeoPath[{{lat, -90}, GeoDisplacement[{10 ^ 7, 30}]}]]}, {lat, -90, 90, 10}]]Create tooltips to allow coordinates to be read off geo grid lines drawn as geo paths:
GeoGraphics[{Red, Table[Tooltip[GeoPath[{"Parallel", lat}], Row[{"lat = ", lat, °}]], {lat, -90, 90, 15}], Orange, Table[Tooltip[GeoPath[{"Meridian", lon}], Row[{"lon = ", lon, °}]], {lon, -180, 180, 30}]}, GeoProjection -> "Bonne"]Properties & Relations (5)
p = GeoPosition[{-80, -50}];
q = GeoPosition[{80, 50}];Neither the rhumb line (red) nor the geodesic (green) is a straight line (given for comparison in black), using the default equirectangular geo projection:
GeoGraphics[{Line[{p, q}], Red, GeoPath[{p, q}, "Rhumb"], Green, GeoPath[{p, q}, "Geodesic"]}, GeoRange -> "World"]The rhumb line is straight in the Mercator projection, and now it is superimposed on the black line:
GeoGraphics[{Line[{p, q}], Red, GeoPath[{p, q}, "Rhumb"], Green, GeoPath[{p, q}, "Geodesic"]}, GeoRange -> "World", GeoProjection -> "Mercator"]The geodesic is straight in an azimuthal projection centered at one of the points, and now it is superimposed on the black line:
{GeoGraphics[{Line[{p, q}], Red, GeoPath[{p, q}, "Rhumb"], Green, GeoPath[{p, q}, "Geodesic"]}, GeoRange -> "World", GeoProjection -> {"LambertAzimuthal", "Centering" -> p}], GeoGraphics[{Line[{p, q}], Red, GeoPath[{p, q}, "Rhumb"], Green, GeoPath[{p, q}, "Geodesic"]}, GeoRange -> "World", GeoProjection -> {"LambertAzimuthal", "Centering" -> q}]}Graphics3D[gc = N[PolyhedronData["Dodecahedron", "GraphicsComplex"]], Boxed -> False, Method -> {"ShrinkWrap" -> True}, ImageSize -> Small]Get the latitude and longitude of the vertices on a sphere:
points = Most /@ First[GeoPosition[GeoPositionXYZ[gc[[1]], Norm[gc[[1, 1]]]]]]Draw the geodesics among those vertices on a world map:
GeoGraphics[GeoPath[Extract[points, List /@ gc[[2, 1]]]], GeoRange -> "World"]GeoGraphics[GeoPath[Extract[points, List /@ gc[[2, 1]]]], GeoRange -> "World", GeoProjection -> "LambertAzimuthal"]A geo disk or a geo circle is constructed using the endpoints of geodesics starting from its center:
center = GeoPosition[{50, 0}];
radius = 4000000;GeoGraphics[{Red, GeoCircle[center, radius], Blue, Table[GeoPath[{center, GeoDisplacement[{radius, bearing}]}], {bearing, -180, 180, 30}]}]The endpoint of a geodesic path may be computed using GeoDestination:
p = GeoPosition[{40, -120}];
c = GeoDisplacement[{4000000, 100}];GeoGraphics[{GeoPath[{p, c}], Entity["Country", "UnitedStates"]}, Frame -> True]q = GeoDestination[p, c]Check the displacement data of the path using GeoDistance and GeoDirection:
{GeoDistance[p, q], GeoDirection[p, q]}Or directly with GeoDisplacement:
GeoDisplacement[p, q]Construct a geodesic path that leaves Rome with NE direction and goes around the Earth three times:
city = Entity["City", {"Rome", "Lazio", "Italy"}];
r = Quantity[6367470., "Meters"];
course = GeoDisplacement[{6Pi r, "NE"}, "Geodesic"]Computations are performed on an ellipsoidal Earth by default. Hence geodesic paths do not close:
GeoGraphics[Arrow@GeoPath[{city, course}], GeoCenter -> city, GeoRange -> Quantity[150, "Kilometers"]]Use a spherical model for the Earth. Then the geodesic is closed:
GeoGraphics[Arrow@GeoPath[{city, course}], GeoCenter -> city, GeoRange -> Quantity[150, "Kilometers"], GeoModel -> r]Or use a great ellipse, which is always closed:
course = GeoDisplacement[{6Pi r, "NE"}, "GreatEllipse"]GeoGraphics[Arrow@GeoPath[{city, course}], GeoCenter -> city, GeoRange -> Quantity[150, "Kilometers"]]Interactive Examples (1)
Compare the geodesic (green line) and the loxodrome (red line) between any two points:
Manipulate[GeoGraphics[{PointSize[0.02], Point[GeoPosition[{lat1, lon1}]], Point[GeoPosition[{lat2, lon2}]], Red, GeoPath[{{lat1, lon1}, {lat2, lon2}}, "Loxodrome"], Green, GeoPath[{{lat1, lon1}, {lat2, lon2}}, "Geodesic"]}, GeoRange -> "World"], {{lat1, 45}, -90, 90}, {{lon1, -80}, -180, 180}, {{lat2, -30}, -90, 90}, {{lon2, 80}, -180, 180}]Neat Examples (3)
Show an effect of the Earth's curvature using four path segments:
start = EntityValue[Entity["Building", "TourEiffel"], EntityProperty["Building", "Position"]];
course = {GeoDisplacement[{10^5, 0}], GeoDisplacement[{10^5, 90}], GeoDisplacement[{10^5, 180}], GeoDisplacement[{10^5, -90}]};Draw the four geodesic segments:
GraphicsRow[Apply[GeoGraphics[{Red, PointSize[Large], Point[start], Darker[Green], Thickness[Large], Arrow@GeoPath[{start, course}, "Geodesic"]}, ##1]&, {{}, {GeoCenter -> start, GeoRange -> Quantity[2, "Miles"]}}, {1}]]GeoDistance[start, Last[GeoDestination[start, course]]]Now follow four loxodrome segments instead:
GraphicsRow[Apply[GeoGraphics[{Red, PointSize[Large], Point[start], Darker[Green], Thickness[Large], Arrow@GeoPath[{start, course}, "Loxodrome"]}, ##1]&, {{}, {GeoCenter -> start, GeoRange -> Quantity[2, "Miles"]}}, {1}]]Move from the Temple of Zeus along a path given by the first 3141 terms of the continued fraction of
:
start = Entity["Building", "TempleZeusOlympia"];
gclist = GeoDisplacement[{1000#, #}]& /@ ContinuedFraction[Pi, 3141];The path ends just a few miles east of Kossuth, Mississippi:
end = Last@GeoDestination[start, gclist]First[GeoNearest["City", end]]GeoDistance[end, %]GeoGraphics[{Blue, PointSize[Large], Point[start], Yellow, GeoPath[{start, gclist}]}]Study a candidate hexagonal tiling on the Earth. Recursively move from Denver in steps of 100 miles:
p0 = GeoPosition[Entity["City", {"Denver", "Colorado", "UnitedStates"}]]d = Quantity[100, "Miles"]For each geodesic of initial bearing
, draw two new ones with bearings
and
:
newConnections[{GeoPath[{p1_, p2_}], {d_, α0_}}] := Table[{GeoPath[{p2, GeoDestination[p2, {d, α}]}], {d, α}}, {α, {α0 - 60, α0 + 60}}];
newConnections[list_List] := Flatten[newConnections /@ list, 1];pathList = Cases[NestList[newConnections, Table[{GeoPath[{p0, GeoDestination[p0, {d, α}]}], {d, α}}, {α, {0, 120, 240}}], 8], _GeoPath, Infinity];The resulting set of geodesics does not overlap, due to the curvature of the Earth's surface:
GeoGraphics[{Thin, Opacity[0.4], pathList}, ImageSize -> Medium, GeoBackground -> "Plain"]Tech Notes
History
Text
Wolfram Research (2014), GeoPath, Wolfram Language function, https://reference.wolfram.com/language/ref/GeoPath.html.
CMS
Wolfram Language. 2014. "GeoPath." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/GeoPath.html.
APA
Wolfram Language. (2014). GeoPath. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GeoPath.html
BibTeX
@misc{reference.wolfram_2026_geopath, author="Wolfram Research", title="{GeoPath}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/GeoPath.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_geopath, organization={Wolfram Research}, title={GeoPath}, year={2014}, url={https://reference.wolfram.com/language/ref/GeoPath.html}, note=[Accessed: 12-June-2026]}