Daha çox

OnCreateFeature python tətbiq uzantısı


Bir xüsusiyyət yaradılan kimi müəyyən atributları doldurmağa çalışır. Bir xüsusiyyət yaradıldıqda tetiklenen python "onCreateFeature" tətbiq genişləndirmə funksiyasını sınadım. Yeni xüsusiyyət ekranda və cədvəldə seçilmiş olaraq qalır, amma sonra onCreateFeature sinifində bir "təsvir" və ya Axtar/Yeniləmə Kursoru icra etdiyim zaman xüsusiyyət rəqəmsallaşdırılmadan əvvəl mövcud olan seçimi qaytarır. (məsələn: OID 12 xüsusiyyəti rəqəmsaldır və seçilmiş/vurgulanır, lakin təsvir və kursor cari seçim olaraq OID 11 -ə baxır.) Burada nəyin səhv olduğuna dair hər hansı bir təklif varmı?

sinif UpdateNewFeature (obyekt): "" "dinləyici3cursor_addin.ext3 (Uzantı)" "üçün tətbiq ___ __ (özünü): self.enabled = True def onCreateFeature (öz): TESTline_Lyr =" TEST xətləri "TESTline_Fields = ['OBJECTID', ' NewAttrib ',' SHAPE_Length '] # say seçilmiş xüsusiyyətlər d = arcpy.Description (TESTline_Lyr) if len (d.FIDSet) == 0: TESTline_Select = 0 başqa: TESTline_Select = len (d.FIDSet.split (";")) "OID:" yazın, FIDSet arcpy.da.UpdateCursor ilə (TESTline_Lyr, TESTline_Fields) kursor olaraq: kursordakı sətir üçün: "ROW:", satır # çap edin və mövcud şərtlərə əsasən bir neçə atributu yeniləyin

Başqası cavab axtarmağa gəlsə…

Buna yenidən baxdım və inadkarlıq və ya lal şansla (heç bir sənəd sayəsində) işləməyən bir şey tapdım. Yeni bir xüsusiyyəti rəqəmləşdirərkən və eskizi bitirdikdə, bu hadisələr bu qaydada tetiklenir:

onStartOperation

onCreateFeature

əvvəlStopOperation

onStopOperation

onEditorSelectionChanged

OnCreateFeature -dən sadəlövhlüklə istifadə edirdim (bütün ESRI sənədləri: "Yeni bir xüsusiyyət yaradıldıqda baş verir.") Ancaq onCreateFeature, redaktə əməliyyatı tamamlanmadan işə düşür, bu da indi bu siyahının kontekstində məna kəsb edir. Əlbəttə ki, rəqəmsallaşdırmaqdan başqa digər hadisələr onEditorSelectionChanged -ı işə salacaq, ancaq UpdateCursor -u hazırda seçilmiş xüsusiyyət (lər) də işə salanda yalnız seçim tək bir xüsusiyyət olduqda və əsas atributların sıfır olduğu zaman atributları yeniləyirəm.

(Kontekst: Python addin; "redaktələri bazaya köçür" seçimi olmadan versiya edilmiş bir coğrafi bazanı redaktə etmək)


Düşünürəm ki, əvvəlcə redaktələri saxlamalı olacaqsınız

ArcGIS -də bir cədvəl/xüsusiyyət sinifində düzəlişlər etdiyiniz zaman, bu düzəlişlər yaddaşda saxlanılır və siz düzəlişləri saxlayana qədər faktiki cədvəl/xüsusiyyət sinifinə bağlı deyillər. Bu səbəbdən bir redaktə seansında olduğunuz zaman düzəlişləri "geri ala" bilərsiniz. Beləliklə, bir redaktoru saxlamadan əvvəl bir verilənlər bazasına qarşı bir kursor icra etməyə çalışsanız, imlecin redaktədən əvvəl cədvələ baxdığı kimi bu düzəlişləri tapması ehtimalı yoxdur. Düzəliş edərkən cədvəldəki bu düzəlişlərin görünüşü, düzəlişləri saxlayanda nə edəcəyinizi əks etdirir.