Страница 1 из 2

Извлечение координат точек из растра

Добавлено: 18 апр 2016, 10:03
ubugunov
Задача следующая: есть растр - SRTM. Мне нужно сделать из него новый растр, где значения для пикселов будут заменены на расчетные данные. В качестве расчетных данных будут использованы значения высоты и географической широты. Я пытался использовать калькулятор растра. Как включить в расчет высотные данные понятно, но как получить координаты, не знаю. Расчеты делаю для изучения высотного потенциала засоления почв в горных условиях. Гипотеза - засоление в зависимости от широты имеет свои высотные лимиты распространения. Выборку я произвел, формулу расчета вывел, но не могу это дело положить на карту. На форуме подобных вещей не нашел. Прошу помощи.

Re: Извлечение координат точек из растра

Добавлено: 21 апр 2016, 08:35
gornak
а насколько большой растр по размеру?
могу предложить "топорный вариант":
1)растр в точки
2)для точечного shp-расчет геометрии(координаты)
3)точки в растры по каждому полю с координатами

Re: Извлечение координат точек из растра

Добавлено: 25 апр 2016, 10:47
ubugunov
gornak, спасибо за ответ! Растр большой, точнее их несколько, они покрывают бассейн р.Селенги (юг Бурятии и север Монголии). "Топорный вариант" уже пробовал за неимением других, но территория великовата. Если не возможно создать простым способом растр с широтными координатами, может где-то в природе есть такие готовые растры?

Re: Извлечение координат точек из растра

Добавлено: 26 апр 2016, 23:20
gornak
ubugunov писал(а):"Топорный вариант" уже пробовал за неимением других, но территория великовата.
так был ли достигнут результат?"размер" растра-в пикселях
ubugunov писал(а):может где-то в природе есть такие готовые растры?
готовые не знаю,могу создать растр программно в gdal(опять-таки в зависимости от размера, можно-сетку растров), желательно иметь метаданные на ваши растры

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 08:56
ubugunov
gornak писал(а):
ubugunov писал(а):"Топорный вариант" уже пробовал за неимением других, но территория великовата.
так был ли достигнут результат?
Да, достигнут, но на небольших участках. В том числе пробовал подобную схему с помощью 1. "Извлечь по образцу" - получаем таблицу точек с координатами; 2. проводим калькуляцию таблицы по нужным формулам и получаем необходимые расчетные данные; 3. создаем точечный шейп по имеющимся координатам; конвертируем этот шейп в растр. Тоже работает но на небольших участках при увеличении размера ячейки и снижении разрешения итогового растра.
gornak писал(а):"размер" растра-в пикселях
6001 х 6001, размер ячейки 0,00083333.

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 09:00
ubugunov
gornak писал(а):
ubugunov писал(а):может где-то в природе есть такие готовые растры?
готовые не знаю,могу создать растр программно в gdal(опять-таки в зависимости от размера, можно-сетку растров), желательно иметь метаданные на ваши растры
В качестве источника данных SRTM я использую растры "PROCESSED SRTM DATA VERSION 4.1", которые скачаны с "http://srtm.csi.cgiar.org"
Общая область интересов 56_01, 56_02, 56_03, ..., 60_01, 60_02, 60_03.
Наиболее важные из них, с самой плотной сеткой ключевых площадок - 57_02, 57_03, 58_02, 58_03, 59_02, 59_03.
Если сможете мне помочь, буду счастлив. Мне достаточно только рабочего алгоритма в ArcMap 10.1.

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 10:02
ubugunov
gornak писал(а): желательно иметь метаданные на ваши растры
Действительно, растр можно создать программно, но я не владею этой технологией.
Какие метаданные для этого нужны?

Суть моих исследований (если вдруг Вам интересно) заключается в следующем:

