Estoy usando QGIS 1.8 Lisboa. Después de calcular los centroides a partir de un archivo de forma de polígono, si algunos de ellos se encuentran fuera de los contornos del polígono, me gustaría moverlos sobre el polígono del que provienen. El criterio debe ser unívoco, ya que debo usarlos para extraer las coordenadas que se utilizarán como el código de identificación del polígono. Por lo tanto, el procedimiento debería generar la misma ubicación de punto cada vez que se ejecuta para el mismo polígono (no una posición aleatoria como la dada por la función "puntos aleatorios", que da un nuevo resultado cada vez que se ejecuta).
9
Respuestas:
Puede usar la biblioteca de Python Shapely, que proporciona una función
representative_point()
que se garantiza que se encuentra dentro del polígono.Aquí hay un script de Python que se puede ejecutar en la consola QGIS Python. Se debe seleccionar la capa de polígono para la que desea crear el atributo. La función toma el nombre del atributo que desea actualizar. El atributo ya debe existir en su capa, debe ser de tipo cadena y debe ser lo suficientemente largo (30 caracteres).
Aquí hay un ejemplo de los puntos que encontró el algoritmo:
fuente
La herramienta centroide ftools puede colocar el centroide fuera del polígono si es cóncavo.
ST_PointOnSurface
definitivamente hará lo que quieras. Puede usar el comando desde QGIS si lo ha instalado usando SPIT para obtener su shapefile en PostGIS y luego usar el complemento PgQuery para ejecutar la consulta.Alternativamente, si instalar PostGIS es un poco excesivo para un uso único, puede usar Spatialite desde QGIS. Luego puede usar el complemento QSpatiaLite para importar sus datos a SpatiaLite y ejecutar la consulta (honores SpatialLite
ST_PointOnSurface
).fuente
cuando te entiendo bien, usa: Vector-> Herramientas de investigación_> Puntos aleatorios. Ahora seleccione bajo "Diseño de muestreo estratificado (polígonos individuales)" use el valor del campo de entrada y use el campo apropiado, que proporciona el valor numérico de los puntos, que deben generarse para cada polígono diferente
fuente
El complemento realcentroids, disponible para instalar a través de Complementos> Administrar e instalar complementos, funcionó para mí en QGIS 2.2 para generar puntos tipo centroide, forzados dentro de cada polígono si es cóncavo (el punto se ubicará muy cerca del borde). Probé la herramienta de Puntos aleatorios según lo sugerido por Kurt, y aunque especifiqué 1 punto por polígono, genera dos en su lugar. Una desventaja adicional es que, en la mayoría de los casos, los puntos no representan el centroide ya que son aleatorios.
http://www.agt.bme.hu/gis/qgis/realcentroid/
fuente