Creación de espacios de puntos definidos y regularmente espaciados dentro del polígono en QGIS

12

Utilicé la herramienta de investigación "Puntos regulares" para producir un cierto número de puntos dentro de un polígono, pero forma una cuadrícula rectangular de puntos en lugar de solo dentro de la forma del polígono. Como necesito una cierta cantidad de puntos dentro del polígono, ¿hay alguna forma de hacerlo sin prueba y error?

Por ejemplo, ahora solo 8 de los 25 puntos que quiero están dentro del polígono, pero quiero 25 puntos, por lo que podría aumentar a 50 puntos y ver cuántos aparecen dentro del polígono

ingrese la descripción de la imagen aquí

celacanto
fuente
También quiero crear # de puntos regularmente espaciados y definidos dentro del polígono en QGIS, ¿existe algún complemento para esto? ¡Podría hacerlo con una extensión de Arcgis llamada ET GEOWIZARD (puntos uniformes en polígonos), pero tengo que hacerlo en QGIS! ¿Me puedes ayudar?
Ana María

Respuestas:

3

A lo que se refiere QGIS en términos del límite de la capa es en realidad el sobre o el cuadro delimitador de la geometría.

He documentado una solución que probablemente sea lo más cerca que estará de automatizar esto (salvo presentar una solicitud de error / función).

El proceso funciona en función de la relación entre el área de los dos objetos: la geometría de la entidad y su cuadro delimitador).

Verifique los siguientes pasos a continuación:

  1. Seleccione la capa en la que desea trabajar.

  2. Seleccione la función en la que desea trabajar. Asegúrese de que nada más esté seleccionado.

  3. Ejecute el siguiente fragmento dentro de la Consola Python.

    layer = qgis.utils.iface.activeLayer()
    features = layer.selectedFeatures()
    feature = features[0]
    geom = feature.geometry()
    env_rect = geom.boundingBox()
    env_geom = QgsGeometry.fromRect(env_rect)
    env_geom.area() / geom.area()
    

    Asegúrese de presionar enter ya que la última línea no regresará automáticamente.

  4. Ejecute la Regular Pointsherramienta nuevamente, pero ingrese el número de puntos que desea dentro del cuadro multiplicado por la salida dada por su script.

En mi muestra a continuación, el resultado que recibí de la salida fue un valor de ~ 2. Solicité que se emitieran 20 puntos por el proceso donde en realidad solo quería 10. Me dieron 8 a cambio, lo cual está bastante cerca. Dependiendo de la forma real que esté utilizando, los resultados variarán.

Si estuviera tan inclinado, podría automatizar (recursivamente) el proceso de Puntos regulares modificando las variables hasta llegar al número deseado.

Muestra

nagytech
fuente
+1 Su sugerencia está cerca, pero puede no converger. Lo que desea hacer es (a) estimar un espacio que hará que el número deseado de puntos caiga dentro del polígono y (b) iterar con un desplazamiento aleatorio (que se muestra en la captura de pantalla).
whuber
Si hago un desplazamiento aleatorio, entonces ya no es una cuadrícula, ¿verdad? Una cuadrícula dentro del polígono con un cierto número de puntos es lo que quiero, para muestrear en toda el área. ¿O tal vez no es lo que quiero, porque elegir un punto de partida e ir desde allí no es lo suficientemente aleatorio?
celacanto
@coelacanth ¿Quizás no esté revelando suficiente información sobre su problema entonces? ¿Cuál sería el próximo paso en su análisis? Puede haber otras formas de lograr su objetivo, además de usar una cuadrícula de puntos.
nagytech
Hmmm, soy nuevo en todo el campo de GPS / GIS y diseño de encuestas, así que avíseme si hay una mejor manera de hacer las cosas. Quiero configurar un cierto número de áreas de muestreo dentro de un polígono (es decir, una sección de un bosque) para muestrear la vegetación. Quiero que las áreas se extiendan por todo el sitio para obtener una representación de todo el sitio. Para lo que quiero usar esta función es establecer las ubicaciones de esas áreas de muestreo dentro del límite. Luego navegaba hasta ese punto usando una unidad GPS y recolectaba mis datos.
celacanto
0

Puede hacer eso simplemente recortando: genere la cuadrícula regular de puntos tal como lo hizo y luego use Vector> Herramientas de geoprocesamiento> Recortar, ingrese la cuadrícula de puntos generada y use la función como máscara de recorte.

Rodrigues
fuente
-1

La captura de pantalla sugiere una solución simplista. Puede extraer los polígonos en nuevas capas con Vector -> Data Managment Tools -> Split vector layer, importarlos y luego elegir la capa con la entidad (ID) que desee como capa de entrada para el muestreador de "Puntos regulares".

Si necesita hacer esto solo para un puñado de polígonos, encontrarlos y exportarlos por separado podría ser más eficiente. Una vez que haya seleccionado uno, haga clic derecho en el nombre de la capa y elija Save Selection As ..., elija shapefile, complete el resto y luego repita como antes.

EDITAR: Dado que ya tiene una única característica, no puedo pensar en nada más simple que usar una cuadrícula más densa, intersectarla con el polígono nuevamente y finalmente eliminar todos los puntos extraneos (lo más fácil a través de la tabla de atributos, ya que obtiene un centrado fácil y cuenta total).

lynxlynxlynx
fuente
Ya solo hay un polígono en el archivo de forma.
coelacanth
Oh, qué molesto entonces (como el hecho de que creó 20 en lugar de 25 puntos). Le sugiero que abra una solicitud de función en hub.qgis.org/projects/quantum-gis/issues . Supongo que debería tener una casilla de verificación adicional para usar el límite de capa real.
lynxlynxlynx
-2

Aplique una consulta de definición a sus polígonos (en 1.8 haga clic derecho en la capa y elija Consulta). Luego ejecute la herramienta. Eliminar la consulta.

John
fuente
¿Cómo ayuda esto? Es lo mismo que hacer una selección.
Nathan W
Más o menos. Pero esto funciona en QGIS en este momento, mientras que la selección no, al menos en mis máquinas.
John