С появлением модуля Data Access в arcpy (в 30 раз быстрее курсоров поиска) я хочу знать, быстрее ли подсчитывает объекты, соответствующие критериям sql, чем традиционная методология MakeTableView + GetCount?
arcgis-desktop
arcpy
arcgis-10.1
performance
Майкл Маркиета
источник
источник
VARCHAR
поле вернулся через несколько секунд.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Ответы:
Я проверил решение из ответа выше, и на моих реальных данных разница незначительна. В отличие от результатов другого ответа, мои времена для arcpy.MakeTableView_management и arcpy.da.SearchCursor в ArcMap одинаковы.
Я протестировал варианты с запросом и без него, см. Код версии запроса и окончательные результаты измерений ниже:
Результаты ниже:
источник
Я использую пример с 1 миллионом случайно сгенерированных точек внутри файловой базы геоданных. Прилагается здесь .
Вот некоторый код, чтобы начать нас:
И некоторые начальные результаты:
Вообразите большие, более сложные наборы данных. SearchCursor будет сканироваться бесконечно.
Я нисколько не недоволен результатами, однако модуль DataAccess широко используется в нашем круге разработки ГИС. Я собираюсь перестроить некоторые из наших определений функций с помощью этого модуля, поскольку он более гибкий, чем методология MakeTableView + GetCount.
источник
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]