Come determinare il centroide dei poligoni?


34

Ho un vettore poligonale e voglio raggiungere rapidamente il centroide di questo poligono per l'inserimento in un documento di testo. Sto lavorando con QGIS. Ho cercato altre domande e sebbene alcune siano in qualche modo vicine, non rispondono perfettamente alla mia domanda.

Idealmente, le coordinate del centroide sarebbero nella tabella degli attributi del poligono e potrei semplicemente copiare e incollare le coordinate.

Non voglio creare un file vettoriale di punti separato che rappresenti il ​​centroide e quindi trovare queste coordinate e copiarle e incollarle.


In che formato è il tuo documento di testo?
Nathan W,

È un documento MS Word, ma in realtà potrebbe essere qualsiasi cosa.
David

Risposte:


34

Un centroide è per definizione uno strato punto e non un poligono. Pertanto è necessario creare un nuovo livello, che è facile come torta in QGIS 1.8 e versioni successive.

  • Carica nel tuo poligono
  • Vai al menu -> Vettore -> Strumenti geometria -> centroide poligonale e crea un livello punto centroide
  • Esporta le coordinate del centroide creato nella tabella degli attributi facendo clic su -> Menu vettoriale -> Strumenti geometria -> Esporta / Aggiungi colonne geometriche.

Successivamente è possibile creare un'unione spaziale per aggiungere le colonne dei centroidi ai poligoni ed eliminare nuovamente il livello punto.


Grazie per la risposta, apprezzo l'aiuto. Tuttavia, questo è molto lavoro semplice per sapere quali sono le coordinate del centroide. Peccato che non ci sia un modo più semplice in QGIS.
David,

Se vuoi ancora più facilmente potresti dare un'occhiata a PostGIS e alla funzione ST_Centroid menzionata di seguito. In questo modo non è necessario creare file temporanei. In alternativa, puoi scrivere uno script Python per QGIS o utilizzare SEXTANTE Modeler.
Chiurlo

10

Realizzare un nuovo shapefile è davvero una delle opzioni più semplici. Tuttavia, non è necessario copiare e incollare le coordinate. Fai questo:

  • Crea il tuo file centroidi usando lo strumento Poligono centroidi.
  • Apri la tabella degli attributi dei centroidi e rendila modificabile (icona a forma di matita in basso).
  • Apri la calcolatrice sul campo (icona della calcolatrice in basso) e scegli l'opzione Crea nuovo campo e chiamala come significativa (ad es. Easting).
  • Dall'elenco delle funzioni espandi il menu Geometria e scegli $ x quindi ripeti con una nuova colonna per $ y (chiamandola Nord, diciamo).
  • Salva le tue modifiche e ora hai tutte le coordinate come parte della tabella degli attributi complete dell'ID poligonale originale e degli attributi se hai usato lo strumento centroidi.

In alternativa dovrai importare i tuoi dati in PostGIS e quindi scorrere i poligoni, usando la funzione ST_Centroid e archiviare il risultato in un nuovo campo. Il lavoro in questione è più o meno lo stesso, ma la seconda opzione indica che non si dispone di un file di punti centroidi separato.


Grazie per la risposta. Apprezzo il vostro aiuto. Sembra che la risposta di Curlew sia un po 'più semplice per me. Comunque entrambe queste risposte sono molto più lavoro che volevo. Alla fine ti ritrovi con vari shapefile che devi nominare, eliminare, modificare, ecc.
David

8

Un'anima più robusta alla risposta di Mike: long = toreal(regexp_substr(geom_to_wkt(centroid($geometry)), '(-?\\d+\\.?\\d*) -?\\d+\\.?\\d*')) lat = toreal(regexp_substr(geom_to_wkt(centroid($geometry)), '-?\\d+\\.?\\d* (-?\\d+\\.?\\d*)'))


1
Risposta sottovalutata;)
Fernando Irarrázaval G

6

Che ne dici di usarlo nel 2.2 Field Calculator?

Campo lungo = substr (geomToWKT (centroide ($ geometry)), 7, 12)

Lat field = substr (geomToWKT (centroid ($ geometry)), strpos (geomToWKT (centroid ($ geometry)), '') +2, 12)

Sembra che questo sia affrontato in 2.6 con l'opzione xmin xmin (centroide ($ geometria))


5

Mi sono appena imbattuto in questo post con quasi 5 anni di ritardo (!), Ma ecco cosa devo fare per calcolare i centroidi poligonali alla versione 2.18.14:

  1. Inizia a modificare il livello poligonale
  2. Crea un nuovo campo di testo, chiamalo centroidxy
  3. Utilizzando il calcolatore di campo, calcolare centroidxy = x ($ geometry) || ',' || y ($ geometria)
  4. Il risultato è simile al seguente: 397640.915545362, 2126924.53637653
  5. Salva le tue modifiche.
  6. Il tuo livello poligonale ora contiene un campo con valori centroidi x, y

semplice e superbo
Kazuhito,

3

Associa la tabella dei punti del centroide alla tabella dei poligoni e poi metti le coordinate con il nome e la forma del poligono. I poligoni non hanno un lat in sé e per sé


Grazie per la tua risposta. Sì, mi rendo conto che i poligoni non hanno un solo lat in sé e per sé semplicemente qualcosa che può essere calcolato. Sfortunatamente, in QGIS non è più facile di così. Grazie ancora a tutti per le risposte. E anche così in fretta. Grazie!
David,

2

Mi sono imbattuto in questo post ed è stato difficile seguirlo, aggiornamento suggerito:

Nota: questo calcolerà la latitudine e la longitudine nelle coordinate di proiezione (che possono essere metri). Se vuoi le coordinate in gradi decimali (suppongo che tu lo faccia o sono per lo più incomprensibili) prima salva il livello in questo CRS: EPSG: 4326, WGS 84.

  1. Calcolatrice a campo aperto
  2. Crea un nuovo campo
  3. Inserisci il nome (Latitudine o Longitudine)
  4. Seleziona decimale come tipo di campo di output
  5. Immettere questa espressione per latitudine: y ($ geometria) e questa espressione per Longitudine: x ($ geometria)
  6. premere OK

-2

lon = ToReal (regexp_substr (geomToWKT (centroid ($ geometry)), '([\ s]')) lat = ToReal (regexp_substr (geomToWKT (centroid ($ geometry)), '\ s [)]'))


1
Questa non è una risposta. Visitate il tour per capire meglio come rispondere a una domanda ...
Nightwatch,
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.