Гипотеза:
1. засоление почв в сложной рельефной обстановке происходит при определенных климатических условиях, и только тогда, когда имеет место "выпотной" водный режим почв, т.е. когда почва "потеет" и на ее поверхности кристаллизуются соли. Выпотной водный режим возникает при высоком прогреве поверхности, благодаря восходящему току влаги по почвенным капиллярам из грунтовых вод.
2. Накопление солей в верхних горизонтах почв и на их поверхности в горных условиях происходит при аридном и семиаридном климате. Климат в горных условиях зависит не только от широты, но и в значительной степени от высоты.
3. Таким образом, должен существовать определенный климатический потенциал засоления территории, определяющийся ее широтой и высотой.

Для проверки гипотезы я провел визуальный анализ космоснимков на предмет поиска засоленных участков, в том числе с наибольшими высотными отметками для конкретных широт. В итоге я получил выборку точек с координатами и высотами.
Интересным оказалось то, что в северных широтах засоление проявлялось только на низких высотах (до 600 м), тогда как на юге оно отмечалось значительно выше (до 1700 и более).
Положив эти точки на график, где по X - широта, а Y - высота, я отметил, что верхний предел засоления (Hpz) действительно достаточно хорошо описывается экспоненциальным трендом с высоким значением коэффициента детерминации и решил эту закономерность отобразить картографически.
Формула для бассейна р. Селенги имеет следующий вид: Hpz = 5000000 * exp (-0.17 * широта). Hpz - предельная высота для конкретной широты, где потенциально может произойти засоление. Следует отметить, что на других территориях формула скорее всего будет другой. Это проявляется также в самой западной части бассейна, где климат локально меняется крупными горными сооружениями с усилением континентальности. Некоторые изменения закономерности отмечаются также и за пределами бассейна в южном и восточном направлениях, где меняется характер геоморфологии и расчленения рельефа.
Отклонения от выявленной закономерности нивелируются включением в расчеты суммы эффективных осадков в теплый период года. Но до конца я с этим пока не разобрался. Если кому интересно, можем порассуждать на эту тему и даже сделать совместную научную публикацию.

Далее из Hpz мы вычитаем реальную высоту (Н) и получаем для каждой конкретной точки положительную или отрицательную цифру. Положительная показывает, что климатический потенциал засоления в этой точке присутствует, отрицательная - нет. Фактическое значение указывает на силу проявления выпотного режима, чем выше значение - тем потенциал засоления сильнее. Для отрицательных значений, напротив, увеличение значения, если "-" показывает смену выпотного режима на непромывной и промывной, когда соли уходят в глубь профиля или вообще из него вымываются.

Таким образом мы можем получить карту климатического потенциала засоления на определенный климатически замкнутый однородный участок земной поверхности.
Для этого мне необходим растр (или сетку растров) с широтными координатами. Возможно для каких-то других территорий могут потребоваться координаты долготы. Этот растр можно использовать в дальнейших расчетах с помощью калькулятора. Хорошо было бы, если эти растры по своим метаданным совпадали с растрами SRTM для упрощения расчетов.

Естественно, что засоление зависит от массы прочих факторов, в числе которых можно обозначить наличие источников солей (выклинивание глубинных минерализованных вод, засоленные породы и т.п.), условия стока и уровень залегания грунтовых вод, наличие мерзлотного или иного водоупора, геоморфология поверхности, экспозиция и крутизна склона и т.д. и т.п. Но все эти параметры в первую очередь контролируются климатическим потенциалом. Другими словами, даже при наличии источника засоления, например, высокоминерализованного водного источника (ключа) или близкозалегающих засоленных пород, соли не накопятся на поверхности, если
нет климатического потенциала.
Кстати, я не очень опытный юзер ГИСов, но, полагаю, что для гидрологических и геоморфологических параметров также можно рассчитать их потенциалы засоления и сочленить их с климатическим потенциалом.
Практическим выхлопом, например, может служить оценка потенциала вторичного засоления при проектировании оросительных мелиоративных систем и др. Подобным образом также можно попытаться рассчитать климатические потенциалы распределения других почвенных показателей, а также отдельных видов или сообществ растений и других биологических объектов.

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 10:50
trir
всяко кодить придётся

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 10:59
gamm

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 11:03
gornak
gornak писал(а): желательно иметь метаданные на ваши растры
вопрос был глупый, я забыл, что это srtm
только не понял почему 6001*6001, у меня 6000*6000

