Več

Ustvarjanje rastrskega smeri vetra z uporabo njegovih komponent U in V v namizju ArcGIS?


Imam dve rastrski plasti, ki predstavljata komponente U in V vektorskega vetra. Raster velikosti bi lahko ustvaril z uporabo(u*u+v*v)v algebri zemljevidov v ArcGIS.

Zdaj moram ustvariti smerni raster z naslednjo funkcijo:

če (u> 0 && v> 0, (atan (u/v) + 180), če (u <0 && v <0, (atan (u/v) + 0), če (u> 0 && v < 0, (atan (u/v) + 360), če (u <0 && v> 0, (atan (u/v) +270)))))

ne vem pa, kako naj to uporabim v ArcGIS -u. Prosim za kakšno pomoč?


Uporabite ATan2, kot je v

ATan2 (-v, -u) * (180 / 3,14159265)

Upoštevajte, da

  1. Predpostavlja se, da je vektor smeri vetra (u, v).

  2. Ker se zdi, da konstrukcija v vprašanju izračunava vzvratno smer, se smer obrne z zanikanjem obeh komponent.

  3. Druga komponenta (-u, -v) je prvi argument zaATan2(stran za pomoč ne razlaga te ključne točke).

  4. Rezultat je v radianih, ki se z množenjem pretvori v stopinje.


Ker bo ta rezultat v razponu (-180, 180] in zdi se, da vprašanje želi vrednost v območju [0, 360), lahko za spreminjanje obsega uporabite funkcijo modula. Na žalost funkcija Mod v ArcGIS deluje samo na cela števila. Za popolno natančnost moramo modul sami implementirati z alternativo, kot je Int. Poenostavljen par formul je

x = ATan2 (-v, -u) / (2 * 3,14159265) + 1 (x -Int (x)) * 360

Tukaj,xpredstavlja ležaj (-u, -v) kot del celotnega kroga. Dodatek 1 zagotavlja, da bo ulomek med 1/2 in 3/2. Izrazx - Int (x)izvleče del tega dela števila.

Na primer, pri u = -1 in v = 1 (smer, usmerjena proti severozahodu) ugotovimo, da je ATan2 (-v, -u) = ATan2 (-1, 1) = -0,7853982. Če delite z 2*Pi (= 2*3,14159265 v eni natančnosti), dobite -0,125. Dodatek 1 poveča to na 0,875 (poti okoli kroga). Operacija odštevanja njegovega celega dela ga pusti nespremenjenega pri 0,875, kar je v stopinjah 0,875 * 360 = 315. To je smer v nasprotni smeri urinega kazalca glede na vzhod. Za pridobitev ležaja v smeri urinega kazalca glede na sever preprosto zamenjati vlogeuinvv formuli.


Ker dodajanje ali odštevanje polkroga kateremu koli ležaju spremeni smer, je enakovreden, vendar učinkovitejši izraz

(ATan2 (v, u) / (2 * 3,14159265) + 0,5) * 360

Aditivna konstanta 0,5 nastane kot razlika med 1 in 0,5 (polkrog). Ko berete to formulo, pomislite takole:

ATan2 ugotovi smer (u, v) (prekATan2 (v, u)) v nasprotni smeri urinega kazalca glede na vzhod. To se pretvori v del celotnega kroga (/ (2*3.14159264)), ki se nato zavrti s polkrogom, da se obrne in mimogrede naredi rezultat nenegativen (+ 0.5). Končno se vse pretvori v stopinje (* 360).


Namestoče (), uporabaCon ()(pogojno) v rastrskem kalkulatorju.

Logična struktura if/else je v bistvu enaka, vendar je skladnja drugačna (tudi enojna&za združevanje pogojev):

Con (u> 0 & v> 0, (atan (u/v) + 180), Con (u <0 & v <0, (atan (u/v) + 0), Con (u> 0 & v < 0, (atan (u/v) + 360), Con (u <0 & v> 0, (atan (u/v) + 270)))))


Poglej si posnetek: BUILD A NANO AQUASCAPE - STARTING GUIDE FOR BEGINNERS (September 2021).