ArcGIS ModelBuilder에 임의의 코드를 추가 하시겠습니까?


11

임의의 코드 스 니펫을 ArcGIS 모델에 추가 할 수있는 방법이 있습니까?

고급 레이블링 또는 필드 계산기 에서 "빌드 코드 블록"식 작성기와 비슷한 것을 구상합니다 .

예를 들어, 현재 진행중인 프로젝트는 도구를 실행하는 사람의 사용자 이름을 가져 오는 데 큰 도움이 될 수 있습니다. 나는 파이썬에서 이것이 간단하다는 것을 안다 import os; os.environ.get('USERNAME'). 이 조각을 get_username.py에 쓰고 Arccatalog의 도구 상자에 추가 한 다음 해당 도구를 모델에 추가하고 현재 도구의 필수 모델 매개 변수로 사용할 수 있다고 생각합니다. 그런 작은 일에는 많은 작업이 있으며 다음에는 인라인 변수 대체 또는 복합 변수 와 같은 다른 것을 원할 수 있습니다 .

코드 스 니펫 도구 또는 이와 유사한 도구가 이러한 모든 요구를 일반적으로 광범위하게 유용한 방식으로 해결할 수 있다고 생각합니다.


미친 생각 : 식 작성기 대신 모델을 재사용 할 수 있는 파이썬 명령 줄 창 은 어떻습니까?
매트 윌키

2
실제로 내가 실제로 따르는 것은 arcgis 도구와 같은 방식으로 모델 작성기에 노출되는 전체 Python 라이브러리입니다. 그러나 그것은 단지 미친 이야기입니다 (맞습니까?)
matt wilkie

좋은 생각이야! 코드 스 니펫을 스 니펫을 처리하고 결과를 반환하는 "도구"로 즉석에서 작성하고 싶습니까? 따라서 귀하의 예에서 "도구"는 <현재 사용자 이름>을 반환하여 다른 도구 다운 스트림에 적용 할 수 있습니다.
RyanKDalton

@RyanDalton, 네 맞습니다.
matt wilkie

답변:


3

이를 위해 재사용 가능한 모델을 작성하는 방법을 명확히하기 위해 이전 게시물에 대한 새로운 답변.

모델, 삽입-> 모델 전용 도구-> 값 계산을 엽니 다.

표현식에 다음을 입력하십시오. getuser()

코드 블록에 다음을 입력하십시오.

def getuser():
    import getpass
    return getpass.getuser()

( @ChadCooper의 사용자 이름 코드 스 니펫 소스는 " 특정 형식의 사용자 이름 가져 오기 "를 참조하십시오 )

데이터 유형으로을 선택합니다 String.

여기에 이미지 설명을 입력하십시오

출력 원의 이름을로 바꿉니다 username. 최종 결과 모델은 다음과 같습니다. 값 계산 도구 사용

그런 다음이 모델을 향후 모델로 끌어서 향후 모델 또는 스크립트에서 % username %라는 변수를 참조하면됩니다. % username % 변수에 액세스하기 전에이 모델이 실행 중인지 확인하십시오. 전제 조건 을 사용하여이를 수행 할 수 있습니다 .


Ryan은 아마도 출력이 [P] arameter 인 이유를 확장하고 다른 모듈에 포함 된 모듈의 예를 보여줄 수 있습니다. 매개 변수가 일반적으로 입력에 관한 것이므로 출력에 P가 왜 필요한지 처음에는 매우 혼란 스러웠습니다.
matt wilkie

@mattwilkie, python 스크립트는 시스템의 입력을 "읽기"때문에 입력 매개 변수가 필요하지 않습니다. 그러나 결과를 다른 모델 또는 파이썬 스크립트에 사용할 수 있도록 출력 (사용자 이름)을 매개 변수로 만들어야합니다. 다음 단계는 username 매개 변수를 "email script"와 같은 것으로 전달하여 자동으로 "es"전자 메일 주소의 입력으로 uesrname 출력 매개 변수를 사용합니다.
RyanKDalton

10

실제로는 값 계산 (데이터 관리) 도구를 사용 하여이 작업을 수행 할 수 있습니다 .

특히 우아하지는 않지만 (툴의 전체 소스 코드는 실행될 때마다 로그에 인쇄됩니다) 편집기 (실제로 텍스트 상자)는 어렴풋합니다.

함수를 가져오고 호출 할 수있는 모듈을 작성하는 것이 좋습니다. 그런 다음 대화 상자에서 매우 짧은 스 니펫 만 작성하면됩니다. 그렇지 않으면 매우 깨끗하지 않습니다.

값 계산은 Arcgis v10의 모든 라이센스 수준에서 사용할 수 있습니다. v9.x에서는 Spatial 또는 3D Analyst 확장이 설치된 경우에만 Arcview에서 사용할 수 있습니다 ( ref ).


감사합니다! 이것은 오늘 필요한 것 ( %USERNAME%.sde 데이터베이스 연결에 삽입) 에 아주 효과적이었습니다 . 편집자는 그 이름에 합당하지 않다는 데 동의했으며 붙여 넣기 대상으로 잘 작동합니다.
매트 윌키

1
re : 9.x에서 CV 도움말 페이지의 문구는 SA / 3D 확장이 단순히 설치된 경우 도구를 사용할 수 있음을 나타냅니다 . 확장 라이센스가 없거나 활성화되지 않은 상태에서 사용할 수 있습니다.
매트 윌키

"가져올 수있는 모듈을 작성하는 것이 좋습니다."-정말 좋은 생각입니다!
커티스 가격

2

아마도 나는 그 질문을 오해하고 있지만 ArcToolBox 내의 파이썬 스크립트 도구 기능은 당신이 찾고있는 것 같습니다 :

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Integrating_scripts_within_a_model/002w0000006n000000/

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001500000006000000.htm

실제로 여러 다른 스크립팅 언어를 사용 / 결합 할 수 있습니다 (이 예에서는 R).

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w0000007w000000



3
이 작품,하지만 매트는 특히이 방법 : 자신의 질문에 "그런 작은 일을 위해 많은 일"이라고 (그리고 내가 어떻게 할 것입니다)
nmpeterson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.