ST_AsGeoJSON 函數(shù)

2018-09-08 10:42 更新

ST_AsGeoJSON 函數(shù)

功能:把空間對(duì)象輸出為JSON字符串

語(yǔ)法:ST_AsGeoJson([version], geometry, [precision], [options])

示例:

SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)');

輸出結(jié)果:
{"type":"LineString","coordinates":[[1,2,3],[4,5,6]]}

注意上面輸出的是字符串,問(wèn)題來(lái)了,如果我們用類似下面的SQL語(yǔ)句:

WITH myTrace AS ( SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)') )SELECT row_to_json(b.*) from myTrace b

輸出下面結(jié)果(ST_AsGeoJSON輸出的字符串的雙引號(hào)做了轉(zhuǎn)義):
{"geometry":"{\"type\":\"LineString\",\"coordinates\":[[1,2,3],[4,5,6]]}"}

即有時(shí)候我希望輸出的是json對(duì)象,而不是json字符串,我們需要使用類型轉(zhuǎn)換,即如下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

輸出結(jié)果:
{"geometry":{"type": "LineString", "coordinates": [[1, 2, 3], [4, 5, 6]]}}

參考文獻(xiàn):http://postgis.net/docs/ST_AsGeoJSON.html

擴(kuò)展內(nèi)容:

st_asgeojson只是實(shí)現(xiàn)了geojson規(guī)范中的geometry部分,沒(méi)有實(shí)現(xiàn)feature部分,這個(gè)可以參考(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數(shù)據(jù)生成空間對(duì)象和屬性字段,可以參考:

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

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)