[gdal-dev] ReadAsArray

Stefan Ziegler stefan.ziegler.de at gmail.com
Fri Apr 3 07:15:34 PDT 2015


Hi Stefan

You propably want to take a look at rasterio: https://github.com/mapbox/rasterio

Which is also great to work with python and raster data.

Regards
Stefan

Von meinem iPhone gesendet

> Am 03.04.2015 um 16:08 schrieb Stefan Keller <sfkeller at gmail.com>:
> 
> Hi Yuta and Even
> 
> Excuse me when I creep in that discussion - but I'm acutally having
> quite a similar beginners question (I'm rather a vector guy :-) ):
> 
> Yuta: Can you post the code fragment here in order to make benchmarks?
> 
> I have a GeoTIFF (representing heights from SRTM3) in Mercator CRS of
> the size of a country.
> And I have a position (in lat/lon) and a radius (in m) as input.
> Now, I'd like to read out all grid cells within a radius in order to
> calculate the highest point nearby.
> So I'd like to read out a subset of grid cells/pixels in the most efficient way.
> 
> Here's some code snippet:
>  import gdal
>  from gdalconst import *
>  filename = 'my.tif'
>  dataset = gdal.Open(filename, GA_ReadOnly)
>  band = dataset.GetRasterBand(1)
>  scanline = band.ReadRaster( 0, 0, band.XSize, 1,band.XSize, 1, band.DataType)
>  ...
> 
> Following questions arise:
> 1. Are there alternatives reading out the sub-matrix
> 2. How to calculate the grid cell position in Mercator and lat/lon?
> 
> Yours, Stefan
> 
> 
> 2015-04-03 13:16 GMT+02:00 Yuta Sato <yutaxsato at gmail.com>:
>> Thank you very much "Even Rouault" for making me understood.
>> 
>> On Fri, Apr 3, 2015 at 8:13 PM, Even Rouault <even.rouault at spatialys.com>
>> wrote:
>>> 
>>> Le vendredi 03 avril 2015 12:46:48, Yuta Sato a écrit :
>>>> Dear Even Rouault:
>>>> 
>>>> Thank you very much.
>>>> What about setting these parameters "used with .ReadAsArray()", though I
>>>> did not know their meanings?
>>>> buf_xsize=None, buf_ysize=None, buf_obj=None
>>> 
>>> (Please keep the list CC'ed)
>>> 
>>> buf_xsize and buf_ysize are the equivalents of nBufXSize and nBufYSize in
>>> GDALRasterBand::RasterIO()
>>> http://gdal.org/classGDALRasterBand.html#a75d4af97b3436a4e79d9759eedf89af4
>>> i.e. to do downsampling or upsampling of original data.
>>> 
>>> buf_obj can be used to "recycle" an existing numpy array of the
>>> appropriate
>>> size instead of allocating a new one.
>>> 
>>>> 
>>>> 
>>>> On Fri, Apr 3, 2015 at 7:43 PM, Even Rouault
>>>> <even.rouault at spatialys.com>
>>>> 
>>>> wrote:
>>>>> Le vendredi 03 avril 2015 12:22:00, Yuta Sato a écrit :
>>>>>> Dear Respected GDAL Developers and Users:
>>>>>> 
>>>>>> What parameters should I set beforehand in order to accelerate the
>>>>> 
>>>>> reading
>>>>> 
>>>>>> of a GeoTiff file?
>>>>>> 
>>>>>> I am using as follows:
>>>>>> 
>>>>>> data =
>>>>>> src_dataset.GetRasterBand(1).ReadAsArray(xoff,yoff,xsize,ysize)
>>>>>> 
>>>>>> Does setting the following parameters accelerate?
>>>>>> 
>>>>>> GDAL_CACHEMAX, GDAL_SWATH_SIZE
>>>>>> 
>>>>>> I'm using gdal python.
>>>>> 
>>>>> Yuta,
>>>>> 
>>>>> Increasing GDAL_CACHEMAX might accelerate in case of repeated reads on
>>>>> windows
>>>>> that are identical or overlapping already read windows. Or if the way
>>>>> you
>>>>> read
>>>>> the raster doesn't follow its block shape : for example if the raster
>>>>> is
>>>>> organized by lines/strips and you read by square blocks, or the
>>>>> reverse
>>>>> situation.
>>>>> 
>>>>> GDAL_SWATH_SIZE is only used by CreateCopy().
>>>>> 
>>>>> Even
>>>>> 
>>>>> --
>>>>> Spatialys - Geospatial professional services
>>>>> http://www.spatialys.com
>>> 
>>> --
>>> Spatialys - Geospatial professional services
>>> http://www.spatialys.com
>> 
>> 
>> 
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev


More information about the gdal-dev mailing list