Notebook

これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。

HTML ファイル生成日時: 2024/11/21 17:40:55.112 (台灣標準時)

astroplan の使い方 (11): 天体のエアマスの変化の図を作る

astroplan を使って、与えられた場所と年月日におけるエアマスの変化の図を 作るには以下のようにすればよいようでござる。


#!/usr/pkg/bin/python3.9

#
# Time-stamp: <2022/07/03 12:22:22 (CST) daisuke>
#

# importing argparse module
import argparse

# importing pathlib module
import pathlib

# importing sys module
import sys

# importing numpy module
import numpy

# importing astropy module
import astropy.units
import astropy.time
import astropy.coordinates

# importing astroplan module
import astroplan
import astroplan.plots

# importing matplotlib module
import matplotlib.figure
import matplotlib.backends.backend_agg

# units
unit_m    = astropy.units.m
unit_rad  = astropy.units.rad
unit_deg  = astropy.units.deg
unit_hour = astropy.units.hour

# constructing parser object
desc   = "making an airmass plot"
parser = argparse.ArgumentParser (description=desc)

# adding arguments
parser.add_argument ('-l', '--longitude', default='+121d11m12s', \
                     help='longitude of observing site in format "+121d11m12s"')
parser.add_argument ('-b', '--latitude', default='+24d58m12s', \
                     help='latitude of observing site in format "+24d58m12s"')
parser.add_argument ('-a', '--altitude', type=float, default=151.6, \
                     help='altitude above sea-level in metre')
parser.add_argument ('-t', '--datetime', default='2000-01-01T12:00:00.000', \
                     help='date/time in UT in "YYYY-MM-DDThh:mm:ss.sss" format')
parser.add_argument ('-o', '--output', default='airmass.png', \
                     help='output file name (EPS, PDF, PNG, or PS file)')
parser.add_argument ('target', nargs='+', default='Vega', \
                     help='names of targets')

# command-line argument analysis
args = parser.parse_args ()

# input parameters
site_lon     = args.longitude
site_lat     = args.latitude
site_alt     = args.altitude * unit_m
datetime_str = args.datetime
file_output  = args.output
list_target  = args.target

# making pathlib object
path_output = pathlib.Path (file_output)
if (path_output.exists ()):
    # printing message
    print ("ERROR: output file '%s' exists." % file_output)
    # exit
    sys.exit ()
if not ( (path_output.suffix == '.eps') or (path_output.suffix == '.pdf') \
         or (path_output.suffix == '.png') or (path_output.suffix == '.ps') ):
    # printing message
    print ("ERROR: output file must be either EPS, PDF, PNG, or PS.")
    # exit
    sys.exit ()

# printing input parameters
print ("#")
print ("# input parameters")
print ("#")
print ("#  Location:")
print ("#   longitude =", site_lon)
print ("#   latitude  =", site_lat)
print ("#   altitude  =", site_alt)
print ("#  Date/Time:")
print ("#   date/time (UT) =", datetime_str)
print ("#  Targets:")
for target in list_target:
    print ("#   %s" % target)
print ("#")

# location object
location = astropy.coordinates.EarthLocation.from_geodetic \
    (site_lon, site_lat, site_alt)

# observer object
observer = astroplan.Observer (location=location, name="observer", \
                               timezone="UTC")

# time object
datetime = astropy.time.Time (datetime_str, scale='utc')
datetime = datetime + numpy.linspace (-8, +8, 100) * unit_hour

# making objects "fig" and "ax"
fig = matplotlib.figure.Figure ()
matplotlib.backends.backend_agg.FigureCanvasAgg (fig)
ax = fig.add_subplot (111)

# plotting
box = ax.get_position ()
ax.set_position ([box.x0, box.y0, box.width * 0.83, box.height])

# processing each target
for i in range ( len (list_target) ):
    # object
    target = list_target[i]
    obj = astroplan.FixedTarget.from_name (target)
    if (i == len (list_target) - 1):
        astroplan.plots.plot_airmass (obj, observer, datetime, ax=ax, \
                                      brightness_shading=True, max_airmass=2.5)
    else:
        astroplan.plots.plot_airmass (obj, observer, datetime, ax=ax)

# plotting
ax.grid ()
ax.legend (bbox_to_anchor=(1.05, 1.00), loc='upper left', shadow=True)

# saving the plot into a file
fig.savefig (file_output, bbox_inches="tight", dpi=225)

実行してみると、以下のようになるでござる。


% ./astroplan_sample_14.py -h
usage: astroplan_sample_14.py [-h] [-l LONGITUDE] [-b LATITUDE] [-a ALTITUDE]
                              [-t DATETIME] [-o OUTPUT]
                              target [target ...]

making an airmass plot

positional arguments:
  target                names of targets

