QgsMapSettings::QgsMapSettings() : mDpi( qt_defaultDpiX() ) // DPI that will be used by default for QImage instances , mSize( QSize( 0, 0 ) ) , mExtent() , mRotation( 0.0 ) , mMagnificationFactor( 1.0 ) , mProjectionsEnabled( false ) , mDestCRS( GEOCRS_ID, QgsCoordinateReferenceSystem::InternalCrsId ) // WGS 84 , mDatumTransformStore( mDestCRS ) , mBackgroundColor( Qt::white ) , mSelectionColor( Qt::yellow ) , mFlags( Antialiasing | UseAdvancedEffects | DrawLabeling | DrawSelection ) , mImageFormat( QImage::Format_ARGB32_Premultiplied ) , mSegmentationTolerance( M_PI_2 / 90 ) , mSegmentationToleranceType( QgsAbstractGeometryV2::MaximumAngle ) , mValid( false ) , mVisibleExtent() , mMapUnitsPerPixel( 1 ) , mScale( 1 ) { updateDerived(); // set default map units - we use WGS 84 thus use degrees setMapUnits( QGis::Degrees ); }
void QgsCoordinateReferenceSystem::setProj4String( QString theProj4String ) { const char *oldlocale = setlocale( LC_NUMERIC, NULL ); setlocale( LC_NUMERIC, "C" ); OSRDestroySpatialReference( mCRS ); mCRS = OSRNewSpatialReference( NULL ); mIsValidFlag = OSRImportFromProj4( mCRS, theProj4String.toLatin1().constData() ) == OGRERR_NONE; setMapUnits(); #if defined(QGISDEBUG) && QGISDEBUG>=3 debugPrint(); #endif setlocale( LC_NUMERIC, oldlocale ); }
QgsMapRenderer::QgsMapRenderer() { mScaleCalculator = new QgsScaleCalculator; mDistArea = new QgsDistanceArea; mDrawing = false; mOverview = false; // set default map units - we use WGS 84 thus use degrees setMapUnits( QGis::Degrees ); mSize = QSize( 0, 0 ); mProjectionsEnabled = false; mDestCRS = new QgsCoordinateReferenceSystem( GEOCRS_ID, QgsCoordinateReferenceSystem::InternalCrsId ); //WGS 84 mOutputUnits = QgsMapRenderer::Millimeters; mLabelingEngine = NULL; }
ImageCanvas::ImageCanvas(DatabaseHandler * db, QWidget * parent) : QgsMapCanvas(parent), parent(parent), db(db) { // sizePolicy().setHeightForWidth(true); QSizePolicy policy; policy.setHorizontalPolicy(QSizePolicy::Expanding); policy.setVerticalPolicy(QSizePolicy::Preferred); policy.setHeightForWidth(true); setSizePolicy(policy); setBaseSize(240,240); enableAntiAliasing(true); setParallelRenderingEnabled( true ); setCanvasColor(QColor(0, 0, 0)); freeze(false); setCachingEnabled(true); setCacheMode(QgsMapCanvas::CacheBackground); setMapUnits(QGis::Meters); provider_registry = QgsProviderRegistry::instance(); layer_registry = QgsMapLayerRegistry::instance(); }
void QgsMapSettings::readXML( QDomNode& theNode ) { // set units QDomNode mapUnitsNode = theNode.namedItem( "units" ); QGis::UnitType units = QgsXmlUtils::readMapUnits( mapUnitsNode.toElement() ); setMapUnits( units ); // set projections flag QDomNode projNode = theNode.namedItem( "projections" ); setCrsTransformEnabled( projNode.toElement().text().toInt() ); // set destination CRS QgsCoordinateReferenceSystem srs; QDomNode srsNode = theNode.namedItem( "destinationsrs" ); srs.readXML( srsNode ); setDestinationCrs( srs ); // set extent QDomNode extentNode = theNode.namedItem( "extent" ); QgsRectangle aoi = QgsXmlUtils::readRectangle( extentNode.toElement() ); setExtent( aoi ); // set rotation QDomNode rotationNode = theNode.namedItem( "rotation" ); QString rotationVal = rotationNode.toElement().text(); if ( ! rotationVal.isEmpty() ) { double rot = rotationVal.toDouble(); setRotation( rot ); } //render map tile QDomElement renderMapTileElem = theNode.firstChildElement( "rendermaptile" ); if ( !renderMapTileElem.isNull() ) { setFlag( QgsMapSettings::RenderMapTile, renderMapTileElem.text() == "1" ? true : false ); } mDatumTransformStore.readXML( theNode ); }
void QgsMapCanvas::readProject( const QDomDocument & doc ) { QDomNodeList nodes = doc.elementsByTagName( "mapcanvas" ); if ( nodes.count() ) { QDomNode node = nodes.item( 0 ); QgsMapSettings tmpSettings; tmpSettings.readXML( node ); setMapUnits( tmpSettings.mapUnits() ); setCrsTransformEnabled( tmpSettings.hasCrsTransformEnabled() ); setDestinationCrs( tmpSettings.destinationCrs() ); setExtent( tmpSettings.extent() ); setRotation( tmpSettings.rotation() ); mSettings.datumTransformStore() = tmpSettings.datumTransformStore(); clearExtentHistory(); // clear the extent history on project load } else { QgsDebugMsg( "Couldn't read mapcanvas information from project" ); } }
QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *parent, Qt::WFlags fl ) : QDialog( parent, fl ) , mMapCanvas( mapCanvas ) { setupUi( this ); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) ); connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) ); connect( projectionSelector, SIGNAL( sridSelected( QString ) ), this, SLOT( setMapUnitsToCurrentProjection() ) ); /////////////////////////////////////////////////////////// // Properties stored in map canvas's QgsMapRenderer // these ones are propagated to QgsProject by a signal QgsMapRenderer* myRenderer = mMapCanvas->mapRenderer(); QGis::UnitType myUnit = myRenderer->mapUnits(); setMapUnits( myUnit ); // we need to initialize it, since the on_cbxProjectionEnabled_stateChanged() // callback triggered by setChecked() might use it. mProjectSrsId = myRenderer->destinationCrs().srsid(); //see if the user wants on the fly projection enabled bool myProjectionEnabled = myRenderer->hasCrsTransformEnabled(); cbxProjectionEnabled->setChecked( myProjectionEnabled ); QgsDebugMsg( "Read project CRSID: " + QString::number( mProjectSrsId ) ); projectionSelector->setSelectedCrsId( mProjectSrsId ); projectionSelector->setEnabled( myProjectionEnabled ); /////////////////////////////////////////////////////////// // Properties stored in QgsProject title( QgsProject::instance()->title() ); // get the manner in which the number of decimal places in the mouse // position display is set (manual or automatic) bool automaticPrecision = QgsProject::instance()->readBoolEntry( "PositionPrecision", "/Automatic" ); if ( automaticPrecision ) { radAutomatic->setChecked( true ); spinBoxDP->setDisabled( true ); labelDP->setDisabled( true ); } else { radManual->setChecked( true ); } cbxAbsolutePath->setCurrentIndex( QgsProject::instance()->readBoolEntry( "Paths", "/Absolute", true ) ? 0 : 1 ); int dp = QgsProject::instance()->readNumEntry( "PositionPrecision", "/DecimalPlaces" ); spinBoxDP->setValue( dp ); QString format = QgsProject::instance()->readEntry( "PositionPrecision", "/DegreeFormat", "D" ); if ( format == "DM" ) radDM->setChecked( true ); else if ( format == "DMS" ) radDMS->setChecked( true ); else radD->setChecked( true ); //get the color selections and set the button color accordingly int myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorRedPart", 255 ); int myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorGreenPart", 255 ); int myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorBluePart", 0 ); int myAlphaInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorAlphaPart", 255 ); QColor myColor = QColor( myRedInt, myGreenInt, myBlueInt, myAlphaInt ); pbnSelectionColor->setColor( myColor ); //get the color for map canvas background and set button color accordingly (default white) myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorRedPart", 255 ); myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorGreenPart", 255 ); myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorBluePart", 255 ); myColor = QColor( myRedInt, myGreenInt, myBlueInt ); pbnCanvasColor->setColor( myColor ); //get project scales QStringList myScales = QgsProject::instance()->readListEntry( "Scales", "/ScalesList" ); if ( !myScales.isEmpty() ) { QStringList::const_iterator scaleIt = myScales.constBegin(); for ( ; scaleIt != myScales.constEnd(); ++scaleIt ) { QListWidgetItem* newItem = new QListWidgetItem( lstScales ); newItem->setText( *scaleIt ); newItem->setFlags( Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable ); lstScales->addItem( newItem ); } } grpProjectScales->setChecked( QgsProject::instance()->readBoolEntry( "Scales", "/useProjectScales" ) ); QgsMapLayer* currentLayer = 0; QStringList noIdentifyLayerIdList = QgsProject::instance()->readListEntry( "Identify", "/disabledLayers" ); const QMap<QString, QgsMapLayer*> &mapLayers = QgsMapLayerRegistry::instance()->mapLayers(); if ( mMapCanvas->currentLayer() ) { mLayerSrsId = mMapCanvas->currentLayer()->crs().srsid(); } else if ( mapLayers.size() > 0 ) { mLayerSrsId = mapLayers.begin().value()->crs().srsid(); } else { mLayerSrsId = mProjectSrsId; } twIdentifyLayers->setColumnCount( 3 ); twIdentifyLayers->horizontalHeader()->setVisible( true ); twIdentifyLayers->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Layer" ) ) ); twIdentifyLayers->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Type" ) ) ); twIdentifyLayers->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Identifiable" ) ) ); twIdentifyLayers->setRowCount( mapLayers.size() ); twIdentifyLayers->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents ); int i = 0; for ( QMap<QString, QgsMapLayer*>::const_iterator it = mapLayers.constBegin(); it != mapLayers.constEnd(); it++, i++ ) { currentLayer = it.value(); QTableWidgetItem *twi = new QTableWidgetItem( QString::number( i ) ); twIdentifyLayers->setVerticalHeaderItem( i, twi ); twi = new QTableWidgetItem( currentLayer->name() ); twi->setData( Qt::UserRole, it.key() ); twi->setFlags( twi->flags() & ~Qt::ItemIsEditable ); twIdentifyLayers->setItem( i, 0, twi ); QString type; if ( currentLayer->type() == QgsMapLayer::VectorLayer ) { type = tr( "Vector" ); } else if ( currentLayer->type() == QgsMapLayer::RasterLayer ) { QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( currentLayer ); if ( rl && rl->providerType() == "wms" ) { type = tr( "WMS" ); } else { type = tr( "Raster" ); } } twi = new QTableWidgetItem( type ); twi->setFlags( twi->flags() & ~Qt::ItemIsEditable ); twIdentifyLayers->setItem( i, 1, twi ); QCheckBox *cb = new QCheckBox(); cb->setChecked( !noIdentifyLayerIdList.contains( currentLayer->id() ) ); twIdentifyLayers->setCellWidget( i, 2, cb ); } grpOWSServiceCapabilities->setChecked( QgsProject::instance()->readBoolEntry( "WMSServiceCapabilities", "/", false ) ); mWMSTitle->setText( QgsProject::instance()->readEntry( "WMSServiceTitle", "/" ) ); mWMSContactOrganization->setText( QgsProject::instance()->readEntry( "WMSContactOrganization", "/", "" ) ); mWMSContactPerson->setText( QgsProject::instance()->readEntry( "WMSContactPerson", "/", "" ) ); mWMSContactMail->setText( QgsProject::instance()->readEntry( "WMSContactMail", "/", "" ) ); mWMSContactPhone->setText( QgsProject::instance()->readEntry( "WMSContactPhone", "/", "" ) ); mWMSAbstract->setPlainText( QgsProject::instance()->readEntry( "WMSServiceAbstract", "/", "" ) ); mWMSOnlineResourceLineEdit->setText( QgsProject::instance()->readEntry( "WMSOnlineResource", "/", "" ) ); mWMSUrlLineEdit->setText( QgsProject::instance()->readEntry( "WMSUrl", "/", "" ) ); bool ok; QStringList values; mWMSExtMinX->setValidator( new QDoubleValidator( mWMSExtMinX ) ); mWMSExtMinY->setValidator( new QDoubleValidator( mWMSExtMinY ) ); mWMSExtMaxX->setValidator( new QDoubleValidator( mWMSExtMaxX ) ); mWMSExtMaxY->setValidator( new QDoubleValidator( mWMSExtMaxY ) ); values = QgsProject::instance()->readListEntry( "WMSExtent", "/", &ok ); grpWMSExt->setChecked( ok && values.size() == 4 ); if ( grpWMSExt->isChecked() ) { mWMSExtMinX->setText( values[0] ); mWMSExtMinY->setText( values[1] ); mWMSExtMaxX->setText( values[2] ); mWMSExtMaxY->setText( values[3] ); } values = QgsProject::instance()->readListEntry( "WMSCrsList", "/", &ok ); grpWMSList->setChecked( ok && values.size() > 0 ); if ( grpWMSList->isChecked() ) { mWMSList->addItems( values ); } else { values = QgsProject::instance()->readListEntry( "WMSEpsgList", "/", &ok ); grpWMSList->setChecked( ok && values.size() > 0 ); if ( grpWMSList->isChecked() ) { QStringList list; foreach ( QString value, values ) { list << QString( "EPSG:%1" ).arg( value ); } mWMSList->addItems( list ); }
QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *parent, Qt::WFlags fl ) : QDialog( parent, fl ), mMapCanvas( mapCanvas ) { setupUi( this ); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) ); connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) ); /////////////////////////////////////////////////////////// // Properties stored in map canvas's QgsMapRenderer // these ones are propagated to QgsProject by a signal QgsMapRenderer* myRender = mMapCanvas->mapRenderer(); QGis::UnitType myUnit = myRender->mapUnits(); setMapUnits( myUnit ); //see if the user wants on the fly projection enabled bool myProjectionEnabled = myRender->hasCrsTransformEnabled(); cbxProjectionEnabled->setChecked( myProjectionEnabled ); long myCRSID = myRender->destinationSrs().srsid(); QgsDebugMsg( "Read project CRSID: " + QString::number( myCRSID ) ); projectionSelector->setSelectedCrsId( myCRSID ); /////////////////////////////////////////////////////////// // Properties stored in QgsProject title( QgsProject::instance()->title() ); // get the manner in which the number of decimal places in the mouse // position display is set (manual or automatic) bool automaticPrecision = QgsProject::instance()->readBoolEntry( "PositionPrecision", "/Automatic" ); if ( automaticPrecision ) { radAutomatic->setChecked( true ); } else { radManual->setChecked( true ); } int dp = QgsProject::instance()->readNumEntry( "PositionPrecision", "/DecimalPlaces" ); spinBoxDP->setValue( dp ); //get the colour selections and set the button colour accordingly int myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorRedPart", 255 ); int myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorGreenPart", 255 ); int myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorBluePart", 0 ); QColor myColour = QColor( myRedInt, myGreenInt, myBlueInt ); pbnSelectionColour->setColor( myColour ); //get the colour for map canvas background and set button colour accordingly (default white) myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorRedPart", 255 ); myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorGreenPart", 255 ); myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorBluePart", 255 ); myColour = QColor( myRedInt, myGreenInt, myBlueInt ); pbnCanvasColor->setColor( myColour ); //read the digitizing settings int topologicalEditing = QgsProject::instance()->readNumEntry( "Digitizing", "/TopologicalEditing", 0 ); if ( topologicalEditing != 0 ) { mEnableTopologicalEditingCheckBox->setCheckState( Qt::Checked ); } else { mEnableTopologicalEditingCheckBox->setCheckState( Qt::Unchecked ); } int avoidPolygonIntersections = QgsProject::instance()->readNumEntry( "Digitizing", "/AvoidPolygonIntersections", 0 ); if ( avoidPolygonIntersections != 0 ) { mAvoidIntersectionsCheckBox->setCheckState( Qt::Checked ); } else { mAvoidIntersectionsCheckBox->setCheckState( Qt::Unchecked ); } bool ok; QStringList layerIdList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingList", &ok ); QStringList enabledList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingEnabledList", &ok ); QStringList toleranceList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceList", &ok ); QStringList snapToList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnapToList", &ok ); QStringList::const_iterator idIter = layerIdList.constBegin(); QStringList::const_iterator enabledIter = enabledList.constBegin(); QStringList::const_iterator tolIter = toleranceList.constBegin(); QStringList::const_iterator snapToIter = snapToList.constBegin(); QgsMapLayer* currentLayer = 0; //create the new layer entries for ( ; idIter != layerIdList.constEnd(); ++idIter, ++enabledIter, ++tolIter, ++snapToIter ) { currentLayer = QgsMapLayerRegistry::instance()->mapLayer( *idIter ); if ( currentLayer ) { LayerEntry newEntry; newEntry.layerName = currentLayer->name(); if (( *enabledIter ) == "enabled" ) { newEntry.checked = true; } else { newEntry.checked = false; } if (( *snapToIter ) == "to_vertex" ) { newEntry.snapTo = 0; } else if (( *snapToIter ) == "to_segment" ) { newEntry.snapTo = 1; } else //to vertex and segment { newEntry.snapTo = 2; } newEntry.tolerance = tolIter->toDouble(); mSnappingLayerSettings.insert( *idIter, newEntry ); } } }
QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *parent, Qt::WFlags fl ) : QDialog( parent, fl ), mMapCanvas( mapCanvas ) { setupUi( this ); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) ); connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) ); connect( projectionSelector, SIGNAL( sridSelected( QString ) ), this, SLOT( setMapUnitsToCurrentProjection() ) ); /////////////////////////////////////////////////////////// // Properties stored in map canvas's QgsMapRenderer // these ones are propagated to QgsProject by a signal QgsMapRenderer* myRender = mMapCanvas->mapRenderer(); QGis::UnitType myUnit = myRender->mapUnits(); setMapUnits( myUnit ); //see if the user wants on the fly projection enabled bool myProjectionEnabled = myRender->hasCrsTransformEnabled(); cbxProjectionEnabled->setChecked( myProjectionEnabled ); btnGrpMapUnits->setEnabled( !myProjectionEnabled ); long myCRSID = myRender->destinationSrs().srsid(); QgsDebugMsg( "Read project CRSID: " + QString::number( myCRSID ) ); projectionSelector->setSelectedCrsId( myCRSID ); /////////////////////////////////////////////////////////// // Properties stored in QgsProject title( QgsProject::instance()->title() ); // get the manner in which the number of decimal places in the mouse // position display is set (manual or automatic) bool automaticPrecision = QgsProject::instance()->readBoolEntry( "PositionPrecision", "/Automatic" ); if ( automaticPrecision ) { radAutomatic->setChecked( true ); spinBoxDP->setDisabled( true ); labelDP->setDisabled( true ); } else { radManual->setChecked( true ); } cbxAbsolutePath->setCurrentIndex( QgsProject::instance()->readBoolEntry( "Paths", "/Absolute", true ) ? 0 : 1 ); int dp = QgsProject::instance()->readNumEntry( "PositionPrecision", "/DecimalPlaces" ); spinBoxDP->setValue( dp ); //get the color selections and set the button color accordingly int myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorRedPart", 255 ); int myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorGreenPart", 255 ); int myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorBluePart", 0 ); int myAlphaInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorAlphaPart", 255 ); QColor myColor = QColor( myRedInt, myGreenInt, myBlueInt, myAlphaInt ); pbnSelectionColor->setColor( myColor ); //get the color for map canvas background and set button color accordingly (default white) myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorRedPart", 255 ); myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorGreenPart", 255 ); myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorBluePart", 255 ); myColor = QColor( myRedInt, myGreenInt, myBlueInt ); pbnCanvasColor->setColor( myColor ); QgsMapLayer* currentLayer = 0; QStringList noIdentifyLayerIdList = QgsProject::instance()->readListEntry( "Identify", "/disabledLayers" ); const QMap<QString, QgsMapLayer*> &mapLayers = QgsMapLayerRegistry::instance()->mapLayers(); twIdentifyLayers->setColumnCount( 3 ); twIdentifyLayers->horizontalHeader()->setVisible( true ); twIdentifyLayers->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Layer" ) ) ); twIdentifyLayers->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Type" ) ) ); twIdentifyLayers->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Identifiable" ) ) ); twIdentifyLayers->setRowCount( mapLayers.size() ); twIdentifyLayers->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents ); int i = 0; for ( QMap<QString, QgsMapLayer*>::const_iterator it = mapLayers.constBegin(); it != mapLayers.constEnd(); it++, i++ ) { currentLayer = it.value(); QTableWidgetItem *twi = new QTableWidgetItem( QString::number( i ) ); twIdentifyLayers->setVerticalHeaderItem( i, twi ); twi = new QTableWidgetItem( currentLayer->name() ); twi->setData( Qt::UserRole, it.key() ); twi->setFlags( twi->flags() & ~Qt::ItemIsEditable ); twIdentifyLayers->setItem( i, 0, twi ); QString type; if ( currentLayer->type() == QgsMapLayer::VectorLayer ) { type = tr( "Vector" ); } else if ( currentLayer->type() == QgsMapLayer::RasterLayer ) { QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( currentLayer ); if ( rl && rl->providerKey() == "wms" ) { type = tr( "WMS" ); } else { type = tr( "Raster" ); } } twi = new QTableWidgetItem( type ); twi->setFlags( twi->flags() & ~Qt::ItemIsEditable ); twIdentifyLayers->setItem( i, 1, twi ); QCheckBox *cb = new QCheckBox(); cb->setChecked( !noIdentifyLayerIdList.contains( currentLayer->getLayerID() ) ); twIdentifyLayers->setCellWidget( i, 2, cb ); } restoreState(); }
bool QgsCoordinateReferenceSystem::readXML( QDomNode & theNode ) { QgsDebugMsg( "Reading Spatial Ref Sys from xml ------------------------!" ); QDomNode srsNode = theNode.namedItem( "spatialrefsys" ); if ( ! srsNode.isNull() ) { bool initialized = false; QDomNode myNode = srsNode.namedItem( "authid" ); if ( !myNode.isNull() ) { initialized = createFromOgcWmsCrs( myNode.toElement().text() ); } if ( !initialized ) { myNode = srsNode.namedItem( "epsg" ); if ( !myNode.isNull() ) initialized = createFromEpsg( myNode.toElement().text().toLong() ); } if ( initialized ) { QgsDebugMsg( "Set from auth id" ); } else { myNode = srsNode.namedItem( "proj4" ); if ( createFromProj4( myNode.toElement().text() ) ) { // createFromProj4() sets everything, including map units QgsDebugMsg( "Setting from proj4 string" ); } else { QgsDebugMsg( "Setting from elements one by one" ); myNode = srsNode.namedItem( "proj4" ); setProj4String( myNode.toElement().text() ); myNode = srsNode.namedItem( "srsid" ); setInternalId( myNode.toElement().text().toLong() ); myNode = srsNode.namedItem( "srid" ); setSrid( myNode.toElement().text().toLong() ); myNode = srsNode.namedItem( "authid" ); setAuthId( myNode.toElement().text() ); myNode = srsNode.namedItem( "description" ); setDescription( myNode.toElement().text() ); myNode = srsNode.namedItem( "projectionacronym" ); setProjectionAcronym( myNode.toElement().text() ); myNode = srsNode.namedItem( "ellipsoidacronym" ); setEllipsoidAcronym( myNode.toElement().text() ); myNode = srsNode.namedItem( "geographicflag" ); if ( myNode.toElement().text().compare( "true" ) ) { setGeographicFlag( true ); } else { setGeographicFlag( false ); } //make sure the map units have been set setMapUnits(); //@TODO this srs needs to be validated!!! mIsValidFlag = true;//shamelessly hard coded for now } } } else { // Return default CRS if none was found in the XML. createFromId( GEOCRS_ID, InternalCrsId ); } return true; }
bool QgsCoordinateReferenceSystem::loadFromDb( QString db, QString expression, QString value ) { QgsDebugMsgLevel( "load CRS from " + db + " where " + expression + " is " + value, 3 ); mIsValidFlag = false; QFileInfo myInfo( db ); if ( !myInfo.exists() ) { QgsDebugMsg( "failed : " + db + " does not exist!" ); return mIsValidFlag; } sqlite3 *myDatabase; const char *myTail; sqlite3_stmt *myPreparedStatement; int myResult; //check the db is available myResult = openDb( db, &myDatabase ); if ( myResult != SQLITE_OK ) { QgsDebugMsg( "failed : " + db + " could not be opened!" ); return mIsValidFlag; } /* srs_id INTEGER PRIMARY KEY, description text NOT NULL, projection_acronym text NOT NULL, ellipsoid_acronym NOT NULL, parameters text NOT NULL, srid integer NOT NULL, auth_name varchar NOT NULL, auth_id integer NOT NULL, is_geo integer NOT NULL); */ QString mySql = "select srs_id,description,projection_acronym,ellipsoid_acronym,parameters,srid,auth_name||':'||auth_id,is_geo from tbl_srs where " + expression + "=" + quotedValue( value ); myResult = sqlite3_prepare( myDatabase, mySql.toUtf8(), mySql.toUtf8().length(), &myPreparedStatement, &myTail ); // XXX Need to free memory from the error msg if one is set if ( myResult == SQLITE_OK && sqlite3_step( myPreparedStatement ) == SQLITE_ROW ) { mSrsId = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 0 ) ).toLong(); mDescription = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 1 ) ); mProjectionAcronym = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 2 ) ); mEllipsoidAcronym = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 3 ) ); QString toProj4 = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 4 ) ); mSRID = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 5 ) ).toLong(); mAuthId = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 6 ) ); int geo = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 7 ) ).toInt(); mGeoFlag = ( geo == 0 ? false : true ); setProj4String( toProj4 ); setMapUnits(); } else { QgsDebugMsg( "failed : " + mySql ); } sqlite3_finalize( myPreparedStatement ); sqlite3_close( myDatabase ); return mIsValidFlag; }