[geos-devel] [GEOS] #609: GEOSPointOnSurface returns EMPTY for single-point linestring

Martin Davis mtnclimb at telus.net
Fri Jan 11 09:32:45 PST 2013

Just to clarify my original response, the primary constraint on 
functions that return geometry values is that they return a valid 
geometry that makes some sort of sense.

So in the case of centroid, regardless of what is "mathematically 
correct" a valid sensible geometry should be returned (as opposed to a 
meaningless geometry with NaN ordinates, as now happens).

In the case of interiorPoint the situation is even more clearcut - 
obviously the interior point should be one of the points in the geometry.

On 1/11/2013 6:01 AM, GEOS wrote:
> #609: GEOSPointOnSurface returns EMPTY for single-point linestring
> ------------------------+---------------------------------------------------
>   Reporter:  strk        |       Owner:  geos-devel@…
>       Type:  defect      |      Status:  new
>   Priority:  major       |   Milestone:  3.3.7
> Component:  Default     |     Version:  3.3.6
>   Severity:  Unassigned  |    Keywords:
> ------------------------+---------------------------------------------------
> Comment(by strk):
>   So for GEOSCentroid the answer is correct, in that by definition the
>   CentroidLine class computes the centroid of all segment's midpoint
>   weighted by segment length, so a zero-length segment is not considered.
>   Now, the algorithm of InteriorPointLine [1] is:
>      - Find an interior vertex which is closest to the centroid of the
>   linestring.
>      - If there is no interior vertex, find the endpoint which is closest to
>   the centroid.
>   [1]
>   http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/algorithm/InteriorPointLine.html
>   But if there's no interior vertex both endpoints are equidistant to the
>   centroid, aren't them ?
>   Martin: am I missing anything ?

More information about the geos-devel mailing list