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.