概要
ArcGIS Pro SDK for .NET を使用して、特定のレイヤーを取得する方法をご紹介いたします。
サンプル コード 1
グループ レイヤー内にある特定のレイヤーを取得します。
- アクティブなマップから Map.Layers プロパティを使用して、すべてのレイヤー (Layer) を取得
- is 演算子を使用し、すべてのレイヤーからグループ レイヤーを取得
- GroupLayer.Layers プロパティを使用して、取得したグループ レイヤー内にあるすべてのレイヤーを取得
- グループ レイヤー内にあるすべてのレイヤーから、特定のレイヤーを取得
protected override void OnClick()
{
//アクティブなマップを取得
Map map = MapView.Active.Map;
//すべてのレイヤーを取得 ※<>は半角に置き換え実行してください。
ReadOnlyObservableCollection<Layer> checkLayers = map.Layers;
for (int i = 0; i < checkLayers.Count; i++)
{
Layer checkLayer = checkLayers[i];
//グループ レイヤーの場合
if (checkLayer is GroupLayer)
{
GroupLayer groupLayer = (GroupLayer)checkLayer;
//グループ レイヤーにあるすべてのレイヤーを取得 ※<>は半角に置き換え実行してください。
ReadOnlyObservableCollection<layer> findLayer = groupLayer.Layers;
for (int j = 0; j < findLayer.Count; j++)
{
Layer layer = findLayer[j];
//特定のレイヤーを取得
if (layer.Name == "神奈川")
{
//処理
}
}
}
}
}
サンプル コード 2
レイヤーのプロパティを指定して取得します。
//名称指定はいずれかの方法で
var featureLayer = MapView.Active.Map.FindLayers("Japan").FirstOrDefault() as FeatureLayer;
var jpLayer = MapView.Active.Map.Layers.FirstOrDefault(lyr => lyr.Name == "Japan") as FeatureLayer;
//フィーチャレイヤー指定の場合
var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault();
サンプル コード 3
コンテンツ ウィンドウで選択したレイヤーを取得します。
protected override void OnClick()
{
string txtLayers = "";
var mapView = MapView.Active;
//選択しているレイヤーを取得
var selectedLayers= mapView.GetSelectedLayers();
//選択レイヤーの名前を取得し、改行区切りで定義
for (int i = 0; i < selectedLayers.Count; i++)
{
txtLayers += selectedLayers[i].Name + "rn";
}
//メッセージボックスでレイヤー名を表示
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(txtLayers);
}
このナレッジはお役に立ちましたか?
フィードバックをいただきありがとうございます!