Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.72 KB | None | 0 0
  1. import geocoder
  2. import math
  3. import sys
  4.  
  5. maanSadeKm=6373.0
  6.  
  7. def laskeEtaisyys(lat1, long1, lat2, long2):
  8.     lat1 = math.radians(lat1)
  9.     long1 = math.radians(long1)
  10.     lat2 = math.radians(lat2)
  11.     long2 = math.radians(long2)
  12.     dlat = lat2 - lat1
  13.     dlong = long2 - long1
  14.  
  15.     temp = (  
  16.          math.sin(dlat / 2) ** 2
  17.        + math.cos(lat1)
  18.        * math.cos(lat2)
  19.        * math.sin(dlong / 2) ** 2
  20.     )
  21.     return maanSadeKm * (2 * math.atan2(math.sqrt(temp), math.sqrt(1 - temp)))
  22.  
  23. def laskeKaarevuus(etaisyys):
  24.     if etaisyys < math.pi * maanSadeKm / 2:
  25.         keskuskulma = etaisyys / maanSadeKm
  26.         kaarevuus = maanSadeKm / math.cos(keskuskulma) - maanSadeKm
  27.         return kaarevuus
  28.     return math.inf
  29.    
  30. def main():
  31.  
  32.     if len(sys.argv) != 3:
  33.         print("Käyttö: python3 kaarevuus.py <paikka1> <paikka2>")
  34.         print("Esimerkki: python3 kaarevuus.py Helsinki \"New York\"")
  35.         sys.exit(1)
  36.  
  37.     ga = geocoder.osm(sys.argv[1])
  38.     gb = geocoder.osm(sys.argv[2])
  39.  
  40.     if not ga.ok and not gb.ok:
  41.         if not ga.ok:
  42.             print("Ei löydetty koordinaatteja paikalle '"+sys.argv[1]+"'")
  43.         if not gb.ok:
  44.             print("Ei löydetty koordinaatteja paikalle '"+sys.argv[2]+"'")
  45.         sys.exit(1)
  46.        
  47.     print(sys.argv[1].title(),end=" ")
  48.     print('({}, {})'.format(ga.osm['y'], ga.osm['x']))
  49.     print(sys.argv[2].title(),end=" ")
  50.     print('({}, {})'.format(gb.osm['y'], gb.osm['x']))
  51.  
  52.     etaisyys=laskeEtaisyys(ga.osm['y'],ga.osm['x'],gb.osm['y'],gb.osm['x'])
  53.     kaarevuus=laskeKaarevuus(etaisyys)
  54.  
  55.     print("Välimatka:",round(etaisyys,1),"km")
  56.     print("Kaarevuus:",round(kaarevuus*1000),"m")
  57.  
  58. if __name__ == "__main__":
  59.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement