ArcGIS ModelBuilder'a rastgele kod eklensin mi?


11

ArcGIS modeline rastgele kod parçacıkları eklemenin bir yolu var mı?

Ben gelişmiş etiketleme veya alan hesap makinesi içinde ifade oluşturucu "gösteri kod bloğu" benzer bir şey öngörüyor .

Örneğin, şu anki projem, aracı çalıştıran kişinin kullanıcı adını getirmekten büyük fayda sağlayabilir. Python'da bunun basit olduğunu biliyorum import os; os.environ.get('USERNAME'). Sanırım bu parçacığı get_username.pyArccatalog içinde bir araç kutusuna ekleyebilir, sonra bu aracı modele ekleyebilir ve mevcut aracım için gerekli model parametresi olarak kullanabilirim. Bu küçük bir şey için çok fazla iş var ve bir dahaki sefere satır içi değişken değiştirme veya bileşik değişken gibi başka bir şey isteyebilirim .

Ben bir kod snippet aracı ya da benzeri genel, geniş yararlı bir şekilde tüm bu ihtiyaçlarını ele olabilir düşünüyorum.


deli düşünce: ifade oluşturucu yerine , modelin yeniden kullanımı için geçmişini kaydeden bir python komut satırı penceresi ne olacak ?
matt wilkie

2
aslında gerçekten sonra ben Arcgis araçları olduğu gibi model oluşturucu maruz tüm Python kütüphanesi. ama bu sadece çılgınca konuşma (değil mi?)
matt wilkie

İyi fikir! Kod snippet'lerini anında snippet'i işleyecek ve sonuçları döndürecek bir "araca" yazmak istiyorsunuz, değil mi? Örneğin, örnekte, "araç" <aktüel kullanıcı adı> değerini döndürür;
RyanKDalton

@RyanDalton, evet bu kesinlikle doğru.
matt wilkie

Yanıtlar:


3

Eski bir gönderiye yeni yanıt, sadece bunu yapmak için yeniden kullanılabilir bir modelin nasıl oluşturulacağını netleştirmek için.

Modeli açın, Ekle-> Yalnızca Model Araçları-> Değeri Hesapla.

İfadeye şunu yazın: getuser()

Kod Bloğu'na şunu yazın:

def getuser():
    import getpass
    return getpass.getuser()

( @ChadCooper'daki kullanıcı adı kod snippet'inin kaynağı için " Kullanıcı adını belirli biçimde alma " konusuna bakın)

Veri Türü için öğesini seçin String.

resim açıklamasını buraya girin

Çıktı çemberini yeniden adlandırın username. Sonuç modeli şöyle görünecektir: Değer Hesaplama aracını kullanma

Ve sonra bu modeli gelecekteki herhangi bir modele sürükleyebilir ve gelecekteki herhangi bir model veya komut dosyasında% kullanıcıadı% adlı değişkene başvurabilirsiniz. % Username% değişkenine erişmeye çalışmadan önce bu modelin çalıştığından emin olmanız yeterlidir. Bunu bir önkoşul kullanarak yapabilirsiniz .


Ryan belki de çıktının neden bir [P] arametresi olduğunu genişletebilir ve modülün başka bir modüle dahil edildiğini gösterebilirsin. Başlangıçta parametrelerin genellikle girdilerle ilgili olması nedeniyle neden bir çıktı için P'nin kafasını karıştırdım.
matt wilkie

@mattwilkie, herhangi bir giriş parametresine ihtiyacınız yoktur, çünkü python betiği girdileri sisteminizden "okuyacaktır". Ancak, sonuçları başka bir modele veya python komut dosyasına tüketebilmek için çıktıyı (kullanıcı adı) bir parametre yapmanız gerekir. Bir sonraki adım, kullanıcıadı parametresini, "Kime" e-posta adresine giriş olarak uesrname çıktı parametresini otomatik olarak kullanacak bir "e-posta komut dosyası" gibi bir şeye aktarmak olacaktır.
RyanKDalton

10

Aslında bunu, Hesaplama Değeri (Veri Yönetimi) aracıyla yapabilirsiniz.

Özellikle zarif değil (araç için tüm kaynak kodu her çalıştığında günlüğe yazdırılır) ve düzenleyici (gerçekten sadece bir metin kutusu) uçsuz bucaksız.

Daha sonra fonksiyonları içe aktarabileceğiniz ve çağırabileceğiniz modüller yazmanızı öneririm ve iletişim kutusuna yalnızca çok kısa parçacıklar yazmanız gerekir. Aksi takdirde çok temiz değil.

Hesaplama Değeri Arcgis v10 için tüm lisans seviyelerinde mevcuttur. V9.x ile Arcview yalnızca Uzamsal veya 3D Analist uzantıları yüklüyse kullanılabilir ( ref ).


teşekkür ederim! Bu bugün ihtiyacım olan şey için oldukça iyi çalıştı ( %USERNAME%.sde veritabanı bağlantısına ekleyin ). Editör bu isme layık değildir, bir yapıştırma hedefi olarak iyi çalışır.
matt wilkie

1
re: 9.x'te, CV yardım sayfasındaki ifadeler, SA / 3D uzantıları yalnızca yüklüyse aracın kullanılabileceğini gösterir . Uzantı lisanslanmadan veya etkinleştirilmeden kullanmak mümkün olabilir.
matt wilkie

"Daha sonra içe aktarabileceğiniz modüller yazmanızı öneririm" - bu gerçekten harika bir fikir!
Curtis Price

2

Belki de soruyu yanlış anlıyorum, ancak ArcToolBox içindeki python script aracı işlevselliği aradığınız şey gibi görünüyor:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Integrating_scripts_within_a_model/002w0000006n000000/

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001500000006000000.htm

Aslında diğer birkaç komut dosyası dilini de kullanabilir / birleştirebilirsiniz (bu örnekte R):

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000



3
Bu işe yarıyor (ve bunu nasıl yaparım), ama Matt özellikle bu yöntemi "böyle küçük bir şey için çok fazla iş" olarak adlandırdı :)
nmpeterson
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.