9 votos

asignar y desplazar los centroides de sus polígonos

I m utilizando QGIS 1.8 Lisboa. Después de calcular los centroides de polígonos shapefile, si algunos de ellos se encuentran fuera del polígono contornos, me gustaría trasladar a ellos en el polígono del que procedían. El criterio debe ser unívoco, como debo utilizar para extraer las coordenadas para ser utilizado como el código de identificación del polígono de sí mismo. Por lo tanto, el procedimiento de salida el mismo punto de ubicación cada vez que se ejecuta para el mismo polígono (no una posición al azar, como por "azar" puntos de función, que le da un nuevo resultado de cada una de las veces que se corrió).

7voto

Dalroth Puntos 2468

Usted podría utilizar el bien formada biblioteca de python, que proporciona una función representative_point() que está garantizado que se encuentran dentro del polígono.

He aquí una secuencia de comandos de Python que se puede ejecutar en el QGIS consola de Python. La capa de polígonos para el que desea crear el atributo debe ser seleccionado. La función toma el nombre del atributo que se desea actualizar. El atributo ha de existir en su capa ya, tiene que ser de tipo cadena, y debe ser lo suficientemente larga (30 caracteres).

He aquí un ejemplo de los puntos que el algoritmo encuentra:

import shapely.wkb

def setIDPoint(attributename):
 layer = qgis.utils.iface.activeLayer()
 provider = layer.dataProvider()
 fields = provider.fields()
 provider.select(provider.attributeIndexes() )
 attributeID = provider.fieldNameIndex(attributename)
 feature = QgsFeature()
 layer.startEditing()
 while provider.nextFeature(feature):
  wkb = feature.geometry().asWkb()
  polygon = shapely.wkb.loads(wkb)
  reprPoint = ','.join([str(polygon.representative_point().x), str(polygon.representative_point().y)] )
  feature.changeAttribute(attributeID, reprPoint)
  layer.updateFeature(feature)
 layer.commitChanges()

5voto

Nick Puntos 3115

El ftools centroide de la herramienta puede colocar el centro de gravedad fuera del polígono si es cóncava.

ST_PointOnSurface definitivamente va a hacer lo que quiera. Puede utilizar el comando desde el interior de QGIS si usted tiene instalado mediante el ASADOR para conseguir tu shapefile en PostGIS y, a continuación, utilizar la PgQuery plugin para ejecutar la consulta.

Alternativamente, si la instalación de PostGIS es un poco demasiado para un solo uso, puede utilizar Spatialite desde dentro de QGIS. Usted puede utilizar el QSpatiaLite plugin de importación de datos SpatiaLite y ejecutar la consulta (SpatialLite honores ST_PointOnSurface).

2voto

Daryl Spitzer Puntos 220

cuando yo te entiendo a la derecha, uso: Vector->Investigación Tools_>Puntos al Azar. Ahora hay que seleccionar en "Diseño de Muestreo Estratificado (polígonos Individuales)" el valor de uso de campo de entrada y el uso adecuado de campo, lo que le da valor numérico de puntos, lo que debe ser genereated para cada polígono

1voto

Marcin Puntos 25366

realcentroids plugin, disponible para instalar a través de Plugins > Administrar e Instalar Plugins trabajado para mí en QGIS 2.2 para generar centroide-como puntos de forzado en el interior de cada polígono si cóncavo (el punto se encuentra muy cerca de la orilla). He probado el Azar los puntos de la herramienta según lo sugerido por Kurt, y aunque me especificado 1 punto por cada polígono, genera dos en su lugar. Una desventaja adicional es que en la mayoría de los casos, los puntos no representan el centro de gravedad como son al azar.

http://www.agt.bme.hu/gis/qgis/realcentroid/

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