Opened 12 years ago

Closed 11 years ago

#1865 closed defect (fixed)

WinGrass v.buffer memory issue

Reported by: feppink Owned by: grass-dev@…
Priority: critical Milestone: 6.4.4
Component: Vector Version: 6.4.3 RCs
Keywords: v.buffer Cc:
CPU: x86-64 Platform: MSWindows 7

Description

System: Windows 7 64-bit Home Basic, GRASS 6.4.3-RC2, core i7 3612QM, 8Gb RAM.

I have a vector map with a 30,131 primitives and well over 700,000 vertices. I want to create buffers of 50,000 map units (meters) around the centroids of the primitives. If I do this, memory usage of v.buffer steadily creeps up and at some point GRASS runs out of memory and terminates v.buffer.

Change History (6)

comment:1 by feppink, 12 years ago

Additional info: I specify no other options for v.buffer apart from the units for the major axis. Memory issue starts occurring during "Breaking boundaries".

in reply to:  1 comment:2 by mmetz, 12 years ago

Replying to feppink:

Additional info: I specify no other options for v.buffer apart from the units for the major axis. Memory issue starts occurring during "Breaking boundaries".

If possible, try GRASS 7, because v.buffer only works correctly in GRASS 7 and vector memory consumption is much less.

Can you make the input vector map available and post the exact command used to calculate buffers?

Markus M

comment:3 by neteler, 11 years ago

Keywords: v.buffer added
Milestone: 6.4.36.4.4
Priority: normalblocker

See also #1464 (v.buffer needs to be compiled with GEOS support).

See also #1343

See also #2223

in reply to:  description comment:4 by neteler, 11 years ago

Replying to feppink:

System: Windows 7 64-bit Home Basic, GRASS 6.4.3-RC2, core i7 3612QM, 8Gb RAM.

Here Linux, GRASS 6.4.svn (r59970), 8 GB RAM.

I have a vector map with a 30,131 primitives and well over 700,000 vertices. I want to create buffers of 50,000 map units (meters) around the centroids of the primitives. If I do this, memory usage of v.buffer steadily creeps up and at some point GRASS runs out of memory and terminates v.buffer.

I have made a test with the current v.buffer (which itself now uses GEOS), no (more?) memory issues:

# buffer polygons
GRASS 6.4.4svn (eu_laea):~ > v.buffer clc2000_E45N25 out=buf distance=100
 100%
 100%
 100%
Breaking polygons...
 100%
 100%
Removing duplicates...
 100%
Breaking boundaries...
date%
 100%
Removing duplicates...
 100%
Cleaning boundaries at nodes
 100%
Building topology for vector map <buf>...
Building areas...
 100%
200514 areas built
16651 isles built
Number of nodes: 239757
Number of primitives: 641559
Number of points: 0
Number of lines: 0
Number of boundaries: 641559
Number of centroids: 0
Number of areas: 200514
Number of isles: 16651
Number of areas without centroid: 200514
Removing dangles...
 100%
Removing bridges...
 100%
Attaching islands...
Building topology for vector map <buf>...
Attaching islands...
 100%
Number of nodes: 239757
Number of primitives: 641559
Number of points: 0
Number of lines: 0
Number of boundaries: 641559
Number of centroids: 0
Number of areas: 200514
Number of isles: 16651
Number of areas without centroid: 200514
Calculating centroids for all areas...
 100%
Generating list of boundaries to be deleted...
 100%
Deleting boundaries...
 100%
Calculating centroids for areas...
 100%
Building topology for vector map <buf>...
Registering primitives...
1479 primitives registered
10551 vertices registered
Building areas...
 100%
4 areas built
4 isles built
Attaching islands...
 100%
Attaching centroids...
 100%
Number of nodes: 1479
Number of primitives: 1479
Number of points: 0
Number of lines: 0
Number of boundaries: 1478
Number of centroids: 1
Number of areas: 4
Number of isles: 4
Number of areas without centroid: 3

And

# buffer centroids
GRASS 6.4.4svn (eu_laea):~ > v.buffer test out=buf2 distance=50 type=centroid 
Buffering features...
 100%
Cleaning buffers...
Building parts of topology...
[...]
Attaching centroids...
 100%
Number of nodes: 39266
Number of primitives: 39266
Number of points: 0
Number of lines: 0
Number of boundaries: 19674
Number of centroids: 19592
Number of areas: 19592
Number of isles: 19592

Please try again.

comment:5 by neteler, 11 years ago

Priority: blockercritical

comment:6 by neteler, 11 years ago

Resolution: fixed
Status: newclosed

No response on original issue for > 1 year, v.buffer is meanwhile based on GEOS.

Closing, feel free to reopen if needed.

Note: See TracTickets for help on using tickets.