Xây dựng API dẫn đường mới cho VMap: - Ngôn ngữ sử dụng: python
- Thư viện: flask, json, requests, polyline, pickle, sklearn
API dẫn đường mới sẽ có đường dẫn và cấu trúc truy vấn tương tự với dịch vụ hiện có của VMap. Các trường cụ thể được thể hiện ở Bảng 3.3. API khi có yêu cầu gửi lên sẽ sử dụng thư viện request để lấy kết quả chỉ đường từ dịch vụ chỉ đường hiện có của VMap. Dữ liệu đường đi của kết quả chỉ đường này sẽ được truyền vào mô hình sẽ được trình bày bên dưới, đã được lưu lại bằng cách sử dụng thư viện pickle, để tính toán lại ước lượng thời gian di chuyển. Để thay đổi giá trị ước lượng thời gian di chuyển của kết quả trả về, ta cần quan tâm tới 2 thông số là points_encoded và instructions. Nếu người dùng sử dụng thông số points_encoded=”true”, API sẽ sử dụng thư viện polyline để giải mã dữ liệu đường đi đã được mã hóa, truyền dữ liệu đường đi vào mô hình. Nếu
tìm đường của dịch vụ chỉ đường VMap và thêm một thông số time_in_traffic tương ứng với mỗi thông số time của kết quả.
Kết quả trả về dưới dạng JSON, có cấu trúc như ở Bảng 3.4.
Bảng 3.3. Các thông số truy vấn có thể gửi lên
Thông số Miêu tả
point (bắt buộc) Điểm đầu và điểm cuối mà người dung muốn tìm đường. Định dạng [vĩ độ, kinh độ]
vehicle Phương tiện muốn tìm đường. Bao gồm: “car” (oto), “motobike” (xe máy), “bike” (xe đạp) và “foot” (đi bộ)
locale Mặc định: “vn”
Ngôn ngữ hướng dẫn trong kết quả trả về. Ví dụ: “en” ho tiếng Anh hoặc “de” cho tiếng Đức
elevation Mặc định: “false”
Nếu là “true”, thuật toán sẽ ước tính chiều dài của quãng đường bằng cách sử dụng thêm mô hình độ cao số.
details Tham số tùy chọn để truy xuất chi tiết đường dẫn. Bạn có thể yêu cầu chi tiết bổ sung cho tuyến đường: “street_name”, “time”, “distance”, “max_speed”, “toll”, “road_class”, “road_class_link”, “road_access”, “road_environment”, “lanes”, và “surface”
instructions Mặc định: “true”
Trả về các hướng dẫn đi trên tuyến đường
points_encoded Mặc định: “true”
Cho phép thay đổi mã hóa dữ liệu vị trí trong phản hồi. Mặc định là mã hóa polyline, nhỏ gọn nhưng yêu cầu mã máy khách đặc biệt để giải nén. Đặt tham số này thành “false” để chuyển mã hóa sang các cặp tọa độ đơn giản như [kinh độ, vĩ độ] hoặc [kinh độ, vĩ độ, độ cao].
ch.disable Mặc định: “false”
Sử dụng tham số này kết hợp với một hoặc nhiều tham số từ bên dưới.
algorithm Mặc định: “round_trip”
Thay đổi thành “alternative_route” khi bạn muốn trả về nhiều hơn 1 đường đi
alternative_route.max_paths Mặc định: “2”
Nếu algorithm = “alternative_route”, tham số này đặt số lượng đường dẫn tối đa sẽ được tính toán. Tăng có thể dẫn đến các lựa chọn thay thế kém hơn.
Bảng 3.4. Các thông số truy vấn có thể gửi lên
Thông tin Miêu tả
paths Mảng đối tượng (RouteResponsePath)