GeoVisibleRegionBoundary[{lat,lon,h}]
是一个一维 GeoGraphics 基元,表示地球曲面上的区域边界,从坐标点 lat,lon 和高于参考椭球体的高度 h 可见.
表示从位置 pos 可见的区域边界.
GeoVisibleRegionBoundary[{pos1,pos2,…}]
表示从位置 posi 可见的区域边界的集合.
GeoVisibleRegionBoundary
GeoVisibleRegionBoundary[{lat,lon,h}]
是一个一维 GeoGraphics 基元,表示地球曲面上的区域边界,从坐标点 lat,lon 和高于参考椭球体的高度 h 可见.
表示从位置 pos 可见的区域边界.
GeoVisibleRegionBoundary[{pos1,pos2,…}]
表示从位置 posi 可见的区域边界的集合.
更多信息
- GeoVisibleRegionBoundary 假定地球的形状为椭圆形,并且不考虑地形海拔. 不包括大气折射校正.
- GeoVisibleRegionBoundary[{lat,lon,h}] 中的角度 lat,lon 可以以度数、DMS字符串或者 Quantity 角度为单位的数值对象给出.
- GeoVisibleRegionBoundary[{lat,lon,h}] 中的高度 h 可以按照以米为单位的数量或者 Quantity 的长度给出.
范例
打开所有单元 关闭所有单元基本范例 (3)
GeoGraphics[GeoVisibleRegionBoundary[{40, -90, 10000}]]GeoGraphics[GeoVisibleRegionBoundary[{0, 0, Quantity[35786, "Kilometers"]}]]SatelliteData[Entity["Satellite", "25544"], "Position"]GeoGraphics[GeoVisibleRegionBoundary[%], GeoRange -> All]范围 (4)
GeoGraphics[GeoVisibleRegionBoundary[{40, 20, 10000}]]GeoGraphics[GeoVisibleRegionBoundary[{40, 20, 10}], GeoScaleBar -> "Kilometers"]对于等于零的高度,可见区域折叠为一个点,并且使用默认的填充值:
GeoGraphics[GeoVisibleRegionBoundary[{40, 20, 0}], GeoScaleBar -> "Kilometers"]将坐标指定为 Quantity 对象:
GeoGraphics[GeoVisibleRegionBoundary[{Quantity[1, "Radians"], Quantity[10, "AngularDegrees"], Quantity[3, "Kilometers"]}], GeoRangePadding -> Quantity[100, "Kilometers"]]GeoGraphics[GeoVisibleRegionBoundary[{"41d10m23s N", "112d21m58s W", Quantity[1, "Kilometers"]}]]GeoGraphics[GeoVisibleRegionBoundary[GeoPosition[{40, 20, 10000}]]]p = GeoPositionENU[{0, 0, 1000}, Entity["City", {"NewYork", "NewYork", "UnitedStates"}]]GeoGraphics[GeoVisibleRegionBoundary[p]]GeoGraphics[GeoVisibleRegionBoundary[{{0, 0, 100000}, {40, 50, 50000}, {-20, -50, 200000}}]]应用 (1)
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"]]属性和关系 (3)
GeoVisibleRegionBoundary 对应于 GeoVisibleRegion 基元的边界:
GeoGraphics[{GeoVisibleRegion[{30, -90, 1000}], Red, GeoVisibleRegionBoundary[{30, -90, 1000}]}]building = Entity["Building", "WillisTower::8tzqg"];p = BuildingData[building, {"Latitude", "Longitude", "Height"}]image = BuildingData[building, "Image"]GeoGraphics[{
GeoVisibleRegionBoundary[p],
GeoMarker[building, image, "Scale" -> 1 / 4]
}]FormulaData[{"HorizonDistance", "Earth"}]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"]比较该半径的 GeoDisk 和 GeoVisibleRegionBoundary 的结果:
GeoGraphics[{GeoDisk[pos, dist], Red, GeoVisibleRegionBoundary[Append[pos[[1]], height]]}]GeoGraphics[{White, GeoDisk[pos, dist], Red, GeoVisibleRegionBoundary[Append[pos[[1]], height]]}, GeoRange -> 100, GeoCenter -> GeoDestination[pos, GeoDisplacement[{dist, "E"}]], GeoScaleBar -> "Meters"]互动范例 (1)
假设有一个半轴为 {a,b} 的椭球,从距离中心 r 的一个点,以地球为中心测量到的海拔为 α. 那么该可见区域的边界用参数表示为:
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)}]观测点用红色表示,可见区域边界用蓝色表示. 这是一个平面曲线,与蓝色的向量垂直:
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}}]巧妙范例 (1)
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"]};buildingdata = BuildingData[#, {"Latitude", "Longitude", "Height", "Name", "Image"}]& /@ buildings;GeoGraphics[{
GeoStyling["StreetMapNoLabels"], Tooltip[GeoVisibleRegionBoundary[Take[#, 3]], Column[Take[#, -3] /. q_Quantity :> Round[q]]]& /@ buildingdata
},
GeoBackground -> GeoStyling["StreetMapNoLabels"], GeoProjection -> "Mercator"]技术笔记
相关指南
-
▪
- 地图和制图
文本
Wolfram Research (2014),GeoVisibleRegionBoundary,Wolfram 语言函数,https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html (更新于 2021 年).
CMS
Wolfram 语言. 2014. "GeoVisibleRegionBoundary." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/GeoVisibleRegionBoundary.html.
APA
Wolfram 语言. (2014). GeoVisibleRegionBoundary. Wolfram 语言与系统参考资料中心. 追溯自 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: 04-November-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: 04-November-2026]}