¿Cómo determinar el centroide de los polígonos?

32

Tengo un vector de polígono y quiero obtener rápidamente el centroide de este polígono para insertarlo en un documento de texto. Estoy trabajando con QGIS. Busqué a través de otras preguntas y aunque algunas están un poco cerca, no responden por completo a mi pregunta.

Idealmente, las coordenadas del centroide estarían en la tabla de atributos del polígono y podría copiar y pegar las coordenadas.

No quiero tener que crear un archivo de vector de puntos separado que represente el centroide y luego encontrar estas coordenadas y copiarlas y pegarlas.

    
pregunta David 04.01.2013 - 17:32

7 respuestas

33

Un centroide es por definición una capa de puntos y no un polígono. Por lo tanto, debe crear una nueva capa, que es tan fácil como circular en QGIS 1.8 y versiones superiores.

  • carga en tu polígono
  • Ir al menú - > Vector - > Herramientas de geometría - > Centroide polígono y crear una capa de punto centroide
  • Exporte las coordenadas del centroide creado a la tabla de atributos haciendo clic en - > Menú de vectores - > Herramientas de geometría - > Exportar / Agregar columnas de geometría.

Luego, podría hacer una unión espacial para agregar las columnas de los centroides a los polígonos y eliminar la capa de puntos nuevamente.

    
respondido por el Curlew 04.01.2013 - 17:43
10

Realmente, crear un nuevo shapefile es una de las opciones más fáciles. Sin embargo, no es necesario copiar y pegar las coordenadas. Haz esto:

  • Cree su archivo de centroides utilizando la herramienta Polígonos centroides.
  • Abra la tabla de atributos de los centroides y hágalo editable (icono de lápiz en la parte inferior).
  • Abra la calculadora de campo (ícono de la calculadora en la parte inferior) y elija la opción Crear nuevo campo y llámela como algo significativo (por ejemplo, hacia el este).
  • Desde la Lista de funciones, expanda el menú Geometría y elija $ x, luego repita con una nueva columna para $ y (llamándolo Norte, por ejemplo).
  • Guarde sus ediciones y ahora tiene todas las coordenadas como parte de la tabla de atributos completa con el ID del polígono original y los atributos si usó la herramienta centroides.

Alternativamente, tendrá que importar sus datos a PostGIS y luego iterar sobre los polígonos, usando la función ST_Centroid y almacenar el resultado en un nuevo campo. El trabajo involucrado es casi el mismo, pero la segunda opción significa que no tiene un archivo de puntos de centroides separado.

    
respondido por el MappaGnosis 04.01.2013 - 17:46
6

Una respuesta más robusta a la respuesta de 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*)'))

    
respondido por el SzieberthAdam 19.01.2016 - 14:46
5

¿Qué te parece usar esto en la Calculadora de campo 2.2?

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

campo Lat = substr (geomToWKT (centroide ($ geometría)), strpos (geomToWKT (centroide ($ geometría)), '') +2, 12)

Parece que esto se trata en 2.6 con la opción xmin xmin (centroide ($ geometría))

    
respondido por el mike 09.02.2015 - 21:46
3

Asocie la tabla de puntos del centroide con la tabla de los polígonos y luego coloque las coordenadas con el nombre y la forma del polígono. Los polígonos no tienen una latitud larga en sí mismos

    
respondido por el lewis 04.01.2013 - 17:44
3

Acabo de encontrar esta publicación casi 5 años tarde (!), pero esto es lo que hago para calcular los centroides poligonales en la versión 2.18.14:

  1. Comience a editar la capa de polígono
  2. Crea un nuevo campo de texto, llámalo centroidxy
  3. Usando la calculadora de campo, calcule centroidxy = x ($ geometry) || ',' || y ($ geometría)
  4. El resultado se ve algo como: 397640.915545362, 2126924.53637653
  5. Guarda tus ediciones.
  6. Su capa de polígono ahora contiene un campo con los valores de centroide x, y
respondido por el Stu Smith 07.12.2017 - 21:13
-2

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

    
respondido por el Marco Aurelio 20.11.2017 - 14:45

Lea otras preguntas en las etiquetas