attitude_plotter: Module to visualize satellite instrument pointing direction — cavsiopy 1.1.1 documentation

# attitude_plotter: Module to visualize satellite instrument pointing direction

Plotting routines for 2D and 3D look directions of the instrument onboard spacecraft.

@author: ceren

class attitude_plotter.MyAxes3D(baseObject, sides_to_draw)

  Class to draw 3D grids for the counter-clockwise angles of 3D plots.

  draw(renderer)

    Draw the Artist (and its children) using the given renderer.

    This has no effect if the artist is not visible (.Artist.get_visible returns False).

    renderer : .RendererBase subclass.

    This method is overridden in the Artist subclasses.

  set(*, adjustable=<UNSET>, agg_filter=<UNSET>, alpha=<UNSET>, anchor=<UNSET>, animated=<UNSET>, aspect=<UNSET>, autoscale_on=<UNSET>, autoscalex_on=<UNSET>, autoscaley_on=<UNSET>, autoscalez_on=<UNSET>, axes_locator=<UNSET>, axisbelow=<UNSET>, box_aspect=<UNSET>, clip_box=<UNSET>, clip_on=<UNSET>, clip_path=<UNSET>, facecolor=<UNSET>, frame_on=<UNSET>, gid=<UNSET>, in_layout=<UNSET>, label=<UNSET>, mouseover=<UNSET>, navigate=<UNSET>, path_effects=<UNSET>, picker=<UNSET>, position=<UNSET>, proj_type=<UNSET>, prop_cycle=<UNSET>, rasterization_zorder=<UNSET>, rasterized=<UNSET>, sketch_params=<UNSET>, snap=<UNSET>, some_features_visibility=<UNSET>, subplotspec=<UNSET>, title=<UNSET>, transform=<UNSET>, url=<UNSET>, visible=<UNSET>, xbound=<UNSET>, xlabel=<UNSET>, xlim=<UNSET>, xlim3d=<UNSET>, xmargin=<UNSET>, xscale=<UNSET>, xticklabels=<UNSET>, xticks=<UNSET>, ybound=<UNSET>, ylabel=<UNSET>, ylim=<UNSET>, ylim3d=<UNSET>, ymargin=<UNSET>, yscale=<UNSET>, yticklabels=<UNSET>, yticks=<UNSET>, zbound=<UNSET>, zlabel=<UNSET>, zlim=<UNSET>, zmargin=<UNSET>, zorder=<UNSET>, zscale=<UNSET>, zticklabels=<UNSET>, zticks=<UNSET>)

    Set multiple properties at once.

    Supported properties are

    Properties:

      adjustable: {‘box’, ‘datalim’} agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array and two offsets from the bottom left corner of the image alpha: scalar or None anchor: (float, float) or {‘C’, ‘SW’, ‘S’, ‘SE’, ‘E’, ‘NE’, …} animated: bool aspect: {‘auto’, ‘equal’, ‘equalxy’, ‘equalxz’, ‘equalyz’} autoscale_on: bool autoscalex_on: unknown autoscaley_on: unknown autoscalez_on: unknown axes_locator: Callable[[Axes, Renderer], Bbox] axisbelow: bool or ‘line’ box_aspect: 3-tuple of floats or None clip_box: .Bbox clip_on: bool clip_path: Patch or (Path, Transform) or None facecolor or fc: color figure: .Figure frame_on: bool gid: str in_layout: bool label: object mouseover: bool navigate: bool navigate_mode: unknown path_effects: .AbstractPathEffect picker: None or bool or float or callable position: [left, bottom, width, height] or ~matplotlib.transforms.Bbox proj_type: {‘persp’, ‘ortho’} prop_cycle: unknown rasterization_zorder: float or None rasterized: bool sketch_params: (scale: float, length: float, randomness: float) snap: bool or None some_features_visibility: unknown subplotspec: unknown title: str transform: .Transform url: str visible: bool xbound: unknown xlabel: str xlim or xlim3d: (bottom: float, top: float) xlim3d: (bottom: float, top: float) xmargin: float greater than -0.5 xscale: unknown xticklabels: unknown xticks: unknown ybound: unknown ylabel: str ylim or ylim3d: (bottom: float, top: float) ylim3d: (bottom: float, top: float) ymargin: float greater than -0.5 yscale: unknown yticklabels: unknown yticks: unknown zbound: unknown zlabel: unknown zlim or zlim3d: unknown zmargin: float greater than -0.5 zorder: float zscale: unknown zticklabels: unknown zticks: unknown

