[Grass-de] Raster-rechnen

Martin Schweizer schweizermartin at students.unibe.ch
Mo Okt 5 21:35:57 CEST 2009


Hallo Markus

Markus Neteler schrieb:
> Hallo Martin,
>
> 2009/10/4 Martin Schweizer <schweizermartin at students.unibe.ch>:
>   
>> Hallo Markus
>>
>> Vielen Dank für diese Hilfe. Wenn ich das richtig verstehe kann man
>> innerhalb der Klammer von eval() sowohl Variablen definieren, wie auch
>> Operationen ausführen. Das wird aber irgendwie hier
>> (http://grass.itc.it/grass64/manuals/html64_user/r.mapcalc.html) ganz
>> anders dargestellt:
>>
>> "eval([x,y,...,]z)       evaluate values of listed expr, pass results to z"
>>     
>
> ...eigentlich nicht?
>
> eval(input1, input2, ..., output)
>
>   
>> Nun, ich habe nun mal ein "eval()" in mein Script eingebaut, leider
>> funktioniert das ganze noch immer nicht. Ich glaube ein "mapcalc-Profi"
>> sieht das Problem wahrscheinlich sofort, aber ich sehe es einfach nicht
>> (und ich habe doch einiges herumprobiert... ;-) ). Hier das Script:
>>
>> r.mapcalc
>> eval(y=0, test=(if(Siedlungsflaeche,\e
>>     
>
> \e sollte \ sein (ohne Leerzeichen dahinter)
>
>   
>> (if((Eignung42[-1,0])&&(test<5),($y+Eignung42)&&6,test)||\e
>>     
>
> Du sagt vorne
> test=
> aber benutzt test auch in der Formel - wie soll das gehen?
>   
Nun, die Karte "test", welche erstellt wird wird halt auch wieder in der
Formel verwendet. Soll heissen: Wenn auf der Karte "test" die soeben
erstellt wird, die betreffende Zelle bereits den Wert 5 besitzt, dann
bitte weiter zur nächsten Zelle (Dann ist die if-Bedingung nicht
erfüllt....).
Geht das aus irgend einem Grund nicht?
> Gruesse
> Markus
>
>   
Vielen Dank und viele Grüsse
Martin