[GRASS-dev] Script for converting degrees clockwise from North to GRASS convention

Moritz Lennert mlennert at club.worldonline.be
Wed Jan 23 03:21:40 PST 2013


On 22/01/13 17:45, Margherita Di Leo wrote:
> Hi,
>
> I figured out that sometimes it would be useful to have a script for
> converting a direction map which uses the convention degrees clockwise
> from North, into the GRASS convention, which is as you well know degrees
> from East counterclockwise [1]. The aim is to deal with wind direction
> maps for example, which often use the above mentioned convention [2],
> but also some other software.
> I wrote a short tentative of such conversion tool in the form of a grass
> addon for myself, enclosed. I would like to know:
>
> 1) if would be of interest for anyone here, i.e. worth to be published
> in the addon repo;

+1, once it is correct.

> 2) if you have any idea how to make the several time nested r.mapcalc
> expression less awful :-)

For me it looks ok as is (with below corrections). Or maybe you could 
simply use r.recode with rules such as:

0:89.999:90:0.999
90:360:360:90

(probably need a better way to treat the special role of '0' in GRASS).

Give it a try.

>
> If we call WIND the direction map which uses the convention degrees
> clockwise from North, and GRASS the output map, the rule that I applied is:
>
> IF 0 <= WIND < 270     ;     GRASS = 270 - WIND
> IF WIND = 270            ;      GRASS = 360
> IF 270 < WIND < 360   ;      GRASS 630 - 0
> IF WIND = null             ;     GRASS = 0
> NULL otherwise (this latter I have added to check if there is any error.

This is not correct.

WIND = 0 means North. North in GRASS convention is 90, but 270 - 0 <> 90.

Same with WIND = 270 which is West IIUC, so this should be 180 in GRASS 
convention, not 360.

This should work I think:

IF 0 <= WIND < 90 ; GRASS = 90-WIND
IF 90 <= WIND <= 360 ; GRASS = 450 - WIND

Moritz



More information about the grass-dev mailing list