Çokgenler dışında rastgele noktalar nasıl oluşturulur?


11

Rastgele Nokta Oluştur aracı , çokgenler içinde belirli sayıda nokta oluşturabilir. Merak ediyorum, bir sınırlayıcı kutu göz önüne alındığında, bu çokgenin dışında rastgele noktalar üretebilmemin herhangi bir yolu var mı?

Yanıtlar:


13

Şahsen ben ArcGIS'te rastgele nokta algoritmasını sevmiyorum. Alternatif olarak, Mekansal Modelleme Ortamı (GME) genrandompntsişlevini kullanın. Rastgele noktaların hariç tutulacağı belirli çokgenleri tanımlayabileceksiniz (ekteki .jpg dosyasında vurgulanan alana bakın). En iyisi bu yazılım ücretsizdir.

GME, karmaşık bir iş akışı oluşturmak için kullanabileceğiniz küçük 'yapı taşlarından' tamamen bağımsız analiz programlarına kadar bir dizi analiz ve modelleme aracı sunar. Ayrıca, bazı analiz araçlarını çalıştırmak için istatistiksel motor olarak olağanüstü güçlü açık kaynaklı yazılım R'yi kullanır. R'nin birçok güçlü yanından biri, açık kaynak, tamamen şeffaf ve iyi belgelenmiş olmasıdır: herhangi bir bilimsel analitik yazılım için önemli özellikler.

resim açıklamasını buraya girin


1
Neden varsayılan rastgele noktalar algoritmasını sevmediğiniz ve GME'lerin neden daha uygun olduğu hakkında daha fazla bilgi verebilir misiniz?
Stephen Lead

@Aaron İyi biri! Hawth'ın Modelleme Araçları olduğu için bunu denemedim - İndirip bir çatlak vereceğim!
om_henners

3
@Stephen Geçen ay içinde dört sınıfta rastgele puanlar üretiyordum. Birkaç sorunla karşılaştım: 1) ArcGIS, girdi çokgenlerimin dışında birkaç nokta üretti 2) Arc, girdi parametrelerim için çok küçük alanlarla (örneğin, izin verilen minimum mesafe = 50m ve nokta = 50) uğraşırken zor bir zaman geçirdi, oysa GME bunları ele aldı kurallar ihlal edilinceye kadar rastgele noktalar üreterek ve ardından bir uyarı mesajı görüntüleyerek 3) Arc'ın RPG'si muhtemelen R'nin yerel belleği kullanmasından dolayı GME'lerden daha yavaştır.
Aaron

Güzel bir! Bazı toplu işleme @Aaron yapabilmek için sınırlayıcı bir python var mı?
görüldü

2
@ Destek belgesindeki otomasyon ve toplu işleme bölümünü (p10) inceleyin: spatialecology.com/gme/images/SpatialEcologyGME.pdf
Aaron

4

İç nokta olmayan boşluğu temsil eden halka deliği ve çokgen alanın sınırlayıcı alanını temsil eden bir miktar uzamalı bir halka poligonu oluşturmanız gerekecektir.


Sadece bir zeyilname: ArcInfo lisansı ile bunu Silme aracıyla yapabilirsiniz
om_henners

3

Üzgünüm, dayanamıyorum. GME gibi bir şeyle kaputun altında neler olduğunu bilmek her zaman iyi olduğu için, burada gerçek R kodunda bir çözüm var.

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)

Bu yaklaşım büyük olasılıkla GME'nin bunu yapmasından çok farklıdır, ancak yerel R sp uzamsal sınıfları ve kodu oldukça verimli hale getiren oldukça yeni bir topoloji kütüphanesini kullanmaktadır. Bu ayrıca bir for döngüsüne kolayca sarılabilen bir örnek verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.