Получение значений растра по точечным профилям
-
- Новоприбывший
- Сообщения: 1
- Зарегистрирован: 25 июн 2014, 13:04
- Репутация: 0
Re: Получение значений растра по точечным профилям
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
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
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Получение значений растра по точечным профилям
Поскольку спустя хз знает сколько лет, ни одна ГИС быстро и качественно так и не научилась экстрагировать данные из растров по точечным профилям, то расширил и углубил скрипт.
Теперь скрипт:
- умеет фильтровать растры в указанной папке по расширению
- умеет альтернативно использовать gdalallocinfo (полезно когда огромные растры не помещаются в память)
хочется придумать что делать с названиями растров которые не влезают в ограничение DBF, варианты:
- сохранять отдельно перекодировочную таблицу с вектором имен и кодов
- вообще забить на чтение/сохранение в shape, читать/сохранять в CSV/VRT
Теперь скрипт:
- умеет фильтровать растры в указанной папке по расширению
- умеет альтернативно использовать gdalallocinfo (полезно когда огромные растры не помещаются в память)
хочется придумать что делать с названиями растров которые не влезают в ограничение DBF, варианты:
- сохранять отдельно перекодировочную таблицу с вектором имен и кодов
- вообще забить на чтение/сохранение в shape, читать/сохранять в CSV/VRT
пристегивайтесь, турбулентность прямо по курсу
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Получение значений растра по точечным профилям
В гроб эти шейпы, CSV вполне бы хватило. Собственно, не зная о существовании этого скрипта я как-то такое писал под Windows и именно с CSV (cmd.exe в циклах for с ним только и умеет работать).
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: Получение значений растра по точечным профилям
А как же GRASS? Он всегда это умел. Конечно растр придется импортировать в GRASS, а вот вывод можно организовать по всякому и в шейп и в CSV.Максим Дубинин писал(а):ни одна ГИС быстро и качественно так и не научилась экстрагировать данные из растров
Семплировать растр по точкам иди координатам: v.what.rast или r.what (последний поддерживает семплирование сразу по множеству растров).
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Получение значений растра по точечным профилям
у CSV есть ряд существенных недостатков, но по хорошему нужно бы дописать блок работы с ним в скрипт тоже
GRASS хорош, но требует много подготовительных действий (одна загрузка огромных растров в область сожрет кучу времени), а хочется просто указать точки и растры и получить результат, что этот скрипт и делает.
GRASS хорош, но требует много подготовительных действий (одна загрузка огромных растров в область сожрет кучу времени), а хочется просто указать точки и растры и получить результат, что этот скрипт и делает.
пристегивайтесь, турбулентность прямо по курсу
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Получение значений растра по точечным профилям
Добавил ключ -f для экспорта названий полей в виде:
Теперь в принципе легко результат втащить в R и изящно восстановить names в оригинальном виде, ну или где угодно еще это сделать:
И поправил код для многоканальных растров, раза в три побыстрее стало работать.
Код: Выделить всё
'RASTER;NEWFIELD;BAND'
Код: Выделить всё
names(data) = read.csv('points_shapefile_fields.csv')$NEWFIELD
пристегивайтесь, турбулентность прямо по курсу
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: 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\
пристегивайтесь, турбулентность прямо по курсу
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Получение значений растра по точечным профилям
ссылка на скрипт в статье выдает ошибку
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Получение значений растра по точечным профилям
Исправил.gornak писал(а):ссылка на скрипт в статье выдает ошибку
Редактор материалов, модератор форума
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Получение значений растра по точечным профилям
архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Получение значений растра по точечным профилям
Проверил — у меня всё нормально разархивируется разными архиваторами. 7z показывает, то архив целый.gornak писал(а):архиватор 7z пишет- недопустимый метод сжатия , да и объем подозрительный 5 Кб , нет тестовых вложений(которые по -видимому подразумеваются), в итоге - распаковывается в 0 Кб
Редактор материалов, модератор форума
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Получение значений растра по точечным профилям
тоже проверил, все норм, внутри 1 файл - скрипт на питоне
пристегивайтесь, турбулентность прямо по курсу
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Получение значений растра по точечным профилям
да прошу прощения!-давно 7z архиватор не обновлял
-
- Активный участник
- Сообщения: 146
- Зарегистрирован: 30 авг 2015, 16:38
- Репутация: 25
- Контактная информация:
Re: Получение значений растра по точечным профилям
чем может быть вызвана ошибка?
установлен python27 и gdal к нему, простейшие скрипты работают
установлен python27 и gdal к нему, простейшие скрипты работают
- Вложения
-
- ошибка.png (107.39 КБ) 9490 просмотров
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Получение значений растра по точечным профилям
у вас GDAL 1.X, а я писал под двойку
удалите в скрипте ", gdal.OF_VECTOR" в 395 строке по идее должно заработать
самый простой способ получить GDAL 2.0 - поставить NGQ и запускаться из тамошнего шелла.
удалите в скрипте ", gdal.OF_VECTOR" в 395 строке по идее должно заработать
самый простой способ получить GDAL 2.0 - поставить NGQ и запускаться из тамошнего шелла.
пристегивайтесь, турбулентность прямо по курсу
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость