Взаимодействие Растрового объекта в ArcGIS
Растровый объект ссылается на набор растровых данных и, если используется в ArcMap, может быть связан с растровым слоем в таблице содержания. Отношения между набором растровых данных, объектом Растр (Raster) и растровым слоем поддерживаются в большинстве случаев, но важно понимать эти отношения для продуктивной работы с Алгеброй карт дополнительного модуля Spatial Analyst.
Растровые объекты можно создать двумя способами:
- Результатом выполнения выражения Алгебры карт дополнительного модуля Spatial Analyst является объект Растр (Raster). Одной из наиболее важных особенностей поведения Растрового объекта является то, что при его создании как первичного результата выражения Алгебры карт он ссылается на временный растр.
>>> outRas = Slope("elevation") >>> print outRas.isTemporary True
- Набор растровых данных может быть квалифицирован как Растровый объект. Когда постоянный набор растровых данных квалифицирован как Растровый объект, набор данных остается постоянным.
>>> outRas = Raster("C:/Data/elevation") >>> print outRas.isTemporary False
В некоторых случаях Растровый объект связан с растровым слоем. При работе в окне Python с опцией геообработки Добавить результат операций геообработки в отображение (Add result of the geoprocessing operations to the display) результат выражения Алгебры карт добавляется в таблицу содержания с тем же именем, что и Растровый объект. Когда набор данных квалифицирован как растр, слой в таблицу содержания не добавляется.
Сохранение временных растров
Когда данные, связанные с Растровым объектом, являются временными, они будут удалены по окончании сеанса ArcGIS (при выходе объекта из области применения или завершении выполнения скрипта). Если только данные не были сохранены. При сохранении растра слой и объект отображают обновленные свойства растра, в том числе name, path, catalogPath, и статус isTemporary набора данных. Есть несколько способов сохранить временный набор данных.
- Чтобы сохранить временный набор растровых данных через связанный Растровый объект, можно использовать метод save Растрового объекта.
- Чтобы сохранить временный набор данных, связанный со слоем карты, щелкните правой кнопкой мыши слой и выберите Данные (Data) > Сделать постоянными (Make Permanent) и укажите местоположение и имя для сохранения данных.
- Чтобы сохранить временный набор растровых данных, связанный со слоем карты, сохраните документ карты. При сохранении документа карты набор растровых данных записывается на диск в текущем местоположении с автоматически созданным именем.
Повторное использование Растрового объекта
Имена объектов должны быть уникальными. Когда имя объекта используется повторно, оригинальный объект перезаписывается. В приведенном ниже примере результат выполнения инструмента Уклон (Slope) заменяется, когда outRas повторно используется как результат выражения Экспозиция (Aspect).
outRas = Slope("inRas1")
outRas = Aspect("inRas2")
Слои добавляются в таблицу содержания с тем же именем, что и Растровый объект. Если имя Растрового объекта используется повторно, в таблицу содержания будут добавлены несколько слоев с одинаковым именем. В примере выше outRas добавляется в таблицу содержания дважды. Первый раз – при выполнении выражения Уклон (Slope). Этот первый слой outRas ссылается на результат выполнения инструмента Уклон (Slope) и может использоваться в окне Python, пока не выполнено выражение Экспозиция (Aspect). При выполнении инструмента Экспозиция (Aspect) в таблицу содержания добавляется второй слой с именем outRas, объект перезаписывается и теперь ссылается на набор данных и слой, являющиеся результатом выполнения инструмента Экспозиция (Aspect).
Если Растровый объект, ссылающийся на набор данных, переписан, набор растровых данных можно переквалифицировать как Растровый объект с помощью имени слоя или набора данных.
Удаление Растрового объекта
При удалении Растрового объекта последствия для связанного набора данных (и возможно слоя) зависят от статуса данных. Если данные сохранены, удаление Растрового объекта не оказывает влияния на связанный набор данных или слой. Если набор данных является временным, последствия удаления Растрового объекта зависят от того, существует ли слой, ссылающийся на набор растровых данных. Если с временным набором данных не связан слой и объект удаляется, то этот набор данных удаляется. Если есть слой, связанный с временным набором данных, и объект удаляется, временные данные остаются.
Ниже приведен пример удаления Растрового объекта с именем 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, будут ссылаться на сохраненный набор данных.