注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
マップ [レガシー] は開発のレガシー段階にあり、追加の開発は予定されていません。引き続き全面的なサポートを利用できます。新しいモジュールを構築する場合や既存のワークフローを更新する場合は、新しいマップウィジェットの使用を推奨します。
マップウィジェットは、強化された機能とよりモダンなインターフェースを備えているため、ほとんどのユースケースで推奨されます。ただし、新しいマップウィジェットが対応していないユースケースでは、マップ [レガシー] ウィジェットが引き続き役立つ場合があります。どちらを使用するか判断するために、以下の2つのウィジェットの比較を参照してください。
| ウィジェットの要件 | マップ [レガシー] | マップ |
|---|---|---|
| 大規模なオブジェクトセット | 対応に制限あり | 対応 |
| 時間に応じたスタイル | 非対応 | 対応 |
| 複雑なジオメトリに対するパフォーマンスの最適化 | 非対応 | 対応 |
| モバイル対応 | 対応 | 非対応 |
| 非 WebGL 環境 | 対応 | 非対応 |
新しいプロジェクトや既存の設定を更新する際には、マップウィジェットへの移行を検討してください。一般に、パフォーマンスが向上し、継続的な機能更新も利用できます。
マップ [レガシー] ウィジェットは、オブジェクトデータを簡略化された地理空間可視化で表示します。
これらのマップの可視化は、2種類のレイヤーで構成されます。
マップ [レガシー] ウィジェットは、MapboxGL ↗ による地図のレンダリングに対応しています。ユーザーのブラウザーが WebGL に対応していない場合は、Leaflet ↗ で地図をレンダリングします。
マップ [レガシー] ウィジェットは、ベースマップ画像の主要なソースとして Mapbox を使用します。また、Mapbox へのプロキシ接続ができないセキュアなネットワーク向けに、ベースマップ画像のカスタムソースにも対応しています。Web 地図の技術については、Mapbox のドキュメント ↗ を参照してください。
以下の画像は、さまざまな種類のレイヤーを表示するように設定されたマップ [レガシー] ウィジェットの例です。
![マップ [レガシー] ウィジェットで利用可能なレイヤーの種類を示す4つの例。](/docs/resources/foundry/workshop/map_overview.png)
マップ [レガシー] ウィジェットでは、オーバーレイレイヤーが地図のベースレイヤーの上にポイントや図形としてデータを表示します。マップ [レガシー] ウィジェットには、以下の種類のオーバーレイレイヤーがあります。
ポイントレイヤーは、ポイントやマーカーを使用して地図上に個々のオブジェクトを表示します。緯度と経度のペアの形式で保存された Geopoint プロパティを使用してプロットします。ポイントの色、アイコンの種類、サイズは、プロットするオブジェクトのプロパティに基づいてスタイルを設定できます。
設定については、以下のポイントレイヤーを設定するセクションを参照してください。
例:病院の場所をポイントとして表示し、利用可能な病床数に応じて色分けした地図。
クラスターレイヤーは、位置を表す Geopoint プロパティに基づく大規模なオブジェクトセットに最適です。クラスターはポイントに似ていますが、オブジェクトごとに1個のマーカーをプロットするのではなく、プロットするオブジェクトを地理的な近さに基づいてクラスターに集計します。クラスターのサイズや色は、特定の範囲内にあるオブジェクトの数、またはリージョン内のオブジェクト全体にわたるプロパティの合計や平均などの集計関数を表すように設定できます。
設定については、以下のクラスターレイヤーを設定するセクションを参照してください。
例:全国の気象観測所のおおまかな地理的分布を示す地図。
マップ [レガシー] ウィジェットのコロプレスレイヤーは、国や省などのリージョンを表示し、そのリージョンが表すオブジェクトの属性や集計結果に基づいて色分けします。これにより、リージョン間の違いやパターンを可視化でき、これらの値の経時的な変化を確認することもできます。
設定については、以下のコロプレスレイヤーを設定するセクションを参照してください。
Functions で H3 六角形のカスタム集計に対応するため、コロプレスレイヤーを使用して H3 六角形を個別のリージョンとして地図上に表示することもできます。以下のH3 用のコロプレスレイヤーを設定するセクションを参照してください。
例:各州を人口密度に応じて色分けした州の地図。
線分レイヤーは、2点を結ぶ線分として個々のオブジェクトをプロットします。
設定については、以下の線分レイヤーを設定するセクションを参照してください。
例:出発空港と到着空港を、飛行ルートを表す線で結んで表示した地図。
静的レイヤーは、動的に絞り込むことができない、オブジェクトデータ以外のソースから取得した情報を表示します。これらのレイヤーは、同じマップ上のほかのデータレイヤーに背景情報を添えて理解を助ける場合に特に役立ちます。レイヤーのデータは、GeoJSON ↗ 形式またはベクターレイヤーを通じて指定できます。
設定については、以下の静的レイヤーを設定するセクションを参照してください。
例:さまざまな地域で悪天候が発生するリスクを示すレイヤー。
保存済レイヤーは、マップレイヤーエディターで設定し、個別のリソースとして保存したマップレイヤーを表示します。これらのレイヤーは複数のアプリケーション間で共有でき、Foundry 全体で一貫した背景情報を示すためによく使用されます。
以下は、新しく追加された、まだ設定されていないマップ [レガシー] ウィジェットと、その設定パネルの例です。

