jeudi 25 décembre 2014

c++ qgisvector layer is not Valid



#include <QtCore>
#include <QApplication>
#include <QWidget>
#include <qgsapplication.h>
#include <QMainWindow>
#include <qgsmapcanvas.h>
#include <QVBoxLayout>
#include <qgsdatasourceuri.h>
#include <qgsmaplayerregistry.h>
#include <qgsvectorlayer.h>
#include <qgsvectordataprovider.h>


class PostGisViewer: public QMainWindow
{
public:
PostGisViewer(): QMainWindow()
{
QWidget *w = new QWidget();
this->setCentralWidget(w);
QgsMapCanvas *canvas = new QgsMapCanvas(0,0);
canvas->useImageToRender(false);
QVBoxLayout *layout = new QVBoxLayout(w);
layout->addWidget(canvas);
QgsDataSourceURI uri;
QgsVectorLayer layer("data/test.shp", "test", "ogr");
QgsMapLayerRegistry::instance()->addMapLayer(&layer);
QgsMapCanvasLayer cl(&layer);
//QgsRectangle r(340000, 220000, 360000, 240000);
//canvas->setExtent(r);
qDebug() << layer.allFeatureIds();
qDebug() << layer.isValid();
qDebug() << layer.crs().isValid();
qDebug() << layer.crs().authid();
if (layer.isValid())
{
qDebug("Layer is valid");
}
else
{
qDebug("Layer is NOT valid");
};
qDebug() << "GeometryType: " << layer.geometryType();
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QgsApplication::setPrefixPath("/usr/bin", true);
QgsApplication::initQgis();
PostGisViewer wnd;
wnd.show();
int retval = a.exec();
QgsApplication::exitQgis();
return retval;
}


I do not know, what do I do? Help me!





Aucun commentaire:

Enregistrer un commentaire