Взаимодействие Растрового объекта

Доступно с лицензией Spatial Analyst.

Растровый объект ссылается на набор растровых данных и, при использовании в отображении карты, может быть связан с растровым слоем в таблице содержания. Отношения между набором растровых данных, объектом Растр и растровым слоем поддерживаются в большинстве случаев, но важно понимать эти отношения для продуктивной работы с Алгеброй карт дополнительного модуля Spatial Analyst.

Растровые объекты создаются следующими двумя способами:

  • Растровый объект создаётся в результате выполнения выражения Алгебры карт. Одной из наиболее важных особенностей поведения Растрового объекта является то, что при его создании как первичного результата выражения Алгебры карт он ссылается на временный растр.
    >>> outRas = Slope("elevation")
    >>> print outRas.isTemporary
    True
  • Набор растровых данных может быть квалифицирован как Растровый объект. Когда постоянный набор растровых данных квалифицирован как Растровый объект, набор данных остается постоянным.
    >>> outRas = Raster("C:/Data/elevation")
    >>> print outRas.isTemporary
    False

При работе в окне Python результат выражения Алгебры карт добавляется в отображение Содержание с тем же именем, что и Растровый объект. Когда набор данных квалифицирован как растр, слой в таблицу содержания не добавляется.

Сохранение временных растров

Когда данные, связанные с Растровым объектом, являются временными, они будут удалены по окончании сеанса ArcGIS (при выходе объекта из области применения или завершении выполнения скрипта). Если только данные не были сохранены. При сохранении растра слой и объект отображают обновленные свойства растра, в том числе name, path, catalogPath, и статус isTemporary набора данных. Есть несколько способов сохранить временный набор данных.

  • Чтобы сохранить временный набор растровых данных через связанный Растровый объект, можно использовать метод save Растрового объекта.
  • Чтобы сохранить временный набор растровых данных, связанный со слоем карты, сохраните проект карты. При сохранении проекта, набор растровых данных записывается на диск в текущем местоположении с автоматически созданным именем.

Повторное использование Растрового объекта

Имена объектов должны быть уникальными. Когда имя объекта используется повторно, оригинальный объект перезаписывается. В следующем примере результат выполнения инструмента Уклон заменяется, когда outRas повторно используется как результат выражения Экспозиция.

outRas = Slope("inRas1") 
outRas = Aspect("inRas2")

Слои добавляются в таблицу содержания с тем же именем, что и Растровый объект. Если имя Растрового объекта используется повторно, в окно содержания будут добавлены несколько слоев с одинаковым именем. В предыдущем примере outRas добавляется в таблицу содержания дважды. Первый раз – при выполнении выражения Уклон (Slope). Этот первый слой outRas ссылается на результат выполнения инструмента Уклон (Slope) и может использоваться в окне Python, пока не выполнено выражение Экспозиция (Aspect). При выполнении инструмента Экспозиция в таблицу содержания добавляется второй слой с именем outRas, объект перезаписывается и теперь ссылается на набор данных и слой, являющиеся результатом выполнения инструмента Экспозиция.

Подсказка:

Если Растровый объект, ссылающийся на набор данных, переписан, набор растровых данных можно переквалифицировать как Растровый объект с помощью имени слоя или набора данных.

Удаление Растрового объекта

При удалении Растрового объекта последствия для связанного набора данных (и возможно слоя) зависят от статуса данных. Если данные сохранены, удаление Растрового объекта не оказывает влияния на связанный набор данных или слой. Если набор данных является временным, последствия удаления Растрового объекта зависят от того, существует ли слой, ссылающийся на набор растровых данных. Если с временным набором данных не связан слой и объект удаляется, этот набор данных удаляется. Если есть слой, связанный с временным набором данных, и объект удаляется, временные данные остаются.

Внимание:
Временные данные, на которые ссылается слой, не удаляются при удалении Растрового объекта; однако все временные данные, если они не сохранены, удаляются при закрытии приложения, независимо от существующих слоев или объектов.

В следующем примере показано, как удалить Растровый объект с именем outRas:

outRas = Slope("C:/Data/elevation") 
del outRas

Назначение Растрового объекта новому Растровому объекту

При назначении Растрового объекта новому Растровому объекту связанный набор данных или слой не копируются. При назначении Растрового объекта новому Растровому объекту создается второй объект, ссылающийся на исходный. В следующем примере, outRas1 и outRas2 ссылаются на один и тот же набор растровых данных:

outRas1 = Slope("elevation")  
# Assigns Raster object to a new Raster object and save the raster dataset
outRas2 = outRas1
outRas2.save("C:/output/outslope")

В этом примере outRas1 и outRas2 ссылаются на один и тот же набор данных. Поэтому, при сохранении outRas2 оба объекта будут отражать постоянный статус, новое местоположение и новое имя сохраненного набора данных, outslope. Если outRas1 является слоем в вашей таблице содержания, и вы сохраняете данные, используя свойство слоя или сохраняя документ карты, оба объекта, outRas1 и outRas2, будут ссылаться на сохраненный набор данных.

Связанные разделы