¿Cómo crear puntos aleatorios fuera de los polígonos?

11

La herramienta Crear punto aleatorio puede generar un cierto número de puntos dentro de los polígonos. Me pregunto, dado un cuadro delimitador, ¿hay alguna forma de que pueda generar puntos aleatorios fuera de ese polígono?

Visto
fuente

Respuestas:

13

Personalmente no me gusta el algoritmo de punto aleatorio en ArcGIS. Alternativamente, use lagenrandompnts función del entorno de modelado geoespacial (GME) . Podrá identificar polígonos específicos donde se excluirán los puntos aleatorios (vea el área resaltada en .jpg adjunto). Lo mejor de todo es que este software es gratuito.

GME le proporciona un conjunto de herramientas de análisis y modelado, que van desde pequeños "bloques de construcción" que puede utilizar para construir un flujo de trabajo sofisticado, hasta programas de análisis completamente autónomos. También utiliza el extraordinariamente poderoso software de código abierto R como motor estadístico para manejar algunas de las herramientas de análisis. Una de las muchas fortalezas de R es que es de código abierto, completamente transparente y bien documentado: características importantes para cualquier software de análisis científico.

ingrese la descripción de la imagen aquí

Aaron
fuente
1
¿Puede dar más información sobre por qué no le gusta el algoritmo predeterminado de puntos aleatorios y por qué GME es más óptimo?
Stephen Lead el
@Aaron Nice one! No lo he intentado ya que eran las herramientas de modelado de Hawth. ¡Tendré que descargarlo y darle una oportunidad!
om_henners
3
@Stephen En el último mes, estaba generando puntos aleatorios en cuatro clases. Encontré varios problemas: 1) ArcGIS produjo varios puntos fuera de mis polígonos de entrada 2) Arc tuvo dificultades para manejar áreas demasiado pequeñas para mis parámetros de entrada (por ejemplo, distancia mínima permitida = 50m y puntos = 50), mientras que GME manejó estos problemas al producir puntos aleatorios hasta que se violaron las reglas y luego mostrar un mensaje de advertencia 3) El RPG de Arc es más lento que el de GME probablemente debido al uso de memoria local por parte de R.
Aaron
¡Buena esa! ¿Tiene un límite de Python para que pueda hacer un procesamiento por lotes @ Aaron?
Visto el
2
@Seen consulte la sección de automatización y procesamiento por lotes (p10) en el documento de soporte: spatialecology.com/gme/images/SpatialEcologyGME.pdf
Aaron
4

Tendrá que crear un polígono de rosquilla con el orificio de rosquilla que represente el espacio interior sin puntos y alguna extensión espacial que represente el área delimitadora del área poligonal.


fuente
Solo un apéndice: con una licencia de ArcInfo puede hacer esto con la herramienta de borrado
om_henners
3

Lo siento, no puedo resistirme. Como siempre es bueno saber qué sucede debajo del capó con algo como GME, aquí hay una solución en el código R real.

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)

Es probable que este enfoque sea muy diferente de cómo GME hace esto, pero está utilizando clases espaciales nativas de R sp y una biblioteca de topología bastante nueva que hace que el código sea muy eficiente. Esto también da un ejemplo que puede envolverse fácilmente en un bucle for.

Jeffrey Evans
fuente