J'ai rencontré un problème l'autre jour lorsque j'ai essayé d'utiliser le module de cartographie d'ArcPy pour modifier des éléments de texte rectangulaires avec des retours à la ligne (\ n) dans un document ArcMap. Voici à quoi ressemblait la sortie:
Voici le code que j'ai utilisé pour générer cette sortie. La première colonne contient des éléments de texte rectangulaires Text1, Text2, Text3 descendant; la deuxième colonne contient les éléments de texte "en clair" Text4, Text5 et Text6 qui descendent.
import os
import arcpy
HomeDir = r"C:\Desktop"
arcpy.env.workspace = HomeDir
CurrentMXD = arcpy.mapping.MapDocument(r"C:\Desktop\TextTest.mxd")
OutputFilename = r"C:\Desktop\TextTest.pdf"
if os.path.exists(OutputFilename):
os.remove(OutputFilename)
for TextElement in arcpy.mapping.ListLayoutElements(CurrentMXD, "TEXT_ELEMENT"):
TextElementName = TextElement.name
String1 = "The quick brown fox jumped over the lazy dog.\nShe sells sea shells by the sea shore."
String2 = "The quick brown fox \njumped over the lazy dog.\nShe sells sea shells by the sea shore."
String3 = "The quick brown fox jumped \nover the lazy dog.\nShe sells sea shells by the sea shore."
if TextElementName == "Text1":
TextElement.text = String1
if TextElementName == "Text2":
TextElement.text = String2
if TextElementName == "Text3":
TextElement.text = String3
if TextElementName == "Text4":
TextElement.text = String1
if TextElementName == "Text5":
TextElement.text = String2
if TextElementName == "Text6":
TextElement.text = String3
arcpy.mapping.ExportToPDF(CurrentMXD, OutputFilename)
Jusqu'à présent, il semble que la présence du texte foiré dépend si la ligne est plus longue pour encapsuler et si la ligne avant la nouvelle ligne est plus longue que la ligne après la nouvelle ligne.
Des idées sur ce qui pourrait mal se passer? Y at-il un travail autour? Je pourrais utiliser des éléments de texte brut et m'inquiéter de l'habillage des lignes à l'aide de Python, mais j'espère pouvoir trouver quelque chose.
la source
Réponses:
J'ai aussi rencontré ça. C'est parce qu'ArcGIS nécessite des fins de ligne Windows qui sont à la fois un retour chariot et un saut de ligne. Un peu de douleur. Heureusement, il est facile de se déplacer. En Python par au lieu de juste
\n
(qui est un saut de ligne - voir les documents Python pour plus si vous êtes désireux), utilisez\r\n
.la source
Je pense qu'il est plus facile d'utiliser le module textwrap:
Expression d'étiquette Python:
Et les étiquettes résultantes ont des retours chariot divisés à la largeur de caractère que vous avez choisie.
la source