この項目「Well-known text」は途中まで翻訳されたものです。(原文:en:Well-known text) 翻訳作業に協力して下さる方を求めています。ノートページや履歴、翻訳のガイドラインも参照してください。要約欄への翻訳情報の記入をお忘れなく。(2013年11月) |
Well-known text(略称:WKT)は 、ベクタ形式幾何学オブジェクトを投影法 (地図)を基に変換し地図上に表現させるマークアップ言語である。 バイナリ形式で実装されているものはwell-known binary (WKB)であり、PostGISやMicrosoft SQL ServerやDB2等のデータベースでの保存に利用されている。
点 (数学)、線分、多角形、曲線、多面体、TINを含む計18種類が表現できる。
ジオメトリ上の座標は、2次元(x、y)・3次元(x、y、z)・4次元(x、y、z、m:m値は線形参照で用いる)・m値を含む2次元(x、y、m) で示される。 座標が空のジオメトリはEMPTY表示になる。
ジオメトリの仕様はOpen Geospatial Consortium (OGC) により策定されており、PostGIS等のアプリケーションにてOGC仕様に則しジオメトリ変換関数が実装されている。
OGC標準定義においてポリゴン外部の各頂点は反時計周りであり、内部の各頂点は全て時計回りである。
以下にWKTのジオメトリ文字列を示す。
GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))
POINT ZM (1 1 5 60)
POINT M (1 1 80)
POINT EMPTY
MULTIPOLYGON EMPTY
CIRCULARSTRING(1 5, 6 2, 7 3)
COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))
CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0))
MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))
TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))
TIN (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))
POLYHEDRALSURFACE Z (
((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 1, 1 0 1, 0 0 1, 0 1 1, 1 1 1)),
((1 1 1, 1 0 1, 1 0 0, 1 1 0, 1 1 1)),
((1 1 1, 1 1 0, 0 1 0, 0 1 1, 1 1 1))
)
WKBでは十六進法の文字列で表す。 始めのバイト_(情報)はデータのエンディアンを示す。
00 : ビッグエンディアン01 : リトルエンディアン続く4バイトはジオメトリ型を表す32ビットの符号なし整数であり, 具体的には以下の通り:
| Type | 2D | Z | M | ZM |
|---|---|---|---|---|
| Geometry | 0000 | 1000 | 2000 | 3000 |
| Point | 0001 | 1001 | 2001 | 3001 |
| LineString | 0002 | 1002 | 2002 | 3002 |
| Polygon | 0003 | 1003 | 2003 | 3003 |
| MultiPoint | 0004 | 1004 | 2004 | 3004 |
| MultiLineString | 0005 | 1005 | 2005 | 3005 |
| MultiPolygon | 0006 | 1006 | 2006 | 3006 |
| GeometryCollection | 0007 | 1007 | 2007 | 3007 |
| CircularString | 0008 | 1008 | 2008 | 3008 |
| CompoundCurve | 0009 | 1009 | 2009 | 3009 |
| CurvePolygon | 0010 | 1010 | 2010 | 3010 |
| MultiCurve | 0011 | 1011 | 2011 | 3011 |
| MultiSurface | 0012 | 1012 | 2012 | 3012 |
| Curve | 0013 | 1013 | 2013 | 3013 |
| Surface | 0014 | 1014 | 2014 | 3014 |
| PolyhedralSurface | 0015 | 1015 | 2015 | 3015 |
| TIN | 0016 | 1016 | 2016 | 3016 |
| Triangle | 0017 | 1017 | 2017 | 3017 |
| Circle | 0018 | 1018 | 2018 | 3018 |
| GeodesicString | 0019 | 1019 | 2019 | 3019 |
| EllipticalCurve | 0020 | 1020 | 2020 | 3020 |
| NurbsCurve | 0021 | 1021 | 2021 | 3021 |
| Clothoid | 0022 | 1022 | 2022 | 3022 |
| SpiralCurve | 0023 | 1023 | 2023 | 3023 |
| CompoundSurface | 0024 | 1024 | 2024 | 3024 |
| BrepSolid | | 1025 | | |
| AffinePlacement | 102 | 1102 | | |
各データ型は、倍精度浮動小数点(double)の座標を持つ、ポイントか線状のリングの数などの固有データ構造を有する。
例えば、POINT(2.0 4.0)というジオメトリは次で表される:000000000140000000000000004010000000000000
ここで,
00または0:ビッグエンディアン00000001または1:ポイント(2D)4000000000000000または2.0:x座標4010000000000000または4.0:y座標である。
WKTは座標参照系を表すことができる。このWKTの書式は, そもそも1991年にOpen Geospatial Consortiumによって定義され, 2001年に拡張された。この書式は"WKT 1"としても知られる。後にm 座標参照系の概念の進化や, WKT 1への新たな要求や, ソフトウェアの間でのWKT 1の実装の違いなどのために, この書式の見直しがなされた。2015年のOpen Geospatial Consortiumにおいて, 更新されたその標準書式, すなわち, "WKT 2としても知られる"Well-known text representation of coordinate reference systems"が採択された。この標準は, 国際標準化機構によってISO 19162:2015としても公表された。
例えば, 次に示すWKTは2次元の地理座標参照系を示すものであり, 緯度軸が最初に記載され, 次に経度軸が記載され, 座標系はWGS84測地系によって地球と結び付けられている:
GEODCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84", 6378137, 298.257223563, LENGTHUNIT["metre", 1]]],
CS[ellipsoidal, 2],
AXIS["Latitude (lat)“, north, ORDER[1]],
AXIS["Longitude (lon)“, east, ORDER[2]],
ANGLEUNIT[”degree", 0.0174532925199433]]
WKT書式は、地理座標参照系だけでなく、地心座標系、投影座標系、鉛直座標系、時間的に変化する座標系, そして工学的座標系(例えば、ボートに取り付けられた座標参照系)を記述することができる。標準では、これらの座標参照系をどのように組み合わせるかについても記述している。
WKT2で表された座標参照系を読み込むことができるソフトウェアは, 多くの場合(全てとは限らないが), WKT1で表された同様の地理座標系を読み込むことができる
Some caveats exist, notably the removal of the TOWGS84 element which is replaced by the BOUNDCRS element. Another caveat is about the units of measurement. Some of them were unspecified in oldest WKT 1 specifications (for example the PRIMEM unit), which has led to different interpretations by different software. Those units of measurement have been clarified in the 2001 update and the WKT 2 specification is consistent with that clarification. But not all software have followed the 2001 clarification.
WKT形式は異なる空間参照システム間の座標変換に使用する変換手法及びパラメータの記述を明示している。 下記に変換記述例を示す。
PARAM_MT["Mercator_2SP",
PARAMETER["semi_major",6370997.0],
PARAMETER["semi_minor",6370997.0],
PARAMETER["central_meridian",180.0],
PARAMETER["false_easting",-500000.0],
PARAMETER["false_northing",-1000000.0],
PARAMETER["standard parallel 1",60.0]]
PARAM_MT["Affine",
PARAMETER["num_row",3],
PARAMETER["num_col",3],
PARAMETER["elt_0_1",1],
PARAMETER["elt_0_2",2],
PARAMETER["elt 1 2",3]]