Страница 2 из 4
Re: Получение значений растра по точечным профилям
Добавлено: 25 июн 2014, 13:11
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
Re: Получение значений растра по точечным профилям
Добавлено: 26 авг 2015, 05:51
Максим Дубинин
Поскольку спустя хз знает сколько лет, ни одна ГИС быстро и качественно так и не научилась экстрагировать данные из растров по точечным профилям, то расширил и углубил скрипт.
Теперь скрипт:
- умеет фильтровать растры в указанной папке по расширению
- умеет альтернативно использовать gdalallocinfo (полезно когда огромные растры не помещаются в память)
хочется придумать что делать с названиями растров которые не влезают в ограничение DBF, варианты:
- сохранять отдельно перекодировочную таблицу с вектором имен и кодов
- вообще забить на чтение/сохранение в shape, читать/сохранять в CSV/VRT
Re: Получение значений растра по точечным профилям
Добавлено: 26 авг 2015, 09:26
ericsson
В гроб эти шейпы, CSV вполне бы хватило. Собственно, не зная о существовании этого скрипта я как-то такое писал под Windows и именно с CSV (cmd.exe в циклах for с ним только и умеет работать).
Re: Получение значений растра по точечным профилям
Добавлено: 26 авг 2015, 16:07
bolotoved
Максим Дубинин писал(а):ни одна ГИС быстро и качественно так и не научилась экстрагировать данные из растров
А как же GRASS? Он всегда это умел. Конечно растр придется импортировать в GRASS, а вот вывод можно организовать по всякому и в шейп и в CSV.
Семплировать растр по точкам иди координатам: v.what.rast или r.what (последний поддерживает семплирование сразу по множеству растров).
Re: Получение значений растра по точечным профилям
Добавлено: 26 авг 2015, 19:46
Максим Дубинин
у CSV есть ряд существенных недостатков, но по хорошему нужно бы дописать блок работы с ним в скрипт тоже
GRASS хорош, но требует много подготовительных действий (одна загрузка огромных растров в область сожрет кучу времени), а хочется просто указать точки и растры и получить результат, что этот скрипт и делает.
Re: Получение значений растра по точечным профилям
Добавлено: 27 авг 2015, 06:16
Максим Дубинин
Добавил ключ -f для экспорта названий полей в виде:
Теперь в принципе легко результат втащить в R и изящно восстановить names в оригинальном виде, ну или где угодно еще это сделать:
Код: Выделить всё
names(data) = read.csv('points_shapefile_fields.csv')$NEWFIELD
И поправил код для многоканальных растров, раза в три побыстрее стало работать.
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\
Re: Получение значений растра по точечным профилям
Добавлено: 04 дек 2015, 08:20
gornak
ссылка на скрипт в статье выдает ошибку
Re: Получение значений растра по точечным профилям
Добавлено: 04 дек 2015, 12:56
Александр Мурый
gornak писал(а):ссылка на скрипт в статье выдает ошибку
Исправил.
Re: Получение значений растра по точечным профилям
Добавлено: 04 дек 2015, 16:29
gornak
архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
Re: Получение значений растра по точечным профилям
Добавлено: 04 дек 2015, 16:45
Александр Мурый
gornak писал(а):архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
Проверил — у меня всё нормально разархивируется разными архиваторами. 7z показывает, то архив целый.
Re: Получение значений растра по точечным профилям
Добавлено: 04 дек 2015, 20:31
Максим Дубинин
тоже проверил, все норм, внутри 1 файл - скрипт на питоне
Re: Получение значений растра по точечным профилям
Добавлено: 05 дек 2015, 07:40
gornak
да прошу прощения!-давно 7z архиватор не обновлял
Re: Получение значений растра по точечным профилям
Добавлено: 05 дек 2015, 08:12
gornak
чем может быть вызвана ошибка?
установлен python27 и gdal к нему, простейшие скрипты работают
Re: Получение значений растра по точечным профилям
Добавлено: 05 дек 2015, 17:13
Максим Дубинин
у вас GDAL 1.X, а я писал под двойку
удалите в скрипте ", gdal.OF_VECTOR" в 395 строке по идее должно заработать
самый простой способ получить GDAL 2.0 - поставить
NGQ и запускаться из тамошнего шелла.