|
@@ -3,67 +3,92 @@
|
|
#Author Gunnar Egenolff
|
|
#Author Gunnar Egenolff
|
|
#letzte Bearbeitung 16.5.19
|
|
#letzte Bearbeitung 16.5.19
|
|
import re
|
|
import re
|
|
|
|
+import math as m
|
|
debug = 0
|
|
debug = 0
|
|
#2x fuer Start und Ziel
|
|
#2x fuer Start und Ziel
|
|
lon = []
|
|
lon = []
|
|
lat = []
|
|
lat = []
|
|
#Eingabe Ort
|
|
#Eingabe Ort
|
|
-eingabe = raw_input("Ort: ")
|
|
|
|
-s = list(eingabe)
|
|
|
|
-print s
|
|
|
|
-if debug == 1: print "Eingabe als Liste: ", (s)
|
|
|
|
-laenge = len(s)
|
|
|
|
-if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
|
|
|
|
|
|
+x1 = []
|
|
|
|
+x2 = []
|
|
|
|
|
|
- #Umwandlung Ortsname in Suchbegriff mit Toleranz
|
|
|
|
|
|
+def EINGABE(SZ, x):
|
|
|
|
+ lon1 = 0.0
|
|
|
|
+ lon2 = 0.0
|
|
|
|
+ lat1 = 0.0
|
|
|
|
+ lat2 = 0.0
|
|
|
|
+ eingabe = raw_input(SZ)
|
|
|
|
+ s = list(eingabe)
|
|
|
|
+ print s
|
|
|
|
+ if debug == 1: print "Eingabe als Liste: ", (s)
|
|
|
|
+ laenge = len(s)
|
|
|
|
+ if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
|
|
|
|
|
|
-x = []
|
|
|
|
-i = 0
|
|
|
|
-while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
|
|
|
|
- if debug == 1: print "Position des ersetzten Buchstaben: ", s[i]
|
|
|
|
- t = s[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
|
|
|
|
- t.insert(i,".?.?") #je ein Buchstabe wird durch Punkt ersetzt
|
|
|
|
- del t[i+1]
|
|
|
|
- mod = "".join(t)
|
|
|
|
- x.append("\t" + mod + "\s") #stellt sicher, dass Name nicht Teil eines laengeren Namens
|
|
|
|
- if debug == 1: print "geaenderte Liste: ", t
|
|
|
|
- if debug == 1: print "originale Liste: ", s
|
|
|
|
- if debug == 1: print "Liste der Suchbegriffe: ", x
|
|
|
|
-
|
|
|
|
- i = i + 1
|
|
|
|
|
|
+ #Umwandlung Ortsname in Suchbegriff mit Toleranz
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ i = 0
|
|
|
|
+ while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
|
|
|
|
+ if debug == 1: print "Position des ersetzten Buchstaben: ", s[i]
|
|
|
|
+ t = s[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
|
|
|
|
+ t.insert(i,".?.?") #je ein Buchstabe wird durch Punkt ersetzt
|
|
|
|
+ del t[i+1]
|
|
|
|
+ mod = "".join(t)
|
|
|
|
+ x.append("\t" + mod + "\s") #stellt sicher, dass Name nicht Teil eines laengeren Namens
|
|
|
|
+ if debug == 1: print "geaenderte Liste: ", t
|
|
|
|
+ if debug == 1: print "originale Liste: ", s
|
|
|
|
+ if debug == 1: print "Liste der Suchbegriffe: ", x
|
|
|
|
|
|
|
|
+ i = i + 1
|
|
|
|
+
|
|
#zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
|
|
#zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
|
|
|
|
|
|
-linenr = 0
|
|
|
|
-j = 0
|
|
|
|
-k = 1
|
|
|
|
-schonmalgesehen = []
|
|
|
|
-while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
|
|
|
|
linenr = 0
|
|
linenr = 0
|
|
- input = open("DE.tab")
|
|
|
|
- Suchbegriff = str(x[j])
|
|
|
|
- while True: # liest Datenbank zeilenweise aus
|
|
|
|
- line = input.readline()
|
|
|
|
- if not line: break
|
|
|
|
- linenr += 1
|
|
|
|
- if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname
|
|
|
|
- Liste = line.split("\t")
|
|
|
|
- print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Plz, Ortsname, lon, lat
|
|
|
|
- lon.append(Liste[4])
|
|
|
|
- lat.append(Liste[5])
|
|
|
|
- k += 1
|
|
|
|
- schonmalgesehen.append(linenr)
|
|
|
|
- print schonmalgesehen
|
|
|
|
- if debug == 1: print lon, lat
|
|
|
|
- if debug == 1: print "Suchbegriff: ", str(x[j])
|
|
|
|
- j+=1
|
|
|
|
- line = True
|
|
|
|
|
|
+ j = 0
|
|
|
|
+ k = 1
|
|
|
|
+ schonmalgesehen = []
|
|
|
|
+ while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
|
|
|
|
+ linenr = 0
|
|
|
|
+ input = open("DE.tab")
|
|
|
|
+ Suchbegriff = str(x[j])
|
|
|
|
+ while True: # liest Datenbank zeilenweise aus
|
|
|
|
+ line = input.readline()
|
|
|
|
+ if not line: break
|
|
|
|
+ linenr += 1
|
|
|
|
+ if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname
|
|
|
|
+ Liste = line.split("\t")
|
|
|
|
+ print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Plz, Ortsname, lon, lat
|
|
|
|
+ lon.append(Liste[4])
|
|
|
|
+ lat.append(Liste[5])
|
|
|
|
+ k += 1
|
|
|
|
+ schonmalgesehen.append(linenr)
|
|
|
|
+ if debug == 2: print schonmalgesehen
|
|
|
|
+ if debug == 2: print lon, lat
|
|
|
|
+ if debug == 1: print "Suchbegriff: ", str(x[j])
|
|
|
|
+ j+=1
|
|
|
|
+ line = True
|
|
|
|
|
|
#Aufforderung zur Auswahl
|
|
#Aufforderung zur Auswahl
|
|
-
|
|
|
|
|
|
+ auswahl = raw_input("Bitte geben Sie die Nummer des gewuenschten Orts ein: ")
|
|
|
|
+ auswahl = int(auswahl)
|
|
|
|
+ print lon [auswahl - 1]
|
|
|
|
+ Laengengrad = lon [auswahl - 1]
|
|
|
|
+ Breitengrad = lat [auswahl - 1]
|
|
|
|
+ Koordinaten = []
|
|
|
|
+ Koordinaten.append(Laengengrad)
|
|
|
|
+ Koordinaten.append(Breitengrad)
|
|
|
|
+ return Koordinaten
|
|
|
|
+K1 = EINGABE("Start eingeben: ", x1)
|
|
|
|
+print K1
|
|
|
|
+L1 = float(K1[0])
|
|
|
|
+B1 = float(K1[1])
|
|
|
|
+#print lon1
|
|
|
|
+K2 = EINGABE("Ziel eingeben: ", x2)
|
|
|
|
+L2 = float(K2[0])
|
|
|
|
+B2 = float(K2[1])
|
|
#Berechnung der Entfernung
|
|
#Berechnung der Entfernung
|
|
|
|
+print L1
|
|
|
|
+print L2
|
|
|
|
+
|
|
|
|
+distanz = 6371.0 * m.acos( m.cos(B1) * m.cos(B2) * m.cos(L1 - L2) + m.sin(L1) * m.sin(L2) )
|
|
|
|
+print distanz
|