VB6 Oracle Spatial or Locator OO4O code
Monday January 01 2007 at 09:55
I have just uploaded a radically revised and improved VB6 code for accessing Oracle Spatial or Locator.
In revising the code I came to appreciated something the Catholic priest who married my wife and I once said to me: “True scholarship requires leisure”. I have had the lesiure to revise the code and am horrified by what was in the previous code. Though well intentioned, I simply did not have the time to address, in a systematic fashion, all aspects of squeezing the maximum performance out of a set of code to access Sdo_Geometry data in VB6. (I will convert the code to VB.NET but not yet!).
From the history notes of the library here are some highlights:
- Modified code to bring back in some improvements from PL/SQL port.
- Added Tolerance Property and ObjectTolerances() function to set its values.
- included support for min_resolution parameter in Sdo_Filter/FindFirst
- Overhauled asPoint, asMultiPoint, asPolyline and asPolygon routines to improve readibility and speed
- Upped default lFetchArrayBufferSize to 524288 bytes
- Added ObjectTolerances routine to extract sdo_tolerance from XXX_SDO_GEOM_METADATA views
- Some type and object name changes
- Modified implementation of mobjGF.isNull()
- Fixed bug with converting circle/circulararc to vertex-connected segments when ArcToChord value is large
- Fixed handling of 3D data
- Added ability to output shape data as ADFText/EWKT via FindFirst/MoveNext and mobjGF.AsString
- Cleaned up object memory handling in some routines
- Removed setting mutLayerProperties.layerMBR in ObjectExtent()
- Simplified setting of all SQL properties and moved all checking of rules and combinations in the BuildSQL function.
- Removed support for group by, order by and having clauses to reduce complexity (can be used via the directly setting a complete SQL statement.
- Recreated separate CGeometryFactory class from the GF_ inline code. Involved splitting out of SQL SELECT field indexes from actual sdo_geometry data in mutGeomUDTFields
- Implemented use of ErrorHandler resource strings in error/warnings.
- Replaced ORADYN_READONLY with ORADYN_NOCACHE to improve read performance and reduce memory use.
- Improved dynaset processing efficiency by implementing performance tip”Avoiding Multiple Object Reference” in OO4O documentation
- Simplified handling of optional extent in FindFirst
- Added Parameter support to FindFirst in order to improve cursor sharing on database server
- Made actual FindFirst modified query a returnable property to aid client debugging
- Load error messages on layer startup
Also, added lots more tests to the LibTest.vbp project.