WCS and astronomic coordinate handling:
NASA JPS webpage to retrieve info about observable minor solar system objects: https://ssd.jpl.nasa.gov/sbwobs.cgi
MPC: Minor solar system object database: https://www.minorplanetcenter.net/data
astroplan
import numpy as np
from matplotlib import pylab as plt
import datetime as dt
### for minor solar system objects
import astroquery.jplhorizons as jp
import astroquery.skyview as SW
from astropy.wcs import WCS
from astropy import units as u
from astropy.coordinates import SkyCoord
from astroquery.simbad import Simbad
from astroquery.sdss import SDSS
Set observer coorinates for jp.Horizons
nhao = {"lon" : 134.33556,
"lat" : 35.02528,
"elevation" : 449}
nhao["lat"]
Europa = jp.Horizons(id="Europa", location=nhao,
epochs={"start" : "2019-07-25",
"stop" : "2019-08-03",
"step" : "1h"})
Eur_data = Europa.ephemerides()
Eur_data
Eur_data["datetime_str"][0]
Format the time list to be accessable to matplotlib
dt.datetime.now()
def get_time(data):
return dt.datetime.strptime(data,"%Y-%b-%d %H:%M")
TIME = []
for i in Eur_data["datetime_str"]:
TIME.append(get_time(i))
plt.figure(figsize = (12,8))
plt.plot(Eur_data["RA"][::10], Eur_data["DEC"][::10], "o")
for i in range(len(TIME))[::10]:
plt.text(Eur_data["RA"][i], Eur_data["DEC"][i], TIME[i])
plt.show()
Eur_data["RA"][0]
RAS_DECS = SkyCoord(Eur_data["RA"], Eur_data["DEC"], unit=(u.deg, u.deg),frame='icrs')
RAS = RAS_DECS.ra.deg
DECS= RAS_DECS.dec.deg
RA_mid = RAS[RAS.shape[0]/2]
DEC_mid= DECS[RAS.shape[0]/2]
print "mid RA: ",RA_mid,"deg ---- mid DEC: ",DEC_mid, "deg"
EU_im = SW.SkyView.get_images(position=str(RA_mid)+" "+str(DEC_mid),
radius = 1.*u.deg,
survey = ["DSS"])
EU_im2 = SW.SkyView.get_images(position=str(RAS[0])+" "+str(DECS[0]),
radius = 11./60.*u.deg,
survey = ["DSS"])
IM = EU_im[0][0].data
wcs = WCS(EU_im[0][0].header)
IM2 = EU_im2[0][0].data
wcs2 = WCS(EU_im2[0][0].header)
plt.figure(figsize = (12,8))
### left image
ax = plt.subplot(121, projection = wcs)
ax.imshow(IM, cmap = "Greys")
ax.plot(Eur_data["RA"][::10], Eur_data["DEC"][::10], ".",
transform = ax.get_transform("world"), label = "Europa")
for i in range(len(TIME))[::50]:
ax.text(Eur_data["RA"][i]-0.02, Eur_data["DEC"][i]-0.03, TIME[i],
transform = ax.get_transform("world"))
### right image
ax2 = plt.subplot(122, projection = wcs2)
ax2.imshow(IM2,vmax = IM2.mean()+8.*IM2.std())
ax2.plot(Eur_data["RA"][::10][:3], Eur_data["DEC"][::10][:3], "--o",
transform = ax2.get_transform("world"), color = "w", label = "Europa")
ax2.text(Eur_data["RA"][0]+0.01, Eur_data["DEC"][0]-0.015, TIME[0],
transform = ax2.get_transform("world"), color = "w", fontsize = 16)
ax.legend()
ax2.legend()
ax.set_ylabel(r"DEC $[^{\circ}]$")
ax.set_xlabel(r"RA $[^{\circ}]$")
ax2.set_ylabel(r"DEC $[^{\circ}]$")
ax2.set_xlabel(r"RA $[^{\circ}]$")
ax.set_title( r"FOV : $1^{\circ}$" , loc="right")
ax2.set_title(r"FOV : $11^{\prime}$", loc="right")
plt.grid(True)
plt.show()
result_table = Simbad.query_region(str(RA_mid)+" "+str(DEC_mid), radius=0.7 * u.deg)
result_table
result_table
TCOORD = RAS_DECS = SkyCoord(result_table["RA"], result_table["DEC"], unit=(u.hour, u.deg),frame='icrs')
SRA = TCOORD.ra.deg
SDEC= TCOORD.dec.deg
SRA[0]
plt.figure(figsize = (5,4))
ax = plt.subplot(111, projection = wcs)
ax.imshow(IM, cmap = "Greys")
ax.scatter(SRA, SDEC, facecolors='none' ,
edgecolor="red",
transform = ax.get_transform("world"),
label ="Simbad Sources",
alpha = 0.4)
ax.plot(Eur_data["RA"][::10], Eur_data["DEC"][::10],
".",
transform = ax.get_transform("world"),
label = "Europa")
for i in range(len(TIME))[::50]:
ax.text(Eur_data["RA"][i]-0.02, Eur_data["DEC"][i]-0.03, TIME[i],
transform = ax.get_transform("world"))
ax.legend(loc = "lower right")
ax.set_ylabel(r"DEC $[^{\circ}]$")
ax.set_xlabel(r"RA $[^{\circ}]$")
ax.set_title(r"19/07/35 to 08/02 - FOV : $11^{\prime}$", loc="right")
plt.xlim([0,IM.shape[1]])
plt.ylim([0,IM.shape[0]*0.7])
plt.grid(True)
plt.show()