RasterToNumPyArray を用いたラスター セル値の計算

import arcpy
import numpy

#ジオプロセシングの上書きを許可
arcpy.env.overwriteOutput = True

#セル値計算用関数を定義
def f(x):
    return round(x,3)

#ラスタ データセットのパス
in_raster =r'C:\Users\Administrator\Documents\ArcGIS\Default.gdb\rastercalc1'

out_raster = r'C:\Users\Administrator\Documents\ArcGIS\Default.gdb\rastercalc2'

#ラスタ データセットの取得
raster = arcpy.Raster(in_raster);

#NumPyArray に変換
raster_array = arcpy.RasterToNumPyArray(raster)

#配列の全要素に対してユーザ定義関数を適用
#http://kaiseki-web.lhd.nifs.ac.jp/documents/Python/array.htm
vf = numpy.vectorize(f)
new_raster_array = vf(raster_array)

#10.2だと numpy.array は 64bit float 型なのでラスタ データセットのタイプもそれに準拠する。dtype を変更することでラスタ データセットのピクセルタイプが変更できる。

new_raster_array.dtype = "float32"

#NumPyArray からラスタ データセットを作成
new_raster = arcpy.NumPyArrayToRaster(new_raster_array,raster.extent.lowerLeft,raster.meanCellWidth,raster.meanCellHeight,raster.noDataValue)

#ファイルに保存
new_raster.save(out_raster)

#空間参照の定義
arcpy.DefineProjection_management(new_raster,raster.spatialReference)

#メモリ解放
del raster
del raster_array
del new_raster_array

print "Done!"