Bir dosya coğrafi veritabanında (~ 4000 000 kayıt) oldukça büyük nokta özellik sınıfı var. Bu, 100m çözünürlüğe sahip düzenli bir nokta ızgarasıdır.
Bu katman üzerinde bir tür genelleme yapmam gerekiyor. Bunun için, her noktanın 4 "eski" noktanın ortasında olduğu yeni bir ızgara oluşturuyorum:
* * * *
o o o
* * * *
o o o
* * * *
[*] = orijinal ızgaranın noktası - [o] = yeni ızgaranın noktası
Her yeni noktanın özellik değeri, eski ızgaradaki 4 komşusunun ağırlıklı değerlerine göre hesaplanır. Böylece, yeni ızgaramın tüm noktalarında döngü yapıyorum ve her biri için, komşuları bulmak için (özellik tablosundaki X ve Y değerlerini karşılaştırarak) eski ızgaramın tüm noktalarında döngü yapıyorum. 4 komşu bulunduğunda, döngüden çıkarız.
Burada metodolojik bir karmaşıklık yok ama benim sorunum, ilk testlerime dayanarak, bu komut dosyasının tamamlanması haftalarca sürecek ...
Daha verimli hale getirmek için herhangi bir olasılık görüyor musunuz? Kafamın üstünde birkaç fikir var:
- X ve Y alanlarını endeksleyin => Bunu yaptım ancak önemli bir performans değişikliği fark etmedim
- Özniteliğe dayalı bir sorgulama yerine komşuları bulmak için uzamsal sorgulama yapın. Bu gerçekten yardımcı olur mu? ArcGIS'te hangi mekansal fonksiyon yapmalı? Örneğin her yeni noktayı arabelleğe almanın daha verimli olacağından şüpheliyim
- Unsur sınıfını bir NumPy Dizisine dönüştürün. Bu yardımcı olur mu? NumPy ile şu ana kadar çok çalışmadım ve birisi bana işlem süresini azaltmaya gerçekten yardımcı olabileceğini söylemedikçe içine dalmak istemem
- Başka herhangi bir şey?