ArcObjects yerine ArcPy kullanarak ArcMap'ta açık özellik tablosu yenileniyor mu?


11

Hesaplama Alanı GP aracını ArcMap'teki arcpy'den çalıştırıyorum. Bir satır değeri güncellendiğinde, Önbelleği Yeniden Yükle aracını (Tablo Seçenekleri> Önbelleği Yeniden Yükle) kullanana kadar görünmez. ArcObjects kullanmadan öznitelik tablosunu otomatik olarak nasıl yenileyebilirim?

@ Blah238 önerdiği gibi tanım sorgusu güncellemeyi denedim Python kullanarak, nasıl "önbellek açıldı" açılan bir öznitelik tablosu , ancak bu yardımcı olmaz. Veri kaynağını sıfırlamak bir seçenek değildir çünkü özellik sınıfı düzenleme oturumunda olabilir ve kaynak verilerle olan bağlantıyı kaybetmek istemiyorum.


ArcGIS 10.1 mi kullanıyorsunuz? Öyleyse, Hesaplama Alanı'nı çalıştırmak için bir Python Eklentisi veya bir Python komut dosyası aracı mı kullanıyorsunuz?
PolyGeo

1
Gerçekten önemli mi? Python Eklentisinden Alan GP Hesapla aracını arıyorum, ancak GP aracını Python penceresinden çalıştırırken de aynı şey gözlenir.
Alex Tereshenkov

1
Her zaman bir problemi yeniden deneyeceğim ve göreceğim en olası yolun, aynı konfigürasyonda olduğu gibi aynı adımları tam olarak (veya alabildiğim kadar yakın) yapmamdır. daha önce görüldü.
PolyGeo

Yanıtlar:


4

ArcObjects yokken ArcPy'nin bir sınırına çarpıyor gibi görünüyorsunuz.

ArcPy.mapping'in kısıtlamaları burada genel olarak şu şekilde tanımlanmıştır :

Arcpy.mapping, ArcObjects'in yerine değil, desteklediği farklı senaryolar için bir alternatiftir. ArcObjects daha ince tanecik geliştirme ve uygulama özelleştirmesi için hala gereklidir, arcpy.mapping ise mevcut harita belgelerinin ve katman dosyalarının içeriğini otomatikleştirmek için tasarlanmıştır.

@ Blah238'in ArcPy'den ArcObjects'i kullanmanın diğer önerisi sizin için bir seçenek değilse , bu işlevselliğin ArcPy'ye maruz kalması için bir ArcGIS Fikri göndermek en iyisi olabilir . Burada böyle bir ArcGIS Fikri için bir bağlantı yayınlarsanız, o zaman buna oy vermekten mutluluk duyacağım.


PolyGeo sayesinde, düzenleme oturumu dışındaki alan değerlerini hesaplarken öznitelik tablosunu yenilemenin bir yolunu bulamıyoruz.
Alex Tereshenkov

1
ESRI teknik desteğine bir geliştirme isteği gönderebilirsiniz. Manuel olarak kapatıp açmadan değişiklikleri göstermek için tabloyu yenilemek için sadece bir düğme, menü seçeneği veya F tuşuna sahip olma yeteneğini istedim. Masanın kendi kendine güncellenmesi gerektiği söylendi ve konu yerel olarak yeniden üretilemez olarak kapatıldı. Genellikle yardımcı olurlar. Sınırların farkında bile olmadıkları izlenimini edindim.
johns

Yukarıdakilerin ikisini de yapmanızı öneririm, ancak ArcGIS Ideas, popülerlik ve uygulama ilerlemesini burada yerel desteğe göre çok daha kolay izlemenizi sağlar.
PolyGeo

1
@johns, yenilemek için nitelik tablosunu kapatıp açmanız gerekmediğini biliyor musunuz? Bunu yapmanın geçerli yolu Tablo Seçenekleri düğmesi> Önbelleği Yeniden Yükle'yi tıklatmaktır. İşe yarayan başka bir şey de Alanda Hesapla işlemini düzenleme modunda çalıştırmaktır, ardından öznitelik tablolarındaki değerler hemen güncellenir.
Alex Tereshenkov

1
@Alex, öneri için teşekkürler; sorunu tekrar test etmemi sağladı. Yeniden yükleme önbelleğini kullandım ancak mizanpaj kapsamını almak için bir eklenti kullanarak mizanpaj görünümünde düzenleme modunda çokgenler eklediğimde başarısız / başarısız oluyor. Veri görünümünde ve aynı eklentiyi kullandığımda, yeniden yükleme önbelleği çalışır. Yani bir şekilde mizanpaj görünümünü içeriyor.
johns

3

Bu, özel iş akışınız için sizin için yararlı olabilir veya olmayabilir. Katmanınızdaki seçimi değiştirirseniz, öznitelik tablosunun da güncellendiğini gördüm.

Bu yüzden sık sık kullanıyorum

arcpy.SelectLayerByAttribute_management("MY-LAYER","CLEAR_SELECTION")

Tabii ki aslında izini kaybetmek istemediğiniz bir şey seçtiyseniz, bu iyi değildir. Bu durumda, OID'nin seçili özelliklerden OID'ler listesinde olduğu katmandan seçim yapabilirsiniz (temel olarak seçimi halihazırda seçili olana değiştirin). Bunun pratik olması uzun sürebilir, bunu gerçek yaşam senaryosunda hiç denemedim.


1

Denedin mi:

arcpy.RefreshCatalog(target) # Set the target to your layers data source

veya

arcpy.RefreshActiveView() # Refreshes the map

veya

arcpy.RefreshTOC() # I highly doubt this will do anything, but you never know

Bunlardan birinin işe yarayacağını düşünüyorum, ancak bazen ArcMap'te öznitelik tablosunu elle kapatıp bazı düzenlemeleri görmek için yeniden açmam gerektiğini biliyorum. Masayı kapatıp açmanın ArcPy ile yapılabileceğinden emin değilim, ama bu da bir seçenek olurdu.


Thansk, Cody, maalesef, bunların hiçbiri işe yaramıyor. Öznitelik tablosunu manuel olarak kapatmak ve açmak hile yapar, ancak bunu programlı olarak yapacak bir şey arıyorum. Açılış ve kapanış öznitelik tablosu da Python ile kullanılamaz.
Alex Tereshenkov

Bunların hiçbiri nitelik tablosunu yenilemek için tasarlanmamıştır.
Radar

1

Bu çalışıyor:

    import arcpy

    definition_query = layer.definitionQuery
    # Change the Definition Query into something different
    if definition_query == '':
        oid = arcpy.ListFields(dataset = layer, field_type = 'OID')[0]
        layer.definitionQuery = '{} > 0'.format(oid.name)
    else:
        layer.definitionQuery = ''
    arcpy.RefreshActiveView()

    # Restore the Definition Query
    layer.definitionQuery = definition_query
    arcpy.RefreshActiveView()
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.