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

G. Allegri giohappy at gmail.com
Thu Jun 21 02:31:22 PDT 2012


FYI, Glynn has answered me right now on grass-dev saying that in trunk
nmax, nmin, nmode, etc. are available, which discard NULL values.

giovanni

2012/6/20 G. Allegri <giohappy at gmail.com>

> 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/20120621/6146fc5b/attachment.html>


More information about the grass-user mailing list