Lisons le fichier RINEX avec Python ①

Le fichier __RINEX (Receiver Independent Exchange Format) __ est simplement les données reçues du satellite par le point de référence électronique utilisé dans le système de positionnement par satellite. ...peut être En passant, je n'ai presque aucune connaissance du type d'informations à l'intérieur, donc je vais l'analyser de manière appropriée tout en pratiquant le programme.

URL de référence

Environnement de configuration

Commençons par créer une interface graphique (apparence de l'outil)

Nous utiliserons tkinter, qui est la bibliothèque GUI standard qui est incluse depuis le début lors de l'installation d'Anaconda. Codons sans être trop conscients de l'orientation des objets!

Implémentation GUI

analyzer.py


import tkinter as tk
from calendar import isleap
from constant import *  #Module de définition propre


class Widget:
    """
Classe de génération de widgets GUI
    """
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('RINEX Analyzer')
        self.root.columnconfigure(0, weight=1)
        self.flame = tk.Frame(self.root)
        self.flame.grid(row=0, column=0)
        [self.flame.columnconfigure(x, weight=1) for x in range(4)]

        #À partir de là, le placement des widgets de bouton, etc.
        self.widget_dict = {}
        for cnt,ilist in enumerate(OPTION_LIST):
            tk.Label(self.flame, text=ilist[0].replace("_","\n")).grid(row=0, column=cnt)
            self.widget_dict[ilist[0]] = tk.StringVar()
            if "END" in ilist[0]:
                if not isleap(int(self.widget_dict["YEAR"].get())):
                    self.widget_dict[ilist[0]].set(ilist[1][-2])  #365 sinon une année humide
                else:
                    self.widget_dict[ilist[0]].set(ilist[1][-1])  #366 pour une année humide
            else:
                self.widget_dict[ilist[0]].set(ilist[1][0])
            tk.OptionMenu(self.flame, self.widget_dict[ilist[0]], *ilist[1]).grid(row=1, column=cnt)

        self.widget_dict["GET_RINEX"] = tk.Button(self.flame, text="GET RINEX", bg="SkyBlue")
        self.widget_dict["GET_RINEX"].grid(row=2, column=3, padx=1, pady=1)
        self.widget_dict["GET_RINEX"].config(command=lambda: self.button_event())
        self.widget_dict["TEXT"] = tk.Text(self.flame, width=40, height=10)
        self.widget_dict["TEXT"].grid(row=3, column=0, columnspan=4, padx=5, pady=5)
        self.widget_dict["TEXT"].insert("end", "Sortie de message\n")
        self.widget_dict["CANVAS"] = tk.Canvas(self.flame, width=50, height=50)
        self.widget_dict["CANVAS"].grid(row=4, column=0, columnspan=4)

        self.root.mainloop()

    def button_event(self):
        """
Décrivez le comportement lorsque vous appuyez sur le bouton
        """
        #Sortie du message dans la zone de texte
        if int(self.widget_dict["START_DOY"].get()) > int(self.widget_dict["END_DOY"].get()):
            # START_FIN que DOY_Si DOY vient en premier
            self.widget_dict["TEXT"].insert("end", "START_FIN que DOY_La date de DOY est en avance\n")
        elif not isleap(int(self.widget_dict["YEAR"].get())):
            #Si ce n'est pas une année humide
            if int(self.widget_dict["START_DOY"].get()) == 366 or int(self.widget_dict["END_DOY"].get()) == 366:
                self.widget_dict["TEXT"].insert("end", "{0}Il n'y a pas 366 jours dans l'année\n".format(self.widget_dict["YEAR"].get()))
            else:
                [self.widget_dict["TEXT"].insert("end", "{0}:{1}\n".format(x, self.widget_dict[x].get())) for x in LABEL_LIST]
        else:
            [self.widget_dict["TEXT"].insert("end", "{0}:{1}\n".format(x, self.widget_dict[x].get())) for x in LABEL_LIST]
        self.widget_dict["TEXT"].see("end")

#Description requise lors du démarrage d'un fichier Python en double-cliquant
if __name__ == "__main__":
    try:
        Widget()  #Interface de démarrage
        print("\n Terminaison normale")
    except Exception as _e:
        print(_e, type(_e))
        print("\n Terminaison anormale")

Le traitement de l'année humide était sobre et gênant Ou plutôt, il y avait une fonction qui pouvait déterminer si c'était une année humide

Module de définition propre

constant.py


"""Module de définition constante"""
YEAR_LIST = ["2018", "2019", "2020", "2021", "2022"]    #Définition pour 5 ans pour le moment
DOY_LIST = [str(x).zfill(3) for x in range(1, 367)]  # Day of year
ERP_LIST = ["0958", "3005", "3007", "3008", "3011",
            "3013","0223", "0224", "0753", "0754", "0755"]  #Numéro de station du point de référence électronique...Définissons celui de la préfecture de Saitama pour le moment
LABEL_LIST = ["YEAR", "START_DOY", "END_DOY", "ERP"]
OPTION_LIST = [[LABEL_LIST[cnt], i] for cnt,i in enumerate([YEAR_LIST, DOY_LIST, DOY_LIST, ERP_LIST])]  #Double liste

Lors de la création d'un module qui définit des constantes Il semble qu'il existe actuellement 11 points de référence électroniques dans la préfecture de Saitama.

Jusqu'à présent, l'interface graphique ressemble à ceci

rnx_dler_gui 2020-04-20 224859.png Hmm, ils sont fatigués Le tkinter ʻOption Menu` est appelé une zone de liste ou une zone de liste déroulante.

Le site auquel j'ai fait référence

dernier

J'ai une interface graphique simple pour le moment La prochaine fois, je voudrais implémenter autour de l'acquisition de fichiers RINEX. J'ai également ressenti la facilité d'utilisation de PyCharm. C'est facile à déboguer et il est bon de vérifier la syntaxe et les conventions PEP8 sans autorisation.

: arrow_backward: Dernier article | [Article suivant]: arrow_forward:

Recommended Posts

Lisons le fichier RINEX avec Python ①
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Vérifier l'existence du fichier avec python
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
[Python] Lire la ligne spécifiée dans le fichier
[Automation] Lire le courrier (fichier msg) avec Python
Lisez le fichier en Python avec un chemin relatif depuis le programme
Lire le fichier csv Python
Lire les données de la table dans un fichier PDF avec Python
Convertir le code de caractère du fichier avec Python3
Lire ligne par ligne à partir d'un fichier avec Python
Lisez le fichier avec python et supprimez les sauts de ligne [Notes sur la lecture du fichier]
Python / numpy> Lire le fichier de données avec la ligne de nom d'élément> Utiliser genfromtxt ()
Lire csv avec des pandas python
Modèle de script python pour lire le contenu du fichier
J'ai essayé de toucher un fichier CSV avec Python
Dessiner un fichier netCDF avec python
Lisez le fichier xml en vous référant au didacticiel Python
Lire le code QR à partir du fichier image avec Python (Mac)
Écrivons python avec cinema4d.
Lire le fichier json avec Python, le formater et générer le json
Appelez l'API avec python3.
Construisons git-cat avec Python
Télécharger le fichier csv avec python
Lire des données json avec python
Comment changer le fichier de configuration pour qu'il soit lu par Python
Lire le fichier GRIB2 de l'Agence météorologique sur pygrib
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Lisez le fichier VTK et affichez la carte des couleurs avec jupyter.
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
Essayez de déchiffrer les caractères déformés dans le nom du fichier joint avec Python
Enregistrez le fichier binaire en Python
Téléchargement de fichiers implémenté avec Python + Bottle
Faisons une interface graphique avec python.
Suivez la hiérarchie des fichiers avec fts
Sortie vers un fichier csv avec Python
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
Jouons avec Excel avec Python [Débutant]
Accédez à l'API Etherpad-lite avec Python
Installer le plug-in Python avec Netbeans 8.0.2
Demandez à python de lire la sortie de la commande
Téléchargez le fichier déployé avec appcfg.py
Faisons du scraping d'images avec Python
J'ai aimé le tweet avec python. ..
Extraire le fichier targz en utilisant python
Lire des fichiers en parallèle avec Python
Maîtriser le type avec Python [compatible Python 3.9]
Faisons un graphe avec python! !!
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
[Python] Lire le code source de Flask
Ouvrir le fichier avec l'application par défaut
Charger fbx depuis python avec cinema4d
Analysons la voix avec Python # 1 FFT