Гайд: Зональная статистика в Python с Earth Engine.
Внутри:
— Шаблон для одновременного расчёта нескольких растров;
— Унифицированный редуктор (среднее/медиана/Стандартное отклонение/дисперсия/мин/макс за один проход — экономит квоты и время);
— Конвертация в GeoDataFrame (geopandas)
— Экспорт в GPKG/CSV + загрузка на Google Диск;
— Наглядные карты (рельеф, NDVI, температура почвы).
— Кодовые ячейки — как в блокноте, 1:1.
В конце статьи есть ссылка на готовый блокнот Colab.
https://medium.com/@anton.biatov/zonal-statistics-in-python-using-earth-engine-and-google-colab-7101d1d42ffd
#gee #colab #python
Внутри:
— Шаблон для одновременного расчёта нескольких растров;
— Унифицированный редуктор (среднее/медиана/Стандартное отклонение/дисперсия/мин/макс за один проход — экономит квоты и время);
— Конвертация в GeoDataFrame (geopandas)
— Экспорт в GPKG/CSV + загрузка на Google Диск;
— Наглядные карты (рельеф, NDVI, температура почвы).
— Кодовые ячейки — как в блокноте, 1:1.
В конце статьи есть ссылка на готовый блокнот Colab.
https://medium.com/@anton.biatov/zonal-statistics-in-python-using-earth-engine-and-google-colab-7101d1d42ffd
#gee #colab #python
Medium
Zonal statistics in python using Earth Engine and Google Colab
In this article, I’ll guide you through calculating zonal statistics for multiple parameters — like mean, median, standard deviation…
🔥1
Супер быстрая обрезка видео (ffmpeg + Python)
Сегодня обрезал видеозаписи некоторых мастерклассов с конференции Природоохранных ГИС Украины, для загрузки их на Ютуб канал. И сделал для себя величайшее открытие!
Раньше для обрезки видео использовал такие програмы как Openshot Video Editor или DaVinci Resolve. И эти программы дают мощный функционал для монтажа, но если нужно просто вырезать фрагмент, то они излишни. И конвертация больших видео занимает очень много времени, иногда часы.
Если нужно просто обрезать с видео по заданным секундам, то это можно сделать в 1000 раз быстрее при помощи программы ffmpeg, и автоматизировать обработку множества видео при помощи Python.
Ниже приведу код при помощи которого можно пакетно нарезать множество видео.
Шаги по подготовке:
0. Устанавливаете программу
1. Выписывате с какой по какую секунду нужно вырезать какое видео и куда сохранить фрагмент.
2. Записываете выписанную информацию в словарь
3. Запускаете скрипт. Он циклом проходит по всем словарям в списке, и вырезает нужные фрагменты.
Вырезать 2 видео разрешением 2560 x 1600 по полтора часа каждое заняло 4 секунды, всего ЧЕТЫРЕ секунды !!!
Фактически это просто обертка при помощи Python и subprocess вокруг команды:
Пояснения:
*
*
*
*
Кстати, первое из вырезанных видео про Обнаружение деревьев на космоснимках при помощи нейронных сетей (U-net) уже на ютуб канале: https://youtu.be/v09eLAgUFgs
Подписывайтесь на ютуб канал. В этом году были мощнейшие мастерклассы!
Постепенно всех их опубликуем.
#python #ffmpeg #video #video_editing
Сегодня обрезал видеозаписи некоторых мастерклассов с конференции Природоохранных ГИС Украины, для загрузки их на Ютуб канал. И сделал для себя величайшее открытие!
Раньше для обрезки видео использовал такие програмы как Openshot Video Editor или DaVinci Resolve. И эти программы дают мощный функционал для монтажа, но если нужно просто вырезать фрагмент, то они излишни. И конвертация больших видео занимает очень много времени, иногда часы.
Если нужно просто обрезать с видео по заданным секундам, то это можно сделать в 1000 раз быстрее при помощи программы ffmpeg, и автоматизировать обработку множества видео при помощи Python.
Ниже приведу код при помощи которого можно пакетно нарезать множество видео.
Шаги по подготовке:
0. Устанавливаете программу
ffmpeg1. Выписывате с какой по какую секунду нужно вырезать какое видео и куда сохранить фрагмент.
2. Записываете выписанную информацию в словарь
list_clip_settings3. Запускаете скрипт. Он циклом проходит по всем словарям в списке, и вырезает нужные фрагменты.
Вырезать 2 видео разрешением 2560 x 1600 по полтора часа каждое заняло 4 секунды, всего ЧЕТЫРЕ секунды !!!
import subprocess
from time import perf_counter
def fmt(seconds: float) -> str:
"""Форматирование секунд в HH:MM:SS."""
total = int(round(seconds))
h, rem = divmod(total, 3600)
m, s = divmod(rem, 60)
return f"{h:02d}:{m:02d}:{s:02d}"
list_clip_settings = [
{
"input": "video_source/20250723_Polischuk_Svidzinska.mp4",
"output": "video_masterklasses/20250723_Polishchuk_Olexandr-Tree_detection_for_help_U-net.mp4",
"start": "00:00:51",
"end": "01:31:17"
},
{
"input": "video_source/20250723_Polischuk_Svidzinska.mp4",
"output": "video_masterklasses/20250723_Svidzinska_Daria-analiz_prostorovo-chasovih_trendiv.mp4",
"start": "01:31:32",
"end": "02:55:22"
}
]
total_start = perf_counter()
for i in list_clip_settings:
input = i.get("input")
output = i.get("output")
start = i.get("start")
end = i.get("end")
cmd = [
"ffmpeg",
"-ss", start,
"-to", end,
"-i", str(input),
"-c", "copy",
"-map", "0",
"-movflags", "+faststart",
str(output)
]
t0 = perf_counter()
subprocess.run(cmd, check=True)
elapsed = perf_counter() - t0
print(f"Файл {str(output)} готов. Время на клип: {fmt(elapsed)}")
total_elapsed = perf_counter() - total_start
print("Готово!")
print(f"Общее затраченное время: {fmt(total_elapsed)}\n")
Фактически это просто обертка при помощи Python и subprocess вокруг команды:
ffmpeg -ss 01:31:32 -to 02:55:22 -i "path_to/input_file.mp4" -c copy -map 0 -movflags +faststart "path_to/output_file.mp4"
Пояснения:
*
-c copy — без перекодирования (качество 1:1, очень быстро).*
-ss и -to — время начала/конца от исходного видео.*
-map 0 — берём все дорожки из исходника (видео+аудио).*
-movflags +faststart — удобнее для проигрывания/загрузки (метаданные впереди).Кстати, первое из вырезанных видео про Обнаружение деревьев на космоснимках при помощи нейронных сетей (U-net) уже на ютуб канале: https://youtu.be/v09eLAgUFgs
Подписывайтесь на ютуб канал. В этом году были мощнейшие мастерклассы!
Постепенно всех их опубликуем.
#python #ffmpeg #video #video_editing
YouTube
Детекція дерев за допомогою U-net (Поліщук Олександр )
Як знайти дерева на супутникових знімках за допомогою нейромереж? У цьому майстер-класі Поліщук Олександр показує повний практичний пайплайн детекції дерев із використанням U-Net для семантичної сегментації — від підготовки даних до тренування моделі й перегляду…
🔥3❤1
Как скачать ArcGIS Feature layer на Python и экспортировать в GeoPackage.
Столкнулся с такой задачей и пободавшись с этой проблемой день нашел элегантное решение.
Предварительные шаги на скриншоте.
Важно скопировать ссылку на шаге "3" с правильной цифрой в конце.
#python #download #data #arcgis #agol
Столкнулся с такой задачей и пободавшись с этой проблемой день нашел элегантное решение.
Предварительные шаги на скриншоте.
Важно скопировать ссылку на шаге "3" с правильной цифрой в конце.
import pyogrio
OUT_GPKG = "arcgis_feature_layer.gpkg"
LAYER = "arcgis_feature_layer"
URL_service = "https://services.arcgis.com/mMUesHYPkXjaFGfS/ArcGIS/rest/services/Manitoba_Provincial_Forests___Version_6/FeatureServer/1"
url = (
f"{URL_service}"
"/query"
"?where=1%3D1"
"&outFields=*"
"&returnGeometry=true"
"&outSR=4326"
"&f=pjson" # ВАЖНО: ESRI JSON, не geojson
)
# ВАЖНО: префикс ESRIJSON: заставляет GDAL открыть именно этим драйвером
gdf = pyogrio.read_dataframe("ESRIJSON:" + url)
# Экспорт
gdf.to_file(
OUT_GPKG,
driver="GPKG",
layer=LAYER,
index=True,
mode="w",
engine="pyogrio"
)
#python #download #data #arcgis #agol
🔥4
Автоматическая корегистрация растров на Python
Если нужно совместить несколько немного разъехавшихся растров, на пример ортофотопланы за разные даты или ортофотоплан и космоснимок, без ручной привязки по точкам помогает AROSICS
больше примеров и описания параметров в коментариях к оригинальному посту>>
#python #raster #changedetection
Если нужно совместить несколько немного разъехавшихся растров, на пример ортофотопланы за разные даты или ортофотоплан и космоснимок, без ручной привязки по точкам помогает AROSICS
from arosics import COREG
INPUT_RASTER_1 = "orthophoto_025m.tif"
INPUT_RASTER_2 = "demo_sat_google_1m.tif"
OUTPUT_RASTER_1 = "sat_google_025m.tif"
# 1. Очистка лишних метаданных статистики
!gdal_edit.py -unsetstats {INPUT_RASTER_1}
!gdal_edit.py -unsetstats {INPUT_RASTER_2}
# 2. Инициализация AROSICS с параметрами ресемплинга
cr = COREG(INPUT_RASTER_1, INPUT_RASTER_2,
ws=(512, 512),
path_out=OUTPUT_RASTER_1,
max_shift=25,
resamp_alg_deshift='cubic',
match_gsd=True,
align_grids=True
)
# 3. Расчет сдвига
cr.calculate_spatial_shifts()
# 4. Применение сдвига и ресемплинга
cr.correct_shifts()
больше примеров и описания параметров в коментариях к оригинальному посту>>
#python #raster #changedetection
🔥6
Как установить Qt WebEngine на MacOS для работы плагина Qgis2threejs?
Нужно поставить/обновить PyQt5 + PyQtWebEngine внутри “встроенного” Python QGIS. По шагам:
0. Закрыть QGIS
1. нужно определить где именно установлен QGIS.
в системном терминале:
смотреть в списке
2. Удалить установленную версию библиотеки
3. установить новый
4. Зайти в QGIS и запустить модуль Qgis2threejs
#qgis #install #3d #macos #python
Нужно поставить/обновить PyQt5 + PyQtWebEngine внутри “встроенного” Python QGIS. По шагам:
0. Закрыть QGIS
1. нужно определить где именно установлен QGIS.
в системном терминале:
ls /Applications/
смотреть в списке
QGIS.app или QGIS-LTR.app . У меня LTR версия.2. Удалить установленную версию библиотеки
PyQt5:/Applications/QGIS-LTR.app/Contents/MacOS/bin/pip3 uninstall PyQt5
3. установить новый
PyQt5 и PyQtWebEngine:/Applications/QGIS-LTR.app/Contents/MacOS/bin/pip3 install PyQt5 PyQtWebEngine
4. Зайти в QGIS и запустить модуль Qgis2threejs
#qgis #install #3d #macos #python
🔥5
Если вы работаете с облаками точек LiDAR или фотограмметрии, PDAL — один из самых полезных инструментов.
Я опубликовал новую статью на Medium с практическим инструкциями по созданию конвееров PDAL и примерами, которые можно адаптировать к реальным задачам.
В статье:
- конвейер моделей PDAL
- как запустить конвейеры PDAL из Python
- как возвращать результаты в виде NumPy массива
- предпросмотр NumPy массива облака точек в виде таблицы при помощи
- как обрезать и объединять точки облаков
- как создать цифровую модель рельефа GeoTIFF из файла LAZ
Статья:
https://medium.com/@anton.biatov/pdal-in-python-a-practical-guide-to-point-cloud-pipelines-1f7e2bc3e2ea
Также я буду рад узнать какие инструменты работы с Point Clouds вы используете и почему имено их ?
Если используете ))
#pdal #pointcloud #python
Я опубликовал новую статью на Medium с практическим инструкциями по созданию конвееров PDAL и примерами, которые можно адаптировать к реальным задачам.
В статье:
- конвейер моделей PDAL
- как запустить конвейеры PDAL из Python
- как возвращать результаты в виде NumPy массива
- предпросмотр NumPy массива облака точек в виде таблицы при помощи
pandas и в виде изображения при помощи matplotlib- как обрезать и объединять точки облаков
- как создать цифровую модель рельефа GeoTIFF из файла LAZ
Статья:
https://medium.com/@anton.biatov/pdal-in-python-a-practical-guide-to-point-cloud-pipelines-1f7e2bc3e2ea
Также я буду рад узнать какие инструменты работы с Point Clouds вы используете и почему имено их ?
Если используете ))
#pdal #pointcloud #python
👍4🔥4