def write_plotting_data_to_file(dropbox_filename = '/othodi/cities_few.txt',out_fname = 'data4plotting.txt'): m1=mapm.Map() m1.add_locations_from_file(fname=dropbox_filename,dropbox=True) print(len(m1.locations)) origin = locm.Location("Moscow",name='Moscow') raw_routes = [] for location in [locn for locn in m1.locations if locn.name != origin.name]: if 'lat' in location.coords and 'lng' in location.coords: try: raw_routes.append(gmaps.get_route(origin.coords, location.coords)) except Exception as e: print('Warning: Error in get_route for location %s: no data from gmaps?\n%s' % (location.address,e)) from operator import itemgetter raw_routes.sort(key=itemgetter(-1)) # sort by duration # for i,point in enumerate(m1.locations): # print("%i: %s" % (i,str(point.coords))) add_points_coords_list = [(point.coords['lat'],point.coords['lng']) for point in m1.locations] add_points_annotes_list = [point.name for point in m1.locations] with open(out_fname,'w') as f: f.write(str(raw_routes[0][0])) f.write('\n') f.write(str(raw_routes[0][1])) f.write('\n') f.write(str(add_points_coords_list)) f.write('\n') f.write(str(add_points_annotes_list)) return raw_routes[0][0],raw_routes[0][1],add_points_coords_list,add_points_annotes_list
def __init__(self, *args, **kwargs): if len(args)==2 and all(isinstance(point, dict) for point in args): self._start = args[0] self._finish = args[1] gdata = gmaps.get_route(self._start, self._finish) main_dict = gdata["routes"][0]['legs'][-1] self._duration = main_dict[u'duration'] self._distance = main_dict[u'distance'] self._waypoints, self._wp_durations = [self._start], [0] for step in main_dict[u'steps']: self._waypoints.append(step[u'end_location']) self._wp_durations.append(step[u'duration']['value']) else: raise ValueError('Wrong arguments passed to constructor.')
def __init__(self, *args, **kwargs): if len(args) == 2 and all(isinstance(point, dict) for point in args): self._start = args[0] self._finish = args[1] gdata = gmaps.get_route(self._start, self._finish) main_dict = gdata["routes"][0]['legs'][-1] self._duration = main_dict[u'duration'] self._distance = main_dict[u'distance'] self._waypoints, self._wp_durations = [self._start], [0] for step in main_dict[u'steps']: self._waypoints.append(step[u'end_location']) self._wp_durations.append(step[u'duration']['value']) else: raise ValueError('Wrong arguments passed to constructor.')
# s2 = Location("Moscow") print(s1.coords) # s1.coords = {'we': 21, 'wee': 23} # print(s1.coords) import tools print(tools.distance_straight(s1.coords,s2.coords)) import mapm mo = mapm.Map(locations = [s1,s2]) import gmaps cities_names = ['Moscow','Sarov','Krasnogorsk','Zelenograd','Dubna'] sample_filename = tools.write_sample_cities_data_to_file(cities_names) locs_list = create_locations_list(sample_filename) str_lst = [loc.to_str() for loc in locs_list] for el in str_lst: print(el) origin = Location("Moscow",name='Moscow') raw_routes = [] for location in [locn for locn in locs_list if locn.name != origin.name]: raw_routes.append(gmaps.get_route(origin.coords, location.coords)) #!!! rewrite: from operator import itemgetter raw_routes.sort(key=itemgetter(-1)) # sort by duration from pprint import pprint as pp pp(raw_routes) import plot_routes add_points_coords_list = [(point.coords['lat'],point.coords['lng']) for point in locs_list] add_points_annotes_list = [point.name for point in locs_list] plot_routes.plot_route_on_basemap(raw_routes[0][0], raw_routes[0][1], [add_points_coords_list,add_points_annotes_list]) # plots nearest route