Python 및 ArcGIS Desktop을 사용하여 여러 열로 다중 값 매개 변수를 구현합니까?


10

ArcGIS (9.3) Python 스크립트를 작성 중입니다. 입력 중 하나는 기능 목록입니다. 각 기능마다 해당 필드를 선택해야합니다. 매개 변수를 MultiValue로 설정하면 처리중인 모든 기능에 대해 UI에 멋진 테이블이 제공됩니다. 각 기능에 대한 필드를 선택하기 위해 MultiValue 테이블에 다른 열을 추가하려면 어떻게합니까?

교차 게시 : http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

ArcGIS 포럼에서 Esri의 답변 :

불행히도, 이것에 대한 솔루션은 스크립트 도구에 대한 ValueTable 입력으로 최근 10.1에 대해 구현되었습니다. 9.3.1에서이 작업을 수행하려면 약간의 사용자 지정 유효성 검사와 함께 두 개의 다중 값 매개 변수가 있어야합니다.


관심있는 다중 값 선택 목록 생성 인 경우- 최근 이 Esri 블로그 게시물을 보았을 때 도움이 될 수 있습니다.
Alex Tereshenkov

답변:


1

상당히 간단한 방법 으로이 작업을 수행하는 방법을 연구했습니다. 많은 FeatureLayer를 추가 한 다음 각 레이어의 ID 필드를 선택하는 다중 값 매개 변수를 만들고 싶었습니다. 작동하지만 필드를 드롭 다운 목록으로 만드는 방법을 사용할 수 없으므로 사용자가 필드 이름을 수동으로 입력해야합니다. 인터페이스는 다음과 같습니다.

인터페이스 예

누군가이 문제를 해결했거나 ESRI의 전문가가 지식으로 우리를 축복하면 내 두 번째 열 (사이트 ID)을 드롭 다운으로 바꾸어 특정 필드를 나열하는 방법을 찾고 싶습니다. 이 예제를 보려면 TIN 작성 도구를 살펴보십시오 .

어쨌든이 인터페이스를 만들려면 스크립트 도구를 만들고 피처 레이어 유형의 매개 변수를 추가하고 아래와 같이 다중 값으로 설정했습니다.

초기 인터페이스 설정

그런 다음 상단의 유효성 검사 탭을 클릭 한 다음 편집 버튼을 클릭하십시오. 이 매개 변수는 스크립트 도구의 6 번째 매개 변수이므로 다음 코드를 업데이트했습니다.

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

이것은 내가 원하는 다중 열 테이블로 인터페이스를 재설정합니다. GetParameterAsText를 사용하면 내 예제를 사용하여 다음을 반환합니다.

pipeline pid;Dredging did


더 많은 연구를하고 파이썬 도구 상자를 사용하여 도구를 만들었습니다. 잘 작동하지만 다른 ID를 선택하면 제한이 있습니다. 나는 GeoNet에 코드를 게시 여기에 .


0

사이트 ID 매개 변수에 대한 드롭 다운 목록을 찾으려면 다음과 같이 코드를 사용할 수 있습니다.

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

따라서 커서를 만들거나 다른 방법을 사용하여 FC의 모든 필드를 읽고 목록으로 이전 문장에 전달할 수 있습니다

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