Chèn dòng mới trong các yếu tố Văn bản hình chữ nhật qua ArcPy có gây ra sự chồng chéo?


10

Tôi đã gặp một vấn đề vào một ngày khác khi tôi cố gắng sử dụng mô-đun ánh xạ ArcPy để chỉnh sửa các thành phần văn bản hình chữ nhật với dòng mới (\ n) trong tài liệu ArcMap. Đây là những gì đầu ra trông như thế nào:

nhập mô tả hình ảnh ở đây

Đây là mã tôi đã sử dụng để tạo đầu ra đó. Cột đầu tiên là các thành phần văn bản hình chữ nhật Text1, Text2, Text3 đi xuống; cột thứ hai là các phần tử văn bản "đơn giản" Text4, Text5 và Text6 đi xuống.

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)

Cho đến nay, có vẻ như sự hiện diện của văn bản lộn xộn phụ thuộc vào việc dòng có đủ dài hơn để bọc hay không và liệu dòng trước dòng mới có dài hơn dòng sau dòng mới hay không.

Bất kỳ ý tưởng về những gì có thể đi sai? Có một cách giải quyết? Tôi có thể sử dụng các yếu tố văn bản đơn giản và lo lắng về việc gói các dòng bằng Python, nhưng tôi hy vọng tôi có thể tìm ra điều gì đó.


1
Bạn đã cài đặt gói dịch vụ mới nhất chưa?
Jason Scheirer

Câu trả lời:


10

Tôi cũng chạy vào đây. Đó là bởi vì ArcGIS yêu cầu các kết thúc dòng Windows, cả hai trở lại vận chuyển và nguồn cấp dữ liệu. Một chút đau đớn. May mắn thay, nó dễ dàng để đi xung quanh. Trong Python thay vì chỉ \n(là nguồn cấp dữ liệu - hãy xem tài liệu Python để biết thêm nếu bạn quan tâm), hãy sử dụng \r\n.


2

Tôi nghĩ việc sử dụng mô-đun textwrap dễ dàng hơn:

Biểu thức nhãn Python:

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

Và các nhãn kết quả có lợi nhuận vận chuyển chia ở bất kỳ chiều rộng ký tự bạn đã chọn.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.