--- /dev/null
+/**********************************************************************
+ * $Id:$
+ *
+ * PostGIS - Spatial Types for PostgreSQL
+ * http://postgis.refractions.net
+ * Copyright 2001-2003 Refractions Research Inc.
+ *
+ * This is free software; you can redistribute and/or modify it under
+ * the terms of hte GNU General Public Licence. See the COPYING file.
+ *
+ **********************************************************************
+ *
+ * GeoJSON output routines.
+ * Originally written by Olivier Courtin (Camptocamp)
+ *
+ **********************************************************************/
+
+#include "postgres.h"
+#include "executor/spi.h"
+
+#include "lwgeom_pg.h"
+#include "liblwgeom.h"
+
+Datum LWGEOM_asGeoJson(PG_FUNCTION_ARGS);
+
+char *geometry_to_geojson(uchar *srl, char *srs, bool has_bbox, int precision);
+
+static char *asgeojson_point(LWPOINT *point, char *srs, BOX3D *bbox, int precision);
+static char *asgeojson_line(LWLINE *line, char *srs, BOX3D *bbox, int precision);
+static char *asgeojson_poly(LWPOLY *poly, char *srs, BOX3D *bbox, int precision);
+static char * asgeojson_multipoint(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision);
+static char * asgeojson_multiline(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision);
+static char * asgeojson_multipolygon(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision);
+static char * asgeojson_collection(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision);
+static size_t asgeojson_inspected_size(LWGEOM_INSPECTED *insp, BOX3D *bbox, int precision);
+static size_t asgeojson_inspected_buf(LWGEOM_INSPECTED *insp, char *output, BOX3D *bbox, int precision);
+
+static size_t pointArray_to_geojson(POINTARRAY *pa, char *buf, int precision);
+static size_t pointArray_geojson_size(POINTARRAY *pa, int precision);
+static char *getSRSbySRID(int SRID);
+
+
+#define SHOW_DIGS_DOUBLE 15
+#define MAX_DOUBLE_PRECISION 15
+#define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 2) /* +2 mean add dot and sign */
+
+
+/**
+ * Encode Feature in GeoJson
+ */
+PG_FUNCTION_INFO_V1(LWGEOM_asGeoJson);
+Datum LWGEOM_asGeoJson(PG_FUNCTION_ARGS)
+{
+ PG_LWGEOM *geom;
+ char *geojson;
+ text *result;
+ int SRID;
+ int len;
+ int version;
+ int option = 0;
+ bool has_bbox = 0;
+ int precision=MAX_DOUBLE_PRECISION;
+ char * srs = NULL;
+
+ /* Get the version */
+ version = PG_GETARG_INT32(0);
+ if ( version != 1) {
+ elog(ERROR, "Only GeoJSON 1 is supported");
+ PG_RETURN_NULL();
+ }
+
+ /* Get the geometry */
+ if (PG_ARGISNULL(1) ) PG_RETURN_NULL();
+ geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+
+ /* Retrieve precision if any (default is max) */
+ if (PG_NARGS() >2 && !PG_ARGISNULL(2)) {
+ precision = PG_GETARG_INT32(2);
+ if ( precision > MAX_DOUBLE_PRECISION )
+ precision = MAX_DOUBLE_PRECISION;
+ else if ( precision < 0 ) precision = 0;
+ }
+
+ /* Retrieve output option
+ * 0 = without option (default)
+ * 1 = crs
+ * 2 = bbox
+ * 3 = crs & bbox
+ */
+ if (PG_NARGS() >3 && !PG_ARGISNULL(3))
+ option = PG_GETARG_INT32(3);
+
+ if (option & 1) {
+ SRID = lwgeom_getsrid(SERIALIZED_FORM(geom));
+ if ( SRID != -1 ) {
+ srs = getSRSbySRID(SRID);
+ if (!srs) {
+ elog(ERROR, "SRID %i unknown in spatial_ref_sys table", SRID);
+ PG_RETURN_NULL();
+ }
+ }
+ }
+
+ if (option & 2) has_bbox = 1;
+
+ geojson = geometry_to_geojson(SERIALIZED_FORM(geom), srs, has_bbox, precision);
+ PG_FREE_IF_COPY(geom, 1);
+ if (srs) pfree(srs);
+
+ len = strlen(geojson) + VARHDRSZ;
+ result = palloc(len);
+ SET_VARSIZE(result, len);
+ memcpy(VARDATA(result), geojson, len-VARHDRSZ);
+
+ pfree(geojson);
+
+ PG_RETURN_POINTER(result);
+}
+
+
+
+/*
+ * Takes a GEOMETRY and returns a GeoJson representation
+ */
+char *
+geometry_to_geojson(uchar *geom, char *srs, bool has_bbox, int precision)
+{
+ int type;
+ LWPOINT *point;
+ LWLINE *line;
+ LWPOLY *poly;
+ LWGEOM_INSPECTED *insp;
+ BOX3D * bbox = NULL;
+ char * ret = NULL;
+
+ type = lwgeom_getType(geom[0]);
+
+ if (has_bbox) {
+ if (lwgeom_hasBBOX(geom[0]) && !TYPE_HASZ(geom[0])) {
+ /* Use 2D Bbox cache if any */
+ BOX2DFLOAT4 * box2d;
+ box2d = lwalloc(sizeof(BOX2DFLOAT4));
+ memcpy(box2d, geom + 1, sizeof(BOX2DFLOAT4));
+ bbox = lwalloc(sizeof(BOX3D));
+ box2df_to_box3d_p(box2d, bbox);
+ lwfree(box2d);
+ } else bbox = compute_serialized_box3d(geom);
+ }
+
+ switch (type)
+ {
+ case POINTTYPE:
+ point = lwpoint_deserialize(geom);
+ ret = asgeojson_point(point, srs, bbox, precision);
+ break;
+
+ case LINETYPE:
+ line = lwline_deserialize(geom);
+ ret = asgeojson_line(line, srs, bbox, precision);
+ break;
+
+ case POLYGONTYPE:
+ poly = lwpoly_deserialize(geom);
+ ret = asgeojson_poly(poly, srs, bbox, precision);
+ break;
+
+ case MULTIPOINTTYPE:
+ insp = lwgeom_inspect(geom);
+ ret = asgeojson_multipoint(insp, srs, bbox, precision);
+ break;
+
+ case MULTILINETYPE:
+ insp = lwgeom_inspect(geom);
+ ret = asgeojson_multiline(insp, srs, bbox, precision);
+ break;
+
+ case MULTIPOLYGONTYPE:
+ insp = lwgeom_inspect(geom);
+ ret = asgeojson_multipolygon(insp, srs, bbox, precision);
+ break;
+
+ case COLLECTIONTYPE:
+ insp = lwgeom_inspect(geom);
+ ret = asgeojson_collection(insp, srs, bbox, precision);
+ break;
+
+ default:
+ if (bbox) { lwfree(bbox); bbox = NULL; }
+ lwerror("GeoJson: '%s' geometry type not supported.",
+ lwgeom_typename(type));
+ }
+
+ if (bbox) { lwfree(bbox); bbox = NULL; }
+
+ return ret;
+}
+
+
+/*
+ * Handle SRS
+ */
+static size_t
+asgeojson_srs_size(char *srs) {
+ int size;
+
+ size = sizeof("'crs':{'type':'',");
+ size += sizeof("'properties':{'code':}");
+ size += strlen(srs) * sizeof(char); /* substract the ':' char */
+
+ return size;
+}
+
+static size_t
+asgeojson_srs_buf(char *output, char *srs) {
+ char *ptr_sep;
+ char buf[256+1];
+ char *ptr = output;
+ int size;
+
+ ptr_sep = strchr(srs, ':');
+ if ( ptr_sep == NULL ) {
+ lwerror("GeoJson: SRS dont't use a valid ':' separator !");
+ return (ptr-output);
+ }
+
+ size = ptr_sep - srs;
+ if (size > 256) size = 256;
+ memcpy(buf, srs, size);
+ buf[size] = '\0';
+ ptr += sprintf(ptr, "\"crs\":{\"type\":\"%s\",", buf);
+
+ size = srs + strlen(srs) - ptr_sep;
+ if (size > 256) size = 256;
+ memcpy(buf, ptr_sep + 1, size);
+ buf[size] = '\0';
+ ptr += sprintf(ptr, "\"properties\":{\"code\":%s}},", buf);
+
+ return (ptr-output);
+}
+
+
+/*
+ * Handle Bbox
+ */
+static size_t
+asgeojson_bbox_size(bool hasz, int precision) {
+
+ int size;
+
+ if (!hasz) {
+ size = sizeof("\"bbox\":[,,,],");
+ size += 2 * 2 * (MAX_DIGS_DOUBLE + precision);
+ } else {
+ size = sizeof("\"bbox\":[,,,,,],");
+ size += 2 * 3 * (MAX_DIGS_DOUBLE + precision);
+ }
+
+ return size;
+}
+
+static size_t
+asgeojson_bbox_buf(char *output, BOX3D *bbox, bool hasz, int precision)
+{
+ char *ptr = output;
+
+ if (!hasz)
+ ptr += sprintf(ptr, "\"bbox\":[%.*f,%.*f,%.*f,%.*f],",
+ precision, bbox->xmin, precision, bbox->ymin,
+ precision, bbox->xmax, precision, bbox->ymax);
+ else
+ ptr += sprintf(ptr, "\"bbox\":[%.*f,%.*f,%.*f,%.*f,%.*f,%.*f],",
+ precision, bbox->xmin, precision, bbox->ymin, precision, bbox->zmin,
+ precision, bbox->xmax, precision, bbox->ymax, precision, bbox->zmax);
+
+ return (ptr-output);
+}
+
+
+
+/*
+ * Point Geometry
+ */
+
+static size_t
+asgeojson_point_size(LWPOINT *point, char *srs, BOX3D *bbox, int precision)
+{
+ int size;
+
+ size = pointArray_geojson_size(point->point, precision);
+ size += sizeof("{'type':'Point',");
+ size += sizeof("'coordinates':}");
+
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(point->type), precision);
+
+ return size;
+}
+
+static size_t
+asgeojson_point_buf(LWPOINT *point, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ char *ptr = output;
+
+ ptr += sprintf(ptr, "{\"type\":\"Point\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(point->type), precision);
+
+ ptr += sprintf(ptr, "\"coordinates\":");
+ ptr += pointArray_to_geojson(point->point, ptr, precision);
+ ptr += sprintf(ptr, "}");
+
+ return (ptr-output);
+}
+
+static char *
+asgeojson_point(LWPOINT *point, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_point_size(point, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_point_buf(point, srs, output, bbox, precision);
+ return output;
+}
+
+
+
+/*
+ * Line Geometry
+ */
+
+static size_t
+asgeojson_line_size(LWLINE *line, char *srs, BOX3D *bbox, int precision)
+{
+ int size;
+
+ size = sizeof("{'type':'LineString',");
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(line->type), precision);
+ size += sizeof("'coordinates':[]}");
+ size += pointArray_geojson_size(line->points, precision);
+
+ return size;
+}
+
+static size_t
+asgeojson_line_buf(LWLINE *line, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ char *ptr=output;
+
+ ptr += sprintf(ptr, "{\"type\":\"LineString\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(line->type), precision);
+ ptr += sprintf(ptr, "\"coordinates\":[");
+ ptr += pointArray_to_geojson(line->points, ptr, precision);
+ ptr += sprintf(ptr, "]}");
+
+ return (ptr-output);
+}
+
+static char *
+asgeojson_line(LWLINE *line, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_line_size(line, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_line_buf(line, srs, output, bbox, precision);
+
+ return output;
+}
+
+
+
+/*
+ * Polygon Geometry
+ */
+
+static size_t
+asgeojson_poly_size(LWPOLY *poly, char *srs, BOX3D *bbox, int precision)
+{
+ size_t size;
+ int i;
+
+ size = sizeof("{\"type\":\"Polygon\",");
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(poly->type), precision);
+ size += sizeof("\"coordinates\":[");
+ for (i=0, size=0; i<poly->nrings; i++) {
+ size += pointArray_geojson_size(poly->rings[i], precision);
+ size += sizeof("[]");
+ }
+ size += sizeof(",") * i;
+ size += sizeof("]}");
+
+ return size;
+}
+
+static size_t
+asgeojson_poly_buf(LWPOLY *poly, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ int i;
+ char *ptr=output;
+
+ ptr += sprintf(ptr, "{\"type\":\"Polygon\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(poly->type), precision);
+ ptr += sprintf(ptr, "\"coordinates\":[");
+ for (i=0; i<poly->nrings; i++)
+ {
+ if (i) ptr += sprintf(ptr, ",");
+ ptr += sprintf(ptr, "[");
+ ptr += pointArray_to_geojson(poly->rings[i], ptr, precision);
+ ptr += sprintf(ptr, "]");
+ }
+ ptr += sprintf(ptr, "]}");
+
+ return (ptr-output);
+}
+
+static char *
+asgeojson_poly(LWPOLY *poly, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_poly_size(poly, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_poly_buf(poly, srs, output, bbox, precision);
+
+ return output;
+}
+
+
+
+/*
+ * Multipoint Geometry
+ */
+
+static size_t
+asgeojson_multipoint_size(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ LWPOINT * point;
+ int size;
+ int i;
+
+ size = sizeof("{'type':'MultiPoint',");
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(insp->type), precision);
+ size += sizeof("'coordinates':[]}");
+
+ for (i=0; i<insp->ngeometries; i++) {
+ point = lwgeom_getpoint_inspected(insp, i);
+ size += pointArray_geojson_size(point->point, precision);
+ }
+ size += sizeof(",") * i;
+
+ return size;
+}
+
+static size_t
+asgeojson_multipoint_buf(LWGEOM_INSPECTED *insp, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ LWPOINT *point;
+ int i;
+ char *ptr=output;
+
+ ptr += sprintf(ptr, "{\"type\":\"MultiPoint\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(insp->type), precision);
+ ptr += sprintf(ptr, "\"coordinates\":[");
+
+ for (i=0; i<insp->ngeometries; i++)
+ {
+ if (i) ptr += sprintf(ptr, ",");
+ point=lwgeom_getpoint_inspected(insp, i);
+ ptr += pointArray_to_geojson(point->point, ptr, precision);
+ pfree_point(point);
+ }
+ ptr += sprintf(ptr, "]}");
+
+ return (ptr - output);
+}
+
+static char *
+asgeojson_multipoint(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_multipoint_size(insp, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_multipoint_buf(insp, srs, output, bbox, precision);
+
+ return output;
+}
+
+
+
+/*
+ * Multiline Geometry
+ */
+
+static size_t
+asgeojson_multiline_size(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ LWLINE * line;
+ int size;
+ int i;
+
+ size = sizeof("{'type':'MultiLineString',");
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(insp->type), precision);
+ size += sizeof("'coordinates':[]}");
+
+ for (i=0 ; i<insp->ngeometries; i++) {
+ line = lwgeom_getline_inspected(insp, i);
+ size += pointArray_geojson_size(line->points, precision);
+ size += sizeof("[]");
+ }
+ size += sizeof(",") * i;
+
+ return size;
+}
+
+static size_t
+asgeojson_multiline_buf(LWGEOM_INSPECTED *insp, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ LWLINE *line;
+ int i;
+ char *ptr=output;
+
+ ptr += sprintf(ptr, "{\"type\":\"MultiLineString\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(insp->type), precision);
+ ptr += sprintf(ptr, "\"coordinates\":[");
+
+ for (i=0; i<insp->ngeometries; i++)
+ {
+ if (i) ptr += sprintf(ptr, ",");
+ ptr += sprintf(ptr, "[");
+ line = lwgeom_getline_inspected(insp, i);
+ ptr += pointArray_to_geojson(line->points, ptr, precision);
+ ptr += sprintf(ptr, "]");
+
+ pfree_line(line);
+ }
+
+ ptr += sprintf(ptr, "]}");
+
+ return (ptr - output);
+}
+
+static char *
+asgeojson_multiline(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_multiline_size(insp, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_multiline_buf(insp, srs, output, bbox, precision);
+
+ return output;
+}
+
+
+
+/*
+ * MultiPolygon Geometry
+ */
+
+static size_t
+asgeojson_multipolygon_size(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ LWPOLY *poly;
+ int size;
+ int i, j;
+
+ size = sizeof("{'type':'MultiPolygon',");
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(insp->type), precision);
+ size += sizeof("'coordinates':[]}");
+
+ for (i=0; i < insp->ngeometries; i++) {
+ poly = lwgeom_getpoly_inspected(insp, i);
+ for (j=0 ; j <poly->nrings ; j++) {
+ size += pointArray_geojson_size(poly->rings[j], precision);
+ size += sizeof("[]");
+ }
+ size += sizeof("[]");
+ }
+ size += sizeof(",") * i;
+ size += sizeof("]}");
+
+ return size;
+}
+
+static size_t
+asgeojson_multipolygon_buf(LWGEOM_INSPECTED *insp, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ LWPOLY *poly;
+ int i, j;
+ char *ptr=output;
+
+ ptr += sprintf(ptr, "{\"type\":\"MultiPolygon\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(insp->type), precision);
+ ptr += sprintf(ptr, "\"coordinates\":[");
+ for (i=0; i<insp->ngeometries; i++)
+ {
+ if (i) ptr += sprintf(ptr, ",");
+ ptr += sprintf(ptr, "[");
+ poly = lwgeom_getpoly_inspected(insp, i);
+ for (j=0 ; j < poly->nrings ; j++) {
+ if (j) ptr += sprintf(ptr, ",");
+ ptr += sprintf(ptr, "[");
+ ptr += pointArray_to_geojson(poly->rings[j], ptr, precision);
+ ptr += sprintf(ptr, "]");
+ }
+ ptr += sprintf(ptr, "]");
+ pfree_polygon(poly);
+ }
+ ptr += sprintf(ptr, "]}");
+
+ return (ptr - output);
+}
+
+static char *
+asgeojson_multipolygon(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_multipolygon_size(insp, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_multipolygon_buf(insp, srs, output, bbox, precision);
+
+ return output;
+}
+
+
+
+/*
+ * Collection Geometry
+ */
+
+static size_t
+asgeojson_collection_size(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ int i;
+ int size;
+ LWGEOM_INSPECTED *subinsp;
+ uchar *subgeom;
+
+ size = sizeof("{'type':'GeometryCollection',");
+ if (srs) size += asgeojson_srs_size(srs);
+ if (bbox) size += asgeojson_bbox_size(TYPE_HASZ(insp->type), precision);
+ size += sizeof("'geometries':");
+
+ for (i=0; i<insp->ngeometries; i++)
+ {
+ subgeom = lwgeom_getsubgeometry_inspected(insp, i);
+ subinsp = lwgeom_inspect(subgeom);
+ size += asgeojson_inspected_size(subinsp, bbox, precision);
+ pfree_inspected(subinsp);
+ }
+ size += sizeof(",") * i;
+ size += sizeof("]}");
+
+ return size;
+}
+
+static size_t
+asgeojson_collection_buf(LWGEOM_INSPECTED *insp, char *srs, char *output, BOX3D *bbox, int precision)
+{
+ int i;
+ char *ptr=output;
+ LWGEOM_INSPECTED *subinsp;
+ uchar *subgeom;
+
+ ptr += sprintf(ptr, "{\"type\":\"GeometryCollection\",");
+ if (srs) ptr += asgeojson_srs_buf(ptr, srs);
+ if (bbox) ptr += asgeojson_bbox_buf(ptr, bbox, TYPE_HASZ(insp->type), precision);
+ ptr += sprintf(ptr, "\"geometries\":[");
+
+ for (i=0; i<insp->ngeometries; i++)
+ {
+ if (i) ptr += sprintf(ptr, ",");
+ subgeom = lwgeom_getsubgeometry_inspected(insp, i);
+ subinsp = lwgeom_inspect(subgeom);
+ ptr += asgeojson_inspected_buf(subinsp, ptr, bbox, precision);
+ pfree_inspected(subinsp);
+ }
+
+ ptr += sprintf(ptr, "]}");
+
+ return (ptr - output);
+}
+
+static char *
+asgeojson_collection(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int precision)
+{
+ char *output;
+ int size;
+
+ size = asgeojson_collection_size(insp, srs, bbox, precision);
+ output = palloc(size);
+ asgeojson_collection_buf(insp, srs, output, bbox, precision);
+
+ return output;
+}
+
+
+
+static size_t
+asgeojson_inspected_size(LWGEOM_INSPECTED *insp, BOX3D *bbox, int precision)
+{
+ int type = lwgeom_getType(insp->serialized_form[0]);
+ size_t size = 0;
+ LWPOINT *point;
+ LWLINE *line;
+ LWPOLY *poly;
+
+ switch(type) {
+ case POINTTYPE:
+ point=lwgeom_getpoint_inspected(insp, 0);
+ size = asgeojson_point_size(point, NULL, bbox, precision);
+ pfree_point(point);
+ break;
+
+ case LINETYPE:
+ line=lwgeom_getline_inspected(insp, 0);
+ size = asgeojson_line_size(line, NULL, bbox, precision);
+ pfree_line(line);
+ break;
+
+ case POLYGONTYPE:
+ poly=lwgeom_getpoly_inspected(insp, 0);
+ size = asgeojson_poly_size(poly, NULL, bbox, precision);
+ pfree_polygon(poly);
+ break;
+
+ case MULTIPOINTTYPE:
+ size = asgeojson_multipoint_size(insp, NULL, bbox, precision);
+ break;
+
+ case MULTILINETYPE:
+ size = asgeojson_multiline_size(insp, NULL, bbox, precision);
+ break;
+
+ case MULTIPOLYGONTYPE:
+ size = asgeojson_multipolygon_size(insp, NULL, bbox, precision);
+ break;
+
+ default: lwerror("GeoJson: geometry not supported.");
+ }
+
+ return size;
+}
+
+
+static size_t
+asgeojson_inspected_buf(LWGEOM_INSPECTED *insp, char *output, BOX3D *bbox, int precision)
+{
+ LWPOINT *point;
+ LWLINE *line;
+ LWPOLY *poly;
+ int type = lwgeom_getType(insp->serialized_form[0]);
+ char *ptr=output;
+
+ /* Compute 3D BBOX on the sub geometry */
+ if ( bbox ) {
+ lwfree(bbox);
+ bbox = NULL;
+ bbox = compute_serialized_box3d(
+ lwgeom_getsubgeometry(insp->serialized_form, 0));
+ }
+
+ switch(type) {
+ case POINTTYPE:
+ point=lwgeom_getpoint_inspected(insp, 0);
+ ptr += asgeojson_point_buf(point, NULL, ptr, bbox, precision);
+ pfree_point(point);
+ break;
+
+ case LINETYPE:
+ line=lwgeom_getline_inspected(insp, 0);
+ ptr += asgeojson_line_buf(line, NULL, ptr, bbox, precision);
+ pfree_line(line);
+ break;
+
+ case POLYGONTYPE:
+ poly=lwgeom_getpoly_inspected(insp, 0);
+ ptr += asgeojson_poly_buf(poly, NULL, ptr, bbox, precision);
+ pfree_polygon(poly);
+ break;
+
+ case MULTIPOINTTYPE:
+ ptr += asgeojson_multipoint_buf(insp, NULL, ptr, bbox, precision);
+ break;
+
+ case MULTILINETYPE:
+ ptr += asgeojson_multiline_buf(insp, NULL, ptr, bbox, precision);
+ break;
+
+ case MULTIPOLYGONTYPE:
+ ptr += asgeojson_multipolygon_buf(insp, NULL, ptr, bbox, precision);
+ break;
+
+ default:
+ if (bbox) lwfree(bbox);
+ lwerror("GeoJson: geometry not supported.");
+ }
+
+ return (ptr-output);
+}
+
+
+static size_t
+pointArray_to_geojson(POINTARRAY *pa, char *output, int precision)
+{
+ int i;
+ char *ptr;
+
+ ptr = output;
+
+ if (!TYPE_HASZ(pa->dims)) {
+ for (i=0; i<pa->npoints; i++) {
+ POINT2D pt;
+ getPoint2d_p(pa, i, &pt);
+ if ( i ) ptr += sprintf(ptr, ",");
+ ptr += sprintf(ptr, "[%.*f,%.*f]",
+ precision, pt.x,
+ precision, pt.y);
+ }
+ } else {
+ for (i=0; i<pa->npoints; i++) {
+ POINT4D pt;
+ getPoint4d_p(pa, i, &pt);
+ if ( i ) ptr += sprintf(ptr, ",");
+ ptr += sprintf(ptr, "[%.*f,%.*f,%.*f]",
+ precision, pt.x,
+ precision, pt.y,
+ precision, pt.z);
+ }
+ }
+
+ return (ptr-output);
+}
+
+
+/*
+ * Common geojson routines
+ */
+
+static char *
+getSRSbySRID(int SRID)
+{
+ char query[128];
+ char *srs, *srscopy;
+ int size, err;
+
+ /* connect to SPI */
+ if (SPI_OK_CONNECT != SPI_connect ()) {
+ elog(NOTICE, "getSRSbySRID: could not connect to SPI manager");
+ SPI_finish();
+ return NULL;
+ }
+
+ /* write query */
+ sprintf(query, "SELECT textcat(auth_name, textcat(':', auth_srid::text)) \
+ FROM spatial_ref_sys WHERE srid = '%d'", SRID);
+#if 0
+ elog(NOTICE, "Query: %s", query);
+#endif
+
+ /* execute query */
+ err = SPI_exec(query, 1);
+ if ( err < 0 ) {
+ elog(NOTICE, "getSRSbySRID: error executing query %d", err);
+ SPI_finish();
+ return NULL;
+ }
+
+ /* no entry in spatial_ref_sys */
+ if (SPI_processed <= 0) {
+#if 0
+ elog(NOTICE, "getSRSbySRID: no record for SRID %d", SRID);
+#endif
+ SPI_finish();
+ return NULL;
+ }
+
+ /* get result */
+ srs = SPI_getvalue(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1);
+
+ /* NULL result */
+ if ( ! srs ) {
+ /*elog(NOTICE, "getSRSbySRID: null result"); */
+ SPI_finish();
+ return NULL;
+ }
+
+ /* copy result to upper executor context */
+ size = strlen(srs)+1;
+ srscopy = SPI_palloc(size);
+ memcpy(srscopy, srs, size);
+
+ /* disconnect from SPI */
+ SPI_finish();
+
+ return srscopy;
+}
+
+
+/*
+ * Returns maximum size of rendered pointarray in bytes.
+ */
+static size_t
+pointArray_geojson_size(POINTARRAY *pa, int precision)
+{
+ int dim=2;
+
+ if (TYPE_NDIMS(pa->dims) > 2) dim = 3;
+ return dim * pa->npoints * (MAX_DIGS_DOUBLE + precision)
+ + sizeof(",[]");
+}
--- /dev/null
+--
+-- spatial_ref_sys data
+--
+INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (4326,'EPSG',4326,'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ');
+--- EPSG 27572 : NTF (Paris) / Lambert zone II
+INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (27572,'EPSG',27572,'PROJCS["NTF (Paris) / Lambert zone II",GEOGCS["NTF (Paris)",DATUM["Nouvelle_Triangulation_Francaise_Paris",SPHEROID["Clarke 1880 (IGN)",6378249.2,293.4660212936269,AUTHORITY["EPSG","7011"]],TOWGS84[-168,-60,320,0,0,0,0],AUTHORITY["EPSG","6807"]],PRIMEM["Paris",2.33722917,AUTHORITY["EPSG","8903"]],UNIT["grad",0.01570796326794897,AUTHORITY["EPSG","9105"]],AUTHORITY["EPSG","4807"]],PROJECTION["Lambert_Conformal_Conic_1SP"],PARAMETER["latitude_of_origin",52],PARAMETER["central_meridian",0],PARAMETER["scale_factor",0.99987742],PARAMETER["false_easting",600000],PARAMETER["false_northing",2200000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","27572"]]','+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ');
+--- EPSG 31467 : DHDN / Gauss-Kruger zone 3
+INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (31467,'EPSG',31467,'PROJCS["DHDN / Gauss-Kruger zone 3",GEOGCS["DHDN",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],AUTHORITY["EPSG","6314"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4314"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",1],PARAMETER["false_easting",3500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","31467"]]','+proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs ');
+
+
+-- Simple output
+SELECT ST_AsGeoJson(GeomFromEWKT('POINT(1 1)'));
+
+
+-- Empty Geometry
+SELECT ST_AsGeoJson(GeomFromEWKT(NULL));
+
+
+-- Precision
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1)'), 0);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1)'), 3);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1)'), -2);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1)'), 19);
+
+
+-- Version
+SELECT ST_AsGeoJson(1, GeomFromEWKT('SRID=4326;POINT(1 1)'));
+SELECT ST_AsGeoJson(1.0, GeomFromEWKT('SRID=4326;POINT(1 1)'));
+SELECT ST_AsGeoJson(21, GeomFromEWKT('SRID=4326;POINT(1 1)'));
+SELECT ST_AsGeoJson(-4, GeomFromEWKT('SRID=4326;POINT(1 1)'));
+
+
+-- CRS
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1)'), 0, 1);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=-1;POINT(1 1)'), 0, 1);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=27572;POINT(600000 2430000)'), 0, 1);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=100000;POINT(600000 2430000)'), 0, 1);
+
+
+-- Bbox
+SELECT ST_AsGeoJson(GeomFromEWKT('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0);
+SELECT ST_AsGeoJson(GeomFromEWKT('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 2);
+SELECT ST_AsGeoJson(GeomFromEWKT('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 3);
+
+
+-- CRS and Bbox
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=-1;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 0);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=-1;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 1);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 1);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=-1;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 2);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 2);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=-1;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 3);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;LINESTRING(1 1, 2 2, 3 3, 4 4)'), 0, 3);
+
+
+
+--
+-- Line
+--
+
+-- Geometry from frida project: <http://frida.intevation.org/>
+SELECT ST_AsGeoJson(GeomFromEWKT('LINESTRING(3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51)'));
+
+SELECT ST_AsGeoJson(GeomFromEWKT('LINESTRING(3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51)'), 0);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('LINESTRING(3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51)'), 0, 3);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;LINESTRING(3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51)'), 0, 2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;LINESTRING(3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51)'), 0, 3);
+
+
+
+
+--
+-- Polygon
+--
+
+-- Geometry from frida project: <http://frida.intevation.org/>
+
+SELECT ST_AsGeoJson(GeomFromEWKT('POLYGON((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07))'));
+
+SELECT ST_AsGeoJson(GeomFromEWKT('POLYGON((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07))'), 0);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('POLYGON((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07))'), 0, 3);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;POLYGON((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07))'), 0, 2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;POLYGON((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07))'), 0, 3);
+
+
+
+--
+-- Multipoint
+--
+
+-- SELECT astext(collect(the_geom)) FROM poi WHERE poitypname='Schule';
+-- Geometry from frida project: <http://frida.intevation.org/>
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37)'));
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37)'), 0);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37)'), 0, 3);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37)'), 0, 2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37)'), 0, 3);
+
+
+
+--
+-- MultiLine
+--
+-- Geometry from frida project: <http://frida.intevation.org/>
+-- SELECT st_astext(st_linemerge(the_geom)) FROM river WHERE glname='Stichkanal';
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18))'));
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18))'));
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18))'), 0);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18))'), 0,3);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18))'),0,2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18))'),0,3);
+
+
+
+--
+-- MultiPolygon
+--
+
+-- Geometry from frida project: <http://frida.intevation.org/>
+-- Leyer Holz Park
+-- st_astext(geomunion(the_geom)) FROM park WHERE gfname='Leyer Holz';
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTIPOLYGON(((3429699.81 5795851.64,3429736.72 5795796.01,3429754.71 5795768.88,3429996.1 5795489.98,3430100.67 5795435.76,3430122.61 5795446.09,3430138.1 5795560.98,3430311.09 5795559.69,3430309.8 5795470.62,3430329.16 5795416.4,3430326.58 5795399.62,3430157.47 5795418.98,3430156.14 5795407.32,3430139.36 5795396.99,3429983.19 5795394.41,3429976.74 5795420.22,3429789.59 5795418.93,3429643.74 5795475.72,3429635.72 5795615.31,3429484.94 5795556.38,3429315.44 5795496.32,3429326.12 5795748.57,3429129.92 5795704.53,3429176.64 5795776.6,3429100.6 5795797.17,3428900.44 5795742.46,3428896.43 5795779.82,3428805.69 5795953.3,3428897.77 5796025.35,3428897.77 5796225.99,3428696.32 5796199.31,3428681.64 5796217.99,3428680.31 5796290.03,3428290.14 5796351.8,3428389.67 5796413.87,3428837.71 5796561.12,3428991.08 5796495.01,3429076.4 5796760.29,3429428.31 5796723.61,3429474.96 5796690.29,3429696.2 5796600.99,3429658.88 5796429.06,3429536.27 5796363.75,3429529.6 5796333.1,3429446.08 5796253.84,3429699.81 5795851.64)),((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07)))'));
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTIPOLYGON(((3429699.81 5795851.64,3429736.72 5795796.01,3429754.71 5795768.88,3429996.1 5795489.98,3430100.67 5795435.76,3430122.61 5795446.09,3430138.1 5795560.98,3430311.09 5795559.69,3430309.8 5795470.62,3430329.16 5795416.4,3430326.58 5795399.62,3430157.47 5795418.98,3430156.14 5795407.32,3430139.36 5795396.99,3429983.19 5795394.41,3429976.74 5795420.22,3429789.59 5795418.93,3429643.74 5795475.72,3429635.72 5795615.31,3429484.94 5795556.38,3429315.44 5795496.32,3429326.12 5795748.57,3429129.92 5795704.53,3429176.64 5795776.6,3429100.6 5795797.17,3428900.44 5795742.46,3428896.43 5795779.82,3428805.69 5795953.3,3428897.77 5796025.35,3428897.77 5796225.99,3428696.32 5796199.31,3428681.64 5796217.99,3428680.31 5796290.03,3428290.14 5796351.8,3428389.67 5796413.87,3428837.71 5796561.12,3428991.08 5796495.01,3429076.4 5796760.29,3429428.31 5796723.61,3429474.96 5796690.29,3429696.2 5796600.99,3429658.88 5796429.06,3429536.27 5796363.75,3429529.6 5796333.1,3429446.08 5796253.84,3429699.81 5795851.64)),((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07)))'), 0);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('MULTIPOLYGON(((3429699.81 5795851.64,3429736.72 5795796.01,3429754.71 5795768.88,3429996.1 5795489.98,3430100.67 5795435.76,3430122.61 5795446.09,3430138.1 5795560.98,3430311.09 5795559.69,3430309.8 5795470.62,3430329.16 5795416.4,3430326.58 5795399.62,3430157.47 5795418.98,3430156.14 5795407.32,3430139.36 5795396.99,3429983.19 5795394.41,3429976.74 5795420.22,3429789.59 5795418.93,3429643.74 5795475.72,3429635.72 5795615.31,3429484.94 5795556.38,3429315.44 5795496.32,3429326.12 5795748.57,3429129.92 5795704.53,3429176.64 5795776.6,3429100.6 5795797.17,3428900.44 5795742.46,3428896.43 5795779.82,3428805.69 5795953.3,3428897.77 5796025.35,3428897.77 5796225.99,3428696.32 5796199.31,3428681.64 5796217.99,3428680.31 5796290.03,3428290.14 5796351.8,3428389.67 5796413.87,3428837.71 5796561.12,3428991.08 5796495.01,3429076.4 5796760.29,3429428.31 5796723.61,3429474.96 5796690.29,3429696.2 5796600.99,3429658.88 5796429.06,3429536.27 5796363.75,3429529.6 5796333.1,3429446.08 5796253.84,3429699.81 5795851.64)),((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07)))'), 0, 3);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;MULTIPOLYGON(((3429699.81 5795851.64,3429736.72 5795796.01,3429754.71 5795768.88,3429996.1 5795489.98,3430100.67 5795435.76,3430122.61 5795446.09,3430138.1 5795560.98,3430311.09 5795559.69,3430309.8 5795470.62,3430329.16 5795416.4,3430326.58 5795399.62,3430157.47 5795418.98,3430156.14 5795407.32,3430139.36 5795396.99,3429983.19 5795394.41,3429976.74 5795420.22,3429789.59 5795418.93,3429643.74 5795475.72,3429635.72 5795615.31,3429484.94 5795556.38,3429315.44 5795496.32,3429326.12 5795748.57,3429129.92 5795704.53,3429176.64 5795776.6,3429100.6 5795797.17,3428900.44 5795742.46,3428896.43 5795779.82,3428805.69 5795953.3,3428897.77 5796025.35,3428897.77 5796225.99,3428696.32 5796199.31,3428681.64 5796217.99,3428680.31 5796290.03,3428290.14 5796351.8,3428389.67 5796413.87,3428837.71 5796561.12,3428991.08 5796495.01,3429076.4 5796760.29,3429428.31 5796723.61,3429474.96 5796690.29,3429696.2 5796600.99,3429658.88 5796429.06,3429536.27 5796363.75,3429529.6 5796333.1,3429446.08 5796253.84,3429699.81 5795851.64)),((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07)))'), 0, 2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;MULTIPOLYGON(((3429699.81 5795851.64,3429736.72 5795796.01,3429754.71 5795768.88,3429996.1 5795489.98,3430100.67 5795435.76,3430122.61 5795446.09,3430138.1 5795560.98,3430311.09 5795559.69,3430309.8 5795470.62,3430329.16 5795416.4,3430326.58 5795399.62,3430157.47 5795418.98,3430156.14 5795407.32,3430139.36 5795396.99,3429983.19 5795394.41,3429976.74 5795420.22,3429789.59 5795418.93,3429643.74 5795475.72,3429635.72 5795615.31,3429484.94 5795556.38,3429315.44 5795496.32,3429326.12 5795748.57,3429129.92 5795704.53,3429176.64 5795776.6,3429100.6 5795797.17,3428900.44 5795742.46,3428896.43 5795779.82,3428805.69 5795953.3,3428897.77 5796025.35,3428897.77 5796225.99,3428696.32 5796199.31,3428681.64 5796217.99,3428680.31 5796290.03,3428290.14 5796351.8,3428389.67 5796413.87,3428837.71 5796561.12,3428991.08 5796495.01,3429076.4 5796760.29,3429428.31 5796723.61,3429474.96 5796690.29,3429696.2 5796600.99,3429658.88 5796429.06,3429536.27 5796363.75,3429529.6 5796333.1,3429446.08 5796253.84,3429699.81 5795851.64)),((3429857.62 5799440.07,3429873.86 5799496.16,3429904.86 5799503.55,3429972.77 5799561.12,3430034.77 5799577.36,3430031.82 5799639.36,3430139.59 5799691.03,3430146.97 5799724.99,3430271.57 5799792.88,3430289.29 5799776.64,3430312.91 5799662.95,3430416.27 5799710.2,3430419.22 5799614.22,3430268.61 5799612.75,3430291.3 5799203.76,3430255.86 5799175.7,3430214.51 5799347,3430183.49 5799355.87,3430180.54 5799366.2,3430146.57 5799367.68,3430142.14 5799349.96,3430065.35 5799375.06,3429961.97 5799426.75,3429857.62 5799440.07)))'), 0, 3);
+
+
+
+--
+-- GeometryCollection
+--
+
+-- SELECT astext(collect((SELECT collect(the_geom) FROM poi WHERE poitypname='Schule'), (SELECT collect(st_linemerge(the_geom)) FROM river WHERE glname='Stichkanal')));
+
+-- Geometry from frida project: <http://frida.intevation.org/>
+SELECT ST_AsGeoJson(GeomFromEWKT('GEOMETRYCOLLECTION(MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37),MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18)))'));
+
+
+SELECT ST_AsGeoJson(GeomFromEWKT('GEOMETRYCOLLECTION(MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37),MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18)))'), 0);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('GEOMETRYCOLLECTION(MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37),MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18)))'), 0, 2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;GEOMETRYCOLLECTION(MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37),MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18)))'), 0, 2);
+
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=31467;GEOMETRYCOLLECTION(MULTIPOINT(3433276.43 5795308.93,3428545.3 5795827.75,3431576.99 5799084.19,3431724.2 5797152.59,3431984.2 5796564.79,3435147.61 5797649.58,3434660.86 5796941.74,3434674.52 5797030.54,3435714.36 5797022.6,3436368.88 5796951.04,3436730.03 5796768.6,3435538.55 5796267.1,3435847.22 5795917.96,3434312.09 5794846.02,3433121.69 5793670.73,3433176.36 5793489.29,3434316.04 5793940.09,3433222.92 5793040.49,3433416.13 5792891.62,3430717.47 5792600.58,3435384.08 5792877.68,3435229.15 5792177.25,3435120 5792319.07,3435088.72 5792111.21,3434484.89 5792110.2,3435777.91 5792419.49,3435717.37 5794318.12,3436895.13 5794569.43,3437621.86 5793931.6,3435597.14 5793467.9,3435246.51 5793394.63,3434722.1 5793374.87,3434712.16 5793810.3,3434773.28 5793816.87,3434629.91 5793855.31,3434992.34 5794140.1,3434927.13 5794252.29,3434958.58 5794286.16,3435120.48 5794163.36,3435850.1 5791727.49,3435930.75 5791636.32,3436268.87 5791882.68,3437110.23 5791664.12,3435960.34 5790928.2,3433545.81 5789755.43,3439096.86 5790884.26,3438576.87 5795046.69,3438396.95 5794858.59,3438193.25 5794695.6,3438447.92 5796130.77,3440688.22 5793670.37),MULTILINESTRING((3429562.6 5799490.68,3429750.99 5799199.87,3429825.45 5799078.39,3429901.8 5798961.45,3429995.54 5798822.93,3430072.89 5798719.46,3430216 5798558.95,3430272.08 5798489.33,3430393.87 5798328.51,3430463.53 5798251.11,3430532.22 5798190.16,3430591.24 5798149.53,3430667.67 5798108.9,3430723.78 5798088.58,3430797.33 5798067.95,3430857.34 5798056.34,3430912.52 5798051.5,3430961.89 5798048.59,3431052.88 5798053.43,3431159.36 5798059.24,3431218.41 5798061.18,3431366.56 5798056.09,3431474.07 5798044.47,3431568.02 5798028.97,3431644.53 5798012.51),(3433260.06 5797002.92,3433234.61 5797070.25,3433138.56 5797278.81,3433074.19 5797398.94,3433033.73 5797461.79,3432961.43 5797551.84,3432882.76 5797626.57,3432780.32 5797701.09,3432706.28 5797743.23,3432542.66 5797808.05,3432360.32 5797842.47,3432258.52 5797836.77,3432197.62 5797837.57,3432081.75 5797865.64,3431876.6 5797945.1,3431865.15 5797948.73),(3431865.15 5797948.73,3431644.53 5798012.51),(3431865.15 5797948.73,3431815.75 5797807.76),(3433260.06 5797002.92,3433361.19 5796788.54,3433467.4 5796572.78,3433670.6 5796160.06),(3433670.6 5796160.06,3433709.27 5796096.88,3433744.46 5796021.84,3433861.98 5795869.38,3434029.1 5795680.43,3434229.42 5795456.34,3434239.36 5795425.11,3434296.02 5795363.18)))'), 0, 3);
+
+--
+-- Unsupported Geometry
+-- (From AsKml units test)
+--
+SELECT ST_asGeoJson(GeomFromEWKT('SRID=4326;CIRCULARSTRING(-2 0,0 2,2 0,0 2,2 4)'));
+SELECT ST_asGeoJson(GeomFromEWKT('SRID=4326;COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))'));
+SELECT ST_asGeoJson(GeomFromEWKT('SRID=4326;CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0))'));
+SELECT ST_asGeoJson(GeomFromEWKT('SRID=4326;MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))'));
+SELECT ST_asGeoJson(GeomFromEWKT('SRID=4326;MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0)),((7 8,10 10,6 14,4 11,7 8)))'));
+
+
+--
+-- 3D Data
+--
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1 1)'));
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POINT(1 1 1)'), 0, 3);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;LINESTRING(1 1 1, 2 2 2, 3 3 3, 4 4 4)'), 0, 3);
+SELECT ST_AsGeoJson(GeomFromEWKT('SRID=4326;POLYGON((1 1 1, 2 2 2, 3 3 3, 4 4 4, 5 5 5, 5 0 0, 1 1 1))'), 0, 3);
+
+--
+-- Delete inserted spatial data
+--
+DELETE FROM spatial_ref_sys WHERE srid = 4326;
+DELETE FROM spatial_ref_sys WHERE srid = 27572;
+DELETE FROM spatial_ref_sys WHERE srid = 31467;
--- /dev/null
+{"type":"Point","coordinates":[1.000000000000000,1.000000000000000]}
+{"type":"Point","coordinates":[1,1]}
+{"type":"Point","coordinates":[1.000,1.000]}
+{"type":"Point","coordinates":[1,1]}
+{"type":"Point","coordinates":[1.000000000000000,1.000000000000000]}
+{"type":"Point","coordinates":[1.000000000000000,1.000000000000000]}
+ERROR: function st_asgeojson(numeric, geometry) does not exist
+LINE 1: SELECT ST_AsGeoJson(1.0, GeomFromEWKT('SRID=4326;POINT(1 1)'...
+ ^
+HINT: No function matches the given name and argument types. You may need to add explicit type casts.
+ERROR: Only GeoJSON 1 is supported
+ERROR: Only GeoJSON 1 is supported
+{"type":"Point","crs":{"type":"EPSG","properties":{"code":4326}},"coordinates":[1,1]}
+{"type":"Point","coordinates":[1,1]}
+{"type":"Point","crs":{"type":"EPSG","properties":{"code":27572}},"coordinates":[600000,2430000]}
+ERROR: SRID 100000 unknown in spatial_ref_sys table
+{"type":"LineString","coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","bbox":[1,1,4,4],"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","bbox":[1,1,4,4],"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","crs":{"type":"EPSG","properties":{"code":4326}},"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","bbox":[1,1,4,4],"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","bbox":[1,1,4,4],"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","bbox":[1,1,4,4],"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","crs":{"type":"EPSG","properties":{"code":4326}},"bbox":[1,1,4,4],"coordinates":[[1,1],[2,2],[3,3],[4,4]]}
+{"type":"LineString","coordinates":[[3429562.600000000093132,5799490.679999999701977],[3429750.990000000223517,5799199.870000000111759],[3429825.450000000186265,5799078.389999999664724],[3429901.799999999813735,5798961.450000000186265],[3429995.540000000037253,5798822.929999999701977],[3430072.890000000130385,5798719.459999999962747],[3430216.000000000000000,5798558.950000000186265],[3430272.080000000074506,5798489.330000000074506],[3430393.870000000111759,5798328.509999999776483],[3430463.529999999795109,5798251.110000000335276],[3430532.220000000204891,5798190.160000000149012],[3430591.240000000223517,5798149.530000000260770],[3430667.669999999925494,5798108.900000000372529],[3430723.779999999795109,5798088.580000000074506],[3430797.330000000074506,5798067.950000000186265],[3430857.339999999850988,5798056.339999999850988],[3430912.520000000018626,5798051.500000000000000],[3430961.890000000130385,5798048.589999999850988],[3431052.879999999888241,5798053.429999999701977],[3431159.359999999869615,5798059.240000000223517],[3431218.410000000149012,5798061.179999999701977],[3431366.560000000055879,5798056.089999999850988],[3431474.069999999832362,5798044.469999999739230],[3431568.020000000018626,5798028.969999999739230],[3431644.529999999795109,5798012.509999999776483]]}
+{"type":"LineString","coordinates":[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]]}
+{"type":"LineString","bbox":[3429562,5798012,3431645,5799491],"coordinates":[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]]}
+{"type":"LineString","bbox":[3429562,5798012,3431645,5799491],"coordinates":[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]]}
+{"type":"LineString","crs":{"type":"EPSG","properties":{"code":31467}},"bbox":[3429562,5798012,3431645,5799491],"coordinates":[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]]}
+{"type":"Polygon","coordinates":[[[3429857.620000000111759,5799440.070000000298023],[3429873.859999999869615,5799496.160000000149012],[3429904.859999999869615,5799503.549999999813735],[3429972.770000000018626,5799561.120000000111759],[3430034.770000000018626,5799577.360000000335276],[3430031.819999999832362,5799639.360000000335276],[3430139.589999999850988,5799691.030000000260770],[3430146.970000000204891,5799724.990000000223517],[3430271.569999999832362,5799792.879999999888241],[3430289.290000000037253,5799776.639999999664724],[3430312.910000000149012,5799662.950000000186265],[3430416.270000000018626,5799710.200000000186265],[3430419.220000000204891,5799614.219999999739230],[3430268.609999999869615,5799612.750000000000000],[3430291.299999999813735,5799203.759999999776483],[3430255.859999999869615,5799175.700000000186265],[3430214.509999999776483,5799347.000000000000000],[3430183.490000000223517,5799355.870000000111759],[3430180.540000000037253,5799366.200000000186265],[3430146.569999999832362,5799367.679999999701977],[3430142.140000000130385,5799349.959999999962747],[3430065.350000000093132,5799375.059999999590218],[3429961.970000000204891,5799426.750000000000000],[3429857.620000000111759,5799440.070000000298023]]]}
+{"type":"Polygon","coordinates":[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]}
+{"type":"Polygon","bbox":[3429858,5799176,3430419,5799793],"coordinates":[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]}
+{"type":"Polygon","bbox":[3429858,5799176,3430419,5799793],"coordinates":[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]}
+{"type":"Polygon","crs":{"type":"EPSG","properties":{"code":31467}},"bbox":[3429858,5799176,3430419,5799793],"coordinates":[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]}
+{"type":"MultiPoint","coordinates":[[3433276.430000000167638,5795308.929999999701977],[3428545.299999999813735,5795827.750000000000000],[3431576.990000000223517,5799084.190000000409782],[3431724.200000000186265,5797152.589999999850988],[3431984.200000000186265,5796564.790000000037253],[3435147.609999999869615,5797649.580000000074506],[3434660.859999999869615,5796941.740000000223517],[3434674.520000000018626,5797030.540000000037253],[3435714.359999999869615,5797022.599999999627471],[3436368.879999999888241,5796951.040000000037253],[3436730.029999999795109,5796768.599999999627471],[3435538.549999999813735,5796267.099999999627471],[3435847.220000000204891,5795917.959999999962747],[3434312.089999999850988,5794846.019999999552965],[3433121.689999999944121,5793670.730000000447035],[3433176.359999999869615,5793489.290000000037253],[3434316.040000000037253,5793940.089999999850988],[3433222.919999999925494,5793040.490000000223517],[3433416.129999999888241,5792891.620000000111759],[3430717.470000000204891,5792600.580000000074506],[3435384.080000000074506,5792877.679999999701977],[3435229.149999999906868,5792177.250000000000000],[3435120.000000000000000,5792319.070000000298023],[3435088.720000000204891,5792111.209999999962747],[3434484.890000000130385,5792110.200000000186265],[3435777.910000000149012,5792419.490000000223517],[3435717.370000000111759,5794318.120000000111759],[3436895.129999999888241,5794569.429999999701977],[3437621.859999999869615,5793931.599999999627471],[3435597.140000000130385,5793467.900000000372529],[3435246.509999999776483,5793394.629999999888241],[3434722.100000000093132,5793374.870000000111759],[3434712.160000000149012,5793810.299999999813735],[3434773.279999999795109,5793816.870000000111759],[3434629.910000000149012,5793855.309999999590218],[3434992.339999999850988,5794140.099999999627471],[3434927.129999999888241,5794252.290000000037253],[3434958.580000000074506,5794286.160000000149012],[3435120.479999999981374,5794163.360000000335276],[3435850.100000000093132,5791727.490000000223517],[3435930.750000000000000,5791636.320000000298023],[3436268.870000000111759,5791882.679999999701977],[3437110.229999999981374,5791664.120000000111759],[3435960.339999999850988,5790928.200000000186265],[3433545.810000000055879,5789755.429999999701977],[3439096.859999999869615,5790884.259999999776483],[3438576.870000000111759,5795046.690000000409782],[3438396.950000000186265,5794858.589999999850988],[3438193.250000000000000,5794695.599999999627471],[3438447.919999999925494,5796130.769999999552965],[3440688.220000000204891,5793670.370000000111759]]}
+{"type":"MultiPoint","coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]}
+{"type":"MultiPoint","bbox":[3428545,5789755,3440688,5799084],"coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]}
+{"type":"MultiPoint","bbox":[3428545,5789755,3440688,5799084],"coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]}
+{"type":"MultiPoint","crs":{"type":"EPSG","properties":{"code":31467}},"bbox":[3428545,5789755,3440688,5799084],"coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]}
+{"type":"MultiLineString","coordinates":[[[3429562.600000000093132,5799490.679999999701977],[3429750.990000000223517,5799199.870000000111759],[3429825.450000000186265,5799078.389999999664724],[3429901.799999999813735,5798961.450000000186265],[3429995.540000000037253,5798822.929999999701977],[3430072.890000000130385,5798719.459999999962747],[3430216.000000000000000,5798558.950000000186265],[3430272.080000000074506,5798489.330000000074506],[3430393.870000000111759,5798328.509999999776483],[3430463.529999999795109,5798251.110000000335276],[3430532.220000000204891,5798190.160000000149012],[3430591.240000000223517,5798149.530000000260770],[3430667.669999999925494,5798108.900000000372529],[3430723.779999999795109,5798088.580000000074506],[3430797.330000000074506,5798067.950000000186265],[3430857.339999999850988,5798056.339999999850988],[3430912.520000000018626,5798051.500000000000000],[3430961.890000000130385,5798048.589999999850988],[3431052.879999999888241,5798053.429999999701977],[3431159.359999999869615,5798059.240000000223517],[3431218.410000000149012,5798061.179999999701977],[3431366.560000000055879,5798056.089999999850988],[3431474.069999999832362,5798044.469999999739230],[3431568.020000000018626,5798028.969999999739230],[3431644.529999999795109,5798012.509999999776483]],[[3433260.060000000055879,5797002.919999999925494],[3433234.609999999869615,5797070.250000000000000],[3433138.560000000055879,5797278.809999999590218],[3433074.189999999944121,5797398.940000000409782],[3433033.729999999981374,5797461.790000000037253],[3432961.430000000167638,5797551.839999999850988],[3432882.759999999776483,5797626.570000000298023],[3432780.319999999832362,5797701.089999999850988],[3432706.279999999795109,5797743.230000000447035],[3432542.660000000149012,5797808.049999999813735],[3432360.319999999832362,5797842.469999999739230],[3432258.520000000018626,5797836.769999999552965],[3432197.620000000111759,5797837.570000000298023],[3432081.750000000000000,5797865.639999999664724],[3431876.600000000093132,5797945.099999999627471],[3431865.149999999906868,5797948.730000000447035]],[[3431865.149999999906868,5797948.730000000447035],[3431644.529999999795109,5798012.509999999776483]],[[3431865.149999999906868,5797948.730000000447035],[3431815.750000000000000,5797807.759999999776483]],[[3433260.060000000055879,5797002.919999999925494],[3433361.189999999944121,5796788.540000000037253],[3433467.399999999906868,5796572.780000000260770],[3433670.600000000093132,5796160.059999999590218]],[[3433670.600000000093132,5796160.059999999590218],[3433709.270000000018626,5796096.879999999888241],[3433744.459999999962747,5796021.839999999850988],[3433861.979999999981374,5795869.379999999888241],[3434029.100000000093132,5795680.429999999701977],[3434229.419999999925494,5795456.339999999850988],[3434239.359999999869615,5795425.110000000335276],[3434296.020000000018626,5795363.179999999701977]]]}
+{"type":"MultiLineString","coordinates":[[[3429562.600000000093132,5799490.679999999701977],[3429750.990000000223517,5799199.870000000111759],[3429825.450000000186265,5799078.389999999664724],[3429901.799999999813735,5798961.450000000186265],[3429995.540000000037253,5798822.929999999701977],[3430072.890000000130385,5798719.459999999962747],[3430216.000000000000000,5798558.950000000186265],[3430272.080000000074506,5798489.330000000074506],[3430393.870000000111759,5798328.509999999776483],[3430463.529999999795109,5798251.110000000335276],[3430532.220000000204891,5798190.160000000149012],[3430591.240000000223517,5798149.530000000260770],[3430667.669999999925494,5798108.900000000372529],[3430723.779999999795109,5798088.580000000074506],[3430797.330000000074506,5798067.950000000186265],[3430857.339999999850988,5798056.339999999850988],[3430912.520000000018626,5798051.500000000000000],[3430961.890000000130385,5798048.589999999850988],[3431052.879999999888241,5798053.429999999701977],[3431159.359999999869615,5798059.240000000223517],[3431218.410000000149012,5798061.179999999701977],[3431366.560000000055879,5798056.089999999850988],[3431474.069999999832362,5798044.469999999739230],[3431568.020000000018626,5798028.969999999739230],[3431644.529999999795109,5798012.509999999776483]],[[3433260.060000000055879,5797002.919999999925494],[3433234.609999999869615,5797070.250000000000000],[3433138.560000000055879,5797278.809999999590218],[3433074.189999999944121,5797398.940000000409782],[3433033.729999999981374,5797461.790000000037253],[3432961.430000000167638,5797551.839999999850988],[3432882.759999999776483,5797626.570000000298023],[3432780.319999999832362,5797701.089999999850988],[3432706.279999999795109,5797743.230000000447035],[3432542.660000000149012,5797808.049999999813735],[3432360.319999999832362,5797842.469999999739230],[3432258.520000000018626,5797836.769999999552965],[3432197.620000000111759,5797837.570000000298023],[3432081.750000000000000,5797865.639999999664724],[3431876.600000000093132,5797945.099999999627471],[3431865.149999999906868,5797948.730000000447035]],[[3431865.149999999906868,5797948.730000000447035],[3431644.529999999795109,5798012.509999999776483]],[[3431865.149999999906868,5797948.730000000447035],[3431815.750000000000000,5797807.759999999776483]],[[3433260.060000000055879,5797002.919999999925494],[3433361.189999999944121,5796788.540000000037253],[3433467.399999999906868,5796572.780000000260770],[3433670.600000000093132,5796160.059999999590218]],[[3433670.600000000093132,5796160.059999999590218],[3433709.270000000018626,5796096.879999999888241],[3433744.459999999962747,5796021.839999999850988],[3433861.979999999981374,5795869.379999999888241],[3434029.100000000093132,5795680.429999999701977],[3434229.419999999925494,5795456.339999999850988],[3434239.359999999869615,5795425.110000000335276],[3434296.020000000018626,5795363.179999999701977]]]}
+{"type":"MultiLineString","coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}
+{"type":"MultiLineString","bbox":[3429562,5795363,3434296,5799491],"coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}
+{"type":"MultiLineString","bbox":[3429562,5795363,3434296,5799491],"coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}
+{"type":"MultiLineString","crs":{"type":"EPSG","properties":{"code":31467}},"bbox":[3429562,5795363,3434296,5799491],"coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}
+{"type":"MultiPolygon","coordinates":[[[[3429699.810000000055879,5795851.639999999664724],[3429736.720000000204891,5795796.009999999776483],[3429754.709999999962747,5795768.879999999888241],[3429996.100000000093132,5795489.980000000447035],[3430100.669999999925494,5795435.759999999776483],[3430122.609999999869615,5795446.089999999850988],[3430138.100000000093132,5795560.980000000447035],[3430311.089999999850988,5795559.690000000409782],[3430309.799999999813735,5795470.620000000111759],[3430329.160000000149012,5795416.400000000372529],[3430326.580000000074506,5795399.620000000111759],[3430157.470000000204891,5795418.980000000447035],[3430156.140000000130385,5795407.320000000298023],[3430139.359999999869615,5795396.990000000223517],[3429983.189999999944121,5795394.410000000149012],[3429976.740000000223517,5795420.219999999739230],[3429789.589999999850988,5795418.929999999701977],[3429643.740000000223517,5795475.719999999739230],[3429635.720000000204891,5795615.309999999590218],[3429484.939999999944121,5795556.379999999888241],[3429315.439999999944121,5795496.320000000298023],[3429326.120000000111759,5795748.570000000298023],[3429129.919999999925494,5795704.530000000260770],[3429176.640000000130385,5795776.599999999627471],[3429100.600000000093132,5795797.169999999925494],[3428900.439999999944121,5795742.459999999962747],[3428896.430000000167638,5795779.820000000298023],[3428805.689999999944121,5795953.299999999813735],[3428897.770000000018626,5796025.349999999627471],[3428897.770000000018626,5796225.990000000223517],[3428696.319999999832362,5796199.309999999590218],[3428681.640000000130385,5796217.990000000223517],[3428680.310000000055879,5796290.030000000260770],[3428290.140000000130385,5796351.799999999813735],[3428389.669999999925494,5796413.870000000111759],[3428837.709999999962747,5796561.120000000111759],[3428991.080000000074506,5796495.009999999776483],[3429076.399999999906868,5796760.290000000037253],[3429428.310000000055879,5796723.610000000335276],[3429474.959999999962747,5796690.290000000037253],[3429696.200000000186265,5796600.990000000223517],[3429658.879999999888241,5796429.059999999590218],[3429536.270000000018626,5796363.750000000000000],[3429529.600000000093132,5796333.099999999627471],[3429446.080000000074506,5796253.839999999850988],[3429699.810000000055879,5795851.639999999664724]]],[[[3429857.620000000111759,5799440.070000000298023],[3429873.859999999869615,5799496.160000000149012],[3429904.859999999869615,5799503.549999999813735],[3429972.770000000018626,5799561.120000000111759],[3430034.770000000018626,5799577.360000000335276],[3430031.819999999832362,5799639.360000000335276],[3430139.589999999850988,5799691.030000000260770],[3430146.970000000204891,5799724.990000000223517],[3430271.569999999832362,5799792.879999999888241],[3430289.290000000037253,5799776.639999999664724],[3430312.910000000149012,5799662.950000000186265],[3430416.270000000018626,5799710.200000000186265],[3430419.220000000204891,5799614.219999999739230],[3430268.609999999869615,5799612.750000000000000],[3430291.299999999813735,5799203.759999999776483],[3430255.859999999869615,5799175.700000000186265],[3430214.509999999776483,5799347.000000000000000],[3430183.490000000223517,5799355.870000000111759],[3430180.540000000037253,5799366.200000000186265],[3430146.569999999832362,5799367.679999999701977],[3430142.140000000130385,5799349.959999999962747],[3430065.350000000093132,5799375.059999999590218],[3429961.970000000204891,5799426.750000000000000],[3429857.620000000111759,5799440.070000000298023]]]]}
+{"type":"MultiPolygon","coordinates":[[[[3429700,5795852],[3429737,5795796],[3429755,5795769],[3429996,5795490],[3430101,5795436],[3430123,5795446],[3430138,5795561],[3430311,5795560],[3430310,5795471],[3430329,5795416],[3430327,5795400],[3430157,5795419],[3430156,5795407],[3430139,5795397],[3429983,5795394],[3429977,5795420],[3429790,5795419],[3429644,5795476],[3429636,5795615],[3429485,5795556],[3429315,5795496],[3429326,5795749],[3429130,5795705],[3429177,5795777],[3429101,5795797],[3428900,5795742],[3428896,5795780],[3428806,5795953],[3428898,5796025],[3428898,5796226],[3428696,5796199],[3428682,5796218],[3428680,5796290],[3428290,5796352],[3428390,5796414],[3428838,5796561],[3428991,5796495],[3429076,5796760],[3429428,5796724],[3429475,5796690],[3429696,5796601],[3429659,5796429],[3429536,5796364],[3429530,5796333],[3429446,5796254],[3429700,5795852]]],[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]]}
+{"type":"MultiPolygon","bbox":[3428290,5795394,3430419,5799793],"coordinates":[[[[3429700,5795852],[3429737,5795796],[3429755,5795769],[3429996,5795490],[3430101,5795436],[3430123,5795446],[3430138,5795561],[3430311,5795560],[3430310,5795471],[3430329,5795416],[3430327,5795400],[3430157,5795419],[3430156,5795407],[3430139,5795397],[3429983,5795394],[3429977,5795420],[3429790,5795419],[3429644,5795476],[3429636,5795615],[3429485,5795556],[3429315,5795496],[3429326,5795749],[3429130,5795705],[3429177,5795777],[3429101,5795797],[3428900,5795742],[3428896,5795780],[3428806,5795953],[3428898,5796025],[3428898,5796226],[3428696,5796199],[3428682,5796218],[3428680,5796290],[3428290,5796352],[3428390,5796414],[3428838,5796561],[3428991,5796495],[3429076,5796760],[3429428,5796724],[3429475,5796690],[3429696,5796601],[3429659,5796429],[3429536,5796364],[3429530,5796333],[3429446,5796254],[3429700,5795852]]],[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]]}
+{"type":"MultiPolygon","bbox":[3428290,5795394,3430419,5799793],"coordinates":[[[[3429700,5795852],[3429737,5795796],[3429755,5795769],[3429996,5795490],[3430101,5795436],[3430123,5795446],[3430138,5795561],[3430311,5795560],[3430310,5795471],[3430329,5795416],[3430327,5795400],[3430157,5795419],[3430156,5795407],[3430139,5795397],[3429983,5795394],[3429977,5795420],[3429790,5795419],[3429644,5795476],[3429636,5795615],[3429485,5795556],[3429315,5795496],[3429326,5795749],[3429130,5795705],[3429177,5795777],[3429101,5795797],[3428900,5795742],[3428896,5795780],[3428806,5795953],[3428898,5796025],[3428898,5796226],[3428696,5796199],[3428682,5796218],[3428680,5796290],[3428290,5796352],[3428390,5796414],[3428838,5796561],[3428991,5796495],[3429076,5796760],[3429428,5796724],[3429475,5796690],[3429696,5796601],[3429659,5796429],[3429536,5796364],[3429530,5796333],[3429446,5796254],[3429700,5795852]]],[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]]}
+{"type":"MultiPolygon","crs":{"type":"EPSG","properties":{"code":31467}},"bbox":[3428290,5795394,3430419,5799793],"coordinates":[[[[3429700,5795852],[3429737,5795796],[3429755,5795769],[3429996,5795490],[3430101,5795436],[3430123,5795446],[3430138,5795561],[3430311,5795560],[3430310,5795471],[3430329,5795416],[3430327,5795400],[3430157,5795419],[3430156,5795407],[3430139,5795397],[3429983,5795394],[3429977,5795420],[3429790,5795419],[3429644,5795476],[3429636,5795615],[3429485,5795556],[3429315,5795496],[3429326,5795749],[3429130,5795705],[3429177,5795777],[3429101,5795797],[3428900,5795742],[3428896,5795780],[3428806,5795953],[3428898,5796025],[3428898,5796226],[3428696,5796199],[3428682,5796218],[3428680,5796290],[3428290,5796352],[3428390,5796414],[3428838,5796561],[3428991,5796495],[3429076,5796760],[3429428,5796724],[3429475,5796690],[3429696,5796601],[3429659,5796429],[3429536,5796364],[3429530,5796333],[3429446,5796254],[3429700,5795852]]],[[[3429858,5799440],[3429874,5799496],[3429905,5799504],[3429973,5799561],[3430035,5799577],[3430032,5799639],[3430140,5799691],[3430147,5799725],[3430272,5799793],[3430289,5799777],[3430313,5799663],[3430416,5799710],[3430419,5799614],[3430269,5799613],[3430291,5799204],[3430256,5799176],[3430215,5799347],[3430183,5799356],[3430181,5799366],[3430147,5799368],[3430142,5799350],[3430065,5799375],[3429962,5799427],[3429858,5799440]]]]}
+{"type":"GeometryCollection","geometries":[{"type":"MultiPoint","coordinates":[[3433276.430000000167638,5795308.929999999701977],[3428545.299999999813735,5795827.750000000000000],[3431576.990000000223517,5799084.190000000409782],[3431724.200000000186265,5797152.589999999850988],[3431984.200000000186265,5796564.790000000037253],[3435147.609999999869615,5797649.580000000074506],[3434660.859999999869615,5796941.740000000223517],[3434674.520000000018626,5797030.540000000037253],[3435714.359999999869615,5797022.599999999627471],[3436368.879999999888241,5796951.040000000037253],[3436730.029999999795109,5796768.599999999627471],[3435538.549999999813735,5796267.099999999627471],[3435847.220000000204891,5795917.959999999962747],[3434312.089999999850988,5794846.019999999552965],[3433121.689999999944121,5793670.730000000447035],[3433176.359999999869615,5793489.290000000037253],[3434316.040000000037253,5793940.089999999850988],[3433222.919999999925494,5793040.490000000223517],[3433416.129999999888241,5792891.620000000111759],[3430717.470000000204891,5792600.580000000074506],[3435384.080000000074506,5792877.679999999701977],[3435229.149999999906868,5792177.250000000000000],[3435120.000000000000000,5792319.070000000298023],[3435088.720000000204891,5792111.209999999962747],[3434484.890000000130385,5792110.200000000186265],[3435777.910000000149012,5792419.490000000223517],[3435717.370000000111759,5794318.120000000111759],[3436895.129999999888241,5794569.429999999701977],[3437621.859999999869615,5793931.599999999627471],[3435597.140000000130385,5793467.900000000372529],[3435246.509999999776483,5793394.629999999888241],[3434722.100000000093132,5793374.870000000111759],[3434712.160000000149012,5793810.299999999813735],[3434773.279999999795109,5793816.870000000111759],[3434629.910000000149012,5793855.309999999590218],[3434992.339999999850988,5794140.099999999627471],[3434927.129999999888241,5794252.290000000037253],[3434958.580000000074506,5794286.160000000149012],[3435120.479999999981374,5794163.360000000335276],[3435850.100000000093132,5791727.490000000223517],[3435930.750000000000000,5791636.320000000298023],[3436268.870000000111759,5791882.679999999701977],[3437110.229999999981374,5791664.120000000111759],[3435960.339999999850988,5790928.200000000186265],[3433545.810000000055879,5789755.429999999701977],[3439096.859999999869615,5790884.259999999776483],[3438576.870000000111759,5795046.690000000409782],[3438396.950000000186265,5794858.589999999850988],[3438193.250000000000000,5794695.599999999627471],[3438447.919999999925494,5796130.769999999552965],[3440688.220000000204891,5793670.370000000111759]]},{"type":"MultiLineString","coordinates":[[[3429562.600000000093132,5799490.679999999701977],[3429750.990000000223517,5799199.870000000111759],[3429825.450000000186265,5799078.389999999664724],[3429901.799999999813735,5798961.450000000186265],[3429995.540000000037253,5798822.929999999701977],[3430072.890000000130385,5798719.459999999962747],[3430216.000000000000000,5798558.950000000186265],[3430272.080000000074506,5798489.330000000074506],[3430393.870000000111759,5798328.509999999776483],[3430463.529999999795109,5798251.110000000335276],[3430532.220000000204891,5798190.160000000149012],[3430591.240000000223517,5798149.530000000260770],[3430667.669999999925494,5798108.900000000372529],[3430723.779999999795109,5798088.580000000074506],[3430797.330000000074506,5798067.950000000186265],[3430857.339999999850988,5798056.339999999850988],[3430912.520000000018626,5798051.500000000000000],[3430961.890000000130385,5798048.589999999850988],[3431052.879999999888241,5798053.429999999701977],[3431159.359999999869615,5798059.240000000223517],[3431218.410000000149012,5798061.179999999701977],[3431366.560000000055879,5798056.089999999850988],[3431474.069999999832362,5798044.469999999739230],[3431568.020000000018626,5798028.969999999739230],[3431644.529999999795109,5798012.509999999776483]],[[3433260.060000000055879,5797002.919999999925494],[3433234.609999999869615,5797070.250000000000000],[3433138.560000000055879,5797278.809999999590218],[3433074.189999999944121,5797398.940000000409782],[3433033.729999999981374,5797461.790000000037253],[3432961.430000000167638,5797551.839999999850988],[3432882.759999999776483,5797626.570000000298023],[3432780.319999999832362,5797701.089999999850988],[3432706.279999999795109,5797743.230000000447035],[3432542.660000000149012,5797808.049999999813735],[3432360.319999999832362,5797842.469999999739230],[3432258.520000000018626,5797836.769999999552965],[3432197.620000000111759,5797837.570000000298023],[3432081.750000000000000,5797865.639999999664724],[3431876.600000000093132,5797945.099999999627471],[3431865.149999999906868,5797948.730000000447035]],[[3431865.149999999906868,5797948.730000000447035],[3431644.529999999795109,5798012.509999999776483]],[[3431865.149999999906868,5797948.730000000447035],[3431815.750000000000000,5797807.759999999776483]],[[3433260.060000000055879,5797002.919999999925494],[3433361.189999999944121,5796788.540000000037253],[3433467.399999999906868,5796572.780000000260770],[3433670.600000000093132,5796160.059999999590218]],[[3433670.600000000093132,5796160.059999999590218],[3433709.270000000018626,5796096.879999999888241],[3433744.459999999962747,5796021.839999999850988],[3433861.979999999981374,5795869.379999999888241],[3434029.100000000093132,5795680.429999999701977],[3434229.419999999925494,5795456.339999999850988],[3434239.359999999869615,5795425.110000000335276],[3434296.020000000018626,5795363.179999999701977]]]}]}
+{"type":"GeometryCollection","geometries":[{"type":"MultiPoint","coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]},{"type":"MultiLineString","coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}]}
+{"type":"GeometryCollection","bbox":[3428545,5789755,3440688,5799491],"geometries":[{"type":"MultiPoint","bbox":[3433276,5795309,3433276,5795309],"coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]},{"type":"MultiLineString","bbox":[3429563,5798013,3431645,5799491],"coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}]}
+{"type":"GeometryCollection","bbox":[3428545,5789755,3440688,5799491],"geometries":[{"type":"MultiPoint","bbox":[3433276,5795309,3433276,5795309],"coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]},{"type":"MultiLineString","bbox":[3429563,5798013,3431645,5799491],"coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}]}
+{"type":"GeometryCollection","crs":{"type":"EPSG","properties":{"code":31467}},"bbox":[3428545,5789755,3440688,5799491],"geometries":[{"type":"MultiPoint","bbox":[3433276,5795309,3433276,5795309],"coordinates":[[3433276,5795309],[3428545,5795828],[3431577,5799084],[3431724,5797153],[3431984,5796565],[3435148,5797650],[3434661,5796942],[3434675,5797031],[3435714,5797023],[3436369,5796951],[3436730,5796769],[3435539,5796267],[3435847,5795918],[3434312,5794846],[3433122,5793671],[3433176,5793489],[3434316,5793940],[3433223,5793040],[3433416,5792892],[3430717,5792601],[3435384,5792878],[3435229,5792177],[3435120,5792319],[3435089,5792111],[3434485,5792110],[3435778,5792419],[3435717,5794318],[3436895,5794569],[3437622,5793932],[3435597,5793468],[3435247,5793395],[3434722,5793375],[3434712,5793810],[3434773,5793817],[3434630,5793855],[3434992,5794140],[3434927,5794252],[3434959,5794286],[3435120,5794163],[3435850,5791727],[3435931,5791636],[3436269,5791883],[3437110,5791664],[3435960,5790928],[3433546,5789755],[3439097,5790884],[3438577,5795047],[3438397,5794859],[3438193,5794696],[3438448,5796131],[3440688,5793670]]},{"type":"MultiLineString","bbox":[3429563,5798013,3431645,5799491],"coordinates":[[[3429563,5799491],[3429751,5799200],[3429825,5799078],[3429902,5798961],[3429996,5798823],[3430073,5798719],[3430216,5798559],[3430272,5798489],[3430394,5798329],[3430464,5798251],[3430532,5798190],[3430591,5798150],[3430668,5798109],[3430724,5798089],[3430797,5798068],[3430857,5798056],[3430913,5798052],[3430962,5798049],[3431053,5798053],[3431159,5798059],[3431218,5798061],[3431367,5798056],[3431474,5798044],[3431568,5798029],[3431645,5798013]],[[3433260,5797003],[3433235,5797070],[3433139,5797279],[3433074,5797399],[3433034,5797462],[3432961,5797552],[3432883,5797627],[3432780,5797701],[3432706,5797743],[3432543,5797808],[3432360,5797842],[3432259,5797837],[3432198,5797838],[3432082,5797866],[3431877,5797945],[3431865,5797949]],[[3431865,5797949],[3431645,5798013]],[[3431865,5797949],[3431816,5797808]],[[3433260,5797003],[3433361,5796789],[3433467,5796573],[3433671,5796160]],[[3433671,5796160],[3433709,5796097],[3433744,5796022],[3433862,5795869],[3434029,5795680],[3434229,5795456],[3434239,5795425],[3434296,5795363]]]}]}
+ERROR: GeoJson: 'Curve' geometry type not supported.
+ERROR: GeoJson: 'CompoundString' geometry type not supported.
+ERROR: GeoJson: 'Invalid type' geometry type not supported.
+ERROR: GeoJson: 'Invalid type' geometry type not supported.
+ERROR: GeoJson: 'Invalid type' geometry type not supported.
+{"type":"Point","coordinates":[1.000000000000000,1.000000000000000,1.000000000000000]}
+{"type":"Point","crs":{"type":"EPSG","properties":{"code":4326}},"bbox":[1,1,1,1,1,1],"coordinates":[1,1,1]}
+{"type":"LineString","crs":{"type":"EPSG","properties":{"code":4326}},"bbox":[1,1,1,4,4,4],"coordinates":[[1,1,1],[2,2,2],[3,3,3],[4,4,4]]}
+{"type":"Polygon","crs":{"type":"EPSG","properties":{"code":4326}},"bbox":[1,0,0,5,5,5],"coordinates":[[[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[5,0,0],[1,1,1]]]}