Changes between Version 5 and Version 6 of FDORfc39
- Timestamp:
- 06/24/09 12:49:19 (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
FDORfc39
v5 v6 35 35 A number of changes in FDO are proposed: 36 36 37 1) Add new FdoSpatialOperations_Relate to FdoSpatialOperations enumeration 37 1) Add new FdoSpatialOperations_Relate to FdoSpatialOperations enumeration. 38 38 39 39 2) Assign values to FdoSpatialOperations so they can be bitmapped: 40 41 40 42 41 {{{ … … 58 57 }}} 59 58 60 3) Enhance FdoSpatialCondition to handle a bitmapped mask of spatial operators. Avoid creating a new set of constructors just for RELATE by adding a extra optional parameter toexisting constructors. Add setter and getter for the mask.59 3) Enhance FdoSpatialCondition class to handle a bitmapped mask of spatial operators. Avoid creating a new set of constructors just for RELATE, by adding an extra optional parameter to the existing constructors. Add setter and getter for the mask. 61 60 62 61 … … 75 74 FDO_API static FdoSpatialCondition* Create(FdoIdentifier* propertyName, FdoSpatialOperations operation, FdoExpression* geometry, FdoInt32 relateMask = -1); 76 75 77 //// The same extra optional parameter will be addedall the constructors.76 ////\\\\ NOTE: the same extra optional parameter will be added to all the constructors. 78 77 79 78 /// Sets the bitmapped value of combined spatial operator(s) for RELATE usage. … … 91 90 }}} 92 91 93 4) Provide a common implementation for computing the pattern matrix in FdoSpatialUtility:94 92 93 4) Provide a common implementation for computing the pattern matrix in FdoSpatialUtility class. The matrixes for individual operations are available on the OGS site. Given a combination of operators, the method will perform an OR operation for each element of the matrix, interatively for each matrix involved. 95 94 96 95 {{{ … … 104 103 /// 105 104 /// \param value 106 /// Input the bitmapped mask of F DO spatial operators.105 /// Input the bitmapped mask of FdoSpatialOperations. 107 106 /// 108 107 /// \return 109 108 /// Returns a valid 9 characters string representing the pattern matrix. 110 109 /// Returns NULL in case the input is invalid. 111 /// Example: 'T*F**F***' for 'Within' spatial operation110 /// Example: 'T*F**F***' is returned for 'Within' spatial operation 112 111 /// 113 112 FDO_API static FdoString* GetOGSPatternMatrix(FdoInt32 value); … … 115 114 116 115 == Implications == 117 [TODO] 116 117 RDBMS providers supporting natively the RELATE spatial operator can implement the new API by examining the mask: 118 119 {{{ 120 FdoSpatialCondition* pFilter = ... 121 Int32 mask = pFilter->GetRelateMask(); 122 }}} 123 124 SqlServer Spatial or PostGIS need the string pattern matrix to pass it as input for STRelate() and ST_Relate() respectively: 125 126 {{{ 127 FdoString* matrix = FdoSpatialUtility::GetOGSPatternMatrix( mask ); 128 129 // Build the SQL like: STRelate(' + matrix +'); 130 }}} 131 132 Oracle providers will inspect the bitmapped mask and extract the spatial operators to build the SQL like: 133 134 {{{ 135 SDO_RELATE(... 'mask=touch+coveredby') = 'TRUE'; 136 }}} 137 118 138 119 139 == Test Plan == … … 124 144 Autodesk to provide resources / funding. 125 145 146 == Referencies == 147 [TODO] 148