GeoJSON规格展,
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}但当我调用ST_GeomFromGeoJSON时,就像这样,
SELECT ST_GeomFromGeoJSON(${
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}$);我知道错误了,
错误:无效的GeoJson表示
发布于 2019-01-19 21:15:10
从ST_GeomFromGeoJSON上的文档
ST_GeomFromGeoJSON只适用于JSON几何学片段。如果尝试在整个JSON文档上使用它,则会引发错误。
这意味着您将只想从GeoJSON文档中的几何图形中删除值,
SELECT ST_AsText(geom)
FROM ST_GeomFromGeoJSON(${
"type": "Point",
"coordinates": [125.6, 10.1]
}$) AS geom;
st_astext
-------------------
POINT(125.6 10.1)ST_GeomFromGeoJSON与ST_AsGeoJSON相反(只生成GeoJSON文档的geometry部分)。
发布于 2021-04-02 11:04:58
现代PostgreSQL + PostGIS接受JSONB,这是这项工作的最佳数据类型。
WITH json_load AS (
SELECT ${
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}$::JSONB j
)
SELECT
j->>'type' AS type,
ST_GeomFromGeoJSON(j->'geometry') geom,
j->'properties' AS props,
(j->geometry->coordinates->1)::real AS longitude
FROM json_load;您只需要geom列,所有其他列都说明了JSONb表达式的丰富性,以及如何方便地转换为文本数据类型、真实的等等。
请注意。在服务器端,在json_load部件中,可以使用pg_read_file('/tmp/myFile.geojson')::jsonb读取文件.以前使用类似于chmod 666 /tmp/myFile.geojson的东西。几何的GeoJSON排序可以用jsonb_array_elements函数来实现。
https://dba.stackexchange.com/questions/227580
复制相似问题