12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #Entfernungen berechnen
- #Python 2.7
- #Author Gunnar Egenolff
- #letzte Bearbeitung 16.5.19
- import re
- import math as m
- debug = 0
- #2x fuer Start und Ziel
- lon = []
- lat = []
- #Eingabe Ort
- x1 = []
- x2 = []
- 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)
- #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
- linenr = 0
- 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
- 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
- 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
|