Existe-t-il un moyen de sélectionner des valeurs distinctes dans une colonne dans ArcMap? J'ai les données aux formats GDB et SHP. J'ai cherché des moyens de sélectionner en utilisant SQL, QueryLayers, ModelBuilder et des boîtes à outils individuelles et il apparaît que toutes les options de sélection sont toujours SELECT * FROM tableName WHERE ...
En SQL, j'écrirais SELECT DISTINCT columnName FROM tableName.
arcgis-desktop
arcmap
select
Steve
la source
la source
Utilisez une compréhension de liste Python.
Pour les grands ensembles de données, une méthode efficace en mémoire consisterait à utiliser une expression de générateur .
la source
fields
argument facultatif , par exemplemyList = set([row.getValue(fldName) for row in arcpy.SearchCursor(fcName, fields=fldName)])
Si vos données sont au format PGDB, vous pouvez effectuer les opérations suivantes dans les boîtes de dialogue du générateur de requêtes (requête de définition, sélection par attributs, expressions de boîte à outils, etc.) à l'aide d'une sous-requête:
SELECT * FROM tableName OERE ...
Cela renverra les enregistrements pour lesquels les valeurs des valeurs column_to_test_for_unique_values sont uniques.
la source
Si vous ne disposez que d'une licence de base (anciennement appelée ArcView), vous pouvez ouvrir la vue Table, cliquer avec le bouton droit sur une colonne et sélectionner Résumer.
la source
Si vos données sont dans un SDE (moteur de base de données spatiales), vous pouvez utiliser l'objet python et ArcSDESQLExecute d'arcpy. On peut passer sql complexe en utilisant cette "méthode".
la source
Ou utilisez votre script Python pour exporter vers CSV, puis utilisez l'API Python d'une autre base de données (par exemple SpatiaLite) pour lire le csv et effectuer une requête SQL appropriée à partir du même script. Pour une grande table, cela pourrait être un peu plus rapide que de lancer votre propre générateur de liste - dunno.
Quoi que vous fassiez, c'est toujours une "fonctionnalité" vraiment ennuyeuse d'ArcGIS.
la source
Qu'en est-il de l'utilisation d'un
distinct
dans une sous-requête (ce qui suit concerne une classe de fonctionnalités FGDB):Notez dans l' aide (10.0) que cela a des limites:
la source
Comme le suggère Justin. Je fais normalement un résumé sur le champ que je veux, puis fais une sélection distincte sur le dbf, exécute un petit calcul pour catégoriser chaque valeur distincte, puis rejoins-la à l'original.
C'est le long chemin, et vous devez fenagel avec vos méthodes de caclulation préférées. mais ...
Peu importe ce qui fait le travail.
la source