attitude_plotter.attitude_2d_altitude(time_array, extent, x, y, z, Px, V, inst_name, target_name, x_axis='lon', step=60)
  time_arraydatetime.datetime

    experiment time interval as datetime array.

  extentlist

    extent = [Lonmin, Lonmax, Altmin, Altmax].

  xnumpy.ndarray[float]

    spacecraft longitude(degrees).

  ynumpy.ndarray[float]

    spacecraft latitude (degrees).

  znumpy.ndarray[float]

    spacecraft altitude (km).

  Pxfloat

    Location of the target on the x_axis (lat or lon) (degrees).

  Vnumpy.ndarray[float]

    vectors to be plotted (need to be in ENU coordinate system).

  inst_namestr

    Instrument name for labels.

  target_namestr

    Target name for labels.

  x_axisstr, optional

    Parameter to be plotted on the x-axis (lat or lon). The default is ‘lon’.

  stepint

    Time in seconds between pointing direction vectors. The default is 60.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.

attitude_plotter.attitude_2d_on_map(time_array, extent, x, y, z, Px, Py, V, target_name, inst_name, index_ca, step=60)

  Plots the spacecraft trajectory and instrument pointing direction vectors on map.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  extentlist

    extent = [Lonmin, Lonmax, Latmin, Latmax].

  xnumpy.ndarray[float]

    spacecraft longitude(degrees).

  ynumpy.ndarray[float]

    spacecraft latitude (degrees).

  znumpy.ndarray[float]

    spacecraft altitude (km).

  Pxfloat

    geodetic longitude of the target.

  Pyfloat

    geodetic latitude of the target.

  Vnumpy.ndarray[float]

    vectors to be plotted (need to be in ENU coordinate system).

  inst_namestr

    Instrument name for labels.

  target_namestr

    Target name for labels.

  index_caint

    index of the point of closest approach. can be found by using miscellaneous.find_index

  stepint

    Time in seconds between pointing direction vectors. The default is 60.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.

