通过ArcPy在Rectangle Text元素中插入换行符会导致重叠吗?


10

前几天,当我尝试使用ArcPy的映射模块在ArcMap文档中使用换行符(\ n)编辑矩形文本元素时,遇到了一个问题。输出如下所示:

在此处输入图片说明

这是我用来生成输出的代码。第一列是矩形文本元素Text1,Text2,Text3。第二列是向下的“普通”文本元素Text4,Text5和Text6。

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)

到目前为止,看起来混乱的文本的存在取决于行是否足够长以便换行,以及换行之前的行是否比换行之后的行长。

关于可能出什么问题的任何想法?有解决方法吗?我可以使用纯文本元素,而不必担心使用Python换行,但是我希望我能弄清楚一些东西。


1
您是否安装了最新的Service Pack?
詹森·谢勒

Answers:


10

我也遇到了这个问题。这是因为ArcGIS要求Windows行尾既是回车符又是换行符。有点痛苦。幸运的是,这很容易解决。在Python中,使用而不是just \n(这是换行- 如果您愿意,请参阅Python文档以获取更多信息)\r\n


2

我认为使用textwrap模块更容易:

Python标签表达式:

def FindLabel ( [LEGAL1]  ):
  import textwrap
  return '\r\n'.join(textwrap.wrap([LEGAL1], 20)) #charcter width set at 20

结果标签将回车符拆分为您选择的任何字符宽度。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.