[GRASS-user] calculate mode value on moving window (with mapalgebra) with null value cells

G. Allegri giohappy at gmail.com
Wed Jun 20 05:46:27 PDT 2012


>
> g.region -p rast=DEM
> r.neighbors in=DEM out=DEM_filt method=mode
> r.patch in=DEM,DEM_filt out=DEM_patched
>

Right Markus ;)
This is the simplest approach.


> BTW, if the border problem arouse from reprojecting with a method
> other than nearest, you can use in trunk as resampling method one of
> bilinear_f,cubic_f,lanczos_f with r.proj to avoid the border effect.
>

I didn't know about these "fallbacks" methods in trunk. Very good.
I was thinking about that since a long time, because it's a featue I find
very useful in ArcGIS. GRASS gives a plus: the option to use fallbacks or
not ;)

It would be useful to have them in r.resamp.interp too. This is the command
that "eats" my border.

giovanni



>
> Markus M
>
> >
> > giovanni
> >
> > 2012/6/19 Markus Metz <markus.metz.giswork at googlemail.com>
> >>
> >> On Tue, Jun 19, 2012 at 6:15 PM, G. Allegri <giohappy at gmail.com> wrote:
> >> >> AFAICT, r.neighbors ignores NULL values and assigns the new value
> from
> >> >> the surrounding non-NULL values. You could then patch your original
> >> >> map with the output of r.neighbors.
> >> >
> >> >
> >> > I have considered r.neighbors but I need to apply the filter only to
> >> > some
> >> > specific categories (border cells in my case). A MASK wouldn't solve
> my
> >> > problem, because it would mask the neighbors...
> >>
> >> You could replace 9999 (according to your first post the category of
> >> border cells) with NULL, then run r.neighbors, without a MASK?
> >>
> >> Markus M
> >>
> >> >
> >> > giovanni
> >> >
> >> >
> >> >>
> >> >>
> >> >> HTH,
> >> >>
> >> >> Markus M
> >> >>
> >> >> >
> >> >> > giovanni
> >> >> >
> >> >> >
> >> >> > 2012/6/19 Marcello Gorini <gorini at gmail.com>
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> G. Allegri wrote:
> >> >> >>
> >> >> >>> I need to assign values to a the cells on the "border" of a
> raster.
> >> >> >>> The
> >> >> >>> inside and the outside are distinguished by having or not having
> >> >> >>> null
> >> >> >>> values
> >> >> >>> assigned.
> >> >> >>> I also need to keep the other cell values (internals) untouched.
> >> >> >>>
> >> >> >>
> >> >> >>  Hey,
> >> >> >>
> >> >> >> Check out r.grow. I am pretty sure you can modify the example
> given
> >> >> >> in
> >> >> >> the
> >> >> >> manual to find the borders of your raster. Something like:
> >> >> >>
> >> >> >> # creates an inverted raster from your raster
> >> >> >> > r.mapcalc "raster_inverted=if(isnull(raster,1,null())"
> >> >> >> # grow this inverted raster by one cell
> >> >> >> > r.grow in=raster_inverted out=raster_inverted_grown
> >> >> >> # now both rasters overlap at the border, so you can do whatever
> you
> >> >> >> want
> >> >> >> with it, for instance, extract it
> >> >> >> > r.mapcalc "border=if(raster_inverted_grown==1 &&
> >> >> >> > isnull(raster)==0,raster,null())"
> >> >> >>
> >> >> >> Hope it helps.
> >> >> >>
> >> >> >> Cheers,
> >> >> >> Marcello.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >
> >> >> >
> >> >> > _______________________________________________
> >> >> > grass-user mailing list
> >> >> > grass-user at lists.osgeo.org
> >> >> > http://lists.osgeo.org/mailman/listinfo/grass-user
> >> >> >
> >> >
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20120620/b72581f4/attachment.html>


More information about the grass-user mailing list