int main(int argc, char ** argv) { // Start the Application QgsApplication app(argc, argv, true); QString myPluginsDir = "/home/timlinux/apps/lib/qgis"; QString myLayerPath = "/home/timlinux/gisdata/brazil/BR_Cidades/"; QString myLayerBaseName = "Brasil_Cap"; QString myProviderName = "ogr"; // Instantiate Provider Registry QgsProviderRegistry::instance(myPluginsDir); // create a maplayer instance QgsVectorLayer * mypLayer = new QgsVectorLayer(myLayerPath, myLayerBaseName, myProviderName); QgsSingleSymbolRenderer *mypRenderer = new QgsSingleSymbolRenderer(mypLayer->geometryType()); QList <QgsMapCanvasLayer> myLayerSet; mypLayer->setRenderer(mypRenderer); if (mypLayer->isValid()) { qDebug("Layer is valid"); } else { qDebug("Layer is NOT valid"); } // Add the Vector Layer to the Layer Registry QgsMapLayerRegistry::instance()->addMapLayer(mypLayer, TRUE); // Add the Layer to the Layer Set myLayerSet.append(QgsMapCanvasLayer(mypLayer, TRUE)); // Create the Map Canvas QgsMapCanvas * mypMapCanvas = new QgsMapCanvas(0, 0); mypMapCanvas->setExtent(mypLayer->extent()); mypMapCanvas->enableAntiAliasing(true); mypMapCanvas->setCanvasColor(QColor(255, 255, 255)); mypMapCanvas->freeze(false); // Set the Map Canvas Layer Set mypMapCanvas->setLayerSet(myLayerSet); mypMapCanvas->setVisible(true); mypMapCanvas->refresh(); // Start the Application Event Loop return app.exec(); }
void QgsMapCanvasDockWidget::syncViewCenter( QgsMapCanvas *sourceCanvas ) { // avoid infinite recursion mBlockExtentSync = true; QgsMapCanvas *destCanvas = sourceCanvas == mMapCanvas ? mMainCanvas : mMapCanvas; // reproject extent QgsCoordinateTransform ct( sourceCanvas->mapSettings().destinationCrs(), destCanvas->mapSettings().destinationCrs(), QgsProject::instance() ); try { destCanvas->setCenter( ct.transform( sourceCanvas->center() ) ); } catch ( QgsCsException & ) { destCanvas->setCenter( sourceCanvas->center() ); } destCanvas->refresh(); mBlockExtentSync = false; }
void checkDock::errorListClicked( const QModelIndex& index ) { int row = index.row(); QgsRectangle r = mErrorList[row]->boundingBox(); r.scale( 1.5 ); QgsMapCanvas* canvas = qgsInterface->mapCanvas(); canvas->setExtent( r ); canvas->refresh(); mFixBox->clear(); mFixBox->addItems( mErrorList[row]->fixNames() ); mFixBox->setCurrentIndex( mFixBox->findText( tr( "Select automatic fix" ) ) ); QgsFeature f; QgsGeometry* g; FeatureLayer fl = mErrorList[row]->featurePairs().first(); if ( !fl.layer ) { QgsMessageLog::logMessage( tr( "Invalid first layer" ), tr( "Topology plugin" ) ); return; } //fl1.layer->getFeatures( QgsFeatureRequest().setFilterFid( fl1.feature.id() ) ).nextFeature( f1 ); fl.layer->getFeatures( QgsFeatureRequest().setFilterFid( fl.feature.id() ) ).nextFeature( f ); g = f.geometry(); if ( !g ) { QgsMessageLog::logMessage( tr( "Invalid first geometry" ), tr( "Topology plugin" ) ); QMessageBox::information( this, tr( "Topology test" ), tr( "Feature not found in the layer.\nThe layer has probably changed.\nRun topology check again." ) ); return; } clearVertexMarkers(); // use vertex marker when highlighting a point // and rubber band otherwise if ( g->type() == QGis::Point ) { mVMFeature1 = new QgsVertexMarker( canvas ); mVMFeature1->setIconType( QgsVertexMarker::ICON_X ); mVMFeature1->setPenWidth( 5 ); mVMFeature1->setIconSize( 5 ); mVMFeature1->setColor( "blue" ); mVMFeature1->setCenter( g->asPoint() ); } else mRBFeature1->setToGeometry( g, fl.layer ); fl = mErrorList[row]->featurePairs()[1]; if ( !fl.layer ) { QgsMessageLog::logMessage( tr( "Invalid second layer" ), tr( "Topology plugin" ) ); return; } fl.layer->getFeatures( QgsFeatureRequest().setFilterFid( fl.feature.id() ) ).nextFeature( f ); g = f.geometry(); if ( !g ) { QgsMessageLog::logMessage( tr( "Invalid second geometry" ), tr( "Topology plugin" ) ); QMessageBox::information( this, tr( "Topology test" ), tr( "Feature not found in the layer.\nThe layer has probably changed.\nRun topology check again." ) ); return; } if ( g->type() == QGis::Point ) { mVMFeature2 = new QgsVertexMarker( canvas ); mVMFeature2->setIconType( QgsVertexMarker::ICON_BOX ); mVMFeature2->setPenWidth( 5 ); mVMFeature2->setIconSize( 5 ); mVMFeature2->setColor( "green" ); mVMFeature2->setCenter( g->asPoint() ); } else mRBFeature2->setToGeometry( g, fl.layer ); if ( !mErrorList[row]->conflict() ) { QgsMessageLog::logMessage( tr( "Invalid conflict" ), tr( "Topology plugin" ) ); return; } if ( mErrorList[row]->conflict()->type() == QGis::Point ) { mVMConflict = new QgsVertexMarker( canvas ); mVMConflict->setIconType( QgsVertexMarker::ICON_BOX ); mVMConflict->setPenWidth( 5 ); mVMConflict->setIconSize( 5 ); mVMConflict->setColor( "red" ); mVMConflict->setCenter( mErrorList[row]->conflict()->asPoint() ); } else mRBConflict->setToGeometry( mErrorList[row]->conflict(), fl.layer ); }
// Slot called when the menu item is triggered void SqlAnywhere::addSqlAnywhereLayer() { QgsMapCanvas *mMapCanvas = mQGisIface->mapCanvas(); if ( mMapCanvas && mMapCanvas->isDrawing() ) { return; } // show the data source dialog SaSourceSelect *dbs = new SaSourceSelect( mQGisIface->mainWindow() ); mMapCanvas->freeze(); if ( dbs->exec() ) { // add files to the map canvas QStringList tables = dbs->selectedTables(); SaDebugMsg( "Selected tables:\n" + tables.join( "\n" ) + "\n\n" ); QApplication::setOverrideCursor( Qt::WaitCursor ); // retrieve database connection string QString connectionInfo = dbs->connectionInfo(); // create a new map layer for each selected table and register it for ( QStringList::Iterator it = tables.begin() ; it != tables.end() ; it++ ) { // create the layer SaDebugMsg( "Creating layer " + *it ); SaLayer *layer = new SaLayer( connectionInfo + " " + *it, *it ); if ( layer->isValid() ) { // set initial layer name to table name SaDebugMsg( "Beautifying layer name. old: " + layer->name() ); QgsDataSourceURI layerUri = QgsDataSourceURI( *it ); QString newName = QString( "%1 (%2)" ) .arg( layerUri.table() ) .arg( layerUri.geometryColumn() ); if ( QgsMapLayerRegistry::instance()->mapLayers().contains( newName ) ) { newName = QString( "%1.%2 (%3)" ) .arg( layerUri.schema() ) .arg( layerUri.table() ) .arg( layerUri.geometryColumn() ); if ( QgsMapLayerRegistry::instance()->mapLayers().contains( newName ) ) { // give up and revert to original name newName = layer->name(); } } layer->setLayerName( newName ); SaDebugMsg( "Beautifying layer name. new: " + layer->name() ); // register this layer with the central layers registry QgsMapLayerRegistry::instance()->addMapLayer(( QgsVectorLayer* )layer ); } else { SaDebugMsg(( *it ) + " is an invalid layer - not loaded" ); QMessageBox::critical( mQGisIface->mainWindow(), tr( "Invalid Layer" ), tr( "%1 is an invalid layer and cannot be loaded." ).arg( *it ) ); delete layer; } } QApplication::restoreOverrideCursor(); (( QMainWindow * ) mQGisIface->mainWindow() )->statusBar()->showMessage( mMapCanvas->extent().toString( 2 ) ); } delete dbs; // update UI qApp->processEvents(); // draw the map mMapCanvas->freeze( false ); mMapCanvas->refresh(); } // SqlAnywhere::addSqlAnywhereLayer()