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. »

Skyscraper Views

Make maps of what you can see from the tops of tall buildings.

Run the code to make a map showing the location of the Empire State Building. Try making maps of other buildings, like the Eiffel Tower or the Pantheon:

Note: this can take a while to evaluate the first time, since data has to be retrieved from remote servers.

SHOW/HIDE DETAILS

Press and = to get a natural language input field (). What you type into it is automatically translated, if possible, to a precise representation that the Wolfram Language understands:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "empire state building", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"EmpireStateBuilding\\\"]\"", "\"building\""}, "Entity"], 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->{131., {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 that location on a map:

GeoListPlot[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)]

HIDE DETAILS
GeoListPlot[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{142., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)]

Find the 3D coordinates of the top of the Empire State Building. Find the coordinates of the tops of other buildings, like the Washington Monument or the Burj Khalifa:

SHOW/HIDE DETAILS

Get the geographic coordinates of the Empire State Building:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"]

Get the height of the Empire State Building:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Height"]

Combine the 2D geographic coordinates with the height to get the 3D coordinates of the top of the building. First extract the {latitude,longitude} coordinates from GeoPosition:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"]

Then append the height to get a 3D {latitude,longitude,height} coordinate:

Append[ \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"], \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.751256`6.3273329470678155, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Height"] ]

HIDE DETAILS
Append[ \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{142., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"], \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{142., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Height"] ]

Make a map of what you can see from the top of the Empire State Building. Make maps of what you can see from some other buildings, like the Willis Tower or the Lighthouse of Alexandria:

SHOW/HIDE DETAILS

GeoVisibleRegion shows you the region you can see from a given 3D coordinate.

This gives the 3D coordinate of the top of the Empire State Building:

Append[ \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"], \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Height"] ]

This shows what you can see from that position:

GeoGraphics[GeoVisibleRegion[ {40.7484, -73.9857, Quantity[1250, "Feet"]} ]]

Put those steps together to get the complete expression that maps what you see from the top of the Empire State Building:

GeoGraphics[GeoVisibleRegion[ Append[ \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"], \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Height"] ] ]]

HIDE DETAILS
GeoGraphics[GeoVisibleRegion[ Append[ \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{142., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Coordinates"], \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.563303`6.2022870576728755, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{142., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Height"] ] ]]

Make your code easier to use by turning it into a function. Use the function to make maps of the views from other buildings, like the Transamerica Pyramid or the Hancock Building:

Hint: run the definition of viewmap first.

SHOW/HIDE DETAILS

You can make any expression easier to use by turning it into a function. Replace the parts of the expression that you want to vary, like , with variables, like building. Thats the body of the function (dont run this code):

GeoGraphics[GeoVisibleRegion[ Append[ building["Coordinates"], building["Height"] ] ]]

Give the function a name, like viewmap, and list the variables in square brackets after the name, following each with an underscore (dont run this, either):

viewmap[building_] :=

Put the body after the function name expression to complete the definition (run this to define the function):

viewmap[building_] := GeoGraphics[GeoVisibleRegion[ Append[ building["Coordinates"], building["Height"] ] ]]

When you call the function, the argument you supply is substituted for building in the body of the function.

Now you can make a map with a short piece of code:

viewmap[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "empire state building", Typeset`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding::h583b\""}], "]"}], "\"Entity[\\\"Building\\\", \ \\\"EmpireStateBuilding::h583b\\\"]\"", "\"building\""}, "Entity"], Typeset`allassumptions$$ = {}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.499785`6.150328211042737, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{131., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)]

HIDE DETAILS
viewmap[building_] := GeoGraphics[GeoVisibleRegion[ Append[ building["Coordinates"], building["Height"] ] ]]
viewmap[\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{WolframAlphaClient`Private`query$$ = "empire state building", WolframAlphaClient`Private`boxes$$ = TemplateBox[{"\"Empire State Building\"", RowBox[{"Entity", "[", RowBox[{"\"Building\"", ",", "\"EmpireStateBuilding\""}], "]"}], "\"Entity[\\\"Building\\\", \\\"EmpireStateBuilding\\\"]\"", "\"building\""}, "Entity"], 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->{142., {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]\)]

Share Itmake a view-mapping website:

Note: run the code in the previous step first to define the function viewmap.

SHOW/HIDE DETAILS

Deploy a form that asks for a building and makes a map of what you can see from the top of it:

CloudDeploy[ FormFunction[{"building" -> "Building"}, viewmap[#building] &, "PNG" ], Permissions -> "Public" ]

Click 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[{"building" -> "Building"}, viewmap[#building] &, "PNG" ], Permissions -> "Public" ]