optional arguments:
  -h, --help            show this help message and exit
  -l LONGITUDE, --longitude LONGITUDE
                        longitude of observing site in format "+121d11m12s"
  -b LATITUDE, --latitude LATITUDE
                        latitude of observing site in format "+24d58m12s"
  -a ALTITUDE, --altitude ALTITUDE
                        altitude above sea-level in metre
  -t DATETIME, --datetime DATETIME
                        date/time in UT in "YYYY-MM-DDThh:mm:ss.sss" format
  -o OUTPUT, --output OUTPUT
                        output file name (EPS, PDF, PNG, or PS file)

% ./astroplan_sample_14.py -t 2022-07-03T16:00:00 -o airmass_20220703.png \
? Arcturus Vega Altair Deneb Antares Fomalhaut
#
# input parameters
#
#  Location:
#   longitude = +121d11m12s
#   latitude  = +24d58m12s
#   altitude  = 151.6 m
#  Date/Time:
#   date/time (UT) = 2022-07-03T16:00:00
#  Targets:
#   Arcturus
#   Vega
#   Altair
#   Deneb
#   Antares
#   Fomalhaut
#
/usr/pkg/lib/python3.9/site-packages/astroplan/plots/time_dependent.py:194: UserWarning: linestyle is redundantly defined by the 'linestyle' keyword argument and the fmt string "-" (-> linestyle='-'). The keyword argument will take precedence.
  ax.plot_date(timetoplot.plot_date, masked_airmass, label=target_name, **style_kwargs)
/usr/pkg/lib/python3.9/site-packages/astroplan/plots/time_dependent.py:194: UserWarning: linestyle is redundantly defined by the 'linestyle' keyword argument and the fmt string "-" (-> linestyle='-'). The keyword argument will take precedence.
  ax.plot_date(timetoplot.plot_date, masked_airmass, label=target_name, **style_kwargs)
/usr/pkg/lib/python3.9/site-packages/astroplan/plots/time_dependent.py:194: UserWarning: linestyle is redundantly defined by the 'linestyle' keyword argument and the fmt string "-" (-> linestyle='-'). The keyword argument will take precedence.
  ax.plot_date(timetoplot.plot_date, masked_airmass, label=target_name, **style_kwargs)
/usr/pkg/lib/python3.9/site-packages/astroplan/plots/time_dependent.py:194: UserWarning: linestyle is redundantly defined by the 'linestyle' keyword argument and the fmt string "-" (-> linestyle='-'). The keyword argument will take precedence.
  ax.plot_date(timetoplot.plot_date, masked_airmass, label=target_name, **style_kwargs)
/usr/pkg/lib/python3.9/site-packages/astroplan/plots/time_dependent.py:194: UserWarning: linestyle is redundantly defined by the 'linestyle' keyword argument and the fmt string "-" (-> linestyle='-'). The keyword argument will take precedence.
  ax.plot_date(timetoplot.plot_date, masked_airmass, label=target_name, **style_kwargs)
/usr/pkg/lib/python3.9/site-packages/astroplan/plots/time_dependent.py:194: UserWarning: linestyle is redundantly defined by the 'linestyle' keyword argument and the fmt string "-" (-> linestyle='-'). The keyword argument will take precedence.
  ax.plot_date(timetoplot.plot_date, masked_airmass, label=target_name, **style_kwargs)
% ls -l airmass_20220703.png 
-rw-r--r--  1 daisuke  taiwan  174496 Jul  3 12:27 airmass_20220703.png
% feh -dF airmass_20220703.png

fig_202207/airmass_20220703.png

参考文献



Frequently accessed files

  1. Computer___Python/20220518_0.html
  2. Computer___Network/20230726_00.html
  3. Misc___Taiwan/20240207_00.html
  4. Computer___Network/20230516_00.html
  5. Computer___FreeBSD/20220621_0.html
  6. Computer___Python/20220715_0.html
  7. Computer___Network/20230508_00.html
  8. Food___Taiwan/20220429_0.html
  9. Computer___NetBSD/20220817_3.html
  10. Computer___Python/20220410_0.html
  11. Computer___Network/20240416_00.html
  12. Computer___Network/20240130_00.html
  13. Computer___Debian/20210223_1.html
  14. Computer___NetBSD/20230119_00.html
  15. Computer___Python/20210124_0.html
  16. Computer___Python/20221013_0.html
  17. Computer___NetBSD/20220818_1.html
  18. Computer___NetBSD/20220428_0.html
  19. Science___Math/20220420_0.html
  20. Computer___NetBSD/20240101_02.html
  21. Computer___NetBSD/20220808_0.html
  22. Computer___TeX/20230503_00.html
  23. Computer___NetBSD/20230515_00.html
  24. Science___Astronomy/20220503_0.html
  25. Computer___NetBSD/20210127_0.html
  26. Computer___Python/20240101_00.html
  27. Computer___Network/20220413_1.html
  28. Computer___Python/20220816_1.html
  29. Computer___NetBSD/20210204_0.html
  30. Travel___Taiwan/20220809_2.html


HTML file generated by Kinoshita Daisuke.