ArcGIS ModelBuilder가 수동 편집을 위해 Excel 파일을 연 다음 해당 편집 내용을 모델로 다시 공급할 수 있습니까?


10

ArcGIS ModelBuilder를 사용하여 모델을 생성하는 작업을 맡았습니다. 처음에는 몇 가지 지오 프로세싱 작업을 실행 한 다음 Excel 테이블을 해당 지오 프로세스의 결과에 조인했습니다. 그러나 사용자가 편집 한 내용을 저장하고 파일을 닫기 전에 모델에서 실제로 Excel 파일을 먼저 열어야합니다. 그런 다음 모델이 여러 다른 지리 처리 작업을 계속하기 전에 모델이이 Excel 파일을 데이터 집합의 특성 테이블 (여전히 모델의 일부)에 결합 할 것으로 예상됩니다.

요점을 설명하는 데 도움이되도록 아래에 개략적 인 개요를 포함 시켰습니다 (처음부터 이해가되지 않을 수도 있음을 이해합니다).

Excel 파일을 편집하는 동안 모델이 일시 중지 된 다음 저장하고 닫으면 다시 시작합니다.

따라서 모델이 실행되고, 두 개의 지오 프로세싱 작업을 완료하고, Excel 파일을 열기 위해 일시 ​​정지하고, 사용자가 편집 할 때까지 기다렸다가 저장 한 후 닫습니다. Excel 파일을 속성 테이블에 조인 한 다음 숫자를 실행하기 전에 다른 지오 프로세싱 작업

나는 이것이 파이썬 스크립트를 모델에 통합해야한다고 상상해야합니다. 현재 저는 개념이 실제로 가능한지 아닌지 알고 싶습니다.


1
표준 모델 빌더 도구를 사용하면 모델을 일시 중지 할 수있는 방법이 없으므로이 작업을 수행 할 수 없으므로 사용자가 모델을 다시 시작하기 위해 Excel을 닫았다 고 말하는 트리거가 필요합니다. 별도의 프로세스 (Excel)를 생성 한 후 텍스트 파일의 플래그를보고 무한 루프로 보낸 일종의 스크립트 로이 작업을 수행 할 수 있습니까? 나는 그런 짓을 한 적이 없으며 함정이 무엇인지 모른다. modelbuilder에 유지하려면 먼저 Excel 편집을 수행 한 다음 모델을 실행하십시오.
Hornbydd

감사합니다 @ Honbydd-나는 같은 생각을했습니다. 먼저 파일을 편집 한 다음 모델을 실행하는 것이 내가 제안한 것이지만 하나의 통합 모델이어야한다는 말을 들었습니다.
the_bonze

1
스크립트가 파일의 날짜 및 시간 스탬프를보고 파일이 편집되었는지 알 수 있다고 생각한 다음 거기서 모델을 다시 시작할 수 있습니까? 일시 정지가 문제라고 생각합니다.
the_bonze

예, 모델 빌더는 워크 플로우를 자동화하여 중간에 불확실한 일시 정지가없는 처리 속도를 높이도록 설계되었습니다. 예를 들어 사용자가 점심을 먹으면 어떻게 되나요? :) 지금 나처럼!
Hornbydd

답변:


1

이것은 ModelBuilder의 모델보다 더 많은 사용자 정의 Python 도구를 개발 해야하는 것처럼 들립니다. xlwt또는 http://www.python-excel.org/xlutils 에서 Excel 파일에 쓰도록 허용합니다 ( xlsx 파일 처리). 편집 내용이 경미한 경우 표준 ArcToolbox 도구 (일부 창의성)에 통합 할 수 있습니다. 10.1 이상을 사용하는 경우 Python Add-In 또는 Python Toolbox를 만들어 GUI가 작동하도록 할 수 있습니다.XlsxWriter


Python AddIns는 이미 10.1+에서 정교한 GUI 옵션을 제공합니까? .NET과 Java AddIn만이 이것을 제공한다고 생각했습니다 ... 파이썬은 GUI (명령, 도구)없이 AddIn 만 제공합니다.
Jürgen Zornig 2014

1
@ JürgenZornig 쉽지 않습니다 : anothergisblog.blogspot.com/2013/07/…
Chad Cooper

감사합니다 @ChadCooper. 모델을 모델 빌더로 유지해야하므로 Python 추가 기능은 훌륭하지만 엔티티로서의 모델은 완전한 Python 도구가 아닌 모델 빌더에 있어야합니다.
the_bonze

@Chad 감사합니다.이 멋진 ArcPy / Tkinter 빠른 시작 자습서를 사용해 주셔서 감사합니다.
Jürgen Zornig

1

나는 그것에 대해 생각하고 있으며 새로운 해결책을 찾았을 수도 있습니다. 도구 상자에서 두 개의 사용자 매개 변수 (첫 번째로 Excel EXE의 위치)를 사용하여 Python 스크립트를 설정합니다. 하드 코드 가능성이있는 파일 경로 위치 (Office12, Office13 등)의 목록을 확인하기 위해 스마트하게 코딩 할 수도 있습니다.

다음으로 subprocess.call 함수를 사용하십시오. 이 방법을 사용하는 데있어 정말 좋은 점이 있습니다.

  1. 외부 라이브러리가 필요하지 않습니다
  2. 호출 함수는 스크립트가 닫힐 때까지 스크립트를 계속할 수 없습니다.
  3. 엑셀 문서를 두 번째 인수로 지정할 수 있습니다
  4. 한 줄의 코드입니다!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

유일한 것은 이것이 모델 빌더에서 작동하는지 100 % 확신하지 못한다는 것입니다. 이것은 테스트해야하지만, 왜 그렇지 않을지 알지 못하지만 Arc가 기질적인 짐승.

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