Name

ST_AsGeoJSON — Rückgabe einer Geometrie oder eines Merkmals im 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);

Beschreibung

Gibt eine Geometrie als GeoJSON "geometry"-Objekt oder eine Zeile als GeoJSON "feature"-Objekt zurück.

Die resultierenden GeoJSON-Geometrie- und Merkmalsdarstellungen entsprechen den GeoJSON-Spezifikationen RFC 7946, außer wenn die geparsten Geometrien mit einem anderen CRS als WGS84-Längen- und Breitengrad referenziert sind (EPSG:4326, urn:ogc:def:crs:OGC::CRS84); dem GeoJSON-Geometrieobjekt wird dann standardmäßig ein kurzer CRS-SRID-Bezeichner beigefügt. Es werden sowohl 2D- als auch 3D-Geometrien unterstützt. GeoJSON unterstützt nur SFS 1.1 Geometrietypen (z.B. keine Unterstützung für Kurven).

Der Parameter geom_column wird verwendet, um zwischen mehreren Geometriespalten zu unterscheiden. Wird er weggelassen, wird die erste Geometriespalte im Datensatz ermittelt. Umgekehrt erspart die Übergabe des Parameters die Suche nach dem Spaltentyp.

Der Parameter maxdecimaldigits kann zur Reduzierung der Nachkommastellen in der Ausgabe verwendet werden (standardmäßig 9). Wenn EPSG:4326 verwendet wird, kann maxdecimaldigits=6 eine gute Wahl für viele Karten bei der Bildschirmausgabe sein.

[Warning]

Die Verwendung des Parameters maxdecimaldigits kann dazu führen, dass die Ausgabegeometrie ungültig wird. Um dies zu vermeiden, verwenden Sie zuerst ST_ReducePrecision mit einer geeigneten Rastergröße.

Das Argument options kann verwendet werden, um BBOX oder CRS in der GeoJSON-Ausgabe hinzuzufügen:

  • 0: keine option

  • 1: GeoJSON BBOX

  • 2: GeoJSON CRS-Kurzform (z.B. EPSG:4326)

  • 4: GeoJSON CRS-Langform (z.B. urn:ogc:def:crs:EPSG::4326)

  • 8: GeoJSON CRS-Kurzform, außer bei EPSG:4326 (default)

Der Parameter id_column wird verwendet, um das Element "id" der zurückgegebenen GeoJSON-Features festzulegen. Gemäß GeoJSON RFC SOLLTE dies immer dann verwendet werden, wenn ein Feature einen häufig verwendeten Bezeichner hat, wie z.B. einen Primärschlüssel. Wenn dies nicht angegeben wird, erhalten die erzeugten Features kein "id"-Mitglied und alle anderen Spalten als die Geometrie, einschließlich potenzieller Schlüssel, landen einfach im "properties"-Mitglied des Features.

In der GeoJSON-Spezifikation ist festgelegt, dass Polygone nach der Rechts-Regel ausgerichtet werden, und einige Clients verlangen diese Ausrichtung. Dies kann durch die Verwendung von ST_ForcePolygonCCW sichergestellt werden. Die Spezifikation verlangt auch, dass die Geometrie im WGS84-Koordinatensystem (SRID = 4326) vorliegt. Bei Bedarf kann die Geometrie mit ST_Transform in WGS84 projiziert werden: ST_Transform( geom, 4326 ).

GeoJSON kann online getestet und angesehen werden unter geojson.io und geojsonlint.com. Es wird von vielen Web-Mapping-Frameworks unterstützt:

Verfügbarkeit: 1.3.4

Verfügbarkeit: 1.5.0 Unterstützung von geograpischen Koordinaten.

Änderung: 2.0.0 Unterstützung für Standardargumente und benannte Argumente.

Änderung: 3.0.0 Unterstützung von Datensätzen bei der Eingabe

Änderung: 3.0.0 Ausgabe der SRID wenn nicht EPSG:4326

Geändert: 3.5.0 erlaubt die Angabe der Spalte, die die Feature-ID enthält

Diese Funktion unterstützt 3d und lässt den Z-Index nicht fallen.

Beispiele

Erzeugen Sie eine 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"}}]}

Erzeugen Sie ein Feature:

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"}}

Vergessen Sie nicht, Ihre Daten in WGS84 Längen- und Breitengrade umzuwandeln, um der GeoJSON-Spezifikation zu entsprechen:

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]]]}

3D-Geometrien werden unterstützt:

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

Das Argument options kann verwendet werden, um BBOX oder CRS in der GeoJSON-Ausgabe hinzuzufügen:

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]}