问题描述
我需要绘制卫星的轨迹,但在矢量图上是很重要的,因为当我放大时,地图也会扩展,使用 jpeg 或 png 执行此操作会导致绘制错误,因为在图像中我必须还要注意尺寸,但是使用 folium 地图,我可以轻松地仅依赖纬度和经度,这对我来说非常重要。我分别创建了一个情节和大叶地图,我需要帮助来整合两者。 This video 很有帮助
from beyond.io.tle import Tle
from beyond.dates import Date
import matplotlib.pyplot as plt
import numpy as np
tle = Tle("""ESTCUBE 1
1 39161U 13021C 21190.16115675 .00000203 00000-0 39683-4 0 9990
2 39161 97.9386 270.8533 0010880 82.4555 277.7898 14.72497522438947""")
tle2 = Tle("""ISS (ZARYA)
1 25544U 98067A 20331.01187177 .00003392 00000-0 69526-4 0 9990
2 25544 51.6456 267.7478 0001965 82.1336 12.7330 15.49066632257107""")
orb_est = tle.orbit() # orbit for EstCube
orb_iss = tle2.orbit() # orbit for ISS
# Tables containing the positions of the ground track
latitudes,longitudes = [],[]
prev_lon,prev_lat = None,None
# Condition for plotting
period = orb_est.infos.period
start = Date.Now()
stop = 2 * period
step = period/100
for point in orb_est.ephemeris(start=start,stop=stop,step=step):
# Conversion to earth rotating frame
point.frame = 'ITRF'
# Conversion from cartesian to spherical coordinates (range,latitude,longitude)
point.form = 'spherical'
# Conversion from radians to degrees
lon,lat = np.degrees(point[1:3])
# Creation of multiple segments in order to not have a ground track
# doing impossible paths
if prev_lon is None:
lons = []
lats = []
longitudes.append(lons)
latitudes.append(lats)
elif orb_est.i < np.pi /2 and (np.sign(prev_lon) == 1 and np.sign(lon) == -1):
lons.append(lon + 360)
lats.append(lat)
lons = [prev_lon - 360]
lats = [prev_lat]
longitudes.append(lons)
latitudes.append(lats)
elif orb_est.i > np.pi/2 and (np.sign(prev_lon) == -1 and np.sign(lon) == 1):
lons.append(lon - 360)
lats.append(lat)
lons = [prev_lon + 360]
lats = [prev_lat]
longitudes.append(lons)
latitudes.append(lats)
lons.append(lon)
lats.append(lat)
prev_lon = lon
prev_lat = lat
plt.xlim(-180,180) # longitude limit
plt.xlabel('Longitude')
plt.ylim(-90,90) # latitute limit
plt.ylabel('Latitude')
for lons,lats in zip(longitudes,latitudes):
plt.plot(lons,lats,'black',linestyle="--",linewidth=1.5)
plt.grid()
plt.show()
大叶地图代码
import folium
import numpy as np
from vega_datasets import data as vds
m = folium.Map()
lat_interval = 10
lon_interval = 10
lat_trans = 1
long_trans = 5
grid = []
grid_trans = []
for lat in range(-90,90,lat_interval):
grid.append([[lat,-180],[lat,180]])
for lon in range(-180,181,lon_interval):
grid.append([[-90,lon],[90,lon]])
for g in grid:
folium.polyLine(g,color="black",weight=0.5,opacity=0.5).add_to(m)
folium.polyLine([[0,[0,180]],tooltip="Equator",color="green",weight=2).add_to(m) # equator
folium.polyLine([[-90,-0],0]],weight=1.8).add_to(m) # prime meridian
m.save("Test2.html")
次要问题:-
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)