geodezyx.gnss_edu package

Created on 12/08/2025 14:58:49

@author: psakic

Submodules

geodezyx.gnss_edu.compute_vmf1_values module

geodezyx.gnss_edu.download_VMF module

geodezyx.gnss_edu.gmf_function module

geodezyx.gnss_edu.gmf_function.gmf(dmjd=None, dlat=None, dlon=None, dhgt=None, zd=None)

Determine the Global Mapping Functions (GMF) for hydrostatic and wet components.

This function calculates mapping functions used in atmospheric delay modeling for satellite geodesy applications. The GMF is based on numerical weather model data and provides improved accuracy over earlier mapping functions.

Parameters:
  • dmjd (float) – Modified Julian Date.

  • dlat (float) – Ellipsoidal latitude in radians.

  • dlon (float) – Longitude in radians.

  • dhgt (float) – Height above sea level in meters.

  • zd (float) – Zenith distance in radians.

Returns:

  • gmfh (float) – Hydrostatic mapping function value.

  • gmfw (float) – Wet mapping function value.

References

Boehm, J., A.E. Niell, p. Tregoning, H. Schuh (2006), Global Mapping Functions (GMF): A new empirical mapping function based on numerical weather model data, Geoph. Res. Letters, Vol. 33, L07304, doi:10.1029/2005GL025545.

Notes

Original implementation by Johannes Boehm, 2005 August 30. Recursions for Legendre polynomials updated 2006 Aug. 14 (O. Montenbruck). Latitude changed to ellipsoidal latitude 2011 Jul. 21 (J. Boehm). Converted to Python by Zohreh Adavi (zohreh.adavi@tuwien.ac.at), 2023-02-20.

geodezyx.gnss_edu.gnss_edu module

Created on Tue Feb 11 16:39:34 2025

@author: snahmani

geodezyx.gnss_edu.gnss_edu.Sagnac_rotate_around_z(row)

Calcule la correction Sagnac pour les coordonnées satellites. Retourne un pd.Series avec les nouvelles colonnes X_sat_corr, Y_sat_corr, Z_sat_corr.

geodezyx.gnss_edu.gnss_edu.add_az_el_iono_columns(df, P_rnx_header, mynav)

Ajoute dans le DataFrame les colonnes Az (azimut en degrés), Ele (élévation en degrés) et d_ion1 (correction ionosphérique selon le modèle de Klobuchar).

Paramètres :
  • dfDataFrame contenant les colonnes ‘X_sat’, ‘Y_sat’, ‘Z_sat’ et ‘ind_ligne’.

    L’index doit être un MultiIndex (time, prn).

  • P_rnx_header : tableau ou liste contenant les coordonnées de la station (X, Y, Z)

  • mynav : objet de navigation contenant les attributs ion_alpha_gps et ion_beta_gps.

  • t : objet gpsdatetime (issu de gpst.gpsdatetime) pour la gestion des temps.

  • tools : module (par ex. gnsstoolbox.gnsstools) fournissant les fonctions toolAzEle et toolCartGeoGRS80.

  • klobuchar : module contenant la fonction klobuchar pour le calcul de la correction iono.

Retourne :
  • df : le DataFrame enrichi avec les colonnes ‘Az’, ‘Ele’ et ‘d_ion1’.

geodezyx.gnss_edu.gnss_edu.enrich_df_with_sat_positions(df, mysp3)

Pour chaque ligne du DataFrame df (avec un index composé de (epoch, prn)), calcule la position du satellite en prenant en compte le retard, l’effet relativiste et met à jour le DataFrame avec les colonnes X_sat, Y_sat, Z_sat, dte_sat et dRelat.

Parameters:
  • df (-) – pandas DataFrame dont l’index est (epoch, prn) et qui contient la colonne ‘C1’

  • mysp3 (-) – instance de l’objet d’orbite contenant la méthode calcSatCoord

  • t (-) – instance de gpst.gpsdatetime() utilisée pour la conversion des temps

Returns:

  • df enrichi avec les colonnes calculées.

geodezyx.gnss_edu.gnss_edu.get_approx_position(fichier)

Recherche la ligne contenant ‘APPROX POSITION XYZ’ dans le fichier et retourne les trois premières valeurs sous forme de numpy.array.

geodezyx.gnss_edu.gnss_edu.grep_file(pattern, filename)

Recherche un motif dans un fichier et retourne les lignes correspondantes.

geodezyx.gnss_edu.gnss_edu.load_and_clean_rinex(path)

