2016-01-18 6 views
3

, используя следующий код и используя pyephem и fastkml, я хотел бы извлечь наземную дорожку спутника из TLE. Код выглядит следующим образом:Визуализация спутниковой дорожки, полученной с помощью pyephem, выключена

import numpy as np 
import ephem 
import datetime as dt 
from fastkml import kml 
from shapely.geometry import Point, LineString, Polygon 

name = "ISS (ZARYA)"    
line1 = "1 25544U 98067A 16018.27038796 .00010095 00000-0 15715-3 0 9995" 
line2 = "2 25544 51.6427 90.6544 0006335 30.9473 76.2262 15.54535921981506" 

tle_rec = ephem.readtle(name, line1, line2) 

start_dt = dt.datetime.today() 
intervall = dt.timedelta(minutes=1) 

timelist = [] 
for i in range(100): 
    timelist.append(start_dt + i*intervall) 

positions = [] 
for t in timelist: 
    tle_rec.compute(t) 
    positions.append((tle_rec.sublong,tle_rec.sublat,tle_rec.elevation)) 

k = kml.KML() 
ns = '{http://www.opengis.net/kml/2.2}' 
p = kml.Placemark(ns, 'Sattrack', 'Test', '100 Minute Track') 
p.geometry = LineString(positions)#, tesselate=1,altitudemode="absolute") 
k.append(p) 

with open("test.kml", 'w') as kmlfile: 
    kmlfile.write(k.to_string()) 

К сожалению, когда я загрузить KML в Google Earth, трек выглядит следующим образом: Alleged track of ISS

Любые идеи, где это идет не так?

ответ

2

Ваш наземный трек представляет собой петлю вокруг положения 0 ° N (на экваторе) и 0 ° E (прямо к югу от Гринвича, недалеко от Гвинейского залива). Это говорит о том, что вы используете углы, выраженные в радианах, которые могут достигать значения около 6,2 и передавать их в картографическое программное обеспечение, которое читает их как градусы.

Вы должны попытаться преобразовать их в градусы первый:

positions.append((tle_rec.sublong/ephem.degree, 
        tle_rec.sublat/ephem.degree, 
        tle_rec.elevation)) 
+0

Uh, должно быть очевидно :) Большое спасибо! – Dzz

+0

@Dzz Рад, что вы смогли заставить его работать! –