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?
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?
Respuestas:
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.
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.
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.