def prepare_endpoint(point): """Return `point` as a dictionary ready to be passed on to the router.""" if isinstance(point, (list, tuple)): return dict(lat=point[1], lon=point[0]) geocoder = poor.Geocoder("default") results = geocoder.geocode(point, dict(limit=1)) return prepare_endpoint((results[0]["x"], results[0]["y"]))
def prepare_point(point): """Return geocoded coordinates for `point`.""" if isinstance(point, (list, tuple)): return point[0], point[1] geocoder = poor.Geocoder("default") results = geocoder.geocode(point, dict(limit=1)) return results[0]["x"], results[0]["y"]
def prepare_endpoint(point): """Return `point` as a string ready to be passed on to the router.""" if isinstance(point, (list, tuple)): return "{:.5f},{:.5f}".format(point[0], point[1]) geocoder = poor.Geocoder("default") results = geocoder.geocode(point, dict(limit=1)) return prepare_endpoint((results[0]["x"], results[0]["y"]))
def prepare_point(point): """Return geocoded coordinates for `point`.""" # Foursquare does geocoding too, but not that well. if isinstance(point, (list, tuple)): return point[0], point[1] geocoder = poor.Geocoder("default") results = geocoder.geocode(point, params=dict(limit=1)) return results[0]["x"], results[0]["y"]
def prepare_endpoint(point): """Return `point` as a string ready to be passed on to the router.""" if isinstance(point, (list, tuple)): return "{{lat: {:.6f}, lon: {:.6f}}}".format(point[1], point[0]) geocoder = poor.Geocoder("digitransit") # XXX: limit=1 sometimes returns no results!? results = geocoder.geocode(point, dict(limit=3)) return prepare_endpoint((results[0]["x"], results[0]["y"]))
def geocode(query, params): """Return a list of dictionaries of places matching `query`.""" for i, provider in enumerate(providers): geocoder = poor.Geocoder(provider) # 'geocode' returns an empty list or a dict(error=True) # in case of no results or an error. results = geocoder.geocode(query, params) if results and isinstance(results, list): if i > 0: providers.insert(0, providers.pop(i)) return results return []
def __init__(self, id): """Initialize a :class:`Guide` instance.""" # Initialize properties only once. if hasattr(self, "id"): return path, values = self._load_attributes(id) self._attribution = values.get("attribution", {}) self.geocoder = poor.Geocoder(values.get("geocoder", "default")) self.id = id self.name = values["name"] self._path = path self._provider = None self._init_provider(id, re.sub(r"\.json$", ".py", path))
def set_geocoder(self, geocoder): """Set geocoding provider from string `geocoder`.""" try: self.geocoder = poor.Geocoder(geocoder) poor.conf.set_geocoder(geocoder) except Exception as error: print("Failed to load geocoder '{}': {}".format( geocoder, str(error)), file=sys.stderr) if self.geocoder is None: default = poor.conf.get_default("geocoder") if default != geocoder: self.set_geocoder(default)
def prepare_endpoint(point): """Return `point` as a dictionary ready to be passed on to the router.""" if isinstance(point, (list, tuple)): return dict(lat=point[1], lon=point[0]) if isinstance(point, dict): d = dict(lat=point["y"], lon=point["x"]) if "text" in point: d["name"] = point["text"] if "destination" in point and not point["destination"]: d["type"] = "break_through" else: d["type"] = "break" return d geocoder = poor.Geocoder("default") results = geocoder.geocode(point, params=dict(limit=1)) return prepare_endpoint((results[0]["x"], results[0]["y"]))
def __init__(self, id): """Initialize a :class:`Router` instance.""" # Initialize properties only once. if hasattr(self, "id"): return path, values = self._load_attributes(id) self._attribution = values.get("attribution", {}) self.geocoder = poor.Geocoder(values.get("geocoder", "default")) self.id = id self.name = values["name"] self._path = path self._can_reroute = values.get("can_reroute", True) self.offline = values.get("offline", False) self._from_needed = values.get("from_needed", True) self._to_needed = values.get("to_needed", True) self._provider = None self._init_provider(id, re.sub(r"\.json$", ".py", path))