Re: Извлечение координат точек из растра

Добавлено: 27 апр 2016, 16:34
gornak
ubugunov писал(а):Тоже работает но на небольших участках при увеличении размера ячейки и снижении разрешения итогового растра.
а в чем проблема: вопрос времени или "виснет"???

Re: Извлечение координат точек из растра

Добавлено: 28 апр 2016, 04:13
ubugunov
gornak писал(а):
gornak писал(а): желательно иметь метаданные на ваши растры
вопрос был глупый, я забыл, что это srtm
только не понял почему 6001*6001, у меня 6000*6000
ArcMap мне такие данные дает.

Re: Извлечение координат точек из растра

Добавлено: 28 апр 2016, 04:27
ubugunov
gornak писал(а):
ubugunov писал(а):Тоже работает но на небольших участках при увеличении размера ячейки и снижении разрешения итогового растра.
а в чем проблема: вопрос времени или "виснет"???
И то и другое. Точнее не виснет, а выдает ошибку.
Пытался обработать один растр SRTM целиком. Иногда в ходе преобразований выходит ошибка, а при повторном запуске с теми же параметрами - без ошибки, мне не понятно, что за этим стоит.
В итоге, если оставлять значение ячейки по умолчанию, получается растр с размером ячейки 0,02, тогда как в исходном SRTM 0,0008333, т.е. грубовато. Времени - почти смена на растр, а картинка грубая.
Вообще растр выглядит, как постепенный переход со светлых тонов в темные.

В общем, отвечая на Ваш вопрос, проблема конечно во времени.

Re: Извлечение координат точек из растра

Добавлено: 28 апр 2016, 06:34
ubugunov
gamm писал(а):например так ...
Если я правильно понял, то изначально тему я обозначил не совсем неправильно, т.к. извлечь координаты из растра для использования их в расчетах в том же калькуляторе растра напрямую невозможно.

Более реальные варианты: 1. "топорный" - создание нового растра с координатами обычными средствами ArcMap путем конвертаций растра в точки, подсчета геометрии и обратной конвертации в новый растр, что требует существенных временных затрат для больших территорий; 2. Создание нового растра путем более продвинутых средств (то что вы предлагаете).

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

Другими словами, может нет смысла пытаться каждый раз извлекать координаты из растров, а программно создать базу новых координатных растров, доступную для обычных пользователей, чтобы они могли избежать тех сложностей, с которыми я сейчас сталкиваюсь?

Re: Извлечение координат точек из растра

Добавлено: 28 апр 2016, 08:52
gornak
ubugunov писал(а):может нет смысла пытаться каждый раз извлекать координаты из растров, а программно создать базу новых координатных растров
думаю, что оба варианта имеют место быть
ubugunov писал(а):потому уже разработан рабочий алгоритм для этих целей
возможно он и есть
ubugunov писал(а):2. Создание нового растра путем более продвинутых средств (то что вы предлагаете)
пока сложно сказать сколько будет занимать по времени самодельный алгоритм по сравнению с аркой
в любом случае попробую
ubugunov писал(а):В итоге, если оставлять значение ячейки по умолчанию, получается растр с размером ячейки 0,02, тогда как в исходном SRTM 0,0008333, т.е. грубовато. Времени - почти смена на растр, а картинка грубая.
Вообще растр выглядит, как постепенный переход со светлых тонов в темные.
пока могу посоветовать (проверил работает)
1)нарежте strm (Clip)
2)растр в точки
3)добавляете поля float(для координат)
4)вычислить геометрию
5)добавить поля longinteger=float*1000000
6)точки в растр по полю longinteger размер ячейки 0,00083333
получите 32 bit signed integer растры скоординатами для использования в калькульторе растра,
которые можно сшить в один

если вставить данный алгоритм в модель или python скрипт возможно нарезанный по кускам srtm обработается быстрее и без ошибок