バージョン

地理高密度散布系列の使用

トピックの概要

目的

このトピックは、 XamGeographicMap™ コントロールの GeographicHighDensityScatterSeries 系列タイプの追加と構成についての情報を提供します。

前提条件

このトピックをより理解するために、以下のトピックを参照することをお勧めします。

トピック 目的

このトピックでは、 XamGeographicMap コントロールをアプリケーション ページに追加する方法を示します。

このトピックは、 XamGeographicMap コントロールの地理的シリーズのサポートされているタイプについての情報を提供します。

地理高密度散布系列

概要

XamGeographicMap コントロールの GeographicHighDensityScatterSeries 系列を使用すると、数百から数百万のデータ ポイントから成る散布図データを最短の読み込み時間でバインドして表示できます。相当数のデータ ポイントがあるため、シリーズではフルサイズのマーカーに対して散布データを小さな点として表示し、領域にはデータポイントの集合を表す高い色密度を使用した大半のデータを表示します。

プレビュー

以下の画像は、XamGeographicMap コントロールの GeographicHighDensityScatterSeries 系列のプレビューです。マップはオーストラリアの人口密度を表す数千のデータ ポイントにバインドされます。大量のデータ ポイントを含むマップのプロット領域は凝縮された赤色のピクセルによって表します。少量のデータ ポイントを含む領域は青色のピクセルによって表します。

GeographicMap High Density Scatter Series 1.png

データ要件

XamGeographicMap コントロールの散布シリーズの他のタイプと同様、 GeographicHighDensityScatterSeries には、データ バインディングのための ItemsSource プロパティがあります。このプロパティは、 IEnumerable インターフェイスを実装するオブジェクトにバインドできます。

また、項目ソースの各項目は、地理経度および緯度を表す 2 つのデータ列があります。 LongitudeMemberPath および LatitudeMemberPath プロパティはこのデータ列をマップします。

データ バインディング

以下の表に、データ バインドに使用される GeographicHighDensityScatterSeries シリーズのプロパティをまとめています。

プロパティ名 プロパティ タイプ 説明

IEnumerable

項目ソースを取得または設定します。

String

経度値が割り当てられた項目上の位置を決定するには ItemsSource プロパティを使用します。

String

緯度値が割り当てられた項目上の位置を決定するには ItemsSource プロパティを使用します。

熱色スケール

熱色スケールは、シリーズ内のカラー パターンを決定するオプションの機能です。以下の表は、カラー スケールを決定するために使用するプロパティをまとめたものです。

プロパティ名 プロパティ タイプ 説明

Double

カラー スケールの最小端を表す double 値を定義します。

Double

カラー スケールの最大端を表す double 値を定義します。

Color

カラー スケールの下端で使用するポイント密度カラーを定義します。

Color

カラー スケールの上端で使用するポイント密度カラーを定義します。

表の次にあるスクリーンショットは、 GeographicHighDensityScatterSeriesHeatMinimumColorHeatMaximumColor のプロパティを持つ XamGeographicMap が以下の設定後どのように見えるかを示しています。

プロパティ

Green

Orange

GeographicMap High Density Scatter Series 2.png

以下のコードはこの例を実装します。

XAML の場合:

<ig:XamGeographicMap.Series>
   <ig:GeographicHighDensityScatterSeries
      LatitudeMemberPath="Latitude"
      LongitudeMemberPath="Longitude"
      HeatMaximumColor="Orange"
      HeatMinimumColor="Green">
   </ig:HighDensityScatterSeries>
</ig:XamGeographicMap.Series>

C# の場合:

series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.HeatMaximumColor = Color.FromArgb(255, 46, 139, 87);
series.HeatMinimumColor = Color.FromArgb(255, 238, 154, 0);

Visual Basic の場合:

series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.HeatMaximumColor = Color.FromArgb(255, 46, 139, 87)
series.HeatMinimumColor = Color.FromArgb(255, 238, 154, 0)

パフォーマンス

概要

XamGeographicMap の GeographicHighDensityScatterSeries シリーズはパフォーマンスが最適化されています。数万のデータ ポイントにバインドする場合、 XamGeographicMap のパフォーマンスを最適化するためのプロパティおよびメソッドがあります。

解像度

GeographicHighDensityScatterSeries シリーズの Resolution プロパティは、シリーズがどの程度積極的に表示データを統合するかを決定します。値が大きい場合、より積極的にデータが統合され、系列のパフォーマンスが向上します。より低い値を使用している場合、表示解像度が強化され、それに応じてパフォーマンスも下がります。

表の下にある画像は、 GeographicHighDensityScatterSeriesResolution プロパティを以下のように設定した XamGeographicMap を表示します。

プロパティ

10

GeographicMap High Density Scatter Series 3.png

以下はこの例における実装コードです。

XAML の場合:

<ig:XamGeographicMap.Series>
   <ig:GeographicHighDensityScatterSeries
      LatitudeMemberPath="Latitude"
      LongitudeMemberPath="Longitude"
      Resolution="10">
   </ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>

C# の場合:

series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.Resolution = 10;

Visual Basic の場合:

series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.Resolution = 10

プログレッシブ ローディング

XamGeographicMap コントロールは、 XamDataChart をロードする間中の UI の応答性を保つようデータをばらばらに読み込む GeographicHighDensityScatterSeries シリーズを段階的に描画します。デフォルトで、 ProgressiveLoad プロパティは True に設定されています。 GeographicHighDensityScatterSeries シリーズは、XamGeographicMap のレンダリング中にローディング状態を表示できる 2 通りの方法を提供します。

  • ローディング状態を表示できる ProgressiveLoadStatusChanged イベントをリッスンします。

  • ProgressiveStatus プロパティは、値が 0 から 100 まで (完全なロードは 100) のプログレッシブ ロード シリーズの状態を表します。このプロパティは、プログレスバーなどのローディング状態を示すコントロールにバインドします。

