Các tác vụ ArcGIS Pro có hỗ trợ các công cụ Python Toolbox hoạt động trên Map Map không?


10

Các tác vụ ArcGIS Pro có hỗ trợ các công cụ Python Toolbox hoạt động trên Map Map không?

Lý do tôi hỏi là tôi bị mắc kẹt khi cố gắng làm như sau:

  1. Bắt đầu ArcGIS Pro 1.1.1
  2. Tạo một dự án mới - Tôi đã gọi tôi là TestProject và được đặt trong C: \ Temp
  3. Sử dụng ngăn Dự án để Thêm kết nối thư mục vào nơi tôi có hình dạng của các quốc gia trên thế giới từ Trái đất tự nhiên ()
  4. Kéo và thả ne_10m_admin_0_countries.shp vào Bản đồ để tạo lớp có tên ne_10m_admin_0_countries
  5. Chèn một Bố cục mới - Tôi đã sử dụng Cảnh quan A3
  6. Chèn Khung bản đồ mới trên Bố cục
  7. Trong ngăn Dự án, tạo một Hộp công cụ Python mới trong thư mục TestProject - Tôi đã gọi tôi là TestPYT
  8. Nhấp chuột phải vào TestPYT trong khung Project để chỉnh sửa nó
  9. Thay thế mã dưới đây để cung cấp cho Python Toolbox hai công cụ được gọi là Chile và Thụy Sĩ
  10. Lưu tập lệnh và Làm mới Hộp công cụ Python để xem hai công cụ mới
  11. Chạy công cụ Chile để xem khung bản đồ trên phóng to bố cục sang Chile
  12. Chạy công cụ Thụy Sĩ để xem khung bản đồ trên bố cục thu phóng đến Thụy Sĩ
  13. Chèn một mục nhiệm vụ mới
  14. Trong Mục nhiệm vụ 1, chèn một Nhiệm vụ mới và gọi nó là Chile
  15. Trong tác vụ Chile, chèn Bước mới và gọi nó là Phóng to Chile
  16. Đối với hành vi bước làm cho nó tự động và ẩn
  17. Trên tab Hành động, tôi cố gắng đặt Lệnh / Công cụ địa lý làm Công cụ xử lý địa lý chọn công cụ Chile

nhập mô tả hình ảnh ở đây

  1. Nó dường như dính khi tôi chọn OK

nhập mô tả hình ảnh ở đây

  1. Nó dường như "mất" công cụ khi tôi nhấp Xong

Cụ thể, những gì tôi đang cố gắng tạo là một quy trình công việc với hai tác vụ mà tôi có thể nhấp vào để Thu phóng tới Chile hoặc Thu phóng đến Thụy Sĩ nhưng tôi bị kẹt ở bước 19 ở trên.

Những gì tôi đang cố gắng làm tổng thể là tìm một ArcPy (cho ArcGIS Pro) tương đương với thanh công cụ Python AddIn trong ArcPy (cho kiến ​​trúc ArcGIS 10.x) với hai nút (Chile và Thụy Sĩ) để phóng to các quốc gia đó.

Tôi đã thực hiện quy trình này một vài lần và trong một lần, tôi đã có thể khiến các công cụ Chile và Thụy Sĩ gắn bó như các nhiệm vụ, nhưng ngay cả khi đó chúng dường như không tương tác với Khung bản đồ (không có lỗi, chỉ là không thay đổi đến những gì được hiển thị trong Khung bản đồ khi họ chạy), mặc dù các công cụ khi chạy từ Hộp công cụ Python vẫn tiếp tục hoạt động mà không gặp vấn đề gì.

nhập mô tả hình ảnh ở đây

Đây là mã để sao chép / dán vào Hộp công cụ Python (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

Điều này dường như không hoạt động với bất kỳ hộp công cụ Python nào, bất kể nó đang làm gì. Cũng có thể đáng lưu ý rằng các tham số hộp công cụ không được hiển thị khi công cụ được chọn và nhúng được bật (nói cách khác, nó không thực sự tải hộp công cụ đúng cách).
Evil Genius

Câu trả lời:


4

* Các hộp công cụ .PYT không được hỗ trợ cho các tác vụ trong ArcGIS Pro 1.0 và 1.1.

Tuy nhiên, chúng đã được hỗ trợ kể từ ArcGIS Pro 1.2.

Như một cách giải quyết, hãy cố gắng chèn công cụ của bạn vào mô hình xử lý địa lý, sau đó sử dụng một bước tác vụ để gọi mô hình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.