python - 如何将度分秒转换为十进制度(python/skyfield)
问题描述
我想使用以下代码以十进制提取卫星(ISS)的坐标:
from skyfield.api import EarthSatellite, Topos, load
import time
line1 = '1 25544U 98067A 14020.93268519 .00009878 00000-0 18200-3 0 5082'
line2 = '2 25544 51.6498 109.4756 0003572 55.9686 274.8005 15.49815350868473'
satellite = EarthSatellite(line1, line2, name='ISS (ZARYA)')
while True:
ts = load.timescale()
t = ts.now()
geometry = satellite.at(t)
subpoint = geometry.subpoint()
print(subpoint.latitude)
print('\n')
print(subpoint.longitude)
time.sleep(1)
输出是一个字符串:-45deg 44' 13.5"
.
将其转换为以下内容的最简单方法是什么:-77.0089°
?
解决方案
令人高兴的是,这些对象latitude
和longitude
不是简单的字符串,而是花哨的角度对象,它们仅将自身打印为 3 部分字符串,以使它们易于在屏幕上阅读。您可以通过向 Python 索取他们的文档来了解更多关于它们的信息。在循环结束时,尝试添加:
help(subpoint.latitude)
该Angle
课程的文档将出现。你也可以在网上找到它:
https://rhodesmill.org/skyfield/api-units.html#skyfield.units.Angle
您将需要使用将degrees
角度表示为浮点数的属性。将程序中的打印调用更改为:
print(subpoint.latitude.degrees)
print('\n')
print(subpoint.longitude.degrees)
推荐阅读
- c# - C# / F# 如何压缩/解压缩大字符串以在 SQL Server 中存储为二进制文件
- opencv - opencvmorphologyEx(...,borderValue) 参数的预期格式是什么?
- angular - 如何修复 Angular FormArray 错误:找不到具有未指定名称属性的控件
- ios - 如何使用CKNotification?
- php - 使用 PHP 从 json 文件中获取最大值/最小值
- spring-micrometer - 无法使用千分尺查看 RestTemplate 指标
- javascript - 如何跨多个 React Redux 组件使用 requestAnimationFrame 实现游戏循环?
- android - 如何使用暴露于 android contentResolver/Mediastore 的 jetbrains
- reactjs - 在 Github Pages 上更改为自定义域会导致带有 react-router 的 create-react-app 停止工作
- python - 如何从字符串列表中删除 \n