API сервиса - Godis715/Krasnodar-Road-Network GitHub Wiki
API
GET /nodes/info
Возвращает словарь:
node_id -> [double double] (lon lat)
{
"111": [
38.9446268,
45.0551932
],
}
GET /roads/info
Возвращает массив:
[[node_id, node_id, ...], ...]
[["295168889", "297087349", "295173006"], ["295173006", "297087349", "295168889"], ["295170449", "295170477", "295170466", "902766935", "295170487", "1116835057", "295170599", "295170450", "295170442"], ]
GET /objects/info
Возвращает словарь:
object_id ->
- type: str (Например, 'infrastructure')
- name: str (Например, 'hospital')
- location: [double double] (lon lat)
- ref: node_id
{
"111": {
"type": "infrastructure",
"name": "hospital",
"location": [
39.0625176,
45.0233715
],
"ref": "222"
},
}
POST /objects/find/closest
Параметры:
- nodes: node_id[] - узлы (любые)
- metrics: "to" | "from" | "to-from" - способ измерения расстояния (туда, обратно, туда-обратно)
{
"nodes": ["111", "222", "333"],
"metrics": "to-from"
}
Возвращает словарь: node_id -> node_id, т.е. ближайший объект
{
"111": "777",
"222": "333",
"...": "..."
}
POST /objects/find/in_radius
Параметры:
- nodes: node_id[]
- metrics: "to" | "from" | "to-from"
- max_dist: double - максимальное расстояние
{
"nodes": ["111", "222", "333"],
"metrics": "to-from",
"max_dist": 500
}
Возвращает словарь: node_id -> node_id[]
{
"111": ["444"],
"222": [],
"333": ["444", "555"]
}
POST /objects/find/optimal
Параметры:
- nodes: node_id[]
- criterion: "closest-furthest"|"min-dist-sum"|"min-tree-weight"
- metrics: "to" | "from" | "to-from"
{
"nodes": ["111", "222", "333"],
"criterion": "min-tree-weight",
"metrics": "to-from"
}
Возвращает node_id
{
"object_id": "444"
}
POST /shortest_paths_tree
Параметры:
- nodes: node_id[]
- object: node_id
Возвращает дерево кратчайших путей (массив дуг), вес дерева и сумму кратчайших путей:
{
"tree_weight": 500,
"paths_weight": 1000,
"shortest_paths_tree": ["1028409650", "1017947210"], ["1028410041", "1028409650"](/Godis715/Krasnodar-Road-Network/wiki/"1028409650",-"1017947210"],-["1028410041",-"1028409650")
}
POST /clustering
Параметры:
- nodes: node_id[]
- clusters_n: int
{
"nodes": ["111", "222", "333"],
"clusters_n": 5
}
Возвращает описание clusters_n кластеров и дендрограмму:
{
"clusters": [
{
"centroid": {
"id": "908908284",
"location": [
38.931468,
38.931468
]
},
"members": ["1000255556", "1017947210"]
},
{
"...": "..."
}
],
"dendrogram": {
"1000183034": [
"К кластеру "1000183034" подключился кластер "1012312979" на высоте 1"
{
"cluster": "1012312979",
"height": 1
},
"Затем - кластер i на высоте h"
{
"...": "..."
}
],
"...": [
{
"...": "..."
}
]
}
}
POST /clustering/shortest_paths_tree
Параметры:
- object: node_id
- clusters: из тела ответа Api '/clustering'
{
"object": "553326884",
"clusters": [
{
"centroid": {
"id": "908908284",
"location": [
38.931468,
38.931468
]
},
"members": ["1000255556", "1017947210"]
},
{
"...": "..."
}
]
}
Возвращает дерево кратчайших путей (массив дуг) проходящие через центроиды, вес дерева и сумму кратчайших путей:
{
"tree_weight": 500,
"paths_weight": 1000,
"shortest_paths_tree": ["1028409650", "1017947210"], ["1028410041", "1028409650"](/Godis715/Krasnodar-Road-Network/wiki/"1028409650",-"1017947210"],-["1028410041",-"1028409650")
}