Apakah tugas ArcGIS Pro mendukung alat Python Toolbox yang beroperasi pada Map Frames?

10

Apakah tugas ArcGIS Pro mendukung alat Python Toolbox yang beroperasi pada Map Frames?

Alasan saya bertanya adalah bahwa saya buntu ketika mencoba melakukan hal berikut:

  1. Mulai ArcGIS Pro 1.1.1
  2. Buat proyek baru - Saya menelepon TestProject tambang dan ditempatkan di C: \ Temp
  3. Gunakan panel Proyek untuk Menambahkan Koneksi Folder ke tempat saya memiliki shapefile negara-negara di dunia dari Natural Earth ()
  4. Seret dan letakkan ne_10m_admin_0_countries.shp ke dalam Peta untuk membuat lapisan yang disebut ne_10m_admin_0_countries
  5. Masukkan Layout baru - Saya menggunakan A3 Landscape
  6. Sisipkan Bingkai Peta baru di Layout
  7. Di panel Project, buat New Python Toolbox di folder TestProject - Saya menelepon milik saya TestPYT
  8. Klik kanan pada TestPYT di panel Proyek untuk mengeditnya
  9. Ganti kode dengan yang di bawah ini untuk memberikan Python Toolbox dua alat yang disebut Chili dan Swiss
  10. Simpan skrip dan Refresh the Python Toolbox untuk melihat dua alat baru
  11. Jalankan alat Chile untuk melihat bingkai peta pada zoom tata letak ke Chili
  12. Jalankan alat Swiss untuk melihat bingkai peta pada zoom tata letak ke Swiss
  13. Masukkan Item Tugas Baru
  14. Dalam Item Tugas 1 masukkan Tugas Baru dan sebut Chile
  15. Dalam tugas Chili masukkan Langkah Baru dan menyebutnya Zoom to Chile
  16. Untuk Langkah Perilaku, buatlah Otomatis dan Tersembunyi
  17. Pada tab Tindakan saya mencoba untuk mengatur Command / Geoprocessing sebagai Alat Geoprocessing memilih alat Chili

masukkan deskripsi gambar di sini

  1. Sepertinya menempel ketika saya memilih OK

masukkan deskripsi gambar di sini

  1. Tampaknya "kehilangan" alat ketika saya mengklik Selesai

Secara khusus, apa yang saya coba buat adalah alur kerja dengan dua tugas yang bisa saya klik untuk Zoom ke Chili atau Zoom ke Swiss tetapi saya terjebak pada langkah 19 di atas.

Apa yang saya coba lakukan secara keseluruhan adalah menemukan ArcPy (untuk ArcGIS Pro) yang setara dengan bilah alat Python AddIn di ArcPy (untuk arsitektur ArcGIS 10.x) dengan dua tombol (Chili dan Swiss) untuk memperbesar ke negara-negara tersebut.

Saya telah menjalankan prosedur ini beberapa kali, dan pada satu kesempatan saya bisa membuat alat Chili dan Swiss tetap sebagai tugas, tetapi bahkan kemudian mereka tampaknya tidak berinteraksi dengan Bingkai Peta (tidak ada kesalahan, hanya tidak ada perubahan untuk apa yang ditampilkan di Bingkai Peta ketika mereka berlari), meskipun alat ketika dijalankan dari Python Toolbox terus bekerja tanpa masalah.

masukkan deskripsi gambar di sini

Ini adalah kode untuk menyalin / menempel ke Python Toolbox (TestPYT).

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
PolyGeo
sumber
Tampaknya ini tidak berfungsi dengan kotak alat Python apa pun, apa pun yang dilakukannya. Mungkin juga perlu dicatat bahwa parameter kotak alat tidak ditampilkan ketika alat dipilih dan embed diaktifkan (dengan kata lain, itu sebenarnya tidak memuat kotak alat dengan benar).
Evil Genius

Jawaban:

4

* .PYT toolbox tidak didukung untuk tugas-tugas di ArcGIS Pro 1.0 dan 1.1.

Namun, mereka telah didukung sejak ArcGIS Pro 1.2.

Sebagai solusinya coba masukkan alat Anda ke dalam model geoprocessing, dan kemudian gunakan langkah tugas untuk memanggil model.

Juragan
sumber