[postgis-commits] svn - r3677 - in trunk: doc lwgeom regress

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Tue Feb 10 00:00:39 PST 2009


Author: colivier
Date: 2009-02-10 00:00:39 -0800 (Tue, 10 Feb 2009)
New Revision: 3677

Modified:
   trunk/doc/reference_new.xml
   trunk/lwgeom/lwgeom_kml.c
   trunk/regress/kml.sql
   trunk/regress/kml_expected
Log:
KML output: use decimal places rather than significant digit, trim trailing zeros, update documentation, update unit test

Modified: trunk/doc/reference_new.xml
===================================================================
--- trunk/doc/reference_new.xml	2009-02-10 07:54:19 UTC (rev 3676)
+++ trunk/doc/reference_new.xml	2009-02-10 08:00:39 UTC (rev 3677)
@@ -7444,7 +7444,7 @@
 	  <refnamediv>
 		<refname>ST_AsKML</refname>
 
-		<refpurpose>Return the geometry as a KML element. Several variants. Default version=2, default max_sig_digits=15</refpurpose>
+		<refpurpose>Return the geometry as a KML element. Several variants. Default version=2, default precision=15</refpurpose>
 	  </refnamediv>
 
 	  <refsynopsisdiv>
@@ -7456,7 +7456,7 @@
 			<funcprototype>
 				<funcdef>text <function>ST_AsKML</function></funcdef>
 				<paramdef><type>geometry </type> <parameter>g1</parameter></paramdef>
-				<paramdef><type>integer </type> <parameter>max_sig_digits</parameter></paramdef>
+				<paramdef><type>integer </type> <parameter>precision</parameter></paramdef>
 			</funcprototype>
 			<funcprototype>
 				<funcdef>text <function>ST_AsKML</function></funcdef>
@@ -7467,7 +7467,7 @@
 				<funcdef>text <function>ST_AsKML</function></funcdef>
 				<paramdef><type>integer </type> <parameter>version</parameter></paramdef>
 				<paramdef><type>geometry </type> <parameter>geom1</parameter></paramdef>
-				<paramdef><type>integer </type> <parameter>max_sig_digits</parameter></paramdef>
+				<paramdef><type>integer </type> <parameter>precision</parameter></paramdef>
 			</funcprototype>
 		</funcsynopsis>
 	  </refsynopsisdiv>
@@ -7476,13 +7476,13 @@
 		<title>Description</title>
 
 		<para>Return the geometry as a Keyhole Markup Language (KML) element. There are several variants of this function.
-			maximum number of significant digits used in
+			maximum number of decimal places used in
 			output (defaults to 15) and version default to 2.</para>
 
-		<para>Version 1: ST_AsKML(geom) / version=2 max_sig_digits=15</para>
+		<para>Version 1: ST_AsKML(geom) / version=2 precision=15</para>
 		<para>Version 2: ST_AsKML(geom, max_sig_digits) / version=2 </para>
-		<para>Version 3: ST_AsKML(version, geom) / max_sig_digits=15 </para>
-		<para>Version 4: ST_AsGeoJSON(version, geom, max_sig_digits) </para>
+		<para>Version 3: ST_AsKML(version, geom) / precision=15 </para>
+		<para>Version 4: ST_AsGeoJSON(version, geom, precision) </para>
 
 		<note>
 		  <para>Requires PostGIS be compiled with Proj support.  Use <xref linkend="PostGIS_Full_Version" /> to confirm you have proj support compiled in.</para>
@@ -7506,13 +7506,16 @@
 
 	  <refsection>
 		<title>Examples</title>
