ST_AsGeoJSON 函数
2018-09-08 10:42 更新
ST_AsGeoJSON 函数
功能:把空间对象输出为JSON字符串
语法:ST_AsGeoJson([version], geometry, [precision], [options])
示例:
SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)');
输出结果:
{"type":"LineString","coordinates":[[1,2,3],[4,5,6]]}
注意上面输出的是字符串,问题来了,如果我们用类似下面的SQL语句:
WITH myTrace AS ( SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)') )SELECT row_to_json(b.*) from myTrace b
输出下面结果(ST_AsGeoJSON输出的字符串的双引号做了转义):
{"geometry":"{\"type\":\"LineString\",\"coordinates\":[[1,2,3],[4,5,6]]}"}
即有时候我希望输出的是json对象,而不是json字符串,我们需要使用类型转换,即如下SQL:
WITH myTrace AS ( SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)')::jsonb as geometry )SELECT row_to_json(b.*) from myTrace b
输出结果:
{"geometry":{"type": "LineString", "coordinates": [[1, 2, 3], [4, 5, 6]]}}
参考文献:http://postgis.net/docs/ST_AsGeoJSON.html
扩展内容:
st_asgeojson只是实现了geojson规范中的geometry部分,没有实现feature部分,这个可以参考(http://postgis.net/docs/manual-2.3/ST_AsGeoJSON.html)
GeoJSON only support SFS 1.1 geometry type...
解决办法可以参考:
另外,若想用含feature的geojson数据生成空间对象和属性字段,可以参考:
以上内容是否对您有帮助:
更多建议: