假设有一个PostgreSQL 9.4 jsonb列'location',其内容如下:
{"type": "FeatureCollection","features": [
{
"properties": {},
"geom": "01030000000100000004000000000000000000244000000000000049400000000000002840000000000000494000000000000026400000000000004A4000000000000024400000000000004940",
"type": "Feature",
"geometry": {"type": "Polygon", "coordinates": [[[10,50],[12,50],[11,52],[10,50]]]}
},
{..},
{..}
]}
为了检索特征键“geom”,我使用以下查询:
SELECT geom
FROM (
SELECT jsonb_array_elements(t.location -> 'features') -> 'geom' AS geom
FROM my_object t) AS g
WHERE geom IS NOT NULL;
可以工作。但现在我想执行一个Postgis的ST_Intersects
查询,如下:
SELECT ST_Intersects(g.geom, ST_GeomFromText('POINT(11 51)'))
FROM (
SELECT t.iid, (jsonb_array_elements(t.location -> 'features') -> 'geom') AS geom
FROM my_object t) AS g;
无法工作,因为g.geom以jsonb
形式传递:function st_intersects(jsonb, geometry) does not exist
。我试着将其转换为text
,然后出现错误:function st_intersects(text, geometry) is not unique
。我该如何处理将jsonb
结果作为Postgis函数输入的情况?