ArcGIS Pro görevleri Harita Çerçevelerinde çalışan Python Araç Kutusu araçlarını destekliyor mu?


10

ArcGIS Pro görevleri Harita Çerçevelerinde çalışan Python Araç Kutusu araçlarını destekliyor mu?

Sormamın nedeni, aşağıdakileri yapmaya çalışırken takılıp kalmam:

  1. ArcGIS Pro 1.1.1'i başlatın
  2. Yeni bir proje oluştur - Mine TestProject'i aradım ve C: \ Temp içine yerleştirdim
  3. Natural Earth'ten dünya ülkelerinin bir şekil dosyasına sahip olduğum yere Klasör Bağlantısı Eklemek için Proje bölmesini kullanın ()
  4. Ne_10m_admin_0_countries adlı katmanı oluşturmak için Haritaya sürükleyip ne_10m_admin_0_countries.shp yazın
  5. Yeni bir Düzen Ekle - A3 Yatay kullandım
  6. Mizanpaj'a yeni bir Harita Çerçevesi ekleme
  7. Proje bölmesinde TestProject klasöründe yeni bir Python araç kutusu oluşturun - mine TestPYT
  8. Düzenlemek için Proje bölmesinde TestPYT'ye sağ tıklayın
  9. Python Toolbox'a Şili ve İsviçre adlı iki araç vermek için kodu aşağıdaki kodla değiştirin
  10. İki yeni aracı görmek için komut dosyasını kaydedin ve Python Araç Kutusu'nu yenileyin
  11. Şili mizanpajındaki harita çerçevesini görmek için Şili aracını çalıştırın
  12. İsviçre'ye yakınlaştırma düzeninde harita çerçevesini görmek için İsviçre aracını çalıştırın
  13. Yeni Görev Öğesi Ekleme
  14. Görev Öğesi 1'e Yeni Görev ekleyin ve Şili olarak adlandırın
  15. Şili görevine Yeni Bir Adım ekleyin ve Şili'ye Yakınlaştır deyin
  16. Adım Davranışı için Otomatik ve Gizli yapın
  17. Eylemler sekmesinde Komut / Coğrafi İşleme'yi Şili aracını seçerek bir Coğrafi İşleme Aracı olarak ayarlamaya çalışıyorum

resim açıklamasını buraya girin

  1. Tamam'ı seçtiğimde yapışıyor gibi görünüyor

resim açıklamasını buraya girin

  1. Tamam'ı tıkladığımda aracı "kaybediyor" gibi görünüyor

Özellikle, oluşturmaya çalıştığım şey, Şili'ye Yakınlaştır veya İsviçre'ye Yakınlaştır'a tıklayabildiğim iki görev içeren bir iş akışıdır, ancak yukarıdaki 19. adımda takılı kaldım.

Genel olarak ne yapmaya çalışıyorum, ArcPy (ArcGIS 10.x mimarisi için) Python AddIn araç çubuğuna eşdeğer bir ArcPy (ArcGIS Pro için) bu ülkelere yakınlaştırmak için iki düğme (Şili ve İsviçre) bulmaktır.

Bu prosedürü birkaç kez geçirdim ve bir keresinde Şili ve İsviçre araçlarını görev olarak yapıştırabildim, ancak o zaman bile Harita Çerçevesi ile etkileşime girmediler (hata yok, sadece değişiklik yok) Python Araç Kutusundan çalıştırılan araçlar sorunsuz çalışmaya devam etse bile, koştuklarında Harita Çerçevesinde görüntülenenlere).

resim açıklamasını buraya girin

Bu, Python Araç Kutusu'na (TestPYT) kopyalamak / yapıştırmak için kullanılan koddur.

import arcpy


class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "Toolbox"
        self.alias = ""

        # List of tool classes associated with this toolbox
        self.tools = [Slide1,Slide2]


class Slide1(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Chile"
        self.description = ""
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        aprx = arcpy.mp.ArcGISProject("CURRENT")
        mapx = aprx.listMaps()[0]
        lyt = aprx.listLayouts()[0]
        lyr = mapx.listLayers("ne_10m_admin_0_countries")[0]
        lyr.definitionQuery = '"ADMIN" = ' + "'Chile'"
        mFrame = lyt.listElements("MAPFRAME_ELEMENT")[0]
        mFrame.camera.setExtent(mFrame.getLayerExtent(lyr, False, True))
        lyr.definitionQuery = ""
        return

class Slide2(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Switzerland"
        self.description = ""
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        aprx = arcpy.mp.ArcGISProject("CURRENT")
        mapx = aprx.listMaps()[0]
        lyt = aprx.listLayouts()[0]
        lyr = mapx.listLayers("ne_10m_admin_0_countries")[0]
        lyr.definitionQuery = '"ADMIN" = ' + "'Switzerland'"
        mFrame = lyt.listElements("MAPFRAME_ELEMENT")[0]
        mFrame.camera.setExtent(mFrame.getLayerExtent(lyr, False, True))
        lyr.definitionQuery = ""
        return

Ne yaparsa yapsın, herhangi bir Python araç kutusu ile çalışmaz gibi görünüyor. Ayrıca, araç seçilip yerleştirme etkinleştirildiğinde araç kutusu parametrelerinin gösterilmediğini de belirtmek gerekebilir (diğer bir deyişle, araç kutusunu doğru şekilde yüklemiyor).
Evil Genius

Yanıtlar:


4

* .PYT araç kutuları ArcGIS Pro 1.0 ve 1.1'deki görevler için desteklenmez.

Ancak ArcGIS Pro 1.2'den beri desteklenmektedir.

Geçici bir çözüm olarak, aracınızı bir coğrafi işleme modeline eklemeyi deneyin ve ardından modeli çağırmak için bir görev adımı kullanın.

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.