Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am trying to utilize the C++ code examples from blog.qgis.org, specifically Tutorial 4, Adding Rasters to QGIS Map Canvas.

I am successfully able to run the example loading a GeoTIFF with QGIS 1.4, however with 1.8 I get "Layer is Not Valid". As a note, the same GeoTIFF file was able to be loaded in the QGIS 1.8 application just fine, but not in the example code. I've tried with several different files, with the same result. Is there additions to the 1.8 API which require additional calls to get this functionality to work? Problem code below. The full example code can be found at http://blog.qgis.org/node/94

Operating System: Fedora 17 64-bit, QGIS 1.8.0

void MainWindow::addLayer()
{
  QString myFileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                         QCoreApplication::applicationDirPath () + "/data",
                         tr("GeoTiff (*.tif)"));
  QFileInfo myRasterFileInfo(myFileName);
  QgsRasterLayer * mypLayer = new QgsRasterLayer(myRasterFileInfo.filePath(), 
  myRasterFileInfo.completeBaseName());
  if (mypLayer->isValid())
  {
     qDebug("Layer is valid");
  }
  else
  {
     qDebug("Layer is NOT valid");
     return; 
  }
share|improve this question

1 Answer 1

The API is the same even in master and the test cases use almost the same code. If it is a standalone app, you likely need to set up some data paths, so QGIS can find the bundled CRS info ... Try adding this somewhere at the start:

QgsApplication::init();
QgsApplication::initQgis();
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.