4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DuckDBAdvent Calendar 2024

Day 14

DuckDBのSpatial Extension 関数一覧

Last updated at Posted at 2024-12-13

これは DucDB AdventCalendar 202414日目の記事です。
参加者が少ないので増えると良いなと思っています。

概要

DuckDBには地理空間データ処理を可能にするSpartial Extensionという拡張機能があります
ドキュメントをよく眺めているのですが、日本語のページは無いので、関数一覧を訳してみました

以下の記事で実際に使っています

丁度同日に弊社CTOからとても丁寧に書かれた記事が出ましたので紹介します

インストールとロード

以下のコマンドでインストールと読み込みを行います

INSTALL spatial;
LOAD spatial;

関数一覧

以下のページの一覧を自分用に日本語訳しました

スカラー関数

関数 概要
ST_Area ジオメトリの面積を計算します。
ST_Area_Spheroid 地球の権体モデルを使用して、ジオメトリの面積をメートル単位で返します。
ST_AsGeoJSON ジオメトリをGeoJSONとして返します。
ST_AsHEXWKB ジオメトリをHEXWKB文字列として返します。
ST_AsSVG ジオメトリをSVGまたはパスに変換します。
ST_AsText ジオメトリをWKT文字列として返します。
ST_AsWKB ジオメトリをWKBバイナリとして返します。
ST_Boundary ジオメトリの境界を返します。
ST_Buffer 指定距離のバッファを返します。
ST_Centroid ジオメトリの重心を計算します。
ST_Collect ジオメトリのリストをコレクションジオメトリとして収集します。
ST_CollectionExtract GeometryCollectionからジオメトリを抽出し、型付きマルチジオメトリにします。
ST_Contains ジオメトリ1がジオメトリ2を含んでいる場合にtrueを返します。
ST_ContainsProperly ジオメトリ1がジオメトリ2を「正しく含んでいる」場合にtrueを返します。
ST_ConvexHull ジオメトリを囲む凸包を返します。
ST_CoveredBy ジオメトリ1がジオメトリ2に「覆われている」場合にtrueを返します。
ST_Covers ジオメトリが別のジオメトリを覆うかを確認します。
ST_Crosses ジオメトリが他のジオメトリと交差するかを確認します。
ST_DWithin 二つのジオメトリが指定された距離内にあるかを確認します。
ST_DWithin_Spheroid 地球の権体モデルを使用して、二つのPOINT_2Dが指定された距離内にあるかを確認します。
ST_Difference 二つのジオメトリの差分を返します。
ST_Dimension ジオメトリの次元を返します。
ST_Disjoint 二つのジオメトリが分離しているかを確認します。
ST_Distance 二つのジオメトリの距離を返します。
ST_Distance_Sphere 二つのジオメトリのハバーサイン距離を返します。
ST_Distance_Spheroid 地球の権体モデルを使用して、二つのジオメトリの距離をメートル単位で返します。
ST_Dump ジオメトリをサブジオメトリとそのパスのリストに分解します。
ST_EndPoint 線の最後のポイントを返します。
ST_Envelope 入力したジオメトリの最小包含箱をポリゴンとして返します。
ST_Equals 二つのジオメトリが等しいかを比較します。
ST_Extent 入力したジオメトリを包む最小BBOXを返します。
ST_ExteriorRing ポリゴンジオメトリの外部リングを返します。
ST_FlipCoordinates 入力したジオメトリの座標を反転します。(xをyに、yをxに変更)
ST_Force2D ジオメトリのポイントをX成分とY成分のみにします。
ST_Force3DM ジオメトリのポイントをX成分、Y成分、M成分にします。
ST_Force3DZ ジオメトリのポイントをX成分、Y成分、Z成分にします。
ST_Force4D ジオメトリのポイントをX成分、Y成分、Z成分、M成分にします。
ST_GeomFromGeoJSON GeoJSONフラグメントからジオメトリをデシリアライズします。
ST_GeomFromHEXEWKB HEXEWKB文字列からジオメトリをデシリアライズします。
ST_GeomFromHEXWKB HEXWKB文字列からジオメトリを作成します。
ST_GeomFromText WKT文字列からジオメトリをデシリアライズし、無効なジオメトリを無視することができます。
ST_GeomFromWKB WKBバイナリからジオメトリをデシリアライズします。
ST_GeometryType 入力したジオメトリの種類を示す'GEOMETRY_TYPE'のenumを返します。
ST_HasM 入力したジオメトリにM値があるかを確認します。
ST_HasZ 入力したジオメトリにZ値があるかを確認します。
ST_Hilbert 指定したBBOXを覆うヒルベルト曲線のインデックスとしてX値とY値を置換します。
ST_Intersection 二つのジオメトリの「交集」を返します。
ST_Intersects 二つのジオメトリが交わっている場合に真を返します。
ST_Intersects_Extent 二つのジオメトリの範囲が交わっている場合に真を返します。
ST_IsClosed ジオメトリが「閉じている」場合に真を返します。
ST_IsEmpty ジオメトリが「空」の場合に真を返します。
ST_IsRing 入力した線ジオメトリがリングである場合に真を返します。(ST_IsClosedとST_IsSimpleが両方真の場合)
ST_IsSimple 入力したジオメトリが「simple」である場合に真を返します。
ST_IsValid ジオメトリがトポロジー的に「有効」である場合に真を返します。
ST_Length 入力した線ジオメトリの長さを返します。
ST_Length_Spheroid 地球の権体モデルを使用して、入力したジオメトリの長さをメートル単位で返します。
ST_LineMerge 入力した線ジオメトリを「結合」し、選択的に方向を考慮します。
ST_M ポイントジオメトリのM値を返します。(ポイントでない場合や空の場合はNULL)
ST_MMax ジオメトリの最大M値を返します。
ST_MMin ジオメトリの最小M値を返します。
ST_MakeEnvelope 入力したジオメトリを包む最小のBBOXポリゴンを返します。
ST_MakeLine 入力したポイントのペアまたはリストからLINESTRINGジオメトリを作成します。
ST_MakePolygon シェルジオメトリと選択的なホールのセットからポリゴンを作成します。
ST_MakeValid 無効なジオメトリを無効なポイントを削除せずに有効にするよう試みます。
ST_Multi 単一のジオメトリをマルチジオメトリに変換します。
ST_NGeometries コレクションジオメトリに含まれるコンポーネントジオメトリの数を返します。
ST_NInteriorRings ポリゴンの内部リングの数を返します。
ST_NPoints ジオメトリ内の項点の数を返します。
ST_Normalize 入力したジオメトリを「標準化」したバージョンを返します。
ST_NumGeometries コレクションジオメトリに含まれるコンポーネントジオメトリの数を返します。
ST_NumInteriorRings ポリゴンの内部リングの数を返します。
ST_NumPoints ジオメトリ内の項点の数を返します。
ST_Overlaps 入力したジオメトリが別のジオメトリと「重なり合う」場合に真を返します。
ST_Perimeter ジオメトリの周囲の長さを返します。
ST_Perimeter_Spheroid 地球の権体モデルを使用して、周囲の長さをメートル単位で返します。
ST_Point ジオメトリのポイントを作成します。
ST_Point2D POINT_2Dを作成します。
ST_Point3D POINT_3Dを作成します。
ST_Point4D POINT_4Dを作成します。
ST_PointN 入力したジオメトリのN番目の項点をポイントジオメトリとして返します。
ST_PointOnSurface 入力したジオメトリの表面上にあることが保証されたポイントを返します。時によって、ST_Centroidの代替として有用です。
ST_Points ジオメトリ内のすべての項点をマルチポイントとして集めます。
ST_QuadKey 指定した縦緯/縦度のレベルでクアッドキーを計算します。
ST_ReducePrecision すべての項点を目標の精度まで縮小したジオメトリを返します。
ST_RemoveRepeatedPoints 重複したポイントを削除した新しいジオメトリを返します。選択的に目標距離内のポイントを削除できます。
ST_Reverse 項点の順序を逆にしたジオメトリを返します。
ST_ShortestLine 入力した二つのジオメトリの最短距離にあるポイントを結ぶ線を返します。
ST_Simplify 入力したジオメトリを縦切りが指定の距離より小さい辺を縮小して簡略化します。
ST_SimplifyPreserveTopology 無効なトポロジーを作ることなく、ジオメトリを簡略化します。
ST_StartPoint 線ジオメトリの最初のポイントを返します。
ST_Touches 入力した二つのジオメトリが「接している」場合に真を返します。
ST_Transform ジオメトリを二つの座標系の間で変換します。
ST_Union 入力した二つのジオメトリの「一般和」を返します。
ST_Within 入力したジオメトリが別のジオメトリの「内部にある」場合に真を返します。
ST_X ポイントジオメトリのX値を返します。(ポイントでない場合や空の場合はNULL)
ST_XMax ジオメトリの最大X値を返します。
ST_XMin ジオメトリの最小X値を返します。
ST_Y ポイントジオメトリのY値を返します。(ポイントでない場合や空の場合はNULL)
ST_YMax ジオメトリの最大Y値を返します。
ST_YMin ジオメトリの最小Y値を返します。
ST_Z ポイントジオメトリのZ値を返します。(ポイントでない場合や空の場合はNULL)
ST_ZMFlag 入力したジオメトリのZ値とM値の有無を示すフラグを返します。
ST_ZMax ジオメトリの最大Z値を返します。
ST_ZMin ジオメトリの最小Z値を返します。

集計関数

関数 概要
ST_Envelope_Agg ST_Extent_Agg の別名。
ST_Extent_Agg 入力ジオメトリの集合を包含する最小のバウンディングボックス(矩形ポリゴン)を計算します。
ST_Intersection_Agg ジオメトリの集合の交差部分を計算します。
ST_Union_Agg 入力ジオメトリの集合の和(ユニオン)を計算します。

テーブル関数

関数 概要
ST_Drivers サポートされているGDALドライバとファイル形式のリストを返します。
ST_Read GDALライブラリを使用して、さまざまな地理空間ファイル形式を読み込みます。
ST_ReadOSM 圧縮されたOpenStreetMapデータを .osm.pbf ファイルから直接読み込みます。
ST_Read_Meta GDALライブラリを使用して、さまざまな地理空間ファイル形式のメタデータを読み込みます。

さすがにPostGISの方が出来ることは多いですが、これだけ出来れば十分な気がしますね
DuckDB最高なので皆さんも使っていきましょう

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?