[general]
name=Isoliner - грид и изолинии
qgisMinimumVersion=3.16
qgisMaximumVersion=4.99
description=2D kriging (GSLIB KB2D) and isoline / contour-polygon generation in QGIS. Кригинг 2D (GSLIB KB2D) и построение изолиний/контурных полигонов в QGIS.
about=A Processing toolset for point-data interpolation and isolines: 2D kriging (points to raster, GSLIB KB2D core), experimental variogram with model fitting, leave-one-out cross-validation, optional trend removal (regression kriging), isolines and contour polygons whose boundaries coincide with the lines, reusable processing profiles, and a sample-data generator. Suitable for roof elevations, thicknesses, geomechanical properties, chemistry and any numeric attribute. Includes a standalone 3D viewer (surfaces, watertight bed bodies from multiband grids, boreholes with collar masts, a section plane; pyqtgraph/PyOpenGL are bundled) and a 2DM mesh export. Bilingual (EN/RU) user manual (PDF) is bundled, opened by the language of the QGIS interface. Developed with the support of Inform++ LLC (www.informpp.ru).
    .
    Группа команд Processing для интерполяции точечных данных и построения изолиний: 2D Kriging (точки в растр, ядро GSLIB KB2D), экспериментальная вариограмма с подбором модели, кросс-валидация (leave-one-out), опциональное снятие тренда (регрессия-кригинг), изолинии и контурные полигоны с совпадающими границами, профили обработки и генератор учебных данных. Подходит для отметок пласта, мощностей, ФМС, химии и любых числовых атрибутов. Двуязычное руководство пользователя (PDF, EN/RU) в комплекте, открывается по языку интерфейса QGIS. Разработано при поддержке ООО «Информ++» (www.informpp.ru).
version=2.65.4
author=ООО «Информ++»
email=xbbster@gmail.com
homepage=https://github.com/Valery35/qgis-isoliner
tracker=https://github.com/Valery35/qgis-isoliner/issues
repository=https://github.com/Valery35/qgis-isoliner
tags=kriging,geostatistics,variogram,interpolation,minimum curvature,cross-validation,contour,contours,isolines,hydrogeology,geology,gslib,raster
category=Analysis
icon=icon.svg
experimental=False
deprecated=False
hasProcessingProvider=yes
changelog=2.65.4
    - Совместимость с QGIS 4 (Qt6) доведена до конца: устранены замечания в
      сторонней библиотеке pyqtgraph (импорты через importlib, вызов exec
      через getattr). Поведение не менялось.
    2.65.3
    - Совместимость с QGIS 4 (Qt6): перечисления записаны полными именами
      (QgsProcessingParameterNumber.Type.Double, QgsProcessing.SourceType.*,
      QgsWkbTypes.Type.* и др.). Форма работает и в QGIS 3.16+, и в QGIS 4.
      Логика не менялась.
    2.65.2
    - Проверка безопасности каталога QGIS: ложные срабатывания bandit (assert,
      try/except/pass, импорты в сторонних библиотеках) помечены # nosec.
      Логика не менялась. Для загрузки в каталог собирается отдельный архив
      без папки tests.
    2.65.1
    - Кнопка «Журнал» вынесена на панель инструментов и в окно «О плагине»
      (с иконкой), открывает isoliner.log.
    2.65.0
    - Журнал работы: файл isoliner.log рядом с профилем QGIS. Заголовок сеанса
      (версии плагина, QGIS, NumPy, GDAL), имя инструмента, параметры, время,
      при сбое трейсбек. Открывается через меню и панель инструментов.
    - Панель инструментов Isoliner с кнопками 3D-просмотра и «О плагине»,
      добавлена иконка 3D.
    2.64.1
    - Руководство: добавлено пошаговое приложение «Плотность переменной опоры»
      (2.08 демо -> 2.07 по каждому типу -> дописывание -> эффективная сигма, с
      разбором параметров) и поля демо-слоёв 2.08 в приложение «Поля
      демо-слоёв».
    2.64.0
    - Новые инструменты 2.07 «Плотность по замерам (переменная опора)» и 2.08
      демо к ней. Замер размазывается по носителю (точка+сигма, линия-коридор,
      полигон), масса сохраняется (инвариант в логе), выход трёхканальный для
      дописывания и карты эффективной сигмы, дазиметрия для полигонов.
      Попутно: поправлены устаревшие ссылки на фрактальные инструменты в
      справке демо 5.05.
    2.63.5
    - Руководство: заголовок 1.10 не попадал в оглавление PDF из-за пропущенной
      пустой строки перед ним. Исправлено, закладка восстановлена.
    2.63.4
    - Врезка «кригинг или минимальная кривизна» в 1.11 усилена примером
      оседаний: мульду сдвижения кригинг раскатывает в ленту, минимальная
      кривизна восстанавливает воронку.
    2.63.3
    - Исправлен сбой кригинга при отсутствующем поле Z: вместо KeyError теперь
      понятное сообщение с просьбой выбрать поле значения. Добавлено
      приложение «Поля демо-слоёв» в руководство (все генераторы, с единицами).
    2.63.2
    - Адаптивные имена слоёв при генерации: 1.11 называет слой по режиму,
      демо-скважины разреза отличаются по имени от 1.10. Логика не менялась.
    2.63.1
    - Оседания (1.11): ограничены двумя метрами, единый знак на выбор (вниз
      или величина), строгие нули по краям (шум гаснет к краю мульды).
    2.63.0
    - Инструмент 1.11 расширен: два режима - электроразведка (добавлены
      ВП, отметка z, истинное значение rho_true) и оседания (мульда по
      турам: tour, settle, settle_true). Аномалия - компактное пятно, а не
      полоса, профили не синхронны.
    2.62.0
    - Новый инструмент 1.11 «Создать пример геофизических профилей (демо)»:
      параллельные профили электроразведки с пикетами, кажущимся
      сопротивлением ρк (Ом·м) и потенциалом ЕП (мВ). Заложена низкоомная
      аномалия (обводнение/замещение) для демонстрации интерполяции и
      изолиний. Поля profile, picket_m, pk, rho_k, sp.
    2.61.0
    - Фрактальные инструменты вынесены в отдельную группу «5. Фрактальный
      анализ» (было в группе 2). Перенумерованы 5.01-5.05: размерность,
      box-counting, линии и границы, Минковский, демо. Логика не менялась.
      Руководство: фрактальные разделы переписаны и перенесены в группу 5.
    2.60.0
    - Веса декластеризации (поле wt из 1.01) расширены ещё на три инструмента.
      Кросс-валидации 1.07 и 1.08: метрики ME/MAE/RMSE/MSDR/R считаются
      взвешенно, плотный куст не доминирует в оценке качества. Индикаторный
      кригинг 2.01: индикатор класса кригуется к декластеризованной доле, а не
      к нулю. Без весов поведение всех трёх прежнее.
    2.59.0
    - Веса декластеризации (поле wt из 1.01) теперь принимают вариограммные
      инструменты 1.05 «Вариограмма» и 1.06 «Вариограммная карта»: пара
      берётся с весом произведения весов концов, скопления не раздувают
      ближние лаги. Счётчик пар остаётся сырым, γ считается взвешенно.
    2.58.1
    - Группа 1 упорядочена и переведена на двузначную нумерацию (1.01…1.10)
      для правильной сортировки в тулбоксе. Порядок по смыслу: подготовка
      данных, интерполяция, изолинии, вариограммы, кросс-валидации рядом,
      сервис и демо в конце. Логика инструментов не менялась.
    2.58.0
    - Новый инструмент 1.0 «Декластеризация (веса)»: ячеистая
      декластеризация (порт GSLIB declus), веса обратно локальной плотности
      и представительное декластеризованное среднее для подсчёта запасов и
      среднего простого кригинга. Автоподбор размера ячейки или ручной,
      слой точек с полем wt и HTML-отчёт.
    - Гауссова симуляция (2.06): необязательное поле весов декластеризации -
      гистограмма (нормально-балльное преобразование) строится взвешенно.
    2.57.0
    - HTML-отчёт кросс-валидации (инструменты 1.5 и 1.9): на графике оценка/
      факт теперь две линии - серая диагональ 1:1 (идеал) и синяя линия
      регрессии Best Fit. В метрики добавлены наклон, сдвиг и угол Best Fit -
      индикатор условного смещения по диапазону (наклон меньше 1 - занижение
      высоких значений, регрессия к среднему у сглаживающих методов).
    2.56.1
    - Из встроенной копии pyqtgraph убраны неиспользуемые подпакеты (console,
      flowchart, multiprocess, exporters, configfile). 3D-просмотр использует
      только pyqtgraph.opengl. Снимает предупреждения сканера безопасности
      plugins.qgis.org (eval, exec, pickle, subprocess, xml) и уменьшает вес.
    2.56.0
    - Новый инструмент 1.9 «Кросс-валидация метода (LOO)»: скользящий
      контроль для кригинга и минимальной кривизны по образцу Surfer.
      Случайная выборка N точек, фильтр области (охват и Z), буфер
      исключения соседей по X/Y. Выходы - слой ошибок и HTML-отчёт (график
      оценка/факт, гистограмма, метрики ME/MAE/RMSE/R, для кригинга MSDR).
    2.55.0
    - Новый инструмент 1.8 «Минимальная кривизна (точки → растр)»:
      гридирование бигармонией с натяжением (SOR обходом девятью цветами),
      детерминированная альтернатива кригингу без вариограммы. Натяжение,
      граничное натяжение, анизотропия, порог невязки и лимит итераций.
      Часто применяется для карт геофизических полей. Faults/breaklines -
      задел на будущее.
    2.54.0
    - 4.07: отдельный пример «Складчатый пласт» убран, складчатость осталась
      в свите. Свита теперь грузится отдельными слоями по пласту (Свита:
      пласт k) для управления видимостью, складки положе и глаже.
    2.53.0
    - 4.07: свита теперь из складчатых пластов, каждый пласт отдельным
      объектом (поле bed) и своим цветом в 3D. Имя выходного слоя
      подстраивается под пример (Пласт, Складчатый пласт, Свита x3, Куб,
      Тетраэдр).
    - 3D-просмотр: каждый объект тела красится отдельно (свита разноцветная);
      кадрирование учитывает преувеличенную высоту, чтобы высокое тело при
      большом вертикальном преувеличении не выходило за кадр.
    2.52.0
    - 3D-просмотр: контур сечения тел плоскостью разреза. Где вертикальная
      штора вдоль линии режет тело, рисуется яркий след (как по
      поверхностям).
    - 3D-просмотр: скважины стволами-цилиндрами, интервалы между отметками
      окрашены по стратиграфическому положению (литология).
    2.51.0
    - 4.07: два новых примера - «Складчатый пласт» (кровля-фолд-трейн из
      антиклиналей и синклиналей) и «Свита» (стопка водонепроницаемых
      пластов, число пластов задаётся). Оба смотрятся во вкладке «Тела».
    2.50.1
    - 3D-просмотр: исправлен сбой при показе тел и поверхностей без
      плоскости разреза (локальная переменная затеняла функцию перевода).
    - 3D-просмотр: опрос сцены кликом больше не пишет ошибку в журнал на
      новых сборках pyqtgraph (QGIS 4). Выбор своего цвета слоя не падает
      на пустом источнике растра.
    2.50.0
    - 4.07: размещение и размер примера берутся из охвата (окна вида),
      как у остальных генераторов. Добавлены параметры «Мощность» и
      «Отметка залегания (подошва)», диапазон Z печатается в журнал.
    - 3D-просмотр поверхностей: новая вкладка «Тела». Показывает
      полигональные слои с Z (полиэдр, TIN, MultiPolygon Z) объёмными
      телами рядом с поверхностями и телами пластов.
    2.49.0
    - Новый инструмент «4.07 Создать пример полиэдра (бета)»: демонстрация
      полиэдральной поверхности (тело пласта, куб, тетраэдр) как нативный
      PolyhedralSurface Z (QGIS 3.40 и новее) или TIN Z. На более старых
      сборках вывод деградирует до MultiPolygon Z с предупреждением.
    - Новый модуль polyhedral.py (чистый NumPy, сборка WKT и аудит
      замкнутости оболочки), headless-тесты.
    2.48.5
    - Группа «4. Пласт и блочная модель» вышла из беты (4.01-4.04),
      конвейер списания протестирован на демо.
    - Руководство: новое приложение «Уроки и самопроверка» с пошаговым
      тестом списания запасов (домены, деление колонки, разность). Раздел
      будет пополняться уроками и тестами.
    2.48.4
    - 4.03: плотность руды добавлена отдельным полем dens в блочную
      модель (ore_t = vol * dens поячеечно).
    - Выбор канала растра переведён на выпадающие списки и в оставшихся
      местах: канал плотности (4.03), каналы оценки и ошибки (2.03).
    2.48.3
    - [BUG-FIX] Параметр «Канал плотности» по ошибке регистрировался в
      калькуляторе 4.02 (AttributeError при загрузке). Перенесён в 4.03,
      куда и относится.
    2.48.2
    - [BUG-FIX] 4.03: деление по вертикали падало с NameError (параметр
      nz по ошибке читался в чужом методе). Исправлено.
    - 4.03: плотность руды можно брать из канала грида поячеечно (параметр
      «Канал плотности») - для переменной по площади плотности.
    2.48.1
    - Домены. Новый инструмент «4.05 Домены в канал пласта»: полигоны
      зон растеризуются в канал domain грида (код из поля или по порядку).
    - Новый инструмент «4.06 Разность запасов (списание)»: разность двух
      блочных моделей по совпадающим ячейкам, сумма delta - списанный
      тоннаж. Прямой путь оперативного списания запасов.
    2.48.0
    - 3D-просмотр: след разреза - линия пересечения секущей плоскости с
      каждой поверхностью рисуется яркой нитью по кровле и подошве.
    - 4.03: параметр «Слоёв по вертикали» делит колонку центроидов на N
      блоков между кровлей и подошвой (поля z_from, z_to, lay, доля
      объёма и тоннажа). Заготовка настоящей 3D-модели.
    2.47.7
    - [BUG-FIX] 3D: клик по плашке «Свой цвет» падал с RuntimeError, если
      параметры слоя ещё не создавались (дефолт строился от пустого пути).
      Дефолт теперь берётся от настоящего источника слоя.
    2.47.6
    - 3D-просмотр: в «Окраске» появился пункт «Свой цвет» - рядом с
      выпадающим списком плашка текущего цвета, клик по ней открывает
      выбор цвета. Цвет свой у каждого слоя, живёт в его параметрах.
    2.47.5
    - 3D-просмотр: подписи скважин прореживаются - текст не ставится,
      если рядом уже есть подписанная скважина (порог 4.5 процента размаха
      сцены). Кучные фонды больше не превращают подписи в кашу.
    2.47.4
    - Руководство: исправлен битый блок картинки во введении (след старой
      панели инструментов), скрин панели заменён свежим деревом четырёх
      групп. Семь иллюстраций из цикла статей встали в главы: SK с ложным
      средним, OK против тренда, точечный против блочного (обзорная глава),
      вероятность класса (2.01), карта превышения (2.03), карта D (2.07),
      эталоны Серпинского и Коха (2.08).
    2.47.3
    - Руководство: девять новых скриншотов - дерево инструментов, вкладки
      3D-просмотра с параметрами слоя и списком каналов, отчёт калькулятора,
      блочная модель на 40 тысяч центроидов, окно и демо-реки Минковского.
    2.47.2
    - Руководство: глава 3D-просмотра переписана под текущий интерфейс
      (вкладки Слои и Векторы, персональные параметры слоя, единая
      Окраска, фильтр набора, подписи скважин, опрос кликом). Добавлены
      заметка о канальных списках во введении и раздел «Предприятиям».
    2.47.1
    - Приглашение в подвале справок ведёт на страницу «Предприятиям»
      сайта Информ++ (доработки, поддержка с гарантией, внедрение).
    2.47.0
    - 2.10: полный набор параметров метода Минковского - K ступеней
      лесенки (по умолчанию 8), случайные сдвиги сетки с минимальным
      покрытием (3), фактор уплотнения выборки (0.5); к каждому объекту
      дописывается D_r2 - качество лог-лог аппроксимации, при R² ниже
      0.85 выдаётся предупреждение. В справке - про выбор K: слишком
      большое K занижает D к 1 ниже масштаба детальности линии.
    2.46.1
    - Терминология: в подписях параметров и справках «число» заменено на
      «количество» там, где считаются штуки (лаги, точки, пары, соседи,
      реализации, размеры сетки); «число» осталось только в значении
      математической величины и как тип поля.
    2.46.0
    - Группа 2 перенумерована в формат 2.01-2.11: инструменты в панели
      сортируются по порядку (раньше 2.10 и 2.11 вставали между 2.1 и
      2.2). Перекрёстные ссылки в справках и руководстве обновлены.
    2.45.0
    - Выбор канала растра всюду переведён на выпадающие списки с именами
      каналов (штатный параметр Band, 14 параметров в девяти инструментах:
      изолинии, дрейф, гидравлика, состав на разрезе, сборка и калькулятор
      пласта, фракталы). Канал содержания в 4.02 стал необязательным:
      пусто - считать без металла. Исключение - 4.04 с пачкой растров,
      там канал остаётся числом.
    2.44.0
    - Новый инструмент «2.10 Размерность Минковского (векторы)»: box-
      counting прямо по линиям и границам полигонов, D_mink каждому
      объекту и D слоя целиком (размерность речной сети); эталон Коха
      1.264.
    - Новый генератор «2.11 Создать пример для фракталов (демо)»: речная
      сеть с порядками притоков, водосбор с изрезанной границей, берег.
    - 2.9 принимает полигоны: меряется внешнее кольцо границы.
    2.43.0
    - 2.7-2.9 обкатаны на реальных данных: пометки «бета» сняты.
    - Руководство: главы 2.7-2.9 расширены - чтение карты D и выбор окна,
      рабочие циклы «кровля - D - изолинии» и диагностики сглаживания,
      источники масок для box-counting.
    2.42.1
    - 2.7: по умолчанию одноканальный грид D - сразу подаётся в «1.2
      Изолинии из растра» для изолиний размерности; H записывается вторым
      каналом по галке в дополнительных. Подсказка про изолинии - в журнал.
    2.42.0
    - Два новых фрактальных инструмента: «2.8 Box-counting маски» - одна
      размерность D на бинарную маску (порог по растру, таблица счётов в
      журнале); «2.9 Размерность линий» - D каждой линии методом циркуля,
      диагностика пересглаживания изолиний. Эталоны: ковёр Серпинского
      1.8928, кривая Коха 1.262.
    2.41.0
    - Новый инструмент «2.7 Фрактальная размерность»: карта D = 3 - H
      вариограммным методом в скользящем окне (чистый NumPy, лог-лог
      наклон по лагам); выход двухканальный (D и H), глобальные значения
      в журнале. Перепады D подчёркивают нарушения и границы блоков.
    2.40.2
    - Руководство: обзорная глава «Виды кригинга: какой выбрать» перед
      группой разрезов - навигатор по SK/OK/тренду/дрейфу/блочному/
      индикаторному со шпаргалкой; PDF пересобраны.
    2.40.1
    - В подвал справки каждого инструмента (рядом с номером версии)
      добавлено приглашение: Isoliner развивается на задачах реальных
      предприятий - нужна функция, напишите на www.informpp.ru.
    2.40.0
    - Наведён порядок в инструментах: новая группа «4. Пласт и блочная
      модель» (4.01 сборка грида пласта, 4.02 калькулятор, 4.03 блочная
      модель, 4.04 меши - все с пометкой «бета»); генераторы демо стали
      последними в группах (1.6 профили, 1.7 пример скважин). Руководство
      перенумеровано и переупорядочено.
    2.39.0
    - Новый инструмент «3.14 Грид пласта в блочную модель»: центроид на
      каждую ячейку с атрибутами top/bot/thick/vol/ore_t и всеми каналами
      параметров по именам; выгрузка по контуру. Модель наращивается
      атрибутами - фильтры, join, калькулятор полей.
    2.38.0
    - 3D-просмотр: опрос блочной модели кликом. Клик без перетаскивания
      пускает луч, находит ближайшую поверхность или тело и выводит
      значения всех каналов в точке (для пласта - и мощность); попадание
      помечается красным шариком.
    2.37.0
    - Новый инструмент «3.13 Калькулятор пласта»: мощность, объём, тоннаж
      руды и металла, средневзвешенное содержание по гриду пласта; сводка
      по всей площади или внутри контура (с дырками), HTML-отчёт; каналы
      «мощность» и «запасы руды» дописываются в грид пласта.
    2.36.1
    - 3D-просмотр: подписи скважин над мачтами (поле подписи выбирается на
      вкладке «Векторы», name/well угадываются; до 500 подписей).
    2.36.0
    - 3D-просмотр: единое поле «Окраска» у слоя - палитра, собственные
      каналы по именам или внешний растр проекта (тогда доступен канал
      атрибута); отдельные «Канал окраски» и «Внешний атрибут» упразднены.
    2.35.1
    - 3D-просмотр: кнопки «Все»/«Ничего» падали после перехода на
      персональные настройки слоёв; вызов удалённого метода убран.
    2.35.0
    - 3D-просмотр: персональные параметры каждого слоя. Левая панель на
      вкладках «Слои» и «Векторы»; у выбранного слоя свой режим
      (авто/поверхность/тело пласта), канал высот, канал окраски и внешний
      атрибутный растр с каналом. Глобальные переключатели тел и каналов
      упразднены; шкала окраски общая на сцену.
    2.34.0
    - Новый инструмент «3.12 Собрать грид пласта»: кровля, подошва и пачка
      параметров собираются в многоканальный грид по конвенции; входы
      приводятся к сетке кровли, имена каналов пишутся в описания.
    - 3D-просмотр: фильтр списка слоёв с кнопками «Все»/«Ничего» для
      ручной сборки набора; каналы высот, параметра и атрибута -
      выпадающими списками с именами каналов.
    2.33.1
    - Руководство: таблицы атрибутов сгенерированных слоёв - демо-скважины
      (1.6), выходы 3.01 (определение, 3D-забор, угловые точки, оси,
      таблица углов) и все слои демо 3.10 с их полями; PDF пересобраны.
    2.33.0
    - Руководство (RU/EN): главы «3.11 Поверхности в 3D (меши)» и «3D-просмотр
      поверхностей» со скриншотами сцены, схема конвенции многоканального
      грида пласта, обновлён раздел 3.10; PDF пересобраны. Описание плагина
      дополнено 3D-просмотром и экспортом 2DM.
    2.32.4
    - 3D-просмотр: мачта над устьем скважины (2 процента размаха сцены) -
      штанга видна всегда, даже когда целиком уходит внутрь тела пласта.
    2.32.3
    - 3D-просмотр: плоскость разреза падала на QGIS 4 (asMultiPolyline
      бросает TypeError на одиночной LineString); чтение линии с fallback.
    2.32.2
    - 3.01: вершины ломаной принудительно включаются в пикетаж. Раньше
      равномерная сетка пикетов не попадала в изломы, и профиль, полосы
      чертежа и 3D-забор срезали каждый угол хордой до полушага.
    2.32.1
    - Демо 3.10: разлом смещён с середины створа (0.62 длины) - раньше он
      рождался на изломе линии и выглядел как срезанный угол определения.
    2.32.0
    - 3D-просмотр: плоскость разреза. Линия определения из 3.01 рисуется
      вертикальной полупрозрачной лентой с контуром между zmin и zmax из
      полей определения (без полей - по размаху сцены); ломаные и несколько
      линий поддерживаются.
    2.31.0
    - 3D-просмотр: логика окраски по природе слоя. Тело пласта красится
      собственным каналом параметра (по умолчанию 3; 0 - палитра), внешний
      атрибутный растр применяется только к одноканальным поверхностям;
      выбор «Применить окраску к» упразднён, шкала общая.
    2.30.0
    - 3D-просмотр: режим «Тела пластов» - для многоканальных гридов канал 1
      и канал 2 рисуются кровлей и подошвой, объём замыкается боковой юбкой
      по границе данных (водонепроницаемое тело). Одноканальные гриды в том
      же списке остаются поверхностями. Первый шаг к каркасной и блочной
      моделям массива.
    2.29.1
    - Конвенция грида пласта: канал 1 кровля, канал 2 подошва, каналы 3+
      параметры (пласт как блочная модель, поверхности первичны). Демо 3.10
      выдаёт четырёхканальные гриды пластов; один файл кормит 3.03
      (каналы 1/2/3) и 3D-просмотр.
    2.29.0
    - Многоканальные гриды пластов. Демо 3.10 выдаёт по трёхканальному
      гриду на промышленный пласт (кровля, содержание, минтип - независимые
      стохастические поля с подписями каналов); отдельные плоские гриды
      состава убраны. 3.03 получил выбор канала кровли/подошвы/состава,
      3.11 - канал высот, 3D-просмотр - канал высот и канал атрибута.
    2.28.0
    - Демо 3.10: у каждого промышленного пласта свой состав - независимые
      стохастические поля содержания (крупное + мелкая пятнистость, свои
      тренды) и свой минтип; выходы «Состав 1-го/2-го пром.».
    - 3D-просмотр: легенда цветовой шкалы с диапазоном, прозрачность
      поверхностей, кнопки «Сверху»/«Сбоку», снимок сцены в PNG.
    2.27.5
    - Релиз в основной канал: снят флаг experimental. Функционально
      идентична 2.27.4.
    2.27.4
    - Вложенные pyqtgraph/PyOpenGL зачищены под сканер plugins.qgis.org:
      удалены неиспользуемые console, flowchart, multiprocess, exporters и
      configfile, точечно отключены загрузка .ui и pickle-restore; Bandit
      находит только LOW. 3D-просмотр снова в публикуемом пакете.
    2.27.3
    - Без pyqtgraph/PyOpenGL пункт 3D-просмотра просто не показывается в
      меню: никаких подсказок про pip, публичная сборка выглядит цельной.
    2.27.2
    - Публикуемый пакет собирается без вложенных pyqtgraph/PyOpenGL
      (сканер репозитория QGIS блокирует чужой код); при их отсутствии
      3D-просмотр показывает подсказку установки. Ветка 2.27.x помечена
      экспериментальной до стабилизации.
    2.27.1
    - 3D-просмотр: выбор «Применить окраску к» - атрибут красит одну
      конкретную поверхность или все; шкала считается по цели окраски.
    2.27.0
    - 3D-просмотр: окраска поверхностей атрибутным гридом. Выбранный растр
      (содержание, мощность, ошибка) билинейно выбирается в вершинах мешей,
      цвет по общей шкале, диапазон в строке состояния; нет данных - серый.
    2.26.4
    - Меню «Модули - Isoliner»: 3D-просмотр первым пунктом; отдельный пункт
      «Руководство (PDF)» убран (кнопка осталась в окне «О плагине»).
    2.26.3
    - 3D-просмотр: маркеры устьев скважин теперь круглые шарики вместо
      квадратных спрайтов (при более 500 скважин - круглые спрайты).
    2.26.2
    - 3D-просмотр: камера охватывает и поверхности, и скважины (раньше
      скважины вне экстента мешей оставались за кадром).
    2.26.1
    - 3D-просмотр: список скважин был пуст в QGIS 4 (Qgis.GeometryType
      вместо QgsWkbTypes.PointGeometry); детект точечных слоёв с fallback.
    2.26.0
    - 3D-просмотр: скважины. Точечный слой и числовые поля отметок (h1...h6
      отмечаются сами) рисуются вертикальными штангами с маркером устья.
    - 3.11 переосмыслен как экспорт в стандартный mesh-формат 2DM (MDAL):
      профильный инструмент, mesh-калькулятор, сторонние программы.
    2.25.2
    - 3D-просмотр: исправлено падение на Qt6 (QGIS 4) из-за плоских
      enum-имён Qt; все enum'ы диалога теперь с fallback Qt5/Qt6.
    2.25.1
    - pyqtgraph и PyOpenGL идут в комплекте плагина (папка libs, без
      GLES/примеров): 3D-просмотр работает из коробки, pip не нужен;
      системные копии пакетов, если стоят, имеют приоритет.
    2.25.0
    - Собственный «3D-просмотр поверхностей (бета)» в меню «Модули -
      Isoliner»: растры проекта рисуются мешами на pyqtgraph.opengl, каждый
      горизонт своим цветом, вертикальное преувеличение и разнос по Z
      настраиваются в окне; не зависит от штатного 3D-вида (Qt3D). Нужны
      пакеты pyqtgraph и PyOpenGL (pip install pyqtgraph PyOpenGL).
    2.24.1
    - 3.11: параметр «Разнос по Z» - каждый следующий грид смещается на шаг
      вниз, слипшаяся стопка горизонтов раскрывается в этажерку.
    2.24.0
    - Новый инструмент «3.11 Поверхности в 3D (меши)»: пачка гридов
      переводится в mesh-слои 2DM для штатного 3D-вида QGIS, с вертикальным
      преобразованием Z (масштаб и смещение) и прореживанием узлов.
    2.23.0
    - Меню «Модули - Isoliner»: «О плагине» (версия, ссылки, история
      изменений из metadata.txt) и «Руководство (PDF)» по языку интерфейса.
    2.22.7
    - Руководство: номера панели в заголовках; скрины окон и таблицы полей
      для 2.5, 2.6 и инструментов разреза; пересобраны оба PDF.
    2.22.6
    - Демо-TIN: финальный размер складки (компактная локальная складка).
    2.22.5
    - Демо-TIN: складка ещё уменьшена (компактная локальная складка).
    2.22.4
    - Демо-TIN: складка уменьшена (компактнее), форма и заворот сохранены.
    2.22.3
    - Демо-TIN: складка переделана в гладкую лежачую (синусоида в наклонной
      раме по падению пластов) - длинные крылья, плавный заворот без острых
      углов, малый размах по высоте.
    2.22.2
    - Демо-TIN: складка из замкнутой линзы переделана в открытую лежачую
      шпильку (нижнее крыло, замок сбоку, перевёрнутое верхнее крыло) -
      читается как опрокинутая складка, а не кольцо.
    2.22.1
    - Демо-TIN переделана в реалистичную лежачую опрокинутую складку:
      замкнутая линза со сдвигом (наклон), мощность слоя, посажена в
      середину пачки пластов, шире поперёк разреза.
    2.22.0
    - Новый инструмент «3.06 Пересечение TIN с разрезом»: TIN из 3D-граней
      (PolygonZ) и/или меш режется разрезом. В отличие от грида берёт
      нависающее и опрокинутое - над одной станцией несколько отметок,
      трасса заворачивается. Ядро на чистом NumPy. Номера инструментов
      разреза стали двузначными (3.01-3.10); в демо добавлена опрокинутая
      TIN-складка.
    2.21.2
    - «3.5 Пересечение векторов» принимает список слоёв за один прогон
      (линии и полигоны вперемешку), в выходах поле src хранит слой-
      источник каждой метки.
    2.21.1
    - «3.5 Пересечение векторов»: определение разреза теперь несёт высоту
      рамки (zmin/zmax из «Разрез по линии»), для объектов без Z больше не
      нужно подавать чертёж или диапазон Z. Пустые выходы не создаются.
    2.21.0
    - Новый инструмент «3.5 Пересечение векторов с разрезом»: линии и
      полигоны наносятся на разрез по точному пересечению. Линия без Z -
      вертикаль на всю высоту, линия с Z - точка на отметке, полигон -
      полоса на интервале зоны. Беты сдвинуты на 3.6-3.8, демо на 3.9; в
      демо добавлены разлом, маркер с Z и зона замещения.
    2.20.1
    - Восстановлена кнопка «Справка» в диалоге инструмента «2.6 Гауссова
      симуляция (SGS)» (отсутствовал helpUrl).
    2.20.0
    - Новый инструмент «2.6 Гауссова симуляция (SGS)»: ансамбль равновероятных
      реализаций вместо одной сглаженной оценки. Даёт неопределённость -
      среднее (E-type), стандартное отклонение, квантили P10/P50/P90 и карту
      вероятности превышения порога. Вариограмма баллов подбирается авто.
      Чистый NumPy поверх ядра кригинга, без зависимостей.
    2.19.1
    - Подписи горизонтальных осей вынесены слева от линии (через позицию,
      вычисляемую от геометрии) - прежняя привязка в QGIS 4 не срабатывала.
    2.19.0
    - «Скважины на разрезе» и «Состав пласта на разрезе» получили
      необязательный вход «Определение разреза»: масштаб vex берётся из него,
      и колонки и состав точно совпадают с разрезом по вертикали.
    - Инструменты переименованы в «...на разрезе». Инструменты 3.5-3.7
      (проекция, обратная проекция, развёртка ствола) помечены «(бета)».
    - В руководство добавлена схема оформления разреза.
    2.18.6
    - Подписи горизонтальных осей привязаны к началу линии (слева).
    2.18.5
    - Таблица углов переделана: ячейки между угловыми точками (границы под
      вертикалями), две строки - длина и азимут отрезка между соседними
      углами, заливка белая, без строки-шапки.
    2.18.4
    - Откат флага «Дополнительно» с выходных слоёв: в стоковом диалоге
      Processing выходы нельзя убрать в эту секцию (флаг работает только для
      входных), и QGIS сваливал туда все выходы, включая главные. Выходы
      снова в обычном порядке, оформительские - по-прежнему опциональны.
    2.18.3
    - Оформительские выходы «Разреза по линии» (угловые точки, вертикали,
      горизонтальные оси, таблица углов) и число отметок убраны в секцию
      «Дополнительно». На виду остаются чертёж 2D, забор 3D и определение.
    2.18.2
    - Новый опциональный выход «Разреза по линии» - таблица углов: слой
      полигонов-ячеек под разрезом (колонка на угол, строки имя, азимут,
      расстояние, подпись по центру). Рисуется прямо в окне вида.
    2.18.1
    - Угловые точки: подпись внизу только X и Y (азимут и расстояние
      остаются полями для таблицы). Стиль: треугольник вершиной вверх и
      меньше, полка меньше и симметричная. Количество отметок высоты на осях
      теперь точнее совпадает с заданным (шаг из ряда 1-2-2.5-5-10), сам
      параметр перенесён в дополнительные. 
    2.18.0
    - Угловые точки разреза доработаны: точки сверху и снизу, поля номер,
      имя УГ-N, сторона, расстояние, плановые X и Y, азимут, готовая
      подпись (округление до сотых). Стиль: треугольник сверху, полка снизу.
      Новый выход - горизонтальные оси с отметками высот (по умолчанию 5,
      хорошее округление). Поля чертежа на 5%% шире вверх и вниз. Демо-линия
      теперь ломаная с двумя изломами.
    2.17.0
    - «Разрез по линии» по запросу выдаёт угловые точки и угловые вертикали
      на узлах ломаной (в осях чертежа), с номером узла и азимутом отрезка.
      Вертикали на всю высоту разреза. Оба выхода опциональны.
    2.16.0
    - Растровые выходы создаются со свёрнутым узлом в дереве (стопка гридов
      больше не раздувает панель слоёв). На каждый слой пишется история
      создания (версия плагина, инструмент, дата) - видна в свойствах слоя
      и переносится с проектом и QLR. Существующие стили и порядок слоёв
      сохранены.
    2.15.1
    - Многослойные инструменты складывают выходные слои в фиксированную
      группу дерева (Разрез, Кригинг, Изолинии и т.д.). Повторный запуск
      добавляет в ту же группу, новую не плодит. Семейство разреза идёт в
      одну группу «Разрез» - удобно копировать в другой проект (например
      через QLR).
    2.15.0
    - Линейка инструментов разреза на общем определении разреза (линия и
      vex, выдаётся «Разрез по линии»). Новое: «Пересечение поверхностей с
      разрезом» (3.4), «Проекция объектов на разрез» (3.5), «Спроецировать
      с разреза» (3.6, обратная проекция в 3D), «Развёртка стенки ствола»
      (3.7, цилиндрический разрез). Разрез обрезает выклинивания. Демо
      получило выклинивание пласта. Демо-генератор стал 3.8.
    2.14.1
    - Группа «Дополнительные инструменты» переименована в «Дополнительные
      инструменты анализа». В группе «Разрез» наведён порядок: 3.1 разрез,
      3.2 скважины, 3.3 состав, 3.4 пример (демо в конце). Идентификаторы
      алгоритмов не менялись.
    2.14.0
    - Вертикальный масштаб разреза задаётся отношением Г:В (ширина:высота),
      множитель считается сам по длине линии и размаху высот; режим
      «множитель» сохранён. Фактический множитель печатается в журнал.
      Добавлено в «Разрез по линии», «Скважины на разрез» и «Состав пласта
      на разрез». По умолчанию Г:В 10:1.
    2.13.2
    - Демо разреза: усилена структура (падение, пологая складка, клинья
      промышленных пластов) для наглядности; демо-скважины прижаты вплотную
      к линии, чтобы их колонки совпадали с полосами разреза.
    2.13.1
    - Исправлено: в «Создать пример для разреза» слой скважин не
      создавался (двойное обращение к параметру вывода). Теперь скважины
      генерируются корректно.
    2.13.0
    - Новый инструмент «Состав пласта на разрез» (группа «Разрез», 3.4).
      Красит полосу пласта по гриду состава вдоль линии. Режим
      «непрерывное» режет полосу на срезы под градиент (KCl, HO), режим
      «категориальное» сливает смежные срезы в фациальные зоны (минтип,
      зоны замещения). По одному пласту за раз, выходы 2D и 3D. Генератор
      «Создать пример для разреза» теперь выдаёт и гриды состава
      промышленных пластов (содержание и минтип с зоной замещения).
    2.12.1
    - Генератор «Создать пример для разреза» расширен до шести поверхностей:
      пять пластов в переслаивании (три вмещающих и два промышленных,
      тонкие). Скважины несут отметки h1...h6.
    2.12.0
    - Новый инструмент «Скважины на разрез» (группа «Разрез», 3.3).
      Проецирует скважины на линию разреза и рисует их колонками интервалов
      пластов в осях расстояние-высота, поверх чертежа. Границы пластов -
      из выбранных полей-отметок (сортируются по убыванию), отсев дальних
      коридором, номер скважины подписью. Генератор «Создать пример для
      разреза» теперь выдаёт и скважины вдоль линии с полями h1, h2, h3.
    2.11.1
    - Инструменты разреза вынесены в отдельную группу «Разрез»:
      «Разрез по линии» теперь 3.1, «Создать пример для разреза» 3.2.
      Группы «Грид и изолинии» (1.1-1.7) и «Дополнительные инструменты»
      (2.1-2.5) вернулись к прежнему составу.
    2.11.0
    - Новый инструмент «Создать пример для разреза» (группа «Грид и
      изолинии», 1.8). Готовит три стопкой поверхности (две залежи) с
      падением и переменной мощностью и линию, чтобы сразу попробовать
      «Разрез по линии» без кригинга реальных данных.
    2.10.0
    - Новый инструмент «Разрез по линии» (группа «Дополнительные
      инструменты», 2.6). По линии и упорядоченному сверху вниз набору
      поверхностей строит геологический разрез: пласты как полосы между
      соседними поверхностями. Два выхода - чертёж в осях расстояние×высота
      (с вертикальным преувеличением, для макета) и 3D-забор PolygonZ в
      реальных координатах (для 3D Map View). Несколько пластов сразу.
    2.9.3
    - «2D Kriging»: список «Преобразование значения» (ln) перенесён из
      «Дополнительно» прямо под поле значения Z - так его проще найти тем,
      кому он нужен (лог-нормальные K, T).
    2.9.2
    - Бергштрихи (изолинии впадин, стиль «со штрихами вниз»): исправлено
      направление штрихов в QGIS 4. В QGIS 4 трактовка знака смещения линии
      изменилась относительно QGIS 3, из-за чего штрихи смотрели вверх по
      склону. Знак dn_sign теперь переворачивается для QGIS 4+, в QGIS 3
      поведение прежнее.
    2.9.1
    - Демо-генерация K приведена к реалистичному диапазону: поле ln(K)
      нормируется и подрезается до ±2.5σ, K ≈ 0.006…4 м/сут (раньше пики
      гладкого поля давали единичные выбросы в сотни). T = K·мощность.
    2.9.0
    - «2D Kriging»: опциональное логарифмирование значения (преобразование
      ln). Кригуется ln(Z), оценка возвращается через exp (медиана),
      стандартная ошибка пересчитывается в исходные единицы дельта-методом.
      Кригинг лог-нормальных величин (K, T, скошенные содержания) без ручного
      создания поля ln.
    - Инструменты 2.3 и 2.4 поменяны местами: 2.3 теперь «Карта вероятности
      превышения», 2.4 «Гидравлический градиент», чтобы гидрогеология
      (градиент 2.4 и удельный расход 2.5) шла рядом.
    2.8.0
    - Новый инструмент «Удельный расход (закон Дарси)» (группа
      «Дополнительные инструменты», 2.5). По растру напора и растрам свойств
      пласта (коэффициент фильтрации K, водопроводимость T) считает скорость
      фильтрации q = K·|∇h| (м/сут) и расход через ширину Q = T·|∇h| (м²/сут),
      плюс направление и стрелки. Свой кригинг не делает - растры K и T берёт
      готовыми (рекомендуется лог-кригинг). Гидрогеология теперь с
      проницаемостью, а не только геометрия градиента.
      Генератор «Создать пример скважин» получил галку «Добавить поля
      K и T и напор»: лог-нормальное K и T = K·мощность, чтобы инструмент
      Дарси можно было освоить на демо-данных.
    2.7.1
    - В руководство (RU и EN) добавлены иллюстрации для «Карты вероятности
      превышения»: окно инструмента и пример карты с расходящейся шкалой.
    2.7.0
    - Новый инструмент «Карта вероятности превышения» (группа
      «Дополнительные инструменты», 2.4). По растрам оценки и стандартной
      ошибки кригинга строит P(Z>порог) = Φ((оценка−порог)/ошибка) при
      нормальном локальном распределении. Свой кригинг не выполняет, окно
      «2D Kriging» не меняет - отдельный постпроцессор, как градиент потока.
      Применение: бортовые содержания, зоны риска по любому порогу.
    2.6.1
    - Группы инструментов пронумерованы: «1. Грид и изолинии» и
      «2. Дополнительные инструменты». Так порядок групп в дереве Processing
      одинаков в русской и английской локалях (раньше группы сортировались
      по алфавиту имени и на разных языках шли в разном порядке).
    - В руководство добавлены иллюстрации (RU и EN): окно инструмента «Кригинг
      с внешним дрейфом», обновлённое дерево инструментов с нумерацией групп и
      сравнение обычного кригинга с кригингом по внешнему дрейфу.
    2.6.0
    - Новый инструмент «Кригинг с внешним дрейфом (External Drift)»
      (группа «Дополнительные инструменты»). Оценка по точкам, когда поле
      закономерно связано со сторонней величиной, известной всюду в виде
      растра: структурная поверхность соседнего пласта, грубая региональная
      модель, сейсмический атрибут. Дрейф снимается регрессией значения на
      растр, кригуются остатки, дрейф возвращается к оценке из того же растра.
      Та же схема регрессия-кригинг, что и у снятия полиномиального тренда,
      только дрейф здесь не функция координат, а функция внешнего значения.
      Степень дрейфа 1 (линейный) или 2 (квадратичный); поиск, анизотропия,
      обрезка и стандартная ошибка - как у «2D Kriging». Ячейки вне покрытия
      растра дрейфа остаются пустыми. Растр дрейфа и точки в одной CRS.
    - Составная нумерация инструментов по группам: «Грид и изолинии» 1.1-1.7,
      «Дополнительные инструменты» 2.1-2.3. Прежняя сквозная нумерация 1-10
      сортировалась как строки, и «10» вставал перед «8» и «9». Номер теперь
      сразу показывает группу.
    - Демо-генератор скважин умеет выдавать поверхность дрейфа (отдельный растр)
      и связанное с ней поле dz - готовая пара для проверки кригинга с внешним
      дрейфом.
    2.5.0
    - Новый инструмент «Гидравлический градиент и направление потока»
      (гидрогеология). По растру напора строит гидравлический градиент i = |∇h|
      (безразмерный, м/м), азимут направления потока (компасный, вниз по
      градиенту) и точечный слой векторов потока, который автоматически
      оформляется стрелками (пресет flow_arrows.qml: поворот по азимуту,
      размер по градиенту).
      Это геометрия поля напора без проницаемости: скорость по Дарси (минус K
      на градиент) требует коэффициента фильтрации и здесь не считается.
      Опционально сглаживание напора перед расчётом (градиент усиливает шум).
    - Демо-генератор скважин: опция добавить поле напора (head) с региональным
      уклоном - сквозной учебный цикл «демо → кригинг напора → градиент потока».
    - Инструменты разнесены по двум группам Processing: «Грид и изолинии»
      (основной поток) и «Дополнительные инструменты» (категориальный
      индикаторный кригинг и гидравлический градиент).
    2.4.0
    - В инструменте «2D Kriging» появился блочный кригинг (галка «Блочный
      кригинг» и поле «Дискретизация блока, N×N на ячейку», по умолчанию 4×4).
      Оценивается среднее по ячейке грида, а не значение в её центре: ячейка
      разбивается на N×N точек дискретизации, правые ковариации усредняются
      по блоку, дисперсионный член - блок-блок ковариация (схема GSLIB KB2D).
      Поверхность глаже, стандартная ошибка кригинга ниже точечной - подходит
      для оценки запасов и содержаний по блоку. Пробы в узлах при этом не
      воспроизводятся точно. По умолчанию выключено: обычный точечный кригинг.
    - Снятие тренда и блочный кригинг работают вместе: кригуются остатки по
      блоку, тренд добавляется обратно к оценке.
    2.3.0
    - Новый инструмент «Категориальный индикаторный кригинг». По категориальному
      полю (минтип, литотип, класс) строит на каждый класс индикатор 0/1,
      кригует ядром KB2D, нормирует вероятности к сумме 1. Выход: многополосный
      растр вероятностей (полоса на класс), карта зон (самый вероятный класс) и
      растр уверенности. Кодом класса не кригует, у категорий нет порядка.
    - Демо-генератор скважин: опция добавить категориальное поле минтипа
      (фон сильвинита с очагами замещения) для обучения и проверки нового
      инструмента.
    2.2.0
    - Инструмент «Изолинии из растра»: выбор «Стиль изолиний» с двумя
      встроенными пресетами (папка styles) - структурный (по умолчанию) и
      депрессионный со штрихами вниз. Стиль накладывается на слой
      автоматически.
    - Депрессионный стиль сам включает расчёт стороны склона: линии получают
      поле dn_sign сэмплированием исходного растра по обе стороны линии, и по
      нему штрихи на главных изолиниях ложатся в сторону склона вниз.
      Отдельной галки нет, всё решает выбор стиля.
    - Выбор языка интерфейса: русский только при русской локали QGIS,
      английский для всех остальных локалей и при неопределённой локали.
      Раньше английский включался лишь при ровно английской локали, а прочие
      языки получали русский.
    2.1.1
    - Тихие удобства. Выбранный профиль обработки запоминается между
      сессиями и подставляется при следующем открытии «2D Kriging» и
      «Кросс-валидации».
    - Параметры запуска сохраняются только при успешном завершении, поэтому
      ошибочный или прерванный запуск больше не затирает рабочие значения.
    - Предупреждения о плохой кондиционности данных в Журнал: мало точек,
      совпадающие координаты (риск вырожденной матрицы), одинаковые значения.
      Расчёт при этом не останавливается.
    2.1.0
    - Снятие тренда (регрессия-кригинг) в «2D Kriging» и «Кросс-валидации»:
      галка «Снять полиномиальный тренд» и поле «Степень тренда» (плоскость
      или квадратичная). Региональный тренд снимается методом наименьших
      квадратов перед кригингом, кригуются остатки, тренд возвращается к
      оценке. Полезно для отметок пласта и мощностей с общим падением в
      пределах участка; вариограмму после снятия тренда задают по остаткам.
      В кросс-валидации тренд переподбирается на каждом шаге leave-one-out,
      поэтому выигрыш виден прямо по RMSE. По умолчанию выключено.
    - «Вариограммная карта»: поле «Записать анизотропию в профиль». Оценённые
      азимут, коэффициент анизотропии и радиус главной оси дописываются в
      выбранный профиль поверх модели и наггета. При загрузке профиля в
      «2D Kriging» они подставляются и показываются в подписи. Если радиус
      упёрся в макс. лаг, обновляются только азимут и коэффициент.
    - Руководство дополнено разделами про снятие тренда и запись анизотропии
      в профиль; PDF (RU и EN) пересобраны.
    2.0.0
    - Полное двуязычие плагина (русский/английский): язык интерфейса
      определяется по локали QGIS. Переведены меню, диалоги, варианты
      выпадающих списков, подсказки и панели справки.
    - Переведены логи, предупреждения, исключения и HTML-отчёты
      (кросс-валидация, вариограмма, вариограммная карта), имена
      выходных слоёв и псевдонимы полей слоя остатков.
    - Двуязычное руководство пользователя: Isoliner.pdf (RU) и
      Isoliner_en.pdf (EN). Кнопка «Справка» открывает PDF по языку
      интерфейса.
    - Движок переводов - словарный слой i18n с тестами покрытия
      и импорта.
    1.9.1
    - Изолинии: бикубическое сглаживание (сгущение грида ×2..×4 перед
      контурингом, по умолчанию выкл.) - гладкие изолинии без
      «октагонов» от грубой сетки. Чистый NumPy, совместимо с QGIS 4.
      Работает и для линий, и для контурных полигонов; границы поясов
      совпадают с изолиниями.
    - Полигонизация поясов переведена на прямые вызовы GEOS
      (unaryUnion + polygonize) вместо native:splitwithlines, который
      на густой сети терял часть граней (покрытие падало вдвое).
    1.9.0
    - Новый инструмент «Вариограммная карта (анизотропия)»: поверхность
      гамма(h_x, h_y) - хитмап с эллипсом анизотропии; оценка азимута главной
      оси, коэффициента анизотропии и радиуса для подстановки в кригинг.
      Если радиус упирается в макс. лаг (гамма не вышла на полку) - в
      Журнале и отчёте предупреждение, что это нижняя оценка.
    1.8.3
    - Совместимость с QGIS 4 (qgisMaximumVersion=4.99); проверено в 4.0.
    - Гауссова модель вариограммы: принудительный минимальный наггет для
      численной устойчивости (убирает осцилляции и отрицательные веса).
    - Полигоны: устойчивое построение в QGIS 4 / GEOS 3.14 - концы открытых
      изолиний продлеваются за контур (овершут), стык нодируется чисто;
      убраны дыры в поясах.
    - Руководство: уточнены формулировки (полувариограмма, радиус, выбор
      модели, режим под тип данных, ураганные пробы, кросс-валидация).
    1.8.2
    - Двуязычное описание плагина (английский и русский) в каталоге QGIS
      и английский README для международной аудитории.
    1.8.1
    - В справку каждого инструмента добавлена ссылка на страницу плагина
      на сайте www.informpp.ru.
    1.8.0
    - Профили обработки: именованные наборы «вариограмма (наггет, тип, порог,
      радиус, азимут, оси) + отсев ураганных проб», хранятся глобально, между
      проектами. «Вариограмма» и «Кросс-валидация» получили поле «Сохранить
      профиль под именем» и «Загрузить профиль обработки», «2D Kriging» -
      «Загрузить профиль обработки» (подставляет профиль поверх полей).
      Прежняя галка «Подставить последнюю рекомендованную модель» убрана.
    - Новый шестой инструмент «Профили обработки»: показать список, сохранить
      вручную, удалить, очистить.
    - Под списком профиля показываются его параметры строкой ниже, а в
      «2D Kriging» и «Кросс-валидации» - напоминание, что расчёт пойдёт по
      профилю, а не по полям диалога (как живой показ размера грида; на QGIS
      без старого API виджетов - обычный список).
    - Структуры 2 и 3 вариограммы убраны (использовались редко) - осталась
      одна структура с азимутом и анизотропией.
    - Порядок параметров везде единый: сначала вариограмма, отсев ураганных
      проб - в самом конце.
    - Формулировка: «изотропная» вместо «всенаправленная» экспериментальная
      вариограмма.
    1.7.4
    - «2D Kriging»: галка «Подставить последнюю рекомендованную модель»
      перенесена из «Дополнительно» в основные параметры - её видно сразу,
      без разворачивания дополнительного раздела. Поведение прежнее:
      подобранная в «Вариограмме» или «Кросс-валидации» модель подставляется
      при запуске, подстановка отмечается строкой в Журнале.
    - Руководство: добавлена таблица всех параметров инструмента
      «Вариограмма» и описание полей выходной таблицы (series, lag, gamma,
      npairs). PDF пересобран. Изменений в расчётах нет.
    1.7.3
    - Номер версии модуля теперь виден в трёх местах: строкой «Isoliner
      X.Y.Z» в начале выполнения любого инструмента (Журнал), подвалом в
      HTML-отчётах (вариограмма и кросс-валидация) и в конце встроенной
      справки каждого инструмента. Версия читается из metadata.txt, отдельно
      нигде не дублируется.
    1.7.2
    - Руководство дополнено разделом про инструмент «Вариограмма
      (экспериментальная)»: зачем нужен предпросмотр, группировка по виду
      разведки, выбор максимального расстояния по выходу кривой на плато и
      рабочий цикл с кросс-валидацией. В раздел кросс-валидации добавлена
      поясняющая схема «оценка против факта». PDF пересобран. Изменений в
      коде нет.
    1.7.1
    - Инструменты пронумерованы в названиях (1-5), чтобы задать порядок в
      панели Processing (она сортирует по алфавиту имени): 1 Кригинг,
      2 Изолинии, 3 Вариограмма, 4 Кросс-валидация, 5 Демо-скважины.
    - «Вариограмма»: предупреждение, когда радиус подобранной модели
      достигает края окна (максимального расстояния) - кривая не вышла
      на плато, порог получен экстраполяцией, радиус считать нижней
      оценкой. Сообщение разведено по случаям: окно мало (увеличить),
      окно перешагивает тренд или безрудную зону (уменьшить).
    - «Вариограмма»: у поля максимального расстояния указаны единицы
      слоя, добавлено предупреждение, когда оно меньше типичного шага
      между точками (значение задаётся в метрах, не в километрах).
    - «Вариограмма»: минимум точек в группе - параметр в процентах от
      выборки (по умолчанию 2) с нижним полом 30 точек. Малочисленные
      группы пропускаются и перечисляются в журнале, общая кривая
      строится всегда.
    - Порог предупреждения о гауссовой модели с почти нулевым наггетом
      («бычьи глаза») сделан относительным (наггет менее 5 процентов от суммарного
      порога).
    - «Кросс-валидация»: рекомендация по MSDR теперь даёт точный приём -
      умножить (или разделить) наггет и вклады на MSDR, не трогая радиус
      и модель. Оценки не меняются, поправляется только карта ошибки.
    - Перенос модели в «2D Kriging»: «Вариограмма» и «Кросс-валидация»
      запоминают подобранную/проверенную модель, а в «2D Kriging»
      появилась галка «Подставить последнюю рекомендованную модель»
      (по умолчанию выключена) - числа подставляются осознанно, после
      просмотра отчёта, а не вслепую.
    - «Вариограмма»: в описании - «всенаправленная» вместо кальки
      «омнинаправленная».
    1.7.0
    - Новый инструмент «Вариограмма (экспериментальная)»: строит
      экспериментальную вариограмму по точкам и выдаёт HTML-отчёт с
      графиком. Поверх облака накладывается текущая модель, по желанию
      рассчитывается рекомендованная модель (наггет, порог, ранг) на
      чистом numpy, без сторонних зависимостей. Есть поле группировки
      (напр. вид разведки) - на каждое значение строится отдельная
      вариограмма, чтобы увидеть, общая ли структура у поверхностной и
      подземной сети при разной плотности наблюдений. Подбор не
      применяет декластеризацию, поэтому смещение по плотности отбора
      остаётся видимым, а не замаскированным. Рекомендованные числа
      переносятся в «2D Kriging» вручную.
    1.6.0
    - Гауссово сглаживание поля перенесено из «Изолинии из растра» в
      «2D Kriging»: опция «Сгладить грид (Гаусс)», по умолчанию выключена.
      Изолинии строятся ровно по видимому растру, без скрытого сужения
      диапазона уровней. Скругление линий (Chaikin) осталось в изолиниях
      отдельной опцией.
    - Руководство переработано: темы каждого инструмента собраны в его
      подразделы (вариограмма, отсев, стандартная ошибка - под 2D Kriging;
      сглаживание, полигоны, оформление, типичные ситуации - под Изолинии).
      Заголовки переведены на автоматическую нумерацию, оформление выверено.
    1.5.1
    - Руководство: разделы переставлены по порядку инструментов модуля
      (2D Kriging и его темы -> Изолинии и его темы -> Кросс-валидация ->
      Демо -> Типичные ситуации). Добавлены скриншоты окон всех четырёх
      инструментов и панели «Обработка».
    1.5.0
    - Отчёт кросс-валидации: QQ-график ошибок (по форме - z-оценка, для
      проверки нормальности и поиска второй популяции), дисперсия данных
      в таблице метрик, номера скважин в подсказках на графике
      «оценка vs факт», подписи восьми худших остатков.
    - Руководство дополнено схемами для новичков: процесс (точки → грид →
      изолинии), веса кригинга, радиус поиска, наггет крупным планом,
      анизотропия, отсев проб (до/после). Карта стандартной ошибки -
      на сгенерированном примере. В отчёт добавлен блок «Параметры
      кригинга» (только отличные от стандартных). Обновлён README.
    1.4.2
    - Обновлено руководство пользователя (формулировки) и README.
    1.4.1
    - Обновлён контактный email сопровождающего.
    1.4.0
    - Новый инструмент «Создать пример скважин (демо)»: генерация учебного
      точечного слоя с полями кровли (абс. отметка), мощности и содержания
      абстрактного компонента, имеющими пространственную структуру (диапазоны
      кровли/мощности - по образцу пласта КрII). Для обучения и проверки без
      реальных данных. Псевдонимы на демо-слое не ставятся, чтобы не было
      предупреждений при подаче слоя в кригинг/кросс-валидацию.
    1.3.0
    - Кросс-валидация: необязательный HTML-отчёт (по умолчанию) -
      интерактивный график «оценка vs факт» + гистограмма ошибок и
      таблица метрик (plotly); без plotly - отчёт с метриками текстом.
    - Кросс-валидация: в отчёт и Журнал добавлен блок рекомендаций
      (авто-интерпретация ME/MSDR/R: утвердить параметры или как
      поправить наггет/силл/радиус).
    - Кригинг и кросс-валидация: в Журнал выводится дисперсия данных
      как ориентир для силла (наггет/силл - в абсолютных единицах).
    1.2.0
    - Кросс-валидация: добавлена кнопка «Справка» в окно инструмента.
    - Кросс-валидация: необязательное «поле номера скважины» переносится
      в слой остатков; колонка факта названа по проверяемому полю.
    - Слой остатков: поле std_error переименовано в std_resid
      (стандартизованный остаток со знаком; это не дисперсия).
    - Слой остатков: у полей заданы псевдонимы (понятные названия), слой
      автоматически называется по проверяемому полю и источнику.
    1.1.0
    - Новый инструмент «Кросс-валидация вариограммы» (leave-one-out):
      метрики ME/MAE/RMSE/MSDR/R и слой остатков для подбора вариограммы.
    - Руководство дополнено разделом о кросс-валидации.
    1.0.0
    - Первый стабильный релиз (снят флаг experimental).
    - Сводно с 0.6.x-0.7.x: стандартная ошибка кригинга; отсев/срезка
      ураганных проб; журнал пропусков; руководство (PDF) и кнопка «Справка»;
      слой изолиний над полигонами; исправлена степенная модель; smoke-тесты.
    0.7.2
    - Отсев/срезка ураганных проб в 2D Kriging: границы значения Z по
      абсолюту (мин/макс) или перцентилю; режимы «удалить» и «срезать»
      (capping). В «Дополнительно».
    0.7.1
    - В журнал выводится число точек, пропущенных без значения поля
      (точки с пустым/нечисловым Z в кригинг не попадают - это уже так).
    0.7.0
    - 2D Kriging: необязательный выход «Стандартная ошибка кригинга»
      (sqrt дисперсии ошибки) - карта неопределённости оценки.
    0.6.5
    - Метаданные для публикации в репозитории QGIS (ссылки на GitHub).
    0.6.4
    - Обновлено руководство; оглавление в PDF пересчитывается автоматически.
    0.6.3
    - Исправлена степенная модель вариограммы: «радиус a» трактуется как
      показатель ω (0<ω<2), авто=max/3 к ней больше не применяется.
    - Предупреждения (pushWarning) для сомнительных параметров вариограммы.
    - Слияние совпадающих точек - относительно охвата (корректно для любых CRS).
    - Добавлен smoke-тест движка kb2d (tests/).
    0.6.2
    - Обновлён текст руководства пользователя (PDF).
    0.6.1
    - ИСПРАВЛЕНО: слой изолиний мог не появляться из-за переупорядочивания
      слоёв. Теперь переставляется только слой полигонов (под линии),
      отложенно и безопасно - узел линий не трогается.
    0.6.0
    - Руководство пользователя (PDF) в комплекте; кнопка «Справка» в обоих
      инструментах открывает его. Слой изолиний теперь над полигонами.
    0.5.3
    - Документация: заметка про обновление и перезагрузку без перезапуска
      QGIS (в т.ч. через Plugin Reloader).
    0.5.2
    - Вернул лёгкое скругление линий (Chaikin) поверх сглаженного поля -
      убирает «октагоны» от грубого грида, пересечений не создаёт.
      Отдельный параметр «Скругление линий, итераций».
    0.5.1
    - Сглаживание перенесено на уровень поля (гауссово, радиус в ячейках)
      вместо сглаживания отдельных линий: изолинии больше не пересекаются
      в густых местах и плавны на углах.
    0.5.0
    - Контурные полигоны строятся по умолчанию (во временный слой).
    - Запоминание выбранного поля Z между запусками.
    - Иконка плагина; чистка кода; расширенный README.
    0.4.4
    - Обрезка по контуру скважин без native:minimumboundinggeometry
      (dissolve + convexhull) - работает в QGIS 3.40.
    0.4.3
    - Линии и пояса из одного набора линий; границы совпадают и по краям;
      нодирование через splitwithlines.
    0.4.2
    - Переименование в Isoliner; полигоны = пояса между изолиниями (без дыр,
      без «ступенек»), диапазон пояса - выборкой растра.
