Skip to content

Instantly share code, notes, and snippets.

@CodeWithCory
Last active March 31, 2017 10:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CodeWithCory/e061b9846d1bfa28fc88d8a03f753dd0 to your computer and use it in GitHub Desktop.
Save CodeWithCory/e061b9846d1bfa28fc88d8a03f753dd0 to your computer and use it in GitHub Desktop.
#Cory Leigh Rahman
#GEOG469: Python with Dr. Bortolot
#Python 2.7.8
#This Python program converts coordinates from Degrees Minutes Seconds to Decimal Degrees and vice versa.
def end():# Class which allows the program to end
print
print "Thanks for using Cory's Latitude/Longitude Conversion Program! Goodbye."
def startover():# Class which appears at the end of calculation, allowing startover without having to rerun the program
startoverx=raw_input("Start Over? Yes(1) or No, End Program(2): ")
startover_int=float(startoverx)
if startover_int==1:
print
print "**Starting Over**"
print
start()
elif startover_int==2:
end()
elif startover_int<1 or startover_int>2 or startover_int>1 and startover_int<2:
print
print "*Invalid Input*"
print
startover()
def start():# First class to run
conversion=raw_input("Please Select a conversion from the options below:"
'\n' "Conversion 1: Decimal Degrees to Degrees/Minutes/Seconds"
'\n' "Conversion 2: Degrees/Minutes/Seconds to Decimal Degrees"
'\n' "Conversion (1 or 2):")
conversion_int=int(conversion)
print
#DD>>DMS
if conversion_int==1:
print "***Decimal Degrees >>> Degrees/Minutes/Seconds***"
#Inputs
dns=raw_input("Input Latitude: ")
dew=raw_input("Input Longitude: ")
#Variables
dns_float=float(dns)
dns_degrees_int=int(dns_float)
dns_minutes=(dns_float-dns_degrees_int)*60
dns_seconds_float=float(dns_minutes)
dns_seconds_int=int(dns_seconds_float)
dns_seconds=(dns_seconds_float-dns_seconds_int)*60
dew_float=float(dew)
dew_degrees_int=int(dew_float)
dew_minutes=(dew_float-dew_degrees_int)*60
dew_seconds_float=float(dew_minutes)
dew_seconds_int=int(dew_seconds_float)
dew_seconds=(dew_seconds_float-dew_seconds_int)*60
dew_minutes_int=int(dew_minutes)
dns_minutes_int=int(dns_minutes)
ns_indicator="NORTH"
ew_indicator="EAST"
if dns_degrees_int<0:
dns_degrees_int=dns_degrees_int*(-1)
dns_minutes_int=dns_minutes_int*(-1)
dns_seconds=dns_seconds*(-1)
ns_indicator="SOUTH"
elif dew_degrees_int<0:
dew_degrees_int=dew_degrees_int*(-1)
dew_minutes_int=dew_minutes_int*(-1)
dew_seconds=dew_seconds*(-1)
ew_indicator="WEST"
#Results
print
print "Results:"
print
print "Latitude:",dns_degrees_int,"Degrees,",dns_minutes_int,"Minutes,",dns_seconds,"Seconds",ns_indicator
print "Longitude:",dew_degrees_int,"Degrees,",dew_minutes_int,"Minutes,",dew_seconds,"Seconds",ew_indicator
print
startover()
#DMS>>DD
elif conversion_int==2:
def latitude():
global dns_float_a
global mns_float_a
global sns_float_a
print "***Degrees/Minutes/Seconds >>> Decimal Degrees***"
print
print "Input Latitude"
#Variables
dns_a=raw_input("Degrees: ")
mns_a=raw_input("Minutes: ")
sns_a=raw_input("Seconds: ")
ns=raw_input("North (1) or South (2): ")
dns_float_a=float(dns_a)
mns_float_a=float(mns_a)
sns_float_a=float(sns_a)
ns_float=float(ns)
#south
if ns_float==2:
dns_float_a=dns_float_a*(-1)
mns_float_a=mns_float_a*(-1)
sns_float_a=sns_float_a*(-1)
#north
elif ns_float==1:
dns_float_a=dns_float_a*1
mns_float_a=mns_float_a*1
sns_float_a=sns_float_a*1
elif ns_float<1 or ns_float>2 or ns_float>1 and ns_float<2:
print
print "*Invalid Input*"
latitude()
def longitude():
global dns_float_b
global mns_float_b
global sns_float_b
print
print "Input Longitude"
#Variables
dns_b=raw_input("Degrees: ")
mns_b=raw_input("Minutes: ")
sns_b=raw_input("Seconds: ")
ns=raw_input("East (1) or West (2): ")
dns_float_b=float(dns_b)
mns_float_b=float(mns_b)
sns_float_b=float(sns_b)
ns_float=float(ns)
#south
if ns_float==2:
dns_float_b=dns_float_b*(-1)
mns_float_b=mns_float_b*(-1)
sns_float_b=sns_float_b*(-1)
#north
elif ns_float==1:
dns_float_b=dns_float_b*1
mns_float_b=mns_float_b*1
sns_float_b=sns_float_b*1
elif ns_float<1 or ns_float>2 or ns_float>1 and ns_float<2:
print
print "*Invalid Input*"
longitude()
latitude()
longitude()
#(d/m/s)ns_float_a
decimal_degrees_latitude=(dns_float_a)+(mns_float_a/60)+(sns_float_a/3600)
#(d/m/s)ns_float_b
decimal_degrees_longitude=(dns_float_b)+(mns_float_b/60)+(sns_float_b/3600)
print
print "Results:"
print
print "Latitude: ", decimal_degrees_latitude
print "Longitude: ", decimal_degrees_longitude
print
startover()
else:
print "*Invalid Input*"
print
start()
print "Welcome to Cory's Latitude/Longitude Conversion Program!" # First print
print
start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment