J'ai une classe d'entités avec plus de 2 000 caractéristiques et j'ai besoin de les définir toutes en fonction d'un champ.
Y a-t-il un moyen de faire cela?
J'ai une classe d'entités avec plus de 2 000 caractéristiques et j'ai besoin de les définir toutes en fonction d'un champ.
Y a-t-il un moyen de faire cela?
Vous pouvez utiliser l'outil Fractionner par attributs:
Divise un jeu de données en entrée par attributs uniques
Il existe des versions disponibles pour:
Split By Attributes
génère en permanence des.dbf
tables individuelles et non des classes d'entités individuelles. Mais dans ArcGIS Desktop 10.6, le même outil génère correctement des fichiers de formes individuels . Je ne comprends pas pourquoi et j'ai obtenu les mêmes résultats en essayant de définir le répertoire de travail à la fois dans le dossier ou dans la géodatabase.Vous pouvez y parvenir avec un modèle très simple si vous utilisez ArcGIS 10.0 ou une version ultérieure.
Créez un modèle avec Feature Iterator dans lequel le champ group by est l'attribut que vous souhaitez sélectionner, puis envoyez la sortie à l'outil de copie des fonctionnalités en utilisant la substitution en ligne pour garantir un nom de fichier unique. Le modèle est présenté ci-dessous:
la source
Je n'ai pas accès à ArcMap 10, seulement 9.3, mais je m'attends à ce que ce ne soit pas très différent de cela.
Vous pouvez créer un script simple en Python, qui vérifie les valeurs de votre champ d'attribut, puis exécute pour chacune d'elles une opération SELECT sur votre Shapefile d'origine.
Si vous n'êtes pas familier avec les scripts python, il vous suffit d'ouvrir IDLE (interface graphique python), de créer un nouveau fichier et de copier le code ci-dessous. Après avoir adapté le code pour votre fichier my_shapefile, outputdir et my_attribute, cela devrait fonctionner.
la source
Avez-vous vu l'outil Split Layer By Attributes mis à jour pour ArcMap 10 ici ? Si cela ne fonctionne pas, vous pouvez utiliser Split (Analysis) pour vos besoins.
Exemple de code:
la source
Split By Attribute
fonctionnalité et votre réponse porte principalement surSplit [By Geometry]
.J'ai utilisé le script de @ AlexandreNeto et je l'ai mis à jour pour les utilisateurs d'ArcGIS 10.x. Principalement, vous devez maintenant importer "arcpy" au lieu de "arcgisscripting":
la source
C’est un moyen encore plus facile de le faire ... et la sortie dans une GDB.
http://www.umesc.usgs.gov/management/dss/split_by_attribute_tool.html
télécharger l'outil de USGS, m'a pris 3 minutes pour faire ce que j'avais essayé pendant 1 heure.
la source
Je sais que vous pouvez utiliser un itérateur dans le créateur de modèle, mais si vous préférez utiliser python, voici quelque chose que j'ai proposé. Ajoutez le script à une boîte à outils avec les paramètres dans l’ordre suivant: shpfile en entrée, champs (valeurs multiples, obtenus en entrée) et espace de travail. Ce script divise le fichier de formes en plusieurs fichiers de formes en fonction des champs que vous sélectionnez, puis les exporte dans un dossier de votre choix.
la source
Je l'ai finalement obtenu avec SearchCursor et Select_analysis
la source
Je ne connais pas bien les outils Iterate Feature Selection de ModelBuilder, mais exporter simplement cela en code Python indique qu'ils peuvent être appelés en utilisant arcpy.
la source
Vous pouvez utiliser un curseur de recherche pour parcourir les entités individuelles d'une classe d'entités et écrire uniquement les géométries dans des classes d'entités uniques. Dans cet exemple, j'utilise une classe d'entités des États-Unis et exporte les États vers de nouveaux fichiers de formes:
la source
cursor
opérations.Vous pouvez utiliser un jeton de géométrie (SHAPE @) dans Fonctions de copie (Gestion des données) pour exporter chaque fonction.
la source
Dans Arcpy, les curseurs honorent les sélections de calque / TableView. Selon Obtenir la liste des fonctionnalités sélectionnées dans ArcGIS for Desktop à l'aide de code Python?, vous pouvez simplement itérer les sélections de fonctionnalités.
Toutefois, si vous souhaitez effectuer une sélection à l'aide d'arcpy, utilisez l' outil SelectLayerByAttribute_management .
la source