Страница 3 из 4

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

Добавлено: 05 дек 2015, 21:01
gornak
Максим Дубинин писал(а):удалите в скрипте ", 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

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

Добавлено: 05 дек 2015, 21:36
Максим Дубинин
выше я там малость не то посоветовал)

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

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

Добавлено: 05 дек 2015, 22:08
gornak
по- видимому не добавляется поле к shp- файлу?

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

Добавлено: 05 дек 2015, 22:11
Максим Дубинин
18% отработал, прогресс

покажите как растры называются в A:\extract_values

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

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

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

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

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

Добавлено: 06 дек 2015, 01:54
Максим Дубинин
точки куда попадут, то и извлекут

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

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

Добавлено: 06 дек 2015, 12:03
gornak
тоже так подумал, растр обрезал
данные смысловой нагрузки не несут- просто для примера

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

Добавлено: 06 дек 2015, 15:37
Anton_Kh
для аналогичных целей использую плагин QGIS - Point Sampling Tool
позволяет получать значения растровых и векторных слоев по точечным профилям.
Простой графический интерфейс, выделением выбираем какие нам нужно добавит каналы из растров и поля из векторных слоев. Необходимо что б все слои были в одной СК.

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

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

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

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

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

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

Добавлено: 06 дек 2015, 19:35
gornak
все ок, только значения не те, которые "под точками"

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

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

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

Тем временем помучаю еще пересчет.

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

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

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

Добавлено: 07 дек 2015, 00:13
Ariki
Мне кажется, дело в следующем.
Строчку

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

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).

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

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

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

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