AstroPosition[{az,alt}]
在你所在地理位置的当前地平参考架中定义一个天球上的位置,其方位角为 az,高度为 alt.
AstroPosition[{az,alt,r}]
定义天体空间中的一个位置,其地平参考架坐标为 az,alt,距你所在地理位置的距离为 r.
AstroPosition[coords,frame]
使用给定参考架,如 "Equatorial"、"Horizon"、"Galactic" 等定义球坐标 coords 的方位和意义.
AstroPosition[coords,frame,csys]
表示在使用坐标系 csys(如 "Cartesian"、"Cylindrical" 等)的给定 frame 中以数字 coords 列表给出的天体空间中的一个位置.
AstroPosition[{coords1,coords2,…},frame,csys]
表示一组天体位置.
AstroPosition[entity,frame,csys]
返回相对于给定参考架和坐标系返回的 entity 的位置 .
AstroPosition
AstroPosition[{az,alt}]
在你所在地理位置的当前地平参考架中定义一个天球上的位置,其方位角为 az,高度为 alt.
AstroPosition[{az,alt,r}]
定义天体空间中的一个位置,其地平参考架坐标为 az,alt,距你所在地理位置的距离为 r.
AstroPosition[coords,frame]
使用给定参考架,如 "Equatorial"、"Horizon"、"Galactic" 等定义球坐标 coords 的方位和意义.
AstroPosition[coords,frame,csys]
表示在使用坐标系 csys(如 "Cartesian"、"Cylindrical" 等)的给定 frame 中以数字 coords 列表给出的天体空间中的一个位置.
AstroPosition[{coords1,coords2,…},frame,csys]
表示一组天体位置.
AstroPosition[entity,frame,csys]
返回相对于给定参考架和坐标系返回的 entity 的位置 .
更多信息
- AstroPosition 计算并表示天球上或时空中观测到的天文位置.
- 天体坐标总是相对于参考架给出,参考架即一个以特定位置为中心并使用特定时间系统的定位正交轴三元组.
- AstroPosition[coords] 等价于 AstroPosition[coords,"Horizon","NorthAzAlt"].
- 不相对于遥远的恒星旋转并且以太阳系质心为中心的可能的惯性系包括:
-
"ICRS" 或 "BCRS" 国际天球参考系 "J2000" J2000 历元的平赤道平春分点 "B1950" B1950 历元的平赤道平春分点 "EclipticICRS" J2000 历元的平均黄道面,ICRS 的 Lieske 旋转 "Galactic" 沿银河系平面定向的惯性系 - 以地心为中心但不随地球旋转的非惯性系包括:
-
"GCRS" 地心天球参考系 "MEME" 参考架沿地球的平赤道定向,用平春分点作为
轴"TETE" 或 "Equatorial" 参考架沿地球真赤道定向,用真春分点作为
轴"TEME" 以地球真赤道为基准并使用平分点作为
轴的参考架;仅用于 TLE 轨道推算"CIRS" 天球中间参考系 "MeanEcliptic" 参考架沿黄道定向,用平春分点作为
轴"TrueEcliptic" 或 "Ecliptic" 参考架沿黄道定向,用真春分点作为
轴 - 与地球一起旋转的非惯性系包括:
-
"TIRS" 地球中间参考系,以地心为中心并与 "CIRS" 共享同一极轴 "ITRS" 国际地球参考系,以地心为中心,与地球椭圆体一起旋转 "Horizon" 在给定地理位置沿本地地平面定向并以该位置为中心的参考架 - 形为 {"frame","param1"val1,"param2"val2,…} 的参考架的可能的参数包括:
-
"LightTime" 是否使用几何坐标、延迟坐标或高级坐标 "LightDeflection" 是否校正大质量物体对光的偏转 "GravitationalTimeDelay" 是否修正 Shapiro 时间延迟 "Aberration" 是否校正由观察者运动造成的像差 "PrecessionNutationModel" 使用的进动和章动模型 "Date" or "ObservationDate" 观测日期 "Location" 框架的原点和观测的位置 "Epoch" or "FrameDefinitionEpoch" 定义旋转框架方位的日期 "PolarMotion" TIRS 框架中 ITRS
轴的坐标 {x',y'}"Refraction" 用于计算大气折射的压力、温度、相对湿度和波长值 - 也可用 {"frame",date,loc,otherparams} 给出 {"frame","Date"date,"Location"loc,otherparams}.
- 给定一个框架,可以使用不同的坐标系 csys:"Spherical"、"Cylindrical"、"Cartesian" 或球坐标的投影,如 "Mollweide"、"Mercator" 等. GeoProjectionData["Spherical"] 中的所有球面投影都可用.
- AstroPosition 下载太阳系天体的星历数据文件,并将它们永久存储在 FileNameJoin[{$UserAddOnsDirectory,"ApplicationData","Astro"}] 中.
范例
打开所有单元 关闭所有单元基本范例 (6)
AstroPosition[{6.257, -10.122}]通过提供方位角、高度和到你所处位置的距离来指定 3D 空间中的位置:
AstroPosition[{Quantity[6.257, "AngularDegrees"], Quantity[-10.122, "AngularDegrees"], Quantity[3, "AstronomicalUnit"]}]AstroPosition[Quantity[{1, 2, 3}, "AstronomicalUnit"], "MeanEcliptic", "Cartesian"]AstroPosition[Entity["Galaxy", "LargeMagellanicCloud"]]AstroPosition[%, "Equatorial"]AstroGraphics[{White, Circle[%, 10]}, AstroRange -> All, AstroReferenceFrame -> "Equatorial", AstroBackground -> "GalacticSky"]火星在国际天球参考系中的当前位置,以太阳系质心为中心,采用笛卡尔坐标系:
AstroPosition["Mars", "ICRS", "Cartesian"]%["Data"]AstroPosition[Entity["Planet", "Jupiter"], {"Equatorial", "Date" -> DateObject[{2020, 1, 1, 12, 0, 0}, "Instant", "Gregorian", -5.]}]%["Distance"]绘制 2015 年至 2030 年间这种距离的演变,同样以天文单位表示:
Plot[AstroDistance[Dated[Entity["Planet", "Jupiter"], year], "Earth"], {year, 2015, 2030}]范围 (36)
坐标 (5)
AstroPosition[Entity["Star", "Sirius"]]%["Data"]AstroPosition[{Quantity[6.5, "HoursOfRightAscension"], Quantity[-10.12, "AngularDegrees"]}, "CIRS"]EntityValue["Planet", "Entities"]AstroPosition[%]用 QuantityArray 对象提供坐标:
QuantityArray[RandomReal[{-60, 60}, {100, 2}], "AngularDegrees"]AstroPosition[%, "Equatorial"]AstroGraphics[{White, Point[%]}, AstroReferenceFrame -> "Ecliptic", AstroBackground -> "GalacticSky"]AstroPosition["TrueEquinox"]AstroPosition["TrueEquinox", "TETE"]AstroPosition["North"]AstroPosition["CIO", "MEME"]参考架 (15)
默认情况下,AstroPosition 使用地平参考架,其
-
平面与你所在地理位置的地球相切:
AstroPosition[Entity["Star", "Sirius"]]使用银河坐标系,其空间轴线沿银河平面和中心方向延伸,且以太阳系质心为中心:
AstroPosition[Entity["Star", "Sirius"], "Galactic"]使用 GCRS(地心坐标参考系)框架,其空间轴沿 ICRS 定向并且以地理中心为中心:
AstroPosition[Entity["Star", "Sirius"], "GCRS"]AstroPosition[Entity["Star", "Sirius"], {"MEME", "Epoch" -> Now}]使用 J2000 框架,即 J2000 日的平赤道、平春分点框架,非常接近 ICRS 框架:
AstroPosition[Entity["Star", "Sirius"], "J2000"]使用 B1950 框架,即 B1950 日的平赤道、平春分点框架:
AstroPosition[Entity["Star", "Sirius"], "B1950"]AstroPosition[Entity["Star", "Sirius"], {"TETE", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"TEME", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"MeanEcliptic", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"TrueEcliptic", "Epoch" -> Now}]使用 J2000 历元的平黄道坐标系,将 ICRS 按 23°26'21.448'' 的倾角进行旋转:
AstroPosition[Entity["Star", "Sirius"], {"EclipticICRS", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"CIRS", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"TIRS", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"ITRS", "Epoch" -> Now}]AstroPosition[Entity["Star", "Sirius"], {"Horizon", "Location" -> Here, "Epoch" -> "J2000"}]观测日期 (4)
用 DateObject 表达式指定观测日期:
AstroPosition[Entity["Planet", "Mars"], {"GCRS", "Date" -> Now}]AstroPosition[Entity["Planet", "Mars"], {"GCRS", "Date" -> DateObject[{2021, 1, 1, 0, 0, 0}, TimeZone -> 0]}]AstroPosition[Entity["Planet", "Mars"], {"GCRS", "Date" -> DateObject[{2021, 1, 1, 0, 0, 0}, TimeZone -> 0, TimeSystem -> "TT"]}]日期字符串被假定使用本地时区,默认为打散 (smeared)UTC 时间系统,并被转换为时区 0 中的 "TT":
AstroPosition[Entity["Planet", "Mars"], {"GCRS", "Date" -> "Jan 1 2021 00:00:00"}]AstroPosition[Entity["Planet", "Mars"], {"BCRS", "Date" -> "J2000"}]观测位置 (1)
框架历元 (1)
使用 MEME 日期框架,从你所在的位置观测该日期的织女星:
date = Now;
loc = Here;AstroPosition[Entity["Star", "Vega"], {"MEME", date, loc}]在相同的日期和相同的地点执行相同的观测,但现在使用 100 年前的 MEME 框架,由于进动,它与当前框架不同:
AstroPosition[Entity["Star", "Vega"], {"MEME", date, loc, "Epoch" -> date - Quantity[100, "Years"]}]天体测量校正 (6)
date = Nowgeo = AstroPosition[Entity["Planet", "Mars"], {"TETE", date, "LightTime" -> "Geometric"}]obs = AstroPosition[Entity["Planet", "Mars"], {"TETE", date, "LightTime" -> "Observation"}]UnitConvert[AstroAngularSeparation[geo, obs], "Arcseconds"]emis = AstroPosition[Entity["Planet", "Mars"], {"TETE", date, "LightTime" -> "Emission"}]UnitConvert[AstroAngularSeparation[geo, emis], "Arcseconds"]Eddington 在 1919 年 5 月 29 日的日食期间观察到这颗恒星:
star = Entity["Star", "HIP20842"];loc = Entity["Island", "PrincipeIsland"];
date = DateObject[{1919, 5, 29, 14, 15, 35}, TimeZone -> 0]{AstroPosition[Entity["Star", "Sun"], {"Equatorial", date, loc}], AstroPosition[Entity["PlanetaryMoon", "Moon"], {"Equatorial", date, loc}]}sunDeflected = AstroPosition[Entity["Star", "HIP20842"], {"Equatorial", date, loc}]noDeflection = AstroPosition[Entity["Star", "HIP20842"], {"Equatorial", date, loc, "LightDeflection" -> False}]UnitConvert[AstroAngularSeparation[sunDeflected, ReplacePart[sunDeflected, 1 -> noDeflection["Data"]]], "Arcseconds"]光线在太阳等大质量物体附近通过时,Shapiro 效应会在光线传播的过程引入一个小的延迟,这也会影响位置. 在以下日期观测金星:
Quantity[AstroPosition[Entity["Planet", "Venus"], {"Equatorial", DateObject[{2022, 10, 23, 0, 0, 0}]}]["RightAscension"], "AngularDegrees"]Quantity[AstroPosition[Entity["Planet", "Venus"], {"Equatorial", DateObject[{2022, 10, 23, 0, 0, 0}], "GravitationalTimeDelay" -> False}]["RightAscension"], "AngularDegrees"]UnitConvert[%% - %, "Microarcseconds"]由于观察者的运动,如地球绕太阳的轨道运动,观察到的位置会发生变化:
date = NowAstroPosition[Entity["Star", "Polaris"], {"GCRS", date}]AstroPosition[Entity["Star", "Polaris"], {"GCRS", date, "Aberration" -> False}]AstroPosition[Entity["Star", "Polaris"], {"GCRS", date + Quantity[6, "Months"], "Aberration" -> True}]地球的瞬时自转轴围绕地球的地理极轴摆动,因此,物体相对于 "ITRS" 和 "Horizon" 框架的位置引入了小幅修正:
date = Now;可从 GeoOrientationData 获得角度差:
GeoOrientationData[date, "PolarMotion"]默认情况下,"ITRS" 和 "Horizon" 框架使用极移的测量值:
AstroPosition[Entity["Star", "Sirius"], {"Horizon", date, Here}]AstroPosition[Entity["Star", "Sirius"], {"Horizon", date, Here, "PolarMotion" -> None}]AstroPosition[Entity["Star", "Sirius"], {"Horizon", date, Here, "PolarMotion" -> Quantity[{2, 3}, "Arcseconds"]}]sunset = Sunset[DateObject[{2022, 9, 26}]]那是太阳的上沿在下降过程中触及地平线的时间,所以此时太阳中心的高度为负:
AstroPosition[Entity["Star", "Sun"], {"Horizon", sunset, Here}]默认情况下,地球上的 "Horizon" 计算使用折射模型. 下面是不使用折射模型的情况下那一刻太阳的位置:
AstroPosition[Entity["Star", "Sun"], {"Horizon", sunset, Here, "Refraction" -> None}]对于标准大气条件,差异约为 36 角分. 指定压力、温度和相对湿度条件以及光的波长:
AstroPosition[Entity["Star", "Sun"], {"Horizon", sunset, Here, "Refraction" -> {Quantity[1030, "Millibars"], Quantity[0, "DegreesCelsius"], Quantity[40, "Percent"], Quantity[500, "Nanometers"]}}]坐标系 (3)
AstroPosition[{Quantity[6.5, "HoursOfRightAscension"], Quantity[-10.12, "AngularDegrees"], Quantity[3.4, "AstronomicalUnit"]}, "Equatorial"]AstroPosition[%, "Equatorial", "Cartesian"]AstroPosition[%, "Equatorial", "Cylindrical"]AstroPosition[%, "Equatorial", "Mollweide"]AstroPosition[{3.4, 1, .2}, "Ecliptic", "Cartesian"]moon = AstroPosition[Entity["PlanetaryMoon", "Moon"]]AstroPosition[moon, "Horizon", "CartesianSEU"]AstroPosition[moon, "Horizon", "CartesianENU"]AstroPosition[moon, "ITRS", "CylindricalHA"]属性 (1)
从 AstroPosition 对象提取属性:
ap = AstroPosition[Entity["Star", "Sirius"]]ap["Data"]ap["Azimuth"]ap["Altitude"]ap["Distance"]ap["Frame"]ap["FrameName"]ap["Date"]ap["Location"]ap["CoordinateSystem"]应用 (5)
sunDeclination[year_ ? NumericQ] := AstroPosition[Entity["Star", "Sun"], {"TETE", DateObject[{year}, CalendarType -> "GregorianYear"]}]["Declination"]DateObject[{year /. FindRoot[sunDeclination[year], {year, 2026.75}]}, CalendarType -> "GregorianYear"]CalendarConvert[%]Use FindAstroEvent to obtain the same result:
FindAstroEvent["SeptemberEquinox", DateObject[{2026}]]sunLongitude[jd_ ? NumericQ] := AstroPosition[Entity["Star", "Sun"], {"TrueEcliptic", jd}]["Longitude"]findZero[f_, year_] := FromJulianDate[jd /. FindRoot[f[jd], {jd, JulianDate[{year}]}], TimeSystem -> "TT"]tropicalYear = findZero[sunLongitude, 2027] - findZero[sunLongitude, 2026]//Quiet相对于惯性框架,太阳需要一个恒星年才能在赤经上前进 360 度:
sunRA[jd_ ? NumericQ] := AstroPosition[Entity["Star", "Sun"], {"GCRS", jd}]["RightAscension"]siderealYear = findZero[sunRA, 2027] - findZero[sunRA, 2026]//QuietUnitConvert[siderealYear - tropicalYear, "Minutes"]2022 年 9 月下旬,木星与太阳对冲,因此在日落时升起:
sunset = DateObject[Sunset[DateObject[{2022, 9, 26}]], "Instant"]AstroPosition[Entity["Planet", "Jupiter"], {"Horizon", sunset}]["Altitude" -> Quantity["AngularDegrees"]]Plot[AstroAngularSeparation[Entity["Planet", "Jupiter"], Entity["Star", "Sun"], {"Equatorial", DateObject[{year}, CalendarType -> "GregorianYear"]}], {year, 2022.5, 2023}]now = Now;betelgueuse = AstroPosition[Entity["Star", "Betelgeuse"], {"MEME", now, "Epoch" -> "J2000"}]AstroPosition[betelgueuse, {"MEME", now, "Epoch" -> now}]AstroPosition[betelgueuse, {"TETE", now, "Epoch" -> now}]Hipparchus 发现了地球的岁差现象,并估计其周期为 160 年,幅度为 2 度:
star = Entity["Star", "Spica"];AstroPosition[Dated[star, -310], "Equatorial"]["RightAscension"]AstroPosition[Dated[star, -150], "Equatorial"]["RightAscension"]% - %%Plot[AstroPosition[Dated[star, year], "Equatorial"]["RightAscension"], {year, -20000, 20000}]Plot[AstroPosition[Dated[star, year], "Equatorial"]["Declination"], {year, -20000, 20000}]属性和关系 (7)
"J2000" 框架等价于 SSB 历元为 "J2000" 的平赤道、平春分点框架:
date = Now;AstroPosition[Entity["Star", "Sirius"], {"J2000", date}]AstroPosition[Entity["Star", "Sirius"], {"MEME", date, "Epoch" -> "J2000", "Location" -> "SSB", "LightTime" -> "Geometric", "GravitationalTimeDelay" -> False, "LightDeflection" -> False, "Aberration" -> False}]"EclipticICRS" 坐标系是 "ICRS" 坐标系绕其公共
轴进行黄赤交角旋转的结果. 下面是 "EclipticICRS" 的
轴:
AstroPosition[{90, 0}, "EclipticICRS"]AstroPosition[%, "ICRS"]["Declination"]这是 IAU1976 岁差模型中使用的 Lieske 旋转 23°26'21.448'':
%//DMSListAstroPosition[
,{"Horizon",date,loc}] 等价于 SunPosition[date,loc,CelestialSystem"Horizon"]:
date = DateObject[{2022, 9, 26, 16, 30, 0}];
loc = GeoPosition[{40, -90}];AstroPosition[Entity["Star", "Sun"], {"Horizon", date, loc}]SunPosition[loc, date, CelestialSystem -> "Horizon"]AstroPosition[
,{"Equatorial",date,loc}] 等价于 SunPosition[date,loc,CelestialSystem"Equatorial"]:
AstroPosition[Entity["Star", "Sun"], {"Equatorial", date, loc}]SunPosition[loc, date, CelestialSystem -> "Equatorial"]AstroPosition[
,{"Horizon",date,loc}] 等价于 MoonPosition[date,loc,CelestialSystem"Horizon"]:
date = DateObject[{2022, 9, 26, 16, 30, 0}];
loc = GeoPosition[{40, -90}];AstroPosition[Entity["PlanetaryMoon", "Moon"], {"Horizon", date, loc}]MoonPosition[loc, date, CelestialSystem -> "Horizon"]AstroPosition[moon,{"Horizon",date,loc}] 等价于 MoonPosition[date,loc,CelestialSystem"Horizon"]:
AstroPosition[Entity["PlanetaryMoon", "Moon"], {"Equatorial", date, loc}]MoonPosition[loc, date, CelestialSystem -> "Equatorial"]对于地球的球面模型,GeoPosition[loc] 等价于 AstroPosition[loc,"ITRS"]:
latlon1 = Quantity[GeoPosition[Entity["City", {"Paris", "IleDeFrance", "France"}]]["LatLon"], "AngularDegrees"]latlon2 = Quantity[AstroPosition[Entity["City", {"Paris", "IleDeFrance", "France"}], "ITRS"][{"Declination", "MinusHourAngle"}], "AngularDegrees"]纬度差是由于在 GeoPosition 中使用了椭球模型,而在 AstroPosition 中使用了球体模型:
latlon1 - latlon2frame = {"ITRS", "LightTime" -> "Geometric", "Aberration" -> False, "LightDeflection" -> False};latlon2 = Quantity[AstroPosition[Entity["City", {"Paris", "IleDeFrance", "France"}], frame][{"Declination", "MinusHourAngle"}], "AngularDegrees"]latlon1 - latlon2gcLat = GeodesyData["ITRF00", {"GeocentricLatitude", Latitude[Entity["City", {"Paris", "IleDeFrance", "France"}]]}]现在与 AstroPosition 给出的纬度一致:
First[latlon2] - gcLatGeoPositionXYZ[loc] 等价于 AstroPosition[loc,"ITRS","Cartesian"]:
v1 = Quantity[GeoPositionXYZ[Entity["City", {"Paris", "IleDeFrance", "France"}]]["XYZ"], "Meters"]v2 = Quantity[AstroPosition[Entity["City", {"Paris", "IleDeFrance", "France"}], "ITRS", "Cartesian"]["Data"], "AstronomicalUnit"]Norm[v1 - v2]frame = {"ITRS", "LightTime" -> "Geometric", "Aberration" -> False, "LightDeflection" -> False};v2 = Quantity[AstroPosition[Entity["City", {"Paris", "IleDeFrance", "France"}], frame, "Cartesian"]["Data"], "AstronomicalUnit"]Norm[v1 - v2]GeoPositionENU[loc,origin] 等价于 AstroPosition[loc,{"Horizon","Location"origin},"CartesianENU"]:
v1 = Quantity[GeoPositionENU[Entity["City", {"Paris", "IleDeFrance", "France"}], Here]["ENU"], "Meters"]frame = {"Horizon", "Location" -> Here};v2 = Quantity[AstroPosition[Entity["City", {"Paris", "IleDeFrance", "France"}], frame, "CartesianENU"]["Data"], "AstronomicalUnit"]Norm[v1 - v2]frame = {"Horizon", "Location" -> Here, "Refraction" -> None, "LightTime" -> "Geometric", "Aberration" -> False, "LightDeflection" -> False};v2 = Quantity[AstroPosition[Entity["City", {"Paris", "IleDeFrance", "France"}], frame, "CartesianENU"]["Data"], "AstronomicalUnit"]Norm[v1 - v2]文本
Wolfram Research (2022),AstroPosition,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AstroPosition.html.
CMS
Wolfram 语言. 2022. "AstroPosition." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/AstroPosition.html.
APA
Wolfram 语言. (2022). AstroPosition. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/AstroPosition.html 年
BibTeX
@misc{reference.wolfram_2026_astroposition, author="Wolfram Research", title="{AstroPosition}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/AstroPosition.html}", note=[Accessed: 16-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_astroposition, organization={Wolfram Research}, title={AstroPosition}, year={2022}, url={https://reference.wolfram.com/language/ref/AstroPosition.html}, note=[Accessed: 16-August-2026]}