FAQ
グラフィックス エレメント内のポリゴンの面積を算出する

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

概要

[図形描画] ツール バーのグラフィック作成ツールで作成されたグラフィックス エレメント内のポリゴンの面積を求めます。

Image

サンプル コード

下記サンプル コードでは、アクティブなマップ上で選択されているグラフィックス エレメント内のポリゴンの面積を求める方法を示します。

地理座標系は面積の計測に適していない座標系なので、メートルを単位として使用する投影座標系を使用します。
そのため、実行する前に座標系を確認してください。 ([カタログ] ウィンドウ → 対象のデータフレームを右クリック → [プロパティ] → [座標系] タブ)
地理座標系が設定されている場合は、[データフレーム プロパティ] ダイアログの [座標系] タブでを投影座標系を検索し設定してください。

//名前空間の設定
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Framework;
using System.Windows.Forms;
using ESRI.ArcGIS.Geometry;

protected override void OnClick()
{
   IApplication pApp = ArcMap.Application;
   IMxDocument pMxDoc = ArcMap.Document;
   IMap pMap = pMxDoc.FocusMap;
   IActiveView pActiveView = pMxDoc.ActiveView;

   //アクティブ ビュー内の選択されているグラフィックス エレメントを取得
   IGraphicsContainerSelect pGraphicsContainterSelect = pActiveView.GraphicsContainer as IGraphicsContainerSelect;
   if (pGraphicsContainterSelect.ElementSelectionCount == 0)
   {
      MessageBox.Show("グラフィックス エレメントを選択してください。");
      return;
   }
   if (pGraphicsContainterSelect.ElementSelectionCount > 1)
   {
      MessageBox.Show("1つのエレメントのみを選択してください");
      return;
   }
   IElement pElement = pGraphicsContainterSelect.SelectedElement(0);

   //ポリゴン グラフィックス エレメントの場合、面積を算出
   IArea pArea;
   if (pElement.Geometry is IPolygon)
   {
      pArea = pElement.Geometry as IArea;
      pApp.StatusBar.set_Message(0, "エレメントの面積 : " + pArea.Area);
      MessageBox.Show("エレメントの面積 : " + pArea.Area + " 平方メートル");
   }
}
'名前空間の設定
Imports ESRI.ArcGIS.ArcMapUI
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Framework
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Geometry

Protected Overrides Sub OnClick()

   Dim pApp As IApplication = My.ArcMap.Application
   Dim pMxDoc As IMxDocument = My.ArcMap.Document
   Dim pMap As IMap = pMxDoc.FocusMap
   Dim pActiveView As IActiveView = pMxDoc.ActiveView

   'アクティブ ビュー内の選択されているグラフィックス エレメントを取得
   Dim pGraphicsContainer As IGraphicsContainerSelect = pActiveView.GraphicsContainer
   If pGraphicsContainer.ElementSelectionCount = 0 Then
      MessageBox.Show("グラフィックス エレメントを選択してください。")
      Exit Sub
   End If
   If pGraphicsContainer.ElementSelectionCount > 1 Then
      MessageBox.Show("1つのエレメントのみを選択してください")
      Exit Sub
   End If
   Dim pElem As IElement = pGraphicsContainer.SelectedElement(0)

   'ポリゴン グラフィックス エレメントの場合、面積を算出
   Dim pArea As IArea
   If TypeOf pElem.Geometry Is IPolygon Then
      pArea = pElem.Geometry
      pApp.StatusBar.Message(0) = "エレメントの面積 : " & pArea.Area
      MessageBox.Show("エレメントの面積: " & pArea.Area & " 平方メートル")
   End If
   
End Sub

メタデータ

機能

種類

製品