Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@floatnflow

PyEphemで宇宙がヤバい

More than 1 year has passed since last update.

はじめに

月の位置や月齢を取得したいなーと思って最初は安直にスクレイピングを考えていたんだけど、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

9
Help us understand the problem. What is going on with this article?
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
floatnflow
勉強したことや調べたことを忘れたとき用のメモ置き場。 ノートにも書いてるけど探すのが大変なのでやっぱりデジタルは便利。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?