FAQ
フィーチャの範囲にズームする方法

ナレッジ番号:5268 | 登録日:2023/07/26 | 更新日:2023/12/28

概要

このサンプル コードは、特定のフィーチャの範囲にマップを拡大する方法を示しています。ここではオブジェクト ID を指定してフィーチャを特定しています。

サンプル コード

特定のオブジェクト ID をもつフィーチャの範囲にマップを拡大

ArcMap の一番上位のレイヤーのオブジェクト ID = 12 のフィーチャに拡大するサンプルです。フィーチャの範囲よりもやや大きめの範囲を指定した方が見やすいため、実際にはフィーチャの範囲の 1.2 倍の範囲に拡大しています。

//ArcMap の一番上位のレイヤーを取得
IFeatureLayer pFeatureLayer = ArcMap.Document.FocusMap.get_Layer(0) as IFeatureLayer;
//フィーチャクラスと OID を指定
ZoomToLayerByIndexNumber(pFeatureLayer.FeatureClass, 12);

public void ZoomToLayerByIndexNumber(IFeatureClass FClass, System.Int32 anOID)
{
        //フィーチャがない場合か OID が 0 以下の場合、下記の処理を実行しない
        if (FClass == null || anOID < 0)
        {
        return;
        }

        //アクティブ ビューを取得
        IActiveView pActiveView = ArcMap.Document.ActiveView;
        
        //指定した OID のフィーチャを取得
        IFeature pFeatrue = pFClass.GetFeature(anOID);

        //フィーチャのジオメトリの複製を取得
        IGeomtery pGeomtery = pFeature.ShapeCopy;

        //ジオメトリの範囲を取得        
        IEnvelope pEnvelope = pGeomtery.Envelope;

        //X 軸と Y 軸を 1.2 倍の範囲に拡大
        pEnvelope.Expand (1.2,1.2,true);

        //アクティブ ビューの範囲に拡大したジオメトリの範囲を設定
        pActiveView.Extent = pEnvelope;

        //再描画
        pActiveView.Refresh();
}
Dim pFeatureLayer As IFeatureLayer
'ArcMap の一番上位のレイヤーを取得
pFeatureLayer = My.ArcMap.Document.FocusMap.Layer(0)
'フィーチャクラスと OID を指定
ZoomToFeatureByOIDNumber(12, pFeatureLayer.FeatureClass)

Public Sub ZoomToFeatureByOIDNumber(ByVal anOID As System.Int32, ByVal FClass As IFeatureClass)
        
        'フィーチャがない場合か OID が 0 以下の場合、下記の処理を実行しない
        If FClass Is Nothing OrElse anOID < 1 Then
                Return
        End If
        
        'アクティブ ビューを取得
        Dim pActiveView As IActiveView = My.ArcMap.Document.ActiveView

        '指定した OID のフィーチャを取得
        Dim pFeature As IFeature = pFClass.GetFeature(anOID)

        'フィーチャのジオメトリの複製を取得
        Dim pGeometry As IGeomtery = pFeature.ShapeCopy

        'ジオメトリの範囲を取得
        Dim pEnvelope As IEnvelope = pGeometry.Envelope

        'X 軸と Y 軸を 1.2 倍の範囲に拡大
        pEnvelope.Expand(1.2, 1.2, True)

        'アクティブ ビューの範囲に拡大したジオメトリの範囲を設定
        pActiveView.Extent = pEnvelope

        '再描画
        pActiveView.Refresh()

End Sub

Image

メタデータ

種類

製品