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

Markus Metz markus.metz.giswork at googlemail.com
Tue Jun 19 09:21:56 PDT 2012


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
>> >
>
>


More information about the grass-user mailing list