Identifikasi titik dalam shapefile yang tidak memiliki titik lain dalam x km dengan QGIS

11

Ini mungkin pertanyaan naif tapi saya berjuang sebagai pengguna baru untuk QGIS.

Saya memiliki shapefile yang sangat besar (275.000 poin, tetapi dapat memecah ini menjadi sekitar 10 sub regional jika perlu untuk pemrosesan lebih cepat).

Saya ingin mengidentifikasi semua titik yang tidak memiliki titik lain dalam 200 meter dan kemudian kode masing-masing titik dengan nilai "unik" di bidang file.

Untuk semua poin lain yang merupakan bagian dari cluster lokal saya kemudian ingin mengkodekannya sebagai "clustered".

Setelah mencapai itu, saya ingin kemudian memilih hanya satu untuk setiap cluster secara acak untuk disimpan dalam kumpulan data, membuang yang lain.

Saat ini saya gagal mencapai langkah 1 sehingga bantuan apa pun akan diterima.

Leigh Bettenay
sumber

Jawaban:

0

Anda juga dapat mencoba bergabung sendiri menggunakan plugin NNJoin di QGIS.

Untuk setiap fitur pada layer input, ia akan menemukan fitur terdekat (tidak termasuk dirinya sendiri jika bergabung sendiri) dan menyertakan jarak dan semua atribut fitur terdekat dalam dataset yang dihasilkan. Butuh beberapa waktu untuk dataset Anda (saya mencoba dengan dataset titik dengan sekitar 175.000 fitur, dan itu membutuhkan waktu beberapa menit ...).

Håvard Tveite
sumber
9

Anda dapat menggunakan Vector> Analysis Tools> Distance Matrix, dan gabungan untuk mencapai apa yang Anda minta.

Saya akan menggunakan layer bandara data sampel qgis untuk mencontohkan. Ini adalah dataset kecil jadi saya tidak yakin bagaimana hasilnya dengan shapefile 275000 poin.

1. Buat matriks jarak menggunakan layer Anda sebagai tujuan dan target.

Jangan lupa untuk mencentang "Gunakan hanya titik target terdekat (k)" dan setel ke 1.

masukkan deskripsi gambar di sini

2. Buka CSV dengan menambahkan lapisan teks terbatas

Pilih "Koma" sebagai pembatas, dan tetapkan definisi geometri sebagai bukan Geometri

masukkan deskripsi gambar di sini

3. Buat gabungan di lapisan asli dengan tabel yang baru dibuat

masukkan deskripsi gambar di sini

4. Gunakan Kalkulator bidang untuk mengisi bidang dengan nilai yang diinginkan

Karena penggabungan, kami sekarang memiliki akses ke nilai tabel jarak dari dalam tabel atribut bandara, oleh karena itu cukup mudah untuk membuat bidang baru dan mengisinya dengan nilai "berkerumun" dan "unik" tergantung pada nilai matriks jarak . karena contoh data saya, saya telah menggunakan nilai 1200000 (1200 km), Anda harus menyesuaikannya dengan kasing Anda (200).

masukkan deskripsi gambar di sini

Pada akhirnya layer Anda harus memiliki bidang baru yang disebut point_type dengan nilai yang berbeda sesuai dengan jarak minimum ke titik terdekat.

masukkan deskripsi gambar di sini

Alexandre Neto
sumber
Itu terlihat seperti solusi yang elegan. Namun saya punya satu komplikasi. Saya tahu ada beberapa titik yang memiliki lokasi IDENTIK (ini hasil dari sinonim nama selama pengambilan data asli). Dalam satu kasus saya mengidentifikasi 3 pada titik yang sama. Saya pikir solusi Anda mengasumsikan (secara masuk akal) bahwa semua titik terletak secara unik. Apakah ada beberapa cara yang jelas saya bisa menyaring cakupan saya untuk menghilangkan titik-titik lokasi yang sama terlebih dahulu?
Leigh Bettenay
@LeighBettenay Jika jawaban ini menjawab pertanyaan awal Anda, maka saya pikir Anda harus menerimanya (centang hijau), untuk menghargai upaya penjawab, dan meneliti / mengajukan persyaratan tambahan Anda sebagai pertanyaan baru. +1 untuk pertanyaan pertama yang bagus!
PolyGeo
@ Polyeoeo Maaf, saya baru di forum ini dan tidak tahu protokolnya. Senang "centang hijau" jawaban yang bagus tapi sayangnya tidak tahu caranya !!
Leigh Bettenay
Cukup klik tanda centang abu-abu di bawah pemungutan suara pertanyaan (sudut kiri pertanyaan). Terima kasih
Alexandre Neto