在 Esri Arcmap 中更改文本元素的值时出现问题
Problems changing value of a text element in Esri Arcmap
我有一个用于打印报告的 mxd 文件,它有一个地图和文本元素,我正在尝试更改文本元素的值,但我做不到。这是代码:
import arcpy
import os
import datetime
def Actualiza_Texto(nombre, valor):
elementos = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")
for elem in elementos:
if elem.name == nombre:
if type(valor) == str:
elem.text = unicode(valor, "utf-8", errors="ignore")
else:
elem.text = unicode(valor)
Web_Map_as_JSON = arcpy.GetParameterAsText(0)
tRazonSocial = arcpy.GetParameterAsText(1)
ahora = datetime.datetime.now()
output = 'Calculo_{}_{}_{}_{}_{}_{}.{}'.format(ahora.year,ahora.month,ahora.day, ahora.hour,ahora.minute,ahora.second, "PDF")
templateMxd = os.path.join('c:/', "Carta_Vertical_1.mxd")
result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd)
mxd = result.mapDocument
Actualiza_Texto('tRazonSocial', tRazonSocial)
arcpy.AddMessage(tRazonSocial)
Output_File = os.path.join(arcpy.env.scratchFolder, output)
Actualiza_Texto('tDocumento', Output_File)
arcpy.mapping.ExportToPDF(mxd, Output_File)
arcpy.AddMessage("Se entrega el resultado como parametro {}".format(Output_File))
arcpy.SetParameterAsText(2, Output_File)
filePath = mxd.filePath
del mxd, result
os.remove(filePath)
arcpy.AddMessage("***FIN***")
所有参数都很好到达,但它没有改变文本元素的值。
我找到了解决方案,我不得不在 for 块中通过 "text" 更改 "name" 属性,一切正常。
我有一个用于打印报告的 mxd 文件,它有一个地图和文本元素,我正在尝试更改文本元素的值,但我做不到。这是代码:
import arcpy
import os
import datetime
def Actualiza_Texto(nombre, valor):
elementos = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")
for elem in elementos:
if elem.name == nombre:
if type(valor) == str:
elem.text = unicode(valor, "utf-8", errors="ignore")
else:
elem.text = unicode(valor)
Web_Map_as_JSON = arcpy.GetParameterAsText(0)
tRazonSocial = arcpy.GetParameterAsText(1)
ahora = datetime.datetime.now()
output = 'Calculo_{}_{}_{}_{}_{}_{}.{}'.format(ahora.year,ahora.month,ahora.day, ahora.hour,ahora.minute,ahora.second, "PDF")
templateMxd = os.path.join('c:/', "Carta_Vertical_1.mxd")
result = arcpy.mapping.ConvertWebMapToMapDocument(Web_Map_as_JSON, templateMxd)
mxd = result.mapDocument
Actualiza_Texto('tRazonSocial', tRazonSocial)
arcpy.AddMessage(tRazonSocial)
Output_File = os.path.join(arcpy.env.scratchFolder, output)
Actualiza_Texto('tDocumento', Output_File)
arcpy.mapping.ExportToPDF(mxd, Output_File)
arcpy.AddMessage("Se entrega el resultado como parametro {}".format(Output_File))
arcpy.SetParameterAsText(2, Output_File)
filePath = mxd.filePath
del mxd, result
os.remove(filePath)
arcpy.AddMessage("***FIN***")
所有参数都很好到达,但它没有改变文本元素的值。
我找到了解决方案,我不得不在 for 块中通过 "text" 更改 "name" 属性,一切正常。