Xử lý các lớp chú thích với arcpy


10

Tôi muốn truy cập các lớp chú thích bằng arcpy (mục đích là để xác minh một vài chuỗi văn bản trong chú thích văn bản). Theo chú thích tôi có nghĩa là vẽ chú thích công cụ , không phải nhãn động. Các lớp chú thích này nằm dưới một lớp nhóm theo tên 'Mặc định'.

Các tài liệu ESRI nói của hòa chú thích như là lớp mình:

Về cơ bản có ba loại lớp trong tài liệu bản đồ: lớp đặc trưng, ​​lớp nhóm và lớp raster. Các thuộc tính isFeatureLayer, isgroupLayer và isRasterLayer cho phép bạn xác định hoặc cô lập phần lớn các loại lớp nhưng không phải tất cả các loại lớp. Có một vài lớp và bộ dữ liệu chuyên dụng không thuộc một trong ba loại sau: lớp con chú thích, tính năng thứ nguyên, bộ dữ liệu mạng, bộ dữ liệu địa hình, bộ dữ liệu cấu trúc liên kết, v.v. Trong những trường hợp này, bạn có thể cần phải kiểm tra các thuộc tính khác để cô lập một lớp quan tâm trước khi làm điều gì đó với nó.

Một điều cần lưu ý là cách ArcGIS xử lý các chú thích vẽ , hai cấu hình có nghĩa là có thể:

ArcGIS hỗ trợ đầy đủ hai loại chú thích: cơ sở dữ liệu địa lý và tài liệu bản đồ

Trong trường hợp của tôi, đó là tài liệu bản đồ.


Trong tất cả các tài liệu này, có vẻ như các chú thích vẽ chỉ là các lớp, do đó, một mã đơn giản như thế này sẽ hoạt động:

mxd = arcpy.mapping.MapDocument("some\mxdpath\here")
df = arcpy.mapping.ListDataFrames(mxd,"Layers")
lyr = arcpy.mapping.ListLayers(mxd,"current_annotation_layer",df) 

Nhưng vấn đề là các chú thích dường như không thể có được thông qua khung dữ liệu (điều này thật kỳ lạ khi xem xét từng lớp chú thích của tôi được liên kết với một lớp đối tượng).


Bất kỳ lớp Arcpy cụ thể nào để truy cập các chú thích (một so sánh với IAnnotationFeature2 của ArcObject SDK)? Bất kỳ cách giải quyết?

Cảm ơn !


Bạn đã quản lý để sửa đổi nhóm chú thích tài liệu bản đồ của mình thông qua các kiểu tổng hợp và ArcObjects chưa? Bất kỳ con trỏ để biết thêm? Cảm ơn nhiều!!
Hélène

Câu trả lời:


3

ArcPy không tiết lộ tất cả ArcObjects. Từ những gì tôi có thể nói, đây là một trong nhiều giao diện không được hiển thị trong ArcPy. Chỉ các thành phần Bố cục Trang được hiển thị trong arcpy: ListLayoutElements (arcpy.micking)

Nếu bạn cần làm điều này, lựa chọn duy nhất của bạn là ArcObjects. Nếu bạn muốn sử dụng Python, hãy xem Làm thế nào để tôi truy cập ArcObjects từ Python?

Mặt khác, bạn có thể muốn tìm kiếm hoặc tạo một ý tưởng ArcGIS về điều này (ý tưởng hiện có duy nhất tôi tìm thấy là ý tưởng này ).


Xin chào, tôi đã rất mong đợi câu trả lời này, nhưng cảm ơn và +1 cho các liên kết, điều này có thể giúp ích.
Akrcoes 13/03 '

@Akheloes Bạn có quản lý để sửa đổi nhóm chú thích tài liệu bản đồ của mình thông qua các kiểu chữ và ArcObjects không?
Hélène

0

Tôi đang thêm một phản hồi trong trường hợp người khác vấp phải điều này. Chú thích Có thể truy cập thông qua arcpy và có thể được coi là các lớp. Mã không hoạt động vì nó thiếu chỉ mục, KHÔNG phải vì chú thích không truy cập được. Các hàm này trả về một danh sách mọi lúc, vì vậy ngay cả khi bạn đang sử dụng ký tự đại diện (trong trường hợp này là " Lớp " và " current_annotation_layer "), bạn vẫn cần chỉ định chỉ mục để truy xuất nó và gán nó cho một đối tượng ( tương ứng là df & lyr ).

Mã phải là:

df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
lyr = arcpy.mapping.ListDataFrames(mxd, "current_annotation_layer", df)[0]

Đây là một ví dụ tôi đã sử dụng arcpy để truy cập lớp chú thích của mình. Đối với bản đồ của tôi, tôi muốn chú thích được di chuyển bên dưới mặt nạ với độ trong suốt 20% nếu nó nằm ngoài khu vực tôi quan tâm.

my_annotation_lyr = arcpy.mapping.Layer("Long_ProjectsAnno")
reference_lyr = arcpy.mapping.Layer("counties_mask")
arcpy.mapping.MoveLayer(df, reference_lyr, my_annotation_lyr, "AFTER")
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.