Saya memiliki kelas fitur titik yang cukup besar dalam geodatabase file (~ 4 000 000 catatan). Ini adalah grid poin biasa dengan resolusi 100m.
Saya perlu melakukan semacam generalisasi pada layer ini. Untuk ini, saya membuat kotak baru di mana setiap titik terletak di tengah-tengah 4 poin "lama":
* * * *
o o o
* * * *
o o o
* * * *
[*] = titik dari kotak asli - [o] = titik dari kotak baru
Nilai atribut dari setiap titik baru dihitung berdasarkan nilai tertimbang dari 4 tetangganya di kisi lama. Saya kemudian mengulang semua titik dari grid baru saya dan, untuk masing-masing, saya loop pada semua titik dari grid lama saya, untuk menemukan tetangga (dengan membandingkan nilai X dan Y dalam tabel atribut). Setelah 4 tetangga ditemukan, kami keluar dari lingkaran.
Tidak ada kompleksitas metodologis di sini tetapi masalah saya adalah bahwa, berdasarkan tes pertama saya, skrip ini akan berlangsung selama berminggu-minggu untuk menyelesaikan ...
Apakah Anda melihat kemungkinan untuk membuatnya lebih efisien? Beberapa ide di atas kepala saya:
- Buat indeks bidang X dan Y => Saya melakukan itu tetapi tidak melihat adanya perubahan kinerja yang signifikan
- Lakukan kueri spasial untuk menemukan tetangga daripada berbasis atribut. Apakah itu benar-benar membantu? Apa fungsi spasial di ArcGIS yang harus dilakukan? Saya ragu bahwa, misalnya, buffering setiap titik baru akan terbukti lebih efisien
- Ubah kelas fitur menjadi NumPy Array. Apakah itu membantu? Saya belum bekerja banyak dengan NumPy sejauh ini dan saya tidak akan suka menyelaminya kecuali seseorang mengatakan kepada saya itu mungkin sangat membantu mengurangi waktu pemrosesan
- Ada yang lain?