Pengaturan di ruang kerja memori di ArcPy?

11

Apakah mungkin untuk mengatur env.workspace = "in_memory"di ArcPy menggunakan arsitektur ArcGIS Pro dan ArcGIS 10.2.2 (atau 10.3)?

Apa yang saya coba lakukan adalah mendapatkan output dari operasi snap pour point ditulis ke memori sebagai lawan disk.

Saya sadar saya bisa menulis ke disk lalu membawanya ke memori tetapi ini tidak akan membantu. Saya mencoba untuk mengoptimalkan serangkaian tugas meminimalkan penggunaan penulisan ke media fisik output dari suatu proses yang hanya diperlukan sebagai input untuk proses selanjutnya.

Jika Anda tidak tahu- hanya GIS
sumber

Jawaban:

15

Saya akan memberikan jawaban di sini karena kedua jawaban sejauh ini tidak 100% benar.

Ada 2 item yang dapat bervariasi dari alat ke alat.

  1. jika itu menghormati lingkungan ruang kerja (item ini selalu didokumentasikan pada halaman bantuan alat)
  2. jika dapat menggunakan in_memoryruang kerja (item ini mungkin tidak didokumentasikan secara eksplisit. Anda lebih cenderung melihat catatan jika TIDAK TIDAK mendukung in_memory)

Untuk hanya menjawab "Anda dapat mengatur ruang kerja lingkungan ke in_memory". Jawabannya iya.

>>> 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 menghormati lingkungan kerja sesuai dengan dokumentasi dan menjelaskan sampel Python. Dan tes menunjukkan Anda dapat menulis output ke in_memorydan bekerja dengan referensi variabel itu ... untuk dimasukkan ke alat lain, atau simpan hasilnya

>>> 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
KHibma
sumber
-1

Sayangnya, saya tidak berpikir mengatur ruang kerja ke lokasi in_memory seperti dalam pertanyaan Anda mungkin; Sedemikian rupa sehingga alat geoprocessing akan default lokasi output mereka ke ruang kerja in_memory.

Saya baru saja mencoba mengatur ruang kerja untuk '\\in_memory'diri saya sendiri, dan mengujinya dengan CopyFeatures_management()menjalankan alat sederhana . Representasi string arcpy.env.workspacememang diatur untuk '\\in_memory', tapi saya pikir CopyFeatures_management()alat ini tidak menghargai pengaturan lingkungan kerja dalam kasus ini.

Akan luar biasa, jika kita dapat menetapkan in_memorysebagai ruang kerja default di tingkat dokumen peta. Mungkin Anda bisa mengangkat ini sebagai Ide ArcGIS?

Keberuntungan terbaik.

EDIT:

Hai saya berpikir juga karena Anda menggunakan Snap Pour Point Tool, kita mungkin perlu melakukan pendekatan dengan cara yang berbeda. Snap Pour Point tampaknya bertindak langsung pada kelas fitur pour points dan tidak membuat kelas fitur output sebagai bagian dari hasil alat. Bisakah kita membuat salinan sementara dari titik tuangkan dan bekerja dari sana?

EDIT ke EDIT:

Oh benar, ok kamu sudah menyebutkan kamu sudah menyadari ini - maaf.

Jim
sumber
Saya dapat melakukan itu (ide ArcGIS). Saya bertanya-tanya mengapa orang akan memilih pertanyaan ini? Saya setuju dengan Anda, Jim, itu akan luar biasa.
Jika Anda tidak tahu- hanya GIS
Ah saya mendapat pertanyaan sekarang. Ya, Jim benar, mengatur ruang kerja seperti itu tidak menghasilkan apa-apa. Anda harus menentukan in_memory untuk proses individual Anda. Anda tidak dapat menjadikannya default dengan perilaku itu.
Thomas
1
Suara turun mungkin berasal dari pertanyaan Anda. Saya mengerti maksud Anda - mungkin mengedit pertanyaan Anda sedikit dengan lebih banyak konteks dan orang lain akan memilihnya kembali?
Jim
Ok, Ini adalah pertanyaan langsung yang saya tidak melihat kebutuhan untuk mengatasinya. Saya akan melakukan apa yang Anda katakan.
Jika Anda tidak tahu- hanya GIS
pertanyaan ulang untuk melihat apakah ada cara lain.
Jika Anda tidak tahu- hanya GIS