| 入力 | 出力 | エイリアス |
|---|---|---|
| ✔ | ✗ |
説明
FeatureCollection ドキュメントを読み取り、地物 ごとに 1 行を生成します。各行のスキーマは次の固定スキーマです。
| Column | Type | Description |
|---|---|---|
id | String | 地物 の id メンバー (JSON 文字列または数値) です。テキストとして格納され、id が存在しないか null の場合は空文字列になります。 |
geometry | Geometry | 地物 のジオメトリです。Geometry の Variant 型として格納されます。 |
properties | Nullable(JSON) | 地物 の properties オブジェクトです。半構造化 JSON カラムとして格納されます。明示的な "properties": null は NULL として保持されます。 |
Geometry 型 (Variant) に格納されます。サポートされる GeoJSON ジオメトリ型は Point、LineString、MultiLineString、Polygon、MultiPolygon です。これ以外の 2 つの GeoJSON ジオメトリ型である GeometryCollection と MultiPoint は Geometry 型では表現できません。これらを geometry カラムに読み込むと、既定では例外が発生しますが、代わりに NULL を挿入 するように変更することもできます。詳しくは下記の サポートされないジオメトリ型の処理 を参照してください。既定では、geometry カラムが NULL になるのは、地物 のジオメトリが明示的な JSON null の場合だけです。input_format_geojson_unsupported_geometry_handling = 'null' を指定すると、サポートされないジオメトリ型の場合も NULL になります。
ドキュメントの構造は検証されます。最上位の type は FeatureCollection でなければならず、features の各要素は type が Feature でなければなりません。座標は GeoJSON の shape に関する不変条件を満たす必要があります。LineString (および MultiLineString の各 line) は少なくとも 2 つの位置を持たなければならず、Polygon の ring (および MultiPolygon の各 ring) は閉じていて、少なくとも 4 つの位置を持たなければなりません。不正な形式のドキュメントは黙って読み込まれることはなく、拒否されます。
FeatureCollection オブジェクト内の他のキー (name や crs など) や、各 Feature オブジェクト内の他のキー (bbox など) は無視されます。
キーの順序は柔軟です。最上位の type は features 配列の前でも後でもよく、ジオメトリオブジェクト内でも coordinates は type の前でも後でもかまいません。
スキーマ推論では上記の固定スキーマが返されるため、テーブル定義がなくても DESCRIBE や SELECT ... FROM format(...) を使用できます。
使用例
london.geojson を例にします。
Query
Response
.geojson は自動的に検出されるため、フォーマット引数は省略できます。
Query
variantType で確認できます:
Query
Response
Query
Response
Geometry のサブカラムにアクセスすると、その行にその型の値が入っている場合はその値が返され、そうでない場合はその型のデフォルト値 — Point では (0,0)、配列ベースの型では [] — が返されます。どの型が設定されているかを判別するには、variantType(geometry) を使用します。
GeoJSON データをテーブルに取り込むこともできます。
Query
Query
Response
Query
Response
サポートされていないジオメトリ型の処理
GeometryCollection や MultiPoint など、一部の有効な GeoJSON ジオメトリ型は、ClickHouse の Geometry 型では表現できません。そのようなジオメトリを geometry カラムに格納する必要がある場合の動作は、input_format_geojson_unsupported_geometry_handling 設定で制御できます。設定可能な値は次のとおりです。
'throw'— 例外をスローする (デフォルト)'null'—geometryカラムにNULL値を挿入し、パースを続行する
geometry カラムが読み取られる場合に限られます。geometry が要求された出力カラムに含まれていない場合 (たとえば SELECT id FROM ...) 、サポートされていないジオメトリであっても形式が正しいかどうかの検証は行われますが、この処理はトリガーされません。つまり、ジオメトリ値は実体化されないため、例外はスローされず、NULL も挿入されません。