RasterToNumPyArray (arcpy)
Резюме
Конвертирует растр в массив NumPy.
Обсуждение
Массив Python NumPy предназначен для работы с объемными массивами. В языке Python предусмотрено много функций для обработки массивов NumPy, наиболее значимые из них содержатся в пакете SciPy для экспоненциальных вычислений в средах Python. Может потребоваться конвертировать растр ArcGIS в массив NumPy для
- Использования одной из множества функций Python, которые применяются к массиву NumPy (например, фильтры данных, многомерный анализ или процедуры оптимизации).
- Разработка собственных функция через доступ к отдельным ячейкам массива NumPy (например, для реализации соседней нотации, изменения значения отдельных ячеек или запуска операторов накопления по всему растру).
Если определение массива (нижний левый угол и число строк и столбцов) превышает экстент in_raster, значениям массива будет присвоено NoData.
Если lower_left_corner не совпадает с углом ячейки, он автоматически будет смещен к нижнему левому углу ближайшей ячейки, следуя тем же правилам, что и параметр среды Растр привязки. Замыкание в функции RasterToNumPy не противоречит параметру среды Растр привязки; функция использует только этот же механизм; см.:
Синтаксис
Параметр | Объяснение | Тип данных |
in_raster |
Входной растр, конвертируемый в массив NumPy. | Raster |
lower_left_corner |
Нижний левый угол в in_raster, из которого извлекается блок обработки для конвертации в массив. Значения x и y в единицах карты. (Значение по умолчанию — origin of inRaster) | Point |
ncols |
Число столбцов из lower_left_corner в in_raster для конвертации в массив NumPy. (Значение по умолчанию — number of columns in inRaster) | Integer |
nrows |
Число строк из lower_left_corner в in_raster для конвертации в массив NumPy. (Значение по умолчанию — number of rows in inRaster) | Integer |
nodata_to_value |
Значение для присвоения значений NoData из in_raster в полученный массив NumPy. Тип данных зависит от типа in_raster. Если значение не указано, значениям NoData в in_raster будут назначены значения, связанные с NoData в in_raster. | Variant |
Тип данных | Объяснение |
NumPyArray |
Выходной массив NumPy. |
Пример кода
Растр конвертируется в массив NumPy для вычисления процента значения ячейки в целой строке растра. Затем создается новый растр.
import arcpy
import numpy
my_array = arcpy.RasterToNumPyArray('C:/data/inRaster')
my_array_sum = my_array.sum(1)
my_array_sum.shape = (my_array.shape[0], 1)
my_array_perc = (my_array * 1.0) / my_array_sum
new_raster = arcpy.NumPyArrayToRaster(my_array_perc)
new_raster.save("C:/output/fgdb.gdb/PercentRaster")