[geos-commits] r3028 - in trunk/php: . test
svn_geos at osgeo.org
svn_geos at osgeo.org
Sat Jun 19 14:27:12 EDT 2010
Author: strk
Date: 2010-06-19 18:27:12 +0000 (Sat, 19 Jun 2010)
New Revision: 3028
Modified:
trunk/php/geos.c
trunk/php/test/test.php
Log:
Geometry->{pointOnSurface,centroid}
Modified: trunk/php/geos.c
===================================================================
--- trunk/php/geos.c 2010-06-19 18:13:21 UTC (rev 3027)
+++ trunk/php/geos.c 2010-06-19 18:27:12 UTC (rev 3028)
@@ -185,6 +185,8 @@
PHP_METHOD(Geometry, symDifference);
PHP_METHOD(Geometry, boundary);
PHP_METHOD(Geometry, union); /* also does union cascaded */
+PHP_METHOD(Geometry, pointOnSurface);
+PHP_METHOD(Geometry, centroid);
PHP_METHOD(Geometry, numGeometries);
@@ -200,6 +202,9 @@
PHP_ME(Geometry, symDifference, NULL, 0)
PHP_ME(Geometry, boundary, NULL, 0)
PHP_ME(Geometry, union, NULL, 0)
+ PHP_ME(Geometry, pointOnSurface, NULL, 0)
+ PHP_ME(Geometry, centroid, NULL, 0)
+
PHP_ME(Geometry, numGeometries, NULL, 0)
{NULL, NULL, NULL}
};
@@ -530,6 +535,42 @@
setRelay(return_value, ret);
}
+/**
+ * GEOSGeometry::pointOnSurface()
+ */
+PHP_METHOD(Geometry, pointOnSurface)
+{
+ GEOSGeometry *this;
+ GEOSGeometry *ret;
+
+ this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+ ret = GEOSPointOnSurface(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::centroid()
+ */
+PHP_METHOD(Geometry, centroid)
+{
+ GEOSGeometry *this;
+ GEOSGeometry *ret;
+
+ this = (GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);
+
+ ret = GEOSGetCentroid(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);
+}
+
/* -- class GEOSWKTReader -------------------- */
PHP_METHOD(WKTReader, __construct);
Modified: trunk/php/test/test.php
===================================================================
--- trunk/php/test/test.php 2010-06-19 18:13:21 UTC (rev 3027)
+++ trunk/php/test/test.php 2010-06-19 18:27:12 UTC (rev 3028)
@@ -803,4 +803,54 @@
, $writer->write($gu));
}
+
+ public function testGeometry_pointOnSurface()
+ {
+ $reader = new GEOSWKTReader();
+ $writer = new GEOSWKTWriter();
+ $writer->setRoundingPrecision(0);
+
+ $g = $reader->read('POINT(0 0)');
+ $b = $g->pointOnSurface();
+ $this->assertEquals(
+'POINT (0 0)'
+ , $writer->write($b));
+
+ $g = $reader->read('LINESTRING(0 0, 5 5, 10 10)');
+ $b = $g->pointOnSurface();
+ $this->assertEquals(
+'POINT (5 5)'
+ , $writer->write($b));
+
+ $g = $reader->read('POLYGON((0 0, 0 10, 5 5, 10 10, 10 0, 0 0))');
+ $b = $g->pointOnSurface();
+ $this->assertEquals(
+'POINT (2 5)'
+ , $writer->write($b));
+ }
+
+ public function testGeometry_centroid()
+ {
+ $reader = new GEOSWKTReader();
+ $writer = new GEOSWKTWriter();
+ $writer->setRoundingPrecision(0);
+
+ $g = $reader->read('POINT(0 0)');
+ $b = $g->centroid();
+ $this->assertEquals(
+'POINT (0 0)'
+ , $writer->write($b));
+
+ $g = $reader->read('LINESTRING(0 0, 10 10)');
+ $b = $g->centroid();
+ $this->assertEquals(
+'POINT (5 5)'
+ , $writer->write($b));
+
+ $g = $reader->read('POLYGON((0 0, 0 10, 5 5, 10 10, 10 0, 0 0))');
+ $b = $g->centroid();
+ $this->assertEquals(
+'POINT (5 4)'
+ , $writer->write($b));
+ }
}
More information about the geos-commits
mailing list