Трассировка сети

Трассировка: путь от узла к источнику, всё ниже по потоку, связанные объекты, зоны и участки без питания.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Эксплуатация → «Трассировка сети». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
доступно всем, кто вошёл.
Короткое видео: как это выглядит в системе
Читаю как

Возможности

  • Четыре вида трассировки от участков и узлов: «К источнику», «Ниже по потоку», «Связанные», «Зона». Начальных объектов может быть несколько — номера через запятую, пробел или точку с запятой.
  • «Барьеры»: участки и узлы, через которые обход не идёт. У «Связанных» и «Зоны» — ещё остановка по условию: «Задвижки», «Насосные», «Узлы заданного напора», «Источники».
  • «Настройка трассировки» — готовые наборы (вид + условия остановки): пять встроенных, свои и общие. Свою можно сохранить и удалить.
  • Итог над таблицей: участки, узлы, длина и объём труб, питающие точки, задвижки, потребители и их нагрузка.
  • Вкладки «Потребители», «Задвижки», «Питающие точки» с переходом к объекту на карте; «CSV» — выгрузка.
  • Результат на карте; его же можно добавить в выбор на карте для правки нескольких объектов или контура журнала.
  • Режим «Зоны сети» — все зоны сети и участки без питания для проверки данных.
  • Открыть окно сразу от объекта — кнопка в карточке участка или узла (подсказка «Трассировка: к источнику, ниже по потоку, зона»).

Как это работает

Трассировка идёт по тому же графу, что и локализация аварий: магистральные участки без внутренних схем узлов, участки с отключёнными трубами не проводят воду. Закрытая задвижка на участке — барьер всегда. Закрытая задвижка во внутренней схеме камеры обход не останавливает: камера в графе — один узел, и по модели не определить, какую ветку схемы задвижка перекрывает. Питающие точки — источники тепла и узлы заданного напора: через них квартальные сети берут воду из магистрали. Направление «к источнику» и «ниже по потоку» задают питающие точки, а не направление потока из расчёта. Это оценка по связности: напор и расход не проверяются.

Вид Что находит
К источнику Узлы и участки на всех путях от питающих точек до начального объекта; в кольце — все обходы. От участка — со стороны ближнего к источнику конца. Потребители не считаются.
Ниже по потоку Что потеряет связь с питанием, если вывести начальные участки и узлы.
Связанные Всё, что соединено с объектом по проводящим участкам.
Зона Компонента связности сети, в которую входит объект, и её питающие точки.

Объект-барьер по условию попадает в результат, но обход через него не идёт. «Задвижки» — участки с задвижкой и узлы с задвижками во внутренней схеме. Пользовательский участок-барьер не проводит воду, узел-барьер исключается из сети.

Встроенные настройки: «Путь к источникам», «Что останется без питания», «Участок между задвижками» (связанные до задвижек), «Квартальная сеть (до насосных и узлов заданного напора)», «Зона сети». Свои настройки хранятся в базе города. Личные видит только автор, общие — все. Если поменять вид или условия после выбора настройки, выбор снимается и поле показывает «Своя». Кнопка удаления видна у своих настроек, а у чужих общих — только пользователю с правом «Справочники и шаблоны карточек»; у встроенных её нет.

Ограничения.

  • В каждом поле — не больше 500 номеров.
  • Если в результате больше 20 000 участков, геометрия не передаётся. Кнопка «Показать на карте» неактивна, участки доступны списком и в CSV.
  • Сервер отдаёт не больше 2000 потребителей, в таблице показаны первые 200. Под таблицей — «Показаны первые 200 из N — полный список в CSV»; если сервер обрезал список на 2000, — «Показаны первые 200 из N; в CSV — первые 2000: сузьте трассировку».

Зоны сети строятся по всей сети. Закрытые задвижки на участках разрезают сеть. Таблица «Без питания — проверить данные» показывает до 100 зон без единой питающей точки: это разрыв топологии, потерянная связь фрагментов или сеть, отрезанная закрытыми задвижками. Ниже — 20 крупнейших зон с питанием. «Показать» запускает трассировку «Зона» от узла этой зоны.

Карта. Участки результата выделены цветом вида трассировки, потребители — кружками. Карта подстраивается под охват результата. Результат ничего не меняет в базе.

