Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー 空間データサポート » 空間データの使用 » 空間データのクイックスタート

 

WKT (Well Known Text) ファイルからの空間データのロード

空間データをデータベースにロードし、ジオメトリとして表示できるテキストを含んだ Well Known Text (WKT) ファイルを使用して、空間データをテーブルに追加できます。

前提条件

DBA 権限または SYS_SPATIAL_ADMIN_ROLE グループのメンバー

内容と備考

次のとおりです。

 ♦ WKT ファイルから空間データをロードする
  1. データベースにロードできる空間データを WKT フォーマットに含めたファイルを作成します。

    ファイルは、LOAD TABLE 文によってサポートされるフォーマットです。

  2. Interactive SQL で、DBA 権限を所有するユーザーまたは SYS_SPATIAL_ADMIN_ROLE グループのメンバーとして、データベースに接続します。

  3. 次のような文を使用して、テーブルを作成し、ファイルからデータをロードします。

    DROP TABLE IF EXISTS SA_WKT;
    CREATE TABLE SA_WKT (
        description CHAR(24),
        sample_geometry ST_Geometry(SRID=1000004326)
    );
    
    LOAD TABLE SA_WKT FROM 'C:\\Documents and Settings\\All Users\\Documents\\SQL Anywhere 12\\Samples\\wktgeometries.csv' DELIMITED BY ',';

    データがテーブルにロードされます。

結果

空間データは、WKT ファイルから正常にロードされます。

次の手順

