Saya memiliki daftar yang berisi lebih dari 100.000 poin dalam format lat / long yang telah saya impor ke qgis.
Sekarang, apa yang saya coba lakukan di sini adalah mengelompokkan semua poin ini ke dalam kelompok kotak dan maksud saya adalah bahwa saya ingin membagi peta menjadi kotak pembatas.
Persyaratan saya adalah sebagai berikut:
- tidak ada grup kotak yang memiliki KURANG DARI 100 dan TIDAK LEBIH DARI 200 poin
- tidak boleh ada titik terletak di lebih dari satu kelompok
- semua poin harus didasarkan pada tetangga terdekat mereka
Bagaimana saya bisa mencapai ini melalui qgis?
Saya berasumsi bahwa seseorang dapat melewati beberapa kode kueri khusus dan menyimpan hasil atau kotak yang dibuat sebagai shapefile benar? Bisakah seseorang tolong jelaskan bagaimana ini bisa dilakukan dan seperti apa kode itu?
Seperti yang disebutkan, tujuan saya adalah untuk memiliki sekelompok kotak persegi ditampilkan sebagai lapisan shapefile di mana dalam setiap kotak ada tidak kurang dari 100 properti dan tidak lebih dari 200.
Jawaban:
Saya dapat membuat Anda menjadi bagian dari perjalanan ke sana dengan mengasumsikan Anda telah menemukan cara untuk meminta (a) setengah dari serangkaian poin paling timur dan (b) setengah dari serangkaian poin paling utara. Dari sini Anda tentu saja dapat dengan mudah memperoleh (c) setengah bagian barat atau (d) bagian paling selatan. (Saya tidak tahu QGIS, tetapi satu cara untuk melakukan (a) secara umum adalah meminta median koordinat x dan kemudian mengambil semua poin yang koordinat xnya melebihi itu. Solusi untuk (b) - (d) serupa .)
Dengan menggunakan kemampuan ini, solusi diperoleh dengan rekursi yang mudah. Untuk menggambarkannya, mari kita asumsikan ada prosedur
Half
, mengimplementasikan operasi sebelumnya, yang mengambil dua argumen: yang pertama adalah seperangkat poin dan yang kedua adalah kode yang sama dengantrue
ketika partisi timur-barat diinginkan dan sama dengan yangfalse
lainnya. Ini mengembalikan dua himpunan bagian dari inputnya yang mempartisi itu seperti yang diminta.Dalam pseudocode ini, R dan S partisi P; Kotak (R,! I, n) adalah partisi R dalam arah ortogonal , Kotak (S,! I, n) adalah partisi S dalam arah ortogonal, "+" berarti membentuk kesatuan set-theoretik, dan {} menunjuk satu set. (Bergantian arah membelah menciptakan kotak daripada strip.) Parameter n menentukan ukuran minimum grup di partisi; ukuran maksimum adalah 2 n .
Di sini, sebagai ilustrasi, adalah himpunan P dari 12.891 titik acak yang dipartisi
Box(P,true,100)
ke dalam kelompok-kelompok dengan ukuran antara 100 dan 200. Algoritma menciptakan 128 kotak yang 37 memiliki 100 poin dan 91 memiliki 101 poin.sumber