Dengan diperkenalkannya modul Akses Data di arcpy (kursor pencarian 30x lebih cepat), saya ingin tahu apakah penghitungan fitur yang cocok dengan kriteria sql lebih cepat daripada metodologi MakeTableView + GetCount tradisional?
arcgis-desktop
arcpy
arcgis-10.1
performance
Michael Markieta
sumber
sumber
VARCHAR
bidang yang tidak diindeks kembali hanya dalam beberapa detik.ogrinfo "C:\xGIS\Vector\parcels\parcels_20140829_pmerc.ovf -sql "SELECT count(*) FROM parcels_20140829_pmerc WHERE tms like 'R39200-02-%'"
Jawaban:
Saya telah menguji solusi dari jawaban di atas dan pada data dunia nyata saya perbedaannya dapat diabaikan. Berlawanan dengan hasil dalam jawaban lain, waktu saya untuk arcpy.MakeTableView_management dan arcpy.da.SearchCursor dalam ArcMap adalah sama.
Saya telah menguji variasi dengan dan tanpa kueri, silakan lihat kode untuk versi kueri, dan hasil akhir yang diukur di bawah:
Hasil di bawah ini:
sumber
Saya menggunakan contoh dengan 1 juta poin yang dihasilkan secara acak di dalam sebuah filegeodatabase. Terlampir di sini .
Berikut ini beberapa kode untuk memulai:
Dan beberapa hasil awal:
Bayangkan kumpulan data yang lebih besar dan lebih kompleks. SearchCursor akan merayap tanpa batas.
Saya sama sekali tidak puas dengan hasilnya, namun, modul DataAccess sedang digunakan secara luas di lingkaran pengembangan GIS kami. Saya ingin membangun kembali beberapa definisi fungsi kami dengan modul ini karena modul ini lebih fleksibel daripada metodologi MakeTableView + GetCount.
sumber
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]