I am using the following script in ArcGIS 10.3 to calculate Quadrant (in the format angle/NE/SE/SW/NW) from azimuth.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
def quadrant(NorthAzimuth):
if ((NorthAzimuth>=0) & (NorthAzimuth<90)):
quad = 'N '+str(NorthAzimuth)+' E'
elif ((NorthAzimuth>=90) & (NorthAzimuth<180)):
quad = 'S '+str(180-NorthAzimuth)+' E'
elif ((NorthAzimuth>=180) & (NorthAzimuth<270)):
quad = 'S '+str(NorthAzimuth-180)+' W'
else:
quad = 'N '+str(360-NorthAzimuth)+' W'
return quad
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
The box Show Codeblock is cheked. This script is copied in the box Pre-logic Script Code. In the box below - "Quadrant = " is typed quadrant (!NorthAzimuth!).
My polyline shape file contains the followings fields: Start_X (double), Start_Y (double), End_X (double), End_Y (Double), Compriment (double) - polyline lenght, and NorthAzimu (double) - azimuth in degrees.
I already replace the term NorthAzimuth of script with NorthAzimu, but without sucess.
The script always returns an error message.
Please, where is the error?
N is already a string
You only use 'str' to convert numbers to text
Answered?
Hello Dan
I am using the last code you sent:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
def Quadrant(NorthAzimu):
if ((NorthAzimu >= 0) & (NorthAzimu < 90)):
Quad = str(NorthAzimu) + 'NE'
elif ((NorthAzimu >= 90) & (NorthAzimu < 180)):
Quad = str(180 - NorthAzimu) + 'SE'
elif ((NorthAzimu >= 180) & (NorthAzimu < 270)):
Quad = str(NorthAzimu - 180) + ' SW'
else:
Quad = str(360 - NorthAzimu) + ' NW'
return Quad
>>>>>>>>>>>>>>>>>>>>>>
In this other code (with slight modification of your code) there is a small error:
def Quadrant(NorthAzimu):
if (NorthAzimu = 0):
Quad = 'N'
elif (NorthAzimu = 90):
Quad = 'E'
elif (NorthAzimu = 180):
Quad = 'S'
elif (NorthAzimu = 270):
Quad = 'W'
elif (NorthAzimu = 360):
Quad = 'N'
elif ((NorthAzimu > 0) & (NorthAzimu < 90)):
Quad = str(NorthAzimu) + 'NE'
elif ((NorthAzimu > 90) & (NorthAzimu < 180)):
Quad = str(180 - NorthAzimu) + 'SE'
elif ((NorthAzimu > 180) & (NorthAzimu < 270)):
Quad = str(NorthAzimu - 180) + ' SW'
else:
Quad = str(360 - NorthAzimu) + ' NW'
return Quad
Thank You
Your code lacks formatting...
again... Code formatting ... the Community Version - Esri Community
and in python, condition checking for equality, like
NorthAzimu = 0 # -- is wrong
NorthAzimu == 0 # --this is right