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.
When the input record includes duplicate column names, the resulting "properties" object will contain repeated keys. ST_AsGeoJSON raises a warning in that case because PostgreSQL jsonb keeps only the last value for duplicate keys.
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
Changed: 3.7.0 added warning about duplicate keys
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]}