zoukankan      html  css  js  c++  java
  • 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();

        }

    }

  • 相关阅读:
    一些业内有名的网站收集
    WCF重载
    FCKEditor fckconfig.js配置,添加字体和大小 附:中文字体乱码问题解决
    查询第几条到第几条的数据的SQL语句
    SPOJ 9939 Eliminate the Conflict
    UVA 10534 Wavio Sequence
    HDU 3474 Necklace
    POJ 2823 Sliding Window
    UVA 437 The Tower of Babylon
    UVA 825 Walking on the Safe Side
  • 原文地址:https://www.cnblogs.com/PIESat/p/12373342.html
Copyright © 2011-2022 走看看