Menciptakan titik yang terdistribusi secara merata dalam batas tidak teratur

8

Saya perlu membuat serangkaian poin yang terdistribusi secara merata dalam serangkaian poligon yang terpotong secara aneh (sebelumnya kotak, tetapi sekarang kotak dengan lubang donat).

Cara saya memecahkan masalah ini sejauh ini adalah membuat jala poligon dan kemudian menggunakan centroid dari setiap unit yang jala jala ciptakan.

Namun, masalahnya menjadi lebih kompleks dan saya sekarang memiliki poligon yang lebih kompleks. Sentroid unit jala tidak lagi cukup baik.

Saya mencoba mengubah poligon menjadi raster dan kemudian menggunakan alat Split untuk raster, dan membuat output dengan jumlah unit area yang sama, tetapi itu tidak akan berfungsi, karena data vektor input saya tidak memiliki yang diperlukan vaues agar proses raster berjalan dengan baik.

Saya bekerja dengan Arc 9.3 (tetapi juga memiliki akses ke beberapa paket perangkat lunak lain)

Kapjaki
sumber
3
"Terdistribusi secara merata" dapat berarti beberapa hal, termasuk dengan spasi yang sama pada kisi yang telah ditentukan, berjarak yang sama pada kisi dengan asal acak (dan mungkin orientasi acak), satu titik yang terletak secara acak dalam setiap sel kisi, seragam seragam (tidak memerlukan kisi), dan bahkan acak dengan kecenderungan untuk saling menghindari. Bisakah Anda lebih spesifik tentang yang Anda butuhkan?
whuber
Mirip dengan pertanyaan ini? gis.stackexchange.com/questions/4828/…
Kirk Kuykendall
@whuber: Yah ... jujur, saya tidak yakin. Idealnya titik-titik akan tersebar sedemikian rupa sehingga jarak antara titik-titik itu disamakan sebanyak mungkin. Mereka tidak harus berada di grid yang sempurna. Apakah itu acak acak?
Kapjaki
Ini adalah hal-hal yang halus, tetapi tidak, menyamakan jarak menghancurkan banyak keacakan. Ini menjamin bahwa pengetahuan tentang satu lokasi membuat pengetahuan tentang lokasi terdekat jauh lebih mudah diprediksi; khususnya, lingkungan terdekat (kecil) dari suatu titik akan tanpa titik lainnya. Itu sama sekali tidak seragam! Tempat yang baik untuk memulai ketika memikirkan hal-hal seperti itu adalah untuk merenungkan bagaimana poin akan digunakan. Jika itu untuk mendesain, seperti menanam pohon, berjauhan itu bagus. Jika Anda akan melakukan analisis statistik dengan mereka, maka waspadalah!
whuber
@ Wouber: memang, seluk-beluk yang Anda bicarakan baru bagi saya. Tujuannya adalah untuk menunjukkan lokasi potensial untuk sumur minyak dalam area tertentu. Keacakan tidak diperlukan, hanya jarak antar titik dimaksimalkan dan didistribusikan setidaknya agak merata di seluruh poligon yang terikat.
Kapjaki

Jawaban:

3

Di QGIS jika Anda menginstal paket fTools , ada opsi untuk menghasilkan 'Poin Reguler' (Alat -> Alat Penelitian -> Poin Reguler)

masukkan deskripsi gambar di sini

djq
sumber
Ini akan menghasilkan kotak poin, mungkin? Dan bukankah terkendala untuk berada di dalam poligon atau set poligon? (Itu bukan kritik: nanti bisa menghilangkan semua poin di luar poligon.)
whuber
2
@whuber: Semua poin akan berada di dalam poligon yang ditentukan oleh "Input Boundary Layer"
underdark
2

Anda dapat melakukannya di PostGIS dengan pertanyaan seperti ini:

SELECT grid.the_geom FROM 
(select st_setsrid(st_point(x, y), polygon_srid) AS the_geom from 
(select generate_series(minX, maxX, grid_size) AS x) AS a,
(select generate_series(minY, maxY, grid_size) AS y) AS b) AS grid,
polygon_table
WHERE ST_Within(grid.the_geom, polygon_table.the_geom);

Anda dapat mencobanya di postgisonline dengan contoh ini:

SELECT grid.the_geom FROM 
(select st_setsrid(st_point(x, y), 3021) AS the_geom from 
(select generate_series(130000, 142000, 500) AS x) AS a,
(select generate_series(260000, 270000, 500) AS y) AS b) AS grid,
lakes
WHERE ST_Within(grid.the_geom, lakes.the_geom);

Letakkan query di atas di textarea di atas dan tekan tombol Map1. Anda juga dapat memilih "danau" dari dropdown latar belakang untuk melihat poligon yang digunakan untuk mengisi dengan poin.

/ Nicklas

Nicklas Avén
sumber
Pos Nicklas tampaknya berada di jalur yang benar. Apakah ada cara untuk menentukan berapa banyak poin yang ingin Anda bagikan di danau thoguh? Saya sudah mencari metode seperti ini untuk sementara waktu. Terima kasih, Ray
Apakah ada cara lain untuk membuat 'blok' dari poligon berdasarkan pembagian total luas secara merata? Yaitu Jika 9 poin diinginkan, bagilah poligon menjadi 9 'blok' dengan luas yang sama, dan kemudian dapatkan centroid dari titik tersebut?
Kapjaki
Karena poligon dapat memiliki bentuk yang aneh, saya kira itu akan memerlukan beberapa algoritma trial and error untuk mencapainya.
Nicklas Avén
Ini sepertinya bekerja dengan baik. Sayangnya saya tidak mengerti bagaimana saya bisa menggunakannya. Bagaimana cara memasukkan data saya sendiri ke dalam skenario?
Kapjaki
@Kapjaki, muat poligon Anda ke tabel postgis dan dalam contoh pertama saya ubah "olygon_table" menjadi apa pun nama tabel poligon Anda. Juga ubah gener_series agar sesuai dengan luas poligon Anda dan ubah dari 500 ke ukuran kisi apa pun yang Anda inginkan. kueri dapat ditulis ulang untuk menemukan luasnya secara langsung. tetapi tidak dari ponsel saya di mobil :)
Nicklas Avén
0

Anda dapat menggunakan algoritma Lloyds:

https://en.m.wikipedia.org/wiki/Lloyd%27s_algorithm

John
sumber