codecamp

ST_AsGeoJSON 函数

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...

解决办法可以参考:

http://gis.stackexchange.com/questions/112057/sql-query-to-have-a-complete-geojson-feature-from-postgis

另外,若想用含feature的geojson数据生成空间对象和属性字段,可以参考:

http://gis.stackexchange.com/questions/142391/store-a-geojson-featurecollection-to-postgres-with-postgis

ST_GeomFromText 方法
ST_Centroid(geometry) 函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Oracle数据库.

MySQL数据库

Access数据库

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }