#Entwickler: Martin Mittrenga und Nico Hessler import sys #importieren saemtlicher Module import os import random as rdm import re as re #regular express fuer Bibo regulaerer ausdruecke from math import sin, cos, sqrt, atan2, radians #Teilelemente aus math fuer mathematische Ausdruecke #Begruessung os.system("clear") #loeschen des Bildschirms print ("-")*50 print ("Luftlinienberechner") print ("Erstellt von Niko Hessler und Martin Mittrenga") print ("-")*50 #======================================================================== #Datei einlesen datenbank = open("/data/share/nhessler/pvl/DE.tab", "r").readlines() #Einlesen der Datei #======================================================================== #Startpunkt Auswahl startpunkt = (raw_input("Geben sie Ihren Startpunkt an: ")) print ("-")*50 Vorschlag = [] for line in datenbank: if re.search(startpunkt, line): Vorschlag.append(line.split()) #Schreiben als liste for a in range(len(Vorschlag)): print "%i. Vorschlag: %s"%(a+1,Vorschlag[a][3]) print ("-")*50 choice = int(raw_input("Welche Option aus der Liste ist gewuenscht? "))-1 latitudestart = Vorschlag[choice][4] longitudestart = Vorschlag[choice][5] print ("-")*50 #Endpunkt Auswahl endpunkt = (raw_input("Geben sie Ihren Endpunkt an: ")) print ("-")*50 Vorschlag = [] #leeren der Liste for line in datenbank: if re.search(endpunkt, line): Vorschlag.append(line.split()) #Schreiben als liste for a in range(len(Vorschlag)): print "%i. Vorschlag: %s"%(a+1,Vorschlag[a][3]) #%s string eingefuegt #%i dezimal/int print ("-")*50 choice = int(raw_input("Welche Option aus der Liste ist gewuenscht? "))-1 latitudeende = Vorschlag[choice][4] longitudeende = Vorschlag[choice][5] #======================================================================== print ("-")*50 print print print print "="*50 print "ACHTUNG! Hier muessen vier Gradeinheiten als (Float-Wert stehen)." print "Sollte dies nicht der Fall sein, stuertzt das Programm ab." print "Zwischenausgabe der vier uebergebenen Variablen zur Berechnung:" print print latitudestart print longitudestart print latitudeende print longitudeende print "="*50 print #Berechnung R = 6373.0 #Radius der Erde in Kilometer #Startpunkt lat1 = radians(float(latitudestart)) lon1 = radians(float(longitudestart)) #Endpunkt lat2 = radians(float(latitudeende)) lon2 = radians(float(longitudeende)) #Differenz dlon = lon2-lon1 dlat = lat2-lat1 a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 c = 2*atan2(sqrt(a), sqrt(1-a)) distance = R * c print "-"*50 print ("Ihre Entfernung betraegt:"), distance, ("Kilometer. Gute Fahrt!") print "-"*50 print print print print print print #====================================================================== while True: #Sicherheitsabfrage ob wirklich beendet werden soll eingabe=raw_input("Wollen Sie Wirklich beenden? Bitte 'J' oder 'N' eingeben: ") if eingabe=="N": bed= False break elif eingabe=="J":sys.exit() else: print"Falsche Eingabe!"