attitude_plotter.attitude_3d_connect_to_subpoint(title, time_array, Px, Py, Pz, x, y, z, target_name, *V, step=60, vc=['red', '#12e193', 'red', '#12e193', 'black', '#0165fc'], arrlen=[0.25, 0.25, 0.25, 0.25, 0.75, 0.75], ls=['solid', 'solid', 'solid', 'solid', 'solid', 'solid'], labels=['$Dipole_{1}$', '$Dipole_{2}$', 'Boresight', '$Ray_{LOS}$'], markers=['_', '$--$', '$\\longrightarrow$', '$\\longrightarrow$', 'H', 'H'], legend_colors=['red', '#12e193', 'black', '#0165fc', 'None', 'black'], legend_edgecolors=['red', '#12e193', 'black', '#0165fc', 'black', 'black'], loc='upper center')

  Plotting function to show projected look direction of RRI on the ground. The defaults for the keywords are based on RRI plots.

  titlestr

    plot title.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  Pxfloat

    geodetic longitude of the target.

  Pyfloat

    geodetic latitude of the target.

  Pzfloat

    altitude of the target.

  xnumpy.ndarray[float]

    spacecraft longitude.

  ynumpy.ndarray[float]

    spacecraft latitude.

  znumpy.ndarray[float]

    spacecraft altitude.

  target_namestr

    target name.

  *Vnumpy.ndarray

    vectors to be plotted (need to be in ENU coordinate system). vec_args = M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr

  stepfloat, optional

    Step in seconds to plot vectors. The default is 60.

  vclist, optional

    vector colors. The default is [‘red’,’#12e193’, ‘red’, ‘#12e193’, ‘black’, ‘#0165fc’].

  arrlenTYPE, optional

    DESCRIPTION. The default is [0.25, 0.25, 0.25, 0.25, 0.75, 0.75].

  lslist, optional

    linestyles for vectors. The default is [‘solid’, ‘solid’, ‘solid’, ‘solid’,’solid’, ‘solid’].

  labelslist, optional

    vector labels for legend. The default is [‘$Dipole_{1}$’,’$Dipole_{2}$’,’Boresight’’$Ray_{LOS}$’].

  markerslist, optional

    legend markers. The default is [‘_’,’$–$’,r’$longrightarrow$’, r’$longrightarrow$’,’H’,’H’].

  legend_colorslist, optional

    colors for labels in the legend. The default is [‘red’, ‘#12e193’,’black’,’#0165fc’ ,’None’, ‘black’].

  legend_edgecolorslist, optional

    edgecolors for labels in the legend. The default is [‘red’, ‘#12e193’,’black’,’#0165fc’ ,’black’, ‘black’].

  locstr

    legend location. uses same keywords as matplotlib legend. The default is ‘upper center’.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  V = M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr connect_to_subpoint= ap.attitude_3d_connect_to_subpoint(title, time_array, pLon, pLat, OH, Lon, Lat, Alt,

  > ‘Ottawa’, *V, step = 60)

attitude_plotter.attitude_3d_connect_to_target(title, time_array, Px, Py, Pz, x, y, z, target_name, *V, step=60, vc=['red', '#12e193', 'red', '#12e193', 'black', 'blue'], ls=['solid', 'solid', 'solid', 'solid', 'solid', 'solid'], lw=[2.5, 2.5, 2.5, 2.5, 2, 2], arrlen=[0.5, 0.5, 0.5, 0.5, 1, 1], labels=['$Dipole_{1}$', '$Dipole_{2}$', 'Boresight', '$Ray_{LOS}$', 'N', 'S'], markers=['_', '_', '$\\longrightarrow$', '$\\longrightarrow$', 'H', 'H'], colors=['red', '#12e193', 'black', 'blue', 'None', 'black'], edgecolors=['red', '#12e193', 'black', 'blue', 'black', 'black'], arrowhead=[0.01, 0.01, 0.01, 0.01, 0.25, 0.25], sct_kwargs={'alpha': 1, 'c': 'lightgrey', 'edgecolor': 'black', 'marker': '*', 's': 180}, loc='upper center')

  Plotting function in 3D to connect the spacecraft location with the target. The defaults for the keywords are based on RRI plots.

  titlestr

    plot title.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  Pxfloat

    geodetic longitude of the target.

  Pyfloat

    geodetic latitude of the target.

  Pzfloat

    altitude of the target (km).

  xnumpy.ndarray

    spacecraft longitude.

  ynumpy.ndarray

    spacecraft latitude.

  znumpy.ndarray

    spacecraft altitude.

  target_namestr

    target name.

  *Vnumpy.ndarray

    vectors to be plotted (need to be in ENU coordinate system). vec_args = M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr

  stepint

    time between the vectors. The default is 60. (60 seconds)

  vclist, optional

    vector colors. The default is [‘red’, ‘#12e193’, ‘red’, ‘#12e193’, ‘black’, ‘blue’].

  lslist, optional

    linestyles for vectors. The default is [‘solid’, ‘solid’, ‘solid’, ‘solid’, ‘solid’, ‘solid’].

  lwlist, optional

    linewidth of vectors. The default is [2.5, 2.5, 2.5, 2.5, 2, 2].

  arrlenlist, optional

    length for vectors. The default is [0.5, 0.5, 0.5, 0.5, 1, 1].

  labelslist, optional

    vector labels for legend. The default is [‘$Dipole_{1}$’, ‘$Dipole_{2}$’, ‘Boresight’, ‘$Ray_{LOS}$’].

  markerslist, optional

    legend markers. The default is [‘_’,’_’, r’$longrightarrow$’, r’$longrightarrow$’].

  colorslist, optional

    colors for labels in the legend. The default is [‘red’, ‘#12e193’, ‘black’, ‘blue’].

  edgecolorslist, optional

    edgecolors for labels in the legend. The default is [‘red’, ‘#12e193’, ‘black’,’blue’].

  arrowheadlist, optional

    how large is the arrow head. The default is [0.01, 0.01, 0.01, 0.01, 0.25, 0.25].

  sct_kwargsdict, optional

    target marker specifics.The default is {‘alpha’: 1, ‘edgecolor’:’black’, ‘c’: ‘lightgrey’, ‘marker’: ‘*’, ‘s’: 180}.

  locstr, optional

    Location of the legend. The default is ‘upper center’.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.

  vec_args= M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr connected_plot, ax = ap.attitude_3d_connect_to_target(title_vec, time_array_1sec, pLon, pLat, pH, Lon, Lat, Alt, target_name, *vec_args, step = 45)

attitude_plotter.attitude_3d_ground_quiver(title, time_array, Px, Py, Pz, x, y, z, dir_vec, target_name, *V, step=60, vc=['red', '#12e193', 'red', '#12e193', 'black', '#0165fc'], arrlen=[0.25, 0.25, 0.25, 0.25, 0.75, 0.75], ls=['solid', 'solid', 'solid', 'solid', 'solid', 'solid'], labels=['$Dipole_{1}$', '$Dipole_{2}$', 'Boresight', '$Ray_{LOS}$'], markers=['_', '$--$', '$\\longrightarrow$', '$\\longrightarrow$', 'H', 'H'], legend_colors=['red', '#12e193', 'black', '#0165fc', 'None', 'black'], legend_edgecolors=['red', '#12e193', 'black', '#0165fc', 'black', 'black'], loc='upper center')

  Plotting function to show projected look direction of RRI on the ground. The defaults for the keywords are based on RRI plots.

  titlestr

    plot title.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  Pxfloat

    geodetic longitude of the target.

  Pyfloat

    geodetic latitude of the target.

  Pzfloat

    altitude of the target.

  xnumpy.ndarray[float]

    spacecraft longitude.

  ynumpy.ndarray[float]

    spacecraft latitude.

  znumpy.ndarray[float]

    spacecraft altitude.

  dir_vecnumpy.ndarray[float]

    look direction vector in ENU.

  target_namestr

    target name.

  *Vnumpy.ndarray

    vectors to be plotted (need to be in ENU coordinate system). vec_args = M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr

  stepfloat, optional

    Step in seconds to plot vectors. The default is 60.

  vclist, optional

    vector colors. The default is [‘red’,’#12e193’, ‘red’, ‘#12e193’, ‘black’, ‘#0165fc’].

  arrlenTYPE, optional

    DESCRIPTION. The default is [0.25, 0.25, 0.25, 0.25, 0.75, 0.75].

  lslist, optional

    linestyles for vectors. The default is [‘solid’, ‘solid’, ‘solid’, ‘solid’,’solid’, ‘solid’].

  labelslist, optional

    vector labels for legend. The default is [‘$Dipole_{1}$’,’$Dipole_{2}$’,’Boresight’’$Ray_{LOS}$’].

  markerslist, optional

    legend markers. The default is [‘_’,’$–$’,r’$longrightarrow$’, r’$longrightarrow$’,’H’,’H’].

  legend_colorslist, optional

    colors for labels in the legend. The default is [‘red’, ‘#12e193’,’black’,’#0165fc’ ,’None’, ‘black’].

  legend_edgecolorslist, optional

    edgecolors for labels in the legend. The default is [‘red’, ‘#12e193’,’black’,’#0165fc’ ,’black’, ‘black’].

  locstr

    legend location. uses same keywords as matplotlib legend. The default is ‘upper center’.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.

  V = M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr ground_quiver_3d = op.attitude_3d_ground_quiver(title, time_array, pLon, pLat, OH, Lon, Lat, Alt, RRI_enu,

  > ‘Ottawa’, *V, step = 60)

attitude_plotter.display_observation_geometry(title, time_array, Px, Py, Pz, x, y, z, target_name, *V, step=60, vc=['red', '#12e193', 'red', '#12e193', 'black', 'blue'], ls=['solid', 'solid', 'solid', 'solid', 'solid', 'solid'], lw=[1.5, 1.5, 1.5, 1.5, 1.5, 1.5], arrlen=[0.5, 0.5, 0.5, 0.5, 0.75, 1], labels=['$Dipole_{1}$', '$Dipole_{2}$', 'Boresight', '$Ray_{LOS}$'], markers=['_', '_', '$\\longrightarrow$', '$\\longrightarrow$'], colors=['red', '#12e193', 'black', 'blue'], edgecolors=['red', '#12e193', 'black', 'blue'], arrowhead=[0.01, 0.01, 0.01, 0.01, 0.45, 0.45], sct_kwargs={'alpha': 1, 'c': 'lightgrey', 'edgecolor': 'black', 'marker': '*', 's': 180}, loc='upper center')

  Plotting function to display observation geometry. The defaults for the keywords are based on RRI plots.

  titlestr

    plot title.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  Pxfloat

    geodetic longitude of the target.

  Pyfloat

    geodetic latitude of the target.

  Pzfloat

    altitude of the target.

  xnumpy.ndarray[float]

    spacecraft longitude(degrees).

  ynumpy.ndarray[float]

    spacecraft latitude (degrees).

  znumpy.ndarray[float]

    spacecraft altitude (km).

  target_namestr

    target name.

  *Vnumpy.ndarray[float]

    vectors to be plotted (need to be in ENU coordinate system). vec_args = M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr

  stepint

    time between the vectors. The default is 60. (60 seconds)

  vclist, optional

    vector colors. The default is [‘red’, ‘#12e193’, ‘red’, ‘#12e193’, ‘black’, ‘blue’].

  lslist, optional

    linestyles for vectors. The default is [‘solid’, ‘solid’, ‘solid’, ‘solid’, ‘solid’, ‘solid’].

  lwlist, optional

    linewidth of vectors. The default is [1.5, 1.5, 1.5, 1.5, 1.5, 1.5].

  arrlenlist, optional

    length for vectors. The default is [.5, .5, .5, .5, .75, 1].

  labelslist, optional

    vector labels for legend. The default is [‘$Dipole_{1}$’, ‘$Dipole_{2}$’, ‘Boresight’, ‘$Ray_{LOS}$’].

  markerslist, optional

    legend markers. The default is [‘_’,’_’, r’$longrightarrow$’, r’$longrightarrow$’].

  colorslist, optional

    colors for labels in the legend. The default is [‘red’, ‘#12e193’, ‘black’, ‘blue’].

  edgecolorslist, optional

    edgecolors for labels in the legend. The default is [‘red’, ‘#12e193’, ‘black’,’blue’].

  arrowheadlist, optional

    how large is the arrow head. The default is [0.01, 0.01, 0.01, 0.01, 0.45, 0.45].

  sct_kwargsdict, optional

    target marker specifics.The default is {‘alpha’: 1, ‘edgecolor’:’black’, ‘c’: ‘lightgrey’, ‘marker’: ‘*’, ‘s’: 180}.

  locstr

    legend location. uses same keywords as matplotlib legend. The default is ‘upper right’.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.

  vec_args= M1_enu, M3_enu, M2_enu, M4_enu, RRI_enu, los_enu_arr connected_plot = op.display_observation_geometry(title_vec, time_array_1sec, pLon, pLat, OH, Lon, Lat, Alt, ‘Ottawa’, *vec_args, n=45)

attitude_plotter.earth_radius_at_latitude(latitude)

  Function to calculate Earth radius at latitude to correctly scale the ellipse height for FOV plotter.

  latitudefloat

    Geodetic latitude (degrees).

  Rfloat

    Earth’s radius in meters.

attitude_plotter.fov_plotter(extent, time_array, x, y, z, fov_deg, px, py, step=90, inst_name='FAI', target_name='ICEBEAR')

  Plot the FOV of the instrument for Nadir look directions. Caution: This code ONLY works for NADIR pointing instruments.

  extentlist

    [Lonmin, Lonmax, Latmin, Latmax].

  time_arraynumpy.ndarray[datetime]

    Experiment time interval.

  xnumpy.ndarray[float]

    Spacecraft longitude (degrees).

  ynumpy.ndarray[float]

    Spacecraft latitude (degrees).

  znumpy.ndarray[float]

    Spacecraft altitude (km).

  fov_degfloat

    Field-of-view angle (degrees).

  pxfloat

    Target longitude (degrees).

  pyfloat

    Target latitude (degrees).

  step: float, optional

    Time interval in seconds to plot the inst. vector.The default is 90.

  inst_namestring

    Name of the instrument. The default is ‘FAI’.

  target_namestring

    Target name. The default is ‘ICEBEAR’.

  fig: figure.Figure

    Figure object of matplotlib.figure module.

  axTYPE

    DESCRIPTION.

attitude_plotter.plot_attitude_accuracy(file_RRI)

  Plots the attitude accuracy using the accuracy data in RRI data files. 0=Dropout, 1=Rough, 2=Coarse, 3=Moderate, 4=Fine, 9=NaN.

  file_RRIstr

    Filename of the RRI data file including the path.

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.

attitude_plotter.plot_slew_rri(ax, ylim_min, ylim_max, panel_number, time_array, slew, slew_angle, cb_axis='no', time='no')

  Function to plot the temporal change of slew accuracy for the criterion set by slew_angle.

  axaxes

    Axes object of matplotlib.

  ylim_minfloat

    DESCRIPTION.

  ylim_maxfloat

    DESCRIPTION.

  panel_numberint

    panel number in slew criteria plot.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  slewnumpy.ndarray[float]

    slew parameter. Can be [-2, -1, -0.5, 0, 0.5, 1, 2]

  slew_anglefloat

    criteria for slew (degrees).

  cb_axisstr, optional

    color bar axes display (‘yes’/’no’). The default is ‘no’.

  timestr, optional

    x-axis time display (‘yes’/’no’). The default is ‘no’.

  None.

attitude_plotter.trajectory_plotter_2d_map(time_array, extent, x, y, z, Px, Py, XV, target_name, index_ca)

  Plots the spacecraft trajectory on map. Prints the trajectory information on screen: altitude increasing/decreasing spacecraft going towards: NE, SW, NW, SE.

  time_arraydatetime.datetime

    experiment time interval as datetime array.

  extentTYPE

    DESCRIPTION.

  xnumpy.ndarray[float]

    spacecraft longitude(degrees).

  ynumpy.ndarray[float]

    spacecraft latitude (degrees).

  znumpy.ndarray[float]

    spacecraft altitude (km).

  Pxfloat

    geodetic longitude of the target.

  Pyfloat

    geodetic latitude of the target.

  target_namestr

    Target name for labels.

  index_caint

    index of the point of closest approach. can be found by using miscellaneous.find_index

  figfigure.Figure

    Figure object of matplotlib.figure module.

  axaxes

    Axes object of matplotlib.