Corin1998 commited on
Commit
062eb58
·
verified ·
1 Parent(s): 8b1158b

Update services/osrm.py

Browse files
Files changed (1) hide show
  1. services/osrm.py +10 -9
services/osrm.py CHANGED
@@ -2,24 +2,25 @@ from __future__ import annotations
2
  import requests
3
  from typing import List, Tuple
4
 
5
- OSRM = "https://router.project-osrm.org" # 公開OSRM(ベストエフォート)
6
 
7
- def route_polyline(coords: List[Tuple[float, float]]):
8
- # coords:[((lon, lat),...]
9
  locs = ";".join([f"{lon},{lat}" for lon, lat in coords])
10
- url = f"{OSRM}/route/v1/driving/{locs}"
11
- params = {"overview":"full","geometries":"geojson"}
12
  r = requests.get(url, params=params, timeout=30)
 
13
  j = r.json()
14
  if not j.get("routes"):
15
  return None
16
  return j["routes"][0]
17
 
18
- def distance_matrix(coords: List[Tuple[float, float]]):
19
  locs = ";".join([f"{lon},{lat}" for lon, lat in coords])
20
- url = f"{OSRM}/table/v1/driving/{locs}"
21
- params = {"annotations":"duration.distance"}
22
- r = requests.get(url, params=params ,timeout=30)
23
  r.raise_for_status()
24
  j = r.json()
25
  return j["durations"], j["distances"]
 
2
  import requests
3
  from typing import List, Tuple
4
 
5
+ OSRM = "https://router.project-osrm.org" # Best-effort public OSRM
6
 
7
+ def route_polyline(coords: List[Tuple[float, float]], profile: str = "driving"):
8
+ # coords: [(lon, lat), ...]; profile: driving | foot | bike
9
  locs = ";".join([f"{lon},{lat}" for lon, lat in coords])
10
+ url = f"{OSRM}/route/v1/{profile}/{locs}"
11
+ params = {"overview": "full", "geometries": "geojson"}
12
  r = requests.get(url, params=params, timeout=30)
13
+ r.raise_for_status()
14
  j = r.json()
15
  if not j.get("routes"):
16
  return None
17
  return j["routes"][0]
18
 
19
+ def distance_matrix(coords: List[Tuple[float, float]], profile: str = "driving"):
20
  locs = ";".join([f"{lon},{lat}" for lon, lat in coords])
21
+ url = f"{OSRM}/table/v1/{profile}/{locs}"
22
+ params = {"annotations": "duration,distance"}
23
+ r = requests.get(url, params=params, timeout=30)
24
  r.raise_for_status()
25
  j = r.json()
26
  return j["durations"], j["distances"]