Python ArcGIS 10.1 中的标注表达式
Python label expression in ArcGIS 10.1
ArcMap 10.1,Windows7 64 位专业版。
我无法正确标注氯化物值。问题出在 "if [Chloride] > 0:" 表达式上。标签呈现 "Chloride" 中的所有值。当 Chloride 字段的值为 -99 时,标签表达式应呈现 'Cl_txt' 字段而不是 'Chloride' 字段。
"Chloride" 具有 Long 数据类型。 "Cl_text" 是文本。我试过了"if long([Chloride]) > 0:"。使用 long,整个标签不会呈现氯化物值 > 0,但 -99 值呈现 Cl_txt 值 "NR"。我还尝试使用 float([Chloride]) 进行转换并获得与使用 float 相同的结果。
奇怪的是 DTW 渲染得很好。 DTW_ft 是 float 数据类型。
def FindLabel( [gisID], [DTW_ft], [dtw_txt], [feat_date], [aka_name], [Chloride], [Cl_txt]):
L = "MISC-" + str( [gisID] ) + '\n'
L += "DTW: "
if float([DTW_ft]) > 0:
L += [DTW_ft] + " ft"
else:
L += [dtw_txt]
L += '\n'
L += "Cl: "
if [Chloride] > 0:
L += [Chloride]
else:
L += [Cl_txt]
L += '\n'
L += [feat_date]
return L
简单地说,不要用 [Chloride]
标记所有 -99
值,而是用 [Cl_txt]
尝试下面-
我假设 [Chloride]
是 long
并且 [Cl_txt]
是 string
数据类型。
def FindLabel([Chloride], [Cl_txt]):
if long([Chloride])==-99:
L= [Cl_txt]
else:
L = str([Chloride])
return L
见图-
ArcMap 10.1,Windows7 64 位专业版。
我无法正确标注氯化物值。问题出在 "if [Chloride] > 0:" 表达式上。标签呈现 "Chloride" 中的所有值。当 Chloride 字段的值为 -99 时,标签表达式应呈现 'Cl_txt' 字段而不是 'Chloride' 字段。
"Chloride" 具有 Long 数据类型。 "Cl_text" 是文本。我试过了"if long([Chloride]) > 0:"。使用 long,整个标签不会呈现氯化物值 > 0,但 -99 值呈现 Cl_txt 值 "NR"。我还尝试使用 float([Chloride]) 进行转换并获得与使用 float 相同的结果。
奇怪的是 DTW 渲染得很好。 DTW_ft 是 float 数据类型。
def FindLabel( [gisID], [DTW_ft], [dtw_txt], [feat_date], [aka_name], [Chloride], [Cl_txt]):
L = "MISC-" + str( [gisID] ) + '\n'
L += "DTW: "
if float([DTW_ft]) > 0:
L += [DTW_ft] + " ft"
else:
L += [dtw_txt]
L += '\n'
L += "Cl: "
if [Chloride] > 0:
L += [Chloride]
else:
L += [Cl_txt]
L += '\n'
L += [feat_date]
return L
简单地说,不要用 [Chloride]
标记所有 -99
值,而是用 [Cl_txt]
尝试下面-
我假设 [Chloride]
是 long
并且 [Cl_txt]
是 string
数据类型。
def FindLabel([Chloride], [Cl_txt]):
if long([Chloride])==-99:
L= [Cl_txt]
else:
L = str([Chloride])
return L
见图-