Преобразование TIF Raster в NumPy Array приводит к MemoryError в Python27 - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь преобразовать растровое изображение 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.'
...