43 votos

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

Tengo un polígono vectorial y quiero alcanzar rápidamente el centroide de este polígono para insertarlo en un documento de texto. Estoy trabajando con QGIS. He buscado a través de otras preguntas y aunque algunas son algo cercanas no responden del todo a mi pregunta.

Lo ideal sería que las coordenadas del centroide estuvieran en la tabla de atributos del polígono y yo pudiera copiar y pegar las coordenadas.

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

0 votos

¿Qué formato tiene su documento de texto?

0 votos

Se trata de un documento de MS Word, pero en realidad podría ser cualquier cosa.

47voto

Rihan Meij Puntos 362

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

  • Cargue su polígono
  • Ve al menú -> Vector -> Herramientas de geometría -> centroide del polígono y crea una capa de puntos del centroide
  • Exporte las coordenadas del centroide creado a la tabla de atributos haciendo clic en -> Menú vectorial -> Herramientas de geometría -> Exportar/Añadir columnas de geometría.

Después podrías hacer una unión espacial para añadir las columnas de centroides a los polígonos y volver a eliminar la capa de puntos.

0 votos

Gracias por la respuesta, aprecio la ayuda. Aun así, es mucho trabajo simplemente para saber cuales son las coordenadas del centroide. Lástima que no hay una manera más simple en QGIS.

0 votos

Si aún así quieres que sea más fácil, puedes echar un vistazo a PostGIS y a la función ST_Centroid mencionada más abajo. De esta manera no necesitas crear archivos temporales. También puedes escribir tú mismo un python script para QGIS o utilizar el Modelador SEXTANTE.

14voto

gilhop Puntos 1

Una solución más sólida 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*)'))

1 votos

Respuesta subestimada ;)

11voto

Nick Puntos 3115

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

  • Haga su archivo de centroides utilizando la herramienta Centroides de Polígonos.
  • Abra la tabla de atributos de los centroides y hágala editable (icono del lápiz en la parte inferior).
  • Abra la calculadora de campos (icono de la calculadora en la parte inferior) y elija la opción Crear nuevo campo y llámelo de forma significativa (por ejemplo, Orientación).
  • En la Lista de funciones, amplíe el menú Geometría y seleccione $x then repeat with a new column for $ y (llamándolo Northing, 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 a PostGIS y luego iterar sobre los polígonos, utilizando la función ST_Centroide y almacenar el resultado en un nuevo campo. El trabajo es casi el mismo, pero la segunda opción significa que no tienes un archivo de puntos de centroides separado.

0 votos

Gracias por la respuesta. Aprecio su ayuda. Parece que la respuesta de Curlew es un poco más fácil para mí. Sin embargo, ambas respuestas suponen mucho más trabajo del que yo quería. Al final acabas con varios shapefiles que tienes que nombrar, borrar, editar, etc.

10voto

richsage Puntos 168

Acabo de encontrar este post con casi 5 años de retraso (!), pero esto es lo que hago para calcular los centroides de los polígonos en la versión 2.18.14:

  1. Empezar a editar la capa de polígonos
  2. Crea un nuevo campo de texto, llámalo centroidxy
  3. Utilizando la calculadora de campo, calcule centroidxy \= x( $geometry) || ' , ' || y($ geometría)
  4. El resultado es algo así: 397640.915545362 , 2126924.53637653
  5. Guarde sus ediciones.
  6. Su capa de polígonos contiene ahora un campo con los valores del centroide x,y

0 votos

sencillo y magnífico

1 votos

1. Me preguntaba si la respuesta ya estaba aquí. 2. Yo haría dos columnas nuevas con x e y separadas, pero eso es una opción personal. Es igual de copiable a excel cuando está en dos cols. 3. No importa cuáles sean las unidades de tu mapa, estás calculando las coordenadas del centroide de la molécula o del átomo con esa cantidad de decimales. Dos o tres suelen ser más que suficientes :D

7voto

Madpr Puntos 11

¿Qué tal si utilizas esto en la calculadora de campo 2.2?

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

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

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X