SVGMapコンテンツを配置するためのdiv要素。地図中心の照準イメージ。レイヤーリストUIを用いる場合、例えば上記のようなスタイルの定義が必要です。Revision*)の解説を行います。Submissionに対する、近年の開発成果に基づいたSVGMapのアップデートを解説しています。systems)が削除されました。SVG仕様の範囲では単なるメタデータであり、ユーザエージェントの振る舞いに何ら影響を及ぼさないことが理由です。要素が定義され、それに基づくユーザエージェントの振る舞いが規定されていますが、これは一方でW3Cのスペックではないという課題を持ちます。SVGMapで規定された地理座標系に関する機能のいくつか(すべてではない)を実現する方法を用いることとしています。SVGMapのcoordinateReferenceSystem要素もサポートしています。APIによるプログラムでコンテンツをブラウザ上で動的に生成する(ウェブアプリケーション、scriptタグ)機構を備えます。SVGを実装する現代のユーザエージェントは例外なくウェブアプリケーションの実行が可能となりました。ウェブアプリケーションをも地図コンテンツとして扱えることとしました。SVGMapは依然として複数のウェブ上で分散する地図データを一つの画面上にレイヤリングする機能(ハイパーレイヤリング)を維持しています。したがって、SVGMapは複数の地図ウェブアプリケーションをレイヤリング(マッシュアップ)する機能が拡張されます。SVGMapのマッシュアップ・ハイパーレイヤリングの可能性を、単に地図画像データのレイヤリングから、地図上に表現された動的なオブジェクトのマッシュアップ・レイヤリングに広げています。以下に、いくつかのこのような動的な地図コンテンツの例を示しましょう。メタデータは書くレイヤーごとに独特の値を持つため、その検索ロジックはレイヤーに固有のものとなることがあります。このケースではそのような機能をレイヤーに組み込むことを可能にします。DOMツリーを生成するようなSVG地図コンテンツ。このケースでは、サーバからクライアントに送信されるデータの実体はSVG形式の地図データではなく、CSVなどのレガシーなデータです。DOMツリー生成機構を備えたjavascriptコードが含まれます。Serviceのような、特定のロジックによる数列のような法則性を持った地図タイルリソースをタイリングする地図コンテンツ。更新されたSVGMapでは、地図コンテンツに内蔵されたアプリケーションロジックとしてそれを取り扱うことができます。DOMツリーを生成するSVG地図コンテンツが構築できます。従来の地図フレームワークでは、このようなタイリング機能は特定のタイリングロジックとパラメータを伴った専用の機能として地図フレームワーク本体に作りこまれたうえでしばしば提供されてきました。これらのロジックにはさまざまなバリエーションや最適化のための調整パラメータが存在し、これまで長らくその互換性や相互運用に問題を抱えてきました。我々の研究では、これらより用途によってはずっと優れたタイリングの手法も見いだされています。これらのロジックはその多様なバリエーションを含め、javascriptによるプログラムコードとしては容易に記述可能です。多くの場合わずか数十行のロジックで記述できるでしょう。この程度のコードで多くのタイリングの手法が包含できるのであれば、特定のタイリング手法をフレームワークのコアに内包する必要はないであろうというのがSVGMapの現在の方針です。12以降では、個々の地図レイヤーがそのレイヤーに特化したそれぞれ固有のユーザーインターフェースを備えることができる機能が拡張されました。ユーザーインターフェースはhtmlによる任意のウェブアプリとして構築でき、それは新たに設計されたレイヤー選択UIを通してiframe中に呼び出されます。この機能を用いるにはSVGMapLevel0.1フレームワークに加えて、拡張フレームワーク(SVGMapLv0.1_LayerUI2_r*.js)をロードする必要があります。詳細は#レイヤー固有のUIを参照してください。このフレームワークでは、拡張されたAPIが利用可能です。ようなUIを任意に構築できます。)を適用する拡張フレームワークが提供されます。この機能を用いるにはSVGMapLevel0.1フレームワークに加えて、拡張フレームワーク(SVGMapLv0.1_GIS_r*.js)をロードする必要があります。このフレームワークでは、拡張されたAPI(TBD)が利用可能です。フレームワークに内蔵された基本的な演算機能に加え、geoJSONと整合するインターフェースを備え、jstsを組み込み、より高度な機能を実装するための機構も持ちます。この機能を用いると、特定のレイヤーに登録されているポリゴンの範囲に入っている、特定のレイヤーのポイントをフィルタリングして表示の色を変更する。いったことが可能です。これらはすべてすでにブラウザ上にロードされている限られた量のコンテンツの中での演算に限定されます。サーバ上にしかないデータに対してこれらの演算を試みたい場合、従来通りサーバサイド技術によってそれは実現すべきです。14以降では、SVGMapコンテンツを編集するツール機能が実装された拡張フレームワークが提供されます。(Rev11以前にはPOIに限って基本フレームワークに内蔵していた)なお編集したオブジェクトを保存したり登録するためには別のサービスやアプリケーションの開発が必要です。Mappingの規格との整合性をも備えた仕様として検討と標準化を進めています。今のところまだその標準化は完遂されていないため、その完全な実装がなされたウェブブラウザは存在しません。既存のウェブブザでSVGMapの機能が実行可能となるような拡張をJavascriptによるフレームワークとして構築することが可能です。0.1フレームワークは、このようなJavascriptによるSVGMapの仕様に基づいた初歩的な制限と拡張がされた実装です。そのアーキテクチャの特徴は、ブラウザネイティブのSVGレンダラーを使用せず、HTML,CSS,HTMLCanvas2DAPIを用いてSVGMapが実装されている点です。この特徴は主にこのフレームワークの開発が開始された時期に起因しています。当時のウェブブラウザの多くはSVGが実装されていませんでした。実装されていたとしても、大規模なベクトルデータのレンダリング、および伸縮スクロール・インタラクティブな操作に対する性能面での処理制御に問題がありました。これらの問題のいくつかは現在のブラウザで解消されているものがあるかもしれません。これらの問題の解決とともに、SVGMapフレームワークはLevel番号を上げつつよりネイティブの機能に基づいた実装に移行するかもしれません。参考までに、実験的なネイティブのレンダラを用いた実装(2010年)があります。SVGのベクトル描画機能はcanvgのpathパーサなどを引用することで実装されています。多くの要素やプロパティ、アトリビュートの実装が省略されています。追加・拡張された機能:フレームワークの呼び出し本フレームワークを用いる場合、SVGMapコンテンツをブラウザに直接読み込ませることはできません。フレームワークを動作させるjavascriptライブラリをロードしたhtmlコンテンツ(WebApps)を準備し、そこからSVGMapコンテンツを呼び出します。利用者には、このhtmlコンテンツのURLを告知します。このhtmlコンテンツを以降ルートhtml文書と呼ぶことにします。htmlコンテンツの<body>要素直下に以下の要素を配置します。src="SVGMapLv0.1_LayerUI2_r*.js"></script>注記:r*は、フレームワークのリビジョンによって変化するその他、各種の拡張フレームワークのjavascriptコードを読み込むscript要素(必要に応じて)SVGMapLv0.1_Authoring_r*.js、SVGMapLv0.1_GIS_r*.js他がある。src="拡張フレームワークファイル.js"></script>注記:拡張フレームワークファイル.jsは用いる拡張によって変化するSVGMapコンテンツを配置するためのdiv要素。id属性に"mapcanvas"を設定し、title属性(もしくはdata-src属性(>rev14))にはルートとなるSVGコンテンツ(以降ルートSVGコンテンツと呼びます)のパスを指定したdiv要素を設置します。(要確認:地図のサイズ・配置はこのdiv要素のサイズとなります。data-src="Container.svg"></div>地図中心の照準イメージ。参照する画像はあらかじめ用意されたもの以外も利用できます。height="15"/>任意で設置できる要素:LayerUIフレームワークを実装したjavascriptコードを読み込むscript要素(本フレームワークについては後述)下記のレイヤーリストUIおよびレイヤーに特化したUIを設置する場合、このscriptの読み込みは必須です。/>img要素かつidが上記の値である必要があります。伸縮ボタンを一回押すたびに伸縮する比率は、別途svgMap.setZoomRatio(ratio)で設定可能。/>img要素かつidが上記の値である必要があります。ボタン押下で測位し、測位点を中心にして地図を表示する機能。表示の範囲は測位制度に応じて適当に設置されます。></font>idが上記の値である必要があります。"></div>idが上記の通りである必要があります。styleは任意だが、heightはレイヤリストUIが展開された状態におけるサイズとなります。格納された状態のサイズは、この要素における文字の縦幅となります。レイヤー固有のUI(後述)を設置するdiv要素レイヤー固有のUIを使用するために設置するdiv要素です。white;opacity:0.8;display:none;"></div>idが上記の通りである必要があります。styleは任意だが、heightはレイヤリストUIが展開され得る最大のサイズとなります。view</label></form>checkboxタイプのform要素であり、idが上記の通りである必要があります。port)を再現する機能です。#ffff80;opacity:0.8;}</style>レイヤーリストUIを用いる場合、例えば上記のようなスタイルの定義が必要です。layerList:レイヤーリストUI全体に対するスタイルlayerTable:レイヤーリストUIの中のテーブルに対するスタイル。layerItem:同テーブルに表示される個々のレイヤー表示に対するスタイルnoGroup:同レイヤー表示のうち、グループに属さないレイヤーに対するスタイルレイヤーSVGMapは古典的な地図情報システムのようなレイヤーの概念を備えていません。その上位概念ともみなせる、任意のドキュメントをツリー状に埋め込む機能を備えています。それでは古典的なユースケースを平易に表現しているとはいえないため、それをラップする古典的なレイヤーの概念と、それに基づくレイヤーユーザインターフェースのフレームワークを持ちます。フレームワークが最初に読み込むルートsvgコンテンツの中で埋め込まれる(animationもしくはiframeを用いる(準拠規格に依る))svgコンテンツが自動的にレイヤーとみなされます。いうまでもなくレイヤーの上下順はSVGコンテンツのスクリプト中での埋め込みの順番の逆順になります。ルートsvgコンテンツが参照し埋め込んでいる、各レイヤーのSVGコンテンツのことを、レイヤールートsvgコンテンツと呼ぶこととします。ここで、各レイヤールートsvgコンテンツはさらに別のsvgコンテンツを埋め込むことがあります。これらのコンテンツはよくサブレイヤーもしくは単にレイヤーと呼ばれることもあります。そこで、"ルート"をあえて付記することにします。Rev12以降のSVGMapLv0.1フレームワークではレイヤーフレームワークは本体と独立した実装となり、拡張や切り離しが可能となりました。(SVGMapLv0.1_LayerUI2_r*.js)に関して解説します。レイヤーUIフレームワークが提供するUIは、先述のレイヤーリストUIを設置するdiv要素によって提供されます。このUIは以下の機能を持ちます。各レイヤーの表示非表示を切り替える機能グルーピングされたレイヤー(後述)をグループとして表現、折り畳み、一括表示非表示する機能。そのレイヤーに紐づけられたレイヤー固有UIを出現させる機能。表示されているレイヤーの個数などの情報を表示する機能クリッカブルオブジェクトグラフィックスオブジェクトをクリック(タブレットの場合は、タップもしくは照準アイコンに合わせたうえでタップ)することでそれに紐づけられたインタラクティブ動作を実行する。インタラクティブ動作はフレームワークが独自に提供する、metadataフレームワークに基づく、メタデータの表示機能を対象とします。image要素(useによって間接的に設置されたimage要素を含む)は、a要素によるハイパーリンクが加えて実装されています。metadaとa要素の双方が設定されているimage要素では、どちらのインタラクティビティを発動させるかをモーダルダイアログによるユーザへの問い合わせが行われます。class属性によるレイヤーのグルーピング・クリッカブル機能の提供ルートsvgコンテンツが参照するレイヤー(レイヤールートsvgコンテンツ)へのリンクを記述する要素(animationもしくはiframe要素)は、class属性によって、各レイヤーに特性を与えることができます。classはスペース区切りで複数指定することができますが、グループ名は一つしか認識されません。グルーピンググループ名として、以下の属性値以外の値をしていることで、同じグループ名を持ったレイヤーたちをグルーピングすることができます。グルーピングの効果はレイヤーUIにおけるグループ表現と、下記のbatch,switch特性です。batchグルーピングとともに使用します。そのグループに属するレイヤーを一括で表示非表示するための機能がレイヤーUIに付加されます。switchグルーピングとともに使用します。そのグループに属するレイヤーは、どれか一つしか表示されません。batchとの併存はできません。(無視されます(要確認))clickablePathなどのベクトル図形要素はデフォルトではインタラクティビティが提供されません。クラス値にclickableを指定することでこのレイヤー(子供のsvgコンテンツを含む)の図形要素においてのみ、インタラクティビティが提供されます。提供されるインタラクティビティは、マウスによって図形をクリックしたとき、そのグラフィックス要素がクリッカブルな要因を備えているかどうかを検索し、備えている場合それに対応するアクションを起こします。image要素(useによって間接的に設置されたimage要素を含む)は、このクラスの設定に依らず、a要素によるハイパーリンク、およびmetadataフレームワークを用いたクリッカブルオブジェクトとして機能します。editable(一時的廃止)Rev11までのフレームワークにはPOI(defsで定義されたビットイメージをuseで貼り付ける機能)が内蔵されていました。その機能を発動するためのクラスです。Rev12からはその実装は外されており、今後編集機能は機能拡充されたうえで周辺ライブラリとして提供される予定です。metadataフレームワークデータ格納効率に優れたメタデータのフレームワークが提供されます。このメタデータは先述のクリッカブルオブジェクトとしてインタラクティビティの実装に用いられます。svgドキュメントルート要素のproperty属性に、メタデータの属性名をカンマ区切りで記述。そのファイルの図形要素にメタデータをproopertyに列挙した順に、メタデータの値を記述していきます。ひとつの文書に対して一つのスキーマ(メタデータの属性名とその順番)しか与えられないという制約を持ちます。metadataはデフォルトの状態ではブラウザが備えるalertダイアログに属性名と属性値がそれぞれ列挙された形で表示されます。metadata表示機能の拡張については、ウェブアプリケーションの開発の章で別途解説します。多くの機能が実装されていないため、実装されている機能をここでは列挙することとします。(xywhによっ参照されるimageの部分を埋め込む)。0.1フレームワークを用いたウェブアプリケーションの開発について解説します。本フレームワークによる開発部分は以下に分類されます。ルートhtml文書によるウェブアプリケーション(SVGMapフレームワーク)ウェブアプリケーションによる動的な地図レイヤーレイヤー固有iframeSVGMapフレームワークルートhtml文書によるウェブアプリケーションはSVGMapLv0.1フレームワークを用いたウェブアプリケーションの基本であり、そのhtml文書が持つ'svgMap'という名前のインスタンスを用いてフレームワークのための拡張機能を利用することができます。SVGMapが持つ基幹オブジェクトSVGMapLv0.1フレームワークのインスタンス'svgMap'が持つ基幹のオブジェクトを解説します。getSvgImagesProps)によって取得できます。DOMツリーというよりむしろ))が蓄積されているハッシュテーブルハッシュID:フレームワークが任意に付番した文書ID。rootに対する相対パス。Originが違う場合は絶対パス.CRS地理座標からSVG座標に変換するための変換パラメータ.scriptSVG文書がscript要素を持つとき、そのscriptへのインターフェースが登録される。APIのリストは下記の通りです。指定されたPOIの属性・リンクの表示選択画面を表示する。選択したイベントに従い、属性の表示または、リンク先のページを表示する。svgY)をCRSにより、GEO座標に変換する。指定した関数(fname)を引数(p1,p2,p3,p4,p5)を渡してフレームワーク内の任意の関数を実行する。現在表示中の地図コンテンツに対応した、GeoJsonのGeometryデータ構造に準拠のGISgeomerry情報をがレイヤ単位でまとまった連想配列の形で取り出す。非同期処理で、cbFuncの最初の引数に返却される。captureGISgeometriesでキャプチャするデータの取得条件を設定する。ビットイメージタイルを取得するか(Default:false)。captureGISgeometriesを呼び出す前に使用する。指定した文書をルートにして、DOM操作をその子文書に対して実行する。svg:iframe)要素を取得する。container)に対して、内包されるレイヤーのリストを返却。ルートコンテナにおける"レイヤ"概念のレイヤidを検索する。オプションなしの場合、ルートSVGコンテナのレイヤーに該当する要素をリストアップし、返却する。ルートコンテナの(animetion||iframeで構成される)レイヤー情報を取得する。Arrayが返却、並び順はsvgのルートコンテナと同じ(最初のレイヤーが一番下。html文書中のimg要素(POI)を入力すると、対応するSVG文書の文書番号とその要素(use)が出力される。対応するuse要素を持つsvg文書自体を取得したい場合は.ownerDocumentする。swLayers[クラス名]に、クラス名ごとのレイヤー(のSVG要素)の全リストを構築する。指定されたviewBox(inBox)を変換行列にてサイズ変更と移動のみでの座標変換する。1行分文字列データ(csv)をエスケープを考慮して配列にパースする。指定したレイヤー(ルートコンテナのレイヤーのみ。モーダル画面を表示し、指定されたメッセージ(messageHTML)、指定されたボタン(buttonMessages(Array))を表示する。ルートコンテナの(animetion||iframeで構成される)レイヤー情報を設定する。selectのvalue)、タイトル名(不確実-同じ名前があるかもしれない。最初に当たったものを選択)。変化があるとtrueが返却される。editingはtrue,false,nullのいずれか。nullの場合、その値を変化させないという意味。不合理の場合はfalseが返却される。特定のレイヤー・svg文書(docId)もしくは、全体に対して別のprop.表示関数(func)を指定する。funcが未指定の場合、設定された関数をクリアする。2Dベクトル図形描画用に統合キャンバス(レイヤー単位でのキャンバス統合)の使用有無を設定する。モーダル表示フレームワークを呼び出し、指定したhtm文字列を最大maxW,H値の中で表示する。指定されたハイパーリンク先のページを表示する。指定された座標を変換する。TBDsvgMapGIStool.で呼び出せるAPI以下のAPIは、SVGMapLv0.1_GIS_r*.jsを用いた場合に使える。本機能拡張はjsts.min.jsの読み込みがさらに必要。指定したpoiID検索対象レイヤーのうち、指定したpolyIDポリゴンコンテンツレイヤーのポリゴンに内包されるものを抽出する。変換途中の状況が返されるコールバック関数。時々呼び出され、変換状態[%]が第一引数に渡される。ポリゴンやポリラインのしっかりした処理を期待する場合は下記のbuildIntersectionを使用すべき。指定したpoiID検索対象レイヤーのうち、指定したpolyIDポリゴンコンテンツレイヤーのポリゴンに内包されないものを抽出する。パラメータはinverseを除きgetIncludedPointsと同じ。sourceId1とsourceId2のレイヤーに対してJTSのIntersectionを実行し、結果をtargetIdレイヤーにコンテンツとして出力する。変換途中の状況が返されるコールバック関数。.alphaそれぞれのレンジは[[range1Min,Max],[range2Min,Max],...[rangenMin,Max]]の形で指定する。変換途中の状況が返されるコールバック関数。時々呼び出され、変換状態[%]が第一引数に渡される。getInRangePointsは、canvasを使った処理のため、CORSの制約にかかる場合、proxyを設定して回避できる。緯度経度をGeoJsonのPointジオメトリに変換するsvgMapLayerUI.で呼び出せるAPI以下のAPIは、SVGMapLv0.1_LayerUI2_r*.jsを用いた場合に使える。レイヤリストUIのトップのメッセージに設定する。visible"起動URLによるオプション指定(内容チェック前)svgMapフレームワークを導入したhtmlコンテンツは、URLの"#"以降であるフラグメント識別子によってフレームワークにいくつかの起動時オプションを提示することができます。通常、これらのオプションは、ルートコンテナにおける記述で示されています。フラグメント識別子による指示はそれをオーバーライドします。一般的な"&"による区切りで複数の複数のパラメータを指定できます。表示範囲の指定global座標系によって表示範囲を指示することができます。標準のフラグメント記述に対してそれぞれ"global"文字列の追加が必要です。global座標系におけるxは一般的に経度、yは一般的に緯度に対応することに留意してください。それぞれのレイヤーに対しては、さらにフラグメントを追加することができます。"="は"%3D",&は"%26"でURLエンコードしてください。動的な地図レイヤーsvgドキュメントにjavascriptを記述することにより動的なデータ生成を実装可能としています。本フレームワークでは、ドキュメント中に<script>要素を一つだけ記述することができ、その要素の中にjavascriptコードを入れることができます。動的SVGMapコンテンツで利用可能な拡張API一般のjavascriptAPIに加えて、動的な地図レイヤーを実装するために以下のAPIが提供されます。refreshScreenを用いていない場合、そのレイヤーのDOMを編集してもそれが即座に表示に反映(更新)するとは限りません。文書のロード、ズーム、スクロールのときが表示のDOMの内容を反映した画面の自動更新のタイミングです。それ以外、多くの場合反映されません(性能確保のための本フレームワークの制限)。DOMO編集をそれ以外のタイミングで表示に反映したい場合、この関数の呼び出しを行うひつようがあります。不必要にこの関数を呼び出すとシステム全体の性能が低下するかもしれません。transform()getCanvasSize()linkedDocOp()isIntersect()drawGeoJson()childDocOp()onload:この関数を設定すると、ロードされると呼ばれる(ドキュメントロード後、描画前のタイミング。)したがってonloadで実行される処理はその中が非同期でない限り、refreshScreen()しなくてもonload時のDOM編集は描画に反映される。onscroll:この関数を設定すると、スクロールされるとき呼ばれる(ほかにズーム以外で画面更新時も)(スクロール後の描画前のタイミング。addEventHandlerすると、ズームパン以外で地図システム全体の描画が完了(含タイムアウト)後に発行される。refreshScreen()など。このイベントをフックにして、SVGMapコンテンツのDOM操作・再描画(refreshScreen())を行うと無限ループに陥るので使用方法に注意が必要。レイヤー固有のUI概要レイヤールートsvgコンテンツ(フレームワークが最初に読み込むルートsvgコンテンツの中で埋め込まれるsvgコンテンツ)に対して、そのレイヤーに固有のユーザインターフェースをhtmlによるウェブアプリとして持たせる機能が提供されます。この機能は情報やユーザインターフェースを地図表現とは別に表示したい場合に用いることができる機能です。このUIには主に二つの用途が考えられます。各レイヤーはその地図表現の意味を示すための固有の凡例を持つことがあります。その凡例を表示するために利用できます。先述のように、ウェブアプリケーションによる動的な地図レイヤーは独自のロジックによってそのレイヤーの地図表現を動的に変化させる機能を備えることができます。この場合、例えばエンドユーザがFORMで入力したフィルター条件ををもとに表現を変更するようなケースも考えられます。これらケースでは、そのフォームや凡例は、ルートhtml文書に設置することは可能ですが、もしも多くのレイヤーを表示するアプリケーションであり、それらのレイヤーがそれぞれ固有のフィルタ条件を持つような場合、ルートhtml文書は、それぞれのレイヤーをフィルタリングするためのFORMとそのフィルタリングロジックをすべて埋め込む必要があり、画面のデザイン、およびロジックのコーディングの双方がスパゲッティ化する可能性があります。このアプリケーションに後日さらにレイヤーが追加される場合、スパゲッティ化の問題はより深刻になるかもしれません。凡例の表示についても同様の問題が考えられます。本レイヤー固有UIはこのような問題に対するソリューションを提供しています。LayerUI2フレームワークを読み込み、id="layerSpecificUI"のdiv要素がルートhtml文書に設置されているときに使用できます。origin)を設置します。サブセットとして、data-controller属性にビットイメージ(pngもしくはjpg,jpeg,gif拡張子を持つビットイメージ)へのリンクを与えることでレイヤーの凡例情報の提示をすることもできます。レイヤー固有UIの表示部位に、このように指定されたリソース(ビットイメージもしくはhtml)がレイヤーの選択の状況に応じて、切り替わり表示されます。htmlの場合iframeとして埋め込まれ、ウェブアプリケーションを持つことも可能です。data-controller="../Self-GS-POI_controller.html">.....詳細レイヤールートsvgコンテンツのドキュメントルート要素へdata-controller属性を設定する代わりに、ルートsvgコンテンツにおけるレイヤールートsvgコンテンツへの参照要素にdata-controller属性を設定することもできます。data-controller属性の代わりに、data-controller-src属性の値に、適切にエスケープすることで直接htmlを記述することもできます。data-controller属性によって参照されるhtmlコンテンツでは、次節#拡張APIで説明する値や関数が使用できます。data-controller属性のURLには以下のオプションをフラグメント識別子として指定することができます。拡張APIレイヤー固有UI(iframe)では以下のAPIが拡張されています。別ページを参照してください。特別ページ印刷用バージョンこの版への固定リンクTranslateプライバシー・ポリシーsvg2wikiについて。