ST_AsGeoJSON — Rückgabe einer Geometrie oder eines Merkmals im GeoJSON-Format.
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)
;
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.
Die Verwendung des Parameters |
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.
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]}