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ệndriving-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 profiledriving-*).all,controlled,none
avoid_countries
(array)
Các quốc gia cần tránh (Chỉ khi profiledriving-*). 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.
  • length(number): Chiều dài của tuyến đường đơn vị là m.
  • points(integer): Số lượng các điểm trên tuyến đường. Các giá trị lớn hơn tạo ra nhiều tuyến đường tròn hơn.
  • seed(integer): Số lượng tuyến đường được tạo.
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"
}
}
]
}