Получение значений растра по точечным профилям

Обсуждение материалов сайта: вопросы, замечания, предложения
poorbaby
Новоприбывший
Сообщения: 1
Зарегистрирован: 25 июн 2014, 13:04
Репутация: 0

Re: Получение значений растра по точечным профилям

Сообщение poorbaby »

Hi all,

When I used Extract raster values at vector points location with Python/GDAL, I get error:

Изображение

And when I opened point layer, new field created is zero

Изображение


Can you help me?

Thanks
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин »

Поскольку спустя хз знает сколько лет, ни одна ГИС быстро и качественно так и не научилась экстрагировать данные из растров по точечным профилям, то расширил и углубил скрипт.

Теперь скрипт:
- умеет фильтровать растры в указанной папке по расширению
- умеет альтернативно использовать gdalallocinfo (полезно когда огромные растры не помещаются в память)

хочется придумать что делать с названиями растров которые не влезают в ограничение DBF, варианты:
- сохранять отдельно перекодировочную таблицу с вектором имен и кодов
- вообще забить на чтение/сохранение в shape, читать/сохранять в CSV/VRT
пристегивайтесь, турбулентность прямо по курсу
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Получение значений растра по точечным профилям

Сообщение ericsson »

В гроб эти шейпы, CSV вполне бы хватило. Собственно, не зная о существовании этого скрипта я как-то такое писал под Windows и именно с CSV (cmd.exe в циклах for с ним только и умеет работать).
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение bolotoved »

Максим Дубинин писал(а):ни одна ГИС быстро и качественно так и не научилась экстрагировать данные из растров
А как же GRASS? Он всегда это умел. Конечно растр придется импортировать в GRASS, а вот вывод можно организовать по всякому и в шейп и в CSV.

Семплировать растр по точкам иди координатам: v.what.rast или r.what (последний поддерживает семплирование сразу по множеству растров).
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин »

у CSV есть ряд существенных недостатков, но по хорошему нужно бы дописать блок работы с ним в скрипт тоже

GRASS хорош, но требует много подготовительных действий (одна загрузка огромных растров в область сожрет кучу времени), а хочется просто указать точки и растры и получить результат, что этот скрипт и делает.
пристегивайтесь, турбулентность прямо по курсу
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин »

Добавил ключ -f для экспорта названий полей в виде:

Код: Выделить всё

'RASTER;NEWFIELD;BAND'
Теперь в принципе легко результат втащить в R и изящно восстановить names в оригинальном виде, ну или где угодно еще это сделать:

Код: Выделить всё

names(data) = read.csv('points_shapefile_fields.csv')$NEWFIELD
И поправил код для многоканальных растров, раза в три побыстрее стало работать.
пристегивайтесь, турбулентность прямо по курсу
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин »

Теперь можно собирать данные со списка растров

Код: Выделить всё

extract_values.py -g points.shp -rl D:\data1\input1.tif,D:\data2\input2.tif
и со списка папок растров

Код: Выделить всё

extract_values.py -g points.shp -d D:\data1\,D:\data2\
пристегивайтесь, турбулентность прямо по курсу
gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak »

ссылка на скрипт в статье выдает ошибку
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Получение значений растра по точечным профилям

Сообщение Александр Мурый »

gornak писал(а):ссылка на скрипт в статье выдает ошибку
Исправил.
Редактор материалов, модератор форума
gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak »

архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Получение значений растра по точечным профилям

Сообщение Александр Мурый »

gornak писал(а):архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
Проверил — у меня всё нормально разархивируется разными архиваторами. 7z показывает, то архив целый.
Редактор материалов, модератор форума
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин »

тоже проверил, все норм, внутри 1 файл - скрипт на питоне
пристегивайтесь, турбулентность прямо по курсу
gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak »

да прошу прощения!-давно 7z архиватор не обновлял
gornak
Активный участник
Сообщения: 146
Зарегистрирован: 30 авг 2015, 16:38
Репутация: 25
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение gornak »

чем может быть вызвана ошибка?
установлен python27 и gdal к нему, простейшие скрипты работают
Вложения
ошибка.png
ошибка.png (107.39 КБ) 11147 просмотров
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Получение значений растра по точечным профилям

Сообщение Максим Дубинин »

у вас GDAL 1.X, а я писал под двойку
удалите в скрипте ", gdal.OF_VECTOR" в 395 строке по идее должно заработать

самый простой способ получить GDAL 2.0 - поставить NGQ и запускаться из тамошнего шелла.
пристегивайтесь, турбулентность прямо по курсу
Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость