[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. Bilingual (EN/RU) user manual (PDF) is bundled, opened by the language of the QGIS interface. Two companion plugins work alongside it: Isoliner3D (https://github.com/Valery35/qgis-isoliner3d) shows the surfaces and bodies in a 3D scene, and Topoliner (https://github.com/Valery35/topoliner) puts the topology of polygon and line layers in order before interpolation. Developed with the support of Inform++ LLC (www.informpp.ru).
    .
    Группа команд Processing для интерполяции точечных данных и построения изолиний: 2D Kriging (точки в растр, ядро GSLIB KB2D), экспериментальная вариограмма с подбором модели, кросс-валидация (leave-one-out), опциональное снятие тренда (регрессия-кригинг), изолинии и контурные полигоны с совпадающими границами, профили обработки и генератор учебных данных. Подходит для отметок пласта, мощностей, ФМС, химии и любых числовых атрибутов. Двуязычное руководство пользователя (PDF, EN/RU) в комплекте, открывается по языку интерфейса QGIS. Рядом работают два плагина того же набора: Isoliner3D (https://github.com/Valery35/qgis-isoliner3d) показывает поверхности и тела в 3D-сцене, а Topoliner (https://github.com/Valery35/topoliner) приводит в порядок топологию полигональных и линейных слоёв перед интерполяцией. Разработано при поддержке ООО «Информ++» (www.informpp.ru).
version=5.12.7
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,dem,terrain,topography,hydrology,watershed,flow accumulation,river network,slope,aspect,anudem,topo2raster,copernicus,gedtm30,openstreetmap
category=Analysis
icon=icon.svg
experimental=False
deprecated=False
hasProcessingProvider=yes
changelog=5.12.7
    - Тексты: слово «лаг» заменено на «расстояние» там, где речь о
      расстоянии между точками пары, и на «шаг» там, где это параметр
      инструмента. Метки в 1.05, 1.06 и 7.01 переименованы: «Количество
      шагов», «Макс. расстояние». В первом месте пояснено, что шаг один
      это соседние ячейки, а шаг четыре - ячейки через три.
    - Из справок и руководства убраны оценочные сравнения: что важнее и
      что лучше, не говорится, факты даются рядом.
    5.12.6
    - 1.11 сообщает о пустых ячейках в результате, если они появились.
      Пусто может быть только там, где нет ни одной из двух поверхностей:
      обычно региональная не покрывает заданный охват. Сам переход пустот
      не оставляет, он считается весом, а не вырезанием дыры.
    - В руководстве описано отличие от ручного способа с вырезанием дыры
      и заполнением интерполяцией, с числами по шву.
    5.12.5
    - 1.11: режим «Не снимать» больше не снимает. Он уходил в ветку
      медианы и молча правил высоту, хотя выбор означал обратное.
    - В журнал 1.11 пишется, что именно сделано с расхождением: одним
      числом, плоскостью или ничего. На постоянном расхождении медиана и
      плоскость дают одинаковый ответ по построению, и об этом сказано
      прямо - иначе выглядит так, будто режимы не работают.
    5.12.4
    - 1.12 снимает тренд плоскостью перед подгонкой. Коэффициент решётки
      линеен по значению, поэтому на данных, далёких от нуля, ошибка
      росла вместе с самой величиной: в дыре внутри облака точек
      поверхность ныряла к нулю. На рельефе около двухсот метров с пустым
      кругом посередине промах был 30 м, стал меньше метра. Числом
      уровней это не лечилось.
    - Тренд возвращается в коэффициенты нулевого уровня, поэтому оценка
      остаётся в абсолютных значениях. Плоскость воспроизводится точно.
    - Предупреждение об обрезке к границам больше не советует убавить
      уровни: в случае дыры внутри облака это не помогает, там нужны
      данные.
    5.12.3
    - Забор 3D из 4.01 больше не дырявый в сцене. Стенка пласта отдавалась
      одним кольцом «верх туда, низ обратно»: оно длинное и сильно
      невыпуклое, а движки сцены триангулируют такое веером от первой
      вершины. Теперь стенка режется по звеньям трассы, и каждый
      четырёхугольник плоский по построению - любая триангуляция верна.
      На чертеже проблемы не было: там полигон плоский и рисуется заливкой.
    5.12.2
    - У полос разреза 4.01 появилось поле color: цвет пласта лежит прямо в
      данных шестнадцатеричной строкой. Символику слоя читают не все
      потребители, и трёхмерная сцена красила забор своим цветом, хотя
      цвет пласта был известен. Поле переживает экспорт и передачу.
    5.12.1
    - Забор 3D из 4.01 красится теми же категориями пластов, что чертёж.
      Стенки строились по каждому пласту, код пласта лежал в атрибутах, но
      цвет вешался только на чертёжный слой: в сцене разрез выходил
      одноцветным и читался как ограждение, а не как геология.
    - 4.10 «Пример для разреза» сообщает о ходе работы и слушает отмену.
      Раньше он молчал до конца, и долгая работа была неотличима от
      зависания.
    5.12.0
    - Чистка модуля. Убраны неиспользуемые импорты и мёртвые присваивания
      в семи файлах, включая лишнюю копию массива в 1.03 и вычисление
      выборок в демо-инструменте, результат которого никуда не шёл.
    - Проверка переводов чинилась дважды: она сканировала пять файлов из
      тридцати и не видела вызовов вида tr(...), поэтому строки окон
      «Карта плотности» и «Подоснова» проверку не проходили вовсе. Теперь
      сканируется весь пакет, а имена переводимых констант собираются
      сами, а не перечисляются руками.
    - Из словаря убраны 13 повторов ключей (второй перевод молча затирал
      первый) и 22 ключа со старой нумерацией инструментов.
    5.11.2
    - 1.12: у результата задаются нижняя и верхняя границы. Содержание не
      бывает отрицательным, доля не бывает больше единицы, а гладкая
      поверхность между замерами за диапазон проскакивает.
    - В журнал пишется, сколько ячеек срезано снизу и сверху, какая это
      доля площади и насколько далеко поверхность уходила. Если к границе
      прижата десятая часть площади, идёт предупреждение: там поверхность
      не оценена, а срезана, и лечится это решёткой, а не границами.
    5.11.1
    - 1.12 считал растр по перепутанным осям: точки данных идут как (x, y),
      а растр адресуется как (строка, столбец), то есть (y, x). Значения
      брались не там, где стоит ячейка. Построение растра перенесено в
      ядро и закрыто проверкой на неквадратной сетке.
    - Слой выходил чёрным: применялся стиль, файла которого в поставке нет.
      Стиль растру больше не вешается, шкалу QGIS растягивает по данным.
      Ссылки на все файлы стилей теперь проверяются тестом.
    - Замеры, стоящие в одной точке с разными значениями, называются в
      журнале числом пар и наибольшим расхождением. В такой точке метод
      даёт среднее, невязка не исчезает при любом числе уровней и на
      промежуточных может подрасти.
    5.11.0
    - Новый инструмент 1.12 «MBA: мультисеточные B-сплайны». Третий способ
      получить поверхность из точек, рядом с кригингом и минимальной
      кривизной. Система уравнений не решается вообще, работа линейна по
      числу точек: миллион замеров считается там, где кригинг неприменим.
    - Начальная решётка задаёт радиус влияния, разные числа ячеек по осям
      дают анизотропию без модели вариограммы, число уровней управляет
      гладкостью: один-два дают тренд, восемь сажают поверхность на замеры.
    - Результат обрезается выпуклой оболочкой точек: за пределами облака у
      решётки нет данных, и поверхность там уходит куда угодно.
    - Ядро написано N-мерным: тот же код считает и объём, и это задел под
      трёхмерную версию в Isoliner3D.
    5.10.0
    - 4.06: отрезки сечения сливаются в цепочки по источнику, и на чертёж
      идёт полилиния на цепочку, а не объект на треугольник. У оболочки
      треугольников десятки тысяч, и слоем из отрезков ни подписать, ни
      выбрать. То же для выхода 3D.
    - 4.06: отрезки сечения собираются в замкнутые кольца, отдельный выход
      «Замкнутые сечения». Кольцо получается само, если цепочка
      сомкнулась: у оболочки сечение замкнуто, у поверхности открыто по
      построению, и хорда между её концами была бы выдуманной линией.
      В журнал идут числа замкнутых и открытых цепочек и наибольший зазор.
    - 4.06: поля исходного объекта переносятся в кольца. Для этого
      треугольники режутся по объектам, а не общим списком слоя, иначе
      принадлежность кольца объекту теряется.
    - У колец есть площадь в единицах чертежа и признак замкнутости.
    5.9.5
    - 1.11: пустота источника передаётся при переносе на сетку результата.
      Без этого служебное значение ЦМР (-32768, -9999, ноль) шло в расчёт
      как настоящая отметка: подробная поверхность «покрывала» весь охват,
      расхождение считалось по мусору и поправка уезжала в бессмыслицу -
      на вид растр просто вставлялся без перехода. Это же чинит обрезку
      подробной поверхности по рамке.
    - В журнал добавлена доля ячеек с данными у каждой поверхности: по ней
      сразу видно, помечена ли пустота в файле.
    - У наклонной плоскости в журнал идут её крайние значения по полю.
      Плоскость считается по кольцу, а применяется ко всему охвату.
    5.9.4
    - 1.11: охват и разрешение результата задаются. Раньше сшитая
      поверхность выходила в границах подробной, и от региональной
      оставался только кусок под участком. Теперь охват по умолчанию
      берётся по региональной, можно взять по подробной или задать рамку.
    - Ячейка результата задаётся отдельно. Подробная съёмка бывает
      сантиметровой, а региональная тридцатиметровой на десятки
      километров: в шаге подробной растр вышел бы в триллион ячеек.
      Размер считается заранее, и при превышении предела инструмент
      отказывается работать и называет подходящую ячейку.
    - При укрупнении подробная поверхность осредняется, а не выбирается
      по узлам: выборка потеряла бы то, ради чего съёмку и делали.
    5.9.3
    - 4.06 «Пересечение TIN с разрезом» больше не выглядит зависшим на
      слое изоповерхности. Отмена и полоса хода работы висят на частях
      геометрии, а не на объектах слоя: у оболочки объект один на
      уровень, и проверка срабатывала два-три раза за всю работу.
    - Части читаются по месту, без построения объекта Python на каждый
      треугольник, координаты берутся прямо из кольца. У слоя оболочки
      треугольников десятки тысяч в одном объекте, у вокселей из 2.04 -
      до полумиллиона.
    5.9.2
    - Окно «Карта плотности» больше не перечитывает слой на каждое
      движение ползунка. Разобранные геометрии и значения полей
      складываются в память при первом проходе, дальше тик только
      считает. Правка слоя и его смена сбрасывают запас, а на слое
      сверх двух миллионов вершин он не строится вовсе.
    5.9.1
    - Окно «Карта плотности» отзывчивее под ползунками. Поворот ручки во
      время пересчёта больше не теряется: предпросмотр пересчитывается ещё
      раз по окончании. Вспомогательный растр не перечитывается с диска
      целиком на каждое движение - выборка кэшируется по слою и сетке.
    - Справки и сообщения журнала вычитаны: убраны точки с запятой в
      прозе, кроме математической записи интервалов.
    5.9.0
    - Новый инструмент 1.11 «Врезка подробной поверхности в региональную».
      Сшивает две поверхности одной величины: подробную съёмку с открытой
      ЦМР, куст разведочных скважин с региональной моделью кровли,
      детальный участок опробования с общей картой содержаний.
    - Систематическое расхождение снимается по кольцу перекрытия вокруг
      зоны врезки, медианой или наклонной плоскостью. У рельефа это разные
      вертикальные системы, у геологии разные методики увязки: без снятия
      вся региональная часть остаётся смещённой, и водосбор уезжает.
    - Переход строится весом, а не вырезанной дыркой с интерполяцией:
      внутри зоны единица, за буфером ноль, в кольце плавно. Ширина
      задаётся в ячейках региональной поверхности.
    - Если подробные данные обрываются ровно по зоне врезки, перекрытия
      нет и поправку снять не по чему. Инструмент говорит об этом прямо и
      не сшивает молча.
    5.8.4
    - Растеризация сторон формы в 2.03 ускорена в четыре с половиной раза:
      точки вдоль сегментов считаются и укладываются в растр группами, а
      не по одной. На наборе из восьмидесяти тысяч вершин время упало с
      двух секунд до полусекунды, результат совпадает со старым побитово.
    - Сборка тел поясов в 1.04 ускорена в полтора раза: кольцо приводится
      к рабочему виду один раз на тело, а не шестью путями подряд.
    - Из подписей трёх параметров убраны служебные пометки о
      необязательности: в диалоге QGIS такой параметр и так помечен.
    5.8.2
    - Кнопка «Подоснова» на панели Isoliner: карта или космоснимок под
      данные одним движением. Семь источников - OpenStreetMap,
      OpenTopoMap, космоснимки, топооснова, схема, отмывка рельефа и
      уклоны. Слои описаны файлами .qlr в папке basemaps, поэтому свои
      источники добавляются без правки кода: настроить слой в QGIS и
      сохранить как файл определения слоя.
    - Окно немодальное и проверяет систему координат проекта заранее: без
      датума подоснова легла бы со сдвигом молча. Добавленные слои
      опускаются под остальные.
    5.8.0
    - Контурные полигоны 1.04 кладутся плоско, на верхнюю границу пояса,
      на ту же отметку, что верхняя крышка тела пояса. Ступенчатую
      поверхность даёт стопка поясов, полигоны и тела ложатся друг на
      друга без зазора. Прежние отметки вдоль кольца делали его
      неплоским, и трёхмерная сцена натягивала через весь пояс длинные
      тонкие треугольники.
    - Заполнение понижений ускорено втрое с лишним: линия пересчитывается
      только когда менялись её входы, а горизонтальные проходы идут по
      транспонированной копии, где строка лежит в памяти подряд.
    - Направления стока, аккумуляция и сборка речной сети переписаны на
      общие буферы и групповые операции вместо обхода по ячейке. Сеть
      строится прыжками указателей, порядок Стралера считается явным
      стеком без предела глубины рекурсии.
    - На сетке 4000 на 4000 цепочка заполнение, направления, аккумуляция,
      сеть занимает 15 секунд против 36 прежних. Результаты совпадают со
      старыми побитово, включая счётчики поднятых ячеек и нумерацию
      звеньев.
    5.7.4
    - Линии с отметками в 2.22 выходят направленными сверху вниз по
      склону: первая вершина выше последней. Направление одно на весь
      слой, поэтому стрелку падения ставят стилем, маркером по линии, и
      рисовать её отдельным слоем не нужно. Число развёрнутых линий идёт
      в журнал.
    - У линии с равными концами решают половины: если начало в среднем
      выше конца, линия и так идёт вниз. Сумма падений по ходу для этого
      не годится, она телескопически равна разности концов. Кольца
      полигона не разворачиваются: там порядок различает внешнее и
      внутреннее.
    5.7.3
    - У 2.23 появился отбор по зоне зарождения: остаются только трассы, у
      которых есть участок круче заданного угла и не короче заданной
      длины. Так ищут сход лавины: она срывается там, где склон держит
      крутизну на протяжении, а не в одной ячейке. Длина найденного
      участка пишется в поле steep_m, отброшенные считаются в журнал.
    - Пороги крутизны задаются в градусах, а не отношением: лавинные и
      геотехнические критерии пишут в градусах, и растр уклона у
      топографа тоже в градусах.
    5.7.2
    - У 2.23 появилась остановка на выполаживании: трасса обрывается там,
      где поток теряет силу, у подножия склона, на террасе, на пойме.
      Задаётся порогом уклона и длиной пологого участка. Уклон меряется
      осреднённо по последним метрам пути, поэтому короткая полка внутри
      крутого склона пропускается, а настоящее выполаживание режет. Режется
      по началу участка, причина пишется в поле reason.
    5.7.1
    - Исправлено падение 2.23 при включённом заполнении впадин:
      «setting an array element with a sequence». Заполнение отдаёт тройку
      из грида, числа поднятых ячеек и величины подъёма, а бралось целиком
      за грид. Теперь тройка разбирается, а поднятые ячейки и подъём идут
      в журнал, как в остальных инструментах рельефа. На это поставлен
      сторож по всему пакету.
    5.7.0
    - Новый инструмент 2.23 «Линии стока от точек, линий и контуров».
      От каждой стартовой ячейки идёт ход вниз по склону по направлениям
      D8 и рисуется линией. Стартом служит любая геометрия: точка даёт
      одну ячейку, линия ячейки под собой, полигон все ячейки внутри
      контура. Отвечает на вопрос, куда пойдёт вода с отвала или
      площадки.
    - Трасса обрывается на стоке, на краю листа, на приёмнике или при
      слиянии с уже пройденной, и причина пишется в поле reason.
      Приёмник задаётся слоем водоёмов и водотоков и порогом накопления,
      оба способа складываются.
    - Обрыв при слиянии собирает трассы в дерево: без него площадной
      источник в тысячу ячеек даёт тысячу копий одного русла.
    - В выходе длина пути, перепад, средний уклон, отметки концов, число
      ячеек и поля исходного объекта по выбору. Трасса D8 идёт лесенкой,
      для чертежа есть сглаживание.
    5.6.71
    - В описание плагина для каталога и в оба README добавлены ссылки на
      Isoliner3D и Topoliner: показ поверхностей и тел в 3D-сцене и
      чистка топологии контуров перед интерполяцией.
    5.6.70
    - Выбор источника отметок в 2.22 убран, а вместо него инструмент
      считает расхождение и пишет о нём в журнал: сколько проб сравнил,
      медиану и наибольшее расхождение. На присланных данных выходит
      сравнений 7, медиана 4.58 м, наибольшее 9.15 м. Причина обычно либо
      обрезки изолиний у самого контура, либо разные объекты на одной
      линии: точки описывают полотно, горизонтали землю вокруг.
    - Слой немых линий стал необязательным и по умолчанию не создаётся.
    5.6.69
    - У 2.22 появился выбор источника отметок: горизонтали и точки, только
      горизонтали, только точки высот. У врезанной дороги высотные отметки
      лежат на том же контуре, что и пересечения с горизонталями, но ниже
      на метры: точки описывают полотно, горизонтали землю вокруг. Смесь
      двух источников давала на живых данных скачок между соседними
      вершинами до 6 м против 1.9 м по одним точкам.
    - Умолчание прежнее, оба источника. Выбранный источник пишется в
      журнал.
    5.6.68
    - Убран выход «Морфостворы»: он повторял профиль из общего слоя
      чертежа, где тот лежит с полем kind равным profile и со всеми
      характеристиками участка в атрибутах.
    5.6.67
    - Исправлено падение 6.01 на втором створе: «float() argument must be
      a string or a real number, not tuple». Выбор наивысшего расчётного
      уровня для подвала клал кортеж в переменную с именем top, а это имя
      занято верхней отметкой профиля. Локальная переменная переименована,
      имя охраняется тестом.
    - Предупреждение при неположительном уклоне: расход по Маннингу
      выходит нулевым. При счёте по цепочке створов это означает, что
      отметки дна вверх по течению ниже, чем вниз.
    Более ранние версии: файл CHANGELOG.md в репозитории,
    https://github.com/Valery35/qgis-isoliner/blob/main/CHANGELOG.md
