Name

ST_AsGeoJSON — Returnerar en geometri eller funktion i GeoJSON-format.

Synopsis

text ST_AsGeoJSON(record feature, text geom_column="", integer maxdecimaldigits=9, boolean pretty_bool=false, text id_column='');

text ST_AsGeoJSON(geometry geom, integer maxdecimaldigits=9, integer options=8);

text ST_AsGeoJSON(geography geog, integer maxdecimaldigits=9, integer options=0);

Beskrivning

Returnerar en geometri som ett GeoJSON "geometry"-objekt eller en rad som ett GeoJSON "feature"-objekt.

De resulterande GeoJSON-geometri- och funktionsrepresentationerna överensstämmer med GeoJSON-specifikationerna RFC 7946, utom när de analyserade geometrierna refereras med en annan CRS än WGS84-longitud och latitud(EPSG:4326, urn:ogc:def:crs:OGC::CRS84); GeoJSON-geometriobjektet kommer då att ha en kort CRS SRID-identifierare bifogad som standard. både 2D- och 3D-geometrier stöds. GeoJSON stöder endast SFS 1.1 geometrityper (inget stöd för kurvor t.ex.).

Parametern geom_column används för att skilja mellan flera geometrikolumner. Om den utelämnas kommer den första geometrikolumnen i posten att bestämmas. Omvänt sparar man kolumntypssökningar om man skickar parametern.

Argumentet maxdecimaldigits kan användas för att minska det maximala antalet decimaler som används i utdata (standard är 9). Om du använder EPSG:4326 och endast matar ut geometrin för visning, kan maxdecimaldigits=6 vara ett bra val för många kartor.

[Warning]

Om parametern maxdecimaldigits används kan det leda till att utdatageometrin blir ogiltig. Undvik detta genom att först använda ST_ReducePrecision med en lämplig gridstorlek.

Argumentet options kan användas för att lägga till BBOX eller CRS i GeoJSON-utdata:

  • 0: innebär inget alternativ

  • 1: GeoJSON BBOX

  • 2: GeoJSON Short CRS (t.ex. EPSG:4326)

  • 4: GeoJSON Long CRS (t.ex. urn:ogc:def:crs:EPSG::4326)

  • 8: GeoJSON Short CRS om inte EPSG:4326 (standard)

Parametern id_column används för att ställa in medlemmen "id" i de returnerade GeoJSON-funktionerna. Enligt GeoJSON RFC BÖR detta användas när en funktion har en allmänt använd identifierare, t.ex. en primärnyckel. Om den inte anges kommer de producerade funktionerna inte att få någon "id"-medlem och alla andra kolumner än geometrin, inklusive eventuella nycklar, kommer bara att hamna i funktionens "properties"-medlem.

GeoJSON-specifikationen anger att polygoner orienteras med hjälp av högerhandsregeln, och vissa klienter kräver denna orientering. Detta kan säkerställas genom att använda ST_ForcePolygonCCW . Specifikationen kräver också att geometrin är i WGS84-koordinatsystemet (SRID = 4326). Om nödvändigt kan geometrin projiceras till WGS84 med hjälp av ST_Transform: ST_Transform( geom, 4326 ).

GeoJSON kan testas och ses online på geojson.io och geojsonlint.com. Det stöds i stor utsträckning av ramverk för webbkartläggning:

Tillgänglighet: 1.3.4

Tillgänglighet: 1.5.0 stöd för geografi infördes.

Ändrad: 2.0.0 stödjer standard args och namngivna args.

Ändrat: 3.0.0 stödjer poster som indata

Ändrat: 3.0.0 mata ut SRID om inte EPSG:4326.

Ändrad: 3.5.0 gör det möjligt att ange kolumnen som innehåller funktionens id

Denna funktion stöder 3d och kommer inte att tappa z-index.

Exempel

Generera en FeatureCollection:

SELECT json_build_object(
    'type', 'FeatureCollection',
    'features', json_agg(ST_AsGeoJSON(t.*, id_column =
> 'id')::json)
    )
FROM ( VALUES (1, 'one', 'POINT(1 1)'::geometry),
              (2, 'two', 'POINT(2 2)'),
              (3, 'three', 'POINT(3 3)')
     ) as t(id, name, geom);
{"type" : "FeatureCollection", "features" : [{"type": "Feature", "geometry": {"type":"Point","coordinates":[1,1]}, "id": 1, "properties": {"name": "one"}}, {"type": "Feature", "geometry": {"type":"Point","coordinates":[2,2]}, "id": 2, "properties": {"name": "two"}}, {"type": "Feature", "geometry": {"type":"Point","coordinates":[3,3]}, "id": 3, "properties": {"name": "three"}}]}

Skapa en funktion:

SELECT ST_AsGeoJSON(t.*, id_column =
> 'id')
FROM (VALUES (1, 'one', 'POINT(1 1)'::geometry)) AS t(id, name, geom);
st_asgeojson
-----------------------------------------------------------------------------------------------------------------
 {"type": "Feature", "geometry": {"type":"Point","coordinates":[1,1]}, "id": 1, "properties": {"name": "one"}}

Glöm inte att omvandla dina data till WGS84-longitud, latitud för att överensstämma med GeoJSON-specifikationen:

SELECT ST_AsGeoJSON(ST_Transform(geom,4326)) from fe_edges limit 1;
st_asgeojson
-----------------------------------------------------------------------------------------------------------

{"type":"MultiLineString","coordinates":[[[-89.734634999999997,31.492072000000000],
[-89.734955999999997,31.492237999999997]]]}

stöd för 3D-geometrier:

SELECT ST_AsGeoJSON('LINESTRING(1 2 3, 4 5 6)');
{"type":"LineString","coordinates":[[1,2,3],[4,5,6]]}

Options-argumentet kan användas för att lägga till BBOX och CRS i GeoJSON-utdata:

SELECT ST_AsGeoJSON(ST_SetSRID('POINT(1 1)'::geometry, 4326), 9, 4|1);
{"type":"Point","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::4326"}},"bbox":[1.000000000,1.000000000,1.000000000,1.000000000],"coordinates":[1,1]}