Charge et nettoie un fichier RINEX d’observation.

Paramètres :
  • path : chemin vers le fichier RINEX.

Retourne :
  • dfDataFrame nettoyé, indexé par [‘epoch’, ‘prn’],

    et contenant une colonne ‘ind_ligne’ indiquant le numéro de ligne.

geodezyx.gnss_edu.gnss_edu.plot_residual_analysis(A, B, dP_est, figure_title=None, save_path=None, P_est=None, P_rnx_header=None, tools=None)
Calcule les résidus (v_est = B - A @ dP_est) et trace une figure contenant :
  1. La série temporelle des résidus (affichée en points)

  2. L’histogramme des résidus (nombre d’observations par bin)

  3. Le Q-Q Plot des résidus

  4. Un scatter plot des résidus en fonction des valeurs prédites

  5. Un encadré affichant quelques statistiques (moyenne, variance, écart-type, skewness, kurtosis)

  6. (Optionnel) Un encadré avec des informations supplémentaires sur la position : - Distance entre la position estimée et la position initiale du header RINEX - Coordonnées ENU locales calculées via tools.toolCartLocGRS80

Paramètres :
  • A : array-like, matrice des variables explicatives.

  • B : array-like, vecteur des observations.

  • dP_est : array-like, vecteur des paramètres estimés.

  • figure_title (optionnel) : str, titre global de la figure.

  • save_path (optionnel) : str, chemin complet (nom + extension) pour sauvegarder la figure.

  • P_est (optionnel) : array-like, position estimée (pour le calcul des informations supplémentaires).

  • P_rnx_header (optionnel) : array-like, position initiale extraite du header RINEX.

  • tools (optionnel) : module ou objet possédant la fonction toolCartLocGRS80.

Renvoie :
  • fig : l’objet Figure de matplotlib contenant l’ensemble des graphiques.

geodezyx.gnss_edu.gnss_edu.plot_series(df, col1, col2=None, coeff1=1.0, coeff2=1.0, seuil=3600, renderer='browser')

Affiche les séries temporelles pour chaque satellite. Si col2 est fourni, affiche la série : coeff1 * col1 - coeff2 * col2. Sinon, affiche la série de la colonne col1 directement. La série est découpée en segments lorsqu’un “trou” (écart > seuil) est détecté.

Paramètres :
dfDataFrame avec un index multi-niveaux contenant au moins le niveau ‘prn’

et les colonnes col1 (et éventuellement col2).

col1 : Nom de la première colonne. col2 : Nom de la seconde colonne (optionnel). Si None, on affiche col1. coeff1 : Coefficient multiplicateur pour la première colonne (défaut 1.0). coeff2 : Coefficient multiplicateur pour la seconde colonne (défaut 1.0). seuil : Seuil en secondes pour considérer un “trou” dans la série (défaut 3600). renderer: Renderer Plotly (ex : “browser” ou “iframe”).

Retourne :

fig : Figure Plotly contenant les courbes tracées.

geodezyx.gnss_edu.gnss_edu_test_skyplot module

geodezyx.gnss_edu.gpt3 module

Created on Fri Feb 9 07:43:47 2024

@author: snahmani

geodezyx.gnss_edu.gpt3.gpt3_5_fast(mjd=None, lat=None, lon=None, h_ell=None, it=None, grid=None)
geodezyx.gnss_edu.gpt3.gpt3_5_fast_readGrid(filename='gpt3_5.grd')

geodezyx.gnss_edu.klobuchar module

Created on Tue Feb 6 10:30:57 2024

Filière ING3 - PPMD - Traitement de la mesure de phase

@author: Samuel Nahmani (1,2) https://www.ipgp.fr/annuaire/nahmani/) contact : nahmani@ipgp.fr ou samuel.nahmani@ign.fr (1) Université Paris Cité, Institut de physique du globe de Paris, CNRS, IGN, F-75005 Paris, France. (2) Univ Gustave Eiffel, ENSG, IGN, F-77455 Marne-la-Vallée, France.

Version: 1.0 Dépendances: numpy, geodezyx, datetime

geodezyx.gnss_edu.klobuchar.klobuchar(phi, lambda_, elev, azimuth, tow, alpha, beta)

Compute ionospheric range correction for GPS L1 frequency using Klobuchar model.

Translation to Python of Meysam Mahooti (2024). Klobuchar Ionospheric Delay Model https://www.mathworks.com/matlabcentral/fileexchange/59530-klobuchar-ionospheric-delay-model MATLAB Central File Exchange. Retrieved February 7, 2024.

