Con la introducción del módulo de acceso a datos en arcpy (cursores de búsqueda 30 veces más rápidos), quiero saber si el recuento de características que coinciden con los criterios sql es más rápido que la metodología tradicional MakeTableView + GetCount.
arcgis-desktop
arcpy
arcgis-10.1
performance
Michael Markieta
fuente
fuente
VARCHAR
campo no indexado volvió en solo unos segundos.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Respuestas:
He probado la solución de la respuesta anterior y en mis datos del mundo real la diferencia es insignificante. Opuesto a los resultados en otra respuesta, mis tiempos para arcpy.MakeTableView_management y arcpy.da.SearchCursor dentro de ArcMap son los mismos.
He probado variaciones con y sin consulta, consulte el código para la versión de consulta y los resultados finales medidos a continuación:
Los resultados a continuación:
fuente
Estoy usando un ejemplo con 1 millón de puntos generados aleatoriamente dentro de una base de datos de archivos. Adjunto aquí .
Aquí hay un código para comenzar:
Y algunos resultados iniciales:
Imagine conjuntos de datos más grandes y complejos. El cursor de búsqueda se arrastrará indefinidamente.
No estoy del todo insatisfecho con los resultados, sin embargo, el módulo DataAccess se está utilizando ampliamente en nuestro círculo de desarrollo SIG. Estoy buscando reconstruir algunas de nuestras definiciones de funciones con este módulo, ya que es más flexible que una metodología MakeTableView + GetCount.
fuente
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]