ST_GeomFromGeoJSON
将标准格式的 GeoJSON 记录的几何图形部分转换为 GEOMETRY 对象。当您提供 GeoJSON 功能或 FeatureCollection 对象时,此函数会返回错误。
行为类型
不可变语法
ST_GeomFromGeoJSON( geojson [, srid] [ USING PARAMETERS param=value[,...] ] );
参数
- geojson
- 包含 GeoJSON GEOMETRY 对象的字符串,类型为 LONG VARCHAR。
Vertica 接受以下 GeoJSON 键值:
-
类型
-
坐标
-
几何形状
其他键值被忽略。
-
- srid
GEOMETRY 对象的空间参照系标识符 (SRID),类型为 INTEGER。
SRID 将存储在 GEOMETRY 对象中,但不影响空间计算的结果。
该实参在不执行操作时是可选的。
参数
ignore_3d
- (可选)布尔值,是从返回的 GEOMETRY 对象中静默移除 3D 和更高维数据还是返回错误,取决于以下值:
-
true:从返回的 GEOMETRY 对象中移除 3D 和更高维数据。
-
false(默认值):当 GeoJSON 包含 3D 或更高维数据时返回错误。
-
ignore_errors
- (可选)布尔值,是忽略无效 GeoJSON 对象上的错误还是返回错误,取决于以下值:
-
true:在 GeoJSON 解析期间忽略错误并返回 NULL。
-
false(默认值):如果 GeoJSON 解析失败,则返回错误。
注意
ignore_errors
设置优先于ignore_3d
设置。例如,如果ignore_errors
设置为 true 并且ignore_3d
设置为 false,如果 GeoJSON 对象包含 3D 和更高维数据,则该函数返回 NULL。 -
返回
GEOMETRY
支持的数据类型
-
Point
-
Multipoint
-
Linestring
-
Multilinestring
-
Polygon
-
Multipolygon
-
GeometryCollection
示例
以下示例显示了如何使用 ST_GeomFromGeoJSON。
验证单个记录
以下示例使用 ST_IsValid 验证 ST_GeomFromGeoJSON 语句。该语句包含 SRID 4326 以指示点数据类型表示纬度和经度坐标,并将 ignore_3d
设置为 true 以忽略表示高度的最后一个值:
=> SELECT ST_IsValid(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[35.3606, 138.7274, 29032]}', 4326 USING PARAMETERS ignore_3d=true));
ST_IsValid
------------
t
(1 row)
将数据加载到表中
以下示例处理来自 STDIN 的 GeoJSON 类型并将它们存储在 GEOMETRY 数据类型表列中:
-
创建一个名为 polygons 的表,用于存储 GEOMETRY 空间类型:
=> CREATE TABLE polygons(geom GEOMETRY(1000)); CREATE TABLE
-
使用 COPY 从 STDIN 读取支持的 GEOMETRY 数据类型并将它们存储在名为 geom 的对象中:
=> COPY polygons(geojson filler VARCHAR(1000), geom as ST_GeomFromGeoJSON(geojson)) FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> { "type": "Polygon", "coordinates": [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ] } >> { "type": "Point", "coordinates": [1, 2] } >> { "type": "Polygon", "coordinates": [ [ [1, 3], [3, 2], [1, 1], [3, 0], [1, 0], [1, 3] ] ] } >> \.
-
查询 polygons 表。下面的示例使用 ST_AsText 返回 geom 对象的 熟知文本 (WKT) 表示形式,并且使用 ST_IsValid 来验证每个对象:
=> SELECT ST_AsText(geom), ST_IsValid(geom) FROM polygons; ST_AsText | ST_IsValid -----------------------------------------------+------------ POINT (1 2) | t POLYGON ((1 3, 3 2, 1 1, 3 0, 1 0, 1 3)) | f POLYGON ((100 0, 101 0, 101 1, 100 1, 100 0)) | t (3 rows)