DuckDBのSpatial Extension 関数一覧

:::note info
これは [DucDB AdventCalendar 2024](https://qiita.com/advent-calendar/2024/duckdb)14日目の記事です。
参加者が少ないので増えると良いなと思っています。
:::

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

https://duckdb.org/2023/04/28/spatial.html

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

https://qiita.com/northprint/items/0bb2113814a8878fdfef

丁度同日に[弊社CTO](https://qiita.com/Kanahiro)からとても丁寧に書かれた記事が出ましたので紹介します

https://qiita.com/Kanahiro/items/7b4a3eb2f0ae68f16ddb


## インストールとロード
以下のコマンドでインストールと読み込みを行います
```
INSTALL spatial;
LOAD spatial;
```

## 関数一覧

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

https://duckdb.org/docs/extensions/spatial/functions

### スカラー関数
<table>
  <thead>
    <tr>
      <th>関数</th>
      <th>概要</th>
    </tr>
  </thead>
  
  <tbody>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_area">ST_Area</a></td>
      <td>ジオメトリの面積を計算します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_area_spheroid">ST_Area_Spheroid</a></td>
      <td>地球の権体モデルを使用して、ジオメトリの面積をメートル単位で返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_asgeojson">ST_AsGeoJSON</a></td>
      <td>ジオメトリをGeoJSONとして返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_ashexwkb">ST_AsHEXWKB</a></td>
      <td>ジオメトリを<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/inpect-ewkt">HEXWKB文字列</a>として返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_assvg">ST_AsSVG</a></td>
      <td>ジオメトリをSVGまたはパスに変換します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_astext">ST_AsText</a></td>
      <td>ジオメトリを<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/conv-wkt-geom">WKT文字列</a>として返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_aswkb">ST_AsWKB</a></td>
      <td>ジオメトリを<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/inpect-ewkt">WKBバイナリ</a>として返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_boundary">ST_Boundary</a></td>
      <td>ジオメトリの境界を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_buffer">ST_Buffer</a></td>
      <td>指定距離のバッファを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_centroid">ST_Centroid</a></td>
      <td>ジオメトリの重心を計算します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_collect">ST_Collect</a></td>
      <td>ジオメトリのリストをコレクションジオメトリとして収集します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_collectionextract">ST_CollectionExtract</a></td>
      <td>GeometryCollectionからジオメトリを抽出し、型付きマルチジオメトリにします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_concavehull">ST_ConcaveHull</a></td>
      <td>入力されたジオメトリの凹包（おうほう - Concave Hull）を計算します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_contains">ST_Contains</a></td>
      <td>ジオメトリ1がジオメトリ2を含んでいる場合にtrueを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_containsproperly">ST_ContainsProperly</a></td>
      <td>ジオメトリ1がジオメトリ2を「正しく含んでいる」場合にtrueを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_convexhull">ST_ConvexHull</a></td>
      <td>ジオメトリを囲む凸包を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coverageinvalidedges">ST_CoverageInvalidEdges</a></td>
      <td>2つのポリゴンで共有されていないエッジを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coveragesimplify">ST_CoverageSimplify</a></td>
      <td>ポリゴンカバレッジのエッジを単純化し、得られる単純化されたポリゴンに継ぎ目がないようにします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coverageunion">ST_CoverageUnion</a></td>
      <td>ポリゴンカバレッジ内の全てのジオメトリを結合します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coveredby">ST_CoveredBy</a></td>
      <td>ジオメトリ1がジオメトリ2に「覆われている」場合にtrueを返します。</td>
    </tr>    
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_covers">ST_Covers</a></td>
      <td>ジオメトリが別のジオメトリを覆うかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_crosses">ST_Crosses</a></td>
      <td>ジオメトリが他のジオメトリと交差するかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_dwithin">ST_DWithin</a></td>
      <td>二つのジオメトリが指定された距離内にあるかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_dwithin_spheroid">ST_DWithin_Spheroid</a></td>
      <td>地球の権体モデルを使用して、二つのPOINT_2Dが指定された距離内にあるかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_difference">ST_Difference</a></td>
      <td>二つのジオメトリの差分を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_dimension">ST_Dimension</a></td>
      <td>ジオメトリの次元を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_disjoint">ST_Disjoint</a></td>
      <td>二つのジオメトリが分離しているかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_distance">ST_Distance</a></td>
      <td>二つのジオメトリの距離を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_distance_sphere">ST_Distance_Sphere</a></td>
      <td>二つのジオメトリの<a href="https://gkukan.jp/2024/10/26/%E7%B7%AF%E5%BA%A6%E7%B5%8C%E5%BA%A6%E3%81%8B%E3%82%89%E3%81%AE%E8%B7%9D%E9%9B%A2%E8%A8%88%E7%AE%97%E3%81%AE%E6%96%B9%E6%B3%95/">ハバーサイン距離</a>を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_distance_spheroid">ST_Distance_Spheroid</a></td>
      <td>地球の権体モデルを使用して、二つのジオメトリの距離をメートル単位で返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_dump">ST_Dump</a></td>
      <td>ジオメトリをサブジオメトリとそのパスのリストに分解します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_endpoint">ST_EndPoint</a></td>
      <td>線の最後のポイントを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_envelope">ST_Envelope</a></td>
      <td>入力したジオメトリの最小包含箱をポリゴンとして返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_equals">ST_Equals</a></td>
      <td>二つのジオメトリが等しいかを比較します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_extent">ST_Extent</a></td>
      <td>入力したジオメトリを包む最小BBOXを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_extent_approx">ST_Extent_Approx</a></td>
      <td>ジオメトリの近似BBOXを返します。（この関数は実際は内部でのみ使用され、キャッシュされたジオメトリのBBOXがあればそれを返します。将来的に名前の変更もくしは削除される可能性があります。）</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_exteriorring">ST_ExteriorRing</a></td>
      <td>ポリゴンジオメトリの外部リングを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_flipcoordinates">ST_FlipCoordinates</a></td>
      <td>入力したジオメトリの座標を反転します。(xをyに、yをxに変更)</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_force2d">ST_Force2D</a></td>
      <td>ジオメトリのポイントをX成分とY成分のみにします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_force3dm">ST_Force3DM</a></td>
      <td>ジオメトリのポイントをX成分、Y成分、M成分にします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_force3dz">ST_Force3DZ</a></td>
      <td>ジオメトリのポイントをX成分、Y成分、Z成分にします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_force4d">ST_Force4D</a></td>
      <td>ジオメトリのポイントをX成分、Y成分、Z成分、M成分にします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_geomfromgeojson">ST_GeomFromGeoJSON</a></td>
      <td>GeoJSONフラグメントからジオメトリをデシリアライズします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_geomfromhexewkb">ST_GeomFromHEXEWKB</td>
      <td><a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/inpect-ewkt">HEXEWKB文字列</a>からジオメトリをデシリアライズします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_geomfromhexwkb">ST_GeomFromHEXWKB</a></td>
      <td><a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/inpect-ewkt">HEXWKB文字列</a>からジオメトリを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_geomfromtext">ST_GeomFromText</a></td>
      <td><a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/conv-wkt-geom">WKT文字列</a>からジオメトリをデシリアライズし、無効なジオメトリを無視することができます。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_geomfromwkb">ST_GeomFromWKB</a></td>
      <td><a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/inpect-ewkt">WKBバイナリ</a>からジオメトリをデシリアライズします。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_geometrytype">ST_GeometryType</a></td>
      <td>入力したジオメトリの種類を示す<a href="https://duckdb.org/docs/extensions/spatial/overview.html#the-geometry-type">'GEOMETRY_TYPE'</a>のenumを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_hasm">ST_HasM</a></td>
      <td>入力したジオメトリに<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/geomtypes#m%E5%BA%A7%E6%A8%99">M値</a>があるかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_hasz">ST_HasZ</a></td>
      <td>入力したジオメトリにZ値があるかを確認します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_hilbert">ST_Hilbert</a></td>
      <td>指定したBBOXを覆う<a href="https://ja.wikipedia.org/wiki/%E3%83%92%E3%83%AB%E3%83%99%E3%83%AB%E3%83%88%E6%9B%B2%E7%B7%9A">ヒルベルト曲線</a>のインデックスとしてX値とY値を置換します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_intersection">ST_Intersection</a></td>
      <td>二つのジオメトリの「交集」を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_intersects">ST_Intersects</a></td>
      <td>二つのジオメトリが交わっている場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_intersects_extent">ST_Intersects_Extent</a></td>
      <td>二つのジオメトリの範囲が交わっている場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_isclosed">ST_IsClosed</a></td>
      <td>ジオメトリが「閉じている」場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_isempty">ST_IsEmpty</a></td>
      <td>ジオメトリが「空」の場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_isring">ST_IsRing</a></td>
      <td>入力した線ジオメトリがリングである場合に真を返します。(ST_IsClosedとST_IsSimpleが両方真の場合)</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_issimple">ST_IsSimple</a></td>
      <td>入力したジオメトリが「simple」である場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_isvalid">ST_IsValid</a></td>
      <td>ジオメトリが<a href="https://ja.wikipedia.org/wiki/%E4%BD%8D%E7%9B%B8%E5%B9%BE%E4%BD%95%E5%AD%A6">トポロジー的</a>に「有効」である場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_length">ST_Length</a></td>
      <td>入力した線ジオメトリの長さを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_length_spheroid">ST_Length_Spheroid</a></td>
      <td>地球の権体モデルを使用して、入力したジオメトリの長さをメートル単位で返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_lineinterpolatepoint">ST_LineInterpolatePoint</a></td>
      <td>ラインの全長（2次元）の指定された比率になるような線上の点を補間して返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_lineinterpolatepoints">ST_LineInterpolatePoints</a></td>
      <td>ラインの全長（2次元）の指定された比率になるような線上の点、または点の集合を補間して返します。repeat パラメータが false の場合、結果は単一の点です（これは ST_LineInterpolatePoint 関数の結果と等価です）。
repeat が true の場合（それ以外の場合）、結果は指定された割合（fraction）の間隔で点が繰り返し配置されたマルチポイントになります。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_linemerge">ST_LineMerge</a></td>
      <td>入力した線ジオメトリを「結合」し、選択的に方向を考慮します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_linestring2dfromwkb">ST_LineString2DFromWKB</a></td>
      <td>WKBエンコードされたBLOBを、LINESTRING_2Dジオメトリに変換（デシリアライズ）します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_linesubstring">ST_LineSubstring</a></td>
      <td>ラインの全長（2次元）における、開始割合から終了割合までの区間に相当する、線の一部を切り出して返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_m">ST_M</a></td>
      <td>ポイントジオメトリの<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/geomtypes#m%E5%BA%A7%E6%A8%99">M値</a>を返します。(ポイントでない場合や空の場合はNULL)</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_mmax">ST_MMax</a></td>
      <td>ジオメトリの最大<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/geomtypes#m%E5%BA%A7%E6%A8%99">M値</a>を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_mmin">ST_MMin</a></td>
      <td>ジオメトリの最小<a href="https://zenn.dev/boiledorange73/books/caea8d4c77dbba2e23a0/viewer/geomtypes#m%E5%BA%A7%E6%A8%99">M値</a>を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_makeenvelope">ST_MakeEnvelope</a></td>
      <td>入力したジオメトリを包む最小のBBOXポリゴンを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_makeline">ST_MakeLine</a></td>
      <td>入力したポイントのペアまたはリストからLINESTRINGジオメトリを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_makepolygon">ST_MakePolygon</a></td>
      <td>シェルジオメトリと選択的なホールのセットからポリゴンを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_makevalid">ST_MakeValid</a></td>
      <td>無効なジオメトリを無効なポイントを削除せずに有効にするよう試みます。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_maximuminscribedcircle">ST_MaximumInscribedCircle</a></td>
      <td>入力ジオメトリの最大内接円を、オプションで許容誤差（トレランス）を指定して返します。デフォルトでは、許容誤差は max(幅, 高さ) / 1000 として計算されます。戻り値は円の中心、ジオメトリの境界線上で、円の中心に最も近い点、円の半径を含む構造体です。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_minimumrotatedrectangle">ST_MinimumRotatedRectangle
</a></td>
      <td>ST_Envelope() のように最小・最大の座標値から矩形を求めるのではなく、回転した矩形を用いることで面積が最小となるように入力ジオメトリを囲む、最小回転矩形を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_multi">ST_Multi</a></td>
      <td>単一のジオメトリをマルチジオメトリに変換します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_ngeometries">ST_NGeometries</a></td>
      <td>コレクションジオメトリに含まれるコンポーネントジオメトリの数を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_ninteriorrings">ST_NInteriorRings</a></td>
      <td>ポリゴンの内部リングの数を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_npoints">ST_NPoints</a></td>
      <td>ジオメトリ内の項点の数を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_node">ST_Node</a></td>
      <td>入力された複数のラインストリングを結合し、それらが交差する箇所に頂点を追加（=ノード化）して得られる、「ノード化された」マルチラインストリングを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_normalize">ST_Normalize</a></td>
      <td>ジオメトリの「正規化された」表現を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_numgeometries">ST_NumGeometries</a></td>
      <td>ジオメトリコレクションに含まれる構成要素ジオメトリの数を返します。
入力ジオメトリがコレクションでない場合、この関数は、そのジオメトリが空であれば0を、空でなければ1を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_numinteriorrings">ST_NumInteriorRings</a></td>
      <td>ポリゴンの内部リングの数を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_numpoints">ST_NumPoints</a></td>
      <td>ジオメトリ内の項点の数を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_overlaps">ST_Overlaps</a></td>
      <td>入力したジオメトリが別のジオメトリと「重なり合う」場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_perimeter">ST_Perimeter</a></td>
      <td>ジオメトリの周囲の長さを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_perimeter_spheroid">ST_Perimeter_Spheroid</a></td>
      <td>地球の権体モデルを使用して、周囲の長さをメートル単位で返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_point">ST_Point</a></td>
      <td>ジオメトリのポイントを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_point2d">ST_Point2D</a></td>
      <td>POINT_2Dを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_point2dfromwkb">ST_Point2DFromWKB</a></td>
      <td>WKB形式でエンコードされたBLOB（バイナリデータ）から、2次元ポイントジオメトリをデシリアライズ（復元）します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_point3d">ST_Point3D</a></td>
      <td>POINT_3Dを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_point4d">ST_Point4D</a></td>
      <td>POINT_4Dを作成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_pointn">ST_PointN</a></td>
      <td>入力したジオメトリのN番目の項点をポイントジオメトリとして返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_pointonsurface">ST_PointOnSurface</a></td>
      <td>入力したジオメトリの表面上にあることが保証されたポイントを返します。時によって、ST_Centroidの代替として有用です。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_points">ST_Points</a></td>
      <td>ジオメトリ内のすべての項点をマルチポイントとして集めます。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_polygon2dfromwkb">ST_Polygon2DFromWKB</a></td>
      <td>WKB形式でエンコードされたBLOB（バイナリデータ）から、2次元ポリゴンジオメトリをデシリアライズ（復元）します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_polygonize">ST_Polygonize</a></td>
      <td>入力ジオメトリをポリゴン化した表現を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_quadkey">ST_QuadKey</a></td>
      <td>指定した縦緯/縦度のレベルで<a href="https://learn.microsoft.com/ja-jp/azure/azure-maps/zoom-levels-and-tile-grid?tabs=csharp#quadkey-indices" class="externallink" target="_blank">クアッドキー</a>を計算します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_reduceprecision">ST_ReducePrecision</a></td>
      <td>すべての項点を目標の精度まで縮小したジオメトリを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_removerepeatedpoints">ST_RemoveRepeatedPoints</a></td>
      <td>重複したポイントを削除した新しいジオメトリを返します。選択的に目標距離内のポイントを削除できます。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_reverse">ST_Reverse</a></td>
      <td>項点の順序を逆にしたジオメトリを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_shortestline">ST_ShortestLine</a></td>
      <td>入力した二つのジオメトリの最短距離にあるポイントを結ぶ線を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_simplify">ST_Simplify</a></td>
      <td>入力したジオメトリを縦切りが指定の距離より小さい辺を縮小して簡略化します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_simplifypreservetopology">ST_SimplifyPreserveTopology</a></td>
      <td>無効なトポロジーを作ることなく、ジオメトリを簡略化します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_startpoint">ST_StartPoint</a></td>
      <td>線ジオメトリの最初のポイントを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_touches">ST_Touches</a></td>
      <td>入力した二つのジオメトリが「接している」場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_transform">ST_Transform</a></td>
      <td>ジオメトリを二つの座標系の間で変換します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_union">ST_Union</a></td>
      <td>入力した二つのジオメトリの「一般和」を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_voronoidiagram">ST_VoronoiDiagram</a></td>
      <td>入力されたマルチポイントジオメトリのボロノイ図を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_within">ST_Within</a></td>
      <td>入力したジオメトリが別のジオメトリの「内部にある」場合に真を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_x">ST_X</a></td>
      <td>ポイントジオメトリのX値を返します。(ポイントでない場合や空の場合はNULL)</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_xmax">ST_XMax</a></td>
      <td>ジオメトリの最大X値を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_xmin">ST_XMin</a></td>
      <td>ジオメトリの最小X値を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_y">ST_Y</a></td>
      <td>ポイントジオメトリのY値を返します。(ポイントでない場合や空の場合はNULL)</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_ymax">ST_YMax</a></td>
      <td>ジオメトリの最大Y値を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_ymin">ST_YMin</a></td>
      <td>ジオメトリの最小Y値を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_z">ST_Z</a></td>
      <td>ポイントジオメトリのZ値を返します。(ポイントでない場合や空の場合はNULL)</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_zmflag">ST_ZMFlag</a></td>
      <td>入力したジオメトリのZ値とM値の有無を示すフラグを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_zmax">ST_ZMax</a></td>
      <td>ジオメトリの最大Z値を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_zmin">ST_ZMin</a></td>
      <td>ジオメトリの最小Z値を返します。</td>
    </tr>
    </tbody>
</table>

### 集計関数

<table>
  <thead>
    <tr>
      <th>関数</th>
      <th>概要</th>
    </tr>
  </thead>
  
  <tbody>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coverageinvalidedges_agg">ST_CoverageInvalidEdges_Agg</a></td>
      <td>カバレッジジオメトリ（=隙間や重なりのないポリゴン群）における、無効なエッジ（境界線）を返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coveragesimplify_agg">ST_CoverageSimplify_Agg</a></td>
      <td>カバレッジとしての特性（隙間や重なりがない状態）を維持しながら、一連のジオメトリを簡略化します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_coverageunion_agg">ST_CoverageUnion_Agg
</a></td>
      <td>カバレッジとしての特性（隙間や重なりがない状態）を維持しながら、一連のジオメトリを（特定の条件に基づいて）結合します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_envelope_agg">ST_Envelope_Agg</a></td>
      <td>ST_Extent_Agg の別名。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_extent_agg">ST_Extent_Agg</a></td>
      <td>入力ジオメトリの集合を包含する最小のバウンディングボックス（矩形ポリゴン）を計算します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_intersection_agg">ST_Intersection_Agg</a></td>
      <td>ジオメトリの集合の交差部分を計算します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_union_agg">ST_Union_Agg</a></td>
      <td>入力ジオメトリの集合の和（ユニオン）を計算します。</td>
    </tr>
    </tbody>
</table>

### テーブル関数

<table>
  <thead>
    <tr>
      <th>関数</th>
      <th>概要</th>
    </tr>
  </thead>
  
  <tbody>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_drivers">ST_Drivers</a></td>
      <td>サポートされている<a href="https://ja.wikipedia.org/wiki/GDAL">GDAL</a>ドライバとファイル形式のリストを返します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_generatepoints">ST_GeneratePoints</a></td>
      <td>指定されたバウンディングボックス内に、ランダムな点の集合を生成します。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_read">ST_Read</a></td>
      <td><a href="https://ja.wikipedia.org/wiki/GDAL">GDAL</a>ライブラリを使用して、さまざまな地理空間ファイル形式を読み込みます。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_readosm">ST_ReadOSM</a></td>
      <td>圧縮されたOpenStreetMapデータを .osm.pbf ファイルから直接読み込みます。</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org/docs/extensions/spatial/functions#st_read_meta">ST_Read_Meta</a></td>
      <td><a href="https://ja.wikipedia.org/wiki/GDAL">GDAL</a>ライブラリを使用して、さまざまな地理空間ファイル形式のメタデータを読み込みます。</td>
    </tr>
    </tbody>
</table>

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