# [geos-devel] Minimun distance between two polygons

Paul Ramsey pramsey at cleverelephant.ca
Thu Jan 26 05:41:30 PST 2017

Looks like the PHP wizards have ported proj4 as well, so you could use that
prior to using GEOS to do the measurement....
https://github.com/proj4php/proj4php

On Thu, Jan 26, 2017 at 4:01 AM, alb.sil.81 at virgilio.it <
alb.sil.81 at virgilio.it> wrote:

> Hi Paul,
>
> in general speaking you are right. In my case the distances between the
> polygons are very low, under 2km and the difference between the measure of
> the lines and the arcs, I suppose, are negligible.
>
> By the way, to follow your suggestion I looked for some tool but I was not
> able to find them :-/. Can you suggest me a smart way to project the
> objects in a planar space?
>
> Thanks,
>
> AS
>
>
> ----Messaggio originale----
> Da: "Paul Ramsey" <pramsey at cleverelephant.ca>
> Data: 20-gen-2017 13.57
> A: "alb.sil.81 at virgilio.it"<alb.sil.81 at virgilio.it>, "GEOS Development
> List"<geos-devel at lists.osgeo.org>
> Ogg: Re: [geos-devel] Minimun distance between two polygons
>
>
>
>
> On Fri, Jan 20, 2017 at 2:28 AM, alb.sil.81 at virgilio.it <
> alb.sil.81 at virgilio.it> wrote:
>
>> Hi everybody,
>>
>>
>>
>> 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).
>>
>
> Since your inputs are in lon/lat, you're fundamentally out of luck, even
> if you solve your problem below. The nearest points in lon/lat space are
> not the actual nearest points, because the lines in lon/lat space are not
> the same as the great circles that connect points in spherical space. You
> really need to either project your objects into a planar space first, then
> use GEOS, or move to some completely different tool set, like a port of s2
> (spherical geometry) algorithms into php https://github.com/eelf/
> s2-geometry-library-php
>
>
>>
>>
>> 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).
>>
>>
>>
>> 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.
>>
>>
>>
>> This function isn’t usable from PHP.
>>
>>
>>
>> In order to use that method from PHP I tried to modify the php/geos.c
>> file adding the following code:
>>
>>
>>
>> ….
>>
>> PHP_METHOD(Geometry, nearestPoints);
>>
>>
>>
>> ….
>>
>>
>>
>> PHP_ME(Geometry, nearestPoints, NULL, 0)
>>
>>
>>
>> ….
>>
>>
>>
>> /**
>>
>>   * GEOSCoordSequence::nearestPoints(GEOSGeometry)
>>
>>   */
>>
>> PHP_METHOD(Geometry, nearestPoints)
>>
>> {
>>
>>      GEOSGeometry *this;
>>
>>      GEOSGeometry *other;
>>
>>      zval *zobj;
>>
>>      GEOSCoordSequence *ret;
>>
>>
>>
>>      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 = GEOSNearestPoints(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);
>>
>> }
>>
>>
>>
>> The result obtained using this function with PHP is always an
>> empty GEOSGeometry object.
>>
>>
>>
>> I would like to ask you:
>>
>>
>>
>> 1)      Is possible to obtain the distance in meter using the distance
>> method?
>>
>> 2)      Where is the error in the code above? Some of you find errors in
>> the code above?
>>
>> 3)      Could you suggest me another way to obtain the minimum distance
>> between two polygon using GEOS :-D ?
>>
>>
>>
>> Thank you very much for your help.
>>
>>
>>
>>  AS
>>
>>
>> _______________________________________________
>> geos-devel mailing list
>> geos-devel at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/geos-devel
>>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geos-devel/attachments/20170126/e6858a29/attachment-0001.html>