Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー 空間データサポート » 空間データの使用 » チュートリアル:空間機能の実験

 

レッスン 5:SVG への空間データの出力

このレッスンでは、SVG ドキュメントを作成し、WKT で表現された複数多角形を表示します。ジオメトリを SVG フォーマットにエクスポートすると、Interactive SQL または SVG に互換性のあるアプリケーションで表示できます。

 ♦ ジオメトリを表示するために SVG として出力する
  1. Interactive SQL で次の文を実行して、ジオメトリの例が設定された変数を作成します。

    CREATE OR REPLACE VARIABLE @svg_geom 
    ST_Polygon = (NEW ST_Polygon('Polygon ((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 2 3, 3 3, 3 2, 2 2))'));
  2. Interactive SQL で、次の SELECT 文を実行して、ST_AsSVG メソッドを呼び出します。

    SELECT @svg_geom.ST_AsSVG() AS svg;

    結果セットには単一のローがあり、SVG イメージが含まれています。このイメージは、Interactive SQL の [SVG プレビュー] 機能を使用して表示できます。これを行うには、結果ローをダブルクリックして、[SVG プレビュー] タブを選択します。

    データベースから完全な値を読み込めないことを示すエラーを受け取った場合、Interactive SQL の [トランケーションの長さ] 設定を変更する必要があります。これを行うには、Interactive SQL で、[ツール] » [オプション] » [SQL Anywhere] をクリックし、[トランケーションの長さ] に 100000 などの大きな値を設定します。クエリを再び実行してジオメトリを表示します。

  3. 前の手順では、SVG イメージを Interactive SQL 内でプレビューする方法を説明しました。ただし、結果の SVG をファイルに書き込んで、外部のアプリケーションで読み込めるようにするとより便利です。xp_write_file システムプロシージャーまたは WRITE_CLIENT_FILE 関数 [文字列] を使用すると、データベースサーバーまたはクライアントコンピューターの相対位置にあるファイルに書き込むことができます。この例では、OUTPUT 文 [Interactive SQL] を使用します。

    Interactive SQL で、次の SELECT 文を実行して ST_AsSVG メソッドを呼び出し、ジオメトリを myPolygon.svg という名前のファイルに出力します。

    SELECT @svg_geom.ST_AsSVG();
    OUTPUT TO 'c:\\myPolygon.svg' 
    QUOTE '' 
    ESCAPES OFF 
    FORMAT TEXT

    この文には、QUOTE ''ESCAPES OFF 句を含める必要があります。そうしないと、ホワイトスペースを維持するために改行復帰文字と一重引用符が XML に挿入され、出力が無効な SVG ファイルになります。

  4. Web ブラウザまたは SVG イメージの表示をサポートするアプリケーションで SVG を開きます。または、SVG をテキストエディターで開くと、ジオメトリの XML を表示できます。

  5. ST_AsSVG メソッドは、単一のジオメトリから SVG イメージを生成します。場合によっては、グループ内のすべてのシェイプが含まれる SVG イメージを生成することがあります。ST_AsSVGAggr メソッドは、複数のジオメトリを単一の SVG イメージに結合する集合関数です。まず、Interactive SQL を使用して、SVG イメージを保持する変数を作成し、ST_AsSVGAggr メソッドを使用してそれを生成します。

    CREATE OR REPLACE VARIABLE @svg XML;
    SELECT ST_Geometry::ST_AsSVGAggr( geometry, 'attribute=fill="black"' )
    INTO @svg
    FROM Massdata;

    @svg 変数は、現在、Massdata テーブル内のすべての郵便番号区域を表す SVG イメージを保持しています。'attribute=fill="black"' は、生成されたイメージに使用される塗りつぶしの色を指定します。指定しない場合、データベースサーバーは任意の塗りつぶしの色を選択します。目的の SVG イメージを含んだ変数が作成されたので、それをファイルに書き込んで別のアプリケーションで表示できます。Interactive SQL で次の文を実行して、SVG イメージをデータベースサーバーの相対位置にあるファイルに書き込みます。

    CALL xp_write_file( 'c:\\temp\\Massdata.svg', @svg );

    WRITE_CLIENT_FILE 関数も、クライアントアプリケーションの相対位置にあるファイルに書き込むために使用できますが、適切なパーミッションを有効にするために追加の手順が必要となります。SVG データをサポートするアプリケーションで SVG イメージを開くと、次のようなイメージが表示されます。

    マサチューセッツ州の郵便番号区域の集約を表す SVG イメージ。

    このイメージは一様に黒ではありません。隣接する郵便番号区域の境界の間に小さなギャップがあります。ジオメトリ間には実際に白線があり、これは SVG が描画される方式の特徴です。現実にはデータにギャップはありません。太くて白い線は河川と湖です。

    次の項を参照してください。

  6. レッスン 6:空間データの投影に進みます。