Страница 1 из 2
Con("Значения из raster2 в raster1")
Добавлено: 13 фев 2013, 17:31
dime1
Имею два DEM на территорию:
- у raster1 статистика -17-293
- у raster2 статистика 66-212
Хочу всем пикселям raster1<=66 и >=212 присвоить значения из raster2. Иcпользую RasterCalculator по примерам из
http://webhelp.esri.com/arcgisdesktop/9 ... icname=con_
Хочется в одно действие, но пока не получается даже в два этапа (сначала заменить все <=66, потом заменить все >=212).
Если значение в raster1 меньше или равно 66, то присвоить значение из raster2, в ином случае присвоить значения из raster1.
Re: Con("Значения из raster2 в raster1")
Добавлено: 13 фев 2013, 21:43
А.Серов
Con("raster1" <=66 | "raster1" >=212, "raster2", "raster1")
Con("raster1" <=66 or "raster1" >=212, "raster2", "raster1")
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 11:10
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.
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 12:04
А.Серов
Попробуйте так
Con(("ASTGTM_NE_dem.tif" <67) or ("ASTGTM_NE_dem.tif" >211), "srtm0.tif", "ASTGTM_NE_dem.tif")
По моему у него нет значков >=, <=
Используете монохромные растры? Пользуетесь инструментом SingleOutputMapAlgebra?
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 12:33
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 разный.
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 12:47
А.Серов
Все правильно. В выходном растре согласно напианному условию будут значения 11-66 и 212-262, а между 67-211 - пусто. Поменяйте условие на ("ASTGTM_NE_dem.tif" > 65) and ("ASTGTM_NE_dem.tif" < 213). Тогда будет 66-212
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 12:57
dime1
Я наверное неправильно пояснил задачу.
В ASTGTM_NE_dem.tif должны сохраниться все исходные пиксели в диапазоне 66-212, а там, где у него меньше и больше этих значений необходимо заменить значениями из srtm0.tif (у которого статистика тоже 66-212).
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 12:58
А.Серов
Ну сейчас-то все получилось?
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 13:06
dime1
Нет. Я получил растр, в котором значения полностью заменены на srtm0.tif
Т,е. значения 117, например, тоже заменялись.
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 14:25
А.Серов
Я видимо чего-то тоже не понимаю. А нельзя 2 кусочка этих растров сюда выложить "на самому попробовать"?
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 14:31
dime1
В ASTGTM_NE_dem.tif должны сохраниться все исходные пиксели в диапазоне 66-212, а там, где у него меньше и больше этих значений необходимо взять значения из srtm0.tif
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 15:11
А.Серов
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
Наглядно будет видно, где поменялись значения: по берегу пруда и в низменных местах.
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 15:40
dime1
Оно то поменяло, но даже в значениях, которые я не указывал!
Возможно проблема лежит в разных размерах ячейки и нужен ресэмплинг srtm0.tif до 0,00027777778

?
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 15:57
А.Серов
dime1 писал(а):Возможно проблема лежит в разных размерах ячейки и нужен ресэмплинг srtm0.tif до 0,00027777778

?
Понятно. Тогда это единственный вариант остался, который надо проверить.
Я пару лет назад решал ту же самую задачу с ASTER GDEM и STRM, но не помню особых проблем. Правда я всегда работая с растрами, привожу их в прямоугольную проекцию и одинаковое разрешение
Re: Con("Значения из raster2 в raster1")
Добавлено: 14 фев 2013, 16:05
dime1
Да, нужно таки сначала делать ресємплинг. Остаётся немного "люфт" в 2 пикселя (перекрываются значения 67-68). Но это при ресэмплинге с Кубической свёрткой, не знаю, Ближайший сосед должен быть лучше для этой цели?