gpt4 book ai didi

python - 如何从 EarthLocation 获取 AstroPy 数据只是数值(纬度、经度、纬度)

转载 作者:行者123 更新时间:2023-12-01 02:33:12 28 4
gpt4 key购买 nike

我用了AstroPy EarthLocation 获取传播卫星轨道的纬度、经度和高度 loc = coord.EarthLocation(*itrs.cartesian.xyz)。现在,我尝试使用 np.savetxt() 将数据放入 txt 文件中。

我希望我的数据是严格的数字,而不是它当前给我的 [ < Latitude XX.xxx deg> , < Latitude YY.yyy deg > , ...] 。有谁知道该怎么做吗?

Code:

now = []     #UTC time at each propagation step
xyz =[] #Xyz coordinates from OrbitalPy initial orbit propagation
cartrep = [] #Cartesian Representation
gcrs = [] #Geocentric Celestial Reference System/Geocentric Equatorial Inertial, the default coord system of OrbitalPy
itrs =[] #International Terrestrial Reference System coordinates
lat = [] #Longitude of the location, for the default ellipsoid
lon = [] #Longitude of the location, for the default ellipsoid
alt = [] #Height of the location, for the default ellipsoid


for i in range(propNum):
xyz = (myOrbitX[i], myOrbitY[i], myOrbitZ[i]) #Xyz coord for each prop. step
now = time.Time(myT[i]) #UTC time at each propagation step
cartrep = coord.CartesianRepresentation(*xyz, unit=u.m) #Add units of [m] to xyz
gcrs = coord.GCRS(cartrep, obstime=time.Time(myT[i])) #Let AstroPy know xyz is in GCRS
itrs = gcrs.transform_to(coord.ITRS(obstime=time.Time(myT[i]))) #Convert GCRS to ITRS
loc = coord.EarthLocation(*itrs.cartesian.xyz) #Get lat/lon/height from ITRS
lat.append(loc.lat) #Create latitude list
lon.append(loc.lon) #Create longitude list
alt.append(loc.height) #Create altitude list


print('Lat:')
print(lat)
print('Lon:')
print(lon)
print('Alt:')
print(alt)
print('Time:')
print(myT)

Output:

Lat:

[<Latitude 27.689176073130298 deg>, <Latitude 48.45032120487385 deg>, <Latitude 48.364205712585104 deg>, <Latitude 27.538849564221568 deg>, <Latitude -0.03713701451174661 deg>, <Latitude -27.6161238116795 deg>, <Latitude -48.41635545462272 deg>, <Latitude -48.38265336989975 deg>, <Latitude -27.529850683687265 deg>, <Latitude 0.0929886673818169 deg>]


Lon:

[<Longitude -11.245369984319288 deg>, <Longitude 24.602646508968856 deg>, <Longitude 77.51869866724904 deg>, <Longitude 113.20045826221023 deg>, <Longitude 135.11667887191157 deg>, <Longitude 157.05927178662643 deg>, <Longitude -167.1439210586291 deg>, <Longitude -114.16647366586022 deg>, <Longitude -78.40457926191569 deg>, <Longitude -56.45443351644551 deg>]


Alt:

[<Quantity 409193.55555070826 m>, <Quantity 418422.38904031017 m>, <Quantity 419775.9010528204 m>, <Quantity 412775.65686140396 m>, <Quantity 407430.35452421894 m>, <Quantity 410337.3219834759 m>, <Quantity 415810.49056818814 m>, <Quantity 414410.9036345114 m>, <Quantity 406680.40398573445 m>, <Quantity 402944.3590314008 m>]


Time:

['2000-01-01 12:09:16.000', '2000-01-01 12:18:32.000', '2000-01-01 12:27:48.000', '2000-01-01 12:37:04.000', '2000-01-01 12:46:20.000', '2000-01-01 12:55:36.000', '2000-01-01 13:04:52.000', '2000-01-01 13:14:08.000', '2000-01-01 13:23:24.000', '2000-01-01 13:32:40.000']

最佳答案

您有经度纬度数量类型的对象。它们都有一个 .value 属性。下面是一个创建此类对象并演示如何访问该值的独立示例:

from astropy.coordinates import Longitude, Latitude
from astropy.units import Quantity
lon = Longitude('42 deg')
lon.value
lat = Latitude('42 deg')
lat.value
height = Quantity('42 meter')
height.value

因此,也许可以尝试将代码更改为 lat.append(loc.lat.value) 等,看看是否会为您提供可以传递给 np.array< 的 float 列表 制作 Numpy 数组或 np.savetxt 用于写入 txt 文件?

还可以看看 astropy.table.Table,它非常适合存储表格数据,然后将其写入 CSV 或 FITS 或其他文件格式,比仅仅使用更方便和更强大Numpy 数组和 Numpy 文本 I/O 函数。

关于python - 如何从 EarthLocation 获取 AstroPy 数据只是数值(纬度、经度、纬度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46552597/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com