[空間ビューアー] を使用すると、Interactive SQL のデータを表示できます。

  1. 次のテキストを、wktgeometries.csv という名前のテキストファイルに保存します。

    次のテキストには、WKT で定義されたジオメトリのグループが含まれます。



    head,"CircularString(1.1 1.9, 1.1 2.5, 1.1 1.9)"
    left iris,"Point(0.96 2.32)"
    right iris,"Point(1.24 2.32)"
    left eye,"MultiCurve(CircularString(0.9 2.32, 0.95 2.3, 1.0 2.32),CircularString(0.9 2.32, 0.95 2.34, 1.0 2.32))"
    right eye,"MultiCurve(CircularString(1.2 2.32, 1.25 2.3, 1.3 2.32),CircularString(1.2 2.32, 1.25 2.34, 1.3 2.32))"
    nose,"CircularString(1.1 2.16, 1.1 2.24, 1.1 2.16)"
    mouth,"CircularString(0.9 2.10, 1.1 2.00, 1.3 2.10)"
    hair,"MultiCurve(CircularString(1.1 2.5, 1.0 2.48, 0.8 2.4),CircularString(1.1 2.5, 1.0 2.52, 0.7 2.5),CircularString(1.1 2.5, 1.0 2.56, 0.9 2.6),CircularString(1.1 2.5, 1.05 2.57, 1.0 2.6))"
    neck,"LineString(1.1 1.9, 1.1 1.8)"
    clothes and box,"MultiSurface(((1.6 1.9, 1.9 1.9, 1.9 2.2, 1.6 2.2, 1.6 1.9)),((1.1 1.8, 0.7 1.2, 1.5 1.2, 1.1 1.8)))"
    holes in box,"MultiPoint((1.65 1.95),(1.75 1.95),(1.85 1.95),(1.65 2.05),(1.75 2.05),(1.85 2.05),(1.65 2.15),(1.75 2.15),(1.85 2.15))"
    arms and legs,"MultiLineString((0.9 1.2, 0.9 0.8),(1.3 1.2, 1.3 0.8),(0.97 1.6, 1.6 1.9),(1.23 1.6, 1.7 1.9))"
    left cart wheel,"CircularString(2.05 0.8, 2.05 0.9, 2.05 0.8)"
    right cart wheel,"CircularString(2.95 0.8, 2.95 0.9, 2.95 0.8)"
    cart body,"Polygon((1.9 0.9, 1.9 1.0, 3.1 1.0, 3.1 0.9, 1.9 0.9))"
    angular shapes on cart,"MultiPolygon(((2.18 1.0, 2.1 1.2, 2.3 1.4, 2.5 1.2, 2.35 1.0, 2.18 1.0)),((2.3 1.4, 2.57 1.6, 2.7 1.3, 2.3 1.4)))"
    round shape on cart,"CurvePolygon(CompoundCurve(CircularString(2.6 1.0, 2.7 1.3, 2.8 1.0),(2.8 1.0, 2.6 1.0)))"
    cart handle,"GeometryCollection(MultiCurve((2.0 1.0, 2.1 1.0),CircularString(2.0 1.0, 1.98 1.1, 1.9 1.2),CircularString(2.1 1.0, 2.08 1.1, 2.0 1.2),(1.9 1.2, 1.85 1.3),(2.0 1.2, 1.9 1.35),(1.85 1.3, 1.9 1.35)),CircularString(1.85 1.3, 1.835 1.29, 1.825 1.315),CircularString(1.9 1.35, 1.895 1.38, 1.88 1.365),LineString(1.825 1.315, 1.88 1.365))"
  2. Interactive SQL で、DBA ユーザーとして、または SYS_SPATIAL_ADMIN_ROLE グループのメンバーとして、サンプルデータベース (demo.db) に接続します。

  3. SA_WKT という名前のテーブルを作成し、wktgeometries.csv からデータをロードします。csv ファイルへのパスを、ファイルを保存した場所のパスに置き換えてください。

    DROP TABLE IF EXISTS SA_WKT;
    CREATE TABLE SA_WKT (
        description CHAR(24),
        sample_geometry ST_Geometry(SRID=1000004326)
    );
    
    LOAD TABLE SA_WKT FROM 'C:\\Documents and Settings\\All Users\\Documents\\SQL Anywhere 12\\Samples\\wktgeometries.csv' DELIMITED BY ',';

    データがテーブルにロードされます。

  4. Interactive SQL で、[ツール] » [空間ビューアー] をクリックします。

  5. [空間ビューアー] で、次の文を実行してジオメトリを表示します。

    SELECT * FROM SA_WKT;
    多角形、線、ポイントが組み合わされて、たくさんのジオメトリシェイプを乗せた台車の隣に、正方形を持っている人物がいるように見えます。
  6. データに複数の空間データのカラムが含まれている場合があります。サポートされる各空間データ型がそれぞれ個別のカラムに格納された WKT データのファイルを作成します。

    次のコードをテキストエディターにコピーして、ファイルを wktgeometries2.csv として保存します。



    "Point(0 0)",,,,,,,,,,,,,,
    ,"LineString(0 0, 1 1)",,,,,,,,,,,,,
    ,,"CircularString(0 0, 1 1, 0 0)",,,,,,,,,,,,
    ,,,"CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 1))",,,,,,,,,,,
    ,,,,"CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 1),(0 1, 0 0))",,,,,,,,,,
    ,,,,,"Polygon((-1 0, 1 0, 2 1, 0 3, -2 1, -1 0))",,,,,,,,,
    ,,,,,,"CurvePolygon(CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 0)))",,,,,,,,
    ,,,,,,,"CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0)))",,,,,,,
    ,,,,,,,,"MultiPoint((2 0),(0 0),(3 0),(1 0))",,,,,,
    ,,,,,,,,,"MultiPolygon(((4 0, 4 1, 5 1, 5 0, 4 0)),((-1 0, 1 0, 2 1, 0 3, -2 1, -1 0)))",,,,,
    ,,,,,,,,,,"MultiSurface(((4 0, 4 1, 5 1, 5 0, 4 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0))))",,,,
    ,,,,,,,,,,,"MultiLineString((2 0, 0 0),(3 0, 1 0),(-2 1, 0 4))",,,
    ,,,,,,,,,,,,"MultiCurve((3 2, 4 3),CircularString(0 0, 1 1, 0 0))",,
    ,,,,,,,,,,,,,"GeometryCollection(MultiPoint((2 0),(0 0),(3 0),(1 0)),MultiSurface(((4 0, 4 1, 5 1, 5 0, 4 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0)))),MultiCurve((3 2, 4 3),CircularString(0 0, 1 1, 0 0)))",
    ,,,,,,,,,,,,,,"GeometryCollection(Point(0 0),CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 1),(0 1, 0 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0))),MultiPoint((2 0),(0 0),(3 0),(1 0)),MultiSurface(((4 0, 4 1, 5 1, 5 0, 4 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0)))),MultiCurve((3 2, 4 3),CircularString(0 0, 1 1, 0 0)))"
  7. 次の文を実行することで、SA_WKT2 という名前のテーブルを作成し、wktgeometries2.csv からデータをロードします。.csv ファイルへのパスを、ファイルを保存した場所のパスに置き換えてください。



    DROP TABLE IF EXISTS SA_WKT2;
    CREATE TABLE SA_WKT2 (
        point          ST_Point,
        line           ST_LineString,
        circle         ST_CircularString,
        compoundcurve  ST_CompoundCurve,
        curve          ST_Curve,
        polygon1       ST_Polygon,
        curvepolygon   ST_CurvePolygon,
        surface        ST_Surface,
        multipoint     ST_MultiPoint,
        multipolygon   ST_MultiPolygon,
        multisurface   ST_MultiSurface,
        multiline      ST_MultiLineString,
        multicurve     ST_MultiCurve,
        geomcollection ST_GeomCollection,
        geometry       ST_Geometry
    );
    
    LOAD TABLE SA_WKT2 FROM 'C:\\Documents and Settings\\All Users\\Documents\\SQL Anywhere 12\\Samples\\wktgeometries2.csv' DELIMITED BY ',';

    データがテーブルにロードされます。

  8. [空間ビューアー] で、次の文を実行してジオメトリを表示します。

    SELECT * FROM SA_WKT2;

    一度に表示できるデータのカラムは 1 つのみであり、その他のカラムのジオメトリを表示するには、[結果] 領域の [カラム] ドロップダウンリストを使用する必要があります。たとえば、次の図は curvepolygon カラムのジオメトリを表示しています。

    多角形のイメージ。上部が円形で、下部が平らな多角形。
  9. すべてのカラムのジオメトリを一度に表示するには、次のように各カラムへの SELECT 文を実行して、結果を UNION ALL で結合します。



    SELECT point FROM SA_WKT2
    UNION ALL SELECT line FROM SA_WKT2
    UNION ALL SELECT circle FROM SA_WKT2
    UNION ALL SELECT compoundcurve FROM SA_WKT2
    UNION ALL SELECT curve FROM SA_WKT2
    UNION ALL SELECT polygon1 FROM SA_WKT2
    UNION ALL SELECT curvepolygon FROM SA_WKT2
    UNION ALL SELECT surface FROM SA_WKT2
    UNION ALL SELECT multipoint FROM SA_WKT2
    UNION ALL SELECT multipolygon FROM SA_WKT2
    UNION ALL SELECT multisurface FROM SA_WKT2
    UNION ALL SELECT multiline FROM SA_WKT2
    UNION ALL SELECT multicurve FROM SA_WKT2
    UNION ALL SELECT geomcollection FROM SA_WKT2
    UNION ALL SELECT geometry FROM SA_WKT2
    SA_WKT2 のカラムのすべてのジオメトリを表示したイメージ。

 参照