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

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

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

Сообщение gornak » 05 дек 2015, 21:01

Максим Дубинин писал(а):удалите в скрипте ", gdal.OF_VECTOR" в 395 строке по идее должно заработать
Unable to open shapefile extpoint.shp
Максим Дубинин писал(а):самый простой способ получить GDAL 2.0
а есть ли альтернативный вариант?(без установки qgis- интернет не позволяет)
gdal 1.11.1 ставил с http://www.gisinternals.com/ просто на питон
но сейчас нашел там версии только до 1.11.3
OSGeoW- тоже предлагает libs-gdal-python 1.11.3

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

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

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

выше я там малость не то посоветовал)

перезакачайте скрипт, теперь должно работать и с 1.x и с 2.x, я проверил, у меня работает
пристегивайтесь, турбулентность прямо по курсу

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

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

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

по- видимому не добавляется поле к shp- файлу?
Вложения
er.png
er.png (101.48 КБ) 9817 просмотров

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

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

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

18% отработал, прогресс

покажите как растры называются в A:\extract_values
пристегивайтесь, турбулентность прямо по курсу

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

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

Сообщение gornak » 05 дек 2015, 22:25

pr7kn1.tif
7-ой landsat-1-й канал (как был в поставке без изменений, только имя сократил)
8 бит unsigned integer

ск одна - utm36n
а точечные объекты обязательно должны быть строго в центре ячеек растра?

сами поля в dbf добавились тип Double, а значения нет

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

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

Сообщение Максим Дубинин » 06 дек 2015, 01:54

точки куда попадут, то и извлекут

гадать лень, пришло время поделиться растром и точками
пристегивайтесь, турбулентность прямо по курсу

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

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

Сообщение gornak » 06 дек 2015, 12:03

тоже так подумал, растр обрезал
данные смысловой нагрузки не несут- просто для примера
Вложения
extract_values.7z
(3.95 КБ) 389 скачиваний

Аватара пользователя
Anton_Kh
Участник
Сообщения: 61
Зарегистрирован: 13 мар 2012, 18:10
Репутация: 37
Откуда: Харьков
Контактная информация:

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

Сообщение Anton_Kh » 06 дек 2015, 15:37

для аналогичных целей использую плагин QGIS - Point Sampling Tool
позволяет получать значения растровых и векторных слоев по точечным профилям.
Простой графический интерфейс, выделением выбираем какие нам нужно добавит каналы из растров и поля из векторных слоев. Необходимо что б все слои были в одной СК.
Вложения
Screenshot-PointSamplingTool.png
Screenshot QGIS Plugin PointSamplingTool
Screenshot-PointSamplingTool.png (198.03 КБ) 9703 просмотра

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

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

Сообщение gornak » 06 дек 2015, 17:07

Anton_Kh писал(а):Простой графический интерфейс
а автоматизировать работу с данным плагином можно, или каждый раз необходимо вручную задавать параметры?
для скрипта можно написать программу и запускать "автономно"

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

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

Сообщение Максим Дубинин » 06 дек 2015, 19:14

Anton_Kh писал(а):для аналогичных целей использую плагин QGIS - Point Sampling Tool
несопоставим с обсуждаемым здесь инструментом ни функционально, ни по идее. Не надо плиз здесь оффтопить, посмотрите что в первом посте обсуждается. Это и обсуждаем.

gornak, ошибку поправил, пробуйте, у меня все ок
пристегивайтесь, турбулентность прямо по курсу

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

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

Сообщение gornak » 06 дек 2015, 19:35

все ок, только значения не те, которые "под точками"
Вложения
er2.png
er2.png (73.15 КБ) 9628 просмотров

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

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

Сообщение Максим Дубинин » 06 дек 2015, 22:07

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

Пока попробуйте точки создавать в WGS84 и использовать ключ -r (reproject) при экстракции, он будет автоматически пересчитывать точки в СК растра. Я проверил, вроде значения верные получаются.

Тем временем помучаю еще пересчет.
пристегивайтесь, турбулентность прямо по курсу

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

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

Сообщение gornak » 06 дек 2015, 22:55

перепроецировал вектор в географическую ск wgs 84, добавил ключ -r, значения получились те же,что и при utm
в принципе вам же надо отладить скрипт?а то может зря надоедаю)

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

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

Сообщение Ariki » 07 дек 2015, 00:13

Мне кажется, дело в следующем.
Строчку

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

return int( pX + 0.5 ), int( pY + 0.5 )

в функции mapToPixel нужно заменить на

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

return int(math.floor(pX)), int(math.floor(pY))

не забыв импортировать модуль math. Дело в том, что, в то время как в world-файле координаты левого верхнего пикселя относятся к его центру, в GDAL используется другое соглашение: в параметрах, возвращаемых методом GetGeoTransform, фигурируют координаты левого верхнего угла левого верхнего пикселя. Можете проверить: значения разные.
Цитата отсюда:
Note that the pixel/line coordinates in the above are from (0.0,0.0) at the top left corner of the top left pixel to (width_in_pixels,height_in_pixels) at the bottom right corner of the bottom right pixel. The pixel/line location of the center of the top left pixel would therefore be (0.5,0.5).

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

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

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

gornak писал(а):а то может зря надоедаю)
Вы не только не надоедаете, вы действуете максимально конструктивным способом и я очень вам признателен. Все бы так участвовали.

Ariki, супер, как приятно вернуться к проблеме, а тут уже все решено)

Выпустил новую версию скрипта, все комбинации выше проходит и результаты соответствуют.
пристегивайтесь, турбулентность прямо по курсу

Ответить

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

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

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