文字データを使用して新しいST_Geometryインスタンスを構築する場合や、クライアント アプリケーションとST_Geometry値をやり取りする場合の、ジオメトリ データの形式を定義します。
形式
- point
POINT point_spec
- linestring
LINESTRING linestring_spec
- polygon
POLYGON polygon_spec
- multipoint
MULTIPOINT { EMPTY | ( point_spec [,...] ) }
- multilinestring
MULTILINESTRING { EMPTY | ( linestring_spec [,...] ) }
- multipolygon
MULTIPOLYGON { EMPTY | ( polygon_spec [,...] ) }
- geometrycollection
GEOMETRYCOLLECTION { EMPTY | ( geometry_collection_item [,...] ) }
- geosequence
GEOSEQUENCE { EMPTY | ( ( x-y_pair [,...] ), ( ts [,...] ), ( linkID [,...] ), ( count, uf [,...] ) ) }
- point_spec
{ EMPTY | ( x-y_pair_opt_z ) }
- linestring_spec
{ EMPTY | ( x-y_pair_opt_z [,...] ) }
- polygon_spec
{ EMPTY | ( linestring_spec [,...] ) }
- geometry_collection_item
{ point | linestring | polygon | multipoint | multilinestring | multipolygon | geometry_collection | geosequence }
- x-y_pair
x y
- x-y_pair_opt_z
x y [ z ]
- EMPTY
- 空集合。
- x
- 点のx座標を表わす数値。
- y
- 点のy座標を表わす数値。
- z
- 3Dスペースの点のz座標を表わす数値。
- ts
- 次の形式によるタイムスタンプ値。
yyyy-mm-dd hh:mi:ss.ms
- linkID
- GeoSequenceに含まれる点の道路網に対するリンクのIDを示すNUMERIC(18,0)値。
- count
- GeoSequenceに含まれる各点のuf構成要素の数を表わす整数値。
- uf
- 点に関連付けられたFLOAT値を表現するユーザー フィールド。例えば、特定の追跡システムでは、各点に速度、方向および加速度の値が関連付けられることがあります。
使用上の注意
デフォルトでTeradata Databaseに実装されているデータ変換機能により、ST_Geometry型をWKT形式のCLOBとしてサーバーにエクスポートしたり、サーバーからインポートすることができます。つまり、クライアント アプリケーションでCLOBを使用すると、ST_Geometry列に値を挿入できることになります。このCLOBは、ST_Geometryで表現可能な地理空間サブタイプのいずれかのWKT形式で用意します。同様に、クライアント アプリケーションがST_Geometry列からデータを選択するクエリーを実行すると、デフォルトで、Teradata Databaseにより、ST_Geometry列を表現するジオメトリのWKT形式を使用して、CLOB形式のタイプがエクスポートされます。
Teradataではまた、その他の型および形式として地理空間データのインポートおよびエクスポートを許可するST_Geometry型用に他の変換も提供しています。詳細については、ST_Geometry型変換を参照してください。
例: 地理空間データのWKT形式
次のテーブルについて考察します。
CREATE TABLE sample_shapes (skey INTEGER, shape ST_Geometry);
次に、WKT表現を使用したジオメトリ値の挿入方法について、いくつかの例を示します。
INSERT INTO sample_shapes VALUES (1001, 'POINT(10 20)'); INSERT INTO sample_shapes VALUES (1002, 'POINT EMPTY'); INSERT INTO sample_shapes VALUES (1003, 'LINESTRING(1 1, 2 2, 3 3, 4 4)'); INSERT INTO sample_shapes VALUES (1004, 'LINESTRING EMPTY'); INSERT INTO sample_shapes VALUES (1005, 'POLYGON((0 0, 0 20, 20 20, 20 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))'); INSERT INTO sample_shapes VALUES (1006, 'MULTIPOINT((1 1), (1 3), (6 3), (10 5), (20 1))'); INSERT INTO sample_shapes VALUES (1007, 'MULTILINESTRING((1 1, 1 3, 6 3), (10 5, 20 1))'); INSERT INTO sample_shapes VALUES (1008, 'MULTIPOLYGON(((1 1, 1 3, 6 3, 6 0, 1 1)), ((10 5, 10 10, 20 10, 20 5, 10 5)))'); INSERT INTO sample_shapes VALUES (1009, 'GEOMETRYCOLLECTION( POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))'); INSERT INTO sample_shapes VALUES (1010, 'GEOSEQUENCE( (10 20, 30 40, 50 60), (2007-08-22 12:05:23.56, 2007-08-22 12:08:25.14, 2007-08-22 12:11:41.52), (1, 2, 3), (2, 10, 12, 11, 18, 21, 19) )' ); INSERT INTO sample_shapes VALUES (1011, 'GEOSEQUENCE( (10 20, 30 40, 50 60), (2008-03-17 10:34:03.53, 2008-03-17 10:38:25.21, 2008-03-17 10:41:41.48), (1, 2, 3), (0))'); SELECT * FROM sample_shapes ORDER BY skey;