[GRASS-user] g.copy several map layers into one layer without overwriting .....

Glynn Clements glynn at gclements.plus.com
Wed Dec 5 08:54:09 PST 2012

Andranik Hayrapetyan wrote:

> I am trying to make a script which will split a raster map into chunks, do
> the calculation on every chunk separately ( in parallel way ), and gather
> together all the peaces.
> So I am cutting the region into peaces, doing the calculation, restoring
> region to default region and finally get small peaces of raster map in it's
> default location and in default mapset.
> Here is the problem of gathering the peaces together arises...
> If I do it with r.patch, it is taking too long, and the whole meaning of
> parallelism is disappearing.
> So I thought about g.copy .
> Is there a way to copy all the peaces into one layer without overwriting
> the other peaces.


> For example I have chunk_1 and chunk_2, which are the parts of one map.
>  How can I copy them into another map, so that they don't overwrite each
> other ?

For an uncompressed map, you can simply concatenate the cell/fcell
files (you still need to generate the metadata files, e.g. cellhd,
range, etc).

A compressed map starts with an array of row indices, and the rows
typically won't all have the same length (or necessarily be in order
and/or contiguous).

If you know that the individual maps are disjoint, it would be
possible to improve upon r.patch even while using the raster I/O API. 

In the case where the maps are disjoint vertical slices of the same
region, it would be possible to improve significantly upon the raster
I/O API by copying the compressed rows verbatim from the input
cell/fcell files to the output file. That would avoid decompression,
resampling and compression.

Glynn Clements <glynn at gclements.plus.com>

More information about the grass-user mailing list