空間データ解析の基礎:MariaDBのST_PolygonFromText関数でWKT文字列を空間データへ変換


ST_PolygonFromText 関数は、Well-Known Text (WKT) 表記からポリゴンジオメトリを作成するために使用されます。 WKT は、空間データを表すためのテキストベースの標準形式です。

構文

ST_PolygonFromText(wkt_text, srid)

引数

  • srid: 空間参照系識別子 (SRID)。省略可能。 デフォルトは 0 です。
  • wkt_text: ポリゴンを表す WKT 文字列。

戻り値

ポリゴンジオメトリ。


SELECT ST_PolygonFromText('POLYGON((1 2, 3 4, 5 6, 7 8, 1 2))');

この例では、5 つの頂点を持つポリゴンが作成されます。

詳細

  • ST_PolygonFromText 関数は、ポリゴンが有効であることを確認します。 ポリゴンが無効な場合は、NULL が返されます。
  • SRID は、ポリゴンが投影されている座標系を識別します。 SRID が省略されると、デフォルトの SRID が使用されます。
  • WKT 文字列は、括弧で囲まれた一連の座標ペアで構成されます。 各座標ペアは、スペースで区切られた X と Y の値で構成されます。
  • MariaDB には、空間データの操作に使用できる他の多くの関数があります。 これらの関数については、MariaDB のドキュメントを参照してください。
  • ST_PolygonFromText 関数は、他の空間関数と組み合わせて使用できます。 たとえば、ST_Area 関数を使用してポリゴンの面積を計算したり、ST_Perimeter 関数を使用してポリゴンの周囲長を計算したりできます。

ST_PolygonFromText 関数は、WKT 文字列からポリゴンジオメトリを作成するための便利なツールです。 空間データの操作に慣れていない場合でも、この関数は簡単に使用できます。



ポリゴンデータの挿入

CREATE TABLE polygons (
  id INT PRIMARY KEY AUTO_INCREMENT,
  wkt_text TEXT,
  polygon GEOMETRY
);

INSERT INTO polygons (wkt_text, polygon)
VALUES
  ('POLYGON((1 2, 3 4, 5 6, 7 8, 1 2))', ST_PolygonFromText('POLYGON((1 2, 3 4, 5 6, 7 8, 1 2))')),
  ('POLYGON((10 20, 30 40, 50 60, 70 80, 10 20))', ST_PolygonFromText('POLYGON((10 20, 30 40, 50 60, 70 80, 10 20))'));

ポリゴンの面積と周囲長の計算

SELECT id, wkt_text, ST_Area(polygon) AS area, ST_Perimeter(polygon) AS perimeter
FROM polygons;

このコードは、polygons テーブル内のすべてのポリゴンデータの ID、WKT 文字列、面積、周囲長を抽出します。

以下のツールを使用して、ポリゴンデータを可視化できます。

これらのツールを使用するには、まずポリゴンデータを WKT 形式でエクスポートする必要があります。 以下のコマンドを使用して、ポリゴンデータを WKT 形式でエクスポートできます。

SELECT id, ST_AsText(polygon) AS wkt_text
FROM polygons;

エクスポートした WKT データを、上記のツールにインポートして可視化することができます。

  • 空間データの操作に慣れていない場合は、MariaDB のドキュメントまたはオンラインチュートリアルを参照することをお勧めします。


ST_GeomFromText 関数と ST_Polygon コンストラクタ

ST_GeomFromText 関数は、WKT 文字列から任意の空間ジオメトリを作成できます。 ST_Polygon コンストラクタは、複数の点からポリゴンを作成するために使用できます。

SELECT ST_Polygon(
  ST_Point(1, 2),
  ST_Point(3, 4),
  ST_Point(5, 6),
  ST_Point(7, 8),
  ST_Point(1, 2)
);

この例では、5 つの点からポリゴンが作成されます。

GeoJSON データのインポート

GeoJSON は、空間データを表現するためのもう 1 つのテキストベースの形式です。 MariaDB は、GeoJSON データを直接インポートしてポリゴンジオメトリを作成できます。

LOAD JSON '{"type": "Polygon", "coordinates": [[[1, 2], [3, 4], [5, 6], [7, 8], [1, 2]]]}'
INTO @geom;

SELECT ST_PolygonFromGeoJSON(@geom);

この例では、GeoJSON 文字列からポリゴンが作成されます。

空間データライブラリの使用

GDAL (Geospatial Data Abstraction Library) などの空間データライブラリを使用して、WKT 文字列からポリゴンジオメトリを作成することもできます。

import osgeo.ogr as ogr

# WKT 文字列を読み込む
wkt = 'POLYGON((1 2, 3 4, 5 6, 7 8, 1 2))'
geometry = ogr.CreateGeometryFromWkt(wkt)

# ポリゴンジオメトリを作成する
polygon = ogr.Geometry(ogr.wkbPolygon)
polygon.AddGeometry(geometry)

# ポリゴンジオメトリをデータベースに挿入する
# ...

この例では、Python の GDAL ライブラリを使用して、WKT 文字列からポリゴンジオメトリを作成しています。

どの方法を選択するべきか

どの代替方法を選択するかは、状況によって異なります。

  • 空間データライブラリに慣れている場合は、空間データライブラリを使用して WKT 文字列からポリゴンジオメトリを作成できます。
  • GeoJSON データを使用している場合は、GeoJSON データを直接インポートするのが最善です。
  • 複数のポリゴンを作成する場合は、ST_GeomFromText 関数と ST_Polygon コンストラクタを使用すると効率的です。
  • 単一のポリゴンを作成する場合は、ST_PolygonFromText 関数が最も簡単です。
  • 空間データの操作に慣れていない場合は、MariaDB のドキュメントまたはオンラインチュートリアルを参照することをお勧めします。
  • 上記の代替方法は、MariaDB バージョン 10.5 以降で使用できます。