Блок "Конструктор графа"
Блок доступен начиная с версии 0.25
Назначение
Блок преобразует два набора объектов в структуру, пригодную для обработки блоком Слой данных для 3D-Карты. Для работы с блоком его необходимо выбрать в библиотеке и перенести в область графа.
Настройки блока
Работа с настройками блока осуществляется через локальное меню (пункт Настройки):
Общие настройки блоков описаны в отдельном разделе.
Группа "Конструктор графа
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Способ построения графа | Выпадающий список | Да | Выбор способа построения графа | |
| Радиус вершины для формирования графа | Целое число | Да | Доступно, если способ построения графа на основе географических точек и линий. Определяет радиус вокруг вершины, в котором будет происходить поиск начала или конца ребра, связанного с этой вершиной. | |
| Граф должен быть связным | Флаг | Нет | При включенном значении блок не будет продолжать расчет, если граф не связный |
Настройка "Способ построения графа"
Возможные варианты настройки "Способ построения графа" и механизмы формирования графа:
- На основе географических точек и линий:
- Для построения необходимо два массива объектов - Ребра и Вершины.
- В первичных ключах каждого объекта обязательно наличие поля
id, содержащего уникальный идентификатор ребра или вершины. Все объекты без идентификатора не будут учитываться в построении графа. - В атрибутах каждого объекта обязательно наличие параметра
coords, содержащего координаты (линии для ребер или точки для вершин). Все объекты без координат не будут учитываться в построении графа. - Для координат начала и конца каждой грани ищется вершина, попадающая в радиус формирования (см. параметр "Радиус вершины для формирования графа"). Первая найденная вершина будет соотнесена с началом/концом грани.
- Все ребра без вершин игнорируются.
- Все вершины без ребер добавляются в граф (при этом граф автоматически становится несвязным).
- Граф проверяется на связность.
- На основе только географических линий:
- В разработке.
- На основе связей (без географических привязок):
- Для построения необходимо два массива объектов - Ребра и Вершины.
- В первичных ключах каждого объекта обязательно наличие поле
id, содержащего уникальный идентификатор ребра или вершины. Все объекты без идентификатора не будут учитываться в построении графа. - В атрибутах каждого объекта-ребра обязательно наличие параметров
source_node_idиdestination_node_id, отвечающих за идентификаторы начальной и конечной вершины соответственно. Все ребра без одного или обоих параметров не будут учитываться в построении графа. - Граф проверяется на связность.
- На основе вершин с автоматическим построением ребер на основе маршрутов:
- В разработке.
Входы блока
Общие настройки входов блока описаны в отдельном разделе.
| Наименование входа | Тип | Обязательный | Описание |
|---|---|---|---|
| Ребра | JSON | Да | Список ребер графа |
| Вершины | JSON | Нет | Вход необходим, если выбран способ построения "На основе географических точек и линий" или "На основе связей (без географических привязок)" |
Пример входа Ребра
[
{
"pkey": {
"id": 1
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 1",
"ord": 1,
"coords": "[[0, 0], [1, 1], [5,0]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 1"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 2
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 2",
"ord": 2,
"coords": "[[5, 0], [5, 1], [5, 2], [5, 4], [5, 5]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 2"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 3
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 3",
"ord": 3,
"coords": "[[5,5], [2, 8], [0,5]]",
"edge_direction": 0,
"weight": 3,
"popup": "Edge 3"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 4
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 4",
"ord": 4,
"coords": "[[0,5], [0,4], [0,3], [0,2], [0,1], [0,0]]",
"edge_direction": 0,
"weight": 3,
"popup": "Edge 4"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 5
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 5",
"ord": 5,
"coords": "[[0,0], [2,3], [5,5]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 5"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 6
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 6",
"ord": 6,
"coords": "[[3,3], [7,7], [9,9]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 6"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 7
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 7",
"ord": 7,
"coords": "[[47, 45], [10, 35], [46, 16]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 7"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 8
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 8",
"ord": 8,
"coords": "[[0, 18], [25, 25], [31, 46]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 8"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 9
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 9",
"ord": 9,
"coords": "[[10, 35], [25, 11], [46, 16]]",
"edge_direction": 0,
"weight": 2,
"popup": "Edge 9"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 10
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": " Edge 10",
"ord": 10,
"coords": "[[25, 11], [0, 18], [46, 16]]",
"edge_direction": 0,
"weight": 2,
"popup": " Edge 10"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 11
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": " Edge 11",
"ord": 11,
"coords": "[[47, 45], [47, 32], [47, 16], [46, 16]]",
"edge_direction": 0,
"weight": 2,
"popup": " Edge 11 (W=2, D=0)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 12
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": " Edge 12",
"ord": 12,
"coords": "[[10, 35], [0, 18], [47, 45]]",
"edge_direction": 0,
"weight": 2,
"popup": " Edge 12"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 13
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": " Edge 13",
"ord": 13,
"coords": "[[46, 16], [31, 46], [47, 45]]",
"edge_direction": 0,
"weight": 2,
"popup": " Edge 13"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 14
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 14",
"ord": 14,
"coords": "[[10, 2], [13, 0], [20, 2]]",
"edge_direction": 0,
"weight": 50,
"popup": "Edge 14 (W=30, D=1)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 15
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Edge 15",
"ord": 15,
"coords": "[[10, 2], [13, 4], [20, 2]]",
"edge_direction": 0,
"weight": 40,
"popup": "Edge 15 (W=40, D=0)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 992
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE 11-6",
"ord": 992,
"coords": "[[34, 39], [39, 39], [44, 40], [45, 44], [47, 45]]",
"edge_direction": 0,
"weight": 53,
"popup": "EDGE 11-6 (W=53, D=0)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 993
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE 11-12",
"ord": 993,
"coords": "[[34, 39], [31, 46]]",
"edge_direction": 0,
"weight": 12,
"popup": "EDGE 11-12 (W=12, D=1)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 995
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE LINK (n14-n15)",
"ord": 995,
"coords": "[[12,1], [12,3]]",
"edge_direction": 0,
"weight": 1,
"popup": "EDGE LINK (n14-n15)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 996
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE LINK (n13-n14)",
"ord": 996,
"coords": "[[10,2], [12,1]]",
"edge_direction": 0,
"weight": 1,
"popup": "EDGE LINK (n13-n14)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 997
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE LINK (n17-n11)",
"ord": 997,
"coords": "[[20,2],[25, 15], [34,39]]",
"edge_direction": 0,
"weight": 100,
"popup": "EDGE LINK (n17-n11) (W=1, D=0)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 998
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE LINK (n3-n5)",
"ord": 998,
"coords": "[[5, 5], [6, 6]]",
"edge_direction": 0,
"weight": 1,
"popup": "EDGE LINK (n3-n5)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
},
{
"pkey": {
"id": 999
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "EDGE LINK (n2-n13)",
"ord": 999,
"coords": "[[5, 0], [10,2]]",
"edge_direction": 0,
"weight": 1,
"popup": "EDGE LINK (n2-n15)"
},
"child": [],
"_source": "e5d39145-93b3-4bef-8842-e7a69e910d19"
}
]
Пример входа Вершины
[
{
"pkey": {
"id": 1
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 1",
"ord": 1,
"coords": "[0, 0]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 2
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 2",
"ord": 2,
"coords": "[5, 0]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 3
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 3",
"ord": 3,
"coords": "[5, 5]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 4
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 4",
"ord": 4,
"coords": "[0, 5]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 5
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 5",
"ord": 5,
"coords": "[6,6]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 6
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 6",
"ord": 6,
"coords": "[47, 45]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 7
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 7",
"ord": 7,
"coords": "[10, 35]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 8
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 8",
"ord": 8,
"coords": "[25, 11]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 9
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 9",
"ord": 9,
"coords": "[46, 16]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 10
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 10",
"ord": 10,
"coords": "[0, 18]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 11
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 11",
"ord": 11,
"coords": "[34, 39]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 12
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 12",
"ord": 12,
"coords": "[31, 46]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 13
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 13",
"ord": 13,
"coords": "[10,2]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 14
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 14",
"ord": 14,
"coords": "[12,1]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 15
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 15",
"ord": 15,
"coords": "[12,3]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
},
{
"pkey": {
"id": 17
},
"_params": {
"ts": [],
"lazy": [],
"key_field": "id"
},
"attrs": {
"name": "Node 17",
"ord": 17,
"coords": "[20,2]"
},
"child": [],
"_source": "0b362bb0-fa89-40ba-81d2-ae8003eb34e7"
}
]
Выходы блока
Общие настройки выходов блока описаны в отдельном разделе.
| Наименование выхода | Тип | Описание |
|---|---|---|
| Граф | JSON | Структура из двух массивов объектов, связанных между собой |
Структура выхода Граф
Описание работы блока
Блок принимает на вход данные в виде массивов объектов «Рёбра» и «Вершины» и объединяет их в единый объект «Граф».