Что нужно для работы

  • Данные: топология сети, задвижки с состоянием, источники и узлы заданного напора. Без питающих точек «К источнику» и «Ниже по потоку» не дают результата.
  • Права: трассировка и зоны — любой вошедший пользователь, включая роль «Просмотр». Свою настройку сохраняет любой вошедший. Общую — пользователь с правом «Справочники и шаблоны карточек» (роли «Редактор» и «Администратор»); у остальных нет отметки «Общая». Удалить можно свою настройку, а чужую общую — с тем же правом.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Трассировка сети» — пункт выделен рамкой.

    Пункт «Трассировка сети» в панели «Инструменты»

  2. Нажмите пункт — откроется окно.

    Окно «Трассировка сети»

  3. Выберите направление («К источнику», «Ниже по потоку», «Связанные», «Зона») и впишите номер участка или узла, от которого идёт трассировка. Номер виден в карточке объекта; несколько номеров — через запятую.

    Трассировка сети: шаг 3

  4. Нажмите «Трассировать». Над таблицей — итог: сколько участков и узлов, длина и объём труб; найденное подсвечено на карте.

    Трассировка сети: шаг 4

  5. Вкладки результата — задвижки на пути и питающие точки (во всех режимах, кроме «К источнику», — ещё потребители). «CSV» выгружает список; потребителей в нём не больше 2000.

    Трассировка сети: шаг 5

  6. Нажмите «Показать на карте», затем «Оставить на карте» — окно закроется, а найденные участки и узлы останутся выделенными на карте.

    Трассировка сети: шаг 6

Примеры

Копия Алматы, участок 133.

  • «К источнику»: 873 участка, 830 узлов, 180 192,8 м труб, 82 880 м³. Питающих точек 3: источники в узлах 713 и 714 и узел заданного напора 726. На пути — 26 задвижек.
  • «Ниже по потоку»: без участка 133 связь с питанием теряют 5 узлов и 5 участков (778 м труб), а с ними 4 потребителя на 29,43 Гкал/ч.
  • «Участок между задвижками»: 1712 участков и 948 потребителей на 3224,25 Гкал/ч. Обход остановился на 6 узлах-камерах, найдено 30 задвижек. Это та же зона, что даёт «Локализация аварий» для участка 133 (28 задвижек закрыть и 2 уже закрыты).
  • «Зоны сети»: 4819 зон, у 4403 есть питание, 416 зон без питания (1903 узла). Самая крупная — 1744 узла, 1800 участков, 3 питающие точки.

Если не получается

  • «Укажите участок или узел — начальную точку трассировки» — оба поля пусты.
  • «12а» — не номер объекта: в поле попало не целое число. «Не больше 500 объектов в списке» — сократите список.
  • «Участки не входят в расчётную схему (удалены, отключены или без топологии): …» — участок удалён, отключён, без узлов или из внутренней схемы узла. То же для узлов — «Узлы не входят в расчётную схему…».
  • «Нет связи ни с одной питающей точкой» на вкладке «Питающие точки» — объект в зоне без питания; проверьте её в «Зонах сети».
  • «Участков слишком много для показа на карте — доступны списком и в CSV.» — больше 20 000 участков; сузьте трассировку барьерами.
  • Нет кнопки удаления у выбранной настройки — она встроенная или это чужая общая настройка, а права «Справочники и шаблоны карточек» нет.
  • «Не удалось загрузить настройки трассировки», «Не удалось сохранить настройку», «Не удалось удалить настройку», «Не удалось выполнить трассировку», «Не удалось построить зоны сети» — ошибка сервера или связи.

Для администратора

  • Расчёт идёт в API синхронно. Граф сети кешируется в памяти процесса на 60 секунд по городу, вместе с ним — дерево блоков для «К источнику». Первая такая трассировка после сборки графа заметно дольше остальных: на копии Алматы — несколько секунд.
  • Свои настройки — таблица tgid_trace_config базы города. API создаёт её сам при запуске (миграция 20261029_trace_config.sql). Пока таблицы нет, сохранение отвечает 503.
  • Право на общие настройки — refs в матрице прав.

Для разработчика

  • API: POST /api/analysis/trace (trace_type или config_id, stop_at, start_line_ids, start_node_ids, barrier_line_ids, barrier_node_ids, include_geometry), GET /api/analysis/subnetworks?min_nodes=; настройки — GET|POST /api/v1/trace-configs (список отдаёт ещё can_shared — по нему окно решает, показывать ли удаление чужой общей настройки), PUT|DELETE /api/v1/trace-configs/{id}; обрезку списка потребителей ответ трассировки отмечает consumers_truncated. Код — routers/analysis.py, routers/trace_configs.py, database/network_trace.py (run_trace, BlockTree, пределы MAX_GEOJSON_LINES, MAX_LISTED_CONSUMERS), database/trace_configs.py (BUILTIN).
  • MCP: network_trace, list_trace_configs (tgid_mcp/tools.py).
  • Веб: components/NetworkTraceDialog.vue (ключ networkTrace), подписи, разбор номеров, охват — utils/networkTrace.ts, слой карты — MapViewer.vue (network-trace), выбор на карте — composables/useJournalMapBridge.ts.
  • Тесты: tests/utils/networkTrace.spec.ts; API — tests/test_network_trace.py, tests/test_trace_configs.py; e2e — e2e/functions.spec.ts («трассировка вверх от участка …»).
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо