<div></div>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">Hi everybody,</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">using GEOS
3.5.0 and PHP my aim is to measure the minimum distance in meters between two polygons
in Google Maps coordinate (Latitude/Longitude WGS84).</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">Using the “Distance
method” I obtain an angle you can’t convert in meter (with an acceptable error)
without the information about the orientation and the longitude of the two
point (1 grad on latitude is in meter different from 1 grad in longitude).</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">I find the “nearestPoints
method” that return the nearest Points of two polygons, with this information I
will create a function able to calculate the right distance. </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">This
function isn’t usable from PHP.</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">In order to
use that method from PHP I tried to modify the php/geos.c file adding the
following code:</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">….</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">PHP_METHOD(Geometry, nearestPoints);</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">….</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">PHP_ME(Geometry, nearestPoints, NULL, 0)</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">….</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">/**</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">  *
GEOSCoordSequence::nearestPoints(GEOSGeometry)</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">  */</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">PHP_METHOD(Geometry, nearestPoints)</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">{</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     GEOSGeometry *this;</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     GEOSGeometry *other;</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     zval *zobj;</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     GEOSCoordSequence
*ret;</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     this =
(GEOSGeometry*)getRelay(getThis(), Geometry_ce_ptr);</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     if
(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o",</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">        
&zobj) == FAILURE)</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     {</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">        
RETURN_NULL();</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     }</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     other = getRelay(zobj,
Geometry_ce_ptr);</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     ret =
GEOSNearestPoints(this, other);</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     if ( ! ret )
RETURN_NULL(); /* should get an exception first */</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     /* return_value is a
zval */</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">    
object_init_ex(return_value, Geometry_ce_ptr);</font></span></p>

<p style="margin: 0px 0px 0px 47px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">     </font></span><font color="#000000" face="Calibri" size="3">setRelay(return_value,
ret);</font></p>

<p style="margin: 0px 0px 0px 47px;"><font color="#000000" face="Calibri" size="3">}</font></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">The result
obtained using this function with PHP is always an empty GEOSGeometry object.</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">I would like
to ask you:</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px 0px 0px 48px; text-indent: -18pt;"><span lang="EN-US" style="margin: 0px;"><span style="margin: 0px;"><font color="#000000" face="Calibri" size="3">1)</font><span style='font: 7pt "Times New Roman"; margin: 0px; font-size-adjust: none; font-stretch: normal;'><font color="#000000">      </font></span></span></span><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">Is possible to obtain the distance in
meter using the distance method?</font></span></p>

<p style="margin: 0px 0px 0px 48px; text-indent: -18pt;"><span lang="EN-US" style="margin: 0px;"><span style="margin: 0px;"><font color="#000000" face="Calibri" size="3">2)</font><span style='font: 7pt "Times New Roman"; margin: 0px; font-size-adjust: none; font-stretch: normal;'><font color="#000000">      </font></span></span></span><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">Where is the error in the code
above? Some of you find errors in the code above?</font></span></p>

<p style="margin: 0px 0px 0px 48px; text-indent: -18pt;"><span lang="EN-US" style="margin: 0px;"><span style="margin: 0px;"><font color="#000000" face="Calibri" size="3">3)</font><span style='font: 7pt "Times New Roman"; margin: 0px; font-size-adjust: none; font-stretch: normal;'><font color="#000000">      </font></span></span></span><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">Could you suggest me another way to
obtain the minimum distance between two polygon using GEOS :-D ?</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3">Thank you
very much for your help.</font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> </font></span></p>

<p style="margin: 0px;"><span lang="EN-US" style="margin: 0px;"><font color="#000000" face="Calibri" size="3"> AS</font></span></p>

<font size="3"></font><br>