---
title: "GeoGraphics"
language: "en"
type: "Symbol"
summary: "GeoGraphics[primitives, options] represents a two-dimensional geographical image."
keywords: 
- map
- atlas
- base maps
- GIS
- geographic information systems
- geography
- cartography
- mapping
- relief maps
- road maps
- arcgis
- street map
- world map
- country map
- state map
- county map
- city map
- province map
- river map
- mountain map
- ocean map
- lake map
- travel map
canonical_url: "https://reference.wolfram.com/language/ref/GeoGraphics.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Maps & Cartography"
    link: "https://reference.wolfram.com/language/guide/MapsAndCartography.en.md"
  - 
    title: "Geographic Data & Entities"
    link: "https://reference.wolfram.com/language/guide/GeographicData.en.md"
  - 
    title: "Geodesy"
    link: "https://reference.wolfram.com/language/guide/Geodesy.en.md"
  - 
    title: "Video Computation: Update History"
    link: "https://reference.wolfram.com/language/guide/VideoComputation-UpdateHistory.en.md"
  - 
    title: "Weather Data"
    link: "https://reference.wolfram.com/language/guide/WeatherData.en.md"
  - 
    title: "Scientific Data Analysis"
    link: "https://reference.wolfram.com/language/guide/ScientificDataAnalysis.en.md"
  - 
    title: "Transportation Data"
    link: "https://reference.wolfram.com/language/guide/TransportationData.en.md"
  - 
    title: "Earth Sciences: Data & Computation"
    link: "https://reference.wolfram.com/language/guide/EarthSciencesDataAndComputation.en.md"
  - 
    title: "Locations, Paths, and Routing"
    link: "https://reference.wolfram.com/language/guide/LocationsPathsAndRouting.en.md"
  - 
    title: "Charting and Information Visualization"
    link: "https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md"
  - 
    title: "WDF (Wolfram Data Framework)"
    link: "https://reference.wolfram.com/language/guide/WDFWolframDataFramework.en.md"
  - 
    title: "Cloud Execution Metadata"
    link: "https://reference.wolfram.com/language/guide/CloudExecutionMetadata.en.md"
related_tutorials: 
  - 
    title: "GeoGraphics"
    link: "https://reference.wolfram.com/language/tutorial/GeoGraphics.en.md"
---
# GeoGraphics

GeoGraphics[primitives, options] represents a two-dimensional geographical image.

## Details and Options

* ``GeoGraphics`` constructs maps of regions of the world or other celestial bodies.

* ``GeoGraphics`` takes a set of geo graphics primitives, does a projection and returns a graphical image.

[image]

* ``GeoGraphics`` uses the same primitives as ``Graphics``, with the following additions:

|                                 |                                                          |
| ------------------------------- | -------------------------------------------------------- |
| GeoBoundsRegion[ranges]         | latitude-longitude rectangle                             |
| GeoBoundsRegionBoundary[ranges] | boundary of a latitude-longitude rectangle               |
| GeoCircle[pt, r]                | cartographic circle supporting geo entities              |
| GeoDisk[pt, r]                  | cartographic disk area supporting geo entities           |
| GeoHemisphere[pt]               | hemisphere centered at position pt                       |
| GeoHemisphereBoundary[pt]       | boundary of a hemisphere, i.e. a great circle or ellipse |
| GeoMarker[pts]                  | pushpin supporting geo entities                          |
| GeoPath[pts]                    | cartographic path supporting geo entities                |
| GeoPolygon[pts]                 | cartographic polygon supporting geo entities             |
| GeoVisibleRegion[pt]            | visible area from an elevated point                      |
| GeoVisibleRegionBoundary[pt]    | horizon from an elevated point                           |
| DayHemisphere[date]             | half of Earth illuminated by the Sun at a given time     |
| NightHemisphere[date]           | half of Earth not illuminated by the Sun at a given time |
| DayNightTerminator[date]        | closed path separating the day and night hemispheres     |

* ``GeoGraphics`` uses the same directives as ``Graphics``, with the following addition:

