1

I need to calculate in gdal_calc the following python script.

if (A == 0 and B == 0):
        wd = 0.0
    else:
        wd = np.arctan2(A,B)

I have tried

if(A = 0 && B = 0,(0.0), else,(arctan2(A,B)))

But the result isn't correct.

Ali
  • 4,055
  • 1
  • 17
  • 29

2 Answers2

0

Nupmpy's arctan2 function already returns 0.0 when A==0 and B==0 so you don't need your if/else statement. Additionally, this function takes positional arguments of the form arctan2(y,x) so be sure to check this aligns with your intended calculation.

Based on your specified parameters, try --calc="arctan2(A,B)". If you can update your question with your actual gdal_calc command it will help with any further troubleshooting.

For more information on syntax see the gdal_calc documentation and this answer to a similar question.

Ali
  • 4,055
  • 1
  • 17
  • 29
  • Thanks, the returned values are between ]-180,180] but I need then between [0,360[. For this the expression could be like -- calc="A+2pi(less(A,0))"? – Julio Almeida Jul 08 '19 at 10:37
  • 1
    Finally I've figured it out. The expression is (A+360)*(A<0). I only need now is to combine the two. Thanks – Julio Almeida Jul 08 '19 at 10:56
0

The correct syntax formula for what I intended to do is:

((degrees (arctan2 (A,B)))+360)*((degrees (arctan2 (A,B)))<0)+(degrees (arctan2 (A,B)))*((degrees (arctan2 (A,B)))>=0)

This formula returns the wind direction in degrees [0, 360[ from U and V wind components.