Saya mencoba menemukan algoritma yang dapat menentukan poligon sekecil mungkin untuk mencakup beberapa poin.
Saya tahu bagaimana cara mendapatkan cembung lambung di sekitar semua titik, tetapi mengatakan bahwa titik-titik tersebut terletak di pulau yang berbeda, apakah mungkin untuk menentukan bahwa ada kesenjangan antara kelompok yang berbeda dan mendapatkan poligon terpisah untuk masing-masing kelompok?
Jawaban:
Kedengarannya seperti Anda memerlukan algoritma pengelompokan (mis. K-means clustering) pertama, diikuti oleh lambung kapal (convex hull, tetapi lambung cekung mungkin memiliki area yang lebih kecil tetapi lebih sulit untuk diterapkan).
sumber
Alat "Clustr" yang kami gunakan (d) di Flickr untuk menghasilkan shapefile yang berasal dari foto yang diberi tag geo mungkin bermanfaat:
https://github.com/straup/Clustr
(Stackexchange mencegah saya menambahkan lebih dari 2 tautan dalam posting ini. Jika Anda mencari "bentuk alfa", Anda dapat menemukan kode tersebut.flickr posting blog yang kami lakukan ketika kami mengumumkan shapefile.)
Itu dirancang untuk mencoba dan menghasilkan kontur dari kantong poin yang terus berubah (alias foto). Bit matematika-y yang sebenarnya ada di sini:
http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html
Clustr memiliki beberapa bug yang dikenal tetapi sebagian besar berfungsi, sebagian besar waktu ...
sumber
dari perspektif basis data kedengarannya seperti Anda ingin mengelompokkan poin pada ilands dan membuat convexhull pada setiap grup.
di postgis akan terlihat seperti:
/ Nicklas
sumber
arcpy.AggregatePoints_cartography (pntGeometryList, outAppendFeatureClass, buffer_radius)
Di mana pntGeometryList adalah daftar poin Anda, outAppendFeatureClass maka akan menampilkan classecreecration agregation dan buffer_radius yang akan menentukan tautan antara setiap titik 'yang menghadap ke luar'.
sumber
Pada awalnya saya pikir saran Dan untuk k-means masuk akal, tetapi setelah melihat data hasil set mouse pada halaman wikipedia untuk k-means , sepertinya pengelompokan Expectation-Maximization lebih dekat dengan apa yang Anda inginkan.
sumber