给出月亮在当前日期、当前地点的位置.
MoonPosition[datespec]
给出月亮在指定日期的位置.
MoonPosition[locationspec]
给出月亮在指定地点的位置.
MoonPosition[locationspec,datespec]
给出月亮在指定日期、指定地点的位置.
MoonPosition[{{location1,date1},{location2,date2},…}]
给出月亮在所有指定日期、指定地点的位置.
MoonPosition[locationspec,datespec,func]
对于某个区域,用 func 来确定要返回的信息.
MoonPosition
给出月亮在当前日期、当前地点的位置.
MoonPosition[datespec]
给出月亮在指定日期的位置.
MoonPosition[locationspec]
给出月亮在指定地点的位置.
MoonPosition[locationspec,datespec]
给出月亮在指定日期、指定地点的位置.
MoonPosition[{{location1,date1},{location2,date2},…}]
给出月亮在所有指定日期、指定地点的位置.
MoonPosition[locationspec,datespec,func]
对于某个区域,用 func 来确定要返回的信息.
更多信息和选项
- MoonPosition 返回在地球上任何位置的任何日期观察到的月球在天球上的坐标.
- MoonPosition[] 利用 $GeoLocation 和 $TimeZone 确定你所在的地点和时区.
- 默认返回结果的形式为 {azimuth,altitude}.
- 可以用 Entity 对象来指定地点,假定它所表示的对象有地理坐标或 GeoGraphics 基元,也可以是以度为单位的经纬度坐标.
- datespec 可为 DateObject 表达式、TimeObject 表达式、日期字符串或 {y,m,d,h,m,s} 日期列表.
- 除了 datespec 为一个有明确 TimeZone 选项值的 DateObject 或 TimeObject 表达式的情况外,假定它在 $TimeZone 内.
- locationspec 和 datespec 可以是单个形式,也可以是单项的列表形式.
- 如果 datespec 是一系列日期,则结果将包含 TimeSeries 对象.
- datespec 可以被指定为 {start,end,increment},以便和 DateRange 的格式相兼容.
- 地点给定后,用 MoonPosition[…,func] 来指定输出格式.
- func 的可能设置包括:
-
Automatic 仅返回区域数据的变化区间 Interval 返回所有指定地点数据的变化区间 Mean 返回区域数据的平均值 Min 返回区域数据的最小值 Max 返回区域数据的最大值 StandardDeviation 返回区域数据的标准差 - MoonPosition[CelestialSystem->"Equatorial"] 给出月球的赤经和赤纬.
- MoonPosition 接受以下选项:
-
AltitudeMethod "ApparentAltitude" 计算高度时,是否考虑大气折射 CelestialSystem "Horizon" 是返回方位角/高度信息还是返回赤经/赤纬信息 - CelestialSystem 的可能设置包括:
-
"Horizon" 返回方位角/高度 (az/alt) 值 "Equatorial" 返回赤经/赤纬 (
/
) 值 - AltitudeMethod 的可能设置包括:
-
"ApparentAltitude" 计算高度时,考虑大气折射的影响 "TrueAltitude" 计算高度时,假设没有大气折射
范例
打开所有单元 关闭所有单元基本范例 (5)
MoonPosition[]MoonPosition[DateObject[{2023, 3, 20, 0, 0}, TimeZone -> -6]]MoonPosition[["Chicago"]]MoonPosition[GeoPosition[{50.3, -80.1}], DateObject[{2023, 10, 1, 0, 0}, "Minute", "Gregorian", -6.]]MoonPosition[[image], DateObject[{2023, 10, 1, 0, 0}, "Minute", "Gregorian", -6.]]范围 (9)
日期 (3)
可以用 DateObject 指定日期:
MoonPosition[DateObject[{2013, 6, 21, 15, 0}, TimeZone -> -6]]MoonPosition["September 23, 2010 3:00PM CDT"]MoonPosition[DateRange[DateObject[{2013, 1, 1, 9, 0}, "Minute", "Gregorian", -6.], DateObject[{2013, 12, 31, 9, 0}, "Minute", "Gregorian", -6.], 10]]位置 (6)
MoonPosition[GeoPosition[{40.1, -88.2}]]MoonPosition[[image]]MoonPosition[["france"]]MoonPosition[["france"], Mean]MoonPosition[{["chicago"], [image]}]MoonPosition[{{Entity["City", {"Chicago", "Illinois", "UnitedStates"}], DateObject[{2025, 1, 1, 12}, TimeZone -> "America/Chicago"]}, {Entity["City", {"Moscow", "Moscow", "Russia"}], DateObject[{2023, 7, 28, 6}, TimeZone -> "Europe/Moscow"]}}]选项 (2)
CelestialSystem (1)
AltitudeMethod (1)
AltitudeMethod 默认设置考虑大气折射:
MoonPosition[["Champaign"], DateObject[{2022, 9, 4, 19, 5}, "Minute", "Gregorian", -5.]]MoonPosition[["Champaign"], DateObject[{2022, 9, 4, 19, 5}, "Minute", "Gregorian", -5.], AltitudeMethod -> "TrueAltitude"]应用 (4)
Graphics[{Red, Point[QuantityMagnitude /@ MoonPosition[DateRange[DateObject[{2023, 1, 1, 0, 0}, "Minute", "Gregorian", -6.], DateObject[{2023, 1, 31, 0, 0}, "Minute", "Gregorian", -6.], 1], CelestialSystem -> "Equatorial"]["Values"]]}, Frame -> True, AspectRatio -> .5]SphereDistance[{ϕ1_, θ1_}, {ϕ2_, θ2_}] := InverseHaversine[Haversine[ϕ1 - ϕ2] + Cos[ϕ1] Cos[ϕ2] Haversine[θ1 - θ2]]sunposequatorial = SunPosition[DateRange[DateObject[{2022, 1, 1, 0, 0, 0}, "Instant", "Gregorian", -6.], DateObject[{2022, 2, 1, 0, 0, 0}, "Instant", "Gregorian", -6.], {1, "Day"}], CelestialSystem -> "Equatorial"];moonposequatorial = MoonPosition[DateRange[DateObject[{2022, 1, 1, 0, 0, 0}, "Instant", "Gregorian", -6.], DateObject[{2022, 2, 1, 0, 0, 0}, "Instant", "Gregorian", -6.], {1, "Day"}], CelestialSystem -> "Equatorial"];angdistequatorial = TimeSeriesThread[Quantity[SphereDistance[First[#], Last[#]] / Degree, "AngularDegrees"]&, {sunposequatorial, moonposequatorial}];DateListPlot[angdistequatorial]moonpos = MoonPosition[DateRange[DateObject[{2014, 1, 1, 0, 0, 0}, "Instant", "Gregorian", -6.], DateObject[{2014, 7, 1, 0, 0, 0}, "Instant", "Gregorian", -6.], {2, "Day"}], CelestialSystem -> "Equatorial"];提取月亮的赤经突然从 24 小时变为 0 小时的位置信息,并计算这种转变发生的平均周期:
Extract[moonpos["Dates"], Position[Differences[N@QuantityMagnitude[Part[moonpos["Values"], All, 1]]], _ ? Negative]]//Differences//Mean//NUnitConvert[EntityValue[["the moon"], "OrbitPeriod"], "Day"]EquatorialtoCartesian[ ra_, dec_] := Module[ {x, y, z},
x = Cos[15 ra Degree] Sin[π / 2 - dec Degree];
y = Sin[15ra Degree] Sin[π / 2 - dec Degree];
z = Cos[π / 2 - dec Degree];
{x, y, z} ]Show[ParametricPlot3D[{Cos[t] Sin[p], Sin[t] Sin[p], Cos[p]}, {t, 0, 2 Pi}, {p, 0, Pi}, PlotStyle -> Opacity[.3]], Graphics3D[{Yellow, PointSize[.05], Point[EquatorialtoCartesian@@N@QuantityMagnitude@SunPosition[DateObject[{2017, 8, 20, 9, 0, 0}, "Instant", "Gregorian", -6.], CelestialSystem -> "Equatorial"]], Blue, Point[EquatorialtoCartesian@@N@QuantityMagnitude@MoonPosition[DateObject[{2017, 8, 20, 9, 0, 0}, "Instant", "Gregorian", -6.], CelestialSystem -> "Equatorial"]]}], SphericalRegion -> True]属性和关系 (4)
默认情况下,位置由 $GeoLocation 指定,日期由当前日期指定:
MoonPosition[]MoonPosition[$GeoLocation, DateObject[]]当给定的是一定范围内的日期时,返回结果形式为 TimeSeries:
MoonPosition[DateRange[DateObject[{2013, 1, 1, 9, 0}, "Minute", "Gregorian", -6.], DateObject[{2013, 12, 31, 9, 0}, "Minute", "Gregorian", -6.], 10]]由于针对每个日期,返回的结果为多个数值,所以用 DateListPlot 显示的结果是两条曲线,一个是方位角,一个是高度:
DateListPlot[MoonPosition[DateRange[DateObject[{2013, 6, 15, 8, 0}, "Minute", "Gregorian", -6.], DateObject[{2013, 6, 15, 16, 0}, "Minute", "Gregorian", -6.], {.5, "Hour"}]], Joined -> True]loc = GeoPosition[{40.11, -88.22}];
date = DateObject[{2023, 7, 16, 12, 36, 0}];MoonPosition[loc, date]UnitConvert[%, MixedUnit["ArcDMS"]]也可以使用 AstroPosition 来计算:
AstroPosition[Entity["PlanetaryMoon", "Moon"], {"Horizon", loc, date}]可能存在的问题 (2)
设置为 MoonPosition[locationspec,Interval] 时,指定地点的结果被强制以数值区间形式给出:
MoonPosition[GeoPosition[{40.1, -88.2}], Interval]用 "Minute" 或更大的粒度来绘制 MoonPosition 的结果会导致产生伪迹:
Plot[MoonPosition[Entity["City", {"Champaign", "Illinois", "UnitedStates"}], DatePlus[DateObject[{2020, 9, 3, 20, 29}, "Minute", "Gregorian", -5.], {x, "Hour"}]][[2]], {x, 0.1, 1}]Plot[MoonPosition[Entity["City", {"Champaign", "Illinois", "UnitedStates"}], DatePlus[DateObject[DateObject[{2020, 9, 3, 20, 29}, "Minute", "Gregorian", -5.], "Instant"], {x, "Hour"}]][[2]], {x, 0.1, 1}]巧妙范例 (1)
loc = GeoPosition[{40.1, -88.2}];
date = DateObject[{2017, 7, 5, 16, 0, 0}, TimeZone -> -6];sidtime = SiderealTime[loc, date]sunRA = First[SunPosition[date, CelestialSystem -> "Equatorial"]];
moonRA = First[MoonPosition[date, CelestialSystem -> "Equatorial"]];
planetsRA = EntityValue[{Entity["Planet", "Mercury"], Entity["Planet", "Venus"], Entity["Planet", "Mars"], Entity["Planet", "Jupiter"], Entity["Planet", "Saturn"], Entity["Planet", "Uranus"], Entity["Planet", "Neptune"]}, EntityProperty["Planet", "RightAscension", {"Date" -> date}]];
ascensions = Join[{sunRA, moonRA}, planetsRA]symbols = {"☼", "☾", "☿", "♀", "♂", "♃", "♄", "♅", "♆"};
colors = {Yellow, White, Orange, Lighter[Blue], Red, Lighter[Purple], Orange, Cyan, Lighter[Blue]};
labels = MapThread[Text[Style[#1, #2, 17], {0, 3.4}.RotationMatrix[#3]]&, {symbols, colors, ascensions}];GeoGraphics[{
labels,
Thick, Black, Arrow[{{0, 0}, Here}],
GeoStyling[Opacity[.5]], NightHemisphere[date],
Thickness[.005], Opacity[.5], Line[Pi{{{-1, 0}, {1, 0}}, {{0, -1}, {0, 1}}}]
},
GeoRange -> "World", GeoProjection -> {"AzimuthalEquidistant", "Centering" -> {-90, Longitude[loc] - sidtime}}, GeoBackground -> GeoStyling["ReliefMap"],
Background -> Black, PlotRange -> 4,
PlotLabel -> sidtime, LabelStyle -> White
]文本
Wolfram Research (2014),MoonPosition,Wolfram 语言函数,https://reference.wolfram.com/language/ref/MoonPosition.html (更新于 2023 年).
CMS
Wolfram 语言. 2014. "MoonPosition." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2023. https://reference.wolfram.com/language/ref/MoonPosition.html.
APA
Wolfram 语言. (2014). MoonPosition. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/MoonPosition.html 年
BibTeX
@misc{reference.wolfram_2026_moonposition, author="Wolfram Research", title="{MoonPosition}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/MoonPosition.html}", note=[Accessed: 30-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_moonposition, organization={Wolfram Research}, title={MoonPosition}, year={2023}, url={https://reference.wolfram.com/language/ref/MoonPosition.html}, note=[Accessed: 30-October-2026]}