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

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

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

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

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

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

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

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

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

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

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

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

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

Подсказка:

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

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

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

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

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

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

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

При назначении объекта Raster новому объекту Raster связанный набор данных или слой не копируются. При назначении объекта Raster новому объекту Raster создается второй объект, ссылающийся на исходный. В следующем примере, 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, будут ссылаться на сохраненный набор данных.

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