Index: source/loadlayer.rst =================================================================== --- source/loadlayer.rst (revisión: 15306) +++ source/loadlayer.rst (copia de trabajo) @@ -25,6 +25,11 @@ vlayer = QgsVectorLayer("/path/to/shapefile/file.shp", "layer_name_you_like", "ogr") +* MySQL WKB-based geometries, through OGR - data source is the connection string to the table:: + + uri = "MySQL:dbname,host=localhost,port=3306,user=root,password=xxx|layername=my_table" + vlayer = QgsVectorLayer( uri, "my_table", "ogr" ) + * PostGIS database - data source is a string with all information needed to create a connection to PostgreSQL database. :class:`QgsDataSourceURI` class can generate this string for you. Note that QGIS has to be compiled with Postgres support, otherwise this provider isn't available. :: Index: source/vector.rst =================================================================== --- source/vector.rst (revisión: 15306) +++ source/vector.rst (copia de trabajo) @@ -575,7 +575,7 @@ * single symbol renderer (:class:`QgsSingleSymbolRenderer`) --- all features are rendererd with the same symbol. * unique value renderer (:class:`QgsUniqueValueRenderer`) --- symbol for each feature is choosen from attribute value. -* graduated symbol renderer (:class:`QgsGraduatedSymbolRenderer`) +* graduated symbol renderer (:class:`QgsGraduatedSymbolRenderer`) --- a symbol is applied to a subgroup (class) of features, which is calculated on a numeric field * continuous color renderer (:class:`QgsContinuousSymbolRenderer`) How to create a point symbol:: @@ -624,5 +624,65 @@ Create graduated symbol renderer:: - TODO + # Set the numeric field and the number of classes to be generated + fieldName = "My_Field" + numberOfClasses = 5 + + # Get the field index based on the field name + mFieldMap = {} + fields = layer.pendingFields() + for ( key, field ) in fields.iteritems(): +     if field.type() == QVariant.Int or field.type() == QVariant.Double:         +         mFieldMap[ str( field.name() ) ] = key + fieldIndex = mFieldMap[ fieldName ] + # Create the renderer object to be associated to the layer later + renderer = QgsGraduatedSymbolRenderer( layer.geometryType() ) + + # Here you may choose the renderer mode from EqualInterval/Quantile/Empty + renderer.setMode( QgsGraduatedSymbolRenderer.EqualInterval ) + + # Prepare the required symbol objects + symbolList = [] + geom = layer.geometryType() + provider = layer.dataProvider() + for i in range( numberOfClasses ): +     symbol = QgsSymbol( geom ) +     brush = QBrush()         +     brush.setColor( self.randomColor() ) +     brush.setStyle( Qt.SolidPattern ) +     symbol.setBrush( brush ) +     symbolList.append( symbol ) + + # Define classes (lower and upper value as well as a label for each class) + minimum = provider.minimumValue( fieldIndex ).toDouble()[ 0 ] + maximum = provider.maximumValue( fieldIndex ).toDouble()[ 0 ] + for i in range( numberOfClasses ): +     # Switch if attribute is int or double +     lower = ('%.*f' % (2, minimum + ( maximum - minimum ) / numberOfClasses * i ) ) +     upper = ('%.*f' % (2, minimum + ( maximum - minimum ) / numberOfClasses * ( i + 1 ) ) ) + +     lowerString = QVariant( lower ).toString() +     upperString = QVariant( upper ).toString() +     symbolList[ i ].setLowerValue( lowerString ) +     symbolList[ i ].setUpperValue( upperString ) +     symbolList[ i ].setLabel( lowerString + " - " + upperString ) + + # Define a symbol object based on each class definition + for i in range( numberOfClasses ): +     symbol = symbolList[ i ] +     lower_bound = symbol.lowerValue() +     upper_bound = symbol.upperValue() +     label = symbol.label() + +     sy = QgsSymbol( layer.geometryType(), lower_bound, upper_bound, label ) +     sy.setFillColor( symbol.brush().color() ) +     sy.setFillStyle( symbol.brush().style() ) + +     renderer.addSymbol( sy ) + + # Set the field index to classify and set the created renderer object to the layer + renderer.setClassificationField( fieldIndex ) + layer.setRenderer( renderer ) + +