Avec l'introduction du module d'accès aux données dans arcpy (curseurs de recherche 30 fois plus rapides), je souhaite savoir si le comptage des entités correspondant aux critères SQL est plus rapide que la méthodologie traditionnelle MakeTableView + GetCount?
arcgis-desktop
arcpy
arcgis-10.1
performance
Michael Markieta
la source
la source
VARCHAR
champ non indexé est revenue en quelques secondes.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Réponses:
J'ai testé la solution de la réponse ci - dessus et sur mes données réelles, la différence est négligeable. Contrairement aux résultats obtenus avec une autre réponse, mes temps pour arcpy.MakeTableView_management et arcpy.da.SearchCursor dans ArcMap sont identiques.
J'ai testé les variantes avec et sans requête, veuillez consulter le code de la version de la requête et les résultats finaux mesurés ci-dessous:
Les résultats ci-dessous:
la source
J'utilise un exemple avec 1 million de points générés aléatoirement à l'intérieur d'une base de données de fichiers. Attaché ici .
Voici quelques codes pour nous aider à démarrer:
Et quelques premiers résultats:
Imaginez des ensembles de données plus vastes et plus complexes. Le SearchCursor va explorer indéfiniment.
Je ne suis pas du tout insatisfait des résultats, cependant, le module DataAccess est largement utilisé dans notre cercle de développement SIG. Je cherche à reconstruire certaines de nos définitions de fonction avec ce module car il est plus flexible qu'une méthodologie MakeTableView + GetCount.
la source
arcpy.Statistics_analysis("RandomPoints", r"in_memory\count", [["OBJECTID", "COUNT"]]) cursor = arcpy.da.SearchCursor(r"in_memory\count", ["COUNT_OBJECTID"]) row = cursor.next() del cursor count = row[0]