Com o PostGIS 3.0, agora é possível gerar recursos diretamente com GeoJSON, sem nenhum código intermediário, usando a nova função ST_AsGeoJSON (record).
O GeoJSON é um formato de transporte comum, entre servidores e clientes da web, e até mesmo entre componentes de cadeias de processamento. Ser capaz de criar um GeoJSON é importante para integrar diferentes partes em um aplicativo de geoprocessamento moderno.
O PostGIS tem uma função chamada ST_AsGeoJSON(geometry), porém faz um pouco menos do que a maioria dos usuários realmente precisa: ele utiliza uma geometria PostGIS e gera um GeoJSON “geometry object”, ou seja, um arquivo contendo apenas as geometrias, sem os atributos.
O objeto de geometria GeoJSON é apenas a forma do recurso, ele não inclui nenhuma outra informação sobre o recurso que possa estar incluída na tabela ou na consulta. Como resultado, os desenvolvedores gastaram muito tempo escrevendo código para agrupar os resultados das ST_AsGeoJSON(geometry) com as colunas de uma tupla de resultado para criar “objetos de recurso” do GeoJSON.
A função ST_AsGeoJSON(record) examina a tupla de entrada e pega primeiro a coluna do tipo geometria para converter em uma geometria GeoJSON. O restante das colunas é adicionado a Feature GeoJSON no properties. Veja:
SELECT ST_AsGeoJSON(subq.*) AS geojson FROM ( SELECT ST_Centroid(geom), type, admin FROM countries WHERE name = 'Canada' ) AS subq
{"type": "Feature", "geometry": { "type":"Point", "coordinates":[-98.2939042718784,61.3764628013483] }, "properties": { "type": "Sovereign country", "admin": "Canada" } }
Usando esta nova função GeoJSON, é fácil transmitir recursos diretamente do banco de dados para um mapa da Web com OpenLayers ou Leaflet, ou até mesmo consumi-los com ogr2ogr para conversão em outros formatos geoespaciais.
Fonte: Clever Elephant Blog