For a script I am working on, I am looking for a way to select a X number of raster cells and their values into a numpy array. I can create a layer with r.random, and read in that layer into a numpy array, but I rather avoid having to read in the whole raster layer. I can also from within the script run r.random to generate a raster layer, r.stats to export the resulting raster layer as a text file (with n flag), and than read in the text file in Python. But I wonder if there is not a more direct way to accomplish this..
For a script I am working on, I am looking for a way to select a X number of raster cells and their values into a numpy array. I can create a layer with r.random, and read in that layer into a numpy array, but I rather avoid having to read in the whole raster layer. I can also from within the script run r.random to generate a raster layer, r.stats to export the resulting raster layer as a text file (with n flag), and than read in the text file in Python. But I wonder if there is not a more direct way to accomplish this…
For a script I am working on, I am looking for a way to select a X number
of raster cells and their values into a numpy array. I can create a layer
with r.random, and read in that layer into a numpy array, but I rather
avoid having to read in the whole raster layer. I can also from within the
script run r.random to generate a raster layer, r.stats to export the
resulting raster layer as a text file (with n flag), and than read in the
text file in Python. But I wonder if there is not a more direct way to
accomplish this…
You can read col and row from GRASS Region and use random python function
to calculate random x and y and later query a pygrass raster object
Thanks. And what if I have a mask or null values in the target raster.
If you need a fixed number of points, you might do a while loop that randomly generate coordinates then add the point only if the array is not null at those coordinates.
For a script I am working on, I am looking for a way to select a X number
of raster cells and their values into a numpy array. I can create a layer
with r.random, and read in that layer into a numpy array, but I rather
avoid having to read in the whole raster layer. I can also from within the
script run r.random to generate a raster layer, r.stats to export the
resulting raster layer as a text file (with n flag), and than read in the
text file in Python. But I wonder if there is not a more direct way to
accomplish this…
You can read col and row from GRASS Region and use random python function
to calculate random x and y and later query a pygrass raster object
Thanks. And what if I have a mask or null values in the target raster.
Thanks, I’ll give that a try. Will also see how this compares with using r.random/r.what in terms of speed.
···
On 25-03-17 23:11, Laurent C. wrote:
Hello,
If you need a fixed number of points, you might do a while loop that randomly generate coordinates then add the point only if the array is not null at those coordinates.
For a script I am working on, I am looking for a way to select a X number
of raster cells and their values into a numpy array. I can create a layer
with r.random, and read in that layer into a numpy array, but I rather
avoid having to read in the whole raster layer. I can also from within the
script run r.random to generate a raster layer, r.stats to export the
resulting raster layer as a text file (with n flag), and than read in the
text file in Python. But I wonder if there is not a more direct way to
accomplish this…
You can read col and row from GRASS Region and use random python function
to calculate random x and y and later query a pygrass raster object
Thanks. And what if I have a mask or null values in the target raster.