Impostazione nell'area di lavoro della memoria in ArcPy?


11

È possibile impostare env.workspace = "in_memory"in ArcPy utilizzando le architetture ArcGIS Pro e ArcGIS 10.2.2 (o 10.3)?

Quello che sto cercando di fare è ottenere l'output di un'operazione del punto di scorrimento dello snap scritta nella memoria anziché sul disco.

Mi rendo conto che potrei scrivere su disco e portarlo in memoria, ma questo non sarebbe d'aiuto. Sto cercando di ottimizzare una serie di attività minimizzando l'uso della scrittura su supporti fisici l'output di un processo che è semplicemente richiesto come input per il processo successivo.

Risposte:


15

Ho intenzione di dare una risposta qui perché entrambe le risposte finora non sono corrette al 100%.

Ci sono 2 articoli che possono variare da strumento a strumento.

  1. se onora l'ambiente di lavoro (questo elemento è sempre documentato nella pagina di aiuto dello strumento)
  2. se può fare uso dell'area di in_memorylavoro (questo elemento potrebbe non essere esplicitamente documentato. È più probabile che tu veda una nota se NON supporta in_memory)

Per rispondere semplicemente al "puoi impostare lo spazio di lavoro dell'ambiente su in_memory". La risposta è si.

>>> 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 rispetta l'ambiente di lavoro per la sua documentazione e ha spiegato esempi di Python. E un test mostra che puoi scrivere l'output in_memorye lavorare con quel riferimento variabile ... per metterlo in un altro strumento o salvare il risultato

>>> 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

Sfortunatamente, non credo sia possibile impostare l'area di lavoro nella posizione in_memory come nella tua domanda; In questo modo gli strumenti di geoprocessing imposteranno le loro posizioni di output sullo spazio di lavoro in_memory.

Ho appena provato a impostare lo spazio di lavoro su '\\in_memory'me stesso e l'ho testato con una semplice CopyFeatures_management()esecuzione di strumenti. La rappresentazione in formato stringa di arcpy.env.workspaceè effettivamente impostata su '\\in_memory', ma CopyFeatures_management()in questo caso lo strumento non rispetta l'impostazione dell'ambiente di lavoro.

Sarebbe fantastico, se potessimo impostare in_memorycome area di lavoro predefinita a livello del documento della mappa. Forse potresti sollevarlo come un'idea ArcGIS?

Buona fortuna.

MODIFICARE:

Ehi, stavo pensando anche dal momento che stai usando lo strumento Snap Pour Point , potremmo aver bisogno di affrontarlo in un modo diverso. Snap Pour Point sembra agire direttamente sulla classe caratteristica punti di scorrimento e non crea una classe caratteristica di output come parte del risultato dello strumento. Potremmo creare una copia temporanea, in_memoria dei punti di scorrimento e lavorare da lì?

EDIT to EDIT:

Oh vero, ok hai detto che te ne rendi conto già - scusa.


Potrei farlo (idea di ArcGIS). Mi chiedo perché la gente dovrebbe votare questa domanda? Sono d'accordo con te, Jim, sarebbe fantastico.
— Se non lo sapete, basta GIS il

Ah ho la domanda ora. Sì, Jim ha ragione, l'impostazione dell'area di lavoro in questo modo non fa nulla. Devi specificare in_memory per i tuoi singoli processi. Non è possibile ripristinarlo con quel comportamento.
— Thomas,

1
Il voto negativo potrebbe essere venuto dalla breve domanda. Capisco cosa intendi dire: forse modifica un po 'la tua domanda con un po' più di contesto e altri la voteranno di nuovo?
— Jim,

Ok, è una domanda così diretta che non ho visto la necessità di rigonfiarlo. Farò come dici tu.
— Se non lo sapete, basta GIS il

domanda riformulata per vedere se esiste un altro modo.
— Se non lo sapete, basta GIS il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.