新建个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的性能太差了,每次改变视口都要重算一遍坐标,很麻烦。











Comments 2 条评论
博主 罗星洲
快马加编
博主 匿名
编长墨迹