GeoVisibleRegionBoundary[{lat,lon,h}]
is a one-dimensional GeoGraphics primitive that represents the boundary of the region on the surface of the Earth visible from the point of coordinates lat,lon and height h above the reference ellipsoid.
represents the boundary of the region visible from the position pos.
GeoVisibleRegionBoundary[{pos1,pos2,…}]
represents the collection of boundaries of the regions visible from the positions posi.
GeoVisibleRegionBoundary
GeoVisibleRegionBoundary[{lat,lon,h}]
is a one-dimensional GeoGraphics primitive that represents the boundary of the region on the surface of the Earth visible from the point of coordinates lat,lon and height h above the reference ellipsoid.
represents the boundary of the region visible from the position pos.
GeoVisibleRegionBoundary[{pos1,pos2,…}]
represents the collection of boundaries of the regions visible from the positions posi.
Details
- GeoVisibleRegionBoundary assumes an ellipsoidal shape for the Earth and does not take into account the terrain elevation. Corrections for atmospheric refraction are not included.
- The angles lat,lon in GeoVisibleRegionBoundary[{lat,lon,h}] can be given as numeric objects in degrees, DMS strings, or as Quantity angles.
- The height h in GeoVisibleRegionBoundary[{lat,lon,h}] can be given as a numeric amount of meters or as a Quantity length.
Examples
open all close allBasic Examples (3)
The visible region from an altitude of 10 km over the reference ellipsoid:
GeoGraphics[GeoVisibleRegionBoundary[{40, -90, 10000}]]The visible region from geostationary orbit:
GeoGraphics[GeoVisibleRegionBoundary[{0, 0, Quantity[35786, "Kilometers"]}]]The region currently viewable from the International Space Station:
SatelliteData[Entity["Satellite", "25544"], "Position"]GeoGraphics[GeoVisibleRegionBoundary[%], GeoRange -> All]Scope (4)
Visible region boundary from a {lat,lon,h} position:
GeoGraphics[GeoVisibleRegionBoundary[{40, 20, 10000}]]Smaller heights correspond to smaller visible regions:
GeoGraphics[GeoVisibleRegionBoundary[{40, 20, 10}], GeoScaleBar -> "Kilometers"]For vanishing height, the visible region collapses to a point and default padding is used:
GeoGraphics[GeoVisibleRegionBoundary[{40, 20, 0}], GeoScaleBar -> "Kilometers"]Specify the coordinates as Quantity objects:
GeoGraphics[GeoVisibleRegionBoundary[{Quantity[1, "Radians"], Quantity[10, "AngularDegrees"], Quantity[3, "Kilometers"]}], GeoRangePadding -> Quantity[100, "Kilometers"]]Specify latitude and longitude as DMS strings:
GeoGraphics[GeoVisibleRegionBoundary[{"41d10m23s N", "112d21m58s W", Quantity[1, "Kilometers"]}]]Specify the viewing position as any type of geodetic position:
GeoGraphics[GeoVisibleRegionBoundary[GeoPosition[{40, 20, 10000}]]]Move vertically 1 kilometer from New York, assuming the city is on the reference ellipsoid:
p = GeoPositionENU[{0, 0, 1000}, Entity["City", {"NewYork", "NewYork", "UnitedStates"}]]GeoGraphics[GeoVisibleRegionBoundary[p]]Boundaries of the visible regions from a collection of different locations at different elevations:
GeoGraphics[GeoVisibleRegionBoundary[{{0, 0, 100000}, {40, 50, 50000}, {-20, -50, 200000}}]]Applications (1)
Show the region boundary currently viewable from the International Space Station together with its orbital track:
With[{data = SatelliteData[Entity["Satellite", "25544"], {EntityProperty["Satellite", "Position"], EntityProperty["Satellite", "SatelliteLocationLine"]}]}, GeoGraphics[{Gray, Thickness[0.005], Arrowheads[{{0.05, 0.4}, {0.05, 0.13}}], Arrow@@data[[2]], Red, PointSize[Large], Point[data[[1]]], Black, GeoVisibleRegionBoundary[data[[1]]]}, GeoCenter -> data[[1]], GeoRange -> "World"]]Properties & Relations (3)
GeoVisibleRegionBoundary corresponds to the boundary of a GeoVisibleRegion primitive:
GeoGraphics[{GeoVisibleRegion[{30, -90, 1000}], Red, GeoVisibleRegionBoundary[{30, -90, 1000}]}]Position and height of Willis Tower:
building = Entity["Building", "WillisTower::8tzqg"];p = BuildingData[building, {"Latitude", "Longitude", "Height"}]image = BuildingData[building, "Image"]Show the region visible from the top of the building, assuming flat local terrain:
GeoGraphics[{
GeoVisibleRegionBoundary[p],
GeoMarker[building, image, "Scale" -> 1 / 4]
}]Horizon distance from elevation d, assuming a spherical Earth of radius
:
FormulaData[{"HorizonDistance", "Earth"}]Evaluate the formula for the height of Willis Tower:
building = Entity["Building", "WillisTower::8tzqg"];pos = BuildingData[building, "Position"]height = BuildingData[building, "Height"]FormulaData[{"HorizonDistance", "Earth"}, {"h" -> height}]dist = UnitConvert[d /. Solve[%, {d, s}][[1]], "Kilometers"]Compare a GeoDisk of that radius with the result of GeoVisibleRegionBoundary:
GeoGraphics[{GeoDisk[pos, dist], Red, GeoVisibleRegionBoundary[Append[pos[[1]], height]]}]Zoom around the east border of the geo disk:
GeoGraphics[{White, GeoDisk[pos, dist], Red, GeoVisibleRegionBoundary[Append[pos[[1]], height]]}, GeoRange -> 100, GeoCenter -> GeoDestination[pos, GeoDisplacement[{dist, "E"}]], GeoScaleBar -> "Meters"]Interactive Examples (1)
Take an ellipsoid of semiaxes {a,b} and a point at distance r from its center and geocentric latitude α. Then the boundary of the visible region is parametrized as follows:
f[{a_, b_}, α_] := (a b Sqrt[2]/Sqrt[a^2 + b^2 - (a^2 - b^2) Cos[2 α]])
horizon[λ_, {a_, b_}, {r_, α_}] := With[{k = f[{a, b}, α]}, (k^2 {Cos[α], 0, Sin[α]}/r) + Sqrt[1 - (k^2/r^2)] {-(a Sin[α] k Sin[λ]/b), a Cos[λ], (b Cos[α] k Sin[λ]/a)}]The viewing point is denoted in red and the visible region boundary in blue. It is a plane curve, orthogonal to the vector colored in blue:
Manipulate[Block[{a = ab[[1]], b = ab[[2]]}, Show[{Graphics3D[{Opacity[0.5], Ellipsoid[{0, 0, 0}, {a, a, b}], Red, Arrow[Tube[r {{0, 0, 0}, {Cos[α], 0, Sin[α]}}]], Blue, Arrow[Tube[0.75 {{0, 0, 0}, {b^2 Cos[α], 0, a^2 Sin[α]}}]], Opacity[1], PointSize[Large], Darker[Red], Point[r {Cos[α], 0, Sin[α]}]}], ParametricPlot3D[horizon[λ, {a, b}, {r, α}], {λ, 0, 2 π}, PlotStyle -> {Blue, Tube[0.03 Mean[{a, b}]]}], If[sc, ParametricPlot3D[r {Cos[α], 0, Sin[α]} + s (horizon[λ, {a, b}, {r, α}] - r {Cos[α], 0, Sin[α]}), {λ, 0, 2 π}, {s, 0, 1.5}, Mesh -> 10, MeshStyle -> Gray, PlotStyle -> Directive[{Opacity[0.3], Yellow}], MeshFunctions -> {#4&}], {}]}, Axes -> True, AxesLabel -> {x, y, z}, PlotLabel -> If[f[{a, b}, α] > r, "point inside", ""]]], {{r, 5.4}, 0, 20}, {{α, (π/8)}, -(π/2), (π/2)}, {{sc, False, "show tangent cone"}, {True, False}}, Delimiter, {{ab, {3, 1}, "a/b"}, {1, 1}, {4, 4}}]Neat Examples (1)
Define a list of various notable (tall) North American structures:
buildings = {Entity["Building", "OneWorldTradeCenter::v6pj6"], Entity["Building", "LeVequeTower::s67m6"], Entity["Building", "WillisTower::8tzqg"], Entity["Building", "USBankTower::s8zkh"], Entity["Building", "SpaceNeedle::79xq6"], Entity["Building", "BankOfAmericaPlaza::rfk49"], Entity["Building", "GatewayArch::b5qvn"], Entity["Building", "BankOfAmericaCorporateCenter::vw739"], Entity["Building", "CNTower::b5s3m"], Entity["Building", "JPMorganChaseTower::388n8"], Entity["Building", "FourSeasonsHotel&Tower::x2768"], Entity["Building", "WellsFargoCenter::4p69b"]};Form a list of properties for each building:
buildingdata = BuildingData[#, {"Latitude", "Longitude", "Height", "Name", "Image"}]& /@ buildings;Show the visible region, assuming flat local terrain:
GeoGraphics[{
GeoStyling["StreetMapNoLabels"], Tooltip[GeoVisibleRegionBoundary[Take[#, 3]], Column[Take[#, -3] /. q_Quantity :> Round[q]]]& /@ buildingdata
},
GeoBackground -> GeoStyling["StreetMapNoLabels"], GeoProjection -> "Mercator"]Tech Notes
Related Guides
Text
Wolfram Research (2014), GeoVisibleRegionBoundary, Wolfram Language function, https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html (updated 2021).
CMS
Wolfram Language. 2014. "GeoVisibleRegionBoundary." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html.
APA
Wolfram Language. (2014). GeoVisibleRegionBoundary. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html
BibTeX
@misc{reference.wolfram_2026_geovisibleregionboundary, author="Wolfram Research", title="{GeoVisibleRegionBoundary}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_geovisibleregionboundary, organization={Wolfram Research}, title={GeoVisibleRegionBoundary}, year={2021}, url={https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html}, note=[Accessed: 12-June-2026]}