[`GeoStyling`](https://reference.wolfram.com/language/ref/GeoStyling.en.md)[``mapstyle``]	display faces of filled geo objects using ``mapstyle``

* ``GeoGraphics`` has the same options as ``Graphics``, with the following additions and changes: []

|                      |           |                                                |
| -------------------- | --------- | ---------------------------------------------- |
| GeoBackground        | Automatic | style specifications for the background        |
| GeoCenter            | Automatic | center coordinates to use                      |
| GeoGridLines         | None      | geographic grid lines to draw                  |
| GeoGridLinesStyle    | Automatic | style specifications for geographic grid lines |
| GeoGridRange         | All       | projected coordinate range to include          |
| GeoGridRangePadding  | Automatic | how much to pad the projected range            |
| GeoModel             | Automatic | model of the Earth (or other body) to use      |
| GeoProjection        | Automatic | projection to use                              |
| GeoRange             | Automatic | geographic area range to include               |
| GeoRangePadding      | Automatic | how much to pad the geographic range           |
| GeoResolution        | Automatic | average distance between background pixels     |
| GeoScaleBar          | None      | scale bar to display                           |
| GeoServer            | Automatic | specification of a tile server                 |
| GeoZoomLevel         | Automatic | zoom to use for geographic background          |
| MetaInformation      | {}        | meta-information about the map                 |
| RasterSize           | Automatic | raster dimensions for the background data      |

* ``GeoGraphics`` can use vector backgrounds like ``"Terrain"``, ``"Plain"`` or ``"Classic"``, and also raster backgrounds like ``"StreetMap"``, ``"Satellite"`` or ``"ReliefMap"``. The default geo background is ``"Terrain"``.

* ``GeoGraphics[]`` gives a map of the world centered at the longitude of the current geo location with default geo styling.

* ``AbsoluteOptions`` can be used to give explicit values for geo graphics settings.

* ``GeoGraphics`` is displayed in ``StandardForm`` as a graphical image.

* Using ``GeoGraphics`` requires internet connectivity.

* Clicking on a geo graphic and selecting the Get Coordinates tool from the [`Graphics`](https://reference.wolfram.com/language/guide/GraphicsMenu.en.md) ▶ [Drawing Tools](https://reference.wolfram.com/language/ref/menuitem/DrawingTools.en.md) allows coordinate information to be interactively read off.

### List of all options

|                        |                 |                                                                                    |
| ---------------------- | --------------- | ---------------------------------------------------------------------------------- |
| AlignmentPoint         | Center          | the default point in the graphic to align with                                     |
| AspectRatio            | Automatic       | ratio of height to width                                                           |
| Axes                   | False           | whether to draw axes                                                               |
| AxesLabel              | None            | axes labels                                                                        |
| AxesOrigin             | Automatic       | where axes should cross                                                            |
| AxesStyle              | {}              | style specifications for the axes                                                  |
| Background             | None            | background color for the plot                                                      |
| BaselinePosition       | Automatic       | how to align with a surrounding text baseline                                      |
| BaseStyle              | {}              | base style specifications for the graphic                                          |
| ContentSelectable      | Automatic       | whether to allow contents to be selected                                           |
| CoordinatesToolOptions | Automatic       | detailed behavior of the coordinates tool                                          |
| Epilog                 | {}              | primitives rendered after the main plot                                            |
| FormatType             | TraditionalForm | the default format type for text                                                   |
| Frame                  | False           | whether to put a frame around the plot                                             |
| FrameLabel             | None            | frame labels                                                                       |
| FrameStyle             | {}              | style specifications for the frame                                                 |
| FrameTicks             | Automatic       | frame ticks                                                                        |
| FrameTicksStyle        | {}              | style specifications for frame ticks                                               |
| GeoBackground          | Automatic       | style specifications for the background                                            |
| GeoCenter              | Automatic       | center coordinates to use                                                          |
| GeoGridLines           | None            | geographic grid lines to draw                                                      |
| GeoGridLinesStyle      | Automatic       | style specifications for geographic grid lines                                     |
| GeoGridRange           | All             | projected coordinate range to include                                              |
| GeoGridRangePadding    | Automatic       | how much to pad the projected range                                                |
| GeoModel               | Automatic       | model of the Earth (or other body) to use                                          |
| GeoProjection          | Automatic       | projection to use                                                                  |
| GeoRange               | Automatic       | geographic area range to include                                                   |
| GeoRangePadding        | Automatic       | how much to pad the geographic range                                               |
| GeoResolution          | Automatic       | average distance between background pixels                                         |
| GeoScaleBar            | None            | scale bar to display                                                               |
| GeoServer              | Automatic       | specification of a tile server                                                     |
| GeoZoomLevel           | Automatic       | zoom to use for geographic background                                              |
| GridLines              | None            | grid lines to draw                                                                 |
| GridLinesStyle         | {}              | style specifications for grid lines                                                |
| ImageMargins           | 0.              | the margins to leave around the graphic                                            |
| ImagePadding           | All             | what extra padding to allow for labels etc.                                        |
| ImageSize              | Automatic       | the absolute size at which to render the graphic                                   |
| LabelStyle             | {}              | style specifications for labels                                                    |
| MetaInformation        | {}              | meta-information about the map                                                     |
| Method                 | Automatic       | details of graphics methods to use                                                 |
| PlotLabel              | None            | an overall label for the plot                                                      |
| PlotRange              | All             | range of values to include                                                         |
| PlotRangeClipping      | False           | whether to clip at the plot range                                                  |
| PlotRangePadding       | Automatic       | how much to pad the range of values                                                |
| PlotRegion             | Automatic       | the final display region to be filled                                              |
| PreserveImageOptions   | Automatic       | whether to preserve image options when displaying new versions of the same graphic |
| Prolog                 | {}              | primitives rendered before the main plot                                           |
| RasterSize             | Automatic       | raster dimensions for the background data                                          |
| RotateLabel            | True            | whether to rotate y labels on the frame                                            |
| Ticks                  | Automatic       | axes ticks                                                                         |
| TicksStyle             | {}              | style specifications for axes ticks                                                |

---

## Examples (84)

### Basic Examples (7)

Show a map of the world centered at your location:

```wl
In[1]:= GeoGraphics[]

Out[1]= [image]
```

---

Display a street map centered on your current location:

```wl
In[1]:= GeoGraphics[GeoMarker[], GeoRange -> Quantity[1, "Miles"]]

Out[1]= [image]
```

---

Draw a polygon showing Italy:

```wl
In[1]:= GeoGraphics[Polygon[Entity["Country", "Italy"]]]

Out[1]= [image]
```

Style a geo polygon with graphics directives:

```wl
In[2]:= GeoGraphics[{EdgeForm[Black], FaceForm[StandardRed], Polygon[Entity["Country", "Italy"]]}]

Out[2]= [image]
```

---

Display a map of France and areas around it:

```wl
In[1]:= GeoGraphics[GeoRange -> Entity["Country", "France"], GeoRangePadding -> Quantity[100, "Kilometers"]]

Out[1]= [image]
```

---

Draw a map of Germany only:

```wl
In[1]:= GeoGraphics[{GeoStyling["StreetMap"], Polygon[Entity["Country", "Germany"]]}, GeoBackground -> None]

Out[1]= [image]
```

---

Plot the world in a Robinson projection:

```wl
In[1]:= GeoGraphics[GeoRange -> "World", GeoProjection -> "Robinson"]

Out[1]= [image]
```

Connect two points on Earth with ``GeoPath`` :

```wl
In[2]:= With[{locations = {GeoPosition[{-35, -55}], GeoPosition[{70, 100}]}}, GeoGraphics[{{StandardRed, GeoPath[locations, "Geodesic"]}}, GeoRange -> "World", GeoProjection -> "Robinson"]]

Out[2]= [image]
```

---

A map of the area around Olympus Mons on Mars:

```wl
In[1]:= GeoGraphics[Entity["SolarSystemFeature", "OlympusMonsMars"], GeoRange -> Quantity[400, "Miles"]]

Out[1]= [image]
```

### Scope (31)

#### Primitives (20)

Plot the US as a geo polygon:

```wl
In[1]:= GeoGraphics[Polygon[Entity["Country", "UnitedStates"]]]

Out[1]= [image]
```

---

Plot the bounding rectangle of the US, with sides being parallels and meridians:

```wl
In[1]:= GeoGraphics[GeoBoundsRegion[Entity["Country", "UnitedStates"]]]

Out[1]= [image]
```

---

Draw a straight line between two cities:

```wl
In[1]:=
GeoGraphics[{
	Polygon[Entity["Country", "UnitedStates"]], 
	StandardRed, Thick, Line[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"NewYork", "NewYork", "UnitedStates"}]}]
	}]

Out[1]= [image]
```

---

Draw a red point at the position of Washington, DC:

```wl
In[1]:= GeoGraphics[{StandardRed, PointSize[Large], Point[GeoPosition[Entity["City", {"Washington", "DistrictOfColumbia", "UnitedStates"}]]]}]

Out[1]= [image]
```

---

Draw points at the positions of buildings of the Acropolis:

```wl
In[1]:= GeoGraphics[{StandardRed, PointSize[Large], Point[EntityClass["Building", "AcropolisAthens"]]}]

Out[1]= [image]
```

---

Show the location of Madrid with a geo marker:

```wl
In[1]:= GeoGraphics[GeoMarker[Entity["City", {"Madrid", "Madrid", "Spain"}]], GeoRange -> Entity["Country", "Spain"]]

Out[1]= [image]
```

---

Plot a set of styled geo disks using different center specifications:

```wl
In[1]:=
With[{r = Quantity[450, "Kilometers"]}, 
	GeoGraphics[{
	Yellow, GeoDisk[{40, -4}, r], 
	Red, GeoDisk[GeoPosition[{47, 3}], r], 
	Blue, GeoDisk[Entity["City", {"Berlin", "Berlin", "Germany"}], r]
	}]]

Out[1]= [image]
```

---

Plot a set of styled geo circles using different center specifications:

```wl
In[1]:=
With[{r = Quantity[1000, "Kilometers"]}, 
	GeoGraphics[{
	Purple, GeoCircle[{40, 0}, r], 
	Red, GeoCircle[GeoPosition[Entity["City", {"Nairobi", "Nairobi", "Kenya"}]], r], 
	Green, GeoCircle[Entity["City", {"Johannesburg", "Gauteng", "SouthAfrica"}], r]
	}]]

Out[1]= [image]
```

---

Color the part of the Earth currently in daylight:

```wl
In[1]:= GeoGraphics[{Yellow, DayHemisphere[]}, GeoRange -> "World"]

Out[1]= [image]
```

---

Color the part of the Earth currently in darkness:

```wl
In[1]:= GeoGraphics[NightHemisphere[], GeoRange -> "World"]

Out[1]= [image]
```

---

Display the current terminator separating daylight from darkness on the Earth:

```wl
In[1]:= GeoGraphics[{Red, DayNightTerminator[]}, GeoRange -> "World"]

Out[1]= [image]
```

---

Show the shortest path (geodesic) between New York and Hong Kong:

```wl
In[1]:=
With[{cities = {Entity["City", {"NewYork", "NewYork", "UnitedStates"}], Entity["City", {"HongKong", "HongKong", "HongKong"}]}}, 
	GeoGraphics[{GeoPath[cities], Red, Point[cities]}, GeoCenter -> {0, -150}, GeoRange -> "World", Frame -> True]]

Out[1]= [image]
```

---

Plot a random path of 70 geodesic steps of 1000 kilometers:

```wl
In[1]:= GeoGraphics[GeoPath[Flatten@{GeoPosition[{0, 0}], Table[GeoDisplacement[{10 ^ 6, RandomReal[{0, 360}]}], {70}]}, VertexColors -> Table[Hue[i / 100], {i, 0, 70}]]]

Out[1]= [image]
```

---

Draw an arrow between two cities:

```wl
In[1]:= GeoGraphics[{Polygon[Entity["Country", "UnitedStates"]], Red, Arrow[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"NewYork", "NewYork", "UnitedStates"}]}]}]

Out[1]= [image]
```

Draw an arrow with multiple segments:

```wl
In[2]:= GeoGraphics[{Polygon[Entity["Country", "UnitedStates"]], Red, Arrow[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"NewYork", "NewYork", "UnitedStates"}], Entity["City", {"Miami", "Florida", "UnitedStates"}]}]}]

Out[2]= [image]
```

---

The visible region from an altitude of 10 km:

```wl
In[1]:= GeoGraphics[GeoVisibleRegion[{40, -90, 10000}]]

Out[1]= [image]
```

---

The boundary of the visible region from an altitude of 10 km:

```wl
In[1]:= GeoGraphics[GeoVisibleRegionBoundary[{40, -90, 10000}]]

Out[1]= [image]
```

---

Smooth country polygons using geo filled curves:

```wl
In[1]:= polygonToFilledCurve[Polygon[GeoPosition[l_]]] := FilledCurve[BSplineCurve[GeoPosition[#], SplineDegree -> Round[Length[#] / 4]]]& /@ l
```

Show a map of smoothed South American nations:

```wl
In[2]:= GeoGraphics[{GeoStyling[Opacity[0.6]], RandomColor[], polygonToFilledCurve[#]}& /@ CountryData[EntityClass["Country", "SouthAmerica"], "SchematicPolygon"]]

Out[2]= [image]
```

---

Plot the area around the Arctic Circle:

```wl
In[1]:= GeoGraphics[{Point[GeoPosition[{90, 0}]], Text[Column[{"North", "Pole"}], GeoPosition[{90, -80}]], Orange, Thick, Text[Style["Arctic Circle", Bold, Medium], GeoPosition[{65, 225}], Automatic, {1, 1}], Dashed, GeoPath["ArcticCircle"]}, GeoProjection -> {"LambertAzimuthal", "Centering" -> {90, 0}}, GeoRange -> {{60, 90}, All}, GeoRangePadding -> Full]

Out[1]= [image]
```

---

Combine a number of geo graphics primitives in one map:

```wl
In[1]:=
GeoGraphics[{
	Polygon[Entity["Country", "Austria"]], {GeoStyling["ReliefMap"], Polygon[Entity["Country", "Hungary"]]}, 
	Red, Polygon[Entity["Country", "Switzerland"]], PointSize[Large], Tooltip[Point[Entity["City", {"Budapest", "Budapest", "Hungary"}]], [image]],   {GeoStyling[{"GeoImage", [image]}], Polygon[Entity["Country", "Slovenia"]]}, {GeoStyling["ContourMap", ColorFunction -> ColorData["GreenPinkTones"]], GeoDisk[Entity["City", {"Krakow", "Malopolskie", "Poland"}], Quantity[120, "Kilometers"]]}, Directive[{Purple, Thickness[Small]}], Arrow[GeoPath[{Entity["City", {"Stuttgart", "BadenWurttemberg", "Germany"}], Entity["City", {"Zurich", "Zurich", "Switzerland"}]}]]
	}, GeoCenter -> Entity["City", {"Vienna", "Vienna", "Austria"}], GeoGridLines -> Automatic, GeoGridLinesStyle -> Directive[{Opacity[0.7], Orange}], 
	GeoZoomLevel -> 6, ImageSize -> Large]

Out[1]= [image]
```

---

``GeoGraphics`` supports 2D and 3D graphics primitives:

```wl
In[1]:=
GeoGraphics[{
	Simplex[GeoPosition[{{0, 0}, {-40, 0}, {-30, 80}}]], Ball[GeoPosition[{-10, -30}], 0.2], Ellipsoid[GeoPosition[{50, -100}], {0.2, 0.4}], Parallelepiped[GeoPosition[{0, -160}], {{0.2, 0}, {0.3, 0.4}}], Parallelogram[GeoPosition[{-40, -130}], {{0.2, 0}, {0.3, -0.5}}], Sphere[GeoPosition[{70, 120}], 0.4]
	}, 
	GeoProjection -> "Bonne", GeoRange -> "World"
	]

Out[1]= [image]
```

#### Projections and Map Coordinates (8)

Large-scale maps use the equirectangular projection by default:

```wl
In[1]:= GeoGraphics[GeoRange -> "World"]

Out[1]= [image]

In[2]:= AbsoluteOptions[%, GeoProjection]

Out[2]= {GeoProjection -> "Equirectangular"}
```

Intermediate-scale maps use the Lambert azimuthal projection centered at the geo range of the map:

```wl
In[3]:= GeoGraphics[Entity["Country", "UnitedStates"]]

Out[3]= [image]

In[4]:= AbsoluteOptions[%, GeoProjection]

Out[4]= {GeoProjection -> {"LambertAzimuthal", "Centering" -> GeoPosition[{37.2546, -95.8415}]}}
```

Small scales are represented by default using the Mercator projection, to preserve angles:

```wl
In[5]:= GeoGraphics[Entity["City", {"Paris", "IleDeFrance", "France"}], GeoRange -> Quantity[10, "Kilometers"]]

Out[5]= [image]

In[6]:= AbsoluteOptions[%, GeoProjection]

Out[6]= {GeoProjection -> "Mercator"}
```

---

Choose a projection with default parameters from ``GeoProjectionData[]`` :

```wl
In[1]:= GeoGraphics[Polygon[Entity["Country", "Tunisia"]], GeoProjection -> "WinkelTripel"]

Out[1]= [image]

In[2]:= GeoGraphics[Polygon[EntityClass["Country", "Europe"]], GeoProjection -> "Orthographic"]

Out[2]= [image]
```

---

Specify the parameters of a cylindrical projection using the default center meridian at Greenwich:

```wl
In[1]:= GeoGraphics[GeoRange -> "World", GeoProjection -> "Mercator", Frame -> True]

Out[1]= [image]
```

For cylindrical projections, easting represents longitude and is returned in degrees. Use radians instead:

```wl
In[2]:=
GeoGraphics[GeoRange -> "World", GeoProjection -> {"Mercator", "ReferenceModel" -> 1}, 
	Frame -> True]

Out[2]= [image]
```

Use a scale in kilometers for equatorial distance. The same radius geo disks show distance distortion:

```wl
In[3]:=
GeoGraphics[Table[GeoDisk[{lat, lon}, Quantity[1000, "Kilometers"]], {lat, -60, 60, 20}, {lon, -140, 140, 40}], GeoRange -> "World", GeoProjection -> {"Mercator", "ReferenceModel" -> 6378.137}, 
	Frame -> True]

Out[3]= [image]
```

---

Specify the parameters of an azimuthal projection, mainly the tangency point of the projection plane:

```wl
In[1]:= GeoGraphics[Polygon[Entity["Country", "Brazil"]], GeoProjection -> {"Orthographic", "Centering" -> Entity["City", {"RioDeJaneiro", "RioDeJaneiro", "Brazil"}]}]

Out[1]= [image]

In[2]:= GeoGraphics[Polygon[Entity["Country", "Brazil"]], GeoProjection -> {"Orthographic", "Centering" -> Entity["City", {"NewYork", "NewYork", "UnitedStates"}]}, Background -> Black]

Out[2]= [image]
```

Some azimuthal projections cannot cover the whole world in a single map; the Lambert azimuthal projection can:

```wl
In[3]:= GeoGraphics[GeoRange -> "World", GeoProjection -> "LambertAzimuthal"]

Out[3]= [image]
```

---

Specify the parameters of a conic projection by choosing a centering point:

```wl
In[1]:= GeoGraphics[GeoRange -> "World", GeoProjection -> {"ConicEquidistant", "Centering" -> {0, 0}}, Axes -> True]

Out[1]= [image]
```

Choose the standard parallels, which are true to scale, and draw them:

```wl
In[2]:= GeoGraphics[{GeoPath[{"Parallel", 60}], GeoPath[{"Parallel", 70}]}, GeoRange -> "World", GeoProjection -> {"ConicEquidistant", "StandardParallels" -> {60, 70}}]

Out[2]= [image]

In[3]:= GeoGraphics[{GeoPath[{"Parallel", -40}], GeoPath[{"Parallel", 70}]}, GeoRange -> "World", GeoProjection -> {"ConicEquidistant", "StandardParallels" -> {-40, 70}}]

Out[3]= [image]
```

---

Geo primitives are defined in terms of ``{lat, lon}`` positions on the Earth and they are projected:

```wl
In[1]:= GeoGraphics[{Purple, GeoDisk[{-30, 70}, Quantity[5000, "Kilometers"]]}, GeoRange -> "World", GeoProjection -> "Bonne", Frame -> True]

Out[1]= [image]
```

Standard primitives are defined in terms of map coordinates and they are not projected:

```wl
In[2]:=
GeoGraphics[{
	Purple, GeoDisk[{-30, 70}, Quantity[5000, "Kilometers"]], 
	Orange, Disk[{-1, .5}, .5]
	}, GeoRange -> "World", GeoProjection -> "Bonne", Frame -> True]

Out[2]= [image]
```

Standard primitives may be placed using ``GeoPosition[{lat, lon}]``, which is automatically projected:

```wl
In[3]:=
GeoGraphics[{
	Purple, GeoDisk[{-30, 70}, Quantity[5000, "Kilometers"]], 
	Orange, Disk[GeoPosition[{-30, 70}], .5]
	}, GeoRange -> "World", GeoProjection -> "Bonne", Frame -> True]

Out[3]= [image]
```

---

A ``GeoPath`` (geodesic or loxodrome) is generically curved in the map:

```wl
In[1]:= GeoGraphics[GeoPath[{{-30, -120}, {80, 10}}], GeoProjection -> "Equirectangular", Frame -> True]

Out[1]= [image]
```

The standard ``Line`` primitive is always a straight line in the map:

```wl
In[2]:= GeoGraphics[{GeoPath[{{-30, -120}, {80, 10}}], Red, Line[{{-120, -30}, {10, 80}}]}, GeoProjection -> "Equirectangular", Frame -> True]

Out[2]= [image]
```

Coordinates coincide (though reversed) only for the equirectangular projection; use ``GeoPosition`` otherwise:

```wl
In[3]:= GeoGraphics[{GeoPath[{{-30, -120}, {80, 10}}], Red, Line[GeoPosition[{{-30, -120}, {80, 10}}]]}, GeoProjection -> "Cassini", Frame -> True]

Out[3]= [image]
```

---

A filled ``GeoPath`` has generically curved sides in the map:

```wl
In[1]:= points = {{-40, -50}, {40, -30}, {40, 30}, {-40, 50}, {-40, -50}};

In[2]:= GeoGraphics[{Purple, FilledCurve[GeoPath[points]]}, GeoProjection -> "Albers"]

Out[2]= [image]
```

The standard ``Polygon`` primitive always has straight sides:

```wl
In[3]:= GeoGraphics[{Orange, Polygon[GeoPosition[points]]}, GeoProjection -> "Albers"]

Out[3]= [image]
```

Compare both together:

```wl
In[4]:=
GeoGraphics[{
	Purple, FilledCurve[GeoPath[points]], 
	Orange, Polygon[GeoPosition[points]]
	}, GeoProjection -> "Albers"]

Out[4]= [image]
```

#### Coordinates (3)

Coordinate ranges for the map are determined by the total bounding box of all coordinates:

```wl
In[1]:= GeoGraphics[{Orange, Polygon[EntityClass["Country", "Europe"]]}]

Out[1]= [image]
```

---

Coordinate specifications outside primitives contribute to the bounding box, but are not plotted:

```wl
In[1]:= GeoGraphics[{GeoPosition[{50, 20}], Entity["Country", "Portugal"]}]

Out[1]= [image]
```

Therefore this produces a map around a given geographical entity, with default geo range padding:

```wl
In[2]:= GeoGraphics[Entity["Country", "France"]]

Out[2]= [image]
```

---

Coordinates in ``Graphics`` primitives that are not wrapped in ``GeoPosition`` are considered to be already in final projection. They also count toward the total coordinates range:

```wl
In[1]:= GeoGraphics[{GeoStyling["OutlineMap"], Opacity[.5], EdgeForm[Thin], Polygon[Entity["Country", "Germany"]], Polygon[{{0, 55}, {20, 55}, {20, 65}, {0, 65}}]}, GeoProjection -> "Mercator", Frame -> True]

Out[1]= [image]
```

### Options (22)

#### GeoBackground (5)

Use the default background for map region and background:

```wl
In[1]:= GeoGraphics[{Polygon[Entity["Country", "UnitedStates"]]}]

Out[1]= [image]
```

Draw a relief map background for a map of the US:

```wl
In[2]:= GeoGraphics[{Polygon[Entity["Country", "UnitedStates"]]}, GeoBackground -> GeoStyling["ReliefMap"]]

Out[2]= [image]
```

Use a relief map background for world maps with various projections:

```wl
In[3]:= GeoGraphics[GeoProjection -> #, GeoGridLines -> Automatic, GeoRange -> All, GeoBackground -> GeoStyling["ReliefMap"], GeoGridLinesStyle -> Directive[Opacity[.5], Yellow]]& /@ {"LambertAzimuthal", "Mercator", "Equirectangular", "Bonne"}

Out[3]= {[image], [image], [image], [image]}
```

---

Specify a uniform background for the geographic map:

```wl
In[1]:= GeoGraphics[Polygon[Entity["Country", "World"]], GeoGridLines -> Automatic, GeoRange -> All, GeoBackground -> GeoStyling[LightBlue], GeoProjection -> "Bonne"]

Out[1]= [image]
```

Specify uniform backgrounds for the map and graphic as a whole:

```wl
In[2]:= GeoGraphics[Polygon[Entity["Country", "World"]], GeoGridLines -> Automatic, GeoRange -> All, GeoBackground -> GeoStyling[LightBlue], Background -> Blue, GeoProjection -> "Bonne"]

Out[2]= [image]
```

---

World map with country boundaries:

```wl
In[1]:= GeoGraphics["World", GeoBackground -> "CountryBorders"]

Out[1]= [image]
```

European country borders in 1900:

```wl
In[2]:= GeoGraphics[Entity["GeographicRegion", "Europe"], GeoBackground -> Dated["CountryBorders", 1900]]

Out[2]= [image]
```

---

Use raster geo backgrounds:

```wl
In[1]:= GeoGraphics[Entity["Building", "EiffelTower::5h9w8"], GeoRange -> Quantity[1, "Kilometers"], GeoBackground -> "StreetMap"]

Out[1]= [image]

In[2]:= GeoGraphics[Entity["AdministrativeDivision", {"Hawaii", "UnitedStates"}], GeoBackground -> "ReliefMap"]

Out[2]= [image]
```

---

Use vector geo backgrounds:

```wl
In[1]:= GeoGraphics[Entity["Building", "EiffelTower::5h9w8"], GeoRange -> Quantity[1, "Kilometers"], GeoBackground -> "Plain"]

Out[1]= [image]

In[2]:= GeoGraphics[Entity["AdministrativeDivision", {"Hawaii", "UnitedStates"}], GeoBackground -> "ClassicDark"]

Out[2]= [image]
```

#### GeoCenter (1)

Use ``GeoCenter`` to define the center for the map:

```wl
In[1]:= GeoGraphics[GeoRange -> "World", GeoCenter -> {0, -180}]

Out[1]= [image]
```

The geo range is extended to have Munich at the center of the map:

```wl
In[2]:= GeoGraphics[{Polygon[Entity["Country", "Germany"]], GeoMarker[Entity["City", {"Munich", "Bavaria", "Germany"}]]}, GeoCenter -> Entity["City", {"Munich", "Bavaria", "Germany"}]]

Out[2]= [image]
```

#### GeoGridLines (1)

Use ``GeoGridLines`` to overlay the map with lines of latitude and longitude:

```wl
In[1]:= GeoGraphics[{GeoStyling["ReliefMap"], Polygon[Entity["Country", "UnitedStates"]]}, GeoGridLines -> Automatic]

Out[1]= [image]
```

Show geo grid lines (constant latitude and longitude) and grid lines (constant projected coordinates):

```wl
In[2]:= GeoGraphics[GeoRange -> "World", GeoBackground -> None, GeoProjection -> "Bonne", GeoGridLines -> Automatic, GridLines -> Automatic]

Out[2]= [image]
```

#### GeoGridLinesStyle (1)

Use ``GeoGridLinesStyle`` to change the styling for lines of latitude and longitude:

```wl
In[1]:= GeoGraphics[{GeoStyling["ReliefMap"], Polygon[Entity["Country", "UnitedStates"]]}, GeoGridLines -> Automatic, GeoGridLinesStyle -> Yellow, GeoBackground -> Black]

Out[1]= [image]
```

#### GeoGridRange (2)

Specify projected coordinate ranges in the coordinate system determined by the projection:

```wl
In[1]:= GeoGraphics[GeoProjection -> "Mercator", GeoGridRange -> {{-120, -60}, {0, 60}}]

Out[1]= [image]
```

---

A map of the Chicago area in zone 16 of the Universal Transverse Mercator coordinate system:

```wl
In[1]:= GeoGridPosition[Entity["City", {"Chicago", "Illinois", "UnitedStates"}], "UTMZone16"]

Out[1]= GeoGridPosition[{443388., 4.631964660538083*^6}, "UTMZone16"]

In[2]:= GeoGraphics[GeoProjection -> "UTMZone16", GeoBackground -> "Satellite", GeoGridRange -> {{430000, 470000}, {4615000, 4655000}}]

Out[2]= [image]
```

#### GeoGridRangePadding (1)

Add padding in the projected coordinate system:

```wl
In[1]:= GeoGraphics["World", GeoProjection -> "Bonne", GeoGridRangePadding -> 0.3]

Out[1]= [image]
```

Add positive padding in the horizontal direction, but negative padding in the vertical direction:

```wl
In[2]:= GeoGraphics["World", GeoProjection -> "Bonne", GeoGridRangePadding -> {0.5, -0.5}]

Out[2]= [image]
```

#### GeoModel (2)

Construct a geodesic path that leaves Rome with NE direction and goes around the Earth three times:

```wl
In[1]:=
city = Entity["City", {"Rome", "Lazio", "Italy"}];
r = Quantity[6.367 10^6, "Meters"];
course = GeoDisplacement[{6Pi r, 45}, "Geodesic"]

Out[1]= GeoDisplacement[{1.2001512255243728*^8, 45}, "Geodesic"]
```

Computations are performed by default on an ellipsoidal Earth, meaning geodesic paths do not close:

```wl
In[2]:= GeoGraphics[Arrow@GeoPath[{city, course}], GeoCenter -> city, GeoRange -> Quantity[150, "Kilometers"]]

Out[2]= [image]
```

Using a spherical model for the Earth results in closed geodesics:

```wl
In[3]:= GeoGraphics[Arrow@GeoPath[{city, course}], GeoCenter -> city, GeoRange -> Quantity[150, "Kilometers"], GeoModel -> r]

Out[3]= [image]
```

---

A map of Mars:

```wl
In[1]:= GeoGraphics[GeoRange -> All, GeoModel -> "Mars", GeoProjection -> "Mollweide", Background -> Black]

Out[1]= [image]
```

#### GeoProjection (1)

Use ``GeoProjection`` to choose the map projection:

```wl
In[1]:= GeoGraphics[GeoRange -> "World", GeoProjection -> {"Bonne", "Centering" -> {0, 0}}]

Out[1]= [image]
```

#### GeoRange (1)

Use ``GeoRange`` to define the latitude and longitude coordinate ranges:

```wl
In[1]:= GeoGraphics[GeoRange -> {{-40, 40}, All}]

Out[1]= [image]

In[2]:= GeoGraphics[GeoRange -> {All, {-90, 90}}]

Out[2]= [image]

In[3]:= GeoGraphics[GeoRange -> {{-90, 90}, {-360, 0}}]

Out[3]= [image]
```

#### GeoRangePadding (1)

Use ``GeoRangePadding`` to pad the coordinate range for the map:

```wl
In[1]:= GeoGraphics[{Polygon[Entity["Country", "UnitedStates"]]}, GeoBackground -> GeoStyling["ReliefMap"], GeoRangePadding -> Scaled[0.2]]

Out[1]= [image]
```

#### GeoResolution (1)

Specify the geo zoom level as an average distance between neighboring pixels:

```wl
In[1]:= GeoGraphics[Entity["Building", "EiffelTower::5h9w8"], GeoResolution -> Quantity[100, "Meters"], GeoBackground -> "StreetMap"]

Out[1]= [image]

In[2]:= GeoGraphics[Entity["Building", "EiffelTower::5h9w8"], GeoResolution -> Quantity[1, "Yards"], GeoBackground -> "StreetMap"]

Out[2]= [image]
```

#### GeoScaleBar (1)

Show a map with no geo scale:

```wl
In[1]:= GeoGraphics[Entity["City", {"Champaign", "Illinois", "UnitedStates"}], GeoScaleBar -> None]

Out[1]= [image]
```

Display the geo scale in kilometers:

```wl
In[2]:= GeoGraphics[Entity["City", {"Champaign", "Illinois", "UnitedStates"}], GeoScaleBar -> "Kilometers"]

Out[2]= [image]
```

Show a geo scale in metric and imperial:

```wl
In[3]:= GeoGraphics[Entity["City", {"Champaign", "Illinois", "UnitedStates"}], GeoScaleBar -> {"Metric", "Imperial"}]

Out[3]= [image]
```

#### GeoServer (1)

By default, ``GeoGraphics`` downloads geo background tiles from the Wolfram geo server:

```wl
In[1]:= GeoGraphics[Entity["Country", "UnitedStates"], GeoServer -> Automatic]

Out[1]= [image]
```

Use an alternative tile server:

```wl
In[2]:= GeoGraphics[Entity["Country", "UnitedStates"], GeoServer -> "http://a.tile.openstreetmap.org/`1`/`2`/`3`.png"]

Out[2]= [image]
```

#### GeoZoomLevel (2)

Display Canada at the default ``GeoZoomLevel`` :

```wl
In[1]:= GeoGraphics[Entity["Country", "Canada"], GeoBackground -> "Plain"]

Out[1]= [image]

In[2]:= AbsoluteOptions[%, GeoZoomLevel]

Out[2]= {GeoZoomLevel -> 3.00273}
```

Explicitly specify ``GeoZoomLevel`` to obtain a more detailed map rendering:

```wl
In[3]:= GeoGraphics[Entity["Country", "Canada"], GeoZoomLevel -> 4, GeoBackground -> "Plain"]

Out[3]= [image]
```

---

Display the area around Notre Dame de Paris at different levels of magnification:

```wl
In[1]:= (GeoGraphics[{Red, PointSize[Large], Point[Entity["Building", "NotreDameCathedral::95fcw"]]}, GeoRange -> Quantity[100, "Meters"], GeoZoomLevel -> #1]&) /@ Range[11, 16]

Out[1]= {[image], [image], [image], [image], [image], [image]}
```

#### MetaInformation (1)

Meta-information about the map sources:

```wl
In[1]:= GeoGraphics[Polygon[Entity["Country", "Portugal"]]]

Out[1]= [image]

In[2]:= AbsoluteOptions[%, MetaInformation]

Out[2]= {MetaInformation -> <|"GeoMetaInformation" -> <|"Attribution" -> [Wolfram Knowledgebase](https://www.wolfram.com/)", "[MapQuest](https://www.mapquest.com/)", "[© MapTiler](https://www.maptiler.com/copyright/)", "[© OpenStreetMap contributors](https ... 90.}, {-180., 180.}}, "CenteringRotation" -> {{0.990641, 0.136493, 0.}, {-0.136493, 0.990641, 0.}, {0., 0., 1.}}}, "Software" -> "Created with the Wolfram Language: www.wolfram.com", "TileSources" -> {"Wolfram", "MapQuest", "MapTiler", "OSM"}|>|>}
```

Add your own meta-information:

```wl
In[3]:= GeoGraphics[Polygon[Entity["Country", "Portugal"]], MetaInformation -> {"Date" -> DateObject[], "GeoLocation" -> $GeoLocation, "UnitSystem" -> $UnitSystem, "CloudEvaluation" -> $CloudEvaluation}]

Out[3]= [image]

In[4]:= AbsoluteOptions[%, MetaInformation]

Out[4]= {MetaInformation -> <|"Date" -> DateObject[{2025, 6, 30, 17, 45, 9.565449}, "Instant", "Gregorian", 2.], "GeoLocation" -> GeoPosition[{40.11, -88.24}], "UnitSystem" -> "Imperial", "CloudEvaluation" -> False, "GeoMetaInformation" -> <|"Attribution"  ... 90.}, {-180., 180.}}, "CenteringRotation" -> {{0.990641, 0.136493, 0.}, {-0.136493, 0.990641, 0.}, {0., 0., 1.}}}, "Software" -> "Created with the Wolfram Language: www.wolfram.com", "TileSources" -> {"Wolfram", "MapQuest", "MapTiler", "OSM"}|>|>}
```

### Applications (9)

Make a map of the 50 states in the US with Alaska and Hawaii as insets:

```wl
In[1]:= Hawaii = GeoGraphics[{GeoStyling["OutlineMap"], Polygon[Entity["AdministrativeDivision", {"Hawaii", "UnitedStates"}]]}, GeoBackground -> None]

Out[1]= [image]

In[2]:= Alaska = GeoGraphics[{GeoStyling["OutlineMap"], Polygon[Entity["AdministrativeDivision", {"Alaska", "UnitedStates"}]]}, GeoBackground -> None]

Out[2]= [image]

In[3]:= GeoGraphics[{GeoStyling["OutlineMap"], Polygon[Entity["Country", "UnitedStates"]], Inset[Alaska, {-0.21, -0.1}, {0, 0}, 0.3], Inset[Hawaii, {0.02, -0.83}, {-158, -21}, 0.1]}, GeoBackground -> None, GeoProjection -> {"LambertAzimuthal", "Centering" -> GeoPosition[{30, -195 / 2}]}, Frame -> True, FrameTicks -> None, PlotRange -> {{-0.37, 0.38}, {-0.2, 0.38}}]

Out[3]= [image]
```

---

Use polygons, geo circle, and other graphics primitives to build up a geographic map:

```wl
In[1]:=
GeoGraphics[{
	GeoStyling["ReliefMap"], Polygon[Entity["Country", "Greece"]], 
	Dashed, GeoCircle[Entity["City", {"Athens", "Attiki", "Greece"}], Quantity[200, "Kilometers"]], 
	Dotted, Line[{Entity["City", {"Athens", "Attiki", "Greece"}], Entity["Island", "Rhodes"]}], 
	Red, PointSize[Large], Point[EntityClass["Building", "AcropolisAthens"]]}, GeoBackground -> "StreetMapNoLabels"]

Out[1]= [image]
```

---

Draw thick arrows between pairs of countries:

```wl
In[1]:=
thickarrow[l_, t_, m_, {w_, δ_}] := Module[{f, M = 200, l1 = l /. e_Entity :> EntityValue[e, "Coordinates"] /. GeoPosition[s_] :> s}, f = BSplineFunction[Append[Flatten[Table[#1 + k / m (#2 - #1), {k, 0, m - 1}]&@@@Partition[l1, 2, 1], 1], Last[l1]]];
	{GeoStyling[Opacity[.8]], Polygon[GeoPosition[Join@@(#1[Table[f[s] + #2 If[s < 1 - δ, 1, w (1 - s) / δ] t Normalize[Reverse[f'[s]] {-1, 1}], {s, 0, 1, 1 / M}]]&@@@{{#&, 1}, {Reverse, -1}})]]}]

In[2]:=
GeoGraphics[{
	GeoStyling[Opacity[.5]], EdgeForm[Black], 
	Orange, Polygon /@ {Entity["Country", "UnitedStates"], Entity["Country", "SouthAfrica"]}, 
	thickarrow[{Entity["City", {"Chicago", "Illinois", "UnitedStates"}], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}], Entity["City", {"Moscow", "Moscow", "Russia"}], Entity["City", {"Johannesburg", "Gauteng", "SouthAfrica"}]}, 3, 2, {4, 0.03}], 
	Blue, Polygon /@ {Entity["Country", "Chile"], Entity["Country", "India"]}, 
	thickarrow[{Entity["City", {"Santiago", "Metropolitana", "Chile"}], Entity["City", {"MexicoCity", "DistritoFederal", "Mexico"}], Entity["City", {"Oslo", "Oslo", "Norway"}], Entity["City", {"Dubai", "Dubai", "UnitedArabEmirates"}], Entity["City", {"NewDelhi", "Delhi", "India"}]}, 6, 2, {4, 0.05}], 
	Darker[Green], Polygon /@ {Entity["Country", "Australia"], Entity["Country", "Spain"]}, thickarrow[{Entity["City", {"Sydney", "NewSouthWales", "Australia"}], Entity["City", {"Tokyo", "Tokyo", "Japan"}], Entity["City", {"Moscow", "Moscow", "Russia"}], Entity["City", {"Madrid", "Madrid", "Spain"}]}, 4, 2, {3, 0.05}]
	}, GeoRange -> All, GeoBackground -> "Monochrome"]

Out[2]= [image]
```

---

Show the configuration of continents on Earth 200 million years ago:

```wl
In[1]:= GeoGraphics[{GeoStyling["OutlineMap"], EdgeForm[Gray], GeologicalPeriodData["JurassicPeriod", "ContinentalPlates"][DateObject[{-200000000}]]}, GeoBackground -> LightBlue, GeoRange -> "World", GeoProjection -> "AmericanPolyconic"]

Out[1]= [image]
```

---

Retrieve the epicenter locations of earthquakes in California:

```wl
In[1]:= dat = EarthquakeData[Entity["AdministrativeDivision", {"California", "UnitedStates"}], 4, {{1980, 1, 1}, {2014, 12, 31}}, "Position"]["Values"];
```

Plot the epicenters on a map of California:

```wl
In[2]:= GeoGraphics[{Polygon[Entity["AdministrativeDivision", {"California", "UnitedStates"}]], StandardRed, PointSize[.02], Point[dat]}]

Out[2]= [image]
```

Get the geographic bounds of California:

```wl
In[3]:= {{latmin, latmax}, {lonmin, lonmax}} = GeoBounds[Entity["AdministrativeDivision", {"California", "UnitedStates"}]];
```

Make a smooth kernel distribution of the earthquake epicenters:

```wl
In[4]:= \[ScriptCapitalD] = SmoothKernelDistribution[dat[[All, 1]], "Silverman"];
```

Plot the results:

```wl
In[5]:= dens = ContourPlot[Evaluate[PDF[\[ScriptCapitalD], {y, x}] ^ (1 / 5)], {x, lonmin, lonmax}, {y, latmin, latmax}, Frame -> False, PlotRange -> {0.05, All}, Contours -> 15, ColorFunction -> (Directive[ColorData["TemperatureMap"][#], Opacity[0.5]]&), PlotRangePadding -> None]

Out[5]= [image]
```

Show the results on a map with the epicenters themselves shown as black dots:

```wl
In[6]:= With[{p = Polygon[Entity["AdministrativeDivision", {"California", "UnitedStates"}]]}, GeoGraphics[{p, GeoStyling[{"GeoImage", dens}], p, Black, Opacity[0.2], PointSize[0.01], Point[dat]}]]

Out[6]= [image]
```

---

Construct street maps of Monaco and Gibraltar:

```wl
In[1]:= {monaco, gibraltar} = GeoGraphics[{GeoStyling["StreetMap"], Polygon[#1], GeoStyling["OutlineMap", Directive[Opacity[0.3], #2, EdgeForm[Black]]], Polygon[#1]}, GeoProjection -> "Equirectangular", Frame -> True, GeoBackground -> None]&@@@{{Entity["Country", "Monaco"], Purple}, {Entity["Country", "Gibraltar"], Darker[Green]}}

Out[1]= {[image], [image]}
```

Transplant Monaco (centered at the Trump Building) and Gibraltar (centered at the Brooklyn Central Library) to New York by modifying the coordinates of the polygon:

```wl
In[2]:=
{monacoinnewyork, gibraltarinnewyork} = With[{mpNY = EntityValue[#3, "Position"][[1]], mp = CountryData[#1, "CenterCoordinates"]}, 
	#2[[1, 1]] /. Polygon[l_, rest___] :> Polygon[GeoPosition[Map[(Reverse[#] - mp + mpNY)&, l, {-2}]], rest]] &@@@{ {Entity["Country", "Monaco"], monaco, Entity["Building", "TrumpBuilding"]}, {Entity["Country", "Gibraltar"], gibraltar, Entity["Building", "BrooklynPublicLibraryCentralBranch"]}};
```

Show the shifted Monaco and Gibraltar on top of the city limits of New York:

```wl
In[3]:=
GeoGraphics[{
	GeoStyling["OutlineMap", Directive[Opacity[0.2], Yellow, EdgeForm[Black]]], Polygon[Entity["City", {"NewYork", "NewYork", "UnitedStates"}]], 
	GeoStyling[], monacoinnewyork, gibraltarinnewyork}, GeoProjection -> "Equirectangular", Frame -> True]

Out[3]= [image]
```

---

Define "Australian" transformation and geo disk centered on Australia:

```wl
In[1]:= upsidedown = (ImageTransformation[#, RotationTransform[Pi], DataRange -> {Automatic, {-.5, .5}}]&);

In[2]:= downunder = GeoDisk[Entity["Country", "Australia"], Quantity[2000, "Miles"]];
```

Plot Australia from the rest of the world's perspective:

```wl
In[3]:= GeoGraphics[{GeoStyling["ReliefMap", GeoStylingImageFunction -> upsidedown], downunder}, GeoBackground -> "StreetMapNoLabels", GeoRange -> "World"][[1]]

Out[3]= [image]
```

Plot the rest of the world from Australia's perspective:

```wl
In[4]:= Rotate[%, Pi]

Out[4]= Rotate[[image], 3.141592653589793]
```

---

Compare a historical map of Paris with a modern street map:

```wl
In[1]:= paris1775orig = Import["http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/1775_Plan_de_Jaillot.jpg/893px-1775_Plan_de_Jaillot.jpg"]

Out[1]= [image]
```

Crop the elegant yet extraneous frame:

```wl
In[2]:= paris1775 = ImageTake[paris1775orig, {80, -60}, {50, -50}]

Out[2]= [image]
```

Pick three characteristic points on the two maps and identify them with approximate positions:

```wl
In[3]:= places = {placedeconcorde = {GeoPosition[{48.8658, 2.32075}], {0.1623, 0.4396}}, notredame  = {GeoPosition[{48.8527, 2.35047}], {0.5087, 0.4910}}, museedehistorie = {GeoPosition[{48.8586, 2.31283}], {0.1691, 0.2702}}};
```

Plot the resulting points on the maps:

```wl
In[4]:=
With[{colors = {Red, Blue, Darker[Green]}}, 
	{Graphics[{Raster[Reverse[ImageData[paris1775]], {{0, 0}, {1, 1}}], PointSize[Large], Transpose[{colors, (Point[Last[#1]]&) /@ places}]}], GeoGraphics[{PointSize[Large], Transpose[{colors, (Point[First[#1]]&) /@ places}]}, 
	GeoRangePadding -> Quantity[3, "Kilometers"], GeoZoomLevel -> 14, GeoBackground -> "StreetMap"]}]

Out[4]= {[image], [image]}
```

Get a street map of Paris from today:

```wl
In[5]:= paristoday = GeoGraphics[{}, GeoCenter -> GeoPosition[{48.8568, 2.3427}], GeoRange -> Quantity[3, "Kilometers"], GeoZoomLevel -> 15, GeoBackground -> "StreetMapNoLabels"]

Out[5]= [image]
```

Find an affine transformation that maps the three points from each map into each other:

```wl
In[6]:= mercxy[gp_GeoPosition] := GeoGridPosition[gp, GeoProjection /. Options[paristoday]][[1]]

In[7]:=
transform = AffineTransform[{{{ax, ay}, {bx, by}}, {a, b}}] /. 
	Solve[Flatten[{{{ax, ay}.#2 + a, {bx, by}.#2 + b} == mercxy[#1]}&@@@places], {a, ax, ay, b, bx, by}][[1]]

Out[7]=
TransformationFunction[(|            |           |         |
| ---------- | --------- | ------- |
| 0.0783924  | 0.0499001 | 2.28609 |
| -0.0666707 | 0.0619304 | 56.1474 |
| 0.         | 0.        | 1.      |)]
```

Color the modern street map in gray and the historical map in red:

```wl
In[8]:=
With[{ι = ImageApply}, 
	{parisnew = Graphics[{Raster[Reverse[ImageData[ι[# ^ 2&, ColorConvert[
	Rasterize[paristoday, "Image"], "Grayscale"]]]], 
	mercxy[GeoPosition[#]]& /@ Transpose[GeoRange /. Options[paristoday, GeoRange]]]}], 
	parisold = ColorCombine[{ι[0.7#&, #], ι[0.&, #], ι[0.&, #], ι[# ^ 2&, #]}, "RGB"]&[ColorConvert[paris1775, "Grayscale"]]}]

Out[8]= [image]
```

Use the preceding affine transformation to show the two aligned maps over each other:

```wl
In[9]:=
Show[{parisnew, Graphics[GeometricTransformation[
	Raster[Reverse[ImageData[parisold]], {{0, 0}, {1, 1}}], transform]]}]

Out[9]= [image]
```

---

Smooth out and scale a country by computing a discrete Fourier transform of its boundary:

```wl
In[1]:= points = (Append[#1, #1[[1]]]&)[(#1.{1, I}&) /@ Last[SortBy[CountryData["UnitedStates", "Polygon"][[1, 1]], Length]]];

In[2]:= fourier[points_, λ_] := Module[{order = Ceiling[Length[points] λ]^2, mp = ({Re[#1], Im[#1]}&)[Mean[points]], μ = Length[points], ft}, ft = (Append[#1, First[#1]]&)[({Re[#1], Im[#1]}&) /@ FourierDCT[FourierDCT[points, 2] Table[If[j ≤ order, 1, 0], {j, μ}], 3]];MapIndexed[mp + λ (#1 - mp)&, ft]]
```

Superimpose scaled geo B-spline versions of the US border on a map:

```wl
In[3]:= GeoGraphics[{Polygon[Entity["Country", "UnitedStates"]], LightBlue, BSplineCurve[Table[GeoPosition[fourier[points, λ]], {λ, 0.05, 1, 0.05}]]}]

Out[3]= [image]
```

### Properties & Relations (7)

``GeoGraphics`` returns a ``GeoGraphics`` expression, with a ``Graphics`` object in its first argument:

```wl
In[1]:= GeoGraphics[Entity["Country", "HongKong"], GeoBackground -> "StreetMap"]

Out[1]= [image]

In[2]:= {Head[%], Head[First[%]]}

Out[2]= {GeoGraphics, Graphics}
```

``GeoImage`` returns an ``Image`` expression, the background image of the previous result:

```wl
In[3]:= GeoImage[Entity["Country", "HongKong"], "StreetMap"]

Out[3]= [image]

In[4]:= Head[%]

Out[4]= Image
```

---

``GeoGraphics`` behaves like ``Graphics`` with standard primitives, but adds a geo background:

```wl
In[1]:= Graphics[{Line[{{0, 0}, {120, 30}, {-120, 60}}], Red, Circle[{-60, 30}, 30]}, Frame -> True]

Out[1]= [image]
```

Coordinates are interpreted as ``{lon, lat}`` angles in the equirectangular projection:

```wl
In[2]:= GeoGraphics[{Line[{{0, 0}, {120, 30}, {-120, 60}}], Red, Circle[{-60, 30}, 30]}, Frame -> True]

Out[2]= [image]

In[3]:= AbsoluteOptions[%, GeoProjection]

Out[3]= {GeoProjection -> "Equirectangular"}
```

Add ``GeoPosition`` wrappers to use ``{lat, lon}`` angles:

```wl
In[4]:= GeoGraphics[{Line[GeoPosition[{{0, 0}, {30, 120}, {60, -120}}]], Red, Circle[GeoPosition[{30, -60}], 30]}, Frame -> True]

Out[4]= [image]
```

---

Coordinates inside geo primitives are always given in ``{lat, lon}`` angles:

```wl
In[1]:= GeoGraphics[{GeoPath[{{0, 0}, {30, 120}, {60, -120}}], Red, GeoCircle[{30, -60}, 3000000]}, Frame -> True]

Out[1]= [image]
```

Adding ``GeoPosition`` does not modify the result:

```wl
In[2]:= GeoGraphics[{GeoPath[GeoPosition[{{0, 0}, {30, 120}, {60, -120}}]], Red, GeoCircle[GeoPosition[{30, -60}], 3000000]}, Frame -> True]

Out[2]= [image]
```

---

``GeoRange`` determines the part of the Earth to plot, before projection:

```wl
In[1]:= box = GeoBoundsRegionBoundary[{{0, 60}, {0, 60}}];

In[2]:= GeoGraphics[box, GeoRange -> {{0, 60}, {0, 60}}, Frame -> True]

Out[2]= [image]

In[3]:= projection = Options[%, GeoProjection]

Out[3]= {GeoProjection -> {"LambertAzimuthal", "Centering" -> GeoPosition[{30, 30}]}}
```

``PlotRange`` determines the part of the map to plot, after projection:

```wl
In[4]:= GeoGraphics[box, projection, GeoRange -> {{0, 60}, {0, 60}}, Frame -> True, PlotRange -> {{-0.4, 0.4}, {-0.4, 0.4}}]

Out[4]= [image]
```

Use ``GeoRangePadding`` to extend the geo range:

```wl
In[5]:= GeoGraphics[box, GeoRange -> {{0, 60}, {0, 60}}, GeoRangePadding -> Quantity[400, "Miles"], Frame -> True]

Out[5]= [image]
```

Use ``PlotRangePadding`` to extend the plot range:

```wl
In[6]:= GeoGraphics[box, GeoRange -> {{0, 60}, {0, 60}}, PlotRangePadding -> 0.4, Frame -> True]

Out[6]= [image]
```

Use ``GeoRangePadding -> Full`` to automatically extend the geo range to cover the initial plot range:

```wl
In[7]:= GeoGraphics[box, GeoRange -> {{0, 60}, {0, 60}}, GeoRangePadding -> Full, Frame -> True]

Out[7]= [image]
```

---

Geographic ``Entity`` objects represent the corresponding region or position, but are not geo primitives:

```wl
In[1]:= GeoGraphics[{Entity["Country", "Spain"], Entity["City", {"Madrid", "Madrid", "Spain"}]}, GeoBackground -> None, Frame -> True]

Out[1]= [image]
```

Use ``Polygon`` or ``Point`` to draw the respective region or point, with default geo styling:

```wl
In[2]:= GeoGraphics[{Polygon[Entity["Country", "Spain"]], Point[Entity["City", {"Madrid", "Madrid", "Spain"}]]}, GeoBackground -> None, Frame -> True]

Out[2]= [image]
```

Modify the default geo styling:

```wl
In[3]:= GeoGraphics[{GeoStyling["ReliefMap"], Polygon[Entity["Country", "Spain"]], Red, PointSize[Large], Point[Entity["City", {"Madrid", "Madrid", "Spain"}]]}, GeoBackground -> None, Frame -> True]

Out[3]= [image]
```

---

The shapes of entities generically undergo distortion upon projection. Here are default (in this case ``"Mercator"``) and ``"Equirectangular"`` projections for Sweden:

```wl
In[1]:= country = Entity["Country", "Sweden"];

In[2]:=
maps = {
	GeoGraphics[{Yellow, Opacity[0.5], EdgeForm[Thin], Polygon[country]}, Frame -> True], GeoGraphics[{Yellow, Opacity[0.5], EdgeForm[Thin], Polygon[country]}, Frame -> True, GeoProjection -> "Equirectangular"]
	}

Out[2]= {[image], [image]}

In[3]:= projs = AbsoluteOptions[#, GeoProjection]& /@ maps

Out[3]= {{GeoProjection -> "Mercator"}, {GeoProjection -> "Equirectangular"}}
```

Using ``GeoGridPosition`` and an explicit projection, you can project the country by hand:

```wl
In[4]:= projectedpolygon = EntityValue[country, "Polygon"] /. gp_GeoPosition :> GeoGridPosition[gp, projs[[1, 1, 2]]][[1]];
```

The coordinates of the manually transformed polygon match the ones from the default projection:

```wl
In[5]:=
GraphicsRow[{
	maps[[1, 1]], 
	Graphics[{Opacity[0.3], Red, EdgeForm[Thin], projectedpolygon}, Frame -> True, Sequence@@AbsoluteOptions[maps[[1]], PlotRange]]
	}, ImageSize -> Small]

Out[5]= [image]
```

---

Using ``Line`` (or ``Arrow``) inside a geo graphic gives a straight line whose points depend on the projection:

```wl
In[1]:=
GeoGraphics[{
	Polygon[Entity["Country", "UnitedStates"]], 
	Red, Thick, Line[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"NewYork", "NewYork", "UnitedStates"}]}]}, GeoProjection -> #1]& /@ {"Mercator", "LambertAzimuthal"}

Out[1]= {[image], [image]}
```

To get a shortest line (geodesic), use ``GeoPath``. Its points are independent of the projection:

```wl
In[2]:=
GeoGraphics[{
	Polygon[Entity["Country", "UnitedStates"]], 
	Red, Thick, Arrowheads[0.1], Arrow[GeoPath[{Entity["City", {"LosAngeles", "California", "UnitedStates"}], Entity["City", {"NewYork", "NewYork", "UnitedStates"}]}]]}, GeoProjection -> #1]& /@ {"Mercator", "LambertAzimuthal"}

Out[2]= {[image], [image]}
```

### Possible Issues (1)

Because entity classes are taken as a collection of polygons, showing a map of Europe includes internal national boundaries:

```wl
In[1]:= GeoGraphics[{GeoStyling[GrayLevel[.7]], EdgeForm[Red], Polygon[EntityClass["Country", "Europe"]]}, GeoBackground -> "Plain"]

Out[1]= [image]
```

Use the ``"GeographicRegion"`` entity for Europe instead:

```wl
In[2]:= GeoGraphics[{GeoStyling[GrayLevel[.7]], EdgeForm[Red], Polygon[Entity["GeographicRegion", "Europe"]]}, GeoBackground -> "Plain"]

Out[2]= [image]
```

### Interactive Examples (1)

Extract location and times from a time series object representing a short stroll and then compute distance traveled and average speed:

```wl
In[1]:=
ts = TemporalData[TimeSeries, {{{GeoPosition[{38.610888, -90.253012, 150.16666666666666}], 
    GeoPosition[{38.610849, -90.252845, 150.14285714285714}], 
    GeoPosition[{38.61092, -90.252744, 150.125}], 
    GeoPosition[{38.610939, -90.252637, 150.111 ... 365*^9, 
     3.59925186864900000000000090949470177292823791504`24.573836111883047*^9, 
     3.59925187461800000000005184119800105690956115723`24.345914052163195*^9}}}, 1, 
  {"Discrete", 1}, {"Discrete", 1}, 1, {ValueDimensions -> 1}}, True, 10.];
x = ts["Values"];
dist = Prepend[
	UnitConvert[GeoDistance@@#& /@ Partition[x, 2, 1], "Miles"], Quantity[0, "Miles"]
	];
dt = Quantity[-#, "Seconds"]& /@ Subtract@@@Partition[ts["Times"], 2, 1];
time = Prepend[Accumulate[dt], Quantity[0, "Seconds"]];
speed = Prepend[
	UnitConvert[Rest[dist] / dt, "MilesPerHour"], 
	Quantity[0, "MilesPerHour"]
	];
cornerPoints = Point[GeoPosition[(Transpose[{Min@#, Max@#}& /@ Transpose[x[[ ;; , 1,  ;; 2]]]] + .001{{-1, -1}, {1, 1}})]];
```

Visualize the result:

```wl
In[2]:=
Manipulate[
	With[{i = LengthWhile[QuantityMagnitude[time], # <= t&]}, 
	GeoGraphics[{
	cornerPoints, 
	Line[GeoPosition[If[Length[#] === 1, {#[[1]], #[[1]]}, #]&@x[[ ;; i, 1,  ;; 2]]]]
	}, 
	PlotLabel -> Grid[{
	{Style["Speed: ", Black, Bold], Round[speed[[i]], .01]}, {Style["Distance traveled: ", Black, Bold], If[i == 1, Quantity[0, "Miles"], Round[Total[dist[[ ;; i - 1]]], .01]]}
	}, Alignment -> {{Right, Left}}
	]]
	], 
	{{t, 0, "t"}, 0, Ceiling[QuantityMagnitude[Last[time]]]}, SaveDefinitions -> True]

Out[2]= DynamicModule[«9»]
```

### Neat Examples (6)

Drape the African nations in their national flags:

```wl
In[1]:= flags = EntityValue[EntityClass["Country", "Africa"], {"Entity", "FlagImage"}];
```

Place flag images on countries and use the country names as tooltips:

```wl
In[2]:= GeoGraphics[{EdgeForm[Black], {GeoStyling[{"Image", #2}], Tooltip[Polygon[#1], CommonName[#1]]}&@@@flags}, GeoBackground -> "StreetMapNoLabels"]

Out[2]= [image]
```

Use flag images annotated with country names as tooltips:

```wl
In[3]:= GeoGraphics[{GeoStyling["OutlineMap"], Tooltip[Polygon[#1], Labeled[#1, #2]]&@@@flags}, GeoBackground -> "StreetMapNoLabels"]

Out[3]= [image]
```

---

Find the graph of neighboring European countries:

```wl
In[1]:= countries = EntityList[EntityClass["Country", "EuropeSovereign"]];

In[2]:= graph = Graph[countries, Flatten[EntityValue[countries, EntityFunction[e, Thread[e -> Intersection[e["BorderingCountries"], countries]]]]]]

Out[2]= [image]
```

Compute a four-coloring:

```wl
In[3]:= coloring = FindVertexColoring[graph, {RGBColor[0.29, 0.588, 0.612], RGBColor[0.886243, 0.527215, 0.0910023], RGBColor[0.613966, 0.37652, 0.585084], RGBColor[0.521981, 0.66, 0.0942065]}];

In[4]:= GeoGraphics[Transpose[{GeoStyling /@ coloring, Polygon /@ countries}], GeoBackground -> None]

Out[4]= [image]
```

---

Show national flags of some countries and speak their names when clicked:

```wl
In[1]:= GeoGraphics[{GeoStyling[{"Image", CountryData[#, "Flag"]}], EventHandler[Polygon[Entity["Country", #]], {"MouseClicked" :> Speak[#]}]}& /@ {"France", "Germany", "Italy", "Spain"}]

Out[1]= [image]
```

---

Transform country polygons into shapes with rounded borders using filled B‐spline curves:

```wl
In[1]:=
roundify[Polygon[l_], δ_] := FilledCurve[BSplineCurve[GeoPosition[#], SplineClosed -> True]]&  /@ 
	Select[(DeleteDuplicates[Round[#, δ]]& /@ Level[l, {-3}]), Length[#] > 3&]

In[2]:= (color[#] = RandomColor[])& /@ (countries = CountryData["Europe"]);
```

Display countries as "puzzle pieces":

```wl
In[3]:=
GeoGraphics[
	{GeoStyling["OutlineMap", Directive[Opacity[0.4], EdgeForm[Black], color[#]]], Tooltip[roundify[CountryData[#, "FullPolygon"], 1.5], CommonName[#]]}& /@ countries, 
	GeoBackground -> "ReliefMap", GeoRange -> {{34, 72}, {-25, 40}}, GeoRangePadding -> Full]

Out[3]= [image]
```

---

Retrieve names, locations, and yields of all nuclear explosions detonated by the United States:

```wl
In[1]:= data = EntityValue[EntityClass["NuclearExplosion", {"DetonationCountry", "UnitedStates"}], {"Name", "Yield", "Position"}];
```

Plot the points on a map:

```wl
In[2]:= GeoGraphics[{Red, PointSize[Medium], Tooltip[Point[#3], Column[{#1, #2}]]&@@@data}, GeoRange -> "World"]

Out[2]= [image]
```

---

Paint a purple spiral on France:

```wl
In[1]:= poly = MovingAverage[Join[#, Take[#, 10]]&[CountryData[Entity["Country", "France"], "Polygon"][[1, 1, 1]]], 11];

In[2]:= {center, λ, δ} = {Mean[poly], Length[poly], 1 / 10};
```

Draw the graphic:

```wl
In[3]:= GeoGraphics[{GeoStyling["OutlineMap", Directive[Purple, Opacity[0.8]]], FilledCurve[Table[Line[GeoPosition[MapIndexed[(center + (s + 2 δ #2[[1]] / λ) (#1 - center))&, poly]]], {s, 0, 1 - 2 δ, δ}]]}]

Out[3]= [image]
```

## See Also

* [`DynamicGeoGraphics`](https://reference.wolfram.com/language/ref/DynamicGeoGraphics.en.md)
* [`GeoImage`](https://reference.wolfram.com/language/ref/GeoImage.en.md)
* [`GeoListPlot`](https://reference.wolfram.com/language/ref/GeoListPlot.en.md)
* [`GeoRegionValuePlot`](https://reference.wolfram.com/language/ref/GeoRegionValuePlot.en.md)
* [`GeoHistogram`](https://reference.wolfram.com/language/ref/GeoHistogram.en.md)
* [`Graphics`](https://reference.wolfram.com/language/ref/Graphics.en.md)
* [`GeoStyling`](https://reference.wolfram.com/language/ref/GeoStyling.en.md)
* [`GeoBackground`](https://reference.wolfram.com/language/ref/GeoBackground.en.md)
* [`GeoRange`](https://reference.wolfram.com/language/ref/GeoRange.en.md)
* [`GeoProjection`](https://reference.wolfram.com/language/ref/GeoProjection.en.md)
* [`ReliefPlot`](https://reference.wolfram.com/language/ref/ReliefPlot.en.md)
* [`GeoElevationData`](https://reference.wolfram.com/language/ref/GeoElevationData.en.md)
* [`CountryData`](https://reference.wolfram.com/language/ref/CountryData.en.md)
* [`CityData`](https://reference.wolfram.com/language/ref/CityData.en.md)
* [`GeoJSON`](https://reference.wolfram.com/language/ref/format/GeoJSON.en.md)
* [`GeoTIFF`](https://reference.wolfram.com/language/ref/format/GeoTIFF.en.md)
* [`ArcGRID`](https://reference.wolfram.com/language/ref/format/ArcGRID.en.md)

## Tech Notes

* [GeoGraphics](https://reference.wolfram.com/language/tutorial/GeoGraphics.en.md)

## Related Guides

* [Maps & Cartography](https://reference.wolfram.com/language/guide/MapsAndCartography.en.md)
* [Geographic Data & Entities](https://reference.wolfram.com/language/guide/GeographicData.en.md)
* [`Geodesy`](https://reference.wolfram.com/language/guide/Geodesy.en.md)
* [Video Computation: Update History](https://reference.wolfram.com/language/guide/VideoComputation-UpdateHistory.en.md)
* [Weather Data](https://reference.wolfram.com/language/guide/WeatherData.en.md)
* [Scientific Data Analysis](https://reference.wolfram.com/language/guide/ScientificDataAnalysis.en.md)
* [Transportation Data](https://reference.wolfram.com/language/guide/TransportationData.en.md)
* [Earth Sciences: Data & Computation](https://reference.wolfram.com/language/guide/EarthSciencesDataAndComputation.en.md)
* [Locations, Paths, and Routing](https://reference.wolfram.com/language/guide/LocationsPathsAndRouting.en.md)
* [Charting and Information Visualization](https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md)
* [WDF (Wolfram Data Framework)](https://reference.wolfram.com/language/guide/WDFWolframDataFramework.en.md)
* [Cloud Execution Metadata](https://reference.wolfram.com/language/guide/CloudExecutionMetadata.en.md)

## Related Links

* [An Elementary Introduction to the Wolfram Language: Geocomputation](https://www.wolfram.com/language/elementary-introduction/18-geocomputation.html)
* [An Elementary Introduction to the Wolfram Language: Creating Websites and Apps](https://www.wolfram.com/language/elementary-introduction/36-creating-websites-and-apps.html)

## History

* [Introduced in 2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) \| [Updated in 2016 (11.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn110.en.md) ▪ [2019 (12.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn120.en.md) ▪ [2020 (12.2)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn122.en.md) ▪ [2021 (13.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn130.en.md) ▪ [2025 (14.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn143.en.md)