pvl2gunnar.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #Entfernungen berechnen
  2. #Python 2.7
  3. #Author Gunnar Egenolff
  4. #letzte Bearbeitung 16.5.19
  5. import re
  6. import math as m
  7. debug = 0
  8. #2x fuer Start und Ziel
  9. lon = []
  10. lat = []
  11. #Eingabe Ort
  12. x1 = []
  13. x2 = []
  14. def EINGABE(SZ, x):
  15. lon1 = 0.0
  16. lon2 = 0.0
  17. lat1 = 0.0
  18. lat2 = 0.0
  19. eingabe = raw_input(SZ)
  20. s = list(eingabe)
  21. print s
  22. if debug == 1: print "Eingabe als Liste: ", (s)
  23. laenge = len(s)
  24. if debug == 1: print "Anzahl der Listenelemente / Laenge der Eingabe: ", (laenge)
  25. #Umwandlung Ortsname in Suchbegriff mit Toleranz
  26. i = 0
  27. while i <= laenge - 1: #legt Liste mit regulaeren Ausdruecken an
  28. if debug == 1: print "Position des ersetzten Buchstaben: ", s[i]
  29. t = s[:] #Originalliste soll erhalten bleiben, gearbeitet wird mit modifizierter Liste
  30. t.insert(i,".?.?") #je ein Buchstabe wird durch Punkt ersetzt
  31. del t[i+1]
  32. mod = "".join(t)
  33. x.append("\t" + mod + "\s") #stellt sicher, dass Name nicht Teil eines laengeren Namens
  34. if debug == 1: print "geaenderte Liste: ", t
  35. if debug == 1: print "originale Liste: ", s
  36. if debug == 1: print "Liste der Suchbegriffe: ", x
  37. i = i + 1
  38. #zeilenweises Auslesen der Ortedatei, Abgleich mit Suchbegriff
  39. linenr = 0
  40. j = 0
  41. k = 1
  42. schonmalgesehen = []
  43. while j <= len(x) - 1: #fragt nacheinander alle Versionen des Ortsnamens ab
  44. linenr = 0
  45. input = open("DE.tab")
  46. Suchbegriff = str(x[j])
  47. while True: # liest Datenbank zeilenweise aus
  48. line = input.readline()
  49. if not line: break
  50. linenr += 1
  51. if re.search(Suchbegriff, line) and not linenr in schonmalgesehen: #findet Ortsname
  52. Liste = line.split("\t")
  53. print k, Liste[7], Liste[3], Liste[4], Liste[5] #Ausgabe Plz, Ortsname, lon, lat
  54. lon.append(Liste[4])
  55. lat.append(Liste[5])
  56. k += 1
  57. schonmalgesehen.append(linenr)
  58. if debug == 2: print schonmalgesehen
  59. if debug == 2: print lon, lat
  60. if debug == 1: print "Suchbegriff: ", str(x[j])
  61. j+=1
  62. line = True
  63. #Aufforderung zur Auswahl
  64. auswahl = raw_input("Bitte geben Sie die Nummer des gewuenschten Orts ein: ")
  65. auswahl = int(auswahl)
  66. print lon [auswahl - 1]
  67. Laengengrad = lon [auswahl - 1]
  68. Breitengrad = lat [auswahl - 1]
  69. Koordinaten = []
  70. Koordinaten.append(Laengengrad)
  71. Koordinaten.append(Breitengrad)
  72. return Koordinaten
  73. K1 = EINGABE("Start eingeben: ", x1)
  74. print K1
  75. L1 = float(K1[0])
  76. B1 = float(K1[1])
  77. #print lon1
  78. K2 = EINGABE("Ziel eingeben: ", x2)
  79. L2 = float(K2[0])
  80. B2 = float(K2[1])
  81. #Berechnung der Entfernung
  82. print L1
  83. print L2
  84. distanz = 6371.0 * m.acos( m.cos(B1) * m.cos(B2) * m.cos(L1 - L2) + m.sin(L1) * m.sin(L2) )
  85. print distanz