Isochrone API
Isochrone API tính toán vùng di chuyển từ một vị trí với một loại phương tiện (chẳng hạn: đi bộ, xe đạp, xe máy, ô tô) trong khoảng thời gian hoặc trong khoảng bán kính. Nói một cách khác dễ hiểu hơn thì API này sẽ trả lời câu hỏi:
- Tôi đang đứng ở một vị trí, tôi muốn biết vùng mà tôi di chuyển bằng xe đạp trong khoảng 15 phút
- Từ vị trí của tôi đang đứng, tôi muốn biết vùng mà tôi đi bộ 2.5 km
Bạn có thể tham khảo ví dụ sử dụng Isochrone API với JavaScript
URL
URL: /navigation/isochrone/{profile}
Method
Method: POST
Parameters
*
tham số yêu cầu.
Tham số | Mô tả | Giá trị |
---|---|---|
api_key* | Key xác thực để cho gọi dịch vụ | YOUR_API_KEY |
profile* | Loại phương tiện | driving-car , cycling-regular , foot-walking |
$ curl "https://api.ekgis.vn/navigation/isochrone/{profile}?api_key={YOUR_API_KEY}"
Body
*
tham số yêu cầu.
Tham số | Mô tả | Giá trị |
---|---|---|
locations* (array) | Tọa độ điểm bao gồm kinh độ, vĩ độ | Ví dụ: [105.809,21.0127] |
range* (array) | Phạm vi của phép phân tích tính bằng giây cho thời gian và mét cho khoảng cách. | Ví dụ: [300] |
attributes (array) | Danh sách thuộc tính isochrone. | area ,reachfactor ,total_pop Ví dụ: ["area"] |
id (string) | ID của yêu cầu. | Ví dụ: "centrality_request" |
intersections (boolean) | Tùy chọn có trả về polygon hay không. | true (mặc định), false |
interval (number) | Chêch lệch giữa các isochrone tính bằng giây cho thời gian và mét cho khoảng cách. | Ví dụ: 300 |
location_type (string) | Tùy chọn điểm bắt đầu hay điểm kết thúc. | start (mặc định), destination |
options (object) | Các tùy chọn cho isochrone. | Ví dụ: {avoid_borders:"all"} |
range_type (string) | Tùy chọn phân tích theo thời gian hay khoảng cách. | time (mặc định), distance |
smoothing (number) | Độ nhẵn đa giác. Giá trị từ 0 đến 100.0 . | Ví dụ:25 |
area_units (string) | Đơn vị diện tích. | m (mặc định), km , mile |
units (string) | Đơn vị khoảng cách (Chỉ khi range_type đặt distance ). | m (mặc định), km , mile |
options
:
Tham số | Mô tả | Giá trị |
---|---|---|
avoid_borders (string) | all cho không qua biên giới. controlled để vượt qua các biên giới mở nhưng tránh những vùng bị kiểm soát (Chỉ khi profile là driving-* ). | all ,controlled ,none |
avoid_countries (array) | Các quốc gia cần tránh (Chỉ khi profile là driving-* ). Danh sách các quốc gia tại đây. | Ví dụ:[11,193] |
avoid_features (array) | Danh sách khu vực cần tránh. | highways ,tollways ,ferries Ví dụ: ["highways"] |
avoid_polygons (object) | Các khu vực cần tránh cho tuyến đường. Được định dạng trong GeoJSON dưới dạng đối tượng Polygon hoặc Multipolygon. | |
round_trip (object) | Các tùy chọn áp dụng cho khứ hồi.
| Ví dụ:{"length":10000,"points":5} |
Ví dụ body gửi lên dạng JSON
như sau:
{ "locations": [ [ 105.809, 21.0127 ] ], "range": [ 1200 ], "range_type": "time"}
Response
Đối tượng trả về dạng GeoJSON
với các thông tin sau:
type
(string):metadata
(object): Thông tin về dịch vụ và yêu cầu.attribution
(string): Thông tin về bản quyền.engine
(object): Thông tin về dịch vụ isochrone.build_date
(string): Ngày cập nhật dịch vụ.graph_date
(string): Ngày cập nhật dữ liệu đồ thị.version
(string): Phiên bản back-end của dịch vụ.
id
(string): ID của yêu cầu.osm_file_md5_hash
(string): Hàm băm MD5 của tệp OSM được sử dụng để tạo biểu đồ.query
(object): Thông tin được sử dụng để tạo ra các isochrone.service
(string): Dịch vụ được yêu cầu.system_message
(string): Tin nhăn hệ thông.timestamp
(integer): Thời gian thực hiện yêu cầu.
bbox
([double]): Vùng bao các isochrone trả về.features
([object]):geometry
(object):type
(string):
Ví dụ dữ liệu trả về dạng GeoJSON
:
{"type": "FeatureCollection","metadata": {"service": "isochrones","timestamp": 1686112857341,"query": {"profile": "driving-car","isoMaps": {"isochroneMaps": [{"travellerId": 0,"envelope": {"null": false,"area": 0.1543445456195558,"width": 0.3991530128627545,"height": 0.38668014682536267,"maxX": 105.96377870056943,"minY": 20.828230169211725,"maxY": 21.214910316037088,"minX": 105.56462568770668},"isochrones": [{"geometry": {"type": "Polygon","coordinates": [[[105.56462568770668,20.98935394841087],...[105.56462568770668,20.98935394841087]]]},"value": 1200,"area": 0,"reachfactor": 0,"envelope": {"null": false,"area": 0.1543445456195558,"width": 0.3991530128627545,"height": 0.38668014682536267,"maxX": 105.96377870056943,"minY": 20.828230169211725,"maxY": 21.214910316037088,"minX": 105.56462568770668},"attributes": null}],"center": {"x": 105.80881094452126,"y": 21.012466501597977,"z": "NaN"},"graphDate": "2023-06-02T09:41:21Z","empty": false,"isochronesCount": 1}],"isochronesCount": 1},"isochroneRequest": {"id": null,"travellers": [{"id": "0","location": {"x": 105.809,"y": 21.0127,"z": "NaN"},"locationType": "start","ranges": [1200],"rangeType": "TIME","routeSearchParameters": {"profileType": 1,"weightingMethod": 1,"considerTurnRestrictions": false,"avoidAreas": null,"vehicleType": 0,"bearings": null,"flexibleMode": false,"optimized": true,"extraInfo": 0,"suppressWarnings": false,"avoidCountries": null,"avoidBorders": "NONE","alternativeRoutesCount": -1,"alternativeRoutesWeightFactor": 1.4,"alternativeRoutesShareFactor": 0.6,"roundTripLength": -1,"roundTripPoints": 2,"roundTripSeed": -1,"maximumSpeed": 0,"options": null,"departure": null,"arrival": null,"avoidFeatureTypes": 0,"profileParameters": null,"maximumRadiuses": null,"profileTypeDriving": true,"profileTypeHeavyVehicle": false,"timeDependent": false},"maximumRange": 1200}],"calcMethod": "fastisochrone","units": null,"areaUnits": null,"includeIntersections": false,"attributes": null,"valid": true,"locations": [{"x": 105.809,"y": 21.0127,"z": "NaN"}],"profilesForAllTravellers": ["driving-car"],"weightingsForAllTravellers": ["fastest"]},"locations": [[105.809,21.0127]],"range": [1200],"range_type": "time"},"engine": {"version": "6.7.0","build_date": "2023-06-02T13:39:24Z","graph_date": "2023-06-02T09:41:21Z"}},"bbox": [105.564626,20.82823,105.963779,21.21491],"features": [{"type": "Feature","properties": {"group_index": 0,"value": 1200,"center": [105.80881094452126,21.012466501597977]},"geometry": {"coordinates": [[[105.564626,20.989354],...[105.564626,20.989354]]],"type": "Polygon"}}]}