void QgsZonalStatisticsDialog::insertAvailableLayers() { //insert available raster layers //enter available layers into the combo box QMap<QString, QgsMapLayer*> mapLayers = QgsMapLayerRegistry::instance()->mapLayers(); QMap<QString, QgsMapLayer*>::iterator layer_it = mapLayers.begin(); for ( ; layer_it != mapLayers.end(); ++layer_it ) { QgsRasterLayer* rl = dynamic_cast<QgsRasterLayer*>( layer_it.value() ); if ( rl ) { QgsRasterDataProvider* rp = rl->dataProvider(); if ( rp && rp->name() == "gdal" ) { mRasterLayerComboBox->addItem( rl->name(), QVariant( rl->source() ) ); } } else { QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( layer_it.value() ); if ( vl && vl->geometryType() == QGis::Polygon ) { QgsVectorDataProvider* provider = vl->dataProvider(); if ( provider->capabilities() & QgsVectorDataProvider::AddAttributes ) { mPolygonLayerComboBox->addItem( vl->name(), QVariant( vl->id() ) ); } } } } }
void QgsTileScaleWidget::layerChanged( QgsMapLayer *layer ) { QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( layer ); mResolutions.clear(); mSlider->setDisabled( true ); if ( !rl || rl->providerType() != "wms" ) return; QString uri = rl->source(); int tiledpos = uri.indexOf( "tiled=" ); int urlpos = uri.indexOf( "url=" ); if ( tiledpos >= 0 && urlpos >= 0 && urlpos > tiledpos ) { uri = uri.mid( tiledpos + 6 ); int pos = uri.indexOf( "," ); if ( pos >= 0 ) uri = uri.left( pos ); QStringList params = uri.split( ";" ); if ( params.size() < 3 ) return; params.takeFirst(); params.takeFirst(); mResolutions.clear(); foreach( QString r, params ) { mResolutions << r.toDouble(); } qSort( mResolutions ); for ( int i = 0; i < mResolutions.size(); i++ ) QgsDebugMsg( QString( "found resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) ); mSlider->setRange( 0, mResolutions.size() - 1 ); mSlider->setTickInterval( 1 ); mSlider->setInvertedAppearance( true ); mSlider->setPageStep( 1 ); mSlider->setTracking( false ); scaleChanged( mMapCanvas->scale() ); mSlider->setEnabled( true ); show(); }
QString QgsZonalStatisticsDialog::rasterFilePath() const { QgsRasterLayer* layer = rasterLayer(); return layer ? layer->source() : QString(); }