Dans ArcGIS Desktop, il existe un outil appelé Créer une couche à partir des entités sélectionnées . À l'aide de cet outil, je peux convertir une sélection en couche dans ArcMap.
Je pense qu'il y a une "liste d'entités" qui est intégrée dans la couche quelque part qui isole les entités à afficher sur la carte.
J'aurais pensé que la "liste des fonctionnalités" aurait été stockée dans une where
clause dans une requête de définition en tant que liste de objectids
. Par exemple: where objectid in(123,456,789,...)
. Cependant, ce n'est pas le cas.
Si la couche n'a pas de WHERE
clause ou de requête de définition, comment la liste des entités est-elle stockée?
Réponses:
Créer un calque à partir des entités sélectionnées NE crée PAS un calque DYNAMIQUE . La couche résultante n'est pas dynamique du tout. Il est basé sur un FIDset.
Si vous modifiez les données source, les FID changeront et votre couche de sélection se cassera.
Il n'y a pas de clause where dans une couche de sélection. Il est basé sur FIDset (les FID qui ont été sélectionnés lorsque vous avez utilisé «Créer une couche à partir d'entités sélectionnées»).
Veuillez noter que si vous ajoutez ou supprimez des enregistrements des données source, les FID changeront et votre couche de sélection affichera des enregistrements incorrects.
Vous confondez la couche de sélection avec une couche de requête, qui stocke une clause where et est dynamique.
MODIFIER: La liste des fonctionnalités d'une couche de sélection est stockée en mémoire. Il n'est pas recommandé d'utiliser des calques de sélection autres que pour un travail temporaire car il n'y a aucun moyen de récupérer la sélection d'origine une fois le calque de sélection rompu.
Pour trouver la liste des fonctionnalités dans une couche de sélection, vous pouvez utiliser de nombreuses méthodes différentes, dont SearchCursor, pour créer une liste d'ID.
Quelque chose comme ça:
Extrait du commentaire de crmackey :
Il existe également un moyen intégré de décrire pour obtenir le FIDSet. Ceci est une chaîne, mais est facile à convertir en liste:
la source
FIDSet
. Ceci est une chaîne, mais est facile à convertir en liste:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
La meilleure façon dont j'ai compris comment
Create Layer from Selected Features
est cette référence que j'ai rencontrée Créer une couche temporaire pour sélectionner les entitésLe mécanisme qui peut lire dans cet espace disque serait de savoir comment accéder à "l'ensemble des résultats"
En outre, comme mentionné précédemment et Esri le couvrent Travailler avec des fonctionnalités sélectionnées ,
En outre, voici plus de discussion en tant que lecture générale, Utilisation de l'espace de travail en mémoire , liée à l'
in_memory
espace de travail. Ceci est juste destiné à des informations supplémentaires si vous étiez intéressé.la source
Je suppose que la couche de
Create Layer From Selected Features
n'est pas basée sur uneWHERE
clause ou une condition logique, car le jeu de sélection peut être créé sans impliquer de logique.Par exemple, vous pouvez ajouter / supprimer manuellement toutes les fonctionnalités du jeu de sélection à l'aide du menu principal en faisant par exemple glisser une case, qui peut provenir de l'un des précédents Select by Attributes / Location.
Je suppose que l'ensemble de sélection (
IFeatureSelection
) n'est qu'un ensemble complet de résultats (contenant des copies des ID de la couche d'origine), plutôt que les règles définissant l'ensemble de résultats. D'où l'avertissement dans la documentation liée que les ID peuvent devenir invalides si les ID de la couche d'origine changent.la source