Skip to main content

説明

GeoJSONFeatureCollection ドキュメントを読み取り、地物 ごとに 1 行を生成します。各行のスキーマは次の固定スキーマです。 各ジオメトリは ClickHouse の Geometry 型 (Variant) に格納されます。サポートされる GeoJSON ジオメトリ型は PointLineStringMultiLineStringPolygonMultiPolygon です。これ以外の 2 つの GeoJSON ジオメトリ型である GeometryCollectionMultiPointGeometry 型では表現できません。これらを geometry カラムに読み込むと、既定では例外が発生しますが、代わりに NULL を挿入 するように変更することもできます。詳しくは下記の サポートされないジオメトリ型の処理 を参照してください。既定では、geometry カラムが NULL になるのは、地物 のジオメトリが明示的な JSON null の場合だけです。input_format_geojson_unsupported_geometry_handling = 'null' を指定すると、サポートされないジオメトリ型の場合も NULL になります。 ドキュメントの構造は検証されます。最上位の typeFeatureCollection でなければならず、features の各要素は typeFeature でなければなりません。座標は GeoJSON の shape に関する不変条件を満たす必要があります。LineString (および MultiLineString の各 line) は少なくとも 2 つの位置を持たなければならず、Polygon の ring (および MultiPolygon の各 ring) は閉じていて、少なくとも 4 つの位置を持たなければなりません。不正な形式のドキュメントは黙って読み込まれることはなく、拒否されます。 FeatureCollection オブジェクト内の他のキー (namecrs など) や、各 Feature オブジェクト内の他のキー (bbox など) は無視されます。 キーの順序は柔軟です。最上位の typefeatures 配列の前でも後でもよく、ジオメトリオブジェクト内でも coordinatestype の前でも後でもかまいません。 スキーマ推論では上記の固定スキーマが返されるため、テーブル定義がなくても DESCRIBESELECT ... FROM format(...) を使用できます。

使用例

複数のジオメトリ型が含まれる、次の GeoJSON ファイル london.geojson を例にします。
ファイルに対してクエリを実行し、ジオメトリ型を確認できます。
Query
Response
ファイル拡張子 .geojson は自動的に検出されるため、フォーマット引数は省略できます。
Query
各 Geometry object の基になる型は、variantType で確認できます:
Query
Response
基になるデータは次のように抽出できます:
Query
Response
Geometry のサブカラムにアクセスすると、その行にその型の値が入っている場合はその値が返され、そうでない場合はその型のデフォルト値 — Point では (0,0)、配列ベースの型では [] — が返されます。どの型が設定されているかを判別するには、variantType(geometry) を使用します。 GeoJSON データをテーブルに取り込むこともできます。
Query
次に、地物タイプでクエリを実行します:
Query
Response
テーブル定義がなくても、GeoJSONデータのスキーマを推論できます。
Query
Response

サポートされていないジオメトリ型の処理

GeometryCollectionMultiPoint など、一部の有効な GeoJSON ジオメトリ型は、ClickHouse の Geometry 型では表現できません。そのようなジオメトリを geometry カラムに格納する必要がある場合の動作は、input_format_geojson_unsupported_geometry_handling 設定で制御できます。設定可能な値は次のとおりです。
  • 'throw' — 例外をスローする (デフォルト)
  • 'null'geometry カラムに NULL 値を挿入し、パースを続行する
この処理が適用されるのは、geometry カラムが読み取られる場合に限られます。geometry が要求された出力カラムに含まれていない場合 (たとえば SELECT id FROM ...) 、サポートされていないジオメトリであっても形式が正しいかどうかの検証は行われますが、この処理はトリガーされません。つまり、ジオメトリ値は実体化されないため、例外はスローされず、NULL も挿入されません。
Last modified on June 25, 2026