オントロジーの構築Mapオントロジーオブジェクトマップ用の Functions

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

関数ベースのスタイル設定

マップでは関数を使用して、オブジェクトの動的な値を生成できます。これらの値は選択パネルに表示でき、値ベースのスタイル設定を通じて、地図上のオブジェクトの色付けに適用できます。

スタイル設定用の関数を定義する

マップのスタイル設定に使用する関数は、次の条件を満たす必要があります。

  • 引数は1個のみで、配列またはオブジェクトセットである必要があります。
  • キーが入力引数のオブジェクトで、値が文字列または数値のデータ型であるマップを返す必要があります。
    • TypeScript v1 では、FunctionsMap を使用してマップを返します。
    • TypeScript v2 では、ObjectSpecifier をキーとする Record を使用してマップを返します。

例:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import { Function, FunctionsMap, Double } from "@foundry/functions-api"; import { ExampleDataRoute } from "@foundry/ontology-api"; export class DerivedPropertyFunctions { @Function() public async flightCancellationPercentage(routes: ExampleDataRoute[]): Promise<FunctionsMap<ExampleDataRoute, Double>> { const routeMap = new FunctionsMap<ExampleDataRoute, Double>(); const allFlights = await Promise.all(routes.map(route => route.flights.allAsync())); for (let i = 0; i < routes.length; i++) { const route = routes[i]; const flights = allFlights[i]; const cancelledFlights = flights.filter(flight => flight.cancelled); const cancellationPercentage = (cancelledFlights.length / flights.length) * 100; routeMap.set(route, cancellationPercentage); } return routeMap; } }
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import { ObjectSpecifier, Osdk } from "@osdk/client"; import { Double } from "@osdk/functions"; import { ExampleDataRoute } from "@ontology/sdk"; async function flightCancellationPercentage(routes: Osdk.Instance<ExampleDataRoute>[]): Promise<Record<ObjectSpecifier<ExampleDataRoute>, Double>> { const routeMap: Record<ObjectSpecifier<ExampleDataRoute>, Double> = {}; const allFlights = await Promise.all(routes.map(route => route.flights.allAsync())); for (let i = 0; i < routes.length; i++) { const route = routes[i]; const flights = allFlights[i]; const cancelledFlights = flights.filter(flight => flight.cancelled); const cancellationPercentage = (cancelledFlights.length / flights.length) * 100; routeMap[route.$objectSpecifier] = cancellationPercentage; } return routeMap; } export default flightCancellationPercentage;

Map アプリケーションはオブジェクトをバッチ単位で関数に渡し、バッチ内のすべてのオブジェクトについて値が返されることを想定しています。レイヤー内のすべてのオブジェクトが、1回の関数呼び出しで第1引数に渡される_わけではありません_。関数は、オブジェクトがどのようにバッチにまとめられても、一貫した結果を生成する必要があります。つまり、どのオブジェクトについても、同じバッチに含まれるほかのオブジェクトにかかわらず、関数は同じ値を返す必要があります。

関数に追加の引数を渡す

Workshop の Map ウィジェットでスタイル設定に関数を使用する場合、関数は主要なオブジェクト入力に加えて、追加の引数を受け取ることができます。

追加の引数を使用する場合でも、第1引数は常に、値を計算して返す必要があるオブジェクトを指定します。ウィジェットはこの第1引数の値を自動的に渡しますが、表示されるのは追加の引数のみです。ウィジェットの設定では、変数を選択して追加の引数の値を指定できます。

Workshop の Map ウィジェットのスタイル設定用関数に渡す追加の引数。