このトピックでは、 XamGeographicMap™ コントロールでシリーズの GeographicContourLineSeries タイプを使用する方法を提供します。
以下の表は、このトピックを理解するための前提条件として必要なトピックを示しています。
このトピックには次のセクションがあります。
XamGeographicMap
コントロールで、 GeographicContourLineSeries は、各ポイントに数値が割り当てられた緯度および経度データの三角測量に基づいて、地理的コンテキストで色が付けられた等高線を描画するビジュアル マップ要素です。
このタイプの地理的シリーズは、温度、気圧、降水量、人口分布、地理的データなど地理的位置によって定義された散布データの描画に役に立ちます。 GeographicContourLineSeries は、塗りつぶしスケールと地理散布エリア シリーズを使用して色がつけられた等高線でデータを表し、カラー スケールを使用して補間された面でデータを表す点を除いて GeographicScatterAreaSeries と多くの点で同じように機能します。
以下は、アメリカの降水量をプロットする GeographicContourLineSeries のある XamGeographicMap コントロールのプレビューです。濃い青の等高線は降水量が少ないことを示し、明るい赤の等高線は降水量が多いことを示します。
XamGeographicMap
コントロールの地理的シリーズの他のタイプと同様、 GeographicContourLineSeries には、データ バインディングのための ItemsSource プロパティがあります。このプロパティは、 IEnumerable インターフェイスを実装するオブジェクトにバインドできます。
さらに、項目ソースの各項目にはデータ列が 3 つあり、2 つは地理的位置 (経度および緯度座標) を保管し、1 つのデータ列は地理的位置に関連した値を保管します。これらのデータ列は、地理的シリーズの LongitudeMemberPath、 LatitudeMemberPath および ValueMemberPath プロパティによって識別されます。
GeographicContourLineSeries は、三角測量が TrianglesSource プロパティに設定されていない場合、 ItemsSource の項目で定義済みのデータ三角測量を自動的に実行します。ただし、三角測量の計算は非常に時間のかかるプロセスであるため、このプロパティのために TriangulationSource を指定すると、ランタイム パフォーマンスがよくなります。特にデータ項目が多数ある場合には顕著です。
GeographicContourLineSeries の FillScale を使用して地理的シリーズの等高線の塗りつぶしブラシを解決します。
提供された ValueBrushScale クラスはユーザーのほとんどのカラリング ニーズを満たすはずですが、カスタムのカラリング ロジックのアプリケーションが ValueBrushScale クラスを継承します。
以下の表は GeographicContourLineSeries の面のカラリングに影響する CustomPaletteColorScale プロパティをリストします。
GeographicContourLineSeries は、 ValueMemberPath プロパティにマップされた項目の最小値と最大値の間を等間隔でちょうど 10 本の等高線を使用して描画します。これより多くの等高線が必要な場合、またはこれより少ない等高線が必要な場合、等高線の数を持つ LinearContourValueResolver を GeographicContourLineSeries の ValueResolver プロパティに割り当てることができます。
以下のコードは、 GeographicContourLineSeries の等高線の数を構成する方法を示します。
XAML の場合:
<ig:GeographicContourLineSeries
<ig:GeographicContourLineSeries.ValueResolver>
<ig:LinearContourValueResolver ValueCount="5" />
</ig:GeographicContourLineSeries.ValueResolver>
</ig:GeographicContourLineSeries>
アプリケーションで等高線の位置を決定するには、カスタムの値リゾルバーを実装します。これは、 ContourValueResolver から継承し GetContourValues メソッドをオーバーライドすることによって実行されます。
以下のコードは、定義済みの位置に等高線を指定するカスタムの等高線値リゾルバーの実装を示します。
C# の場合:
public class CustomValueResolver : Infragistics.Controls.Charts.ContourValueResolver
{
public override IEnumerable<double> GetContourValues(IFastItemColumn<double> valueColumn)
{
return new double[] {1, 2, 4, 5, 8};
}
}
以下のコードは、 GeographicContourLineSeries をアメリカの降水量を表す三角測量データにバインドする方法を示します。
XAML の場合:
<ig:ItfConverter x:Key="itfConverter" Source="precipitation_observed_20110831.itf" />
<ig:XamGeographicMap.Series>
<ig:GeographicContourLineSeries
ValueMemberPath="Value"
LongitudeMemberPath="Point.X"
LatitudeMemberPath="Point.Y"
ItemsSource="{Binding TriangulationSource.Points, Source={StaticResource itfConverter}}"
TrianglesSource="{Binding TriangulationSource.Triangles, Source={StaticResource itfConverter}}"
TriangleVertexMemberPath1="V1"
TriangleVertexMemberPath2="V2"
TriangleVertexMemberPath3="V3">
<ig:GeographicContourLineSeries.FillScale>
<ig:ValueBrushScale MinimumValue="0.05" MaximumValue="1.75">
<ig:ValueBrushScale.Brushes>
<SolidColorBrush Color="DarkRed"/>
<SolidColorBrush Color="Red"/>
<SolidColorBrush Color="Orange"/>
<SolidColorBrush Color="Yellow"/>
</ig:ValueBrushScale.Brushes>
</ig:ValueBrushScale>
</ig:GeographicContourLineSeries.FillScale>
</ig:GeographicContourLineSeries>
</ig:XamGeographicMap.Series>
Visual Basic の場合:
Dim itfConverter = New ItfConverter()
itfConverter.Source = New Uri("precipitation_observed_20110831.itf", UriKind.RelativeOrAbsolute)
Dim fillScale = New ValueBrushScale()
fillScale.MinimumValue = 0.05
fillScale.MinimumValue = 1.75
fillScale.Brushes = New BrushCollection()
fillScale.Brushes.Add(New SolidColorBrush(Colors.DarkRed))
fillScale.Brushes.Add(New SolidColorBrush(Colors.Red))
fillScale.Brushes.Add(New SolidColorBrush(Colors.Orange))
fillScale.Brushes.Add(New SolidColorBrush(Colors.Yellow))
Dim geoSeries = New GeographicContourLineSeries()
geoSeries.FillScale = fillScale
geoSeries.LongitudeMemberPath = "Point.X"
geoSeries.LatitudeMemberPath = "Point.Y"
geoSeries.TriangleVertexMemberPath1 = "V1"
geoSeries.TriangleVertexMemberPath2 = "V2"
geoSeries.TriangleVertexMemberPath3 = "V3"
geoSeries.ItemsSource = itfConverter.TriangulationSource.Points
geoSeries.TrianglesSource = itfConverter.TriangulationSource.Triangles
C# の場合:
var itfConverter = new ItfConverter();
itfConverter.Source = new Uri("precipitation_observed_20110831.itf", UriKind.RelativeOrAbsolute);
var fillScale = new ValueBrushScale();
fillScale.MinimumValue = 0.05;
fillScale.MinimumValue = 1.75;
fillScale.Brushes = new BrushCollection();
fillScale.Brushes.Add(new SolidColorBrush(Colors.DarkRed));
fillScale.Brushes.Add(new SolidColorBrush(Colors.Red));
fillScale.Brushes.Add(new SolidColorBrush(Colors.Orange));
fillScale.Brushes.Add(new SolidColorBrush(Colors.Yellow));
var geoSeries = new GeographicContourLineSeries();
geoSeries.FillScale = fillScale;
geoSeries.LongitudeMemberPath = "Point.X";
geoSeries.LatitudeMemberPath = "Point.Y";
geoSeries.TriangleVertexMemberPath1 = "V1";
geoSeries.TriangleVertexMemberPath2 = "V2";
geoSeries.TriangleVertexMemberPath3 = "V3";
geoSeries.ItemsSource = itfConverter.TriangulationSource.Points;
geoSeries.TrianglesSource = itfConverter.TriangulationSource.Triangles;
このトピックについては、以下のトピックも参照してください。