2 votos

Utilice PyQGIS para importar CSV y dibujar puntos usando diferentes colores

Un archivo CSV contiene las columnas latitude, longitude y color.

uri = "file:///C:/data/balls.csv?type=csv&xField=longitude&yField=latitude&spatialIndex=no&subsetIndex=no&watchFile=no"
vlayer = QgsVectorLayer(uri, 'Balls', "delimitedtext")

Usando la consola de Python en QGIS, ¿cómo podemos dibujar cada fila en el CSV como un punto cuyo color depende del valor en la columna color del CSV importado?

Entiendo que QgsDataSourceURI.setDataSource() puede hacer una consulta WHERE durante la importación, pero solo funciona en PostGIS.

1voto

wojo Puntos 1707

Para hacer eso, debe acceder a las propiedades definidas de los datos para la capa de símbolos y establecer el color pasando el nombre del campo como expresión. Puedes hacerlo de la siguiente manera:

uri = "file:///C:/data/balls.csv?type=csv&xField=longitude&yField=latitude&spatialIndex=no&subsetIndex=no&watchFile=no"
vlayer = QgsVectorLayer(uri, 'Balls', "delimitedtext")

mySymbol = QgsSymbolV2.defaultSymbol(vlayer.geometryType())
mySymbolLayer = mySymbol.symbolLayer(0)
## reemplace COLOR_FIELD con el nombre de la columna de sus datos CSV
mySymbolLayer.setDataDefinedProperty("color", '"COLOR_FIELD"')
vlayer.rendererV2().symbols()[0].changeSymbolLayer(0, mySymbolLayer)

QgsMapLayerRegistry.instance().addMapLayer(vlayer)

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