Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import geocoder
- import math
- import sys
- maanSadeKm=6373.0
- def laskeEtaisyys(lat1, long1, lat2, long2):
- lat1 = math.radians(lat1)
- long1 = math.radians(long1)
- lat2 = math.radians(lat2)
- long2 = math.radians(long2)
- dlat = lat2 - lat1
- dlong = long2 - long1
- temp = (
- math.sin(dlat / 2) ** 2
- + math.cos(lat1)
- * math.cos(lat2)
- * math.sin(dlong / 2) ** 2
- )
- return maanSadeKm * (2 * math.atan2(math.sqrt(temp), math.sqrt(1 - temp)))
- def laskeKaarevuus(etaisyys):
- if etaisyys < math.pi * maanSadeKm / 2:
- keskuskulma = etaisyys / maanSadeKm
- kaarevuus = maanSadeKm / math.cos(keskuskulma) - maanSadeKm
- return kaarevuus
- return math.inf
- def main():
- if len(sys.argv) != 3:
- print("Käyttö: python3 kaarevuus.py <paikka1> <paikka2>")
- print("Esimerkki: python3 kaarevuus.py Helsinki \"New York\"")
- sys.exit(1)
- ga = geocoder.osm(sys.argv[1])
- gb = geocoder.osm(sys.argv[2])
- if not ga.ok and not gb.ok:
- if not ga.ok:
- print("Ei löydetty koordinaatteja paikalle '"+sys.argv[1]+"'")
- if not gb.ok:
- print("Ei löydetty koordinaatteja paikalle '"+sys.argv[2]+"'")
- sys.exit(1)
- print(sys.argv[1].title(),end=" ")
- print('({}, {})'.format(ga.osm['y'], ga.osm['x']))
- print(sys.argv[2].title(),end=" ")
- print('({}, {})'.format(gb.osm['y'], gb.osm['x']))
- etaisyys=laskeEtaisyys(ga.osm['y'],ga.osm['x'],gb.osm['y'],gb.osm['x'])
- kaarevuus=laskeKaarevuus(etaisyys)
- print("Välimatka:",round(etaisyys,1),"km")
- if kaarevuus != math.inf:
- print("Kaarevuus:",round(kaarevuus*1000),"m")
- else:
- print("Kaarevuutta ei voida laskea")
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement