Python ve ArcGIS Masaüstü ile Çoklu Sütunlarla Çok Değerli Parametre Uygulamak mı?


10

Bir ArcGIS (9.3) Python betiği üzerinde çalışıyorum. Girişlerden biri özelliklerin listesidir. Her özellik için, karşılık gelen bir alan seçmem gerekiyor. Parametrenin MultiValue olarak ayarlanması, işlenen tüm özellikler için kullanıcı arayüzünde güzel bir tablo verir. Her özellik için bir alan seçmek üzere MultiValue tablosuna nasıl başka bir sütun ekleyebilirim?

Çapraz yayın: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

Esri'nin ArcGIS forumundan cevabı:

Ne yazık ki, bunun çözümü, son zamanlarda komut dosyası araçları için ValueTable girdileriyle 10.1 için uygulandı. 9.3.1'in çalışması için bazı özel doğrulamalara sahip iki çok değerli parametreye sahip olmanız gerekir.


İlgilendiğiniz çok değerli seçim listesinin oluşturulmasıysa - bu Esri blog gönderisini son zamanlarda gördüm , yardımcı olabilir.
Alex Tereshenkov

Yanıtlar:


1

Bunu oldukça basit bir şekilde de olsa nasıl yapacağımı öğrendim. Ben burada birçok FeatureLayers eklemek ve daha sonra her katman için bir kimlik alanı seçmek çok değerli bir parametre oluşturmak istedim. Çalıştım ama alanı bir açılır liste yapmak için nasıl çalışamadım, bu yüzden bir kullanıcı manuel olarak bir alan adı girmek zorunda. İşte arayüz:

Örnek arayüz

Herkes bu sorunu kırmak başardı ya da ESRI bazı guru bizi kendi bilgi ile kutsarsa, ben ikinci sütun (Site Kimliği) belirli alanları listeleyerek, bir açılır liste haline nasıl çevirmek isterim. Bunun bir örneğini görmek istiyorsanız, TIN Oluştur aracına bir göz atın .

Her neyse, bu arabirimi oluşturmak için bir komut dosyası aracı oluşturdum ve tür özellik katmanının bir parametresini ekledim ve aşağıda gösterildiği gibi çok değerli bir değere ayarlayın.

İlk arayüz ayarı

Daha sonra üst kısımdaki Doğrulama sekmesini ve ardından Düzenle düğmesini tıkladım. Bu parametre komut dosyası aracımdaki 6. parametre olduğundan aşağıdaki kodu güncelledim:

def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""

    # Get the 6th parameter
    param = self.params[6]
    param.datatype = "Value Table"
    param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]    
    return

Bu, arabirimi istediğim çok sütunlu tabloya sıfırlar. GetParameterAsText kullandığımda benim örneğimi kullanarak aşağıdakileri döndürür:

pipeline pid;Dredging did


Biraz daha araştırma yaptım ve aracı bir python araç kutusu kullanarak yarattım. Çok iyi çalışıyor ancak geri dönüp başka bir kimlik seçerseniz bir sınırlama var. Kodu GeoNet'e buraya gönderdim .


0

Site Kimliği parametresi için bir açılır liste arıyorsanız, aşağıdaki gibi bir kod kullanabilirsiniz:

 param.filters[1].list = ['pid', 'id']

Böylece, bir imleç oluşturabilir veya FC'nin tüm alanlarını okumak ve bunları bir liste olarak önceki cümleye aktarmak için başka bir yöntem kullanabilirsiniz.

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.