
Geometry : 
Subject: Re: [geometry] Negative distance?
From: Barend Gehrels (barend_at_[hidden])
Date: 20120308 13:15:15
Hi Volker,
Thanks for your detailed report.
On 832012 8:47, Volker Schöch wrote:
> Hi,
>
> I am seeing negative results from the distance algorithm with boost::geometry::distance(MultiPolygon, Point). I wonder if this is a problem in my code, or a bug in GGL, or by design  and in the latter case, what's the meaning of negative distances?
>
> The boost::geometry documentation says:
>
>> The function distance implements function Distance from the OGC Simple Feature Specification.
> The OGC Simple Feature Specification says:
>
>> Distance (anotherGeometry: Geometry):Double  Returns the shortest distance between any two Points in the two geometric objects as calculated in the spatial reference system of this geometric object. Because the geometries are closed, it is possible to find a point on each geometric object involved, such that the distance between these 2 points is the returned distance between their geometric objects.
> I don't find my question explicitly answered there, but since in mathematical geometry distances are usually nonnegative and there is no mentioning or explanation of why and how OGC would define negative distances, I assume it may be a bug?
>
> I am using boost 1.48.0, my polygon type is oriented counterclockwise and not closed, my point type is based on int.
>
It will be an alreadysolved bug, I think. Version 1.48 contained an
uninitialized variable in the case of an empty multipolygon (empty
vector) compared to a point. Might that have been the case? It is solved
in the meantime, so for 1.49. We now throw an "empty input exception".
This might change in future versions where we will either return a
boostoptional, or an error code, or an exception, probably on request.
What has been discussed is that there are wishes to measure the
"internal distance" too, so for a point inside a polygon the distance to
the border. I believe it has been suggested to make that distance
negative (makes sense) but it has not been implemented like that. It is
probably better to make that a separate function, or it is also possible
to implement that as a strategy property. To be decided.
In any case, negative distances should currently not occur but can
unfortunately occur in 1.48.
Regards, Barend
Geometry list run by mateusz at loskot.net