6 votos

Ejemplos de código C++ en Quantum GIS 1.8

Estoy tratando de utilizar los ejemplos de código C ++ de blog.qgis.org, específicamente el Tutorial 4, Añadir Rasters a QGIS Map Canvas.

Soy capaz de ejecutar el ejemplo cargando un GeoTIFF con QGIS 1.4, sin embargo con 1.8 obtengo "Layer is Not Valid". Como nota, el mismo archivo GeoTIFF fue capaz de ser cargado en la aplicación QGIS 1.8 sin problemas, pero no en el código de ejemplo. He probado con varios archivos diferentes, con el mismo resultado. ¿Existen adiciones a la API 1.8 que requieran llamadas adicionales para que esta funcionalidad funcione? El código del problema está abajo. El código de ejemplo completo se puede encontrar en http://blog.qgis.org/node/94

Sistema operativo: Fedora 17 64 bits, 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; 
  }

1voto

gregmac Puntos 12813

La API es la misma incluso en el master y los casos de prueba utilizan casi el mismo código. Si se trata de una aplicación independiente, es probable que tenga que configurar algunas rutas de datos, por lo que QGIS puede encontrar la información de CRS incluido ... Intenta añadir esto en algún lugar al principio:

QgsApplication::init();
QgsApplication::initQgis();

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X