Обзор готовых скриптов Python для работы с геоданными
Python и типовые скрипты
Привет всем! Я Татьяна, работаю ГИС-инженером в ИнноГеоТехе, хочу поделиться одним инструментом, который помогает оптимизировать процессы в ГИС-проектах — и это Python.
В Python есть возможности, которые в несколько раз упрощают работу картографа, например, можно автоматизировать объемные рутинные задачи. Чаще всего эти задачи связаны с обработкой больших растровых и векторных файлов или проведением анализа пространственных данных.
В ГИС-проектах мы часто используем Python, рутинные задачи решаются гораздо быстрее — с помощью скриптов мы проводим постобработку космических снимков.
Перейдем к примерам общих скриптов, картографы могут использовать их для оптимизации своей работы.
1 скрипт — обработка и анализ геоданных, при помощи функции head() мы можем посмотреть первые несколько строк данных.
2 скрипт — преобразование систем координат, при помощи функции to_crs() мы можем перевести данные из исходной системы координат in_proj в целевую систему координат out_proj.
3 скрипт — при помощи данной функции Python мы можем визуализировать данные на карте — folium.Map — создаем карту, folium.Geojson — добавляем данные на карту, save — сохраняем карту.
Что нужно знать ГИС-специалисту, чтобы писать скрипты
База Python, которая понадобится для автоматизации ГИС-задач:
— понимание концепций Python, таких как переменные, типы данных, циклы, условия;
— умение работать с файлами и данными в Python, включая чтение и запись геоданных в различных форматах например, shapefile, GeoJSON;
— навыки работы с библиотеками таких как GDAL, Fiona, Shapely, GeoPandas, Pyproj.
Отдельно остановимся на технических характеристиках, которые также важно учитывать при работе со скриптами. Из-за разных версий библиотек могут возникнуть ошибки и неверные данные на выходе.
Несколько рекомендаций по используемым версиям библиотек Python, которые помогут ГИС-специалистам написать скрипт и избежать ошибок.
1. Используйте Python 3, многие библиотеки уже перешли на эту версию и большинство новых проектов также используют Python 3.
2. Библиотека GDAL — рекомендуется использовать GDAL версии 2.x или выше, так как она поддерживает множество форматов данных и функций.
3. Последние версии понадобятся для библиотек: Shapely (для выполнения геометрических операций), GeoPandas, Rasterio (библиотека для работы с растровыми данными).
Готовый Скрипт — выгрузка растровых слоев из QGIS
Переходим к готовым скриптам — для автоматизации выгрузки растровых слоев лучше проще всего использовать QGIS.
Преимущество — единое рабочее пространство, в котором ГИС-специалисты смогут быстрее проводить пакетную обработку растровых и векторных данных с сохранением в целевые директории.
Для выполнения небольших скриптов в QGIS применяем встроенную консоль Python. Консоль открывается как немодальное окно. Используем специальный интерфейс, можно обращаться к карте, меню, панелям инструментов и другим модулям QGIS.
В качестве исходных данных у нас был заранее открытый проект QGIS с набором растровых слоев. С чего начать ?
— Создаем папку, название папки = названию растрового слоя;
— Создаем новый растровый слой в другой проекции;
— Выполняем сжатие lzw;
— Задаем «Тип данных» — 8 бит, задаем режим сохранения «Изображение»;
— Сохраняем растры в папки, соответствующие названиям растров. Для взаимодействия с QGIS предназначена переменная qgis.utils.iface, которая является экземпляром класса QgisInterface.
На основе данного интерфейса, создаем команды:
Готовый скрипт для работы с выгрузкой растровых файлов в QGIS
Обрезка растров с помощью библиотеки Python — Rasterio
Еще один вариант готового скрипта — обрезка растровых файлов с помощью библиотек Python — Rasterio и Geopandas.
Используя библиотеку Geopandas, обрабатываем векторный слой AOI, фильтруем геометрии по типам, оставив только полигональные объекты.
Далее, просмотрев все полигональные объекты, режем исходный растр на полигоны командой:
out_image, out_transform = rasterio.mask.mask(src, shapes, crop=True)
и сохраняем в соответствии со значением из атрибутивной таблицы объекта.
Разделили скрипт на этапы:
Шаг 1. Импорт библиотек
Шаг 2. Указываем путь до исходных файлов
Шаг 3. Проверка наличия пути с векторным файлом
Шаг 4. Проверка наличия пути с растровым файлом
Шаг 5. Читаем векторный файл
Шаг 6. Производим фильтрацию по типам геометрии
Шаг 7. Фильтрация векторного слоя по атрибуту «title» для исключения пустых ячеек
Шаг 8. Проверка наличия столбца «title» в векторном слое
Шаг 9.Читаем растровый слой
Готовый скрипт по обрезке растровых файлов с помощью библиотек Python выглядит так:
Вывод
Теперь вы можете использовать готовые скрипты в собственных ГИС-проектах:
— Автоматизировать анализ пространственных данных, изменения координат и создания карт, внедряя в работу стандартные скрипты;
— Использовать встроенные библиотеки в QGIS и на основе пакетного метода обрабатывать растровые и векторные данные с сохранением в целевые директории;
— С помощью библиотек Python — Rasterio и Geopandas сможете автоматически «нарезать» растровые файлы.