Ek açıklama katmanlarını kavisli kullanın


10

Arcpy kullanarak açıklama katmanlarına erişmek istiyorum (amaç, metin açıklamalarındaki birkaç metin dizesini doğrulamaktır). Ek açıklama ile , dinamik etiketler değil çizim aracı ek açıklamaları kastediyorum . Bu ek açıklama katmanları, 'Varsayılan' adıyla bir gruplar katmanının altındadır.

ESRI dokümantasyon katmanları kendilerini varlık olarak beraberlik ek açıklama konuşur:

Bir harita belgesinde esasen üç katman kategorisi vardır: özellik katmanları, grup katmanları ve raster katmanları. İsFeatureLayer, isGroupLayer ve isRasterLayer özellikleri, tüm katman türlerini değil, katman türlerinin çoğunu tanımlamanıza veya yalıtmanıza olanak tanır. Bu üç kategoriden birine girmeyen birkaç özel katman ve veri kümesi vardır: ek açıklama alt sınıfları, boyut özellikleri, ağ veri kümeleri, arazi veri kümeleri, topoloji veri kümeleri vb. Bu durumlarda, bir şey yapmadan önce ilgilenilen bir katmanı izole etmek için diğer özellikleri test etmeniz gerekebilir.

Dikkat edilmesi gereken bir şey, ArcGIS'in ek açıklamaları nasıl ele aldığıdır , iki ortalama yapılandırma mümkündür:

ArcGIS iki tür ek açıklamayı tam olarak destekler: coğrafi veri tabanı ve harita belgesi

Benim durumumda, bu harita dokümanı.


Tüm bu belgeler ışığında, çizim ek açıklamalarının yalnızca katmanlar olduğu anlaşılmaktadır, bu nedenle böyle bir kodun çalışması gerekir:

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

Ancak sorun, ek açıklamaların veri çerçevesi aracılığıyla elde edilemez görünmesidir (ek açıklama katmanlarımın her birinin bir özellik katmanıyla ilişkili olduğunu düşünmek gariptir).


Ek açıklamalara erişmek için belirli bir arcpy sınıfı (biri ArcObject SDK'nın IAnnotationFeature2'si ile karşılaştırılabilir )? Herhangi bir çözüm var mı?

Teşekkürler !


Harita belgesi ek açıklama grubunuzu comptypes ve ArcObjects aracılığıyla değiştirmeyi başardınız mı? Daha fazla bilgi için işaretçi var mı? Çok teşekkürler!!
Hélène

Yanıtlar:


3

ArcPy tüm ArcObjects öğelerini göstermez. Anlatabildiğim kadarıyla, bu ArcPy'de ortaya çıkmayan birçok arayüzden biri. Yalnızca Sayfa Düzeni öğeleri arkpy'de gösterilir: ListLayoutElements (arcpy.mapping)

Bunu yapmanız gerekiyorsa tek seçenek ArcObjects. Python kullanmak istiyorsanız, bkz. ArcObjects'e Python'dan nasıl erişirim?

Aksi takdirde, bu konuda bir ArcGIS Fikri aramak veya oluşturmak isteyebilirsiniz (bulduğum tek mevcut fikir bu fikirdi ).


Merhaba, bu cevabı bekliyordum, ancak bağlantılar için teşekkürler ve +1, bu yardımcı olabilir.
Akheloes

@Akheloes Harita belgesi açıklama grubunuzu comptypes ve ArcObjects aracılığıyla değiştirmeyi başardınız mı?
Hélène

0

Başkalarının buna tökezlemesi durumunda bir yanıt ekliyorum. Ek açıklamalara arcpy ile erişilebilir ve katmanlar olarak ele alınabilir. Ek açıklamalara erişilemediği için kod bir dizini eksik olduğu için çalışmadı. Bu işlevler her seferinde bir liste döndürür, bu nedenle joker karakter kullanıyor olsanız bile (bu durumda " Katmanlar " ve " current_annotation_layer "), onu almak ve bir nesneye atamak için dizini belirtmeniz gerekir ( sırasıyla df & lyr) ).

Kod şöyle olmalıdır:

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

Ek açıklama katmanıma erişmek için arcpy kullandığım bir örnek. Haritam için, ek bölümün, ilgilendiğim alanın dışındaysa% 20 şeffaflık içeren bir maskenin altına taşınmasını istedim.

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")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.