Abfrage von Dateien und Eingabe von Koordinaten...

Fragen zu Tkinter.
Antworten
Benutzeravatar
zimmernagel
User
Beiträge: 24
Registriert: Dienstag 9. Dezember 2014, 13:22
Wohnort: Bitburg

Hallo zusammen!

Wahrscheinlich was ganz banales für die Profis...

Ich benutze ein kleine Python-Programm für das Ausfiltern einer großen DGM-Datei (Koordinaten-Ascii-Liste mit Höhen) von Koordinaten in einem Rechteck von vorher definierten Eckwerten, bzw. Linker, oberer, rechter und unterer Rand. Diese gebe ich momentan durch Ändern der *.py-Datei von Hand ein, möchte dies aber in einem Fenster abfragen, bzw. die Werte der Ränder halt eingeben und die neue Datei "output_filename" erstellen/berechnen lassen.

Vorher soll über das normale Datei-Fenster die "input_filename"-Datei auswählbar sein, und die "output_filename"-Datei auch über ein Dateifenster erstellbar sein. Unterhalb ist das Programm, wie es jetzt auch schon funktioniert...

Wie stelle ich das mit TKinter an, bzw. kann ich das auch anders machen?

Code: Alles auswählen

input_filename='C:\DGM\BitLand\DGM5_RP.xyz'
output_filename='C:\DGM\BitLand\Ingendorf-DGM.xyz'
left_border = 313000.000
bottom_border = 5533900.000
right_border = 318500.000
top_border = 5536700.000
with open(input_filename) as points_in:
    with open(output_filename, 'w') as points_out:
        for line in points_in:
            point = list(map(float, line.split()))
            wert_x = point[0]
            wert_y = point[1]
            if left_border <= wert_x  and right_border >= wert_x and bottom_border <= wert_y and  top_border >= wert_y:
                points_out.write(line)

Vielen Dank schonmal im Voraus für die vielen Tipps... ;-)

SG,
Zimmernagel

PS: Kann ich aus dieser Datei auch eine selbstausführende alleinstehende *.Exe erstellen? Bin ziemlicher NEWBIE, daher die banalen Fragen...
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich persoenlich wuerde ja bei sowas immer eine Kommandozeilen-Anwendung deutlich bevorzugen. Schau dir das Modul argparse an, damit kannst du ueber die Kommandozeile die Parameter einlesen. Hinschreiben musst du sie. Eine tkinter-Anwendung zu schreiben, die *besser* als das ist, hat ungefaehr das 10-fache an Code zu dem was du jetzt hast.
Benutzeravatar
zimmernagel
User
Beiträge: 24
Registriert: Dienstag 9. Dezember 2014, 13:22
Wohnort: Bitburg

Ja, schade, dachte mir schon sowas, wollte sowas halt nur etwas eleganter gelöst haben, damit ich nicht jedesmal in die Datei gehen muss und die Werte bzw. Pfade umschreiben muss... :-(
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Musst du ja nicht mit Kommandozeilen-Argumenten.
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@zimmernagel: Der Test kann mit zwei weniger ``and`` ausgedrückt werden, wenn man Vergleichsoperatoren verkettet. IMHO wird es dadurch auch ein bisschen lesbarer:

Code: Alles auswählen

            if left_border <= wert_x <= right_border and bottom_border <= wert_y <= top_border:
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
zimmernagel
User
Beiträge: 24
Registriert: Dienstag 9. Dezember 2014, 13:22
Wohnort: Bitburg

Ganz klar, da ist bestimmt noch Verbesserungspotential, ich war aber froh, dass mein 1. Programm hier schon mit Hilfe schnell zu einer Lösung kam...
Antworten