このレッスンでは、SVG ドキュメントを作成し、WKT で表現された複数多角形を表示します。ジオメトリを SVG フォーマットにエクスポートすると、Interactive SQL または 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))')); |
Interactive SQL で、次の SELECT 文を実行して、ST_AsSVG メソッドを呼び出します。
SELECT @svg_geom.ST_AsSVG() AS svg; |
結果セットには単一のローがあり、SVG イメージが含まれています。このイメージは、Interactive SQL の [SVG プレビュー] 機能を使用して表示できます。これを行うには、結果ローをダブルクリックして、[SVG プレビュー] タブを選択します。正方形のジオメトリが別の正方形のジオメトリ内に表示されます。
デフォルトでは、Interactive SQL は [結果] ウィンドウ枠内の値を 256 文字にトランケートします。Interactive SQL が完全なカラム値を読み込めないことを示すエラーを返す場合、トランケーション値を増やします。これを行うには、[ツール] » [オプション] をクリックし、左ウィンドウ枠で [SQL Anywhere] をクリックします。[結果] タブで、[トランケーションの長さ] を 5000 などの大きい値に変更します。[OK] をクリックして変更を保存し、再びクエリを実行してから、再度そのローをダブルクリックします。
前の手順では、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:\\temp\\massdata\\myPolygon.svg' QUOTE '' ESCAPES OFF FORMAT TEXT |
この文には、QUOTE ''
と ESCAPES OFF
句を含める必要があります。そうしないと、ホワイトスペースを維持するために改行復帰文字と一重引用符が XML に挿入され、出力が無効な SVG ファイルになります。
Web ブラウザまたは SVG イメージの表示をサポートするアプリケーションで SVG を開きます。または、SVG をテキストエディタで開くと、ジオメトリの XML を表示できます。
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 が描画される方式の特徴です。現実にはデータにギャップはありません。太くて白い線は河川と湖です。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |