• 検索結果がありません。

ArcObjects実践 ーオブジェクト・モデル・ダイアグラムの読み方とヘルプの活用ー

N/A
N/A
Protected

Academic year: 2021

シェア "ArcObjects実践 ーオブジェクト・モデル・ダイアグラムの読み方とヘルプの活用ー"

Copied!
43
0
0

読み込み中.... (全文を見る)

全文

(1)

ArcObjects実践

ーオブジェクト・モデル・ダイアグラムの 読み方とヘルプの活用ー

(2)

概要

• ArcObjectsとは • COMクラス – インタフェース • オブジェクト・モデル・ダイアグラム(OMD)の読み 方 • ヘルプの読み方 • コーディング例

(3)

ArcObjectsとは

• ArcGIS Desktopの基となるCOM(Component Object Model)コンポーネント群

• COMに準拠した開発環境で利用可能 – VBA、Visual Basic、Visual C++、・・・ • 単体の製品ではない

(4)

COMクラス

• 1つ以上のインタフェースを持つ • インタフェース – プロパティ、メソッドを機能的にグループ化したもの • インタフェースを介してオブジェクトへアクセス GarbageTruck Accelerate Brake Fuel PickUp Dump IGarbage IDrive RaceCar Accelerate Brake Fuel PitStop LapTime IRace IDrive

(5)

クラスとオブジェクト

• クラス – オブジェクトを作成するためのテンプレート – オブジェクトに対して行うメソッドとプロパティの定義情 報のみが含まれる Map プロパティ Name Scale Layers Projection

(6)

6

COMクラスの利用方法

• インタフェースを介してCOMクラスのオブジェクトをインス タンス化 1.変数宣言:Dim <オブジェクト変数> As <インタフェース名> 2.オブジェクトのインスタンス化(Set) 3.メソッドの実行、プロパティの取得 / 設定 • 宣言したインタフェースにあるプロパティとメソッドのみ利 用可能 RaceCar Accelerate Brake Fuel PitStop LapTime IRace IDrive

Set pCar = New RaceCar

pCar.Accelerate

pCar.Fuel = "Full"

pCar.PitStop ‘エラーが発生

(7)

他のインタフェースの利用

• QueryInterface(QI)

– 他のインタフェースのプロパティ、メソッドへアクセス

‘IDriveインタフェースで新規RaceCarを作成

Dim pCar As IDrive

Set pCar = New RaceCar pCar.Accelerate

‘インタフェースの切り替え

Dim pRace As IRace

Set pRace = pCar pRace.PitStop Q I RaceCar Accelerate Brake Fuel PitStop LapTime IRace IDrive

(8)

OMD

• ArcMap、ArcCatalog、ArcSceneの設計図 – 各クラスのインタフェース、プロパティ、メソッド – 各クラス間の関連(リレーションシップ)

– UML(Unified Modeling Language)に準拠 • 格納場所(PDF形式)

– ¥arcgis¥arcexe82¥ArcObjects Developer Kit ¥Object Model Diagramsフォルダ

(9)

OMD

(10)

OMD

• 詳細版(23枚)

Application Framework Map Layer

ArcCatalog Network

ArcMap Output

ArcMap Editor Raster

ArcObjects Controls Spatial Reference

Display Styles

Geocoding TIN

Geodatabase 3D Analyst Extension

Geodatabase(Supplemental) Spatial Analyst Extension

Geometry StreetMap Europe Extension

IMS StreetMap USA Extension

(11)
(12)
(13)

クラスの種類:CoClass

• 新規作成可能

– Newキーワードでオブジェクトを作成

• 他のオブジェクトから取得可能

• 記号:色付きの3Dボックス

Dim pMap As IMap

Set pMap = New Map

Dim pMap As IMap

(14)

クラスの種類:Class

• 新規作成不可能

– Newキーワードで作成できない

• 他のオブジェクトから取得可能

• 記号:色なしの3Dボックス

Dim pRow As IRow

(15)

クラスの種類:Abstract Class

• 新規作成も他のオブジェクトから取得も不可能 • サブクラスに共通のインタフェースを定義 – サブクラスはAbstract Classにある インタフェースを利用可能 • 記号:色付きの2Dボックス

(16)
(17)

リレーションシップの記号

• 継承 • コンポジション • インスタンス化 • 多重度 • 関連 * _____ Bird Abstract Egg Class Chicken CoClass Farm CoClass Nest CoClass *

(18)

ArcMapのオブジェクト

* Map Layer FeatureLayer Application Feature FeatureClass 0 .. 1 MxDocument * • クラスとそれらに相当するオブジェクト

(19)
(20)

インタフェース

• プロパティ,メソッドを機能的にグループ化したもの • 各クラスは必ず1つ以上のインタフェースを実装 • インタフェース名:「I∼」IMxDocument、IMap、ILayer、・・・ • 記号: (   )

(21)

プロパティ、メソッドの記号

• プロパティ • メソッド 取得 (read) 取得 (read) (write)設定 設定 (write) 右がRight(Write)

(22)

プロパティの設定(Write)

• 値渡し(ByVal) – 値あるいはオブジェクトのコピーを設定 • 参照渡し(ByRef) – オブジェクトの参照のみを設定 • 参照先オブジェクトが変更されると同時に影響を受ける pMap.Name = “日本”  ‘Setキーワード不要 ‘Setキーワード必要

(23)

プロパティの取得(Read)

• 値を返す

– Name:String

• オブジェクトの参照(インタフェース)を返す – Document:IDocument

Dim strName As String

strName = Application.Name MsgBox strName

Dim pDoc As IDocument

(24)

利用可能なインタフェース

これらのインタフェースも利用可能。 プロパティ、メソッドは別の場所に記述 されている。 これらのインタフェースも利用可能。 プロパティ、メソッドは別の場所に記述 されている。 このインタフェースは利用可能。 全てのプロパティ、メソッドが記述。 このインタフェースは利用可能。 全てのプロパティ、メソッドが記述。 Abstract Classのインタフェースは利用可能 Abstract Classのインタフェースは利用可能

(25)

復習:COMクラスの利用方法

• インタフェースを介してCOMクラスのオブジェクトをインス タンス化 1.変数宣言:Dim <オブジェクト変数> As <インタフェース名> 2.オブジェクトのインスタンス化(Set) 3.メソッドの実行、プロパティの取得 / 設定 RaceCar Accelerate Brake Fuel PitStop LapTime IRace IDrive

Set pCar = New RaceCar

pCar.Accelerate

pCar.Fuel = "Full"

(26)

復習:他のインタフェースの利用

• QueryInterface(QI)

– 他のインタフェースのプロパティ、メソッドへアクセス

‘IDriveインタフェースで新規RaceCarを作成

Dim pCar As IDrive

Set pCar = New RaceCar pCar.Accelerate

‘インタフェースの切り替え

Dim pRace As IRace

Set pRace = pCar pRace.PitStop pCar.Accelerate ‘**pCarとpRaceは同じオブジェクトを指す** Q I RaceCar Accelerate Brake Fuel PitStop LapTime IRace IDrive

(27)

ArcObjectsでのQI

Dim pDoc As IDocument

Set pDoc = Application.Document MsgBox pDoc.Title

Dim pMxDoc As IMxDocument Set pMxDoc = pDoc 'QI

Dim pLayer As ILayer

(28)

コーディングをどこから始めるか? OMDの開始点 • 事前定義されているオブジェクト変数 – Application • IApplicationインタフェースで宣言したApplicationオブジェクト – ThisDocument • IDocumentインタフェースで宣言したMxDocumentオブジェクト Application MxDocument Application IApplication IMxApplication ThisDocument IDocument IMxDocument

(29)

ArcObjects Developer Help

• スタート > プログラム > ArcGIS から起動 • 内容

– Getting Started

– Object Model Overviews – Object Model Diagrams – Technical Documents – Utilities

– ArcObjects Controls

– ArcObjects Component Help

(30)

ArcObjects Developer Help

• ArcObjects Component Help

F1キー

(31)

ArcObjects Component Help

• クラス

• インタフェース

• プロパティ、メソッド • 定数

(32)

クラス

解説

(33)
(34)

インタフェース

解説

(35)

インタフェース

(36)

プロパティ、メソッド

文法(戻り値) インタフェースへ 解説 Read/Write? 使い方、注意点などの参考情報

(37)

定数

(38)

例:MxDocument > Map > Layer

• レイヤ・タイプを調べる – フィーチャ・レイヤ? – ラスタ・レイヤ? – ?? MxDocument FeatureLayer * Map

Dim pMxDoc As IMxDocument

Set pMxDoc = ThisDocument

Dim pMap As IMap

Set pMap = pMxDoc.FocusMap

Dim pLayer As ILayer

Set pLayer = pMap.Layer(1)

‘pLayerはFeatureLayerか?

If TypeOf pLayer Is IFeatureLayer Then

  MsgBox "これはフィーチャ・レイヤです"

End If

Layer

*

(39)

例:MxDocument > Map > Layer

• MxDocumentオブジェクトの取得 – ThisDocument(事前定義されているオブジェクト変数) • IDocumentインタフェースを指す – Mapを取得するためのプロパティがIMxDocumentイン タフェースに存在 • IDocument ⇒ IMxDocumentにQI

Dim pMxDoc As IMxDocument

(40)

例:MxDocument > Map > Layer

• アクティブなMapオブジェクトの取得 – Map = データ フレーム

– IMxDocumentインタフェースのFocusMapプロパティ

*

Dim pMap As IMap

(41)

例:MxDocument > Map > Layer

• Layerオブジェクトの取得

– IMapインタフェースのLayerプロパティ – 引数としてインデックス番号を指定

Dim pLayer As ILayer

Set pLayer = pMap.Layer(1)

0 0

1 1

(42)

42

例:MxDocument > Map > Layer

• Layerオブジェクトのタイプを調べる – 取得したLayerオブジェクトはどのようなインタフェース を実装しているか? – TypeOfキーワードを利用 • FeatureLayer⇒IFeatureLayer • RasterLayer⇒IRasterLayer • ・・・

If TypeOf pLayer Is IFeatureLayer Then

  MsgBox “これはフィーチャ・レイヤです”   Dim pFLayer As IFeatureLayer

  Set pFLayer = pLayer 'QI

End If

??Layer

Map Layer OMD Layer ILayer

(43)

More ?

• 「VBAによるArcObjectsプログラミング」

参照

関連したドキュメント

11) 青木利晃 , 片山卓也 : オブジェクト指向方法論 のための形式的モデル , 日本ソフトウェア科学会 学会誌 コンピュータソフトウェア

特に、その応用として、 Donaldson不変量とSeiberg-Witten不変量が等しいというWittenの予想を代数

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

の 立病院との連携が必要で、 立病院のケース ー ーに訪問看護の を らせ、利用者の をしてもらえるよう 報活動をする。 の ・看護 ・ケア

(今後の展望 1) 苦情解決の仕組みの活用.

この場合,波浪変形計算モデルと流れ場計算モデルの2つを用いて,図 2-38

施設設備の改善や大会議室の利用方法の改善を実施した。また、障がい者への配慮など研修を通じ て実践適用に努めてきた。 「