FAQ
IBasicGeoprocessorを使用してフィーチャレイヤをクリップする方法

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

【概要】

IBasicGeoprocessorは5つのメソッド(Dissolve, Merge, Clip, Intersect, Union)を持っています。
これらのメソッドはVBAやVBから使用します。

Clipはオーバレイしたポリゴンレイヤの空間範囲でポイント、ライン、ポリゴンレイヤのフィーチャをくり抜きます。
入力フィーチャクラスの属性は出力フィーチャクラスに引き継がれます。


【手順】

Clipの構文は以下の通りです。


Set variable = object.Clip (InputTable, useSelectedInput, ClipTable, _
                   useSelectedClip, Tolerance, outputName) 



variable -IFeatureClassインタフェースを実装するオブジェクトへの参照
object - BasicGeoprocessorオブジェクトを評価するオブジェクト式
InputTable - 入力用Tableオブジェクト
useSelectedInput - 入力レイヤの選択状態を表すBoolean式。
InputTableで選択されているフィーチャのみクリップするかどうかを指定します。
Falseに設定するとInputTableで選択されているサブセットが無視されます。
ClipTable - クリップ用Tableオブジェクト
useSelectedClip - クリップレイヤの選択状態を表すBoolean式。
処理中にClipTableで選択されているフィーチャのみ使用するかどうかを指定します。
Falseに設定するとClipTableで選択されているサブセットが無視されます。
Tolerance - クリップ許容値を表すDouble型の値。
データフレームの範囲の1/10,000であるデフォルト許容値を使用するには0.0を渡してください。
outputName - 出力FeatureClassNameオブジェクト

VBAのサンプル:


Public Sub Clip()

' 入力レイヤおよびフィーチャクラスを取得します。 Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pLayer As ILayer Set pLayer = pMxDoc.FocusMap.Layer(0) Dim pInputFeatLayer As IFeatureLayer Set pInputFeatLayer = pLayer ' LayerからITableインタフェースを使用します。 Dim pInputTable As ITable Set pInputTable = player ' 入力フィーチャクラスを取得します。 ' シェープタイプのような入力フィーチャクラスのプロパティは出力の際に必要となります。 Dim pInputFeatClass As IFeatureClass Set pInputFeatClass = pInputFeatLayer.FeatureClass ' クリップ/オーバーレイレイヤを取得します。 ' LayerからITableインタフェースを使用します。 Set pLayer = pMxDoc.FocusMap.Layer(1) Dim pClipTable As ITable Set pClipTable = pLayer ' エラーチェック If pInputTable Is Nothing Then MsgBox "テーブルが見つかりません" Exit Sub End If If pClipTable Is Nothing Then MsgBox "テーブルが見つかりません" Exit Sub End If ' 出力用FeatureClassNameと、入力フィーチャクラスのプロパティから
' 得られるシェープタイプを定義します。 Dim pFeatClassName As IFeatureClassName Set pFeatClassName = New FeatureClassName With pFeatClassName .FeatureType = esriFTSimple .ShapeFieldName = "Shape" .ShapeType = pInputFeatClass.ShapeType End With ' 出力先フォルダ及びシェープファイル名を設定します。 Dim pNewWSName As IWorkspaceName Set pNewWSName = New WorkspaceName pNewWSName.WorkspaceFactoryProgID = "esriCore.ShapeFileWorkspaceFactory.1" pNewWSName.PathName = "C:\temp" Dim pDatasetName As IDatasetName Set pDatasetName = pFeatClassName pDatasetName.Name = "Clip_result" Set pDatasetName.WorkspaceName = pNewWSName ' 許容値を設定します。0.0を設定するとデフォルト許容値が使用されます。 ' デフォルト許容値はデータフレームの空間範囲の1/10,000です。 Dim tol As Double tol = 0# ' クリップを実行します。 Dim pBGP As IBasicGeoprocessor Set pBGP = New BasicGeoprocessor Dim pOutputFeatClass As IFeatureClass Set pOutputFeatClass = pBGP.clip(pInputTable, False, pClipTable, False, _
  tol, pFeatClassName) ' 出力シェープファイルをArcMapへ追加します。 Dim pOutputFeatLayer As IFeatureLayer Set pOutputFeatLayer = New FeatureLayer Set pOutputFeatLayer.FeatureClass = pOutputFeatClass pOutputFeatLayer.Name = pOutputFeatClass.AliasName pMxDoc.FocusMap.AddLayer pOutputFeatLayer End Sub

メタデータ

種類

製品