Parcourir la Source

Aktualisierung...

nhessler il y a 7 ans
Parent
commit
1171f114c1
1 fichiers modifiés avec 67 ajouts et 35 suppressions
  1. 67 35
      pvl.py

+ 67 - 35
pvl.py

@@ -5,10 +5,12 @@ import sys              #importieren saemtlicher Module
5 5
 import os
6 6
 import random as rdm
7 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 12
 #Begruessung
13
+os.system("clear")                                      #loeschen des Bildschirms
12 14
 print ("-")*50
13 15
 print ("Luftlinienberechner")
14 16
 print ("Erstellt von Niko Hessler und Martin Mittrenga")
@@ -19,80 +21,110 @@ print ("-")*50
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 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 117
 print "-"*50
87
-print ("Ihre Entfernung betraegt XXX Kilometer. Gute Fahrt!")
118
+print ("Ihre Entfernung betraegt:"), distance, ("Kilometer. Gute Fahrt!")
88 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 129
         eingabe=raw_input("Wollen Sie Wirklich beenden? Bitte 'J' oder 'N' eingeben: ")
98 130
         if eingabe=="N":