Hi Martin, <div><br></div><div>I would like to propose a couple of Python snippets to be included in the PyQGIS Cookbook.</div><div><br></div><div>1) Load of MySQL geometries:</div><div>----------------------</div><div>uri = "MySQL:dbname,host=localhost,port=3306,user=root,password=xxx|layername=my_table"<br>
vLayer = QgsVectorLayer( uri, 'my_table', 'ogr' )<br>----------------------</div><div>BTW, I'm not sure if it is the best way to do it, but it works.</div><div><br></div><div>2) Graduated symbol renderer (Old symbology):</div>
<div>----------------------</div><div><div>fieldName = "My_Field"</div><div>numberOfClasses = 5</div><div>mFieldMap = {}</div><div><br></div><div># Get the field index based on the field name</div><div>fields = layer.pendingFields()</div>
<div>for ( key, field ) in fields.iteritems():</div><div> if field.type() == QVariant.Int or field.type() == QVariant.Double: </div><div> mFieldMap[ str( <a href="http://field.name">field.name</a>() ) ] = key</div>
<div>fieldIndex = mFieldMap[ fieldName ]</div><div><br></div><div># Create the renderer object</div><div>renderer = QgsGraduatedSymbolRenderer( layer.geometryType() )</div><div>renderer.setMode( QgsGraduatedSymbolRenderer.EqualInterval ) # EqualInterval/Quantile/Empty</div>
<div><br></div><div># Prepare the required symbol objects</div><div>symbolList = []</div><div>geom = layer.geometryType()</div><div>provider = layer.dataProvider()</div><div>for i in range( numberOfClasses ):</div><div> symbol = QgsSymbol( geom )</div>
<div> brush = QBrush() </div><div> brush.setColor( self.randomColor() )</div><div> brush.setStyle( Qt.SolidPattern )</div><div> symbol.setBrush( brush )</div><div> symbolList.append( symbol )</div><div>
<br></div><div># Define classes</div><div>minimum = provider.minimumValue( fieldIndex ).toDouble()[ 0 ]</div><div>maximum = provider.maximumValue( fieldIndex ).toDouble()[ 0 ]</div><div>for i in range( numberOfClasses ):</div>
<div> # Switch if attribute is int or double</div><div> lower = ('%.*f' % (2, minimum + ( maximum - minimum ) / numberOfClasses * i ) )</div><div> upper = ('%.*f' % (2, minimum + ( maximum - minimum ) / numberOfClasses * ( i + 1 ) ) )</div>
<div><br></div><div> lowerString = QVariant( lower ).toString()</div><div> upperString = QVariant( upper ).toString()</div><div> symbolList[ i ].setLowerValue( lowerString )</div><div> symbolList[ i ].setUpperValue( upperString )</div>
<div> symbolList[ i ].setLabel( lowerString + " - " + upperString )</div><div><br></div><div># Define a symbol object based on each class</div><div>for i in range( numberOfClasses ):</div><div> symbol = symbolList[ i ]</div>
<div> lower_bound = symbol.lowerValue()</div><div> upper_bound = symbol.upperValue()</div><div> label = symbol.label()</div><div><br></div><div> sy = QgsSymbol( layer.geometryType(), lower_bound, upper_bound, label )</div>
<div> sy.setFillColor( symbol.brush().color() )</div><div> sy.setFillStyle( symbol.brush().style() )</div><div><br></div><div> renderer.addSymbol( sy )</div><div><br></div><div>renderer.setClassificationField( fieldIndex )</div>
<div>layer.setRenderer( renderer )</div><div>----------------------</div></div><div><br></div><div><br></div><div>Regards, </div>
<div><br></div><div>Germán <br clear="all"><br>-- <br>-----------<br> |\__ <br>(:>__)(<br> |/ <br><br>Soluciones Geoinformáticas Libres <br><a href="http://geotux.tuxfamily.org/" target="_blank">http://geotux.tuxfamily.org/</a><br>
</div>