<null> в "1"
-
- Активный участник
- Сообщения: 190
- Зарегистрирован: 16 дек 2012, 09:08
- Репутация: 48
- Откуда: Калининград
<null> в "1"
Доброго времени суток! Подскажите пожалуйста, как решить проблему:
С помощью регулярной сетки иного экстента были извлечены значения с растра интерполяции экстентом отличного от сетки. Соответственно в некоторых местах значения точек сетки приняли значение <null>. Однако, для расчетов это невероятно не подходит, нужна полная сетка. Отсюда вопрос : как значения <null> сделать 1 или 0, плюсование ко всему полю 1 не получилось. Заранее спасибо.
С помощью регулярной сетки иного экстента были извлечены значения с растра интерполяции экстентом отличного от сетки. Соответственно в некоторых местах значения точек сетки приняли значение <null>. Однако, для расчетов это невероятно не подходит, нужна полная сетка. Отсюда вопрос : как значения <null> сделать 1 или 0, плюсование ко всему полю 1 не получилось. Заранее спасибо.
-
- Гуру
- Сообщения: 1018
- Зарегистрирован: 01 авг 2012, 13:55
- Репутация: 241
Re: <null> в "1"
1. Экспорт в аски файл.
2. Открыть в текстовом редакторе, команда "Найти и заменить".
3. Импорт из аски файла.
2. Открыть в текстовом редакторе, команда "Найти и заменить".
3. Импорт из аски файла.
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 14 янв 2010, 15:40
- Репутация: 68
- Откуда: Сыктывкар
- Контактная информация:
Re: <null> в "1"
Если у Вас есть Spatial Analyst то задача решается при помощи инструмента Spatail Analyst Tools - Map Algebra - Single output map algebra (это в ArcToolBox). Запускаете инструмент, появляется диалог.
В окошке Map Algebra Expression необходимо воспользоваться функцией CON, написать что-то типа
CON("[IN_GRID]=NULL", "1", "[IN_GRID]").
Уточните синтаксис по справке, пишу по памяти для версии 9.3
В окошке Map Algebra Expression необходимо воспользоваться функцией CON, написать что-то типа
CON("[IN_GRID]=NULL", "1", "[IN_GRID]").
Уточните синтаксис по справке, пишу по памяти для версии 9.3
-
- Активный участник
- Сообщения: 190
- Зарегистрирован: 16 дек 2012, 09:08
- Репутация: 48
- Откуда: Калининград
Re: <null> в "1"
У меня версия 10 sp 5. В spatial analyst tools нету Single output map algebra, nтолько calculate raster, однако Con есть в Conditional, но там предлагается только провести манипуляцию с растром, а у меня это точечная векторная сетка.А.Серов писал(а):Если у Вас есть Spatial Analyst то задача решается при помощи инструмента Spatail Analyst Tools - Map Algebra - Single output map algebra (это в ArcToolBox). Запускаете инструмент, появляется диалог.
В окошке Map Algebra Expression необходимо воспользоваться функцией CON, написать что-то типа
CON("[IN_GRID]=NULL", "1", "[IN_GRID]").
Уточните синтаксис по справке, пишу по памяти для версии 9.3
Я попробовал через выражение на питоне сделать таким образом !powerkf!.replace("Null", "1"). Считает до 30% а потом выдает ошибку:
Executing: CalculateField extract_power powerkf !powerkf!.replace("Null", "1") PYTHON_9.3 #
Start Time: Wed Jan 02 20:46:46 2013
ERROR 000539: <type 'exceptions.SyntaxError'>: invalid syntax (<expression>, line 1)
Failed to execute (CalculateField).
Failed at Wed Jan 02 20:46:53 2013 (Elapsed Time: 7.00 seconds)
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 14 янв 2010, 15:40
- Репутация: 68
- Откуда: Сыктывкар
- Контактная информация:
Re: <null> в "1"
Так с вектором еще проще. Вам нужно последовательно выполнить две операции (названия меню для 9.3):
1. Выборку всех объектов со значением поля NULL (Selection-Select By Attributes)
2. Рассчитать новое значение поля для всех выбранных объектов. Правая кнопка мыши на имени слоя-Attribute Table-Правая кнопка мыши на имени колонки-Field Calculator. Не забыть поставить галочку Only selected. Ну а дальше сами сообразите)
1. Выборку всех объектов со значением поля NULL (Selection-Select By Attributes)
2. Рассчитать новое значение поля для всех выбранных объектов. Правая кнопка мыши на имени слоя-Attribute Table-Правая кнопка мыши на имени колонки-Field Calculator. Не забыть поставить галочку Only selected. Ну а дальше сами сообразите)
-
- Активный участник
- Сообщения: 190
- Зарегистрирован: 16 дек 2012, 09:08
- Репутация: 48
- Откуда: Калининград
Re: <null> в "1"
Ой, прошу прощения, я не уточнил - мне необходимо именно посредством некоторой операции-выражения осуществить это, чтобы потом запихнуть все это дело в модель. Через калькулятор поля получается все отлично, но вот именно при автоматизации этого дела и происходит моя проблема.
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 14 янв 2010, 15:40
- Репутация: 68
- Откуда: Сыктывкар
- Контактная информация:
Re: <null> в "1"
И этому тоже можно помочь! Используйте ModelBuilder. Кнопка для его запуска расположена в Toolbar Main Menu. Откроется окно Model Builder. Затем перетащите туда нужные элементы из ArcToolbox (Например Data Management Tools-Fields-Calculate Field) и Table of Contents, постройте модель и отладьте ее. Затем в окне ModelBulider из меню выполните Model-Export-To Script-Python. Получите Вашу модель, но написанную на Питоне.swdartvader писал(а):Ой, прошу прощения, я не уточнил - мне необходимо именно посредством некоторой операции-выражения осуществить это, чтобы потом запихнуть все это дело в модель. Через калькулятор поля получается все отлично, но вот именно при автоматизации этого дела и происходит моя проблема.
PS. Задавать вопросы тоже искусство, научитесь со временем))
-
- Гуру
- Сообщения: 1018
- Зарегистрирован: 01 авг 2012, 13:55
- Репутация: 241
Re: <null> в "1"
На всякий случай, сделать копию исходного растра.
В растре поменять null на 1 (одним из предложенных выше способом), а потом уже извлекать значения из растра для регулярной сетки точечного шейп файла.
В растре поменять null на 1 (одним из предложенных выше способом), а потом уже извлекать значения из растра для регулярной сетки точечного шейп файла.
-
- Активный участник
- Сообщения: 190
- Зарегистрирован: 16 дек 2012, 09:08
- Репутация: 48
- Откуда: Калининград
Re: <null> в "1"
Под мою задачу все оказалась очень просто - существовала функция IsNull, обработав которой растр, я получил в пустых местах 1, а в местах наличия объектов 0, очень удобно.lam писал(а):На всякий случай, сделать копию исходного растра.
В растре поменять null на 1 (одним из предложенных выше способом), а потом уже извлекать значения из растра для регулярной сетки точечного шейп файла.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя