ArcPy의 메모리 작업 공간에서 설정 하시겠습니까?


11

env.workspace = "in_memory"ArcGIS Pro와 ArcGIS 10.2.2 (또는 10.3) 아키텍처를 모두 사용하여 ArcPy 에서 설정할 수 있습니까?

내가하려고하는 것은 디스크와 달리 메모리에 쓰여진 스냅 붓기 작업 의 출력을 얻는 것 입니다.

디스크에 쓴 다음 메모리로 가져올 수 있다는 것을 알고 있지만 도움이되지 않습니다. 다음 프로세스에 대한 입력으로 필요한 프로세스의 출력을 실제 매체에 쓰는 사용을 최소화하는 일련의 작업을 최적화하려고합니다.

답변:


15

지금까지 두 답변이 100 % 정확하지 않기 때문에 여기에 답변을 던질 것입니다.

도구마다 다를 수있는 두 가지 항목이 있습니다.

  1. 작업 공간 환경을 준수하는 경우 (이 항목은 항상 도구 도움말 페이지에 문서화되어 있음)
  2. in_memory작업 공간 을 사용할 수있는 경우 (이 항목은 명시 적으로 문서화되어 있지 않을 수 있습니다. 지원하지 않는 경우 메모가 표시 될 가능성이 높습니다 in_memory)

"환경 작업 공간을 in_memory로 설정할 수 있습니까?" 대답은 '예'입니다.

>>> import arcpy
>>> arcpy.env.workspace = r"in_memory"
>>> arcpy.CopyFeatures_management(r"c:\temp\foo.shp", "myinmemoutput")
<Result 'in_memory\\myinmemoutput'>
>>> arcpy.Exists("myinmemoutput")
True

Snap Pour Point 는 문서와 설명 된 Python 샘플에 따라 작업 공간 환경을 존중합니다. 그리고 테스트는 in_memory변수 참조에 출력을 작성 하고 변수 참조를 사용하여 다른 도구에 넣거나 결과를 저장할 수 있음을 보여줍니다.

>>> import arcpy
>>> arcpy.env.workspace = r"in_memory"
>>> arcpy.CheckOutExtension("SPATIAL")
u'CheckedOut'
>>> snapOut = arcpy.sa.SnapPourPoint("e:/gpservices101/hydro/US30m/test.gdb/sourcepoint", "e:/gpservices101/hydro/US30m/Region08a/Input/elev_cm", 1,"PourPtID")
>>> snapOut
in_memory\SnapPou_sour1
>>> arcpy.Exists(snapOut)
True
>>> snapOut.save(r"c:\temp\todisk.tif")
>>> arcpy.Exists(r"c:\temp\todisk.tif")
True

-1

불행히도, 귀하의 질문과 같이 작업 공간을 in_memory 위치로 설정하는 것은 가능하지 않다고 생각합니다. 이러한 방식으로 지오 프로세싱 도구는 기본적으로 출력 위치를 in_memory 작업 공간으로 설정합니다.

방금 작업 공간을 '\\in_memory'직접 설정하려고 시도 했으며 간단한 CopyFeatures_management()도구 실행으로 테스트했습니다 . 의 문자열 표현 arcpy.env.workspace은 실제로로 설정되어 '\\in_memory'있지만 CopyFeatures_management()이 경우 도구가 작업 공간 환경 설정을 존중하지 않는다고 생각합니다 .

in_memory지도 문서 수준에서 기본 작업 공간으로 설정할 수 있다면 좋을 것 입니다. 이것을 ArcGIS Idea 로 제기 할 수 있습니까?

최고의 행운.

편집하다:

Snap Pour Point Tool을 사용하고 있기 때문에 다른 방법으로 접근해야 할 수도 있습니다. 타설 점 스냅은 타설 점 피쳐 클래스에서 직접 작동하는 것으로 보이며 도구 결과의 일부로 출력 피쳐 클래스를 생성하지 않습니다. 타설 지점의 임시 in_memory 복사본을 만들어 거기서 작업 할 수 있습니까?

편집 편집 :

아 사실, 당신은 이미 이것을 깨달았다 고 언급했습니다. 죄송합니다.


나는 그것을 할 수 있습니다 (ArcGIS 아이디어). 사람들이 왜이 질문에 투표하는지 궁금합니다. 나는 당신에게 Jim이 굉장 할 것이라고 동의합니다.
모르는 경우

아, 지금 질문을 받겠습니다. 예 Jim은 맞습니다. 작업 공간을 그렇게 설정하면 아무 효과가 없습니다. 개별 프로세스에 대해 in_memory를 지정해야합니다. 해당 동작으로 기본값을 설정할 수 없습니다.
토마스

1
다운 투표는 귀하의 질문의 짧은 길이에서 비롯된 것일 수 있습니다. 나는 당신이 무엇을 의미하는지 알 것입니다. 어쩌면 더 많은 컨텍스트로 질문을 편집하고 다른 사람들은 다시 투표 할 것입니까?
Jim

좋아, 그것은 그것을 플러 프 할 필요가없는 직접적인 질문입니다. 당신이 말하는대로하겠습니다.
모르는 경우

다른 방법이 있는지 확인하기 위해 질문을 다시 작성했습니다.
모르는 경우
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.