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

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

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

Сообщение poorbaby » 25 июн 2014, 13:11

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
Сообщения: 9029
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 711
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 26 авг 2015, 05:51

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

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

хочется придумать что делать с названиями растров которые не влезают в ограничение DBF, варианты:
- сохранять отдельно перекодировочную таблицу с вектором имен и кодов
- вообще забить на чтение/сохранение в shape, читать/сохранять в CSV/VRT
пристегивайтесь, турбулентность прямо по курсу

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 740
Ваше звание: Вредитель полей

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

Сообщение ericsson » 26 авг 2015, 09:26

В гроб эти шейпы, CSV вполне бы хватило. Собственно, не зная о существовании этого скрипта я как-то такое писал под Windows и именно с CSV (cmd.exe в циклах for с ним только и умеет работать).

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Статьи: 4
Проекты: 1
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

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

Сообщение bolotoved » 26 авг 2015, 16:07

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

Семплировать растр по точкам иди координатам: v.what.rast или r.what (последний поддерживает семплирование сразу по множеству растров).

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9029
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 711
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 26 авг 2015, 19:46

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

GRASS хорош, но требует много подготовительных действий (одна загрузка огромных растров в область сожрет кучу времени), а хочется просто указать точки и растры и получить результат, что этот скрипт и делает.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9029
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 711
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 27 авг 2015, 06:16

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

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

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

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

names(data) = read.csv('points_shapefile_fields.csv')$NEWFIELD
И поправил код для многоканальных растров, раза в три побыстрее стало работать.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9029
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 711
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 03 дек 2015, 21:24

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

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

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 » 04 дек 2015, 08:20

ссылка на скрипт в статье выдает ошибку

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

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

Сообщение Александр Мурый » 04 дек 2015, 12:56

gornak писал(а):ссылка на скрипт в статье выдает ошибку
Исправил.
Редактор материалов, модератор форума

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

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

Сообщение gornak » 04 дек 2015, 16:29

архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб

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

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

Сообщение Александр Мурый » 04 дек 2015, 16:45

gornak писал(а):архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
Проверил — у меня всё нормально разархивируется разными архиваторами. 7z показывает, то архив целый.
Редактор материалов, модератор форума

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9029
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 711
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 04 дек 2015, 20:31

тоже проверил, все норм, внутри 1 файл - скрипт на питоне
пристегивайтесь, турбулентность прямо по курсу

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

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

Сообщение gornak » 05 дек 2015, 07:40

да прошу прощения!-давно 7z архиватор не обновлял

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

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

Сообщение gornak » 05 дек 2015, 08:12

чем может быть вызвана ошибка?
установлен python27 и gdal к нему, простейшие скрипты работают
Вложения
ошибка.png
ошибка.png (107.39 КБ) 3539 просмотров

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9029
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 711
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 05 дек 2015, 17:13

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

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

Ответить

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

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

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