2017-03-23 15 views
0

こんにちは私の助けが必要なのは、座標と衛星投影の距離を計算する方法を知っている人ならば、私は衛星の進路を予測するときに、将来のパスと私が置いた座標。その衛星が座標に近づくと、そのことを知らせるメッセージが表示されます。どうすればpyephemとの距離を計算できますか?

これは私があなたを助けてくれるコードを使用しています。

from mpl_toolkits.basemap import Basemap 
from geopy.distance import great_circle 
from matplotlib import colors 
from pyorbital import tlefile 
import matplotlib.pyplot as plt 
import numpy as np 
import math 
import ephem 
from datetime import datetime 


tlefile.TLE_URLS = ( 'http://celestrak.com/NORAD/elements/resource.txt',) 
sat_tle = tlefile.read('NUSAT 1 (FRESCO)') 
sat = ephem.readtle("NUSAT 1 (FRESCO)", sat_tle.line1, sat_tle.line2) 
obs = ephem.Observer() 
# location for tge coordinates 
print("Latitud ") 
sat_lat = input() 
print("Longitud suggested point") 
sat_lon = input() 
obs.lat = str(sat_lat) 
obs.long = str(sat_lon) 
# programar proyeccion del mapa 
map = Basemap(projection='ortho', lat_0=sat_lat, lon_0=sat_lon, resolution='l') 
# draw coastlines, country boundaries, fill continents. 
map.drawcoastlines(linewidth=0.25) 
map.drawcountries(linewidth=0.25) 
map.fillcontinents(color='coral',lake_color='aqua') 
# draw the edge of the map projection region (the projection limb) 
map.drawmapboundary(fill_color='aqua') 
# grid in latitud and longitud every 30 sec. 
map.drawmeridians(np.arange(0,360,30)) 
map.drawparallels(np.arange(-90,90,30)) 



# plot 
passes = 4 
for p in range(passes): 
    coords = [] 
    dists = [] 
    tr, azr, tt, altt, ts, azs = obs.next_pass(sat) 
    print """Date/Time (UTC)  Alt/Azim Lat/Long Elev""" 
    print """=====================================================""" 
    while tr < ts: 
     obs.date = tr 
     sat.compute(obs) 
    print "%s | %4.1f %5.1f | %4.1f %+6.1f | %5.1f" % \ 
    (tr, math.degrees(sat.alt), math.degrees(sat.az), math.degrees(sat.sublat),    math.degrees(sat.sublong), sat.elevation/1000.)  
     sat_lat = math.degrees(sat.sublat) 
     sat_lon = math.degrees(sat.sublong) 
     dist = great_circle((sat_lat, sat_lon), (sat_lat, sat_lon)).miles 
     coords.append([sat_lon, sat_lat]) 
     dists.append(dist) 
     tr = ephem.Date(tr + 30.0 * ephem.second) 
    md = min(dists) 
    imd = 1 - (float(md)/1400) 
    hue = float(240)/float(360) 
    clr = colors.hsv_to_rgb([hue, imd, 1]) 
    map.drawgreatcircle(coords[0][0], coords[0][1], coords[-1][0], coords[-1][1], linewidth=2, color=clr) 
    obs.date = tr + ephem.minute 
# map with UTC 
date = datetime.utcnow() 
cs=map.nightshade(date) 



plt.title('next '+ str(passes)+ ' passes of the satellite') 
plt.show() 

答えて

0

あなたはそれが機能ephem.separation()を説明しhttp://rhodesmill.org/pyephem/quick.html#other-functionsで見たいと思うかもしれません。あなたは、緯度が座標対、2点の経度でそれを呼び出すことが許可されている、そしてそれは彼らがどのように離れてあなたを教えてくれます:あなたは座標ペアの一つとして、衛星の経度と緯度を渡すのであれば

ephem.separation((lon1, lat1), (lon2, lat2)) 

、およびあなたが他のものとして興味を持っている位置の経度と緯度、分離が非常に小さくなったときを見ることができます。

関連する問題