Raster (arcpy)
Резюме
Создает растровый объект, который можно использовать в скриптах Python или выражении инструмента Алгебра карт (Map Algebra). Растровый объект – это переменная, которая ссылается на набор растровых данных.
Растровый объект можно создать двумя способами. Можно указать путь к существующему растру на диске или же его можно получить в результате выполнения инструкции Алгебры карт (Map Algebra).
Для выполнения выражений Алгебры карт необходим дополнительный модуль Дополнительный модуль ArcGIS Spatial Analyst.
Обсуждение
Растровый объект, созданный на основе существующих данных, можно использовать в последующих выражениях Алгебры карт (Map Algebra), при этом он будет содержать все связанные свойства и методы растра.
# outRas is a resultant raster object
outRas = Raster("C:/Data/inraster")
Любой инструмент или оператор дополнительного модуля Spatial Analyst (см. раздел Работа с операторами), имеющий выходной растр слева от знака равенства, создаёт растровый объект. Например, в следующем выражении outRas является растровым объектом.
outRas = Slope("inelevation")
Когда растровый объект возвращается выражением Алгебры карт, по умолчанию объект (переменная и связанный набор данных) является временным.
Временный набор данных, связанный с растровым объектом, может стать постоянном при использовании следующих механизмов:
- Можно вызвать метод сохранения растрового объекта.
- Можно вызвать Сделать постоянным (Make Permanent), щелкнув правой кнопкой слой со связанным растровым объектом в TOC и указав имя выходных данных.
- Можно сохранить проект карты (MXD, 3DD и т. д.) со всеми слоями со связанными растровыми объектами.
В третьем случае набор данных, на который ссылается растровый объект, автоматически сохраняется на диск с именем по умолчанию.
Если указанный растр не сделать постоянным с помощью одного из предыдущих методов, переменная и указанный набор растровых данных будут удалены, когда переменная выходит за область действия, например при завершении автономного скрипта или закрытия ArcGIS. Если растровый объект ссылается на постоянные данные на диске, эти данные не удаляются.
Определенные операторы есть и в Алгебре карт, и в Python. Если вы хотите, чтобы оператор работал с растрами (а не скалярными значениями), входные растры необходимо привести к типу растровых объектов с помощью конструктора классов Raster: Raster("inRaster").
# The Spatial Analyst plus operator is used on the input rasters creating
# an output raster object
outRas = Raster("input1") + Raster("input2")
# The Python plus operator is used on numbers creating a scalar variable
outVar = 4 + 7
# When there is a mix of rasters with numbers the Spatial Analyst
# operator is used creating an output raster object
outRas = Raster("input") + 10
Определенные свойства, связанные с растровым объектом, доступны, только если указанный набор растровых данных является постоянным. Если указанный набор растровых данных является временным, этим свойствам присваивается значение None (Нет). При этом затрагиваются свойства catalogPath, compressionType, format, hasRAT, name и path.
После того, как набор растровых данных сделан постоянным, он не может вернуться во временное состояние.
Синтаксис
Параметр | Объяснение | Тип данных |
inRaster |
Входной набор растровых данных. | Raster |
Свойства
Свойство | Объяснение | Тип данных |
bandCount (только чтение) |
Количество каналов в указанном наборе растровых данных. | Integer |
catalogPath (только чтение) |
Полный путь и имя набора растровых данных. | String |
compressionType (только чтение) |
Тип сжатия. Доступны следующие типы:
| String |
extent (только чтение) |
Экстент указанного набора растровых данных. | Extent |
format (только чтение) |
Формат растра
| String |
hasRAT (чтение и запись) |
Обозначает, имеется ли связанная атрибутивная таблица: True – атрибутивная таблица присутствует, False – отсутствует. | Boolean |
height (только чтение) |
Число строк. | Integer |
isInteger (только чтение) |
Целочисленное состояние: True – набор растровых данных является целочисленным. | Boolean |
isTemporary (только чтение) |
Состояние указанного набора растровых данных: True – набор растровых данных является временным, False – постоянным. | Boolean |
maximum (только чтение) |
Максимальное значение в указанном наборе растровых данных. | Double |
mean (только чтение) |
Среднее значение в указанном наборе растровых данных. | Double |
meanCellHeight (только чтение) |
Размер ячейки в направлении y. | Double |
meanCellWidth (только чтение) |
Размер ячейки в направлении x. | Double |
minimum (только чтение) |
Минимальное значение в указанном наборе растровых данных. | Double |
name (только чтение) |
Имя указанного набора растровых данных. | String |
noDataValue (только чтение) |
Значение NoData в указанном наборе растровых данных. | Double |
path (только чтение) |
Полный путь и имя набора растровых данных. | String |
pixelType (только чтение) |
Тип пикселей указанного набора растровых данных. Используются следующие типы
| String |
spatialReference (только чтение) |
Пространственная привязка указанного набора растровых данных. | SpatialReference |
standardDeviation (только чтение) |
Стандартное отклонение значений ячеек в набор растровых данных. | Double |
uncompressedSize (только чтение) |
Размер указанного набора растровых данных на диске. | Double |
width (только чтение) |
Число столбцов. | Integer |
Обзор метода
Метод | Объяснение |
save ({name}) |
Постоянно сохраняет набор данных, на который ссылается растровый объект. |
Методы
Параметр | Объяснение | Тип данных |
name |
Имя, назначаемое набору растровых данных на диске. | String |
Пример кода
Создает объект Raster из набора растровых данных и получает свойства для анализа.
import arcpy
my_raster = arcpy.Raster('elevation')
my_min = my_raster.minimum
my_max = my_raster.maximum
my_area = (my_raster.width * my_raster.height) * my_raster.meanCellWidth
Создает объект Raster, получает свойства, создает случайный ошибочный растр (+/- 3 фута), добавляет его в растр высот и преобразует его единицы из футов в метры.
import arcpy
from arcpy.sa import *
elev_raster = Raster('c:/data/elevation')
my_extent = elev_raster.extent
my_cellsize = (elev_raster.meanCellHeight + elev_raster.meanCellWidth) / 2
res01 = arcpy.CreateRandomRaster_management("", "error3", "UNIFORM 0.0 3.0",
my_extent, my_cellsize)
elev_meters = (elev_raster + Raster(res01)) * 0.3048
elev_meters.save("c:/output/fgdb.gdb/elevM_err")