В этот раз рассмотрим несколько инструментов из NextGIS Toolbox для обработки векторных слоёв и атрибутивных данных. Часть инструментов напрямую связана с веб-ГИС и позволяет работать с опубликованными веб-картами. Другие инструменты автономны и в качестве исходников используют файлы, загруженные с ПК. С полным списком инструментов Premium-пользователи могут ознакомиться на сайте NextGIS в разделе Toolbox.
Пересекатор
Инструмент работает с веб-картой. Наша веб-карта содержит полигоны, этих полигонов может быть очень много. И через них проложена линия. «Пересекатор» позволяет определить, через какие слои эта линия проходит.
Сначала нужно определить WKT линейного слоя. Чтобы это сделать, можно использовать модуль в настольной NextGIS QGIS, который называется GetWKT. Находим его через вкладку «Модули» и «Управление модулями» и устанавливаем. Затем выделяем линию, заходим в модуль и получаем WKT. Линейный слой должен быть в проекции 3857.
Копируем WKT и переходим на страницу «Пересекатора». Вставляем скопированный WKT в соответствующее поле и идём за URL и webmap_id.
URL вашей веб-ГИС можно узнать из адресной строки. Чтобы узнать ID веб-карты, жмём на саму веб-карту в списке ресурсов и смотрим в адресную строку: нам нужен только номер в конце ссылки.
Вставляем данные и запускаем.
На выходе получаем таблицу, где записаны слои, которые пересекает линия. Ошибок нет.
Удаление из целевого слоя
У нас есть слой с лесными массивами и слой с озером. Слой озером частично покрывает слой с массивами. Поэтому нужно обрезать слой с лесом так, чтобы он не пересекался с озером.
Оба слоя должны быть в одной проекции. Сохраняем их в SHP-формате и архивируем в ZIP. Переходим в инструмент и загружаем архивы в соответствующие поля. Если поля перепутать, то и результат получится обратным.
На выходе получаем архив с SHP-слоем леса, но обрезанным по контуру озера. Сравниваем его с тем лесом, который был на входе.
Генерализация слоя
Генерализация слоя – это его упрощение. Чаще всего есть смысл генерализовать мелкомасштабные карты, которые охватывают большие территории. Например, нет смысла на карте континента отображать все изгибы маленькой реки в маленькой стране. Возьмём SHP-слой – границу региона – и генерализуем её.
Архивируем исходный слой в ZIP, переходим в инструмент и загружаем архив в соответствующее поле.
В инструменте много полей, но не все из них обязательные – это опциональные параметры.
- import snap – это значение, при котором узлы геометрий начинают сливаться друг с другом. Поскольку наш слой сохранён в проекции 3857, то параметр этот измеряется в метрах. Если поле оставить пустым, то будет задано значение по умолчанию -1, оно означает отсутствие слияния узлов.
- iterations – своего рода степень упрощения. Она обозначает количество повторов процедуры упрощения. Значение по умолчанию 1, но мы попробуем задать 3.
В поле method нужно вписать один из пяти вариантов:
- douglas – начальная и конечная точка линии связываются прямой. Расстояние от соседних узлов до этой прямой сравнивается с заданным в параметре threshold порогом. Если расстояние между узлом и прямой превышает порог, то узел сохраняется. Для следующих узлов заново оценивается расстояние до обновлённой линии.
- reduction – просто удаляет из линии узлы, которые находятся друг к друг ближе заданного порога. Порог тоже задаётся в поле threshold.
- douglas_reduction – алгоритм douglas с дополнительным параметром reduction. Задаются значения в полях threshold и reduction.
- lang – отдельные участки линии упрощаются поочерёдно. Размер участков вписывается в поле look_ahead. В пределах участка первый и последний узел соединяются прямой линией. Для остальных узлов оценивается расстояние до прямой. Если это расстояние больше порога, узел сохраняется. Кроме look_ahead, заполняется параметр threshold.
- reumann – два узла соединяются прямой. От от третьего узла к этой прямой опускается перпендикуляр. Длина перпендикуляра сравнивается с заданным в поле threshold порогом. Если длина перпендикуляра больше порога, то третий узел сохраняется. Четвёртый узел оценивается точно так же, но уже по отношению к прямой между вторым и третьим узлом.
Есть также методы сглаживания и смещения. Об этом подробнее написано в статье NextGIS.
Впишем метод reumann и переходим к пороговому полю threshold. Вписываем порог 3000. Остальные поля оставляем пустыми, потому что выбранный метод не предполагает их обязательное заполнение. Запускаем.
Дожидаемся результата, открываем его в настольной ГИС и сравниваем с исходником.
Обновление слоя веб-ГИС из CSV
Инструмент позволяет подгрузить в веб-ГИС CSV-слой, который обновит точечный слой. Можно либо заменить все точки в слое, либо дополнить слой новыми точками. Для этого используются соответствующие команды. Мы будем дополнять точечный слой, который опубликован в нашей веб-ГИС.
Откроем сначала этот же слой в настольной ГИС, чтобы добавить новые точки и пересохранить слой в CSV. При создании CSV-слоя нужно соблюсти требования:
- слой должен быть в проекции WGS 84 (4326);
- в атрибутах должны быть указаны координаты в градусах;
- поля широты (Y) и долготы (X) в таблице атрибутов должны быть подписаны lat и lon соответственно.
Не забываем при сохранении слоя в CSV указать в поле «Слой» во вкладке «Дополнительные параметры» выражение GEOMETRY=AS_XY для расчёта координат.
Открываем CSV на ПК через Блокнот или Excel, вместо X и Y пишем lon и lat соответственно. Сохраняем и запускаем инструмент.
- URL веб-ГИС узнаём из адресной строки в основной группе ресурсов;
- вводим логин и пароль администратора;
- заходим через список ресурсов в точечный слой и из ссылки в адресной строке берём число, которое в самом конце ссылки. В нашем случае ссылка такая https://cybergeo82.nextgis.com/resource/245, поэтому вписываем в поле 245;
- ставим режим Add – добавление новых точек; если Replace, то объекты из CSV-слоя просто заменят объекты соответствующего слоя в веб-ГИС.
Обновление появится на веб-карте.
При загрузке самого первого слоя я допустил ошибку, которая дала о себе знать, когда я пытался привязать обновлённый CSV к нему. Ошибка заключалась в структуре слоя.
Обновлённый CSV-файл содержал координаты lat и lon всех точек – и старых и новых. При этом изначально загруженный в веб-ГИС точечный слой со старыми точками не имел ни полей lat и lon, ни самих координат. То есть новые точки пытались присоединиться по тем полям, которых не было в старом слое. Поэтому мне пришлось всё переделать :)
Площади пересечений внутри границ
Инструмент работает со слоями в веб-ГИС. У нас есть один полигон и его пересекают несколько других. С помощью этого инструмента можно рассчитать площади пересечений внутри границ основного полигона.
Площади пересечения будут рассчитываться для маленьких полигонов, поэтому этот слой содержит поля для общей площади (area) и для площади внутри большого полигона (area_in). Названия колонок в таблице атрибутов должны быть на латинице, все поля для значений площадей должны быть типа string (текст).
Заполняем поля и запускаем инструмент. После завершения открываем веб-карту со слоями и таблицу слоя маленьких полигонов. Проверяем результат.
Площадь рассчитывается в гектарах.
Объединение векторных слоёв
Простой инструмент с одним полем, в который нужно загрузить архив со слоями для объединения. У нас есть четыре региона – четыре слоя, которые нужно объединить в один.
Сохраняем слои в одной проекции и формате, архивируем в ZIP, загружаем в поле инструмента и запускаем.
В результате то, что раньше было отдельными слоями теперь стали объектами одного слоя, и названия их сохранились.
Читайте также: