バージョン

XamShapeChart を ShapeFile データにバインド

このトピックは、コード例を示して、XamShapeChart コントロールをシェープファイル データにバインドする方法を説明します。

前提条件

トピック 目的

XamShapeChart を使用した作業の開始

このトピックでは、データを XamShapeChart コントロールにバインドする方法を説明します。

概要

XamShapeChart コントロールはシェープ ファイルをバインドして表示できます。ShapefileConverter を ItemsSource として使用し、XamShapeChart の ChartType プロパティを Polygon に設定します。XamShapeChart コントロールでシェープ データを可視化する場合に便利です。たとえば、飛行機の本体または飛行機の席チャートをマップする場合、以下のコード例のように XamShapeChart を使用できます。

XamShapeChart を複数のシェープ ファイルを同時にバインドできます。複数のシェープをレイヤーでスタックする場合に便利です。List<ShapefileConverter> を XamShapeChart の ItemsSource として使用します。

注: このために .shp および .dbf ファイルが必要です。ShapefileConverter 要素の DatabaseSource および ShapefileSource プロパティへのパスを設定する必要があります。.shp および .dbf ファイルの BuildAction を Resource に設定することも必要です。

XamShapeChart をシェープ ファイルにバインド

以下のコード例は単一のシェープ ファイルを XamShapeChart にバインドする方法を紹介します。

XAML の場合:

<Grid x:Name="layoutRoot">

    <ig:XamShapeChart x:Name="shapeChart" ChartType="Polygon">
        <ig:XamShapeChart.ItemsSource>
            <ig:ShapefileConverter DatabaseSource="/ShapeFiles/AirplaneBody.dbf"
                                   ShapefileSource="/ShapeFiles/AirplaneBody.shp"/>
        </ig:XamShapeChart.ItemsSource>
    </ig:XamShapeChart>

</Grid>

C# の場合:

var shapeChart = new XamShapeChart();
shapeChart.ChartType = ShapeChartType.Polygon;

var shape = new ShapefileConverter();
shape.DatabaseSource = new Uri("/ShapeFiles/AirplaneBody.dbf", UriKind.RelativeOrAbsolute);
shape.ShapefileSource = new Uri("/ShapeFiles/AirplaneBody.shp", UriKind.RelativeOrAbsolute);

shapeChart.ItemsSource = shape;

layoutRoot.Children.Add(shapeChart);

VB の場合:

Dim shapeChart = New XamShapeChart()
shapeChart.ChartType = ShapeChartType.Polygon

Dim shape = New ShapefileConverter()
shape.DatabaseSource = New Uri("/ShapeFiles/AirplaneBody.dbf", UriKind.RelativeOrAbsolute)
shape.ShapefileSource = New Uri("/ShapeFiles/AirplaneBody.shp", UriKind.RelativeOrAbsolute)

shapeChart.ItemsSource = shape

layoutRoot.Children.Add(shapeChart)

上記のコードは以下のような XamShapeChart になります。

shapechart_shapefile_single.png

XamShapeChart を複数のシェープ ファイルにバインド

以下のコード例は複数のシェープ ファイルを XamShapeChart にバインドする方法を紹介します。以下のコレクションを使用します。

C# の場合:

public class ShapeFileCollection : List<ShapefileConverter>
{
}

XAML の場合:

<Grid x:Name="layoutRoot">
    <ig:XamShapeChart x:Name="shapeChart" ChartType="Polygon">
        <ig:XamShapeChart.ItemsSource>
            <local:ShapeFileCollection>
                <ig:ShapefileConverter DatabaseSource="ShapeFiles/AirplaneBody.dbf" ShapefileSource="ShapeFiles/AirplaneBody.shp" />
                <ig:ShapefileConverter DatabaseSource="ShapeFiles/AirplaneSeats.dbf" ShapefileSource="ShapeFiles/AirplaneSeats.shp"/>
            </local:ShapeFileCollection>
        </ig:XamShapeChart.ItemsSource>
    </ig:XamShapeChart>
</Grid>

C# の場合:

var shapeChart = new XamShapeChart();
shapeChart.ChartType = ShapeChartType.Polygon;

var data = new ShapeFileCollection();

var shape1 = new ShapefileConverter();
shape1.DatabaseSource = new Uri("/ShapeFiles/AirplaneBody.dbf", UriKind.RelativeOrAbsolute);
shape1.ShapefileSource = new Uri("/ShapeFiles/AirplaneBody.shp", UriKind.RelativeOrAbsolute);

var shape2 = new ShapefileConverter();
shape2.DatabaseSource = new Uri("/ShapeFiles/AirplaneSeats.dbf", UriKind.RelativeOrAbsolute);
shape2.ShapefileSource = new Uri("/ShapeFiles/AirplaneSeats.shp", UriKind.RelativeOrAbsolute);

data.Add(shape1);
data.Add(shape2);

shapeChart.ItemsSource = data;

layoutRoot.Children.Add(shapeChart);

VB の場合:

Dim shapeChart = New XamShapeChart()
shapeChart.ChartType = ShapeChartType.Polygon

Dim data = New ShapeFileCollection()

Dim shape1 = New ShapefileConverter()
shape1.DatabaseSource = New Uri("/ShapeFiles/AirplaneBody.dbf", UriKind.RelativeOrAbsolute)
shape1.ShapefileSource = New Uri("/ShapeFiles/AirplaneBody.shp", UriKind.RelativeOrAbsolute)

Dim shape2 = New ShapefileConverter()
shape2.DatabaseSource = New Uri("/ShapeFiles/AirplaneSeats.dbf", UriKind.RelativeOrAbsolute)
shape2.ShapefileSource = New Uri("/ShapeFiles/AirplaneSeats.shp", UriKind.RelativeOrAbsolute)

data.Add(shape1)
data.Add(shape2)

shapeChart.ItemsSource = data

layoutRoot.Children.Add(shapeChart)

上記のコードは以下のような XamShapeChart になります。

shapechart_shapefile_multi.png