Browse Source

Aktualisierung...

nhessler 7 years ago
parent
commit
1171f114c1
1 changed files with 67 additions and 35 deletions
  1. 67 35
      pvl.py

+ 67 - 35
pvl.py

5
 import os
5
 import os
6
 import random as rdm
6
 import random as rdm
7
 import re as re         #regular express fuer Bibo regulaerer ausdruecke
7
 import re as re         #regular express fuer Bibo regulaerer ausdruecke
8
-import math as sqrt       #modul fuer mathematische Ausdruecke
8
+
9
+from math import sin, cos, sqrt, atan2, radians     #Teilelemente aus math fuer mathematische Ausdruecke
9
 
10
 
10
 
11
 
11
 #Begruessung
12
 #Begruessung
13
+os.system("clear")                                      #loeschen des Bildschirms
12
 print ("-")*50
14
 print ("-")*50
13
 print ("Luftlinienberechner")
15
 print ("Luftlinienberechner")
14
 print ("Erstellt von Niko Hessler und Martin Mittrenga")
16
 print ("Erstellt von Niko Hessler und Martin Mittrenga")
19
 #========================================================================
21
 #========================================================================
20
 
22
 
21
 
23
 
22
-#Datei einlesen mit print als Test
23
-os.system("clear")
24
-f = open("/data/share/nhessler/DE.tab", "r")
25
-for line in f:
26
-    print line.rstrip()                 #in liste schreiben und regularen ausdruck aus liste lesen!!!!!!!!!
27
-
28
-f.close()
24
+#Datei einlesen
25
+datenbank = open("/data/share/nhessler/pvl/DE.tab", "r").readlines() #Einlesen der Datei
29
 
26
 
30
 
27
 
31
 #========================================================================
28
 #========================================================================
32
 
29
 
33
 
30
 
31
+#Startpunkt Auswahl
32
+startpunkt = (raw_input("Geben sie Ihren Startpunkt an: "))
33
+print ("-")*50
34
+
35
+
36
+idee = []
37
+for line in datenbank:
38
+    if re.search(startpunkt, line):
39
+
40
+        idee.append(line.split())          #Schreiben als liste
41
+
42
+for a in range(len(idee)):
43
+	print "%i. idee:%s"%(a+1,idee[a])
44
+print ("-")*50
45
+
46
+choice = int(raw_input("Welche Option aus der Liste ist gewuenscht? "))-1
47
+print idee[choice]
48
+latitudestart = idee[choice][4]
49
+longitudestart = idee[choice][5]
50
+
51
+print ("-")*50
34
 
52
 
35
 
53
 
36
-#Startpunkt Auswahl
37
-startpunkt=(raw_input("Geben sie Ihren Startpunkt an: "))
38
 
54
 
39
-if re.search(startpunkt, line):
40
-        print ("Gefunden, super.")
41
-else:
42
-        print ("Nicht gefunden, schade.")
43
 
55
 
44
 
56
 
45
 
57
 
46
 
58
 
47
 #Endpunkt Auswahl
59
 #Endpunkt Auswahl
48
-endpunkt=(raw_input("Geben sie Ihren Endpunkt an: "))
60
+endpunkt = (raw_input("Geben sie Ihren Endpunkt an: "))
61
+print ("-")*50
49
 
62
 
50
-if re.search(endpunkt, line):
51
-        print ("Gefunden, super.")
52
-else:
53
-        print ("Nicht gefunden, schade.")
54
 
63
 
64
+idee = []                           #leeren der Liste
65
+for line in datenbank:
66
+    if re.search(endpunkt, line):
55
 
67
 
68
+        idee.append(line.split())          #Schreiben als liste
56
 
69
 
70
+for a in range(len(idee)):
71
+	print "%i. idee:%s"%(a+1,idee[a])              #%s string eingefuegt    #%i dezimal/int
72
+print ("-")*50
57
 
73
 
74
+choice = int(raw_input("Welche Option aus der Liste ist gewuenscht? "))-1
58
 
75
 
59
-#Berechnung allgemein
76
+latitudeende = idee[choice][4]
77
+longitudeende = idee[choice][5]
60
 
78
 
61
-lonstart=0    #Wie bekommen wir die Ergebnisse aus der DB?
62
-lonend=0
63
-latstart=0
64
-latend=0
65
 
79
 
66
 
80
 
81
+#========================================================================
67
 
82
 
68
 
83
 
69
 
84
 
70
-pos_x_lon = 111,3*cos(lat)*(pos_x_lon-pos_y_lon)
71
-pos_y_lon = 111,3*(lat1-lat2)
85
+print "-"*50
72
 
86
 
87
+print "Zwischenausgabe der vier uebergebenen Variablen zur Berechnung:"
88
+print latitudestart
89
+print longitudestart
90
+print latitudeende
91
+print longitudeende
73
 
92
 
93
+print "-"*50
74
 
94
 
75
-#Berechnung fuer Longitude
76
-c_square = pos_x_lon**2 + pos_y_lon**2
77
-c = int(sqrt(c_square))
78
-if ((c_square - c**2) == 0):
79
-        print c
80
-        print "Danke fuer die Eingabe."
81
-        print "-"*50
82
 
95
 
96
+#Berechnung
97
+R = 6373.0 #Radius der Erde in Kilometer
83
 
98
 
99
+#Startpunkt
100
+lat1 = radians(float(latitudestart))
101
+lon1 = radians(float(longitudestart))
84
 
102
 
103
+#Endpunkt
104
+lat2 = radians(float(latitudeende))
105
+lon2 = radians(float(longitudeende))
106
+
107
+#Differenz
108
+dlon = lon2-lon1
109
+dlat = lat2-lat1
110
+
111
+
112
+a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
113
+c = 2*atan2(sqrt(a), sqrt(1-a))
114
+
115
+distance = R * c
85
 
116
 
86
 print "-"*50
117
 print "-"*50
87
-print ("Ihre Entfernung betraegt XXX Kilometer. Gute Fahrt!")
118
+print ("Ihre Entfernung betraegt:"), distance, ("Kilometer. Gute Fahrt!")
88
 print "-"*50
119
 print "-"*50
89
 
120
 
90
 
121
 
122
+
91
 #======================================================================
123
 #======================================================================
92
 
124
 
93
 
125
 
94
 
126
 
95
-while True:											#Sicherheitsabfrage ob wirklich beendet werden soll
127
+while True:		#Sicherheitsabfrage ob wirklich beendet werden soll
96
 
128
 
97
         eingabe=raw_input("Wollen Sie Wirklich beenden? Bitte 'J' oder 'N' eingeben: ")
129
         eingabe=raw_input("Wollen Sie Wirklich beenden? Bitte 'J' oder 'N' eingeben: ")
98
         if eingabe=="N":
130
         if eingabe=="N":