マップ [レガシー] ウィジェットの基本設定オプションは次のとおりです。
![マップ [レガシー] ウィジェット上のポイントレイヤーの例。](/docs/resources/foundry/workshop/map_configure_point_layers.png)
ポイントレイヤーの主な設定オプションは次のとおりです。
![マップ[レガシー]ウィジェットのクラスターレイヤーの例。](/docs/resources/foundry/workshop/map_configuration_cluster_layers.png)
クラスターレイヤーの主な設定オプションは次のとおりです。

% を設定します。指定する値は d3-format 文字列 ↗である必要があります。![マップ [レガシー] ウィジェットのコロプレスレイヤーの例。](/docs/resources/foundry/workshop/map_configure_choropleth_layers.png)
コロプレスレイヤーの主な設定オプションは次のとおりです。
geoshape 型または string 型のプロパティをサポートします)。マップ [レガシー] ウィジェットに表示するカスタム集計をサポートするように H3 用のコロプレスレイヤーを設定するには、Ontology Manager で H3 Hexagon などのオブジェクトタイプを設定する必要があります。このオブジェクトタイプでは、各オブジェクトが目的の解像度の H3 六角形であり、各六角形とそれに関連する GeoJSON の図形を一意に識別するためのプロパティを持ちます。オブジェクトタイプのプロパティの例を以下に示します。
hex_index:各 H3 六角形の一意の識別子です。値の例:82f25ffffffffffhex_geojson:H3 六角形の GeoJSON ジオメトリです。値の例:Copied!1{"type":"Polygon","coordinates":[[[-114.88722592804382,-74.86647343694071],[-110.43933775312789,-76.04791578897344],[-103.98485051466383,-75.45226049628374],[-103.08914246618076,-73.75952697882984],[-107.50751324842204,-72.74554847287561],[-112.95182804024837,-73.26746640072781],[-114.88722592804382,-74.86647343694071]]]}
次に、マップ [レガシー] ウィジェットの設定オプションを次のように適用できます。
hex_index)を選択します。hex_geojson)を選択します。このページの関数の例は TypeScript v1 で記述されています。マップ [レガシー] ウィジェットについては、同等の TypeScript v2 および Python の実装は文書化されていません。TypeScript v1 と TypeScript v2 の両方で記述された、オブジェクトをキーとする同等の関数については、新しいマップウィジェットに適用される関数ベースのスタイル設定を参照してください。その契約は非集計形式のみを対象としています。このページの集計形式は、場所またはリージョンIDをキーとするマップを返しますが、同等の TypeScript v2 の実装は文書化されていません。2つの TypeScript バージョンを比較するには、TypeScript v1 と TypeScript v2 の比較を参照してください。
次に、非集計値の設定オプションを使用して関数ベースのプロパティを設定し、オブジェクトセットの入力を H3 六角形ごとに集計して、マップ [レガシー] ウィジェットに値を表示できます。たとえば、以下の関数は、入力オブジェクトセット内の H3 六角形ごとに、導出された COVID 検査の陽性率を計算します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44import { Function, Double, FunctionsMap} from "@foundry/functions-api"; import { Objects, ObjectSet, CovidPositive, CovidTest, H3Hexagon} from "@foundry/ontology-api"; export class MyFunctions { @Function() public async calculateCovidPositivityRate(hexes: ObjectSet<H3Hexagon>, positives: ObjectSet<CovidPositive>, tests: ObjectSet<CovidTest>): Promise<FunctionsMap<H3Hexagon, Double>> { const map = new FunctionsMap<H3Hexagon, Double>(); // 解像度2のすべての H3 六角形を集計できるように、最大バケット数を6000に設定します const max_buckets = {maxBuckets: 6000} const positives_bucketed = await positives .groupBy(positive => positive.hex_index.exactValues(max_buckets)) .count(); // バケット化された配列よりも効率的に参照できるように、結果をマップに変換します const positives_hex_map = new Map(); positives_bucketed.buckets.forEach((bucket: any) => { positives_hex_map.set(bucket.key, bucket.value); }); const tests_bucketed = await tests .groupBy(test => test.hex_index.exactValues(max_buckets)) .count(); const tests_hex_map = new Map(); tests_bucketed.buckets.forEach(bucket => { tests_hex_map.set(bucket.key, bucket.value); }); hexes.all().forEach(hex => { const positive_count = positives_hex_map.get(hex.hex_index); const test_count = tests_hex_map.get(hex.hex_index); if ((positive_count !== undefined) && (test_count !== undefined)) { map.set(hex, positive_count/test_count * 100); } }); return map; } }
H3 六角形の解像度2を使用している場合、5,882個の六角形をすべてプロットするには、検索結果のページ数を6に増やす必要があります。
![Map[レガシー]ウィジェットの線分レイヤーの例。](/docs/resources/foundry/workshop/map_configure_line_layers.png)
線分レイヤーの主な設定オプションは次のとおりです。
geoshape 型または string 型のプロパティをサポートします)。![マップ [レガシー] ウィジェットの静的レイヤーの例。](/docs/resources/foundry/workshop/map_configure_static_layers.png)
静的レイヤーの主な設定オプションは次のとおりです。
集計値系列は、単純集計、関数集計、派生集計の3つの方法で設定できます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15@Function() public costToVolume(expenses: ObjectSet<Expense>): FunctionsMap<string, Double> { const map = new FunctionsMap<string, Double>(); const costsPerCountry = expenses .groupBy(expense => expense.countryId.topValues()) .sum(expense => expense.cost); const volumePerCountry = expenses .groupBy(expense => expense.countryId.topValues()) .sum(expense => expense.volume); costsPerCountry.buckets.forEach(bucket => { var volume = volumePerCountry.buckets.find(b => b.key === bucket.key); map.set(bucket.key, bucket.value / volume); }); return map; }
(people under 30/ total population) で表せます。非集計値系列は、固定のプロパティ、関数ベースのプロパティ、時系列プロパティの3つの方法で設定できます。

<object, value> のマップを返す必要があります。たとえば、以下の関数は、入力オブジェクトセット内の国ごとに、派生値である COVID 検査陽性率を計算します。Copied!1 2 3 4 5 6 7 8 9@Function() public countryPositivityRate(countries: ObjectSet<Country>): FunctionsMap<Country, Double> { const positivityRatePerCountry = new FunctionsMap<Country, Double>(); countries.all().forEach(country => { var positivityRate = country.dailyNewCases / country.dailyNewPositiveTests; positivityRatePerCountry.set(country, positivityRate); }); return positivityRatePerCountry; }
以下の例では、Country オブジェクトに時系列プロパティ COVID19 New Cases があり、その国で確認された COVID19 の新規感染者数の日次履歴を保存しています。次に、時系列変換によって、この日次の感染者件数が、感染者数の変化率を記録する時系列に変換されます。最後に、時系列サマライザーが、この変換された時系列の最新の値をマップのデータレイヤーに渡します。つまり、感染者数の値について、最後に確認された変化率を計算します。色の設定パネルでは、この値の国ごとの差が際立つようにマップのスタイルを設定します。時系列変換とサマライザーの詳細については、Workshop の時系列プロパティを参照してください。配色の設定の詳細については、以下の色の設定セクションを参照してください。
![マップ [レガシー] ウィジェットに表示された時系列プロパティの例。](/docs/resources/foundry/workshop/map_time_dependent_property.png)
次のスクリーンショットは、色の設定の設定オプションを示しています。

色の設定の設定オプションは次のとおりです。
色の設定: 色は3つの方法で設定できます。
線の境界線スタイル: 線レイヤーに表示される線のスタイル、またはほかの種類のレイヤーの境界線スタイルの設定です。
値フォーマッター: 値を異なる形式で表現できます。たとえば、値をパーセントで表現するには、値フォーマッターに % を設定します。指定する値は d3-format 文字列 ↗にする必要があります。

選択、表示設定、イベントの設定: の主な設定オプションは次のとおりです。
True に切り替えると、複数のオブジェクトを一度に選択できなくなります。次の選択を行うたびに、前の選択が解除されます。True に切り替えると、マップの初回読み込み時にレイヤーを非表示にできます。レイヤーがグループの一部である場合は、最初のレイヤーに設定された値が適用されます。以下のスクリーンショットは、さまざまな図形を表示する設定済みのマップ[レガシー]ウィジェットと、その設定パネルの例です。
![描画コントロールの設定パネルと設定済みのマップ[レガシー]ウィジェット。](/docs/resources/foundry/workshop/map_drawing_controls.png)
描画コントロールの主な設定オプションは次のとおりです。
#F29D49 で、薄いオレンジ色の16進数コードです。0 から 1 の範囲で設定します。不透明度の最大値は 1 です。#F29D49 で、薄いオレンジ色の16進数コードです。#F29D49 で、薄いオレンジ色の16進数コードです。0 から 1 の範囲で設定します。不透明度の最大値は 1 です。#F29D49 で、薄いオレンジ色の16進数コードです。マップ[レガシー]ウィジェットにはタイムステッパーが組み込まれており、ユーザーは時間を前後に「ステップ」させて、地図上のデータが時間とともにどのように変化するかを確認できます。
タイムステッパーは、ユーザーが選択した時間ウィンドウに対応するオブジェクトセットフィルターを、設定したオブジェクトセットフィルター変数に公開することで動作します。このフィルター変数を使用して、地図上に表示される1つ以上のレイヤーの元となるオブジェクトセットを絞り込み、その時間ウィンドウに関連するオブジェクトのみを返すことができます。
タイムステッパーを活用するには、使用する時系列オブジェクトに、一定の時間単位ごとの測定値を持つオブジェクトを含めることを推奨します。各オブジェクトには、絞り込みに使用できる日付またはタイムスタンプのプロパティが必要です。これにより、特定の時間ウィンドウで絞り込んで個々のオブジェクトを読み込む(または、そのウィンドウ内のオブジェクトを集計する)ことで、地図上に表示するデータを取得できます。
以下は、タイムステッパーを設定したマップの例です。

以下は、タイムステッパーのコントロールの設定オプションの例です。

タイムステッパーの主な設定オプションは次のとおりです。
以下のスクリーンショットは、ビューポートフィルターの設定例です。

ビューポートフィルターは、オブジェクトセットフィルター変数を出力します。これにより、ウィジェット内で表示されている地図の境界に基づいて、地図上に表示するオブジェクトセットを絞り込めます。たとえば、空港の位置を表示した地図でユーザーが米国にズームした場合、ビューポートフィルターは、米国の空港のオブジェクトのみを含むようにオブジェクトセットを絞り込めるフィルター変数を生成します。
コロプレスレイヤーでビューポートによる絞り込みを使用するには、地図上に表示するオブジェクトタイプに Geopoint プロパティが必要です。このプロパティには、リージョンの重心を使用できます。