概要
ArcGIS Pro SDK for .NET で属性値を持つデータについて、同じ属性値を持つフィーチャを 1 つの固まりとして別のフィーチャクラスへ出力する方法をご紹介します。
サンプル コード
// *.cs ファイル
protected override async void OnClick()
{
await QueuedTask.Run(async () =>
{
// エクスポート先のフォルダ パス
string outputGdb = @"<エクスポート先のフォルダ パス>";
// マップに追加されているレイヤーの中で、最上位のレイヤーを取得
FeatureLayer featureLayer = MapView.Active.Map.Layers.OfType<FeatureLayer>().FirstOrDefault();
if (featureLayer == null)
return;
// 属性値が格納されているフィールドを特定
const string targetField = "<フィールド名>";
// 属性値の取得
HashSet<string> uniqueValues = new HashSet<string>();
using (var table = featureLayer.GetTable())
{
using (RowCursor cursor = table.Search(/*qf, false*/))
{
while (cursor.MoveNext())
{
using (Row row = cursor.Current)
{
var value = row[targetField]?.ToString();
uniqueValues.Add(value);
}
}
}
}
string inputLayerName = featureLayer.Name;
// 属性値ごとにエクスポート
foreach (string value in uniqueValues)
{
Debug.WriteLine(value);
string whereClause =
$"{targetField} = '{value}'";
string outputFcName =
$"{inputLayerName}_{value}";
var parameters = Geoprocessing.MakeValueArray(
featureLayer.Name,
outputGdb,
outputFcName,
whereClause
);
await Geoprocessing.ExecuteToolAsync(
"conversion.FeatureClassToFeatureClass",
parameters);
}
});
}
このナレッジはお役に立ちましたか?
フィードバックをいただきありがとうございます!