[geos-devel] CoordSeq ADT and fine-grained ctors for C-API (was: GEOS C API Suggestions)

Frank Warmerdam warmerdam at pobox.com
Fri Oct 21 12:01:30 EDT 2005

On 10/21/05, strk at refractions.net <strk at refractions.net> wrote:
> About performance and isolation, do we really want
> all the copies to happen ?
> Consider a multipolygon construction, you'll have copies:
>         - of CoordSeq objects of the shell and each hole
>           at each of the corresponding object construction/copy
>         - of shell and hole geometry for each polygon
>           construction/copy
>         - of each polygon geometry at collection construction
> In practice it would take 3 copies of each involved CoordinateSequence.
> I'm thinking about making constructors take ownership of argument,
> and extractors (GetGeometryN, getExteriorRing, getCoordSeq..) return
> resources owned by the argument object...
> These changes would also allow changing any Ordinate value
> of any Geometry ...
>         GEOSGeom g1 = GEOSGetGeometryN(g, 2);
>         GEOSGeom hole3 = GEOSGetInteriorRingN(g1, 3);
>         GEOSCoordSeq s = GEOSGetCoordSeq(hole3);
>         GEOSCoordSeq_setX(s, 4);
> What do you think, is the advantage worth the danger ?


If one of the rationales for the direct construction and query
support is to provide a "fastest" method of converting to and
from GEOS Geometries, then I think that avoiding copying
would be wise.  I don't immediately intend to use the new
api entries so it doesn't matter so much to me, but if we convert
mapserver to use the GEOS C API then it speed would be an

I would say that the advantage is worth the danger, but the
rules about internal references and taking of ownership need
to be made clear in the docs.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent

More information about the geos-devel mailing list