地理的な座標による空間参照
SVG Mapプロファイル 1.0(案)
SVG Mapプロファイル 1.0において最も重要な情報は、SVGデータの座標を地理座標と関連付けるための情報です。それは、座標参照系(Coordinate Reference System)メタデータとして記述されます。
SVG Mapプロファイル1.0における座標参照系メタデータの記述規則はSVG1.1仕様(Geographic Coordinate Systems)に基づいていますが、小型コンピュータへの実装容易性と同時に、仕様の曖昧さを解消するために、新たな限定を行うプロファイルを定義します。
SVG Mapプロファイル1.0のデータは必ず座標参照系メタデータを持たなければなりません。それは、以下のRDF/XMLによる言明によって記述されなければなりません。
- 座標参照系プロパティ
crs:CoordinateReferenceSystem
このSVGコンテンツが用いる空間参照系を言明します。
定義域:SVGコンテンツ
値域:CRS型のインスタンスこのプロパティの名前空間:
xmlns:crs="http://opengis.org/xmldtds/transformations.dtd"
この語彙はOGCが過去に勧告した"Recommended Definition Data for Coordinate Reference Systems and Coordinate Transformations"から引用されたものです。 - CRS型のインスタンス
以下のCRS型のインスタンスのみを推奨します。urn:ogc:def:crs:OGC:1.3:CRS84
http://purl.org/crs/84 (2007.5.9更新)
このリソースは、一般にWGS-84と呼ばれるもの、ただし第一パラメータ(X)が経度、第二パラメータ(Y)が緯度 単位はそれぞれ"度"の2次元座標系を持つ地球の座標参照系です。この座標参照系は、OGCがWMS1.3.0のために定義した座標参照系"CRS:84"(Annex B3)と等価です。また、上記のURN表記方法は 同じくOGCの"URNs of definitions in ogc namespace"に記述されているものです。(2007.5.9削除)
.
注1:現在のところ、URNのNIDとして"ogc"は登録されていません。したがって、ogcの仕様を元に規定した、urn表現による空間参照系には、正当性の面で問題がありました。そこで、SVG Mapコンソーシアムでは、purl(persistent URL)を用いることにしました。そして、CRS:84座標参照系のためのURL(URI)として、http://purl.org/crs/84 を登録しました。現在のところ、これが唯一の推奨する座標参照系です。(2007.5.9更新)
.
注2:同じWGS 84空間参照系であるEPSG:4326は第一パラメータ(X)が緯度、第二パラメータ(Y)が経度であり、SVG Mapが使用するCRS:84とはパラメータの順番が逆です。
.
注3:purlはwebブラウザでアクセス可能なURIです。CRS:84のためのドキュメントが同URL(http://purl.org/crs/84)から取得できます。(2007.5.9更新)
.
このCRSの限定は、CRSを一つにすることにより、利用者端末への実装を容易にしつつ、相互運用性を向上することができるという利点によるものです。例えば複数の地図の重ね合わせを行うとき、空間参照系の違いを事実上考慮する必要がなくなります。また、ここで限定したWGS-84座標系は、インターネット上の大多数の地理情報で用いられています。さらに、多くの携帯端末が実装しつつあるGPSが扱うネイティブの空間参照系でもあります。したがって、大多数のユースケースでは、この限定による不都合は起きないでしょう。
. - SVG座標変換プロパティ
svg:transform
SVGコンテンツの座標値と空間参照系で示される座標値との間の変換式を与えます。
定義域: CRS型のインスタンス
値域: SVG transform属性で使用できる文字列(アフィン変換パラメータとして一般化できる)
座標変換はSVGのレンダリングシステムに内蔵されている一次のアフィン変換のみを許容します。
変換式は以下の通りです。
SVG_X:SVGデータのX座標
SVG_Y:SVGデータのY座標
Geo_X:空間座標の第一パラメータ CRS型のインスタンスの制約により、それは経度です
Geo_Y:空間座標の第二パラメータ CRS型のインスタンスの制約により、それは緯度です
a , b , c , d , e , f = SVG transform(a,b,c,d,e,f)パラメータの該当値
SVG_X = a * Geo_X + c * Geo_Y + e
SVG_Y = b * Geo_X + d * Geo_Y + f
このプロパティが言明されていない場合は、その値がmatrix(1,0,0,1,0,0)であるとみなします。
. - SVG Mapの図法
SVG座標変換プロパティが一次のアフィン変換のみであることから、SVG Mapで使用できる図法は正距円筒図法(及びその標準緯線を赤道に取った派生形であるPlate Caree)に限定されます。なお、更に派生形としてアフィン変換の非対角成分が"0"でない図法(正距円筒図法を回転させた図法)を用いることも可能です。
この限定は、多くのユースケースでは実用的な図法を提供しますが、高緯度地域の地図などにおいて不都合な場合がありえます。しかしながら、SVGのレンダリングシステムにあらかじめ内蔵されている機能を流用でき、しかも単純な一次変換であるので、利用者端末への実装を容易にし、スケーラビリティ(特に小型端末への)を向上させるでしょう。
. - サンプル
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<metadata>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:crs="http://opengis.org/xmldtds/transformations.dtd"
xmlns:svg="http://www.w3.org/2000/svg">
<rdf:Description>
<crs:CoordinateReferenceSystem
rdf:resource="http://purl.org/crs/84"
svg:transform="matrix(15.3631,0.0,0.0,-18.6994,-1889.2916,849.9202)"/>
</rdf:Description>
</rdf:RDF>
</metadata>
<circle cx="258.1401" cy="185.1558" r="10.0" stroke="none" fill="green"/> </g>
</svg>
この例で、空間参照系のメタデータは以下のようなグラフで表現されます。
<This SVG Document> crs:CoordinateReferenceSystem <http://purl.org/crs/84>.
<http://purl.org/crs/84> svg:transform "matrix(15.3631,0.0,0.0,-18.6994,-1889.2916,849.9202)".
SVG座標変換プロパティのパラメータは以下の通りです。
a=15.3631
b=0.0
c=0.0
d=-18.6994
e=-1889.2916
f=849.9202
ここで、<circle>図形の中心のSVG座標(258.1401,185.1558)を地理座標に換算すると以下になります。
258.1401 = 15.3631 * Geo_X - 1889.2916
185.1558 = -18.6994 * Geo_Y + 849.9202
Geo_X(経度) = 139.7694°
Geo_Y(緯度) = 35.5500°