Menemukan Cluster Poin N dalam Jarak X menggunakan ArcGIS Desktop?

12

Kami telah mencoba dua metode analisis kluster:

... tetapi tidak satu pun memenuhi spesifikasi kami yang memiliki 3 parameter ini:

  • fitur Set of Point
  • N poin dalam Cluster
  • Pita jarak X untuk melihat

Misalnya "temukan saya titik di mana setiap kluster memiliki 10 poin dalam jarak 50 meter" atau sesuatu untuk efek itu.

ArcGIS 10 memiliki dua alat yang saya tautkan di atas tetapi sepertinya tidak ada yang membahas poin N dalam bagian cluster.

Bisakah persyaratan kami dipenuhi dengan alat lain di ArcGIS? Apakah yang saya sebut analisis kluster dikenal sebagai tipe klaster tertentu?

Kami memang memiliki versi ini di aplikasi lain tetapi saya benar-benar ingin menggunakan alat-alat di dalam ArcGIS.

Telah
sumber
"berjanji pada klien tanpa sepengetahuanku" ... aku merasakan sakitmu. Apakah solusi arcobjects dapat diterima?
Kirk Kuykendall
Apakah tidak mungkin untuk membuat cluster dan kemudian memproses yang tidak memenuhi kriteria Anda? Artinya (dan saya bertanya karena kurangnya pengalaman dalam analisis ini), akankah cluster berubah jika mereka diberi kriteria ketiga ini sebelum analisis?
Nathanus
@Kirk Kuykendall. ArcObjects mungkin tidak dapat dilakukan karena perlu diekspos sebagai layanan geoprosesing melalui server arcgis 10.
Hath
Apakah cluster perlu didasarkan pada lingkaran, atau dapat berbentuk persegi panjang. Membuat hash dari koordinat sedemikian rupa sehingga kode hash untuk semua titik yang berada di kotak 50x50 yang sama adalah mudah.
Kirk Kuykendall
@ Kirk - saya pikir harus lingkaran.
Hath

Jawaban:

10

Coba gunakan alat Buffer untuk buffer poin ke toleransi, larut untuk membuat satu poligon untuk setiap cluster, dan kemudian gunakan gabungan untuk menghitung jumlah poin di cluster.

Kemudian gunakan rasio antara luas gugus dan jumlah titik untuk menerapkan parameter Anda.

Matthew Snape
sumber
+1 Pendekatan ini seharusnya berhasil, tetapi saya tidak melihat di mana area masuk ke dalam solusi.
whuber
area / count memberikan ukuran kepadatan dalam sebuah cluster. Ini akan membantu untuk menghilangkan rantai linier poin yang tidak boleh dianggap sebagai cluster.
Matthew Snape
2
OK, tetapi pernyataan masalah tidak mengharuskan itu. Itu hanya meminta "10 poin dalam 50 meter," misalnya. Jika Anda buffer poin dengan 50/2 = 25 meter, maka setiap tempat di mana ada 10 atau lebih tumpang tindih memenuhi syarat sebagai pusat dari cluster tersebut. Selesai!
whuber
Ketika Anda bermaksud 'bergabung', apakah Anda maksudnya bergabung secara spasial?
Hath
2

Ini dapat dicapai dengan menggunakan ArcObjects tanpa banyak kesulitan.

Buat petatopologi dan tambahkan titik featureeclass ke dalamnya. Atur toleransi cluster berdasarkan jarak cluster Anda (50), dan buat cache .

Loop melalui setiap node di maptopology.cache.nodes . Jika ITopologyNode.Parents.Count> 10 maka lakukan apa yang perlu Anda lakukan.

Saya telah melakukan sesuatu yang mirip untuk lapisan kustom yang menarik setiap titik cluster dengan simbol yang warnanya didasarkan pada jumlah fitur titik di cluster. Kinerja dapat diterima karena fitur-fitur di-cache dalam memori - membangun kembali cache adalah bagian yang mahal.

Mirip dengan kode yang diposting di sini .

Kirk Kuykendall
sumber
Apakah mungkin dengan python?
Hath
Saya sedang berpikir tidak. Tidak begitu akrab dengan arcobjects sdk dan tidak sepenuhnya yakin dengan persyaratan lisensi untuk menggunakannya.
Hath
2

Coba pergi ke titik pertama, kemudian buat fungsi rekursif, yang memeriksa titik-titik dalam jarak, dan melakukan operasi yang sama pada titik itu, yang mencari titik-titik dalam jarak, dan melakukan operasi yang sama pada itu, dll.

Saya baru saja menyelesaikan masalah yang sama, karena saya harus menemukan serangkaian poin yang sesuai dengan klausa tertentu; Saya membangun fungsi rekursif untuk menemukan apakah ada titik yang terhubung dalam 8 sel (N, NW, W, SW, S, SE, E, NE) dan memanggil fungsi yang sama untuk titik itu. Jika daftar yang dikembalikan berisi titik x, saya mengumpulkan poligon di sekitarnya.

Berbulu
sumber
1

saya tidak punya informasi penggunaan apa pun tentang ArcGIS karena saya hanya menggunakan Perangkat Lunak OpenSource. Tapi saya pikir ini bisa dilakukan, dengan Openlayers. Ada contoh strategi kluster, yang dapat Anda temukan di sini: http://openlayers.org/dev/examples/strategy-cluster.html

1amtoo1337
sumber
-1 OP meminta cara arcgis untuk melakukan ini. Memberi cara OpenLayers tidak akan membantu.
Nathan W
2
Tetapi pendekatan openlayers tidak bisa membantunya mengetahui cara itu dilakukan untuk mengimplementasikannya di arcgis ??
1amtoo1337
1
Saya setuju dengan komentar dan menyukai pendekatan Anda: seringkali kita harus mencari ide dan inspirasi di luar zona nyaman kita. Tetapi saya akan menemukan balasan Anda lebih berguna jika Anda dapat menjelaskan bagaimana contoh ini terhubung dengan pertanyaan khusus yang diajukan di sini. Meskipun pertanyaan dan contohnya berbagi kata "cluster," tidak jelas bahwa mereka menggunakannya dalam arti yang sama atau mengatasi masalah yang cukup mirip.
whuber
Saya memutakhirkan ini ketika saya sedang mencari cara opensource untuk melakukan ini dan walaupun arcgis yang dicari, saya sering menemukan bahwa solusi dalam sistem GIS lain dapat membantu Anda menemukan solusi dalam perangkat lunak pilihan Anda dengan menggunakan alat itu dengan cara itu tidak umum.
GeorgeC