コメントで気づいたように、特定の側面でパフォーマンスの問題があるため、一般的にRを非統計的な目的で使用することは避けてください(サイクルの操作は一例です)。これは、単一バンドの単一ファイルの再分類のためのPyhton(この記事のおかげ)でのコード例です。ディレクトリからすべてのファイルを取得する方法を知っている場合は、バッチ処理用に簡単に変更できます。ラスタは配列として表されるので、必要に応じて配列メソッドを使用してパフォーマンスを向上させることができます。Pythonでの配列の操作については、Numpyのドキュメントを参照してください。
UPD:最初に投稿したコードは、ピクセルごとの処理に必要なカスタムフィルターの切り捨てられたバージョンでした。しかし、この質問では、Numpyを使用するとパフォーマンスが向上します(コードを参照)。
from osgeo import gdal
import sys
import numpy
gdalData = gdal.Open("path_to_file")
if gdalData is None:
sys.exit("ERROR: can't open raster")
#print "Driver short name", gdalData.GetDriver().ShortName
#print "Driver long name", gdalData.GetDriver().LongName
#print "Raster size", gdalData.RasterXSize, "x", gdalData.RasterYSize
#print "Number of bands", gdalData.RasterCount
#print "Projection", gdalData.GetProjection()
#print "Geo transform", gdalData.GetGeoTransform()
raster = gdalData.ReadAsArray()
xsize = gdalData.RasterXSize
ysize = gdalData.RasterYSize
#print xsize, 'x', ysize
## per pixel processing
#for col in range(xsize):
# for row in range(ysize):
# # if pixel value is 16 - change it to 7
# if raster[row, col] == 16:
# raster[row, col] = 7
#reclassify raster values equal 16 to 7 using Numpy
temp = numpy.equal(raster, 16)
numpy.putmask(raster, temp, 7)
# write results to file (but at first check if we are able to write this format)
format = "GTiff"
driver = gdal.GetDriverByName(format)
metadata = driver.GetMetadata()
if metadata.has_key(gdal.DCAP_CREATE) and metadata[gdal.DCAP_CREATE] == "YES":
pass
else:
print "Driver %s does not support Create() method." % format
sys.exit(1)
if metadata.has_key(gdal.DCAP_CREATECOPY) and metadata[gdal.DCAP_CREATECOPY] == "YES":
pass
else:
print "Driver %s does not support CreateCopy() method." % format
sys.exit(1)
# we already have the raster with exact parameters that we need
# so we use CreateCopy() method instead of Create() to save our time
outData = driver.CreateCopy("path_to_new_file", gdalData, 0)
outData.GetRasterBand(1).WriteArray(raster)