Сводка
Конвертирует массив NumPy в растр.
Описание
Размер и тип данных полученного набора растровых данных зависит от входного массива.
NumpyArrayToRaster Поддерживает прямое преобразование массива 2D NumPy в одноканальный растр или массива 3D NumPy в многоканальный растр.
NumpyArrayToRaster поддерживает прямое преобразование массива 3D NumPy в многомерный набор растровых данных или массива 4D NumPy в многомерный многоканальный набор растровых данных путем указания многомерной информации.
- Если входной растр имеет два измерения, то он возвращает одноканальный растр, где размер растра определяется измерениями (строки, столбцы).
 - Если входной массив имеет три измерения, то он возвращает многоканальный растр, где число каналов равно длине первого измерения, и размер растра определяется вторыми и третьими измерениями (каналы, строки, столбцы). 
- Если входной массив имеет три измерения, и первое с размером 1, то он возвращает одноканальный растр.
 
 
Присутствие аргументов x_cell_size и y_cell_size позволяет поддерживать прямоугольные ячейки.
Примечание:
Размеры прямоугольных ячеек не поддерживаются для формата Esri Grid.
Эта функция учитывает следующие настройки среды геообработки:
Выходная система координат, Экстент, Растр привязки, Текущая рабочая область, Временная рабочая область
Синтаксис
NumPyArrayToRaster (in_array, {lower_left_corner}, {x_cell_size}, {y_cell_size}, {value_to_nodata}, {mdinfo})| Parameter | Объяснение | Тип данных | 
in_array  | Массив NumPy, конвертируемый в растр. Требуется двух- или трехмерный массив NumPy.  | NumPyArray | 
lower_left_corner  | Объект Point, определяющий нижний левый угол выходного растра в единицах карты. По умолчанию, нижний левый угол устанавливается с координатами (0.0, 0.0). (Значение по умолчанию — None)  | Point | 
x_cell_size  | Размер ячейки в направлении x, заданный в единицах карты. Входными данными могут быть заданное значение размера ячейки (тип: с двойной точностью) или входной растр. Когда набор данных задан, размер ячейки этого набора данных по оси x используется в качестве размера ячейки по оси x выходного растра. Если задано только значение x_cell_size, без y_cell_size, то будет создана квадратная ячейка соответствующего размера. Если ни значение x_cell_size, ни значение y_cell_size не заданы, то для размеров x и y ячейки будет использовано значение по умолчанию, равное 1,0. (Значение по умолчанию — 1.0)  | Double | 
y_cell_size  | Размер ячейки в направлении y, заданный в единицах карты. Входными данными могут быть заданное значение размера ячейки (тип: с двойной точностью) или входной растр. Когда набор данных задан, размер ячейки этого набора данных по оси x используется в качестве размера ячейки по оси y выходного растра. Если задано только значение y_cell_size, без x_cell_size, то будет создана квадратная ячейка соответствующего размера. Если ни значение x_cell_size, ни значение y_cell_size не заданы, то для размеров x и y ячейки будет использовано значение по умолчанию, равное 1,0. (Значение по умолчанию — 1.0)  | Double | 
value_to_nodata  | Значение в массиве NumPy, которому в выходном растре будет присвоено значение NoData. Если для value_to_nodata значение не указано, в полученном растре значений NoData не будет. (Значение по умолчанию — None)  | Double | 
mdinfo  | Строка или JSON, задающие переменные и измерения в многомерном наборе растровых данных, использующиеся для построения многомерной информации. Строка должна быть в следующем формате: {"variables":[{"name": <variable_name>, "dimensions": [{"name": <dimension_name>, "description": <dimension_description>, "unit": <dimension_unit>, "extent": [<dimension_min>, <dimension_max>], "values": [<dimension_values>,…]},…]}, …]} (Значение по умолчанию — None)  | String | 
| Тип данных | Объяснение | 
| Raster | Выходной растр.  | 
Пример кода
Новый растр создается по случайно сгенерированному массиву NumPy.
import arcpy
import numpy
# Create a simple array from scratch using random values
myArray = numpy.random.random_integers(0,100,2500)
myArray.shape = (50,50)
# Convert array to a geodatabase raster
myRaster = arcpy.NumPyArrayToRaster(myArray,x_cell_size=1)
myRaster.save("C:/output/fgdb.gdb/myRandomRaster")Поблочная обработка входного многоканального растра и расчет статистики для ячеек по каналам. Этот скрипт преобразует многоканальный растр в трехмерный массив NumPy и обрабатывает массив, разделяя его на блоки данных. Затем он вычисляет среднее значений по строкам блока, преобразует разбитый на блоки массив NumPy в растр и объединяет каналы посредством мозаики. Создан новый многоканальный растр.
# Note that, if the input raster is multiband, the data blocks will also be
# multiband, having dimensions (bands, rows, columns).  Otherwise, they will
# have dimensions (rows, columns).
import arcpy
import numpy
import os
# Input raster
filein = os.path.join(os.getcwd(),r"input\input.tif")
# Output raster (after processing)
fileout = os.path.join(os.getcwd(),r"output\blockprocessingrdb22.tif")
# Size of processing data block
# where memorysize = datatypeinbytes*nobands*blocksize^2
blocksize = 512
# ----------------------------------------------------------------------------
# Create raster object from file
myRaster = arcpy.Raster(filein)
# Set environmental variables for output
arcpy.env.overwriteOutput = True
arcpy.env.outputCoordinateSystem = filein
arcpy.env.cellSize = filein
# Loop over data blocks
filelist = []
blockno = 0
for x in range(0, myRaster.width, blocksize):
    for y in range(0, myRaster.height, blocksize):
        # Lower left coordinate of block (in map units)
        mx = myRaster.extent.XMin + x * myRaster.meanCellWidth
        my = myRaster.extent.YMin + y * myRaster.meanCellHeight
        # Upper right coordinate of block (in cells)
        lx = min([x + blocksize, myRaster.width])
        ly = min([y + blocksize, myRaster.height])
        #   noting that (x, y) is the lower left coordinate (in cells)
        # Extract data block
        myData = arcpy.RasterToNumPyArray(myRaster, arcpy.Point(mx, my),
                                          lx-x, ly-y)
        # PROCESS DATA BLOCK -----------------------------
        # e.g. Calculate mean of each cell of all bands.
        myData -= numpy.mean(myData, axis=0, keepdims=True)
        # ------------------------------------------------
        # Convert data block back to raster
        myRasterBlock = arcpy.NumPyArrayToRaster(myData, arcpy.Point(mx, my),
                                                 myRaster.meanCellWidth,
                                                 myRaster.meanCellHeight)
        # Save on disk temporarily as 'filename_#.ext'
        filetemp = ('_%i.' % blockno).join(fileout.rsplit('.',1))
        myRasterBlock.save(filetemp)
        # Maintain a list of saved temporary files
        filelist.append(filetemp)
        blockno += 1
# Mosaic temporary files
arcpy.Mosaic_management(';'.join(filelist[1:]), filelist[0])
if arcpy.Exists(fileout):
    arcpy.Delete_management(fileout)
arcpy.Rename_management(filelist[0], fileout)
# Remove temporary files
for fileitem in filelist:
    if arcpy.Exists(fileitem):
        arcpy.Delete_management(fileitem)
# Release raster objects from memory
del myRasterBlock
del myRaster
# ----------------------------------------------------------------------------Конвертирует NumPyArray в многомерный растр.
import arcpy
import numpy
# Create multidimensional raster object from the NetCDF file
in_raster = Raster("myData.nc", True)
lowerLeft = arcpy.Point(in_raster.extent.XMin, in_raster.extent.YMin)
blockSize = 256
# Convert Raster to Array 
myRasterBlock = arcpy.NumPyArrayToRaster(in_raster, lowerLeft, blockSize, blockSize)