Найдите тенденцию изменения и соответствующее значение P для каждого пикселя в последовательности растра.
Найдите тенденцию изменения и соответствующее значение P для каждого пикселя в последовательности растра.

После разговора о чтении и сохранении данных в формате Geotiff в этой статье речь пойдет о том, как использовать Python для обработки серии растровых данных (в этой статье в качестве примера приведены временные ряды).

Предположим, у нас есть ряд осадков каждого года в определенной области.,Десятилетия в общей сложности,хочу этого сейчасИзменение тренда годовых осадков в каждом пикселе и проверка значимости тренда (получение значения P),Как это сделать?

Идеи

Для растровых данных,Он включает в себяМетаинформация + данные。Находим тренд изменения годового количества осадков для каждого пикселя и соответствующийPценить,На самом деле просто обработка данных,Метаинформация практически не изменяется.

в процессе обработки,Мы хотим, чтобы каждый пиксель находился внутриизмерение временименяющиеся тенденции в,Аналогично изображению ниже:

Цитата с сайта ArcGIS

То есть для каждой из приведенных выше цифр мыВременной ряд бараПросто ищите тенденции。Понятно Идеи,Это очень просто,Перейдем непосредственно к коду.

Создание данных

Создание сказано здесь данных То есть объединить наши несколько растровых последовательностей во что-то похожее на приведенное выше.Куб пространства-времени (здесь относится только к сетке пространства-времени)

Ранее мы говорили о том, как читатьодиночная сетка,После прочтения это пустой ndarray,Затем просто выполните соответствующее сращивание матриц:

  1. Импортировать пакет
Язык кода:javascript
копировать
import rasterio
import scipy.stats  as ss 
import numpy as np
import glob
from rasterio.plot import show
  1. Прочтите метаданные первой картинки, чтобы облегчить запись результата в конце.
Язык кода:javascript
копировать
with rasterio.open(rs_files[0]) as src:
    show(src)
    profile = src.profile
    data = src.read()
  1. сформировать куб пространства-времени

Здесь также очень просто сформировать растровый куб. Просто используйте функцию конкатенации numpy, чтобы объединить его:

Язык кода:javascript
копировать
ds = [rasterio.open(f).read() for f in rs_files]
ds = np.concatenate(ds,axis=0)
ds.shape

>> (36, 133, 110)
Язык кода:javascript
копировать
show(ds[1,:,:])

Расчет тренда и значения p

Как упоминалось ранее, пока каждый Временной ряд Просто используйте бара для расчета тренда.,Так как же посчитать все Временной ряд бара одновременно?Великие боги приготовили для нас соответствующие инструменты.,Это функция apply_along_axis numpy.,Подробности смотрите по ссылке [2].

Проще говоря, эта функция можетПримените функцию, которую мы определили, вдоль определенного измерения.。Поэтому нам нужно только определить соответствующую функцию,вдольизмерение Применить:

  1. определить функцию
Язык кода:javascript
копировать
def rs_slope(y,method='linear'):
    """
    Compute the slope of a series of raster data along a given axis(always be time).
    """
    l = len(y)
    ys = range(l)
    try:
        if method == 'linear':
            slope, intercept, r_value, p_value, std_err = ss.linregress(ys,y)
    except:
        slope = np.nan
    return slope, r_value**2, p_value
  1. функция приложения
Язык кода:javascript
копировать
slope_rs,r2,pv = np.apply_along_axis(rs_slope, 0,arr=ds)
  1. Сохранить результаты
Язык кода:javascript
копировать
profile['nodata'] = 0
with rasterio.open('slope.tif','w',**profile) as dest:
    dest.write(slope_rs,1)
  1. Посмотреть результаты
Язык кода:javascript
копировать
with rasterio.open('./slope.tif') as src:
    show(src)

На этом этапе расчет линейного тренда для каждого пикселя завершен. Однако приведенный выше код сохраняет только значение тренда и не сохраняет квадрат R и значение p. Читатель может изменить его в соответствии с кодом.

небольшая добавка

Почему он не писался год? Потому что при расчете тренда,Если вас не волнует перехват,Так год 0-35 или 1980-2015?,Рассчитанное вами значение тренда (т. е. a в формуле ниже),х — год) одинаковы,Тогда нет необходимости тратить больше вычислительной мощности:

Y = ax + b

Подвести итог

  1. При обработке растровых последовательностей метаинформация, как правило, остается неизменной, поэтому метаинформацию определенных исходных данных можно использовать в качестве шаблона для облегчения сохранения обработанных результатов;
  2. Что касается значения растровых данных, это просто массив. Умело используя функции numpy, мы можем достичь многих необходимых нам функций;
  3. Если алгоритм можно упростить, упростите его настолько, насколько это возможно.

ссылка

【1】

https://pro.arcgis.com/zh-cn/pro-app/latest/tool-reference/big-data-analytics/create-space-time-cube.htm

【2】https://numpy.org/doc/stable/reference/generated/numpy.apply_along_axis.html

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose