[geos-commits] r3027 - in trunk/php: . test

svn_geos at osgeo.org svn_geos at osgeo.org
Sat Jun 19 14:13:21 EDT 2010


Author: strk
Date: 2010-06-19 18:13:21 +0000 (Sat, 19 Jun 2010)
New Revision: 3027

Modified:
   trunk/php/geos.c
   trunk/php/test/test.php
Log:
More Geometry methods: envelope, intersection, convexHull, difference, symDifference, boundary, union (including cascaded)


Modified: trunk/php/geos.c
===================================================================
--- trunk/php/geos.c	2010-06-19 17:14:08 UTC (rev 3026)
+++ trunk/php/geos.c	2010-06-19 18:13:21 UTC (rev 3027)
@@ -178,6 +178,13 @@
 PHP_METHOD(Geometry, project);
 PHP_METHOD(Geometry, interpolate);
 PHP_METHOD(Geometry, buffer);
+PHP_METHOD(Geometry, envelope);
+PHP_METHOD(Geometry, intersection);
+PHP_METHOD(Geometry, convexHull);
+PHP_METHOD(Geometry, difference);
+PHP_METHOD(Geometry, symDifference);
+PHP_METHOD(Geometry, boundary);
+PHP_METHOD(Geometry, union); /* also does union cascaded */
 
 PHP_METHOD(Geometry, numGeometries);
 
@@ -186,6 +193,13 @@
     PHP_ME(Geometry, project, NULL, 0)
     PHP_ME(Geometry, interpolate, NULL, 0)
     PHP_ME(Geometry, buffer, NULL, 0)
+    PHP_ME(Geometry, envelope, NULL, 0)
+    PHP_ME(Geometry, intersection, NULL, 0)
+    PHP_ME(Geometry, convexHull, NULL, 0)
+    PHP_ME(Geometry, difference, NULL, 0)
+    PHP_ME(Geometry, symDifference, NULL, 0)
+    PHP_ME(Geometry, boundary, NULL, 0)
+    PHP_ME(Geometry, union, NULL, 0)
     PHP_ME(Geometry, numGeometries, NULL, 0)
     {NULL, NULL, NULL}
 };
@@ -285,7 +299,7 @@
     setRelay(return_value, ret);
 }
 
-/*
+/**
  * GEOSGeometry::buffer(dist, [<styleArray>])
  *
  * styleArray keys supported:
@@ -370,6 +384,152 @@
     setRelay(return_value, ret);
 }
 
+PHP_METHOD(Geometry, envelope)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *ret;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    ret = GEOSEnvelope(this);
+    if ( ! ret ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
+PHP_METHOD(Geometry, intersection)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *other;
+    GEOSGeometry *ret;
+    zval *zobj;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &zobj)
+            == FAILURE) {
+        RETURN_NULL();
+    }
+    other = getRelay(zobj, Geometry_ce_ptr);
+
+    ret = GEOSIntersection(this, other);
+    if ( ! ret ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
+PHP_METHOD(Geometry, convexHull)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *ret;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    ret = GEOSConvexHull(this);
+    if ( ret == NULL ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
+PHP_METHOD(Geometry, difference)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *other;
+    GEOSGeometry *ret;
+    zval *zobj;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &zobj)
+            == FAILURE) {
+        RETURN_NULL();
+    }
+    other = getRelay(zobj, Geometry_ce_ptr);
+
+    ret = GEOSDifference(this, other);
+    if ( ! ret ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
+PHP_METHOD(Geometry, symDifference)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *other;
+    GEOSGeometry *ret;
+    zval *zobj;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &zobj)
+            == FAILURE) {
+        RETURN_NULL();
+    }
+    other = getRelay(zobj, Geometry_ce_ptr);
+
+    ret = GEOSSymDifference(this, other);
+    if ( ! ret ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
+PHP_METHOD(Geometry, boundary)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *ret;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    ret = GEOSBoundary(this);
+    if ( ret == NULL ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
+/**
+ * GEOSGeometry::union(otherGeom)
+ * GEOSGeometry::union()
+ */
+PHP_METHOD(Geometry, union)
+{
+    GEOSGeometry *this;
+    GEOSGeometry *other;
+    GEOSGeometry *ret;
+    zval *zobj = NULL;
+
+    this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|o", &zobj)
+            == FAILURE) {
+        RETURN_NULL();
+    }
+
+    if ( zobj ) {
+        other = getRelay(zobj, Geometry_ce_ptr);
+        ret = GEOSUnion(this, other);
+    } else {
+        ret = GEOSUnionCascaded(this);
+    }
+
+    if ( ! ret ) RETURN_NULL(); /* should get an exception first */
+
+    /* return_value is a zval */
+    object_init_ex(return_value, Geometry_ce_ptr);
+    setRelay(return_value, ret);
+}
+
 /* -- class GEOSWKTReader -------------------- */
 
 PHP_METHOD(WKTReader, __construct);

