フィーチャを挿入、削除、更新する

フィーチャ ソースのデータを変更するには、MgFeatureCommandCollection オブジェクトを作成します。これには、FDO データ ソース内のフィーチャを挿入、削除、または更新するコマンドを含めることができます。コマンドは順番に実行されます。トランザクション処理をサポートする FDO プロバイダの場合は、コマンドを 1 つのトランザクションとして扱うことができます。

フィーチャ コマンドは次のいずれかになります。

コマンドを実行するには、MgFeatureService::UpdateFeatures() を呼び出します。フィーチャ コマンドのフィーチャ クラス名とプロパティ名は、フィーチャ ソースのクラス名とプロパティ名に一致している必要があります。

たとえば、識別プロパティ ID を持つフィーチャ クラス内のすべてのフィーチャを削除するには、次の操作を実行します。

$commands = new MgFeatureCommandCollection();
$deleteCommand = new MgDeleteFeatures($className, "ID >= 0");
$commands->Add($deleteCommand);
 
$featureService->UpdateFeatures($featureSource, $commands, false);

フィーチャを挿入するには、新しいフィーチャのプロパティが格納された MgPropertyCollection オブジェクトを作成します。MgInsertFeatures オブジェクトを作成し、これを MgFeatureCommandCollection オブジェクトに追加します。

1 つのジオメトリ プロパティを持つ新しいフィーチャを追加するには、次のように実行します。

$commands = new MgFeatureCommandCollection();
$properties = new MgPropertyCollection();
$agfByteStream = $agfReaderWriter->Write($geometry);
$geometryProperty = new MgGeometryProperty($propertyName, 
   $agfByteStream);
$properties->Add($geometryProperty);
 
$insertCommand = new MgInsertFeatures($className, $properties);
$commands->Add($insertCommand);
 
$featureService->UpdateFeatures($featureSource, $commands, false);

既存のフィーチャを更新するには、プロパティの新しい値が格納された MgPropertyCollection オブジェクトと、1 つまたは複数の正しいフィーチャを選択するフィルタ式を作成します。フィルタ式の詳細については「フィーチャ データのクエリーを実行する」を参照してください。