Suite

Configuration dans l'espace de travail en mémoire dans ArcPy ?

Configuration dans l'espace de travail en mémoire dans ArcPy ?


Est-il possible de définirenv.workspace = "in_memory"dans ArcPy en utilisant à la fois les architectures ArcGIS Pro et ArcGIS 10.2.2 (ou 10.3) ?

Ce que j'essaie de faire, c'est d'écrire le résultat d'une opération de point d'écoulement instantané dans la mémoire plutôt que sur le disque.

Je me rends compte que je pourrais écrire sur le disque puis le mettre en mémoire, mais cela n'aiderait pas. J'essaie d'optimiser une série de tâches en minimisant l'utilisation de l'écriture sur un support physique de la sortie d'un processus qui est simplement requise comme entrée pour le processus suivant.


Je vais donner une réponse ici car les deux réponses jusqu'à présent ne sont pas correctes à 100%.

Il y a 2 éléments qui peuvent varier d'un outil à l'autre.

  1. s'il respecte l'environnement de l'espace de travail (cet élément est toujours documenté sur la page d'aide de l'outil)
  2. s'il peut utiliser leen mémoireespace de travail (cet élément peut ne pas être explicitement documenté. Vous êtes plus susceptible de voir une note s'il NE prend PAS en chargeen mémoire)

Pour répondre simplement au "pouvez-vous définir l'espace de travail de l'environnement sur in_memory". La réponse est oui.

>>> importer arcpy >>> arcpy.env.workspace = r"in_memory" >>> arcpy.CopyFeatures_management(r"c:	empfoo.shp", "myinmemoutput")  >>> arcpy.Exists("myinmemoutput") Vrai

Snap Pour Point respecte l'environnement de l'espace de travail selon sa documentation et les exemples Python expliqués. Et un test montre que vous pouvez écrire la sortie suren mémoireet travailler avec cette référence de variable… pour la mettre dans un autre outil, ou enregistrer le résultat

>>> 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_memorySnapPou_sour1 >>> arcpy.Exists(snapOut) Vrai >>> snapOut.save(r"c:	emp	odisk.tif") >>> arcpy.Exists(r"c:	emp	odisk.tif") Vrai

Malheureusement, je ne pense pas qu'il soit possible de définir l'espace de travail sur l'emplacement in_memory comme dans votre question; De manière à ce que les outils de géotraitement utilisent par défaut leurs emplacements de sortie dans l'espace de travail in_memory.

Je viens d'essayer de définir l'espace de travail sur'en mémoire'moi-même, et l'ai testé avec un simpleCopyFeatures_management()outil exécuté. La représentation sous forme de chaîne dearcpy.env.espace de travailest en effet réglé sur'en mémoire', mais je pense queCopyFeatures_management()l'outil ne respecte pas le paramètre d'environnement de l'espace de travail dans ce cas.

Ce serait génial si nous pouvions définiren mémoirecomme espace de travail par défaut au niveau de la carte. Peut-être pourriez-vous soulever cela en tant qu'idée ArcGIS ?

Bonne chance.

ÉDITER:

Hé, je pensais aussi puisque vous utilisez l'outil Snap Pour Point, nous devrons peut-être aborder cela d'une manière différente. L'accrochage au point d'écoulement semble agir directement sur la classe d'entités des points d'écoulement et ne crée pas de classe d'entités en sortie dans le cadre du résultat de l'outil. Pourrions-nous créer une copie temporaire en mémoire des points d'écoulement et travailler à partir de là ?

MODIFIER pour MODIFIER :

Oh vrai, d'accord, vous avez mentionné que vous le réalisez déjà - désolé.


Voir la vidéo: Formation au concours SIG - Decouvrez SuperMap iDesktop In French