-		<programlisting>SELECT ST_AsKML(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
+		<programlisting><![CDATA[SELECT ST_AsKML(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
 
 		st_askml
 		--------
+		<Polygon><outerBoundaryIs><LinearRing><coordinates>0,0 0,1 1,1 1,0 0,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
 
 		--3d linestring
-		 SELECT ST_AsKML('SRID=4326;LINESTRING(1 2 3, 4 5 6)');
+		SELECT ST_AsKML('SRID=4326;LINESTRING(1 2 3, 4 5 6)');
+		<LineString><coordinates>1,2,3 4,5,6</coordinates></LineString>
+		]]>
 		</programlisting>
 	  </refsection>
 	 <refsection>

Modified: trunk/lwgeom/lwgeom_kml.c
===================================================================
--- trunk/lwgeom/lwgeom_kml.c	2009-02-10 07:54:19 UTC (rev 3676)
+++ trunk/lwgeom/lwgeom_kml.c	2009-02-10 08:00:39 UTC (rev 3677)
@@ -25,27 +25,26 @@
 
 Datum LWGEOM_asKML(PG_FUNCTION_ARGS);
 
-char *geometry_to_kml2(uchar *srl);
+char *geometry_to_kml2(uchar *srl, int precision);
 
-static size_t askml2_point_size(LWPOINT *point);
-static char *askml2_point(LWPOINT *point);
-static size_t askml2_line_size(LWLINE *line);
-static char *askml2_line(LWLINE *line);
-static size_t askml2_poly_size(LWPOLY *poly);
-static char *askml2_poly(LWPOLY *poly);
-static size_t askml2_inspected_size(LWGEOM_INSPECTED *geom);
-static char *askml2_inspected(LWGEOM_INSPECTED *geom);
-static size_t pointArray_toKML2(POINTARRAY *pa, char *buf);
+static size_t askml2_point_size(LWPOINT *point, int precision);
+static char *askml2_point(LWPOINT *point, int precision);
+static size_t askml2_line_size(LWLINE *line, int precision);
+static char *askml2_line(LWLINE *line, int precision);
+static size_t askml2_poly_size(LWPOLY *poly, int precision);
+static char *askml2_poly(LWPOLY *poly, int precision);
+static size_t askml2_inspected_size(LWGEOM_INSPECTED *geom, int precision);
+static char *askml2_inspected(LWGEOM_INSPECTED *geom, int precision);
+static size_t pointArray_toKML2(POINTARRAY *pa, char *buf, int precision);
 
-static size_t pointArray_KMLsize(POINTARRAY *pa);
+static size_t pointArray_KMLsize(POINTARRAY *pa, int precision);
 
 /* Add dot, sign, exponent sign, 'e', exponent digits */
-#define SHOW_DIGS (precision + 8)
+#define SHOW_DIGS_DOUBLE 15
+#define MAX_DOUBLE_PRECISION 15
+#define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 2) /* +2 mean add dot and sign */
 
-/* Globals */
-int precision;
 
-
 /**
  * Encode feature in KML 
  */
@@ -57,30 +56,31 @@
 	text *result;
 	int len;
 	int version;
+	int precision = MAX_DOUBLE_PRECISION;
 
 
-    /* Get the version */
-    version = PG_GETARG_INT32(0);
+	/* Get the version */
+	version = PG_GETARG_INT32(0);
 	if ( version != 2)
 	{
 		elog(ERROR, "Only KML 2 is supported");
 		PG_RETURN_NULL();
 	}
 
-    /* Get the geometry */
+	/* Get the geometry */
 	if ( PG_ARGISNULL(1) ) PG_RETURN_NULL();
 	geom = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
 
-	/* Get precision  */
-	precision = PG_GETARG_INT32(2);
-	if ( precision < 1 || precision > 15 )
-	{
-		elog(ERROR, "Precision out of range 1..15");
-		PG_RETURN_NULL();
+	/* 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;
 	}
 	
 	if (version == 2)
-	  kml = geometry_to_kml2(SERIALIZED_FORM(geom));
+		kml = geometry_to_kml2(SERIALIZED_FORM(geom), precision);
 	
 	PG_FREE_IF_COPY(geom, 1);
 
@@ -104,7 +104,7 @@
 
 /* takes a GEOMETRY and returns a KML representation */
 char *
-geometry_to_kml2(uchar *geom)
+geometry_to_kml2(uchar *geom, int precision)
 {
 	int type;
 	LWPOINT *point;
@@ -119,21 +119,21 @@
 
 		case POINTTYPE:
 			point = lwpoint_deserialize(geom);
-			return askml2_point(point);
+			return askml2_point(point, precision);
 
 		case LINETYPE:
 			line = lwline_deserialize(geom);
-			return askml2_line(line);
+			return askml2_line(line, precision);
 
 		case POLYGONTYPE:
 			poly = lwpoly_deserialize(geom);
-			return askml2_poly(poly);
+			return askml2_poly(poly, precision);
 
 		case MULTIPOINTTYPE:
 		case MULTILINETYPE:
 		case MULTIPOLYGONTYPE:
 			inspected = lwgeom_inspect(geom);
-			return askml2_inspected(inspected);
+			return askml2_inspected(inspected, precision);
 		
 		default:
 			lwerror("geometry_to_kml: '%s' geometry type not supported by Google Earth", lwgeom_typename(type));
@@ -142,75 +142,75 @@
 }
 
 static size_t
-askml2_point_size(LWPOINT *point)
+askml2_point_size(LWPOINT *point, int precision)
 {
 	int size;
-	size = pointArray_KMLsize(point->point);
+	size = pointArray_KMLsize(point->point, precision);
 	size += sizeof("<point><coordinates>/") * 2;
 	return size;
 }
 
 static size_t
-askml2_point_buf(LWPOINT *point, char *output)
+askml2_point_buf(LWPOINT *point, char *output, int precision)
 {
 	char *ptr = output;
 
 	ptr += sprintf(ptr, "<Point>");
 	ptr += sprintf(ptr, "<coordinates>");
-	ptr += pointArray_toKML2(point->point, ptr);
+	ptr += pointArray_toKML2(point->point, ptr, precision);
 	ptr += sprintf(ptr, "</coordinates></Point>");
 
 	return (ptr-output);
 }
 
 static char *
-askml2_point(LWPOINT *point)
+askml2_point(LWPOINT *point, int precision)
 {
 	char *output;
 	int size;
 	
-	size = askml2_point_size(point);
+	size = askml2_point_size(point, precision);
 	output = palloc(size);
-	askml2_point_buf(point, output);
+	askml2_point_buf(point, output, precision);
 	return output;
 }
 
 static size_t
-askml2_line_size(LWLINE *line)
+askml2_line_size(LWLINE *line, int precision)
 {
 	int size;
-	size = pointArray_KMLsize(line->points);
+	size = pointArray_KMLsize(line->points, precision);
 	size += sizeof("<linestring><coordinates>/") * 2;
 	return size;
 }
 
 static size_t
-askml2_line_buf(LWLINE *line, char *output)
+askml2_line_buf(LWLINE *line, char *output, int precision)
 {
 	char *ptr=output;
 
 	ptr += sprintf(ptr, "<LineString>");
 	ptr += sprintf(ptr, "<coordinates>");
-	ptr += pointArray_toKML2(line->points, ptr);
+	ptr += pointArray_toKML2(line->points, ptr, precision);
 	ptr += sprintf(ptr, "</coordinates></LineString>");
 
 	return (ptr-output);
 }
 
 static char *
-askml2_line(LWLINE *line)
+askml2_line(LWLINE *line, int precision)
 {
 	char *output;
 	int size;
 
-	size = askml2_line_size(line);
+	size = askml2_line_size(line, precision);
 	output = palloc(size);
-	askml2_line_buf(line, output);
+	askml2_line_buf(line, output, precision);
 	return output;
 }
 
 static size_t
-askml2_poly_size(LWPOLY *poly)
+askml2_poly_size(LWPOLY *poly, int precision)
 {
 	size_t size;
 	int i;
@@ -221,25 +221,25 @@
 		poly->nrings;
 
 	for (i=0; i<poly->nrings; i++)
-		size += pointArray_KMLsize(poly->rings[i]);
+		size += pointArray_KMLsize(poly->rings[i], precision);
 
 	return size;
 }
 
 static size_t
-askml2_poly_buf(LWPOLY *poly, char *output)
+askml2_poly_buf(LWPOLY *poly, char *output, int precision)
 {
 	int i;
 	char *ptr=output;
 
 	ptr += sprintf(ptr, "<Polygon>");
 	ptr += sprintf(ptr, "<outerBoundaryIs><LinearRing><coordinates>");
-	ptr += pointArray_toKML2(poly->rings[0], ptr);
+	ptr += pointArray_toKML2(poly->rings[0], ptr, precision);
 	ptr += sprintf(ptr, "</coordinates></LinearRing></outerBoundaryIs>");
 	for (i=1; i<poly->nrings; i++)
 	{
 		ptr += sprintf(ptr, "<innerBoundaryIs><LinearRing><coordinates>");
-		ptr += pointArray_toKML2(poly->rings[i], ptr);
+		ptr += pointArray_toKML2(poly->rings[i], ptr, precision);
 		ptr += sprintf(ptr, "</coordinates></LinearRing></innerBoundaryIs>");
 	}
 	ptr += sprintf(ptr, "</Polygon>");
@@ -248,14 +248,14 @@
 }
 
 static char *
-askml2_poly(LWPOLY *poly)
+askml2_poly(LWPOLY *poly, int precision)
 {
 	char *output;
 	int size;
 
-	size = askml2_poly_size(poly);
+	size = askml2_poly_size(poly, precision);
 	output = palloc(size);
-	askml2_poly_buf(poly, output);
+	askml2_poly_buf(poly, output, precision);
 	return output;
 }
 
@@ -265,7 +265,7 @@
  * Don't call this with single-geoms inspected.
  */
 static size_t
-askml2_inspected_size(LWGEOM_INSPECTED *insp)
+askml2_inspected_size(LWGEOM_INSPECTED *insp, int precision)
 {
 	int i;
 	size_t size;
@@ -283,24 +283,24 @@
 
 		if ((point=lwgeom_getpoint_inspected(insp, i)))
 		{
-			size += askml2_point_size(point);
+			size += askml2_point_size(point, precision);
 			lwpoint_free(point);
 		}
 		else if ((line=lwgeom_getline_inspected(insp, i)))
 		{
-			size += askml2_line_size(line);
+			size += askml2_line_size(line, precision);
 			lwline_free(line);
 		}
 		else if ((poly=lwgeom_getpoly_inspected(insp, i)))
 		{
-			size += askml2_poly_size(poly);
+			size += askml2_poly_size(poly, precision);
 			lwpoly_free(poly);
 		}
 		else
 		{
 			subgeom = lwgeom_getsubgeometry_inspected(insp, i);
 			subinsp = lwgeom_inspect(subgeom);
-			size += askml2_inspected_size(subinsp);
+			size += askml2_inspected_size(subinsp, precision);
 			lwinspected_release(subinsp);
 		}
 	}
@@ -312,7 +312,7 @@
  * Don't call this with single-geoms inspected!
  */
 static size_t
-askml2_inspected_buf(LWGEOM_INSPECTED *insp, char *output)
+askml2_inspected_buf(LWGEOM_INSPECTED *insp, char *output, int precision)
 {
 	char *ptr, *kmltype;
 	int i;
@@ -333,24 +333,24 @@
 
 		if ((point=lwgeom_getpoint_inspected(insp, i)))
 		{
-			ptr += askml2_point_buf(point, ptr);
+			ptr += askml2_point_buf(point, ptr, precision);
 			lwpoint_free(point);
 		}
 		else if ((line=lwgeom_getline_inspected(insp, i)))
 		{
-			ptr += askml2_line_buf(line, ptr);
+			ptr += askml2_line_buf(line, ptr, precision);
 			lwline_free(line);
 		}
 		else if ((poly=lwgeom_getpoly_inspected(insp, i)))
 		{
-			ptr += askml2_poly_buf(poly, ptr);
+			ptr += askml2_poly_buf(poly, ptr, precision);
 			lwpoly_free(poly);
 		}
 		else
 		{
 			subgeom = lwgeom_getsubgeometry_inspected(insp, i);
 			subinsp = lwgeom_inspect(subgeom);
-			ptr += askml2_inspected_buf(subinsp, ptr);
+			ptr += askml2_inspected_buf(subinsp, ptr, precision);
 			lwinspected_release(subinsp);
 		}
 	}
@@ -365,22 +365,25 @@
  * Don't call this with single-geoms inspected!
  */
 static char *
-askml2_inspected(LWGEOM_INSPECTED *insp)
+askml2_inspected(LWGEOM_INSPECTED *insp, int precision)
 {
 	char *kml;
 	size_t size;
 
-	size = askml2_inspected_size(insp);
+	size = askml2_inspected_size(insp, precision);
 	kml = palloc(size);
-	askml2_inspected_buf(insp, kml);
+	askml2_inspected_buf(insp, kml, precision);
 	return kml;
 }
 
 static size_t
-pointArray_toKML2(POINTARRAY *pa, char *output)
+pointArray_toKML2(POINTARRAY *pa, char *output, int precision)
 {
 	int i;
 	char *ptr;
+	char x[MAX_DIGS_DOUBLE+3];
+	char y[MAX_DIGS_DOUBLE+3];
+	char z[MAX_DIGS_DOUBLE+3];
 
 	ptr = output;
 
@@ -390,10 +393,12 @@
 		{
 			POINT2D pt;
 			getPoint2d_p(pa, i, &pt);
+			sprintf(x, "%.*f", precision, pt.x);
+			trim_trailing_zeros(x);
+			sprintf(y, "%.*f", precision, pt.y);
+			trim_trailing_zeros(y);
 			if ( i ) ptr += sprintf(ptr, " ");
-			ptr += sprintf(ptr, "%.*g,%.*g",
-				precision, pt.x,
-				precision, pt.y);
+			ptr += sprintf(ptr, "%s,%s", x, y);
 		}
 	}
 	else 
@@ -402,11 +407,14 @@
 		{
 			POINT4D pt;
 			getPoint4d_p(pa, i, &pt);
+			sprintf(x, "%.*f", precision, pt.x);
+			trim_trailing_zeros(x);
+			sprintf(y, "%.*f", precision, pt.y);
+			trim_trailing_zeros(y);
+			sprintf(z, "%.*f", precision, pt.z);
+			trim_trailing_zeros(z);
 			if ( i ) ptr += sprintf(ptr, " ");
-			ptr += sprintf(ptr, "%.*g,%.*g,%.*g",
-				precision, pt.x,
-				precision, pt.y,
-				precision, pt.z);
+			ptr += sprintf(ptr, "%s,%s,%s", x, y, z);
 		}
 	}
 
@@ -423,12 +431,12 @@
  * Returns maximum size of rendered pointarray in bytes.
  */
 static size_t
-pointArray_KMLsize(POINTARRAY *pa)
+pointArray_KMLsize(POINTARRAY *pa, int precision)
 {
-	return TYPE_NDIMS(pa->dims) * pa->npoints * (SHOW_DIGS+(TYPE_NDIMS(pa->dims)-1));
+	if (TYPE_NDIMS(pa->dims) == 2)
+		return (MAX_DIGS_DOUBLE + precision + sizeof(", "))
+			* 2 * pa->npoints;
+
+	return (MAX_DIGS_DOUBLE + precision + sizeof(", ")) * 3 * pa->npoints;
 }
 
-/**********************************************************************
- * $Log: $
- **********************************************************************/
-

Modified: trunk/regress/kml.sql
===================================================================
--- trunk/regress/kml.sql	2009-02-10 07:54:19 UTC (rev 3676)
+++ trunk/regress/kml.sql	2009-02-10 08:00:39 UTC (rev 3677)
@@ -4,7 +4,7 @@
 -- http://postgis.refractions.net/pipermail/postgis-devel/2006-December/002376.html
 
 -- SPATIAL INFO NO AVAILABLE
-SELECT AsKML(GeomFromEWKT('SRID=1021892;POINT(1000000 1000000)'));
+SELECT 'no_srid_01', AsKML(GeomFromEWKT('SRID=1021892;POINT(1000000 1000000)'));
 
 --- EPSG 4326 : WGS 84
 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 ');
@@ -12,83 +12,83 @@
 INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES (1021892,'EPSG',1021892,'PROJCS["Bogota 1975 / Colombia Bogota zone (deprecated)",GEOGCS["Bogota 1975",DATUM["Bogota_1975",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY["EPSG","6218"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4218"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",4.599047222222222],PARAMETER["central_meridian",-74.08091666666667],PARAMETER["scale_factor",1],PARAMETER["false_easting",1000000],PARAMETER["false_northing",1000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","21892"]]','+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666666667 +k=1.000000 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=307,304,-318,0,0,0,0 +units=m +no_defs ');
 
 -- NO SRID PROVIDED
-SELECT AsKML(GeomFromEWKT('POINT(1 1)'));
+SELECT 'no_srid_02', AsKML(GeomFromEWKT('POINT(1 1)'));
 
 -- UNSUPPORTED GEOMETRY TYPES
-SELECT AsKML(GeomFromEWKT('SRID=4326;CIRCULARSTRING(-2 0,0 2,2 0,0 2,2 4)'));
-SELECT AsKML(GeomFromEWKT('SRID=4326;COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))'));
-SELECT AsKML(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 AsKML(GeomFromEWKT('SRID=4326;MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))'));
-SELECT AsKML(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)))'));
+SELECT 'invalid_01', AsKML(GeomFromEWKT('SRID=4326;CIRCULARSTRING(-2 0,0 2,2 0,0 2,2 4)'));
+SELECT 'invalid_02', AsKML(GeomFromEWKT('SRID=4326;COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))'));
+SELECT 'invalid_03', AsKML(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 'invalid_04', AsKML(GeomFromEWKT('SRID=4326;MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))'));
+SELECT 'invalid_05', AsKML(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)))'));
 
 -- PARAMETERS
