3333import numpy as np
3434
3535import gnss_lib_py .utils .constants as consts
36+ from gnss_lib_py .parsers .navdata import NavData
3637
3738EPSILON = 1e-7
3839
@@ -468,7 +469,7 @@ def ecef_to_el_az(rx_pos, sv_pos):
468469
469470 return el_az
470471
471- def add_el_az (navdata , receiver_state ):
472+ def add_el_az (navdata , receiver_state , inplace = False ):
472473 """Adds elevation and azimuth to NavData object.
473474
474475 Parameters
@@ -481,6 +482,19 @@ def add_el_az(navdata, receiver_state):
481482 Either estimated or ground truth receiver position in ECEF frame
482483 in meters as an instance of the NavData class with the
483484 following rows: ``x_*_m``, ``y_*_m``, ``z_*_m``, ``gps_millis``.
485+ inplace : bool
486+ If false (default) will add elevation and azimuth to a new
487+ NavData instance. If true, will add elevation and azimuth to the
488+ existing NavData instance.
489+
490+ Returns
491+ -------
492+ data_el_az : None or gnss_lib_py.parsers.navdata.NavData
493+ If inplace is True, adds ``el_sv_deg`` and ``az_sv_deg`` to
494+ the input navdata. If inplace is False, returns ``el_sv_deg``
495+ and ``az_sv_deg`` in a new NavData instance along with
496+ ``gps_millis`` and the corresponding satellite and receiver
497+ rows.
484498
485499 """
486500
@@ -513,5 +527,22 @@ def add_el_az(navdata, receiver_state):
513527 else :
514528 sv_el_az = np .hstack ((sv_el_az ,timestep_el_az .T ))
515529
516- navdata ["el_sv_deg" ] = sv_el_az [0 ,:]
517- navdata ["az_sv_deg" ] = sv_el_az [1 ,:]
530+ if inplace :
531+ navdata ["el_sv_deg" ] = sv_el_az [0 ,:]
532+ navdata ["az_sv_deg" ] = sv_el_az [1 ,:]
533+ return None
534+
535+ data_el_az = NavData ()
536+ data_el_az ["gps_millis" ] = navdata ["gps_millis" ]
537+ data_el_az ["gnss_id" ] = navdata ["gnss_id" ]
538+ data_el_az ["sv_id" ] = navdata ["sv_id" ]
539+ data_el_az ["x_sv_m" ] = navdata ["x_sv_m" ]
540+ data_el_az ["y_sv_m" ] = navdata ["y_sv_m" ]
541+ data_el_az ["z_sv_m" ] = navdata ["z_sv_m" ]
542+ data_el_az [rx_idxs ["x_*_m" ][0 ]] = receiver_state [rx_idxs ["x_*_m" ][0 ]]
543+ data_el_az [rx_idxs ["y_*_m" ][0 ]] = receiver_state [rx_idxs ["y_*_m" ][0 ]]
544+ data_el_az [rx_idxs ["z_*_m" ][0 ]] = receiver_state [rx_idxs ["z_*_m" ][0 ]]
545+ data_el_az ["el_sv_deg" ] = sv_el_az [0 ,:]
546+ data_el_az ["az_sv_deg" ] = sv_el_az [1 ,:]
547+
548+ return data_el_az
0 commit comments