Creazione di n. Di punti regolarmente distanziati all'interno del poligono in QGIS


12

Ho usato lo strumento di ricerca "Punti regolari" per produrre un certo numero di punti all'interno di un poligono, ma forma una griglia rettangolare di punti anziché solo all'interno della forma del poligono. Dato che ho bisogno di un certo numero di punti all'interno del poligono, c'è un modo per farlo senza tentativi ed errori?

Ad esempio, al momento solo 8 dei 25 punti che voglio sono all'interno del poligono, ma voglio 25 punti, quindi potrei aumentare a 50 punti e vedere quanti quindi compaiono all'interno del poligono

inserisci qui la descrizione dell'immagine


Voglio anche creare n. Di punti regolarmente distanziati all'interno del poligono in QGIS, esiste qualche plugin per questo? Potrei farlo con un'estensione di Arcgis chiamata ET GEOWIZARD (punti uniformi in poligoni), ma devo farlo in QGIS !! Mi potete aiutare?
Ana María,

Risposte:


3

Ciò a cui QGIS si riferisce in termini di limite del livello è in realtà l'inviluppo o il riquadro di delimitazione della geometria.

Ho documentato una soluzione che è probabilmente la più vicina all'automazione (a meno di presentare una richiesta di bug / funzionalità).

Il processo funziona in base al rapporto tra l'area dei due oggetti: la geometria della feature e il riquadro di delimitazione).

Controllare i seguenti passaggi di seguito:

  1. Seleziona il livello su cui vuoi lavorare.

  2. Seleziona la funzione su cui desideri lavorare. Assicurati che non sia selezionato nient'altro.

  3. Esegui il frammento seguente nella console di 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()

    Assicurati di premere invio poiché l'ultima riga non tornerà automaticamente.

  4. Esegui di Regular Pointsnuovo lo strumento, ma inserisci il numero di punti che desideri all'interno della casella moltiplicato per l'output fornito dallo script.

Nel mio esempio di seguito, il risultato che ho ricevuto dall'output era un valore di ~ 2. Ho richiesto 20 punti per essere emessi dal processo dove in realtà volevo solo 10. Mi hanno dato 8 in cambio, che è abbastanza vicino. A seconda della forma effettiva che stai usando, i risultati varieranno.

Se tu fossi così incline, potresti automatizzare (ricorsivamente) il processo Punti regolari modificando le variabili fino a quando non sei arrivato al numero desiderato.

Campione


+1 Il tuo suggerimento è vicino, ma potrebbe non riuscire a convergere. Quello che vuoi fare è (a) stimare una spaziatura che farà cadere il numero desiderato di punti all'interno del poligono e (b) iterare con un offset casuale (mostrato nella schermata).
whuber

Se faccio un offset casuale, allora non è più una griglia, giusto? Una griglia all'interno del poligono con un certo numero di punti è ciò che voglio, campionare in tutta l'area. O forse non è quello che voglio, perché scegliere un punto di partenza e partire da lì non è abbastanza casuale?
celacanto

@coelacanth Forse non stai rivelando abbastanza informazioni sul tuo problema allora? Quale sarebbe il prossimo passo nella tua analisi? Potrebbero esserci altri modi per raggiungere il tuo obiettivo, oltre all'utilizzo di una griglia di punti.
nagytech,

Hmmm, sono nuovo in tutto il campo del GPS / GIS e del design del sondaggio, quindi per favore fatemi sapere se c'è un modo migliore per fare le cose. Voglio creare un certo numero di aree di campionamento all'interno di un poligono (cioè una sezione di una foresta) per campionare la vegetazione. Voglio che le aree siano distribuite in tutto il sito in modo da ottenere una rappresentazione dell'intero sito. Quello a cui voglio usare questa funzione è impostare le posizioni di quelle aree di campionamento all'interno del confine. Quindi mi sposterei fino a quel punto usando un'unità GPS e raccoglierei i miei dati.
celacanto

0

Puoi farlo facilmente semplicemente ritagliando: genera la griglia regolare di punti come hai fatto tu e poi usa Vector> Strumenti di geoprocessing> Clip, inserisci la griglia di punti generata e usa la funzione come maschera di clip.


-1

Una soluzione semplicistica è suggerita dallo screenshot. È possibile estrarre i poligoni in nuovi livelli con Vector -> Data Managment Tools -> Split vector layer, importarli e quindi scegliere il livello con la funzione (ID) desiderata come livello di input per il campionatore "Punti regolari".

Se devi farlo solo per una manciata di poligoni, trovarli ed esportarli separatamente potrebbe essere più efficiente. Dopo averne selezionato uno, fai clic con il pulsante destro del mouse sul nome del livello e scegli Save Selection As ..., scegli shapefile, compila il resto e ripeti come prima.

EDIT: Dal momento che hai già una singola funzione, non riesco a pensare a qualcosa di più semplice ma usando una griglia più densa, intersecandola di nuovo con il poligono e infine rimuovendo tutti i punti estranei (più facile attraverso la tabella degli attributi, poiché ottieni sia la centratura facile che conteggio totale).


C'è già un solo poligono nel file di forma.
celacanto

Oh, che fastidio allora (come il fatto che abbia creato 20 invece di 25 punti). Ti suggerisco di aprire una richiesta di funzionalità su hub.qgis.org/projects/quantum-gis/issues - Suppongo che dovrebbe avere una casella di controllo aggiuntiva per utilizzare il limite del livello reale.
lynxlynxlynx,

-2

Applica una query di definizione ai tuoi poligoni (in 1.8 fai clic con il pulsante destro del mouse sul livello e scegli Query). Quindi eseguire lo strumento. Rimuovi la query.


In che modo aiuta. È lo stesso che fare una selezione.
Nathan W,

Abbastanza. Ma questo funziona in QGIS in questo momento mentre la selezione non lo fa, almeno sui miei computer.
John,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.