ArcGIS에서 Python Toolbox (.pyt)를 구성하기위한 지침


17

내 작업 중 하나를 위해 세 가지 도구 (파이썬 스크립트)로 도구 상자를 만들어야합니다.

일반적인 tbx 대신 Python Toolbox (pyt)로 작성하기로 결정했습니다.

코드를 구성하는 "좋은"방법을 제외하고는 모든 것이 명확합니다.

세 가지 도구가 있으므로 하나의 파일 (pyt)에 도구를 저장하는 것이 좋지 않습니다. 그래서 각 도구를 별도의 .py 파일로 유지하기로 결정했습니다.

여기에 문제가 있습니다. ArcGIS for Server에 배포 또는 배포하기 위해 PYT로 여러 파일을 구성하는 좋은 방법은 무엇입니까? PYT 파일과 동일한 레벨로 유지해야합니까 아니면 하위 디렉토리 (예 : "도구")에 배치해야합니까?

Esri 지침을 참조하거나 "big PYT toolbox"샘플을 참조 할 수 있습니까?

이 주제에 대해 아무것도 찾지 못했습니다. 버전 10.0에는 내가 사용한 ToolShare 폴더 구조 가있었습니다 .

이것은 코딩 스타일의 문제입니다. 500-1000 이상의 코드 행으로 하나의 PYT 파일을 생성한다는 아이디어가 나에게는 좋지 않아서 "pythonic"방식이 아니라고 생각합니다.


1
"500-1000 줄 이상의 코드로 하나의 PYT 파일을 생성한다는 아이디어는 나에게는 좋지 않습니다." 혼자가 아니야, 알렉스 오늘 저는 .pyt가 아픈 마음의 발명이라고 즉시 말했습니다. 그리고 후회하지 않을 것입니다.
Remigijus Pankevičius

답변:


17

ArcGIS 포럼 에서이 스레드 를 살펴보십시오 . 기본적으로 표준 파이썬 모듈이나 패키지 구조를 사용하고 툴을 파이썬 툴박스로 가져옵니다.

다음과 같은 것 :

#  \--SomeDir
#     |  toolbox.pyt
#     \--toolpackage
#        |  __init__.py
#        |  script_a.py
#        |  script_b.py


#----------------------------
#The .pyt file
#----------------------------

import arcpy
import toolpackage.script_a.Tool1 as Tool1
import toolpackage.script_a.Tool2 as Tool2
import toolpackage.script_b.Tool3 as Tool3

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

        # List of tool classes associated with this toolbox
        self.tools = [Tool1, Tool2, Tool3]

ArcGIS Desktop에서 정상적으로 작동한다는 것을 알았지 만 지오 프로세싱 서비스를 ArcGIS Server 인스턴스에 게시하면 .pyt 파일과는 별도로 모든 스크립트와 패키지가 손실됩니다. 스크립트를 배포에 수동으로 드롭 할 수 있지만 복잡성이 증가합니다.
Gnat

3
@Gnat 예, Luke의 생각은 저의 경험이기도합니다. ESRI의 출판 서비스는 from x import y스타일 가져 오기를 인식하지 못합니다 . (그런데 그것은 전적으로 우스운 일입니다.) 그러나 나는 당신이 self.tools정의를 내버려 두고 사용할 수 있다고 믿습니다 import toolpackage.script_a.Tool1 as Tool1.
jpmc26

1
별명은 짧게하고 문자 만 포함해야합니다, 즉 self.alias = "MTT"
커티스 가격

2
방금 툴 코드를 변경하고 Arcmap의 툴 GUI에 반영 된 것처럼 보였으므로 이것을 공유하고 싶습니다. pyt 파일 외부에서 코드를 변경하고 gui 도구에 반영된 것을 보려면 ArcMap / Catalog를 다시 시작해야합니다. 도구 상자에서 새로 고침을 누르면 pyt 자체를 다시로드하는 것처럼 보입니다. 다른 코드의 변경 사항을 찾지 못했습니다.
TurboGus

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.