Я пытаюсь преобразовать растровое изображение ArcGIS в массив NumPy, чтобы его можно было использовать для анализа в NetworkX. Мой код Python работает для некоторых растров, но большие растровые изображения (примерно любой растр> 7000 строк / столбцов) не будут работать с ошибкой Python, указывающей «Ошибка памяти». Есть ли хорошее решение, чтобы обойти эту ошибку? Обратите внимание, что я должен использовать Python 27, потому что модуль ArcPy использует эту версию. Заранее спасибо за любую помощь!
Вот мой код:
rasters = arcpy.ListRasters(wild_card="ClipRast_FID{0}.tif".format(FID_Unique))
for raster in rasters:
print 'raster being converted to Numpy Array: FID{0}'.format(FID_Unique)
inRas = arcpy.Raster(raster)
lowerLeft = arcpy.Point(X=inRas.extent.XMin, Y=inRas.extent.YMin)
print 'Lower left XY values are {0}'.format(lowerLeft)
cellSize = inRas.meanCellWidth
print 'cell size is {0}'.format(cellSize)
column = arcpy.GetRasterProperties_management(in_raster=inRas, property_type="COLUMNCOUNT")
column = column.getOutput(0)
column = int(column)
print 'number of columns are {0}'.format(column)
row = arcpy.GetRasterProperties_management(in_raster=inRas, property_type="ROWCOUNT")
row = row.getOutput(0)
row = int(row)
print 'number of rows are {0}'.format(row)
no_data_value = -9999
array = arcpy.RasterToNumPyArray(inRas, lower_left_corner=lowerLeft, ncols=column, nrows=row,
nodata_to_value=no_data_value)
np.savetxt(Output2 + 'Numpy_Raster_Array_FID' + str(FID_Unique) + '.asc', array, fmt= "%1.3g")
print 'raster conversion successful.'