OSGeo / grass

GRASS GIS - free and open-source geospatial processing engine
https://grass.osgeo.org
Other
820 stars 302 forks source link

[Bug] r.terraflow: fails with grid larger than memory on very small regions #3652

Open landam opened 4 months ago

landam commented 4 months ago

Describe the bug r.terraflow fails with "grid larger than memory" error on very small regions

north:      21
south:      -1.5
west:       -1.5
east:       5
nsres:      0.5
ewres:      0.5
rows:       45
cols:       13
cells:      585

To Reproduce Steps to reproduce the behavior:

  1. Run grass -c EPSG:5514 /tmp/r_terraflow
  2. Run r.unpack input=dem.pack out=dem
  3. Run g.region rast=dem
  4. Run r.terraflow elevation=dem@PERMANENT filled=dem_filled direction=dem_flowdir accumulation=dem_flowacc --o -s
  5. See error
WARNING: Raster map <dem> is of type DCELL_TYPE -- precision may be lost
Reading input data...
 100%
WARNING: grid larger than memory (ignored)
r.terraflow: grid.cpp:33: grid::grid(dimension_type, dimension_type, dimension_type, dimension_type, long int, cclabel_type): Assertion `(size_t)width * height * sizeof(gridElement) < getAvailableMemory()' failed.
Aborted

Expected behavior r.terraflow should run successfully.

System description (please complete the following information):

landam commented 4 months ago

It's due ps->size which is very large (140720409312672), see https://github.com/OSGeo/grass/blob/main/raster/r.terraflow/fill.cpp#L454