Mai mult

Eroare de sintaxă a calculatorului de câmp

Eroare de sintaxă a calculatorului de câmp


Încerc să calculez direcția pe care mi-o oferă funcția „Generați masa apropiată” în direcții reale, N, NW etc. Azimutul ar fi și un început. Am încercat acest script în calculatorul de teren, dar nu rulează.

Acesta a fost originalul pe care l-am încercat:

if ([Direcție]> 0, if ([Direcție] <22,5, "W", if ([Direcție] <67,5, "SW", if ([Direcție] <112,5, "S", if ([Direcție] < 157.5, "SE", if ([Direcție] <180, "E", "")))))), if ([Direcție]> - 22.5, "W", if ([Direcție]> - 67.5, "NW ", if ([Direcție]> - 112.5," N ", if ([Direcție]> - 157.5," NE ", if ([Direcție]> - 180," E "," ")))))))

Am încercat cu și fără "apoi ieșire =" și "Altfel, ieșire = 0". Folosesc ArcGIS 10, am încercat cu python și vb bifat.


Incearca asta. A stabilit Analizator la VBScript și bifați Afișați Codeblock opțiune. Adăugați acest lucru la Cod script pre-logică camp.

Reduceți ieșirea ca șir Dacă [Direcție]> -22,5 Și [Direcție] <22,5 Apoi ieșire = "W" ElseIf [Direcție]> = 22,5 Și [Direcție] <67,5 Apoi ieșire = "SW" ElseIf [Direcție]> = 67,5 Și [Direcție] <112,5 Apoi ieșire = "S" ElseIf [Direcție]> = 112,5 Și [Direcție] <157,5 Apoi ieșire = "SE" ElseIf [Direcție]> = 157,5 Și [Direcție] <= 180 Apoi ieșire = "E" ElseIf [Direcție] <= -22,5 Și [Direcție]> -67,5 Apoi ieșire = "NW" ElseIf [Direcție] <= -67,5 Și [Direcție]> -112,5 Apoi ieșire = "N" ElseIf [Direcție] <= -112,5 Și [Direcție]> -157,5 Apoi ieșire = "NE" ElseIf [Direcție] <= -157,5 Și [Direcție]> = -180 Apoi ieșire = "E" Altfel 'Eroare ieșire = "?" End If

Adăugați această singură linie la [nume de câmp] = camp.

ieșire

Notă: Nu am încercat acest lucru în ArcMap. Dacă nu funcționează, încercați să transformați toate instanțele „ELSEIF” în „ELSE IF”.


Kevin m-a învins, dar iată cum s-ar face în Python. De asemenea, am curățat puțin logica, astfel încât să aveți doar 8 verificări, mai degrabă decât 10. Încercați să verificați butonul Python și să faceți acest lucru ca Codeblock:

direcția def (x): ieșire = "if ((x> = 157,5 și x <= 180) sau (x> = -180 și x <-157,5)): ieșire =" E "elif (x> = -157,5 și x <-112,5): output = 'NE' elif (x> = -112,5 și x <-67,5): output = 'N' elif (x> = -67,5 și x <-22,5): output = 'NW' elif (x> = -22,5 și x <22,5): ieșire = 'W' elif (x> = 22,5 și x <67,5): ieșire = 'SW' elif (x> = 67,5 și x <112,5): ieșire = 'S 'elif (x> = 112,5 și x <157,5): ieșire = ieșire de retur' SE '

și asta ca calcul efectiv:

direcție (! Direcție!)

În python:

["E", "NE", "N", "NW", "W", "SW", "S", "SE", "E"] [int (round ((! Direction! /45.0) + 4))]

Priveste filmarea: eroare pc