Help us understand the problem. What is going on with this article?

PyEphemで宇宙がヤバい

はじめに

月の位置や月齢を取得したいなーと思って最初は安直にスクレイピングを考えていたんだけど、PyEphemというとっても便利なライブラリがあることを知った。
qiitaには1個もPyEphemのタグがついた記事がないので書いときます。

PyEphemについて

詳しくはリファレンスを読むこととして、ここでは簡単な使い方を。

import ephem
import datetime
from math import degrees as deg

# Body(天体)クラスのインスタンスを作成。

moon = ephem.Moon()

# Observer(観測者)クラスのインスタンスを作成。

shinjuku = ephem.Observer()
shinjuku.lat = '35.6846'
shinjuku.lon = '139.7106'
shinjuku.elevation = 60
shinjuku.date = datetime.datetime.utcnow() # 任意の年月日の位置を求められる

# 観測者から見た天体を計算。

moon.compute(shinjuku)
print(deg(moon.alt)) # 20.88288333068003(地平線からの仰角(degで度に変換))
print(deg(moon.az)) # 218.0421642706897(北を0度とした方角)
print(moon.moon_phase) # 0.2820702016225599(月相)
print(shinjuku.date - ephem.previous_new_moon(shinjuku.date)) # 24.138740752328886(月齢)

JAXAやNASAなどの軌道情報提供サービスが提供するTLEというデータを用いて人工衛星の位置なども計算できる。(pyorbitalでも可能)

国際宇宙ステーション(ISS)のTLEは、
https://spaceflight.nasa.gov/realdata/sightings/SSapplications/Post/JavaSSOP/orbit/ISS/SVPOST.html
TWO LINE MEAN ELEMENT SET というセクションに書かれている。(予測含めたくさんある)
値は軌道変更などにより変動するため、適宜取得する必要がある。
2020/048/17:15:00.000 (2月17日? 17時15分UTC?)時の値は、

ISS
1 25544U 98067A   20048.52024880  .00016717  00000-0  10270-3 0  9000
2 25544  51.6378 225.5202 0004926 282.0303  78.0295 15.49172297 13304

上記をもとに現在(shinjukuに設定した時刻)のshinjukuから見たISSの位置を計算してみる。

line1 = 'ISS'
line2 = '1 25544U 98067A   20048.52024880  .00016717  00000-0  10270-3 0  9000'
line3 = '2 25544  51.6378 225.5202 0004926 282.0303  78.0295 15.49172297 13304'
iss = ephem.readtle(line1, line2, line3)

# shinjukuから見た位置
iss.compute(shinjuku)
print(deg(iss.alt)) # -51.61249863302519
print(deg(iss.az)) # 142.92199525046195

# ISSがいる位置
iss.compute(datetime.datetime.utcnow())
print(deg(iss.sublat)) # -50.990213758123666
print(deg(iss.sublong)) # -139.8713732199458
print(iss.elevation) # 433325.5
print(iss.eclipsed) # True

shinjukuから見ると南東の地平線の下51度くらいの位置、ニュージーランドの東の上空43万メートルにいて、食のようですね。

iss.png

おわりに

うちではラズパイで動かしているtwitterやLINEのbotで月の情報を表示するのに利用しています。

pt2.png

pl2.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした