Po wprowadzeniu modułu Data Access w Arcpy (30x szybsze kursory wyszukiwania) chcę wiedzieć, czy liczenie funkcji spełniających kryteria SQL jest szybsze niż tradycyjna metodologia MakeTableView + GetCount?
arcgis-desktop
arcpy
arcgis-10.1
performance
Michał Markieta
źródło
źródło
VARCHAR
polu powróciło w ciągu kilku sekund.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Odpowiedzi:
Testowałem rozwiązanie z powyższej odpowiedzi i na moich rzeczywistych danych różnica jest znikoma. W przeciwieństwie do innych odpowiedzi, moje czasy dla arcpy.MakeTableView_management i arcpy.da.SearchCursor w ArcMap są takie same.
Testowałem odmiany z zapytaniem i bez niego, zobacz kod wersji zapytania i końcowe wyniki pomiaru poniżej:
Wyniki poniżej:
źródło
Korzystam z przykładu z 1 milionem losowo wygenerowanych punktów wewnątrz bazy danych. Załączony tutaj .
Oto kod, od którego możemy zacząć:
I kilka wstępnych wyników:
Wyobraź sobie większe, bardziej złożone zbiory danych. SearchCursor będzie się czołgał w nieskończoność.
Nie jestem wcale niezadowolony z wyników, jednak moduł DataAccess jest szeroko stosowany w naszym środowisku programistycznym GIS. Chcę odbudować niektóre z naszych definicji funkcji za pomocą tego modułu, ponieważ jest on bardziej elastyczny niż metodologia MakeTableView + GetCount.
źródło
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]