• PIE-SDK For C++栅格数据的金字塔创建


    1.功能简介

        金字塔可用于改善性能,可以加快栅格数据的显示速度。随着放大操作的进行,各个更精细的分辨率等级将逐渐得到绘制;但性能将保持不变;目前PIE SDK支持栅格数据的金字塔创建,下面对栅格数据格的金字塔创建的功能进行介绍。

    2.功能实现说明

    2.1 实现思路及原理说明

    第一步

    获取要建立金字塔的栅格数据

    第二步

    利用BuildPyramid算法进行建立金字塔

    2.2 核心接口与方法

    接口/

    方法/属性

    说明

    SysDataSource::RasterDatasetPtr

    GetPyramidLevel()

    获取金字塔级别

    SysDataSource::DatasetFactory

    OpenRasterDataset (…)

    打开栅格数据集

    SysAlgo::AlgoFactory

    CreateAlgo

    创建算法

    ExecuteAlgo

    执行算法

    2.3 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/04数据操作/14栅格数据创建金字塔

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

    视频路径

    百度云盘地址下/PIE视频教程/04数据操作/14栅格数据创建金字塔.avi

    示例代码

    void PIEMainWindow::On_ActionBuildPyramid_Triggered(bool checked)

    {

        QString filter = "Raster Files (*.tif *.tiff *.img *.bmp *.jpg *.ldf *.dat *.1bd *.1b)";

        QString tiffPath = QFileDialog::getOpenFileName(nullptr, "添加数据", "", filter);

        if (tiffPath.isEmpty()) return;

        SysDataSource::RasterDatasetPtr rasterDataSet = SysDataSource::DatasetFactory::Instance()->OpenRasterDataset(tiffPath, SysDataSource::GA_ReadOnly);

        if (rasterDataSet == nullptr) return;

        int count = rasterDataSet->GetPyramidLevel();

        QMessageBox::information(this, "提示", QString("当前金字塔级别:%1").arg(count), QMessageBox::Ok);

        //调用创建金字塔算法

        SysAlgo::ISysAlgo* ptrAlgo= SysAlgo::AlgoFactory::Instance()->CreateAlgo("ImagePyramidBuildAlgo");

        QStringList fileList;

        fileList.append(tiffPath);

        if (ptrAlgo==nullptr)

        {

            return;

        }

        boost::any anyData = fileList;

        ptrAlgo->SetParams(anyData);

        ptrAlgo->SetName("创建金字塔");

        bool flag=SysAlgo::AlgoFactory::Instance()->ExecuteAlgo(ptrAlgo);

        rasterDataSet = nullptr;

        rasterDataSet = SysDataSource::DatasetFactory::Instance()->OpenRasterDataset(tiffPath, SysDataSource::GA_ReadOnly);

        int level= rasterDataSet->GetPyramidLevel();

        QMessageBox::information(this, "提示", QString("当前金字塔级别:%1").arg(level), QMessageBox::Ok);

        SysCarto::LayerPtr layerPtr = SysCarto::LayerFactory::Instance()->CreateDefaultLayer(tiffPath);

        if (layerPtr !=nullptr)

        {

            m_pCurrentControl->GetMap()->AddLayer(layerPtr);

            m_pCurrentControl->GetActiveView()->Refresh();

        }

    }

  • 相关阅读:
    Python——文件操作2
    Python——文件操作1
    Python——集合
    Springboot @Transactional捕获异常事务回滚
    elasticsearch5.2 高亮java代码
    Java static作用
    elasticsearch6.3 自动补齐suggest java代码
    spring boot通过官网创建新项目
    eclipse web工程不能 修改build path
    linux虚拟机添加网卡
  • 原文地址:https://www.cnblogs.com/PIESat/p/12373342.html
Copyright © 2020-2023  润新知