def cli(location, **kwargs): "Geocode an arbitrary number of strings from Command Line." locations = [] # Read Standard Input # $ cat foo.txt | geocode try: for line in fileinput.input(): locations.append(line.strip()) except: pass # Read multiple files & user input location for item in location: if os.path.exists(item): with open(item, 'rb') as f: locations += f.read().splitlines() else: locations.append(item) # Distance calcuation if kwargs['distance']: d = geocoder.distance(locations, **kwargs) click.echo(d) return # Geocode results from user input for location in locations: g = geocoder.get(location.strip(), **kwargs) try: click.echo(json.dumps(g.__getattribute__(kwargs['output']))) except IOError: # When invalid command is entered a broken pipe error occurs return
def calc_tract_dist(tract_file, facility_file, dist_file): """Calculate the distance between tract between every hospital/house""" facility = pd.read_csv(facility_file, sep='\t') tract = pd.read_csv(tract_file) geoid_dist = {} for index, row in tract.iterrows(): id = row['geoid'] lat = row['lat'] long = row['lng'] l1 = (lat, long) dist_list = [] for i, r in facility.iterrows(): name = r['name'] lat_f = r['lat'] long_f = r['lng'] l2 = (lat_f, long_f) dist = geocoder.distance(l1, l2, units='miles') dist_list.append((dist, name)) dist_list.sort(key=lambda x:x[0]) #print(id) #print(dist_list[:10]) #exit(1) geoid_dist[id] = dist_list geoid_dist = pd.Series(geoid_dist, name='distance') geoid_dist.index = geoid_dist.index.map(lambda x:'%.0f' % x) geoid_dist.to_csv(dist_file, sep='\t', index_label='geoid', header=True, float_format='%.3f')
def get_distance(location, center): try: if location.country == center.country and location != center: distance = geocoder.distance(center, location) else: distance = -1 return distance except: return -1
def distance_between_coordinates(coord1, coord2): return geocoder.distance(coord1, coord2) # km
def get_distance(start, destination): d = geocoder.distance(start, destination) return round(d, 2)
def get_distance(self): location1 = self.start_location location2 = self.end_location coord1 = [location1.latitude, location1.longitude] coord2 = [location2.latitude, location2.longitude] return round(geocoder.distance(coord1, coord2), 1)
def test_distance(): for i in xrange(repeat): d = geocoder.distance(ottawa, toronto) if d.ok: return True return False
import re import geocoder data = pd.read_csv('resources/Canadian Arctic Archipelago.csv') def convert_dms(coord): match = re.search(r'(\d+)\D+(\d+)\D+([NSWE])', coord) if match: degree, minutes, direction = match.groups() degree, minutes = float(degree), float(minutes) dms = degree + minutes / 60.0 if direction in ['N', 'E']: return dms elif direction in ['W', 'S']: return -1 * dms print 'name,lat,lng,distance,lat-osm,lng-osm' for index, row in data.iterrows(): g = geocoder.osm('{}'.format(row['name'])) distance = geocoder.distance(g.latlng, [row['lat'], row['lng']]) print '{},{},{},{},{},{}'.format( row['name'], row['lat'], row['lng'], distance, g.lat, g.lng )