Mit der Einführung des Datenzugriffsmoduls in arcpy (30-mal schnellerer Suchcursor) möchte ich wissen, ob das Zählen von Features, die mit SQL-Kriterien übereinstimmen, schneller ist als die herkömmliche Methode MakeTableView + GetCount.
arcgis-desktop
arcpy
arcgis-10.1
performance
Michael Markieta
quelle
quelle
VARCHAR
Feld kam innerhalb weniger Sekunden zurück.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Antworten:
Ich habe die Lösung aus der obigen Antwort getestet und bei meinen realen Daten ist der Unterschied vernachlässigbar. Im Gegensatz zu Ergebnissen in anderen Antworten stimmen meine Zeiten für arcpy.MakeTableView_management und arcpy.da.SearchCursor in ArcMap überein.
Ich habe Variationen mit und ohne Abfrage getestet. Die Abfrageversion und die endgültigen Messergebnisse finden Sie unten im Code:
Die Ergebnisse unten:
quelle
Ich verwende ein Beispiel mit 1 Million zufällig generierten Punkten in einer Dateidatenbank. In festen Händen hier .
Hier ist ein Code, der uns den Einstieg erleichtert:
Und ein paar erste Ergebnisse:
Stellen Sie sich größere, komplexere Datensätze vor. Der SearchCursor wird auf unbestimmte Zeit gecrawlt.
Ich bin mit den Ergebnissen überhaupt nicht unzufrieden, aber das DataAccess-Modul wird in unserem GIS-Entwicklungskreis häufig verwendet. Ich versuche, einige unserer Funktionsdefinitionen mit diesem Modul neu zu erstellen, da es flexibler ist als eine MakeTableView + GetCount-Methode.
quelle
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]