การแทรกบรรทัดใหม่ในองค์ประกอบข้อความสี่เหลี่ยมผืนผ้าผ่าน ArcPy ทำให้เกิดการทับซ้อน?


10

ฉันเจอปัญหาเมื่อวันก่อนเมื่อฉันพยายามใช้ ArcPy ของโมดูลการแมปเพื่อแก้ไของค์ประกอบข้อความสี่เหลี่ยมผืนผ้าด้วยการขึ้นบรรทัดใหม่ (\ n) ในเอกสาร ArcMap นี่คือผลลัพธ์ที่ได้:

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือรหัสที่ฉันใช้ในการสร้างผลลัพธ์นั้น คอลัมน์แรกคือองค์ประกอบข้อความสี่เหลี่ยมผืนผ้า 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 ล่าสุดหรือไม่
Jason Scheirer

คำตอบ:


10

ฉันวิ่งเข้าไปในนี้เช่นกัน เป็นเพราะ ArcGIS ต้องการการสิ้นสุดบรรทัด Windows ซึ่งเป็นทั้งการขึ้นบรรทัดใหม่และการป้อนบรรทัด ความเจ็บปวดนิดหน่อย โชคดีที่มันง่ายที่จะไปไหนมาไหน ในหลามโดยแทนเพียง\n(ซึ่ง linefeed - ดูเอกสารหลามมากหากคุณกำลังกระตือรือร้น) \r\nการใช้งาน


2

ฉันคิดว่าการใช้โมดูล textwrap ง่ายกว่า:

การแสดงฉลากงูหลาม:

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

และฉลากที่ได้จะมีการขึ้นบรรทัดใหม่แยกตามความกว้างของอักขระที่คุณเลือก

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.