Con("Значения из raster2 в raster1")

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Con("Значения из raster2 в raster1")

Сообщение dime1 »

Имею два DEM на территорию:
- у raster1 статистика -17-293
- у raster2 статистика 66-212
Хочу всем пикселям raster1<=66 и >=212 присвоить значения из raster2. Иcпользую RasterCalculator по примерам из
http://webhelp.esri.com/arcgisdesktop/9 ... icname=con_
Хочется в одно действие, но пока не получается даже в два этапа (сначала заменить все <=66, потом заменить все >=212).

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

Con("raster1" <=66, "raster2", "raster1")
Если значение в raster1 меньше или равно 66, то присвоить значение из raster2, в ином случае присвоить значения из raster1.
Последний раз редактировалось dime1 14 фев 2013, 16:29, всего редактировалось 1 раз.
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

Con("raster1" <=66 | "raster1" >=212, "raster2", "raster1")
Con("raster1" <=66 or "raster1" >=212, "raster2", "raster1")
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

Оба варианта выдают ошибку:
ERROR 000539: Error running expression: rcexec()
Traceback (most recent call last):
File "<expression>", line 1, in <module>
File "<string>", line 5, in rcexec
ValueError: The truth value of a raster is ambiguous. Invalid use of raster with Boolean operator or function. Check the use of parentheses where applicable.
Пример:

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

Con("ASTGTM_NE_dem.tif" <=66 | "ASTGTM_NE_dem.tif" >=212, "srtm0.tif", "ASTGTM_NE_dem.tif")
А если применять только для значения <=66, то в полученном растре почему-то минимальное значение 11.
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

Попробуйте так
Con(("ASTGTM_NE_dem.tif" <67) or ("ASTGTM_NE_dem.tif" >211), "srtm0.tif", "ASTGTM_NE_dem.tif")

По моему у него нет значков >=, <=
Используете монохромные растры? Пользуетесь инструментом SingleOutputMapAlgebra?
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

Растр получил, но его min-max 11-262, хотя планировалось же получить 66-212, как в растре "srtm0.tif"

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

Con(("ASTGTM_NE_dem.tif" <= 66) | ("ASTGTM_NE_dem.tif" >= 212), "srtm0.tif", "ASTGTM_NE_dem.tif")
P.S.: Добавлены (), <= >= присутствуют. Растры монохромные, 16signed, cell size разный.
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

Все правильно. В выходном растре согласно напианному условию будут значения 11-66 и 212-262, а между 67-211 - пусто. Поменяйте условие на ("ASTGTM_NE_dem.tif" > 65) and ("ASTGTM_NE_dem.tif" < 213). Тогда будет 66-212
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

Я наверное неправильно пояснил задачу.
В ASTGTM_NE_dem.tif должны сохраниться все исходные пиксели в диапазоне 66-212, а там, где у него меньше и больше этих значений необходимо заменить значениями из srtm0.tif (у которого статистика тоже 66-212).
Последний раз редактировалось dime1 14 фев 2013, 13:01, всего редактировалось 1 раз.
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

Ну сейчас-то все получилось?
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

Нет. Я получил растр, в котором значения полностью заменены на srtm0.tif
Т,е. значения 117, например, тоже заменялись.
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

Я видимо чего-то тоже не понимаю. А нельзя 2 кусочка этих растров сюда выложить "на самому попробовать"?
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

В ASTGTM_NE_dem.tif должны сохраниться все исходные пиксели в диапазоне 66-212, а там, где у него меньше и больше этих значений необходимо взять значения из srtm0.tif
Вложения
condition.rar
(6.93 МБ) 219 скачиваний
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

dime1 писал(а):Я наверное неправильно пояснил задачу.
В ASTGTM_NE_dem.tif должны сохраниться все исходные пиксели в диапазоне 66-212, а там, где у него меньше и больше этих значений необходимо заменить значениями из srtm0.tif (у которого статистика тоже 66-212).
Это работает!
НовыйРастр = Con(("ASTGTM_NE_dem.tif" <= 66) or ("ASTGTM_NE_dem.tif" >= 212), "srtm0.tif", "ASTGTM_NE_dem.tif")

Чтобы удостовериться, что все правильно - посчитайте растр: КонтрольныйРастр = НовыйРастр - ASTGTM_NE_dem.tif
Наглядно будет видно, где поменялись значения: по берегу пруда и в низменных местах.
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

Оно то поменяло, но даже в значениях, которые я не указывал!
Возможно проблема лежит в разных размерах ячейки и нужен ресэмплинг srtm0.tif до 0,00027777778 :shock:?
Вложения
69.png
69.png (16.09 КБ) 8502 просмотра
А.Серов
Активный участник
Сообщения: 209
Зарегистрирован: 14 янв 2010, 15:40
Репутация: 68
Откуда: Сыктывкар
Контактная информация:

Re: Con("Значения из raster2 в raster1")

Сообщение А.Серов »

dime1 писал(а):Возможно проблема лежит в разных размерах ячейки и нужен ресэмплинг srtm0.tif до 0,00027777778 :shock:?
Понятно. Тогда это единственный вариант остался, который надо проверить.

Я пару лет назад решал ту же самую задачу с ASTER GDEM и STRM, но не помню особых проблем. Правда я всегда работая с растрами, привожу их в прямоугольную проекцию и одинаковое разрешение
dime1
Гуру
Сообщения: 939
Зарегистрирован: 29 май 2011, 19:41
Репутация: 94
Откуда: Киев

Re: Con("Значения из raster2 в raster1")

Сообщение dime1 »

Да, нужно таки сначала делать ресємплинг. Остаётся немного "люфт" в 2 пикселя (перекрываются значения 67-68). Но это при ресэмплинге с Кубической свёрткой, не знаю, Ближайший сосед должен быть лучше для этой цели?
Ответить

Вернуться в «ArcGIS»

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

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