これは 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最高なので皆さんも使っていきましょう