void QgsRasterCalcDialog::insertAvailableRasterBands() { const QMap<QString, QgsMapLayer*>& layers = QgsMapLayerRegistry::instance()->mapLayers(); QMap<QString, QgsMapLayer*>::const_iterator layerIt = layers.constBegin(); bool firstLayer = true; for ( ; layerIt != layers.constEnd(); ++layerIt ) { QgsRasterLayer* rlayer = dynamic_cast<QgsRasterLayer*>( layerIt.value() ); if ( rlayer && rlayer->dataProvider() && rlayer->dataProvider()->name() == "gdal" ) { if ( firstLayer ) //set bounding box / resolution of output to the values of the first possible input layer { mNColumnsSpinBox->setValue( rlayer->width() ); mNRowsSpinBox->setValue( rlayer->height() ); QgsRectangle bbox = rlayer->extent(); mXMinSpinBox->setValue( bbox.xMinimum() ); mXMaxSpinBox->setValue( bbox.xMaximum() ); mYMinSpinBox->setValue( bbox.yMinimum() ); mYMaxSpinBox->setValue( bbox.yMaximum() ); firstLayer = false; } //get number of bands for ( int i = 0; i < rlayer->bandCount(); ++i ) { QgsRasterCalculatorEntry entry; entry.raster = rlayer; entry.bandNumber = i + 1; entry.ref = rlayer->name() + '@' + QString::number( i + 1 ); mAvailableRasterBands.push_back( entry ); mRasterBandsListWidget->addItem( entry.ref ); } } } }
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->id() ) ); } } 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 QgsRasterCalcDialog::insertAvailableRasterBands() { const QMap<QString, QgsMapLayer *> &layers = QgsProject::instance()->mapLayers(); QMap<QString, QgsMapLayer *>::const_iterator layerIt = layers.constBegin(); for ( ; layerIt != layers.constEnd(); ++layerIt ) { QgsRasterLayer *rlayer = dynamic_cast<QgsRasterLayer *>( layerIt.value() ); if ( rlayer && rlayer->dataProvider() && rlayer->dataProvider()->name() == QLatin1String( "gdal" ) ) { if ( !mExtentSizeSet ) //set bounding box / resolution of output to the values of the first possible input layer { setExtentSize( rlayer->width(), rlayer->height(), rlayer->extent() ); mCrsSelector->setCrs( rlayer->crs() ); } //get number of bands for ( int i = 0; i < rlayer->bandCount(); ++i ) { QgsRasterCalculatorEntry entry; entry.raster = rlayer; entry.bandNumber = i + 1; entry.ref = rlayer->name() + '@' + QString::number( i + 1 ); mAvailableRasterBands.push_back( entry ); mRasterBandsListWidget->addItem( entry.ref ); } } } }
QgsRasterTerrainAnalysisDialog::QgsRasterTerrainAnalysisDialog( DisplayMode mode, QWidget * parent, Qt::WindowFlags f ): QDialog( parent, f ) { setupUi( this ); QSettings s; restoreGeometry( s.value( "/RasterTerrainAnalysis/geometry" ).toByteArray() ); if ( mode == HillshadeInput ) { mReliefColorsGroupBox->setVisible( false ); mLightAzimuthAngleSpinBox->setValue( 300 ); mLightVerticalAngleSpinBox->setValue( 40 ); } else if ( mode == ReliefInput ) { mIlluminationGroupBox->setVisible( false ); } else //no parameters { mReliefColorsGroupBox->setVisible( false ); mIlluminationGroupBox->setVisible( false ); } adjustSize(); mZFactorLineEdit->setText( s.value( "/RasterTerrainAnalysis/zfactor", "1.0" ).toString() ); mZFactorLineEdit->setValidator( new QDoubleValidator( this ) ); //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(); //insert available input layers for ( ; layer_it != mapLayers.end(); ++layer_it ) { QgsRasterLayer* rl = qobject_cast<QgsRasterLayer *>( layer_it.value() ); if ( rl ) { mElevationLayerComboBox->addItem( rl->name(), QVariant( rl->id() ) ); } } //insert available drivers that support the create() operation GDALAllRegister(); int nDrivers = GDALGetDriverCount(); for ( int i = 0; i < nDrivers; ++i ) { GDALDriverH driver = GDALGetDriver( i ); if ( driver != NULL ) { char** driverMetadata = GDALGetMetadata( driver, NULL ); if ( CSLFetchBoolean( driverMetadata, GDAL_DCAP_CREATE, false ) ) { mOutputFormatComboBox->addItem( GDALGetDriverLongName( driver ), QVariant( GDALGetDriverShortName( driver ) ) ); //store the driver shortnames and the corresponding extensions //(just in case the user does not give an extension for the output file name) QString driverExtension = GDALGetMetadataItem( driver, GDAL_DMD_EXTENSION, NULL ); mDriverExtensionMap.insert( QString( GDALGetDriverShortName( driver ) ), driverExtension ); } } } //and set last used driver in combo box QString lastUsedDriver = s.value( "/RasterTerrainAnalysis/lastOutputFormat", "GeoTIFF" ).toString(); int lastDriverIndex = mOutputFormatComboBox->findText( lastUsedDriver ); if ( lastDriverIndex != -1 ) { mOutputFormatComboBox->setCurrentIndex( lastDriverIndex ); } mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( false ); }