Parameters:
  • phi (float) – Geodetic latitude of receiver (degrees).

  • lambda (float) – Geodetic longitude of receiver (degrees).

  • elev (float) – Elevation angle of satellite (degrees).

  • azimuth (float) – Geodetic azimuth of satellite (degrees).

  • tow (float) – Time of Week (seconds).

  • alpha (array_like) – The coefficients of a cubic equation representing the amplitude of the vertical delay (4 coefficients - 8 bits each).

  • beta (array_like) – The coefficients of a cubic equation representing the period of the model (4 coefficients - 8 bits each).

Returns:

d_ion1 – Ionospheric slant range correction for the L1 frequency (metres).

Return type:

float

References

Klobuchar, J.A., (1996) “Ionospheric Effects on GPS”, in Parkinson, Spilker (ed), “Global Positioning System Theory and Applications, pp.513-514.

ICD-GPS-200, Rev. C, (1997), pp. 125-128

NATO, (1991), “Technical Characteristics of the NAVSTAR GPS”, pp. A-6-31 - A-6-33

geodezyx.gnss_edu.read_vmf1_grid module

read_vmf1_grid.py — autonome (sans jdutil) Lecture + interpolation des coefficients VMF1 (ah, aw) aux coordonnées station et à des dates MJD arbitraires, à partir des fichiers VMFG_YYYYMMDD.HHH.

  • Interpolation spatiale:
    • tente scipy.interpolate.griddata (linear)

    • sinon repli nearest neighbor (NumPy) si SciPy indisponible

  • Interpolation temporelle: linéaire entre pas 6h

  • Chemins: ./Mapping_Fcn/vmf1/VMFG_YYYYMMDD.HHH

Format attendu des fichiers (après les lignes commençant par ‘!’):

lat lon ah aw zhd zwd (au minimum: lat, lon, ah, aw)

Auteur: adapté pour être autonome (remplacement de jdutil)

class geodezyx.gnss_edu.read_vmf1_grid.VMFPoint(lat: 'float', lon: 'float', ah: 'float', aw: 'float')

Bases: object

ah: float
aw: float
lat: float
lon: float
geodezyx.gnss_edu.read_vmf1_grid.add_hours(dt, hours: int)
geodezyx.gnss_edu.read_vmf1_grid.datetime_to_mjd(dt) float

Convertit un datetime UTC naïf/aware en MJD (UTC).

geodezyx.gnss_edu.read_vmf1_grid.floor_to_6h(dt)

Ramène dt à l’heure multiple de 6h immédiatement inférieure (UTC).

geodezyx.gnss_edu.read_vmf1_grid.jd_to_calendar(jd: float) Tuple[int, int, int, float]

Convertit un Julian Day (float) en (year, month, day, hour_float). Implémentation autonome (remplace jdutil.jd_to_date).

geodezyx.gnss_edu.read_vmf1_grid.mjd_to_datetime(mjd: float)

Conversion MJD -> datetime UTC naïf (sans tzinfo).

geodezyx.gnss_edu.read_vmf1_grid.mjd_to_jd(mjd: float) float
geodezyx.gnss_edu.read_vmf1_grid.read_vmf1_grid(mjd: Iterable[float], ell: Iterable[float]) Tuple[ndarray, ndarray]

Retourne (ah_vec, aw_vec) pour chaque MJD donné et une station ell=[lat_deg, lon_deg, h_m].

Paramètres

mjdIterable[float]

Liste/array de dates en Modified Julian Day (UTC).

ell[lat_deg, lon_deg, h_m]

Latitude (deg), Longitude (deg), Hauteur ellipsoïdale (m). (La hauteur n’est pas utilisée ici pour ah/aw, mais on garde la signature d’interface.)

Renvoie

ah_vec : np.ndarray shape (N,) aw_vec : np.ndarray shape (N,)

Notes

  • Les fichiers requis sont:

    ./Mapping_Fcn/vmf1/VMFG_YYYYMMDD.H{00,06,12,18}

    pour les 6h entourant chaque MJD.

  • Interpolation temporelle: linéaire entre t0=⌊MJD⌋_6h et t1=t0+6h.

geodezyx.gnss_edu.vmf1_ht module

geodezyx.gnss_edu.vmf1_ht.vmf1_ht(ah=None, aw=None, dmjd=None, dlat=None, ht=None, zd=None)