No Description

pvl.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #Entwickler: Martin Mittrenga und Nico Hessler
  2. import sys #importieren saemtlicher Module
  3. import os
  4. import random as rdm
  5. import re as re #regular express fuer Bibo regulaerer ausdruecke
  6. from math import sin, cos, sqrt, atan2, radians #Teilelemente aus math fuer mathematische Ausdruecke
  7. #Begruessung
  8. os.system("clear") #loeschen des Bildschirms
  9. print ("-")*50
  10. print ("Luftlinienberechner")
  11. print ("Erstellt von Niko Hessler und Martin Mittrenga")
  12. print ("-")*50
  13. #========================================================================
  14. #Datei einlesen
  15. datenbank = open("/data/share/nhessler/pvl/DE.tab", "r").readlines() #Einlesen der Datei
  16. #========================================================================
  17. #Startpunkt Auswahl
  18. startpunkt = (raw_input("Geben sie Ihren Startpunkt an: "))
  19. print ("-")*50
  20. Vorschlag = []
  21. for line in datenbank:
  22. if re.search(startpunkt, line):
  23. Vorschlag.append(line.split()) #Schreiben als liste
  24. for a in range(len(Vorschlag)):
  25. print "%i. Vorschlag: %s"%(a+1,Vorschlag[a][3])
  26. print ("-")*50
  27. choice = int(raw_input("Welche Option aus der Liste ist gewuenscht? "))-1
  28. latitudestart = Vorschlag[choice][4]
  29. longitudestart = Vorschlag[choice][5]
  30. print ("-")*50
  31. #Endpunkt Auswahl
  32. endpunkt = (raw_input("Geben sie Ihren Endpunkt an: "))
  33. print ("-")*50
  34. Vorschlag = [] #leeren der Liste
  35. for line in datenbank:
  36. if re.search(endpunkt, line):
  37. Vorschlag.append(line.split()) #Schreiben als liste
  38. for a in range(len(Vorschlag)):
  39. print "%i. Vorschlag: %s"%(a+1,Vorschlag[a][3]) #%s string eingefuegt #%i dezimal/int
  40. print ("-")*50
  41. choice = int(raw_input("Welche Option aus der Liste ist gewuenscht? "))-1
  42. latitudeende = Vorschlag[choice][4]
  43. longitudeende = Vorschlag[choice][5]
  44. #========================================================================
  45. print ("-")*50
  46. print
  47. print
  48. print
  49. print "="*50
  50. print "ACHTUNG! Hier muessen vier Gradeinheiten als (Float-Wert stehen)."
  51. print "Sollte dies nicht der Fall sein, stuertzt das Programm ab."
  52. print "Zwischenausgabe der vier uebergebenen Variablen zur Berechnung:"
  53. print
  54. print latitudestart
  55. print longitudestart
  56. print latitudeende
  57. print longitudeende
  58. print "="*50
  59. print
  60. #Berechnung
  61. R = 6373.0 #Radius der Erde in Kilometer
  62. #Startpunkt
  63. lat1 = radians(float(latitudestart))
  64. lon1 = radians(float(longitudestart))
  65. #Endpunkt
  66. lat2 = radians(float(latitudeende))
  67. lon2 = radians(float(longitudeende))
  68. #Differenz
  69. dlon = lon2-lon1
  70. dlat = lat2-lat1
  71. a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
  72. c = 2*atan2(sqrt(a), sqrt(1-a))
  73. distance = R * c
  74. print "-"*50
  75. print ("Ihre Entfernung betraegt:"), distance, ("Kilometer. Gute Fahrt!")
  76. print "-"*50
  77. print
  78. print
  79. print
  80. print
  81. print
  82. print
  83. #======================================================================
  84. while True: #Sicherheitsabfrage ob wirklich beendet werden soll
  85. eingabe=raw_input("Wollen Sie Wirklich beenden? Bitte 'J' oder 'N' eingeben: ")
  86. if eingabe=="N":
  87. bed= False
  88. break
  89. elif eingabe=="J":sys.exit()
  90. else:
  91. print"Falsche Eingabe!"