[geos-devel] GEOS and Writing SRID values
Frank Warmerdam
warmerdam at pobox.com
Thu Sep 13 13:47:31 EDT 2007
Charlie Savage wrote:
>> Why char? Why not an integer boolean?
>
> Just following the standard already set in the C API (see isValid,
> isSimple, isRing, etc.).
Charlie,
Ah, I hadn't noticed that. An odd choice in the first place IMHO.
>> I must say I hate the way the GEOS C API uses static state in the library
>> for stuff like byte order and output dimensions and I hate to perpetuate
>> this. This is a threading risk especially in situations where different
>> parts of an application are using GEOS can cannot easily cooperate with
>> locks. This is the sort of problem my clients are running into more and
>> more with libraries like GEOS, PROJ.4, etc.
>
> I agree - but that's separate thing, no? The right solution is expose
> the reader/writers to the capi so you can create one and then use it.
It is seperate from srid issue to be sure. I had not actually realized
about the statefulness of the towkb function before looking at your
suggestions.
>> I'd like to see an extension to the C API adding:
>>
>> GEOSGeomToHEX_bufWithOpts( const GEOSGeometry *g, size_t *size,
>> int byteOrder, int includeSRID,
>> int outpuDimension );
>
> Yes, that would be better than the current api. But really all the
> writer methods (toWkt, toWkb, toHex) should work like that (with
> different options for toWkt, just srid I think).
Agreed.
> If we could start from scratch, you'd change those 3 methods and get rid
> of these 4:
>
> extern int GEOS_DLL GEOS_getWKBOutputDims();
> extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
>
> extern int GEOS_DLL GEOS_getWKBByteOrder();
> extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
>
> Which would make for a more compact, and bettter, api.
>
>> or perhaps, merge the options into a bitfield so we can easily
>> add new bitfield values in the future without changing the C
>> API which needs to be quite static.
>
> Are there going to be other options besides those 3 (byte order, include
> srid, output dimension)?
>
> So your conclusion is add in 3 new methods (toWktWithOpts,
> toWkbWithOpts, toHexWithOpts) and deprecate the original 3 methods and
> the 4 above)?
This would be my suggestion. I'd add that a primary goal of the C API
is stability so even if we deprecate the old API we should keep it
around (perhaps undocumented) for a long long time.
> Is the geos 3.0 capi still backwards compatible with the 2.x apis?
I'm not aware of any changes in the 3.0 api that break 2.0 applications.
At least not the ones I use. :-)
So, how do we decide how to proceed lacking a PSC and RFC process? Perhaps
Paul (or do we have a current chief developer?) can bless the proposal?
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 | President OSGeo, http://osgeo.org
More information about the geos-devel
mailing list