Ошибка Qgis “растровый слой не может создать экземпляр поставщика данных 'gdal'” в qt C++
Когда я пытаюсь добавить растровый слой, я получаю эту ошибку от QgsRasterLayer::IsValid()!!! Может ли кто-нибудь сказать мне, почему это происходит!? Я новичок в qgis, поэтому не могли бы вы объяснить подробнее. первый func "onAddLayer" используется для нажатия кнопки Add, а второй func определяется для добавления растрового слоя.
Примечание: Я использую QGis 2.18 и gdal 2.3.2 в fedora.
Что я уже пробовал:
void MainWindow::onAddLayer() { const auto path = QFileDialog::getOpenFileName(this, "SELECT GIS MAP LAYER", QDir( _lastMapDir).path()); if (path.isEmpty() || path.isNull()) { return; } addRasterLayer(path); _lastMapDir = QDir(path).canonicalPath(); } void MainWindow::addRasterLayer(const QFileInfo &info) { LOG(QString("adding map layer %1").arg(info.filePath())); QString errMsg; // if (!QgsRasterLayer::isValidRasterFileName(info.filePath(), errMsg)) // { // LOG(errMsg); // return; // } QScopedPointer<QgsRasterLayer> layer(new QgsRasterLayer(info.filePath(), info.baseName())); if (!layer->isValid()) { LOG(QString("failed to add layer (%1)").arg(layer->error().message( QgsErrorMessage::Format::Text))); return; } save("last_layer_path", info.filePath(), "gis"); _rasterProvider = layer->dataProvider(); _mapCanvas->freeze(true); auto item = QgsMapCanvasLayer(layer.take(), true); _mapCanvas->setExtent(item.layer()->extent()); QgsMapLayerRegistry::instance()->addMapLayer(item.layer(), true); _mapCanvas->setLayerSet(QList<QgsMapCanvasLayer>() << item); _mapCanvas->freeze(false); _mapCanvas->setVisible(true); _mapCanvas->refresh(); statusBar()->showMessage(QString("%1 LOADED").arg(info.fileName()), 3000); }