-SELECT AsKML(GeomFromEWKT('SRID=4326;POINT(1 1)'), 0);
-SELECT AsKML(GeomFromEWKT('SRID=4326;POINT(1 1)'), 16);
-SELECT AsKML(3,GeomFromEWKT('SRID=4326;POINT(1 1)'), 15);
+SELECT 'parameter_01', AsKML(GeomFromEWKT('SRID=4326;POINT(1.1111111111111111 1.1111111111111111)'), 0);
+SELECT 'parameter_02', AsKML(GeomFromEWKT('SRID=4326;POINT(1.1111111111111111 1.1111111111111111)'), 16);
+SELECT 'parameter_03', AsKML(3,GeomFromEWKT('SRID=4326;POINT(1.1111111111111111 1.1111111111111111)'), 15);
 
 -- SIMPLE FEATURES
 -- San Felipe de Barajas Fortresses - Cartagena, Colombia (Placemark) http://en.wikipedia.org/wiki/Cartagena%2C_Bol%C3%ADvar
-SELECT AsKML(GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'));
-SELECT AsKML(GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'), 10);
+SELECT 'point_01', AsKML(GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'), 3);
+SELECT 'point_02', AsKML(GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'), 8);
 -- Olaya Herrera Airport - Medellin, Colombia (Path) http://en.wikipedia.org/wiki/Olaya_Herrera_Airport
-SELECT AsKML(GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'));
-SELECT AsKML(GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'), 10);
+SELECT 'linestring_01', AsKML(GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'), 3);
+SELECT 'linestring_02', AsKML(GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'), 8);
 -- Unicentro Shopping Centre - Bogota, Colombia (Polygon) http://www.unicentrobogota.com/
-SELECT AsKML(SnapToGrid(GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 0.000001));
-SELECT AsKML(GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 10);
+SELECT 'polygon_01', AsKML(SnapToGrid(GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 0.000001), 3);
+SELECT 'polygon_02', AsKML(GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 8);
 
 -- MULTI FEATURES
 -- Transmilenio mass-transit system Portal Stations - Bogota, Colombia (Placemarks) http://en.wikipedia.org/wiki/List_of_TransMilenio_Stations
-SELECT AsKML(GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'));
-SELECT AsKML(GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'), 10);
+SELECT 'multipoint_01', AsKML(GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'), 3);
+SELECT 'multipoint_02', AsKML(GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'), 8);
 
 -- REPROJECTED DATA
 -- Sun Door Interchange - Bucaramanga, Colombia (Placemark)
-SELECT AsKML(GeomFromEWKT('SRID=1021892;POINT(1106465.31495947 1277689.13470039)'));
+SELECT 'projection_01', AsKML(GeomFromEWKT('SRID=1021892;POINT(1106465.31495947 1277689.13470039)'), 0);
 -- Chicamocha, Suarez and Fonce rivers confluence - Santander, Colombia (Placemark)
-SELECT AsKML(GeomFromEWKT('SRID=1021892;POINT(1097247.52170185 1240255.74263751)'));
+SELECT 'projection_02', AsKML(GeomFromEWKT('SRID=1021892;POINT(1097247.52170185 1240255.74263751)'), 0);
 -- National Astronomical Observatory of Colombia - Bogota, Colombia (Placemark)
-SELECT AsKML(GeomFromEWKT('SRID=1021892;POINT(1000000 1000000)'));
+SELECT 'projection_03', AsKML(GeomFromEWKT('SRID=1021892;POINT(1000000 1000000)'), 0);
 
 -- Repeat all tests with the new function names.
 -- NO SRID PROVIDED
-SELECT ST_AsKML(ST_GeomFromEWKT('POINT(1 1)'));
+SELECT 'no_srid_03', ST_AsKML(ST_GeomFromEWKT('POINT(1 1)'));
 
 -- UNSUPPORTED GEOMETRY TYPES
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;CIRCULARSTRING(-2 0,0 2,2 0,0 2,2 4)'));
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))'));
-SELECT ST_AsKML(ST_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_AsKML(ST_GeomFromEWKT('SRID=4326;MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))'));
-SELECT ST_AsKML(ST_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)))'));
+SELECT 'invalid_06', ST_AsKML(ST_GeomFromEWKT('SRID=4326;CIRCULARSTRING(-2 0,0 2,2 0,0 2,2 4)'));
+SELECT 'invalid_07', ST_AsKML(ST_GeomFromEWKT('SRID=4326;COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))'));
+SELECT 'invalid_08', ST_AsKML(ST_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 'invalid_09', ST_AsKML(ST_GeomFromEWKT('SRID=4326;MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,2 1,2 2))'));
+SELECT 'invalid_10', ST_AsKML(ST_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)))'));
 
 -- PARAMETERS
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(1 1)'), 0);
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(1 1)'), 16);
-SELECT ST_AsKML(3,ST_GeomFromEWKT('SRID=4326;POINT(1 1)'), 15);
+SELECT 'parameter_04', ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(1.1111111111111111 1.1111111111111111)'), 0);
+SELECT 'parameter_05', ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(1.1111111111111111 1.1111111111111111)'), 16);
+SELECT 'parameter_06', ST_AsKML(3,ST_GeomFromEWKT('SRID=4326;POINT(1.1111111111111111 1.1111111111111111)'), 15);
 
 -- SIMPLE FEATURES
 -- San Felipe de Barajas Fortresses - Cartagena, Colombia (Placemark) http://en.wikipedia.org/wiki/Cartagena%2C_Bol%C3%ADvar
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'));
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'), 10);
+SELECT 'point_03', ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'));
+SELECT 'point_04', ST_AsKML(ST_GeomFromEWKT('SRID=4326;POINT(-75.55217297757488 10.42033663453054)'), 8);
 -- Olaya Herrera Airport - Medellin, Colombia (Path) http://en.wikipedia.org/wiki/Olaya_Herrera_Airport
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'));
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'), 10);
+SELECT 'linestring_03', ST_AsKML(ST_GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'), 3);
+SELECT 'linestring_04', ST_AsKML(ST_GeomFromEWKT('SRID=4326;LINESTRING(-75.58845168747847 6.230811711917435, -75.59257646818483 6.209034252575331)'), 8);
 -- Unicentro Shopping Centre - Bogota, Colombia (Polygon) http://www.unicentrobogota.com/
-SELECT ST_AsKML(ST_SnapToGrid(GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 0.000001));
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 10);
+SELECT 'polygon_03', ST_AsKML(ST_SnapToGrid(GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 0.000001), 3);
+SELECT 'polygon_04', ST_AsKML(ST_GeomFromEWKT('SRID=4326;POLYGON((-74.0423991077642 4.70128819450968, -74.04209925973704 4.700950993650923, -74.0420182951016 4.701011516462908, -74.04183483125468 4.700831448835688, -74.0414862905795 4.70114015046422, -74.04132847200927 4.70097698051241, -74.04101990886149 4.701244756502166, -74.0411777421693 4.701425554204853, -74.04087244656924 4.701697127180076, -74.040940643764 4.701773680406961, -74.04089952744008 4.702605660205299, -74.04082413388542 4.702677666010084, -74.04106565350325 4.702949831221687, -74.04087265096442 4.703121094787139, -74.04118884713594 4.7034683330851, -74.04138264686453 4.703308983914091, -74.04173931195382 4.703688847671272, -74.04192370456995 4.703528238994438, -74.0419535628069 4.70355486096117, -74.04230657961881 4.703239478084376, -74.04207492135191 4.702978242710751, -74.0421546959669 4.702907817351857, -74.04195032608129 4.70267512672329, -74.04209558069562 4.702533577124568, -74.04203505048247 4.702466795922, -74.04205318281811 4.702038077671765, -74.04212335562635 4.701974337580458, -74.04198589330784 4.701816901909086, -74.04222167646385 4.70160442413543, -74.04214901975594 4.701519995786457, -74.0423991077642 4.70128819450968))'), 8);
 
 -- MULTI FEATURES
 -- Transmilenio mass-transit system Portal Stations - Bogota, Colombia (Placemarks) http://en.wikipedia.org/wiki/List_of_TransMilenio_Stations
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'));
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'), 10);
+SELECT 'multipoint_03', ST_AsKML(ST_GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'), 3);
+SELECT 'multipoint_04', ST_AsKML(ST_GeomFromEWKT('SRID=4326;MULTIPOINT((-74.04603457594773 4.754687006656519),(-74.095833 4.746435),(-74.11037547492613 4.7098754227297),(-74.120148 4.533696))'), 8);
 
 -- REPROJECTED DATA
 -- Sun Door Interchange - Bucaramanga, Colombia (Placemark)
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=1021892;POINT(1106465.31495947 1277689.13470039)'));
+SELECT 'projection_04', ST_AsKML(ST_GeomFromEWKT('SRID=1021892;POINT(1106465.31495947 1277689.13470039)'), 3);
 -- Chicamocha, Suarez and Fonce rivers confluence - Santander, Colombia (Placemark)
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=1021892;POINT(1097247.52170185 1240255.74263751)'));
+SELECT 'projection_05', ST_AsKML(ST_GeomFromEWKT('SRID=1021892;POINT(1097247.52170185 1240255.74263751)'), 8);
 -- National Astronomical Observatory of Colombia - Bogota, Colombia (Placemark)
-SELECT ST_AsKML(ST_GeomFromEWKT('SRID=1021892;POINT(1000000 1000000)'));
+SELECT 'projection_06', ST_AsKML(ST_GeomFromEWKT('SRID=1021892;POINT(1000000 1000000)'), 3);
 
 DELETE FROM spatial_ref_sys WHERE srid = 4326;
 DELETE FROM spatial_ref_sys WHERE srid >= 1000000;

Modified: trunk/regress/kml_expected
===================================================================
--- trunk/regress/kml_expected	2009-02-10 07:54:19 UTC (rev 3676)
+++ trunk/regress/kml_expected	2009-02-10 08:00:39 UTC (rev 3677)
@@ -5,37 +5,37 @@
 ERROR:  geometry_to_kml: 'CurvePolygon' geometry type not supported by Google Earth
 ERROR:  geometry_to_kml: 'MultiCurve' geometry type not supported by Google Earth
 ERROR:  geometry_to_kml: 'MultiSurface' geometry type not supported by Google Earth
-ERROR:  Precision out of range 1..15
-ERROR:  Precision out of range 1..15
+parameter_01|<Point><coordinates>1,1</coordinates></Point>
+parameter_02|<Point><coordinates>1.111111111111111,1.111111111111111</coordinates></Point>
 ERROR:  Only KML 2 is supported
-<Point><coordinates>-75.5521729775749,10.4203366345305</coordinates></Point>
-<Point><coordinates>-75.55217298,10.42033663</coordinates></Point>
-<LineString><coordinates>-75.5884516874785,6.23081171191744 -75.5925764681848,6.20903425257533</coordinates></LineString>
-<LineString><coordinates>-75.58845169,6.230811712 -75.59257647,6.209034253</coordinates></LineString>
-<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.042399,4.701288 -74.042099,4.700951 -74.042018,4.701012 -74.041835,4.700831 -74.041486,4.70114 -74.041328,4.700977 -74.04102,4.701245 -74.041178,4.701426 -74.040872,4.701697 -74.040941,4.701774 -74.0409,4.702606 -74.040824,4.702678 -74.041066,4.70295 -74.040873,4.703121 -74.041189,4.703468 -74.041383,4.703309 -74.041739,4.703689 -74.041924,4.703528 -74.041954,4.703555 -74.042307,4.703239 -74.042075,4.702978 -74.042155,4.702908 -74.04195,4.702675 -74.042096,4.702534 -74.042035,4.702467 -74.042053,4.702038 -74.042123,4.701974 -74.041986,4.701817 -74.042222,4.701604 -74.042149,4.70152 -74.042399,4.701288</coordinates></LinearRing></outerBoundaryIs></Polygon>
-<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.04239911,4.701288195 -74.04209926,4.700950994 -74.0420183,4.701011516 -74.04183483,4.700831449 -74.04148629,4.70114015 -74.04132847,4.700976981 -74.04101991,4.701244757 -74.04117774,4.701425554 -74.04087245,4.701697127 -74.04094064,4.70177368 -74.04089953,4.70260566 -74.04082413,4.702677666 -74.04106565,4.702949831 -74.04087265,4.703121095 -74.04118885,4.703468333 -74.04138265,4.703308984 -74.04173931,4.703688848 -74.0419237,4.703528239 -74.04195356,4.703554861 -74.04230658,4.703239478 -74.04207492,4.702978243 -74.0421547,4.702907817 -74.04195033,4.702675127 -74.04209558,4.702533577 -74.04203505,4.702466796 -74.04205318,4.702038078 -74.04212336,4.701974338 -74.04198589,4.701816902 -74.04222168,4.701604424 -74.04214902,4.701519996 -74.04239911,4.701288195</coordinates></LinearRing></outerBoundaryIs></Polygon>
-<MultiGeometry><Point><coordinates>-74.0460345759477,4.75468700665652</coordinates></Point><Point><coordinates>-74.095833,4.746435</coordinates></Point><Point><coordinates>-74.1103754749261,4.7098754227297</coordinates></Point><Point><coordinates>-74.120148,4.533696</coordinates></Point></MultiGeometry>
-<MultiGeometry><Point><coordinates>-74.04603458,4.754687007</coordinates></Point><Point><coordinates>-74.095833,4.746435</coordinates></Point><Point><coordinates>-74.11037547,4.709875423</coordinates></Point><Point><coordinates>-74.120148,4.533696</coordinates></Point></MultiGeometry>
-<Point><coordinates>-73.1137865115871,7.10625638610512</coordinates></Point>
-<Point><coordinates>-73.1978481045547,6.76797715816346</coordinates></Point>
-<Point><coordinates>-74.0775046875181,4.59620005298432</coordinates></Point>
+point_01|<Point><coordinates>-75.552,10.42</coordinates></Point>
+point_02|<Point><coordinates>-75.55217298,10.42033663</coordinates></Point>
+linestring_01|<LineString><coordinates>-75.588,6.231 -75.593,6.209</coordinates></LineString>
+linestring_02|<LineString><coordinates>-75.58845169,6.23081171 -75.59257647,6.20903425</coordinates></LineString>
+polygon_01|<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.042,4.701 -74.042,4.701 -74.042,4.701 -74.042,4.701 -74.041,4.701 -74.041,4.701 -74.041,4.701 -74.041,4.701 -74.041,4.702 -74.041,4.702 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.042,4.704 -74.042,4.704 -74.042,4.704 -74.042,4.703 -74.042,4.703 -74.042,4.703 -74.042,4.703 -74.042,4.703 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.701</coordinates></LinearRing></outerBoundaryIs></Polygon>
+polygon_02|<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.04239911,4.70128819 -74.04209926,4.70095099 -74.0420183,4.70101152 -74.04183483,4.70083145 -74.04148629,4.70114015 -74.04132847,4.70097698 -74.04101991,4.70124476 -74.04117774,4.70142555 -74.04087245,4.70169713 -74.04094064,4.70177368 -74.04089953,4.70260566 -74.04082413,4.70267767 -74.04106565,4.70294983 -74.04087265,4.70312109 -74.04118885,4.70346833 -74.04138265,4.70330898 -74.04173931,4.70368885 -74.0419237,4.70352824 -74.04195356,4.70355486 -74.04230658,4.70323948 -74.04207492,4.70297824 -74.0421547,4.70290782 -74.04195033,4.70267513 -74.04209558,4.70253358 -74.04203505,4.7024668 -74.04205318,4.70203808 -74.04212336,4.70197434 -74.04198589,4.7018169 -74.04222168,4.70160442 -74.04214902,4.70152 -74.04239911,4.70128819</coordinates></LinearRing></outerBoundaryIs></Polygon>
+multipoint_01|<MultiGeometry><Point><coordinates>-74.046,4.755</coordinates></Point><Point><coordinates>-74.096,4.746</coordinates></Point><Point><coordinates>-74.11,4.71</coordinates></Point><Point><coordinates>-74.12,4.534</coordinates></Point></MultiGeometry>
+multipoint_02|<MultiGeometry><Point><coordinates>-74.04603458,4.75468701</coordinates></Point><Point><coordinates>-74.095833,4.746435</coordinates></Point><Point><coordinates>-74.11037547,4.70987542</coordinates></Point><Point><coordinates>-74.120148,4.533696</coordinates></Point></MultiGeometry>
+projection_01|<Point><coordinates>-73,7</coordinates></Point>
+projection_02|<Point><coordinates>-73,7</coordinates></Point>
+projection_03|<Point><coordinates>-74,5</coordinates></Point>
 ERROR:  Input geometry has unknown (-1) SRID
 ERROR:  geometry_to_kml: 'CircularString' geometry type not supported by Google Earth
 ERROR:  geometry_to_kml: 'CompoundString' geometry type not supported by Google Earth
 ERROR:  geometry_to_kml: 'CurvePolygon' geometry type not supported by Google Earth
 ERROR:  geometry_to_kml: 'MultiCurve' geometry type not supported by Google Earth
 ERROR:  geometry_to_kml: 'MultiSurface' geometry type not supported by Google Earth
-ERROR:  Precision out of range 1..15
-ERROR:  Precision out of range 1..15
+parameter_04|<Point><coordinates>1,1</coordinates></Point>
+parameter_05|<Point><coordinates>1.111111111111111,1.111111111111111</coordinates></Point>
 ERROR:  Only KML 2 is supported
-<Point><coordinates>-75.5521729775749,10.4203366345305</coordinates></Point>
-<Point><coordinates>-75.55217298,10.42033663</coordinates></Point>
-<LineString><coordinates>-75.5884516874785,6.23081171191744 -75.5925764681848,6.20903425257533</coordinates></LineString>
-<LineString><coordinates>-75.58845169,6.230811712 -75.59257647,6.209034253</coordinates></LineString>
-<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.042399,4.701288 -74.042099,4.700951 -74.042018,4.701012 -74.041835,4.700831 -74.041486,4.70114 -74.041328,4.700977 -74.04102,4.701245 -74.041178,4.701426 -74.040872,4.701697 -74.040941,4.701774 -74.0409,4.702606 -74.040824,4.702678 -74.041066,4.70295 -74.040873,4.703121 -74.041189,4.703468 -74.041383,4.703309 -74.041739,4.703689 -74.041924,4.703528 -74.041954,4.703555 -74.042307,4.703239 -74.042075,4.702978 -74.042155,4.702908 -74.04195,4.702675 -74.042096,4.702534 -74.042035,4.702467 -74.042053,4.702038 -74.042123,4.701974 -74.041986,4.701817 -74.042222,4.701604 -74.042149,4.70152 -74.042399,4.701288</coordinates></LinearRing></outerBoundaryIs></Polygon>
-<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.04239911,4.701288195 -74.04209926,4.700950994 -74.0420183,4.701011516 -74.04183483,4.700831449 -74.04148629,4.70114015 -74.04132847,4.700976981 -74.04101991,4.701244757 -74.04117774,4.701425554 -74.04087245,4.701697127 -74.04094064,4.70177368 -74.04089953,4.70260566 -74.04082413,4.702677666 -74.04106565,4.702949831 -74.04087265,4.703121095 -74.04118885,4.703468333 -74.04138265,4.703308984 -74.04173931,4.703688848 -74.0419237,4.703528239 -74.04195356,4.703554861 -74.04230658,4.703239478 -74.04207492,4.702978243 -74.0421547,4.702907817 -74.04195033,4.702675127 -74.04209558,4.702533577 -74.04203505,4.702466796 -74.04205318,4.702038078 -74.04212336,4.701974338 -74.04198589,4.701816902 -74.04222168,4.701604424 -74.04214902,4.701519996 -74.04239911,4.701288195</coordinates></LinearRing></outerBoundaryIs></Polygon>
-<MultiGeometry><Point><coordinates>-74.0460345759477,4.75468700665652</coordinates></Point><Point><coordinates>-74.095833,4.746435</coordinates></Point><Point><coordinates>-74.1103754749261,4.7098754227297</coordinates></Point><Point><coordinates>-74.120148,4.533696</coordinates></Point></MultiGeometry>
-<MultiGeometry><Point><coordinates>-74.04603458,4.754687007</coordinates></Point><Point><coordinates>-74.095833,4.746435</coordinates></Point><Point><coordinates>-74.11037547,4.709875423</coordinates></Point><Point><coordinates>-74.120148,4.533696</coordinates></Point></MultiGeometry>
-<Point><coordinates>-73.1137865115871,7.10625638610512</coordinates></Point>
-<Point><coordinates>-73.1978481045547,6.76797715816346</coordinates></Point>
-<Point><coordinates>-74.0775046875181,4.59620005298432</coordinates></Point>
+point_03|<Point><coordinates>-75.552172977574884,10.420336634530541</coordinates></Point>
+point_04|<Point><coordinates>-75.55217298,10.42033663</coordinates></Point>
+linestring_03|<LineString><coordinates>-75.588,6.231 -75.593,6.209</coordinates></LineString>
+linestring_04|<LineString><coordinates>-75.58845169,6.23081171 -75.59257647,6.20903425</coordinates></LineString>
+polygon_03|<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.042,4.701 -74.042,4.701 -74.042,4.701 -74.042,4.701 -74.041,4.701 -74.041,4.701 -74.041,4.701 -74.041,4.701 -74.041,4.702 -74.041,4.702 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.041,4.703 -74.042,4.704 -74.042,4.704 -74.042,4.704 -74.042,4.703 -74.042,4.703 -74.042,4.703 -74.042,4.703 -74.042,4.703 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.702 -74.042,4.701</coordinates></LinearRing></outerBoundaryIs></Polygon>
+polygon_04|<Polygon><outerBoundaryIs><LinearRing><coordinates>-74.04239911,4.70128819 -74.04209926,4.70095099 -74.0420183,4.70101152 -74.04183483,4.70083145 -74.04148629,4.70114015 -74.04132847,4.70097698 -74.04101991,4.70124476 -74.04117774,4.70142555 -74.04087245,4.70169713 -74.04094064,4.70177368 -74.04089953,4.70260566 -74.04082413,4.70267767 -74.04106565,4.70294983 -74.04087265,4.70312109 -74.04118885,4.70346833 -74.04138265,4.70330898 -74.04173931,4.70368885 -74.0419237,4.70352824 -74.04195356,4.70355486 -74.04230658,4.70323948 -74.04207492,4.70297824 -74.0421547,4.70290782 -74.04195033,4.70267513 -74.04209558,4.70253358 -74.04203505,4.7024668 -74.04205318,4.70203808 -74.04212336,4.70197434 -74.04198589,4.7018169 -74.04222168,4.70160442 -74.04214902,4.70152 -74.04239911,4.70128819</coordinates></LinearRing></outerBoundaryIs></Polygon>
+multipoint_03|<MultiGeometry><Point><coordinates>-74.046,4.755</coordinates></Point><Point><coordinates>-74.096,4.746</coordinates></Point><Point><coordinates>-74.11,4.71</coordinates></Point><Point><coordinates>-74.12,4.534</coordinates></Point></MultiGeometry>
+multipoint_04|<MultiGeometry><Point><coordinates>-74.04603458,4.75468701</coordinates></Point><Point><coordinates>-74.095833,4.746435</coordinates></Point><Point><coordinates>-74.11037547,4.70987542</coordinates></Point><Point><coordinates>-74.120148,4.533696</coordinates></Point></MultiGeometry>
+projection_04|<Point><coordinates>-73.114,7.106</coordinates></Point>
+projection_05|<Point><coordinates>-73.1978481,6.76797716</coordinates></Point>
+projection_06|<Point><coordinates>-74.078,4.596</coordinates></Point>



More information about the postgis-commits mailing list