ArcPyのメモリワークスペースに設定しますか?


11

env.workspace = "in_memory"ArcGIS ProとArcGIS 10.2.2(または10.3)アーキテクチャの両方を使用してArcPyで設定することはできますか?

私がやろうとしているのは、ディスクではなくメモリに書き込まれたスナップ流動点操作の出力を取得することです。

私はディスクに書き込み、それをメモリに持ち込めることを理解していますが、これは役に立ちません。次のプロセスへの入力としてのみ必要なプロセスの出力を物理メディアへの書き込みの使用を最小限に抑える一連のタスクを最適化しようとしています。

回答:


15

これまでのところ、両方の答えが100%正しくないため、ここで答えを投げます。

ツールごとに異なる2つの項目があります。

  1. ワークスペース環境を尊重する場合(この項目は常にツールのヘルプページに記載されています)
  2. in_memoryワークスペースを使用できる場合(この項目は明示的に文書化されていない場合があります。サポートしていない場合は、メモが表示される可能性が高くなりますin_memory

「環境ワークスペースをin_memoryに設定できますか?」答えはYESです。

>>> 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のアイデアとして上げることができますか?

幸運。

編集:

スナッププールポイントツールを使用しているので、私も考えていたので、これとは異なる方法でアプローチする必要があるかもしれません。流出点スナップは、流出点フィーチャクラスに直接作用するように見え、ツール結果の一部として出力フィーチャクラスを作成しません。流動点の一時的なメモリ内コピーを作成し、そこから作業できますか?

編集して編集:

ああ、そうだ、あなたはすでにこれを実現していると言った-申し訳ありません。


私はそれをするかもしれません(ArcGISのアイデア)。なぜ人々はこの質問に投票するのだろうか?私はあなたにジム、それは素晴らしいだろうことに同意します。
知らない場合-GISだけで

ああ、私は今質問を受け取ります。はい、ジムは正しいです。そのようなワークスペースを設定しても何も起こりません。個々のプロセスにin_memoryを指定する必要があります。その動作でデフォルトに戻すことはできません。
トーマス

1
反対票はあなたの質問の短い長さに由来するかもしれません。私はあなたの意味を理解しています-多分あなたの質問をもう少し文脈で編集し、他の人はそれを投票するでしょうか?
ジム

わかりました、それは私がそれを綿毛にする必要性を見なかったそのような直接的な質問です。あなたが言うようにやります。
知らない場合-GISだけ

別の方法が存在するかどうかを確認するために質問を言い換えました。
知らない場合は、GISのみ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.