= !MapGuide RFC 141 - GEOS upgrade = This page contains a change request (RFC) for the !MapGuide Open Source project. More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. == Status == ||RFC Template Version||(1.0)|| ||Submission Date||1 July 2014|| ||Last Modified||24 August 2014|| ||Author||Jackie Ng|| ||RFC Status||adopted|| ||Implementation Status||implemented|| ||Proposed Milestone||3.0|| ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||(vote date)|| ||+1||Jackie,Crispin,Kevin|| ||+0|||| ||-0|||| ||-1|||| ||no vote||Trevor,Haris,Gordon|| == Overview == This RFC proposes to update GEOS to the latest stable version. == Motivation == Where possible, MapGuide's thirdparty components should be regularly kept up to date to ensure they get the latest bug fixes. GEOS is one such component. It is still on a very old version (2.2.0) == Proposed Solution == Upgrade GEOS to the latest stable release (3.4.2) [http://trac.osgeo.org/mapguide/browser/sandbox/jng/geos34x This sandbox] has already implemented the GEOS upgrade as proposed by this RFC. Adoption of this RFC means the changes in this branch will be merged back into the trunk stream. Though not in the scope of this RFC, upgrading to the 3.4.2 release allows us to take advantage of new features such as [http://blog.cleverelephant.ca/2009/01/must-faster-unions-in-postgis-14.html cascaded unions] and [http://blog.cleverelephant.ca/2008/10/postgis-performance-prepared-geometry.html prepared geometry]. Wherever applicable, we should look at taking advantage of such features to improve the MgGeometry library. == Implications == GEOS 3.0.0 introduces semantic changes to exception handling. GEOSExceptions are now caught by const reference and the MgGeometry macros need to be updated to catch GEOSExceptions in this way [http://trac.osgeo.org/mapguide/browser/sandbox/jng/geos34x/Common/Geometry/GeometryExceptionDef.h See updated macro]. The result of a SymetricDifference operation is now sensitive to the order of the operands [http://trac.osgeo.org/mapguide/browser/sandbox/jng/geos34x/Server/src/UnitTesting/TestGeometry.cpp#L1549 See here for an explanation] Geometry area calculations may introduce rounding errors [http://trac.osgeo.org/mapguide/browser/sandbox/jng/geos34x/Server/src/UnitTesting/TestGeometry.cpp#L2188 example]. The author of this RFC is uncertain whether this will significantly impact adoption of this RFC. == Test Plan == Verify existing Geometry tests still pass == Funding / Resources == Community