Modified: trunk/php/test/test.php
===================================================================
--- trunk/php/test/test.php	2010-06-19 17:14:08 UTC (rev 3026)
+++ trunk/php/test/test.php	2010-06-19 18:13:21 UTC (rev 3027)
@@ -433,4 +433,374 @@
 
 
     }
+
+    public function testGeometry_envelope()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        $g = $reader->read('POINT(0 0)');
+        $b = $g->envelope();
+        $this->assertEquals(
+'POINT (0 0)'
+            , $writer->write($b));
+
+        $g = $reader->read('LINESTRING(0 0, 10 10)');
+        $b = $g->envelope();
+        $this->assertEquals(
+'POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))'
+            , $writer->write($b));
+
+    }
+
+    public function testGeometry_intersection()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        /* POINT - POINT */
+        $g = $reader->read('POINT(0 0)');
+        $g2 = $reader->read('POINT(0 0)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'POINT (0 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('POINT(1 0)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'GEOMETRYCOLLECTION EMPTY'
+            , $writer->write($gi));
+
+        /* POINT - LINE */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('POINT(5 0)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'POINT (5 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('POINT(12 0)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'GEOMETRYCOLLECTION EMPTY'
+            , $writer->write($gi));
+
+        /* LINE - LINE */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'POINT (5 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(5 0, 20 0)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'LINESTRING (5 0, 10 0)'
+            , $writer->write($gi));
+
+        /* LINE - POLY */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'LINESTRING (5 0, 5 10)'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(10 0, 20 0)');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'POINT (10 0)'
+            , $writer->write($gi));
+
+        /* POLY - POLY */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))');
+        $gi = $g->intersection($g2);
+        $this->assertEquals(
+'POLYGON ((10 5, 10 0, 5 0, 5 5, 10 5))'
+            , $writer->write($gi));
+        $g2 = $reader->read('POLYGON((10 0, 20 0, 20 -5, 10 -5, 10 0))');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'POINT (10 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('POLYGON((8 0, 20 0, 20 -5, 10 -5, 8 0))');
+        $gi = $g->intersection($g2);
+        $this->assertEquals( 'LINESTRING (8 0, 10 0)'
+            , $writer->write($gi));
+    }
+
+    public function testGeometry_convexHull()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        $g = $reader->read('POINT(0 0)');
+        $b = $g->convexHull();
+        $this->assertEquals(
+'POINT (0 0)'
+            , $writer->write($b));
+
+        $g = $reader->read('LINESTRING(0 0, 10 10)');
+        $b = $g->convexHull();
+        $this->assertEquals(
+'LINESTRING (0 0, 10 10)'
+            , $writer->write($b));
+
+        $g = $reader->read('POLYGON((0 0, 0 10, 5 5, 10 10, 10 0, 0 0))');
+        $b = $g->convexHull();
+        $this->assertEquals(
+'POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))'
+            , $writer->write($b));
+
+    }
+
+    public function testGeometry_difference()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        /* POINT - POINT */
+        $g = $reader->read('POINT(0 0)');
+        $g2 = $reader->read('POINT(0 0)');
+        $gi = $g->difference($g2);
+        $this->assertEquals( 'GEOMETRYCOLLECTION EMPTY'
+            , $writer->write($gi));
+        $g2 = $reader->read('POINT(1 0)');
+        $gi = $g->difference($g2);
+        $this->assertEquals( 'POINT (0 0)'
+            , $writer->write($gi));
+
+        /* LINE - POINT */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('POINT(5 0)');
+        $gi = $g->difference($g2);
+        $this->assertEquals('LINESTRING (0 0, 10 0)'
+            , $writer->write($gi));
+
+        /* POINT - LINE */
+        $g = $reader->read('POINT(5 0)');
+        $g2 = $reader->read('LINESTRING(0 0, 10 0)');
+        $gi = $g->difference($g2);
+        $this->assertEquals('GEOMETRYCOLLECTION EMPTY'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(0 1, 10 1)');
+        $gi = $g->difference($g2);
+        $this->assertEquals( 'POINT (5 0)'
+            , $writer->write($gi));
+
+        /* LINE - LINE */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->difference($g2);
+        $this->assertEquals( 'MULTILINESTRING ((0 0, 5 0), (5 0, 10 0))'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(5 0, 20 0)');
+        $gi = $g->difference($g2);
+        $this->assertEquals( 'LINESTRING (0 0, 5 0)'
+            , $writer->write($gi));
+
+        /* POLY - LINE */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->difference($g2);
+        $this->assertEquals(
+'POLYGON ((5 0, 0 0, 0 10, 5 10, 10 10, 10 0, 5 0))'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(10 0, 20 0)');
+        $gi = $g->difference($g2);
+        $this->assertEquals(
+'POLYGON ((10 0, 0 0, 0 10, 10 10, 10 0))'
+            , $writer->write($gi));
+
+        /* POLY - POLY */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))');
+        $gi = $g->difference($g2);
+        $this->assertEquals(
+'POLYGON ((5 0, 0 0, 0 10, 10 10, 10 5, 5 5, 5 0))'
+            , $writer->write($gi));
+    }
+
+    public function testGeometry_symdifference()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        /* POINT - POINT */
+        $g = $reader->read('POINT(0 0)');
+        $g2 = $reader->read('POINT(0 0)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals( 'GEOMETRYCOLLECTION EMPTY'
+            , $writer->write($gi));
+        $g2 = $reader->read('POINT(1 0)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals( 'MULTIPOINT (0 0, 1 0)'
+            , $writer->write($gi));
+
+        /* LINE - POINT */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('POINT(5 0)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals('LINESTRING (0 0, 10 0)'
+            , $writer->write($gi));
+
+        /* POINT - LINE */
+        $g = $reader->read('POINT(5 0)');
+        $g2 = $reader->read('LINESTRING(0 0, 10 0)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals( 'LINESTRING (0 0, 10 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(0 1, 10 1)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals(
+'GEOMETRYCOLLECTION (POINT (5 0), LINESTRING (0 1, 10 1))'
+            , $writer->write($gi));
+
+        /* LINE - LINE */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals(
+'MULTILINESTRING ((0 0, 5 0), (5 0, 10 0), (5 -10, 5 0), (5 0, 5 10))'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(5 0, 20 0)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals(
+'MULTILINESTRING ((0 0, 5 0), (10 0, 20 0))'
+            , $writer->write($gi));
+
+        /* POLY - LINE */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals(
+'GEOMETRYCOLLECTION (LINESTRING (5 -10, 5 0), POLYGON ((5 0, 0 0, 0 10, 5 10, 10 10, 10 0, 5 0)))'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(10 0, 20 0)');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals(
+'GEOMETRYCOLLECTION (LINESTRING (10 0, 20 0), POLYGON ((10 0, 0 0, 0 10, 10 10, 10 0)))'
+            , $writer->write($gi));
+
+        /* POLY - POLY */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))');
+        $gi = $g->symDifference($g2);
+        $this->assertEquals(
+'MULTIPOLYGON (((5 0, 0 0, 0 10, 10 10, 10 5, 5 5, 5 0)), ((5 0, 10 0, 10 5, 15 5, 15 -5, 5 -5, 5 0)))'
+            , $writer->write($gi));
+    }
+
+    public function testGeometry_boundary()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        $g = $reader->read('POINT(0 0)');
+        $b = $g->boundary();
+        $this->assertEquals(
+'GEOMETRYCOLLECTION EMPTY'
+            , $writer->write($b));
+
+        $g = $reader->read('LINESTRING(0 0, 10 10)');
+        $b = $g->boundary();
+        $this->assertEquals(
+'MULTIPOINT (0 0, 10 10)'
+            , $writer->write($b));
+
+        $g = $reader->read(
+'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),( 5 5, 5 6, 6 6, 6 5, 5 5))');
+        $b = $g->boundary();
+        $this->assertEquals(
+'MULTILINESTRING ((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 5 6, 6 6, 6 5, 5 5))'
+            , $writer->write($b));
+
+    }
+
+    public function testGeometry_union()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        /* POINT - POINT */
+        $g = $reader->read('POINT(0 0)');
+        $g2 = $reader->read('POINT(0 0)');
+        $gi = $g->union($g2);
+        $this->assertEquals( 'POINT (0 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('POINT(1 0)');
+        $gi = $g->union($g2);
+        $this->assertEquals( 'MULTIPOINT (0 0, 1 0)'
+            , $writer->write($gi));
+
+        /* LINE - POINT */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('POINT(5 0)');
+        $gi = $g->union($g2);
+        $this->assertEquals('LINESTRING (0 0, 10 0)'
+            , $writer->write($gi));
+
+        /* POINT - LINE */
+        $g = $reader->read('POINT(5 0)');
+        $g2 = $reader->read('LINESTRING(0 0, 10 0)');
+        $gi = $g->union($g2);
+        $this->assertEquals( 'LINESTRING (0 0, 10 0)'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(0 1, 10 1)');
+        $gi = $g->union($g2);
+        $this->assertEquals(
+'GEOMETRYCOLLECTION (POINT (5 0), LINESTRING (0 1, 10 1))'
+            , $writer->write($gi));
+
+        /* LINE - LINE */
+        $g = $reader->read('LINESTRING(0 0, 10 0)');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->union($g2);
+        $this->assertEquals(
+'MULTILINESTRING ((0 0, 5 0), (5 0, 10 0), (5 -10, 5 0), (5 0, 5 10))'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(5 0, 20 0)');
+        $gi = $g->union($g2);
+        $this->assertEquals(
+'MULTILINESTRING ((0 0, 5 0), (5 0, 10 0), (10 0, 20 0))'
+            , $writer->write($gi));
+
+        /* POLY - LINE */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('LINESTRING(5 -10, 5 10)');
+        $gi = $g->union($g2);
+        $this->assertEquals(
+'GEOMETRYCOLLECTION (LINESTRING (5 -10, 5 0), POLYGON ((5 0, 0 0, 0 10, 5 10, 10 10, 10 0, 5 0)))'
+            , $writer->write($gi));
+        $g2 = $reader->read('LINESTRING(10 0, 20 0)');
+        $gi = $g->union($g2);
+        $this->assertEquals(
+'GEOMETRYCOLLECTION (LINESTRING (10 0, 20 0), POLYGON ((10 0, 0 0, 0 10, 10 10, 10 0)))'
+            , $writer->write($gi));
+
+        /* POLY - POLY */
+        $g = $reader->read('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))');
+        $g2 = $reader->read('POLYGON((5 -5, 5 5, 15 5, 15 -5, 5 -5))');
+        $gi = $g->union($g2);
+        $this->assertEquals(
+'POLYGON ((5 0, 0 0, 0 10, 10 10, 10 5, 15 5, 15 -5, 5 -5, 5 0))'
+            , $writer->write($gi));
+    }
+
+    public function testGeometry_unionCascaded()
+    {
+        $reader = new GEOSWKTReader();
+        $writer = new GEOSWKTWriter();
+        $writer->setRoundingPrecision(0);
+
+        $g = $reader->read('MULTIPOLYGON(
+                 ((0 0, 1 0, 1 1, 0 1, 0 0)),
+                 ((10 10, 10 14, 14 14, 14 10, 10 10),
+                  (11 11, 11 12, 12 12, 12 11, 11 11)),
+                 ((0 0, 11 0, 11 11, 0 11, 0 0))
+                ))');
+
+        $gu = $g->union();
+        $this->assertEquals(
+'POLYGON ((1 0, 0 0, 0 1, 0 11, 10 11, 10 14, 14 14, 14 10, 11 10, 11 0, 1 0), (11 11, 12 11, 12 12, 11 12, 11 11))'
+            , $writer->write($gu));
+
+    }
 }



More information about the geos-commits mailing list