ピラミッドPIE-SDKについてはC ++は、ラスタデータを作成します

1。特長

    ピラミッドは、ラスタデータの表示をスピードアップすることができ、性能を向上させるために使用することができます。ズームイン操作として、より細かい解像度レベルの各々が徐々に描画される; しかし、性能は同じままで、現在PIE SDK ピラミッド作成ラスタデータをサポートする、ラスタデータフォーマット関数以下ピラミッド作成導入。

2。関数の実装の注意事項

2.1理論的根拠やアイデアの実現

第一歩

ビルドピラミッドへのラスタデータを取得します

第二のステップ

使用BuildPyramidの構築ピラミッドのアルゴリズム

2.2コアインターフェースおよびメソッド

インタフェース/ クラス

メソッド/ プロパティ

説明

SysDataSource :: RasterDatasetPtr

GetPyramidLevel()

ピラミッドレベルを取得します。

SysDataSource :: DatasetFactory

OpenRasterDataset(...)

ラスタデータセットを開きます。

SysAlgo :: AlgoFactory

CreateAlgo

アルゴリズムを作成します。

ExecuteAlgo

アルゴリズムの実行

2.3サンプルコード

プロジェクトパス

ディスクアドレスBaiduのクラウド/ PIE の典型的なプログラム/ 04 データ操作/ 14 ラスタデータ作成ピラミッド

データパス

ディスクアドレスBaiduのクラウド/ PIE の典型的なデータ/ ラスタデータ/04.World/World.tif

ビデオパス

Baiduのクラウドディスクアドレスの下に/ PIEのビデオチュートリアル/ 04 データ操作/ 14 ラスタデータピラミッドを作成する.AVI

サンプルコード

PIEMainWindow :: On_ActionBuildPyramid_Triggered ブール値をチェックします

{

    QStringのフィルタを= "ラスターファイル(*。TIF * .TIFF * .imgの* .BMP * .JPG *。LDF * .DAT * .1bd * .1b)"

    QStringのtiffPath = QFileDialog :: GetOpenFileName関数nullptr " 添加数据" "" フィルタ

    もしtiffPath のisEmpty ())のリターン;

    SysDataSource :: RasterDatasetPtr rasterDataSet = SysDataSource :: DatasetFactory :: インスタンス() - > OpenRasterDataset tiffPath SysDataSource :: GA_ReadOnly )。

    もしrasterDataSet == nullptr リターン

    int型のカウント= rasterDataSet - > GetPyramidLevel ();

    QMessageBox :: 情報この"プロンプト" QStringの"現在のピラミッドレベル:%1" のArg COUNT )、QMessageBox :: オクラホマ)。

    //コールはピラミッドアルゴリズムを作成し、

    SysAlgo :: ISysAlgo * ptrAlgo = SysAlgo :: AlgoFactory :: インスタンス() - > CreateAlgo "ImagePyramidBuildAlgo" );

    QStringList のfileList ;

    fileList 追記tiffPath )。

    もしptrAlgo == nullptr

    {

        リターン;

    }

    ブースト:: 任意のANYDATA = のfileList

    ptrAlgo - > SetParamsメソッドANYDATA );

    ptrAlgo - > SetNameメソッド"ピラミッドの作成" )。

    ブールフラグ= SysAlgo :: AlgoFactory :: インスタンス() - > 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();

    }

}

おすすめ

転載: www.cnblogs.com/PIESat/p/12373342.html