[GRASS-user] Fwd: Re: remove small islands from vector areas

Robert Nuske rsn.mailinglists at gmail.com
Fri Jun 21 12:10:11 PDT 2019


 >>>>> I want to remove islands smaller than a certain threshold from my
 >>>>> vector map or if that is not possible all islands.
 >>>>>
 >>>>> I found some trick on an old manual page of v.extract. But this
 >>>>>  does not work anymore. Is there a new trick?

 >>>> Did you have a look at v.clean:
 >>>> https://grass.osgeo.org/grass77/manuals/v.clean.html
 >>>> with tool=rmarea

 >>> as far as I understood, rmarea does remove small areas but not
 >>> islands (holes) within areas. At least i didn't find a way to remove
 >>> islands with v.clean.

 >> Ah, OK. Got that wrong, sorry.
 >>
 >> I don`t think holes have an area (but I may be wrong)....
 >> So you might have to add a centroid first?
 >> https://grass.osgeo.org/grass76/manuals/v.centroids.html


> When you say "remove islands" do you mean to "fill" small holes, and 
> make them part of the surrounding polygon? If so, then this the 
> procedure works:
> 
> First buffer the original polygon by some distance "dist" that is big 
> enough to cover what you consider "small".
> 
> Then buffer again by "-dist".
> 
> The small holes get filled on the first buffer, and the original 
> polygons are restored without those holes with the negative distance by 
> the second buffer.

I guess you hint towards mathematical morphology (dilation+erosion) in 
the vector world.

If there is no way to only treat the islands/holes (which i don't know 
about), it will change the outer boundary as well. Fjord like structures 
will vanish. Neighboring areas might even merge if close enough. And 
since one can not control the buffer style of sharp edges (like in 
postgis, geos), everything will become "rounder".

thanks
   robert


More information about the grass-user mailing list