Wolfram Archive
Wolfram Programming Lab is a legacy product.
All the same functionality and features, including access to Programming Lab Explorations, are available with Wolfram|One.
Start programming now. »
Try it now »
(no sign-in required)

Powers of Ten Geography

Make sequences of maps that zoom out by 10x at each step.

Run the code to show a 100-meter disk around the Eiffel Tower. Try sizes other than 100 meters:

SHOW/HIDE DETAILS

The Eiffel Tower has an exact representation in the Wolfram Language that you can get using plain English. Type += to get an input box, type eiffel tower, and run the code:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{78., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)

You can use += inside of other code. And you can use it to get values with units, like 100 meters.

This makes a map showing a 100-meter disk around the location of the Eiffel Tower:

GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{78., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "100 meters", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"100"}, "QuantityUnit", DisplayFunction -> (TooltipBox[ StyleBox[ RowBox[{#, " ", StyleBox[ RowBox[{" ", "\"m\""}], "QuantityUnitTraditionalInput"]}], ShowStringCharacters -> False], "Unit: meters"]& ), InterpretationFunction -> (RowBox[{"Quantity", "[", RowBox[{#, ",", "\"Meters\""}], "]"}]& ), SyntaxForm -> Mod], WolframAlphaClient`Private`allassumptions$$ = {}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{81., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)]]

HIDE DETAILS
GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{84., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "100 meters", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"100"}, "QuantityUnit", DisplayFunction -> (TooltipBox[ StyleBox[ RowBox[{#, " ", StyleBox[ RowBox[{" ", "\"m\""}], "QuantityUnitTraditionalInput"]}], ShowStringCharacters -> False], "Unit: meters"]& ), InterpretationFunction -> (RowBox[{"Quantity", "[", RowBox[{#, ",", "\"Meters\""}], "]"}]& ), SyntaxForm -> Mod], WolframAlphaClient`Private`allassumptions$$ = {}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{87., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)]]

Show a sequence of disks:

SHOW/HIDE DETAILS

Table makes lists of things.

Heres a table of the powers of 10 from 2 to 7:

Table[10^n, {n, 2, 7}]

This uses Table to make a list of maps with disks that increase in size in powers of 10 from 2 to 7:

Table[GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{78., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), Quantity[10^n, "Meter"]]], {n, 2, 7}]

HIDE DETAILS
Table[GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{84., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), Quantity[10^n, "Meter"]]], {n, 2, 7}]

Use the Lambert Azimuthal map projection. Try some other projections, like Albers, Mercator, or Mollweide:

SHOW/HIDE DETAILS

This is the last map in the series in the previous step. The disk doesnt look like a disk because the map projection distorts it:

GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{78., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), Quantity[10^7, "Meter"]]]

Use a LambertAzimuthal map projection to get a disk that looks like a disk:

GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{78., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), Quantity[10^7, "Meter"]], GeoProjection -> "LambertAzimuthal"]

Here is a list of some of the more common projections:

GeoProjectionData["Spherical"]

HIDE DETAILS
Table[GeoGraphics[GeoDisk[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "eiffel tower", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Eiffel Tower\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"TourEiffel\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"TourEiffel\\\"]\"", "\"building\""}, "Entity"], WolframAlphaClient`Private`allassumptions$$ = {{ "type" -> "Clash", "word" -> "eiffel tower", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "Building", "desc" -> "a structure", "input" -> "*C.eiffel+tower-_*Building-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.eiffel+tower-_*Word-"}}}}, WolframAlphaClient`Private`assumptions$$ = {}, WolframAlphaClient`Private`open$$ = {1}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 1, Dynamic[WolframAlphaClient`Private`query$$], Dynamic[WolframAlphaClient`Private`boxes$$], Dynamic[WolframAlphaClient`Private`allassumptions$$], Dynamic[WolframAlphaClient`Private`assumptions$$], Dynamic[WolframAlphaClient`Private`open$$]], StandardForm], ImageSizeCache->{84., {7., 16.}}, TrackedSymbols:>{ WolframAlphaClient`Private`query$$, WolframAlphaClient`Private`boxes$$, WolframAlphaClient`Private`allassumptions$$, WolframAlphaClient`Private`assumptions$$, WolframAlphaClient`Private`open$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{WolframAlphaClient`Private`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\), Quantity[10^n, "Meter"]], GeoProjection -> "LambertAzimuthal"], {n, 2, 7}]

Share ItMake a powers of ten website:

SHOW/HIDE DETAILS

Deploy a form that gives you powers of ten maps centered at a location you specify:

CloudDeploy[FormFunction[{"location" -> "Location"}, Table[GeoGraphics[GeoDisk[#location, Quantity[10^n, "Meter"]], GeoProjection -> "LambertAzimuthal"], {n, 2, 7}] &, "PNG"], "Permissions" -> "Public" ]

Click on the link in the output to visit the site.

Tell the world about your creation by sharing the link via email, tweet, or other message.

HIDE DETAILS
CloudDeploy[FormFunction[{"location" -> "Location"}, Table[GeoGraphics[GeoDisk[#location, Quantity[10^n, "Meter"]], GeoProjection -> "LambertAzimuthal"], {n, 2, 7}] &, "PNG"], "Permissions" -> "Public" ]