| 输入 | 输出 | 别名 |
|---|---|---|
| ✔ | ✗ |
说明
FeatureCollection 文档,并为每个要素生成一行。每一行都具有以下固定 schema:
| 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。另外两种 GeoJSON 几何类型 GeometryCollection 和 MultiPoint 无法用 Geometry 类型表示;默认情况下,将其读入 geometry 列时会引发异常,但也可以改为插入 NULL——请参见下方的处理不受支持的几何类型。默认情况下,只有当要素的几何对象是显式的 JSON null 时,geometry 列才为 NULL;在 input_format_geojson_unsupported_geometry_handling = 'null' 下,不受支持的几何类型也会被写为 NULL。
系统会校验文档结构:顶层 type 必须为 FeatureCollection,并且 features 中的每个元素都必须具有 type Feature。坐标必须满足 GeoJSON 的形状约束——LineString (以及 MultiLineString 中的每条线) 必须至少包含两个位置,而 Polygon 的 ring (以及 MultiPolygon 中的每个 ring) 必须闭合且至少包含四个位置。格式不正确的文档会被拒绝,而不会被静默加载。
FeatureCollection 对象中的其他键 (如 name 或 crs) 以及每个 Feature 对象中的其他键 (如 bbox) 都会被忽略。
键的顺序可以灵活调整:顶层 type 可以出现在 features 数组之前或之后;在几何对象内部,coordinates 也可以出现在 type 之前或之后。
schema inference 会返回上述固定 schema,因此 DESCRIBE 和 SELECT ... FROM format(...) 无需表定义即可使用。
示例用法
london.geojson,其中包含多种几何类型:
Query
Response
.geojson,因此可省略 format 参数:
Query
variantType 查看每个 Geometry 对象的底层类型:
Query
Response
Query
Response
Geometry 子列时,如果该行存储的是该类型,则返回该值;否则返回该类型的默认值——Point 为 (0,0),基于数组的类型为 []——因此请使用 variantType(geometry) 来判断当前设置的是哪种类型。
我们也可以将 GeoJSON 数据摄取到表中:
Query
Query
Response
Query
Response
处理不受支持的几何类型
GeometryCollection 和 MultiPoint — 无法用 ClickHouse 的 Geometry 类型表示。你可以使用 input_format_geojson_unsupported_geometry_handling 设置,控制当这类几何对象必须存储到 geometry 列中时应如何处理。可能的值为:
'throw'— 抛出异常 (默认)'null'— 为geometry列插入NULL值并继续解析
geometry 列时适用。当 geometry 不是请求输出的列时 (例如 SELECT id FROM ...) ,不受支持的几何对象仍会验证其格式是否正确,但不会触发该处理方式——既不会抛出异常,也不会插入 NULL,因为不会将任何几何值 materialize。