FAQ
ラスタ データセットのピラミッドを構築する方法

ナレッジ番号:5562 | 登録日:2023/07/27 | 更新日:2024/11/21

概要

ラスター データセットに対し、ピラミッドの構築するには、IRasterPyramid::Create メソッドを使用します。今回は、あるフォルダに格納されているラスタ データセットに対し、ピラミッドを構築する方法を示します。

ピラミッドを使用することで、データセット全体がより低い解像度を使用してすばやく描画されます。データを拡大するにつれ、レイヤーはより高い解像度で描画されます。小さい領域を連続的に描画するため、パフォーマンスが維持されます。

サンプル コード

1.ラスター データセットが格納されているフォルダへのアクセス

string Path = @"C:\myData";
System.Type t = System.Type.GetTypeFromProgID("esriDataSourcesRaster.RasterWorkspaceFactory");
IWorkspaceFactory pWorkspaceFactory = Activator.CreateInstance(t) as IWorkspaceFactory;
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(Path, 0);
Dim path As String = "C:\myData"
Dim t As Type = Type.GetTypeFromProgID("esriDataSourcesRaster.RasterWorkspaceFactory")
Dim pWorkspaceFactory As IWorkspaceFactory = CType(Activator.CreateInstance(t), IWorkspaceFactory)
Dim pWorkspace As IWorkspace = pWorkspaceFactory.OpenFromFile(path, 0)

2.ラスター データセットへのアクセスとピラミッドの構築

ワークスペース内にあるすべてのラスタ データセットをループし、ピラミッドがない場合は構築します。

IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTRasterDataset);
IRasterDataset pRasterDataset = pEnumDataset.Next() as IRasterDataset;
while (!(pRasterDataset == null))
{
    IRasterPyramid pRasterPyramid = pRasterDataset as IRasterPyramid;
    //ピラミッドの有無は IRasterPyramid::Present プロパティで確認します。
    if (pRasterPyramid.Present == false)
    {
        pRasterPyramid.Create();
        MessageBox.Show(pRasterDataset.CompleteName + "のピラミッド・レイヤーを構築しました。");
    }
    else
    {
        MessageBox.Show(pRasterDataset.CompleteName + "のピラミッド・レイヤーをすでに存在します。");
    }
    pRasterDataset = pEnumDataset.Next() as IRasterDataset;
}
Dim pEnumDataset As IEnumDataset = pWorkspace.Datasets(esriDatasetType.esriDTRasterDataset)
Dim pRasterDataset As IRasterDataset = pEnumDataset.Next()
Do Until pRasterDataset Is Nothing
    Dim pRasterrPyramid As IRasterPyramid = pRasterDataset
    If pRasterrPyramid.Present = False Then
        pRasterrPyramid.Create()
        MessageBox.Show(pRasterDataset.CompleteName & "のピラミッド・レイヤーを構築しました")
    Else
        MessageBox.Show(pRasterDataset.CompleteName & "のピラミッド・レイヤーはすでに存在します")
    End If
    pRasterDataset = pEnumDataset.Next()
Loop

備考

ラスター ピラミッド

IRasterPyramid Interface

メタデータ

機能

種類

製品