从0开始的GIS开发记录(1)

发布于 2024-09-12  3125 次阅读


新建个QT工程,使用git做版本控制

做GIS系统,总离不开GDAL库,先导入库

之前装QGIS二次开发环境用OSGEO4W自动下载过GDAL库,只要导入一下就行了

在pro文件里配置

#导入GDAL库
INCLUDEPATH += D:/coding/OSGeo4w/apps/gdal-dev/include
LIBS += -LD:/coding/OSGeo4w/apps/gdal-dev/lib -lgdal_i

之后在编译输出目录复制进相应的dll文件

在main函数里测试一下

#include "mainwindow.h"
#include "gdal_priv.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
    GDALAllRegister();  // 注册所有GDAL驱动
    // 尝试打开一个数据集,确保这里的路径指向一个有效的地理数据文件
    const char *pszFilename = "E:\\宁夏\\测试图像\\test159.tif";  // 更改为你的文件路径

    GDALDatasetUniquePtr poDataset = GDALDatasetUniquePtr(GDALDataset::FromHandle(GDALOpen(pszFilename, GA_ReadOnly)));

    if (poDataset == nullptr) {
        qDebug() << "GDAL could not open the file: " << pszFilename;
        return 1;  // 文件打开失败
    } else {
        qDebug() << "File opened successfully!";
        qDebug() << poDataset->GetRasterCount();

        // 打印地理变换信息
        double adfGeoTransform[6];
        if (poDataset->GetGeoTransform(adfGeoTransform) == CE_None) {
            qDebug() << "Origin = (" << adfGeoTransform[0] << ", " << adfGeoTransform[3] << ")";
            qDebug() << "Pixel Size = (" << adfGeoTransform[1] << ", " << adfGeoTransform[5] << ")";
        }
    }

    MainWindow w;
    w.show();
    return a.exec();
}

结果报错说函数未定义,琢磨了一下应该是编译配置的问题,把构建套件从mingw改成MSVC就没问题了

接下来开始实现最简单的矢量读取与显示

先设计ui,自定义一个MapView类继承自QGraphicsView,然后再界面中拉一个Graphics Viw然后提升至MapView类

后续做完没记录,放个github链接吧

GISlxz/drawShpwithQGraphicsView (github.com)

主要是QGraphicsView的性能太差了,每次改变视口都要重算一遍坐标,很麻烦。

届ける言葉を今は育ててる
最后更新于 2024-09-12