2016-04-12 21 views
2

特定の日時の一部の駅(経度、緯度)で観測者の星の位置(緯度、経度)を計算するにはどうすればよいですか?計算に含まれるすべての要素(星、大気圧、温度の適切な動き)で完全な座標を減らす必要があります。座標削減python

私はpyephemで試しましたが、私は終えることができません。

import ephem 

polaris = ephem.readdb("Polaris,f|M|F7,2:31:48.704,89:15:50.72,2.02,1") 

polaris.compute('2016/3/1 16:22:56') 

print polaris.a_ra 
print polaris.a_dec 

私もastroplanにしようと、私は解決策に近いだと思いますが、それでも還元後の座標を取得し、適切な運動を追加する方法がわかりません。

import astropy.units as u 
from astropy.coordinates import EarthLocation 
from astropy.coordinates import SkyCoord 
from pytz import timezone 
from astroplan import Observer 
from astropy.time import Time 
from astroplan import FixedTarget 
import numpy as np 
import astropy.units as u 
from astroplan.plots import plot_sky 
from astroplan.plots import plot_parallactic 
from astroplan.plots import plot_airmass 
import matplotlib.pyplot as plt 
from astroplan import FixedTarget 


longitude = '21d33m20.4s' 
latitude = '+43d08m24.6s' 
elevation = 1150 * u.m 
time = Time('2015-06-16 12:00:00') 

location = EarthLocation.from_geodetic(longitude, latitude, elevation) 

observer = Observer(name='Name', 
       location=location, 
       pressure=0.615 * u.bar, 
       relative_humidity=0.11, 
       temperature=0 * u.deg_C, 
       timezone=timezone('Europe/Belgrade'), 
       description="..") 



coordinates = SkyCoord('2h31m48.704s', '89d15m50.72s', frame = 'icrs') 
polaris = FixedTarget(name='Polaris', coord=coordinates) 

plot_airmass(polaris, observer, time) 

ax = plt.gca() 
box = ax.get_position() 
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height * 0.8]) 

plt.legend(loc=1, bbox_to_anchor=(1.35, 1)) 
plt.show() 
+0

あなたはhttp://physics.stackexchange.comでもっと成功するかもしれません - この質問は、コンピュータプログラミングよりも物理学に詳しいようです。 –

+0

またはhttp://astronomy.stackexchange.com/ –

+0

次のような情報を追加することを忘れないでください。あなたは幾何学的または視覚的な位置を望んでいる?また、高度は精度が高すぎる場合やオブジェクトが近すぎる場合には問題になることもありますが、星にはそれがなければ問題ありません。 – Spektre

答えて

1

あなたはSkyfield、ほぼ1.0に達したPyEphemの後継をしようとする場合があります。 PyEphemの基礎となるライブラリは適切な動きを保存するのではなく、適切な動きを適用する場合は入力中にすべての星を移動する必要がありますが、SkyfieldはStarオブジェクトに格納されている動きに基づいて動的に行います。あなたが検討している削減はSkyfieldで次のようになります。あなたが興味がある場合

from skyfield.api import load, Star 
ts = load.timescale() 
t = ts.utc(2016, 4, 16, 15, 30) 
planets = load('de421.bsp') 
earth = planets['earth'] 
boston = earth.topos(longitude_degrees=(21, 33, 20.4), 
        latitude_degrees=(+43, 8, 24.6)) 
barnard = Star(ra_hours=(17, 57, 48.49803), 
       dec_degrees=(4, 41, 36.2072), 
       ra_mas_per_year=-798.71, 
       dec_mas_per_year=+10337.77, 
       parallax_mas=545.4, 
       radial_km_per_s=-110.6) 
astrometric = boston.at(t).observe(barnard) 
ra, dec, distance = astrometric.radec() 
print(ra) 
print(dec) 
apparent = astrometric.apparent() 
ra, dec, distance = apparent.radec() 
print(ra) 
print(dec) 
alt, az, distance = apparent.altaz(temperature_C=25.0, 
            pressure_mbar=1013.25) 
print(alt) 
print(az) 

さらにドキュメントはhttp://rhodesmill.org/skyfield/であります!

関連する問題