| 1 | |
| 2 | = !MapGuide RFC 141 - GEOS upgrade = |
| 3 | |
| 4 | This page contains a change request (RFC) for the !MapGuide Open Source project. |
| 5 | More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. |
| 6 | |
| 7 | |
| 8 | == Status == |
| 9 | |
| 10 | ||RFC Template Version||(1.0)|| |
| 11 | ||Submission Date||1 July 2014|| |
| 12 | ||Last Modified|||| |
| 13 | ||Author||Jackie Ng|| |
| 14 | ||RFC Status||draft|| |
| 15 | ||Implementation Status|||| |
| 16 | ||Proposed Milestone||3.0|| |
| 17 | ||Assigned PSC guide(s)||(when determined)|| |
| 18 | ||'''Voting History'''||(vote date)|| |
| 19 | ||+1|||| |
| 20 | ||+0|||| |
| 21 | ||-0|||| |
| 22 | ||-1|||| |
| 23 | ||no vote|| || |
| 24 | |
| 25 | == Overview == |
| 26 | |
| 27 | This RFC proposes to update GEOS to the latest stable version. |
| 28 | |
| 29 | == Motivation == |
| 30 | |
| 31 | Where possible, MapGuide's thirdparty components should be regularly kept up to date to ensure they get the latest bug fixes. |
| 32 | |
| 33 | GEOS is one such component. It is still on a very old version (2.2.0) |
| 34 | |
| 35 | == Proposed Solution == |
| 36 | |
| 37 | Upgrade GEOS to the latest stable release (3.4.2) |
| 38 | |
| 39 | [http://trac.osgeo.org/mapguide/browser/sandbox/jng/geos34x This sandbox] has already implemented the GEOS upgrade as proposed by this RFC. |
| 40 | |
| 41 | Adoption of this RFC means the changes in this branch will be merged back into the trunk stream. |
| 42 | |
| 43 | 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 |
| 44 | [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, |
| 45 | we should look at taking advantage of such features to improve the MgGeometry library. |
| 46 | |
| 47 | == Implications == |
| 48 | |
| 49 | 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]. |
| 50 | |
| 51 | 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] |
| 52 | |
| 53 | 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. |
| 54 | |
| 55 | == Test Plan == |
| 56 | |
| 57 | Verify existing Geometry tests still pass |
| 58 | |
| 59 | == Funding / Resources == |
| 60 | |
| 61 | Community |