ほとんどのジオメトリ分析処理では、新しいフィーチャと新しいフィーチャ ソースを作成する必要があります。たとえば、マップ上のポイントの周囲にバッファを描画するには、バッファ ポリゴンを表示する画層が必要であり、この画層にはフィーチャ ソースが必要です。
テンポラリ フィーチャ ソースを作成するには、次の手順を実行します。
1 つのフィーチャ ソースには複数のフィーチャ クラスを含めることができます。ただし、テンポラリ データに使用するフィーチャ ソースには、通常 1 つのフィーチャ クラスを含めます。
フィーチャ スキーマ (MgFeatureSchema オブジェクト)には、スキーマの各フィーチャ クラスのクラス定義(MgClassDefinition オブジェクト)を含めます。
各クラス定義には、フィーチャ クラスの各プロパティのプロパティ定義を含めます。プロパティ定義には、次のタイプがあります。
MgDataPropertyDefinition は、数字や文字列などの単純なプロパティの定義に使用します。MgGeometryPropertyDefinition は、ジオメトリ プロパティの定義に使用します。ほとんどのフィーチャ クラスには、フィーチャの位置を示すジオメトリ プロパティがあります。
たとえば、次のように、バッファ フィーチャを保持するテンポラリ フィーチャ ソースを作成します。フィーチャ ソースには、BufferClass という 1 つのフィーチャ クラスが含まれます。
BufferClass のフィーチャには 2 つのプロパティがあります。ID は自動生成される固有の ID 番号であり、BufferGeometry にはバッファ ポリゴンのジオメトリが格納されます。
フィーチャ サービスをサポートする FDO テクノロジでは、1 つのフィーチャ ソース内で複数の空間参照システムを使用できます。ただし、この機能はデータ プロバイダに依存するため、Infrastructure Map Server 内でフィーチャ ソースの作成に使用される SDF プロバイダには適用されません。。テンポラリ フィーチャ ソースには、既定の SRS を定義し、そのSRS を使用したジオメトリ プロパティを設定する必要があります。SRS の名前はユーザが定義します。
$bufferClass = new MgClassDefinition();
$bufferClass->SetName('BufferClass');
$properties = $bufferClass->GetProperties();
$idProperty = new MgDataPropertyDefinition('ID');
$idProperty->SetDataType(MgPropertyType::Int32);
$idProperty->SetReadOnly(true);
$idProperty->SetNullable(false);
$idProperty->SetAutoGeneration(true);
$properties->Add($idProperty);
$polygonProperty = new
MgGeometricPropertyDefinition('BufferGeometry');
$polygonProperty->
SetGeometryTypes(MgFeatureGeometricType::Surface);
$polygonProperty->SetHasElevation(false);
$polygonProperty->SetHasMeasure(false);
$polygonProperty->SetReadOnly(false);
$polygonProperty->SetSpatialContextAssociation('defaultSrs');
$properties->Add($polygonProperty);
$idProperties = $bufferClass->GetIdentityProperties();
$idProperties->Add($idProperty);
$bufferClass->SetDefaultGeometryPropertyName('BufferGeometry');
$bufferSchema = new MgFeatureSchema('BufferLayerSchema',
'temporary schema to hold a buffer');
$bufferSchema->GetClasses()->Add($bufferClass);
$sdfParams = new MgCreateSdfParams('defaultSrs', $wkt,
$bufferSchema);
$featureService->CreateFeatureSource($bufferFeatureResId,
$sdfParams);
マップにテンポラリ フィーチャ ソースのフィーチャを表示するには、フィーチャ ソースを参照する画層定義を作成します。「マップと画層を修正する」で説明している方法を使用します。