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.