Well-known text

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Well-known text(略称:WKT)は 、ベクタ形式幾何学オブジェクトを投影法 (地図)を基に変換し地図上に表現させるマークアップ言語である。 バイナリ形式で実装されているものはwell-known binary (WKB)であり、PostGISMicrosoft SQL ServerDB2等のデータベースでの保存に利用されている。

ジオメトリオブジェクト[編集]

点 (数学)線分多角形曲線多面体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標準定義においてポリゴン外部の各頂点は反時計周りであり、内部の各頂点は全て時計回りである。[1]


Geometry primitives (2D)
Type 凡例
Point POINT (30 10)
LineString LINESTRING (30 10, 10 30, 40 40)
Polygon POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),
(20 30, 35 35, 30 20, 20 30))
Multipart geometries (2D)
Type 凡例
MultiPoint MULTIPOINT ((10 40), (40 30), (20 20), (30 10))
MULTIPOINT (10 40, 40 30, 20 20, 30 10)
MultiLineString MULTILINESTRING ((10 10, 20 20, 10 40),
(40 40, 30 30, 40 20, 30 10))
MultiPolygon MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),
((15 5, 40 10, 10 20, 5 10, 15 5)))
MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),
((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),
(30 20, 20 15, 20 25, 30 20)))

以下に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))
  )

Well-known binary[編集]

WKBでは十六進法の文字列で表す。 始めのバイト_(情報)はデータのエンディアンを示す。

  • 00 : ビッグエンディアン
  • 01 : リトルエンディアン

続く4バイトはジオメトリ型を表す32ビットの符号なし整数であり, 具体的には以下の通り:

Geometry types, and WKB integer codes
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

ここで,

  • 1バイト整数:00または0:ビッグエンディアン
  • 4バイト整数:00000001または1:ポイント(2D)
  • 8バイト浮動小数点:4000000000000000または2.0:x座標
  • 8バイト浮動小数点: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で表された同様の地理座標系を読み込むことができる[2] Some caveats exist, notably the removal of the TOWGS84 element [3] 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]]

サポート提供RDBMSエンジン[編集]

  • PostgreSQL:PostGISモジュール2.0
  • Oracle Spatial9i, 10g, 11g
  • MySQLVer4.1以降[4]
  • DB2 LUW 9, 10:Spatial Extender
  • DB2 for z/OS 9, 10:Spatial Support
  • IBM Netezza:Netezza Spatial
  • Informix9,10,11:Spatial datablade module
  • Microsoft SQL Server 2008 / 2008 R2 / 2012 'Denali'
  • SpatiaLite
  • Teradata6.1、6.2、12、13(13から標準搭載、以前はアドイン提供)
  • Ingres:GeoSpatial
  • altibase 5.x
  • SQL Anywhere 12

サポート提供API[編集]

関連項目[編集]

脚注[編集]

  1. ^ See the OGC Implementation Specification for geographic information - Simple Feature Access, section 6.1.11.1. http://www.opengeospatial.org/standards/sfa
  2. ^ OGC 12-063r5 Backward compatibility”. docs.opengeospatial.org. 2016年10月1日閲覧。
  3. ^ OGC 12-063r5 Annex C.3.3”. docs.opengeospatial.org. 2016年10月1日閲覧。
  4. ^ GIS and Spatial Extensions with MySQL

外部リンク[編集]