Com a introdução do módulo Data Access no arcpy (cursores de pesquisa 30x mais rápidos), quero saber se a contagem de recursos que correspondem aos critérios sql é mais rápida que a metodologia tradicional MakeTableView + GetCount?
arcgis-desktop
arcpy
arcgis-10.1
performance
Michael Markieta
fonte
fonte
VARCHAR
campo não indexado voltou em apenas alguns segundos.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Respostas:
Testei a solução da resposta acima e, nos dados do mundo real, a diferença é insignificante. Ao contrário dos resultados em outra resposta, meus horários para arcpy.MakeTableView_management e arcpy.da.SearchCursor no ArcMap são os mesmos.
Testei variações com e sem consulta. Consulte o código da versão da consulta e os resultados finais medidos abaixo:
Os resultados abaixo:
fonte
Estou usando um exemplo com 1 milhão de pontos gerados aleatoriamente dentro de um banco de dados de arquivos. Anexado aqui .
Aqui está um código para começar:
E alguns resultados iniciais:
Imagine conjuntos de dados maiores e mais complexos. O SearchCursor irá rastrear indefinidamente.
Não estou nada insatisfeito com os resultados, no entanto, o módulo DataAccess está sendo amplamente utilizado em nosso círculo de desenvolvimento de GIS. Estou procurando reconstruir algumas de nossas definições de funções com este módulo, pois é mais flexível que uma metodologia MakeTableView + GetCount.
fonte
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]