Alat Buat Titik Acak dapat menghasilkan sejumlah titik dalam poligon. Saya bertanya-tanya, diberi kotak pembatas, apakah ada cara saya bisa menghasilkan titik acak di luar poligon itu?
Alat Buat Titik Acak dapat menghasilkan sejumlah titik dalam poligon. Saya bertanya-tanya, diberi kotak pembatas, apakah ada cara saya bisa menghasilkan titik acak di luar poligon itu?
Jawaban:
Secara pribadi saya tidak suka algoritma titik acak di ArcGIS. Atau, gunakan fungsi Geospatial Modeling Environment (GME) genrandompnts
. Anda akan dapat mengidentifikasi poligon tertentu di mana poin acak akan dikecualikan (lihat area yang disorot di .jpg terlampir). Yang terbaik dari semua perangkat lunak ini adalah gratis.
GME memberi Anda seperangkat alat analisis dan pemodelan, mulai dari 'blok bangunan' kecil yang dapat Anda gunakan untuk membangun alur kerja yang canggih, hingga program analisis yang lengkap. Ini juga menggunakan perangkat lunak open source R yang sangat kuat sebagai mesin statistik untuk menggerakkan beberapa alat analisis. Salah satu dari banyak kekuatan R adalah bahwa ia adalah open source, sepenuhnya transparan dan terdokumentasi dengan baik: karakteristik penting untuk setiap perangkat lunak analitis ilmiah.
Anda harus membuat poligon donat dengan lubang donat yang mewakili ruang interior non-titik dan beberapa spasial yang mewakili area pembatas area poligon.
Maaf, saya tidak bisa menolak. Karena selalu baik untuk mengetahui apa yang terjadi di bawah tenda dengan sesuatu seperti GME, berikut adalah solusi dalam kode R yang sebenarnya.
require(sp)
require(rgeos)
# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")
# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)
# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")
# Plot results
plot(d, col="red")
plot(rs,pch=19,col="black",add=TRUE)
Pendekatan ini mungkin sangat berbeda dari bagaimana GME melakukan ini tetapi menggunakan kelas spasial R sp asli dan perpustakaan topologi yang cukup baru membuat kode sangat efisien. Ini juga memberikan contoh yang dapat dengan mudah dibungkus dengan for for loop.