ArcGIS ModelBuilder, manuel düzenleme için Excel dosyasını açabilir, ardından bu düzenlemeleri modele geri besleyebilir mi?


10

Başlangıçta bir çift geoprocessing görevleri, daha sonra bu geoprocesses sonucuna bir Excel tablosu katılmadan önce çalışan bir model ArcGIS ModelBuilder kullanarak bir görev oluşturma. Ancak, kullanıcının düzenlemeleri kaydetmeden ve dosyayı kapatmadan önce, kullanıcının dosyayı manuel olarak düzenlemesi için öncelikle Excel dosyasını açması gerekir. Daha sonra, modelin bir dizi başka coğrafi işleme göreviyle devam etmeden önce, modelin bu Excel dosyasını bir veri kümesinin (hala modelin bir parçası) nitelik tablosuna katması beklenir.

Konuyu açıklamaya yardımcı olmak için aşağıda yüksek düzeyde şematik bir taslak ekliyorum (bunun başlangıçta çok mantıklı olmadığını anlıyorum).

Excel dosyası düzenlenirken model duraklar, ardından kaydedilip kapatıldıktan sonra devam eder

Böylece model çalışır, birkaç coğrafi işlem görevini tamamlar, bir Excel dosyasını açmak için duraklar, kullanıcının bu Excel dosyasını bir öznitelik tablosuna katılmaya devam etmeden ve bir sayı çalıştırmadan önce dosyayı düzenlemesini, kaydetmesini ve kapatmasını bekler. diğer coğrafi işleme görevlerinin

Bunun modele bir Python betiği veya iki eklemeyi gerektireceğini düşünmeliyim. Şu anda sadece kavramın gerçekten mümkün olup olmadığını bilmekle ilgileniyorum.


1
Standart model oluşturucu araçlarıyla, modeli duraklatmanın bir yolu olmadığından bunu yapamayacağınızdan eminim, ayrıca kullanıcının modeli yeniden başlatmak için Excel'i kapattığını söylemek için tetiklemek için bir çeşit tetikleyiciye ihtiyacınız olacaktır. Bunu, ayrı bir işlem (Excel) oluşturduktan sonra bir metin dosyasındaki bir bayrağa bakarak sonsuz bir döngüye gönderilen bir tür komut dosyasıyla başarabilirsiniz. Bunu hiç yapmadım ve tuzakların ne olduğunu bilmiyorum. Eğer model geliştiricisinde tutmak istiyorsanız, önce excel düzenlemelerini sonra modeli çalıştırırdım.
Hornbydd

Teşekkürler @Hornbydd - Aynı düşünceleri yaşadım. Önce dosyayı düzenlemek ve sonra modeli çalıştırmak önerdiğim şeydir, ancak bunun tek bir entegre model olması gerektiği söylendi ...
the_bonze

1
Bir komut dosyasının, dosyanın düzenlenmiş olup olmadığını bilmek için tarih ve saat damgasına bakabileceğini, sonra modeli oradan devam ettirebileceğini anladım? Sorunu duraklatmak bence.
the_bonze

Evet, model oluşturucu, işlemeyi hızlandırmak için bir iş akışını otomatikleştirmek için tasarlanmıştır, ortada belirsiz bir duraklama yoktur, bu kullanıcı örneğin öğle yemeği için giderse ne olur? :) Tıpkı şimdi benim gibi!
Hornbydd

Yanıtlar:


1

Bu, ModelBuilder'daki bir modelden daha fazla özel bir Python aracı geliştirmeniz gerektiği gibi görünüyor. xlwtya xlutilsen http://www.python-excel.org/ (eğer Excel dosyasına yazalım olacaktır XlsxWriterxlsx dosyaları idare edecek). Düzenlemeler küçükse, bunu muhtemelen standart bir ArcToolbox aracına dahil edebilirsiniz (bazı yaratıcılıklarla). 10.1+ kullanıyorsanız, GUI'nin de çalışmasını sağlamak için bir Python Eklentisi veya Python Araç Kutusu oluşturabilirsiniz.


Python AddIns zaten 10.1+ sürümünde gelişmiş GUI seçenekleri sunuyor mu? Ben sadece .NET ve Java AddIns bu sağlamak düşündüm ... Python sadece herhangi bir GUI (komutlar, araçlar) olmadan AddIns sunuyor.
Jürgen Zornig

1
@ JürgenZornig Bu kolay değil: anothergisblog.blogspot.com/2013/07/…
Chad Cooper

Teşekkürler @ChadCooper. Modeli model oluşturucuda tutmam gerekiyor, bu yüzden Python eklentileri iyi, ama bir varlık olarak model tam gelişmiş bir Python aracı yerine model oluşturucuda olması gerekiyor.
the_bonze

@Chad Bu güzel ArcPy / Tkinter Hızlı Başlangıç ​​Eğitimi için yine de teşekkürler ... bunu denemek zorunda!
Jürgen Zornig

1

Bunu düşünüyorum ve yeni bir çözüm buldum. Öncelikle Excel EXE'in konumu olmak üzere iki kullanıcı parametresine sahip bir araç kutusunda bir python komut dosyası ayarladınız. Bu, sabit kodlu dosya yolu konumlarının (Office12, Office13 vb.) Listesini kontrol etmek için akıllıca kodlanabilir.

Ardından subprocess.call işlevini kullanın. Bu yöntemi kullanma hakkında gerçekten düzgün şeyler var:

  1. Harici kütüphane gerektirmez
  2. çağrı işlevi excel kapatılıncaya kadar komut dosyasının devam etmesine izin vermez
  3. Excel belgesini ikinci argüman olarak belirleyebilirsiniz
  4. Bir kod satırı!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

Tek şey, bunun model oluşturucusunda çalışıp çalışmayacağından% 100 emin değilim, bunun test edilmesi gerekecek, ancak neden olmasın anlamıyorum ama eminim Arc'ın mizaçlı bir canavar.

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.