Skip to content

Commit c8cd4db

Browse files
committed
Added straight-distance data
1 parent ef3f6b6 commit c8cd4db

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

get_city_data.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
1+
""" Horrible run-once code to download city data. """
2+
13
import time
24
import json
5+
import itertools
36
from urllib.request import urlopen, quote
47

58
MAPS_API_TEMPLATE = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={}&destinations={}&mode=car&units=metric"
9+
STRAIGHT_DISTANCE_TEMPLATE = "http://www.travelmath.com/flying-distance/from/{}/to/{}"
10+
11+
12+
def miles_to_meters(miles):
13+
return miles / 0.00062137
14+
15+
16+
def get_straight_distance(city_from, city_to):
17+
city_from = '+'.join(city_from.split(' '))
18+
city_to = '+'.join(city_to.split(' '))
19+
url = STRAIGHT_DISTANCE_TEMPLATE.format(city_from, city_to)
20+
raw_response = urlopen(url).read().decode(encoding='UTF-8')
21+
miles = raw_response.find("miles", 20000)-10
22+
start_index=raw_response.find(r'"', miles)+2
23+
end_index = raw_response.find(r' ', start_index+1)
24+
straight_distance = raw_response[start_index:end_index]
25+
num = int(straight_distance.replace(',',''))
26+
return miles_to_meters(num)
627

728

829
def get_city_distance(city_from, city_to):
@@ -44,7 +65,7 @@ def get_city_distance(city_from, city_to):
4465
"Miami, FL": ["Orlando, FL"],
4566
}
4667

47-
if __name__ == '__main__':
68+
def get_in_between_distances():
4869
adjacency_list_with_distance = {}
4970
for city_from in adjacency_list:
5071
distances_to_adjacent_cities = {}
@@ -58,3 +79,19 @@ def get_city_distance(city_from, city_to):
5879
with open("city_data.json", "w") as f:
5980
f.write(json.dumps(adjacency_list_with_distance))
6081

82+
83+
def get_straight_distances():
84+
all_cities = list(adjacency_list.keys())
85+
straight_distances = dict([(key, {}) for key in all_cities])
86+
for (city_from, city_to) in itertools.permutations(all_cities, 2):
87+
distance = get_straight_distance(city_from, city_to)
88+
straight_distances[city_from][city_to] = distance
89+
print("Straight distance from {} to {} is {}".format(city_from, city_to, distance))
90+
91+
with open("straight_city_distances.json", "w") as f:
92+
f.write(json.dumps(straight_distances))
93+
94+
if __name__ == '__main__':
95+
get_in_between_distance()
96+
get_straight_distances()
97+

0 commit comments

Comments
 (0)