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

34

Tengo un vector de polígono y quiero alcanzar rápidamente el centroide de este polígono para insertarlo en un documento de texto. Estoy trabajando con QGIS. Busqué en otras preguntas y, aunque algunas están un poco cerca, no responden 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 vectorial de puntos separado que represente el centroide y luego encontrar estas coordenadas y copiarlas y pegarlas.

David
fuente
¿De qué formato es su documento de texto?
Nathan W
Es un documento de MS Word pero realmente podría ser cualquier cosa.
David

Respuestas:

34

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 fácil como un pastel en QGIS 1.8 y versiones superiores.

  • Carga en tu polígono
  • Vaya al menú -> Vector -> Herramientas de geometría -> centroide poligonal y cree 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 centroides a los polígonos y eliminar la capa de puntos nuevamente.

Zarapito
fuente
Gracias por la respuesta, agradezco la ayuda. Aún así, es mucho trabajo simple saber cuáles son las coordenadas del centroide. Lástima que no haya una forma más simple en QGIS.
David
Si aún así lo desea, puede echar un vistazo a PostGIS y la función ST_Centroid que se menciona a continuación. De esta manera no necesita crear archivos temporales. Alternativamente, podría escribir un script de Python para QGIS o usar el Modelador SEXTANTE.
Curlew
10

Realmente, hacer un nuevo shapefile es una de tus opciones más fáciles. Sin embargo, no necesita copiar y pegar coordenadas. Hacer esto:

  • Cree su archivo de centroides utilizando la herramienta Centroides poligonales.
  • Abra la tabla de atributos centroides y hágalo editable (icono de lápiz en la parte inferior).
  • Abra la calculadora de campo (icono de la calculadora en la parte inferior) y elija la opción Crear nuevo campo y llámelo algo significativo (por ejemplo, Este).
  • En 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 utilizó la herramienta de centroides.

Alternativamente, tendrá que importar sus datos en PostGIS y luego iterar sobre los polígonos, utilizando 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.

MappaGnosis
fuente
Gracias por la respuesta. Aprecio tu ayuda. Parece que la respuesta de Curlew es un poco más fácil para mí. Aún así, ambas respuestas son mucho más trabajo de lo que quería. Al final se termina con varios archivos de forma que usted tiene que nombre, borrar, editar, etc
David
8

Una soulution 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*)'))

SzieberthAdam
fuente
1
Respuesta subestimada;)
Fernando Irarrázaval G
6

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

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

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

Parece que esto se aborda en 2.6 con la opción xmin xmin (centroide ($ geometry))

micro
fuente
5

Acabo de encontrar esta publicación casi 5 años tarde (!), Pero esto es lo que hago para calcular los centroides de polígonos 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 parece a: 397640.915545362, 2126924.53637653
  5. Guarda tus ediciones.
  6. Su capa de polígono ahora contiene un campo con valores de centroide x, y
Stu Smith
fuente
simple y excelente
Kazuhito
3

Asocia la tabla de puntos del centroide con la tabla de los polígonos y luego coloca las coordenadas con el nombre y la forma del polígono. Los polígonos no tienen un lat largo en sí mismos

ametralladora
fuente
Gracias por tu respuesta. Sí, me doy cuenta de que los polígonos no tienen un lat de largo en sí mismos, simplemente algo que se puede calcular. Desafortunadamente, no es más fácil que esto en QGIS. Gracias de nuevo a todos por las respuestas. Y muy rápido también. ¡Gracias!
David
2

Encontré esta publicación y era difícil de seguir, sugerí una actualización:

Nota: Esto calculará la latitud y longitud en sus coordenadas de proyección (que pueden ser metros). Si desea que las coordenadas estén en grados decimales (supongo que sí o son en su mayoría ininteligibles) primero guarde la capa en este CRS: EPSG: 4326, WGS 84.

  1. Calculadora de campo abierto
  2. Crear nuevo campo
  3. Ingrese el nombre (Latitud o Longitud)
  4. Seleccione decimal como tipo de campo de salida
  5. Ingrese esta expresión para latitud: y ($ geometry) y esta expresión para Longitud: x ($ geometry)
  6. presiona OK
Mark Matthews
fuente
-2

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

Marco Aurelio
fuente
1
Esta no es una respuesta en absoluto. Visite el recorrido para comprender mejor cómo responder una pregunta ...
Nightwatch