Тематическая карта
Тематическая карта: участки по диаметру, году, износу, теплопотерям, напору — классы и легенда.
Возможности
- Десять тем для участков: условный диаметр, год прокладки (перекладки), износ, нормативные теплопотери, располагаемый напор и напор подачи в конце участка, скорость, удельные потери напора, расход, тип прокладки.
- Четыре способа деления на классы: квантили (поровну участков), естественные границы (Дженкс), равные интервалы, свои границы. От 2 до 9 классов.
- Пять палитр и их обратные варианты; толщина линии от 1 до 10, непрозрачность от 0,2 до 1.
- Участки без значения — серым или скрыть («Показывать участки без значения (серым)»).
- «Только в видимой области карты» — построить тему только по участкам в кадре.
- Сохранённые стили: свои видите только вы, общие — все пользователи города. Стиль хранит тему, способ, палитру, классы, толщину и прозрачность.
- Легенда в углу карты остаётся после закрытия окна; снять тему можно из окна или из легенды.
Как это работает
Тема строится по фрагментам, включённым на карте (в окне — «Фрагментов: N»). Сервер отдаёт для каждого участка одно значение; классы, цвета и легенду считает браузер. На участок с несколькими паспортами берётся самый длинный паспорт. Участки внутренних схем и удалённые не показываются.
| Тема | Откуда значение | Классы по умолчанию |
|---|---|---|
| Условный диаметр, мм | паспорт: Ду | свои: 80; 150; 250; 400; 600; 800 |
| Год прокладки (перекладки) | паспорт: дата последней перекладки, иначе дата ввода | равные интервалы |
| Износ, % | последний расчёт износа | свои: 20; 40; 60; 80 |
| Нормативные теплопотери, ккал/(ч·м) | последний расчёт нормативных теплопотерь, подача + обратка | квантили |
| Располагаемый напор в конце участка, м | расчёт: ut_out.a18 |
свои: 5; 10; 15; 25; 40 |
| Напор подачи в конце участка, м | расчёт: ut_out.a19 |
квантили |
| Скорость воды (подача), м/с | расчёт: модуль ut_out.a10 |
свои: 0,3; 0,8; 1,5; 2,5 |
| Удельные потери напора (подача), Па/м | расчёт: модуль ut_out.a14 × 9,80665 |
свои: 20; 50; 80; 150 |
| Расход сетевой воды (подача), т/ч | расчёт: модуль ut_out.a13 |
Дженкс |
| Тип прокладки | паспорт, справочник типов прокладки | уникальные значения |
«Расчёт» — последний гидравлический расчёт каждого фрагмента (с наибольшим номером), только строки подачи. Выбрать другой расчёт здесь нельзя: для этого есть «Гидравлический режим на карте». Износ и теплопотери берутся из самого свежего расчёта во всей базе; его название показывается в легенде.
Значение на границе класса попадает в верхний класс: при границах 80; 150 участок Ду 150 окажется в классе «150 – 250». Дженкс считается по выборке до 1500 значений.
За один раз — не больше 500 фрагментов и 60 000 участков; при превышении показывается часть.
Стили хранятся в таблице tgid_layer_style базы города. При каждом сохранении растёт номер версии: если стиль успели изменить в другом окне, сохранение откажет.
Что нужно для работы
- Включённые на карте фрагменты. Без них кнопка «Построить» неактивна.
- Для тем из расчёта — гидравлический расчёт фрагмента; для износа и теплопотерь — соответствующие расчёты.
- Общие стили создаёт и правит пользователь с правом «Справочники и шаблоны карточек»; свои — любой, кто вошёл.
Шаги
Откройте «Инструменты» и наберите в поиске «Тематическая карта» — пункт выделен рамкой.

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

Выберите, что показать на участках (диаметр, год прокладки, износ и т. д.), классы и палитру и нажмите «Построить» (после изменений — «Обновить»). Внизу окна — легенда с числом участков в каждом классе.

«Закрыть» оставляет раскраску на карте вместе с легендой в углу; «Снять с карты» убирает её. Удачную настройку можно сохранить как стиль (значок дискеты) и потом выбирать в поле «Сохранённый стиль».

Примеры
Фрагмент 74, «Условный диаметр»: 3619 участков, у всех есть Ду, от 40 до 1400 мм. По классам по умолчанию: до 80 мм — 4, 80–150 — 64, 150–250 — 499, 250–400 — 606, 400–600 — 970, 600–800 — 712, 800 и выше — 764.
Фрагмент 74, «Скорость воды (подача)» (последний расчёт фрагмента, −25 °C): значение есть у 1664 участков из 3619, от 0 до 4,5 м/с. До 0,3 м/с — 319, 0,3–0,8 — 680, 0,8–1,5 — 501, 1,5–2,5 — 161, 2,5 и выше — 3. Остальные 1955 участков без результата расчёта — серые.
Фрагмент 74, «Тип прокладки»: канальная — 3228, надземная — 232, бесканальная — 159.
Если не получается
- «Расчёта нормативных теплопотерь ещё нет — запустите его, затем постройте тему» (или «Расчёта износа ещё нет…») — выполните расчёт в «Нормативные теплопотери» или «Индекс износа».
- «У участков нет значений этой темы» — например, тема из расчёта, а фрагмент не считался.
- «… — показана часть: больше N участков, сузьте выбор фрагментов» — включите на карте меньше фрагментов или отметьте «Только в видимой области карты».
- «Числа по возрастанию через «;»» — в «Границы классов» значения не по возрастанию или не числа.
- «Карта ещё не готова» — подождите загрузки карты и нажмите «Построить» снова.
- «Общий стиль правит его автор или пользователь с правом «Справочники»» — стиль успел стать общим или право сняли, пока окно было открыто; откройте окно заново. У чужого общего стиля без права значков сохранения и удаления нет — сохраните изменения как свой стиль.
- «Стиль уже изменён (версия N) — откройте его заново» — стиль сохранили в другом окне; выберите его в списке ещё раз.
- «Таблица стилей ещё не создана: API доводит базу при запуске» — перезапустите API.
Для администратора
- Таблица
tgid_layer_styleсоздаётся при запуске API (sql/migrations/20261029_layer_style.sql). Стили сохраняются и при выключенномMUTATIONS_ENABLED— это настройки отображения, а не данные сети. - Темы читают
heatpipesections,linesobj,calculation,ut_out,wear_out,calculation_iznos,ut_teplo_out,tubingtypes.
Для разработчика
- API:
GET /api/v1/thematic/themes,GET /api/v1/thematic/pipes?theme=…&fragment_ids=…&bbox=…,GET|POST /api/v1/layer-styles,PUT|DELETE /api/v1/layer-styles/{id}. Код —routers/thematic.py,database/thematic.py(THEMES),database/layer_styles.py(clean_style). - Веб:
components/ThematicMapDialog.vue,components/ThematicLegend.vue, слой —composables/useThematicMap.ts, классы и выражения MapLibre —utils/thematicStyle.ts. - MCP: инструмент
thematic_summary— распределение участков по классам темы без геометрии. - Тесты:
tests/utils/thematicStyle.spec.ts; API —test_thematic.py.