この表の下のスクリーン ショットは、 GeographicHighDensityScatterSeries シリーズの構成された ProgressiveLoadStatusChanged イベントでどのように XamGeographicMap を描画するかを示します。

プロパティ

True

OnSeriesProgressiveLoadStatusChanged

以下は、先行例を実装するために使用するコードです。

XAML の場合:

<ig:XamGeographicMap.Series>
   <ig:GeographicHighDensityScatterSeries
      LatitudeMemberPath="Latitude"
      LongitudeMemberPath="Longitude"
      ProgressiveLoad="True"
      ProgressiveLoadStatusChanged="OnSeriesProgressiveLoadStatusChanged">
   </ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>

C# の場合:

private void OnSeriesProgressiveLoadStatusChanged(object sender,
                                   ProgressiveLoadStatusEventArgs e)
{
   this.SeriesLoadingProgressBar.Value = e.CurrentStatus;
   if (e.CurrentStatus == 100)
   {
      SeriesLoadingPanel.Visibility = Visibility.Collapsed;
   }
}

Visual Basic の場合:

Private Sub OnSeriesProgressiveLoadStatusChanged(ByVal sender As Object, ByVal e As ProgressiveLoadStatusEventArgs)
Me.SeriesLoadingProgressBar.Value = e.CurrentStatus
If (e.CurrentStatus = 100)
      SeriesLoadingPanel.Visibility = Visibility.Collapsed
End If
End Sub

マウス オーバーのサポート

GeographicHighDensityScatterSeries シリーズの MouseOverEnabled プロパティは、MouseOver イベントが発生するかどうかを指定します。デフォルト値は False です。この系列のマウス オーバー サポートは、メモリとパフォーマンスに大きく影響する場合があります。この値を False に設定することの主なデメリットは、ツールチップを描画できないことです。

この表の下のスクリーンショットは、 GeographicHighDensityScatterSeries シリーズの MouseOverEnabled プロパティを以下のように設定したカスタム ツールチップのある XamGeographicMap の描画を示しています。

プロパティ

True

GeographicMap High Density Scatter Series 5.png

以下は、先行例を実装するために使用するコードです。

XAML の場合:

<ig:XamGeographicMap.Series>
   <ig:GeographicHighDensityScatterSeries
      LatitudeMemberPath="Latitude"
      LongitudeMemberPath="Longitude"
      MouseOverEnabled="True">
      <ig:GeographicHighDensityScatterSeries.ToolTip>
         <Border Padding="4”>
            <TextBlock Text="Binding Path=Item.Name" />
         </Border>
      </ig:GeographicHighDensityScatterSeries.ToolTip>
   </ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>

C# の場合:

series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.MouseOverEnabled = "True";

Visual Basic の場合:

series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.MouseOverEnabled = "True"

ブルート フォース モード

GeographicHighDensityScatterSeries シリーズの UseBruteForce プロパティによって、シリーズの描画方法が決まります。True の場合、内部データ構造を構築する代わりに、毎度すべてのデータ ポイントを描画します。初期ロード時間が早く、メモリ使用率が低いですが、データのナビゲーションは遅くなります。

この表の下のスクリーンショットは、 GeographicHighDensityScatterSeries シリーズの UseBruteForce プロパティを以下のように設定した XamGeographicMap の描画を示しています。

プロパティ

True

以下は、先行例を実装するために使用するコードです。

XAML の場合:

<ig:XamGeographicMap.Series>
   <ig:GeographicHighDensityScatterSeries
       LatitudeMemberPath="Latitude"
       LongitudeMemberPath="Longitude"
       ProgressiveLoadStatusChanged="OnSeriesProgressiveLoadStatusChanged"
       UseBruteForce="True">
   </ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>

C# の場合:

series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.UseBruteForce = "True";
series.ProgressiveLoadStatusChanged += series_ProgressiveLoadStatusChanged;

Visual Basic の場合:

series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.HeatMaximumColor = "True"
series.ProgressiveLoadStatusChanged += series_ProgressiveLoadStatusChanged

ポイント サイズ

GeographicHighDensityScatterSeries シリーズの PointExtent プロパティは、高密度の散布シリーズのポイントを描画するために使用する最小ポイントサイズを上げます。ポイントサイズは、シリーズのパフォーマンスに直接影響します。 PointExtent プロパティの値が大きいとパフォーマンスは下がります。

この表の下のスクリーンショットは、 GeographicHighDensityScatterSeries シリーズの構成された PointExtent プロパティでどのように XamGeographicMap を描画するかを示します。

プロパティ

3

GeographicMap High Density Scatter Series 7.png

以下は、先行例を実装するために使用するコードです。

XAML の場合:

<ig:XamGeographicMap.Series>
   <ig:GeographicHighDensityScatterSeries
      LatitudeMemberPath="Latitude"
      LongitudeMemberPath="Longitude"
      PointExtent="3">
   </ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>

C# の場合:

series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.PointExtent = 3;

Visual Basic の場合:

series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.PointExtent = 3

関連コンテンツ

このトピックの追加情報については、以下のトピックも合わせてご参照ください。

トピック 目的

このトピックでは、 XamGeographicMap コントロールをアプリケーション ページに追加する方法を示します。

このトピックは、 XamGeographicMap コントロールの地理的シリーズのサポートされているタイプについての情報を提供します。