DBA Data[Home] [Help]

PACKAGE: MDSYS.SDO_GEOM

Source


1 package SDO_GEOM authid current_user as
2 
3 ------------------------------------------------------------------------------
4 -- PART I. Functions and procedures for non-object model                    --
5 ------------------------------------------------------------------------------
6 
7 /*
8 -- Package constants which represent geometry element types for calling
9 -- the init_element() function.
10 */
11 
12 POINT_TYPE       CONSTANT INTEGER := MDSYS.MD2.POINT_TYPE;
13 LINESTRING_TYPE  CONSTANT INTEGER := MDSYS.MD2.LINESTRING_TYPE;
14 POLYGON_TYPE     CONSTANT INTEGER := MDSYS.MD2.POLYGON_TYPE;
15 
16 /*
17 -- Storage type
18 -- SDO_NORMALIZED_STORAGE indicates pre-8.1.3 schema
19 -- SDO_OBJECT_STORAGE indicates 8.1.3 schema
20 */
21 
22 SDO_NORMALIZED_STORAGE  CONSTANT INTEGER := 805;
23 SDO_OBJECT_STORAGE      CONSTANT INTEGER := 813;
24 
25 /*
26 -- This pacakge constant represents the maximum number of ordinate values
27 -- in the parameter lists for add_nodes() and interact().
28 */
29 
30 MAX_ORD_PARAMS CONSTANT INTEGER := 250;
31 
32 --
33 --  NAME:
34 --     init_element - INITialize an ELEMENT of a geometric object
35 --  DESCRIPTION:
36 --     This function generates a unique sequence number for each element of a
37 --     geometric object.  The user must ensure that each GID is unique in a
38 --     data set layer.
39 --  ARGUMENTS:
40 --     layer  - SDO geometry table name (LAYER_sdogeom) input argument
41 --     gid    - Geometry IDentifier input argument
42 --  RETURNS:
43 --     a unique sequence number for each element of a geometric object
44 
45 function init_element (layer IN VARCHAR2, gid IN NUMBER)
46 return INTEGER;
47 
48 
49 --
50 --  NAME:
51 --     add_nodes - ADD the NODES of the element components of geometric objects
52 --                 to the SDO geometry table
53 --  DESCRIPTION:
54 --     This procedure adds vertex coordinates representing the linestring
55 --     segments of the element components of geometric objects to the geometry
56 --     table.  A unique sequence number is generated for each row of linestring
57 --     segments represented by the vertex coordinates in the parameter list.
58 --     Iterative calls to this function with the same GID and ESEQ are used to
59 --     add linestring segments represented by the vertex coordinates to an
60 --     element of a geometric object.
61 --  ARGUMENTS:
62 --     layer  - geometry table name (LAYER_sdogeom) input argument
63 --     gid    - Geometry IDentifier input argument
64 --     eseq   - Element SEQuence number input argument
65 --     etype  - Element TYPE input argument (see types defined above)
66 --     ordn   - ORDinate Nth input argument (up to 250 per call, 2 required)
67 /*
68 procedure add_nodes (layer  IN VARCHAR2, gid IN NUMBER, eseq IN INTEGER,
69                      etype  IN INTEGER, ord1 IN NUMBER, ord2 IN  NUMBER,
70                      ord3   IN NUMBER:=NULL, ord4   IN NUMBER:=NULL,
71                      ord5   IN NUMBER:=NULL, ord6   IN NUMBER:=NULL,
72                      ord7   IN NUMBER:=NULL, ord8   IN NUMBER:=NULL,
73                      ord9   IN NUMBER:=NULL, ord10  IN NUMBER:=NULL,
74                      ord11  IN NUMBER:=NULL, ord12  IN NUMBER:=NULL,
75                      ord13  IN NUMBER:=NULL, ord14  IN NUMBER:=NULL,
76                      ord15  IN NUMBER:=NULL, ord16  IN NUMBER:=NULL,
77                      ord17  IN NUMBER:=NULL, ord18  IN NUMBER:=NULL,
78                      ord19  IN NUMBER:=NULL, ord20  IN NUMBER:=NULL,
79                      ord21  IN NUMBER:=NULL, ord22  IN NUMBER:=NULL,
80                      ord23  IN NUMBER:=NULL, ord24  IN NUMBER:=NULL,
81                      ord25  IN NUMBER:=NULL, ord26  IN NUMBER:=NULL,
82                      ord27  IN NUMBER:=NULL, ord28  IN NUMBER:=NULL,
83                      ord29  IN NUMBER:=NULL, ord30  IN NUMBER:=NULL,
84                      ord31  IN NUMBER:=NULL, ord32  IN NUMBER:=NULL,
85                      ord33  IN NUMBER:=NULL, ord34  IN NUMBER:=NULL,
86                      ord35  IN NUMBER:=NULL, ord36  IN NUMBER:=NULL,
87                      ord37  IN NUMBER:=NULL, ord38  IN NUMBER:=NULL,
88                      ord39  IN NUMBER:=NULL, ord40  IN NUMBER:=NULL,
89                      ord41  IN NUMBER:=NULL, ord42  IN NUMBER:=NULL,
90                      ord43  IN NUMBER:=NULL, ord44  IN NUMBER:=NULL,
91                      ord45  IN NUMBER:=NULL, ord46  IN NUMBER:=NULL,
92                      ord47  IN NUMBER:=NULL, ord48  IN NUMBER:=NULL,
93                      ord49  IN NUMBER:=NULL, ord50  IN NUMBER:=NULL,
94                      ord51  IN NUMBER:=NULL, ord52  IN NUMBER:=NULL,
95                      ord53  IN NUMBER:=NULL, ord54  IN NUMBER:=NULL,
96                      ord55  IN NUMBER:=NULL, ord56  IN NUMBER:=NULL,
97                      ord57  IN NUMBER:=NULL, ord58  IN NUMBER:=NULL,
98                      ord59  IN NUMBER:=NULL, ord60  IN NUMBER:=NULL,
99                      ord61  IN NUMBER:=NULL, ord62  IN NUMBER:=NULL,
100                      ord63  IN NUMBER:=NULL, ord64  IN NUMBER:=NULL,
101                      ord65  IN NUMBER:=NULL, ord66  IN NUMBER:=NULL,
102                      ord67  IN NUMBER:=NULL, ord68  IN NUMBER:=NULL,
103                      ord69  IN NUMBER:=NULL, ord70  IN NUMBER:=NULL,
104                      ord71  IN NUMBER:=NULL, ord72  IN NUMBER:=NULL,
105                      ord73  IN NUMBER:=NULL, ord74  IN NUMBER:=NULL,
106                      ord75  IN NUMBER:=NULL, ord76  IN NUMBER:=NULL,
107                      ord77  IN NUMBER:=NULL, ord78  IN NUMBER:=NULL,
108                      ord79  IN NUMBER:=NULL, ord80  IN NUMBER:=NULL,
109                      ord81  IN NUMBER:=NULL, ord82  IN NUMBER:=NULL,
110                      ord83  IN NUMBER:=NULL, ord84  IN NUMBER:=NULL,
111                      ord85  IN NUMBER:=NULL, ord86  IN NUMBER:=NULL,
112                      ord87  IN NUMBER:=NULL, ord88  IN NUMBER:=NULL,
113                      ord89  IN NUMBER:=NULL, ord90  IN NUMBER:=NULL,
114                      ord91  IN NUMBER:=NULL, ord92  IN NUMBER:=NULL,
115                      ord93  IN NUMBER:=NULL, ord94  IN NUMBER:=NULL,
116                      ord95  IN NUMBER:=NULL, ord96  IN NUMBER:=NULL,
117                      ord97  IN NUMBER:=NULL, ord98  IN NUMBER:=NULL,
118                      ord99  IN NUMBER:=NULL, ord100 IN NUMBER:=NULL,
119                      ord101 IN NUMBER:=NULL, ord102 IN NUMBER:=NULL,
120                      ord103 IN NUMBER:=NULL, ord104 IN NUMBER:=NULL,
121                      ord105 IN NUMBER:=NULL, ord106 IN NUMBER:=NULL,
122                      ord107 IN NUMBER:=NULL, ord108 IN NUMBER:=NULL,
123                      ord109 IN NUMBER:=NULL, ord110 IN NUMBER:=NULL,
124                      ord111 IN NUMBER:=NULL, ord112 IN NUMBER:=NULL,
125                      ord113 IN NUMBER:=NULL, ord114 IN NUMBER:=NULL,
126                      ord115 IN NUMBER:=NULL, ord116 IN NUMBER:=NULL,
127                      ord117 IN NUMBER:=NULL, ord118 IN NUMBER:=NULL,
128                      ord119 IN NUMBER:=NULL, ord120 IN NUMBER:=NULL,
129                      ord121 IN NUMBER:=NULL, ord122 IN NUMBER:=NULL,
130                      ord123 IN NUMBER:=NULL, ord124 IN NUMBER:=NULL,
131                      ord125 IN NUMBER:=NULL, ord126 IN NUMBER:=NULL,
132                      ord127 IN NUMBER:=NULL, ord128 IN NUMBER:=NULL,
133                      ord129 IN NUMBER:=NULL, ord130 IN NUMBER:=NULL,
134                      ord131 IN NUMBER:=NULL, ord132 IN NUMBER:=NULL,
135                      ord133 IN NUMBER:=NULL, ord134 IN NUMBER:=NULL,
136                      ord135 IN NUMBER:=NULL, ord136 IN NUMBER:=NULL,
137                      ord137 IN NUMBER:=NULL, ord138 IN NUMBER:=NULL,
138                      ord139 IN NUMBER:=NULL, ord140 IN NUMBER:=NULL,
139                      ord141 IN NUMBER:=NULL, ord142 IN NUMBER:=NULL,
140                      ord143 IN NUMBER:=NULL, ord144 IN NUMBER:=NULL,
141                      ord145 IN NUMBER:=NULL, ord146 IN NUMBER:=NULL,
142                      ord147 IN NUMBER:=NULL, ord148 IN NUMBER:=NULL,
143                      ord149 IN NUMBER:=NULL, ord150 IN NUMBER:=NULL,
144                      ord151 IN NUMBER:=NULL, ord152 IN NUMBER:=NULL,
145                      ord153 IN NUMBER:=NULL, ord154 IN NUMBER:=NULL,
146                      ord155 IN NUMBER:=NULL, ord156 IN NUMBER:=NULL,
147                      ord157 IN NUMBER:=NULL, ord158 IN NUMBER:=NULL,
148                      ord159 IN NUMBER:=NULL, ord160 IN NUMBER:=NULL,
149                      ord161 IN NUMBER:=NULL, ord162 IN NUMBER:=NULL,
150                      ord163 IN NUMBER:=NULL, ord164 IN NUMBER:=NULL,
151                      ord165 IN NUMBER:=NULL, ord166 IN NUMBER:=NULL,
152                      ord167 IN NUMBER:=NULL, ord168 IN NUMBER:=NULL,
153                      ord169 IN NUMBER:=NULL, ord170 IN NUMBER:=NULL,
154                      ord171 IN NUMBER:=NULL, ord172 IN NUMBER:=NULL,
155                      ord173 IN NUMBER:=NULL, ord174 IN NUMBER:=NULL,
156                      ord175 IN NUMBER:=NULL, ord176 IN NUMBER:=NULL,
157                      ord177 IN NUMBER:=NULL, ord178 IN NUMBER:=NULL,
158                      ord179 IN NUMBER:=NULL, ord180 IN NUMBER:=NULL,
159                      ord181 IN NUMBER:=NULL, ord182 IN NUMBER:=NULL,
160                      ord183 IN NUMBER:=NULL, ord184 IN NUMBER:=NULL,
161                      ord185 IN NUMBER:=NULL, ord186 IN NUMBER:=NULL,
162                      ord187 IN NUMBER:=NULL, ord188 IN NUMBER:=NULL,
163                      ord189 IN NUMBER:=NULL, ord190 IN NUMBER:=NULL,
164                      ord191 IN NUMBER:=NULL, ord192 IN NUMBER:=NULL,
165                      ord193 IN NUMBER:=NULL, ord194 IN NUMBER:=NULL,
166                      ord195 IN NUMBER:=NULL, ord196 IN NUMBER:=NULL,
167                      ord197 IN NUMBER:=NULL, ord198 IN NUMBER:=NULL,
168                      ord199 IN NUMBER:=NULL, ord200 IN NUMBER:=NULL,
169                      ord201 IN NUMBER:=NULL, ord202 IN NUMBER:=NULL,
170                      ord203 IN NUMBER:=NULL, ord204 IN NUMBER:=NULL,
171                      ord205 IN NUMBER:=NULL, ord206 IN NUMBER:=NULL,
172                      ord207 IN NUMBER:=NULL, ord208 IN NUMBER:=NULL,
173                      ord209 IN NUMBER:=NULL, ord210 IN NUMBER:=NULL,
174                      ord211 IN NUMBER:=NULL, ord212 IN NUMBER:=NULL,
175                      ord213 IN NUMBER:=NULL, ord214 IN NUMBER:=NULL,
176                      ord215 IN NUMBER:=NULL, ord216 IN NUMBER:=NULL,
177                      ord217 IN NUMBER:=NULL, ord218 IN NUMBER:=NULL,
178                      ord219 IN NUMBER:=NULL, ord220 IN NUMBER:=NULL,
179                      ord221 IN NUMBER:=NULL, ord222 IN NUMBER:=NULL,
180                      ord223 IN NUMBER:=NULL, ord224 IN NUMBER:=NULL,
181                      ord225 IN NUMBER:=NULL, ord226 IN NUMBER:=NULL,
182                      ord227 IN NUMBER:=NULL, ord228 IN NUMBER:=NULL,
183                      ord229 IN NUMBER:=NULL, ord230 IN NUMBER:=NULL,
184                      ord231 IN NUMBER:=NULL, ord232 IN NUMBER:=NULL,
185                      ord233 IN NUMBER:=NULL, ord234 IN NUMBER:=NULL,
186                      ord235 IN NUMBER:=NULL, ord236 IN NUMBER:=NULL,
187                      ord237 IN NUMBER:=NULL, ord238 IN NUMBER:=NULL,
188                      ord239 IN NUMBER:=NULL, ord240 IN NUMBER:=NULL,
189                      ord241 IN NUMBER:=NULL, ord242 IN NUMBER:=NULL,
190                      ord243 IN NUMBER:=NULL, ord244 IN NUMBER:=NULL,
191                      ord245 IN NUMBER:=NULL, ord246 IN NUMBER:=NULL,
192                      ord247 IN NUMBER:=NULL, ord248 IN NUMBER:=NULL,
193                      ord249 IN NUMBER:=NULL, ord250 IN NUMBER:=NULL);
194 
195 */
196 
197 --
198 --  NAME:
199 --     validate_geometry - VALIDATE a GEOMETRY in SDO geometry table
200 --     validate_layer    - VALIDATE all geometries in the specified LAYER
201 --  DESCRIPTION:
202 --     validate_geometry function examines the properties of elements of a
203 --     geometry. Coordinates must be within the bounds designated in the
204 --     SDODIM table. Point elements must have exactly one (only one)
205 --     coordinate per row. Linestring elements must have at least two
206 --     coordinates (representing one segment). Polygon elements must have
207 --     at least four coordinates (representing three segments). The very
208 --     first coordinate must be repeated as the last coordinate to close
209 --     the polygon. The first coordinate of a continuation row for both
210 --     linestring and polygon elements must be equal to the last coordinate
211 --     of the previous row.
212 --
213 --     Now we support NURB elements or parametric curves too. A number of
214 --     validation rules are required for validating NURB elements.
215 --
216 --
217 --
218 --  ARGUMENTS:
219 --     layer         - geometry table name (LAYER_sdogeom) input argument
220 --     gid           - Geometry IDentifier input argument
221 --     result_table  - the result table where validation result is stored
222 --
223 --  RETURNS:
224 --     'TRUE' if the geometry is valid. Otherwise it returns Oracle
225 --     standard error code for known error or 'FALSE' for unknown error.
226 --     validate_layer procedure populates the given result_table with
227 --     validation results
228 --
229 
230 function validate_geometry(layer IN VARCHAR2, gid IN NUMBER)
231 return VARCHAR2;
232 -- pragma restrict_references(validate_geometry, WNDS, WNPS, RNPS );
233 
234 procedure validate_layer(layer IN VARCHAR2, result_table IN VARCHAR2);
235 
236 function check_bounds(TableName IN VARCHAR2, gid IN NUMBER, Eseq IN INTEGER,
237                       Seq IN INTEGER, CoordWidth IN NUMBER,
238                       Dim1LB IN NUMBER, Dim1UB IN NUMBER,
239                       Dim2LB IN NUMBER, Dim2UB IN NUMBER)
240          return INTEGER;
241 -- pragma restrict_references(check_bounds, WNDS, WNPS, RNPS);
242 
243 procedure get_ords(TableName IN VARCHAR2, gid IN NUMBER, Eseq IN INTEGER,
244                    Seq IN INTEGER, ColumnIndex IN INTEGER,
245                    XRtn OUT NUMBER, YRtn OUT NUMBER);
246 pragma restrict_references(get_ords, WNDS, WNPS, RNPS);
247 
248 
249 --
250 --  NAME:
251 --     interact - do two geometric objects INTERACT with each other?
252 --  DESCRIPTION:
253 --     This function determines whether or not two geometric objects in either
254 --     the same or different SDO geometry tables (LAYER_sdogeom) interact with
255 --     each other.
256 --  ARGUMENTS:
257 --     layer       - geometry table name (LAYER_sdogeom) input argument
258 --     gid         - Geometry IDentifier input argument
259 --     x_tolerance - allowed variance of ordinate values within dimension1
260 --     y_tolerance - allowed variance of ordinate values within dimension 2
261 --     vNNN        - list of up to 250 input values describing the elements
262 --                   of a geometric object with the following structure:
263 --                   etype, # of ordinate values, list of ordinate values.
264 --                   For example the following list could be used to describe
265 --                   a four point polygon with with a triangular hole :
266 --                   SDO_GEOM.POLYGON_TYPE, 10, ord1, ord2, ord3, ord4, ord5,
267 --                   ord6, ord7, ord8, ord9, ord10,
268 --                   SDO_GEOM.POLYGON_TYPE, 8, ord1, ord2, ord3, ord4, ord5,
269 --                   ord6, ord7, ord8
270 --                   The following example could be used to describe a two
271 --                   element (single segment) linestring:
272 --                   SDO_GEOM.LINESTRING_TYPE, 4, ord1, ord2, ord3, ord4,
273 --                   SDO_GEOM.LINESTRING_TYPE, 4, ord1, ord2, ord3, ord4
274 --  RETURNS:
275 --     'TRUE' or 'FALSE'
276 
277 function interact (layer IN VARCHAR2, gid1 IN NUMBER, gid2 IN NUMBER)
278 return VARCHAR2;
279 -- pragma restrict_references(interact, WNDS, WNPS, RNPS);
280 
284 -- pragma restrict_references(interact, WNDS, WNPS, RNPS);
281 function interact (layer1 IN VARCHAR2, gid1 IN NUMBER,
282                    layer2 IN VARCHAR2, gid2 IN NUMBER)
283 return VARCHAR2;
285 
286 function interact(layer1 IN VARCHAR2, gid1 IN NUMBER,
287                   x_tolerance IN NUMBER, y_tolerance IN NUMBER,
288                      v000 IN NUMBER:=NULL, v001 IN NUMBER:=NULL,
289                      v002 IN NUMBER:=NULL, v003 IN NUMBER:=NULL,
290                      v004 IN NUMBER:=NULL, v005 IN NUMBER:=NULL,
291                      v006 IN NUMBER:=NULL, v007 IN NUMBER:=NULL,
292                      v008 IN NUMBER:=NULL, v009 IN NUMBER:=NULL,
293                      v010 IN NUMBER:=NULL, v011 IN NUMBER:=NULL,
294                      v012 IN NUMBER:=NULL, v013 IN NUMBER:=NULL,
295                      v014 IN NUMBER:=NULL, v015 IN NUMBER:=NULL,
296                      v016 IN NUMBER:=NULL, v017 IN NUMBER:=NULL,
297                      v018 IN NUMBER:=NULL, v019 IN NUMBER:=NULL,
298                      v020 IN NUMBER:=NULL, v021 IN NUMBER:=NULL,
299                      v022 IN NUMBER:=NULL, v023 IN NUMBER:=NULL,
300                      v024 IN NUMBER:=NULL, v025 IN NUMBER:=NULL,
301                      v026 IN NUMBER:=NULL, v027 IN NUMBER:=NULL,
302                      v028 IN NUMBER:=NULL, v029 IN NUMBER:=NULL,
303                      v030 IN NUMBER:=NULL, v031 IN NUMBER:=NULL,
304                      v032 IN NUMBER:=NULL, v033 IN NUMBER:=NULL,
305                      v034 IN NUMBER:=NULL, v035 IN NUMBER:=NULL,
306                      v036 IN NUMBER:=NULL, v037 IN NUMBER:=NULL,
307                      v038 IN NUMBER:=NULL, v039 IN NUMBER:=NULL,
308                      v040 IN NUMBER:=NULL, v041 IN NUMBER:=NULL,
309                      v042 IN NUMBER:=NULL, v043 IN NUMBER:=NULL,
310                      v044 IN NUMBER:=NULL, v045 IN NUMBER:=NULL,
311                      v046 IN NUMBER:=NULL, v047 IN NUMBER:=NULL,
312                      v048 IN NUMBER:=NULL, v049 IN NUMBER:=NULL,
313                      v050 IN NUMBER:=NULL, v051 IN NUMBER:=NULL,
314                      v052 IN NUMBER:=NULL, v053 IN NUMBER:=NULL,
315                      v054 IN NUMBER:=NULL, v055 IN NUMBER:=NULL,
316                      v056 IN NUMBER:=NULL, v057 IN NUMBER:=NULL,
317                      v058 IN NUMBER:=NULL, v059 IN NUMBER:=NULL,
318                      v060 IN NUMBER:=NULL, v061 IN NUMBER:=NULL,
319                      v062 IN NUMBER:=NULL, v063 IN NUMBER:=NULL,
320                      v064 IN NUMBER:=NULL, v065 IN NUMBER:=NULL,
321                      v066 IN NUMBER:=NULL, v067 IN NUMBER:=NULL,
322                      v068 IN NUMBER:=NULL, v069 IN NUMBER:=NULL,
323                      v070 IN NUMBER:=NULL, v071 IN NUMBER:=NULL,
324                      v072 IN NUMBER:=NULL, v073 IN NUMBER:=NULL,
325                      v074 IN NUMBER:=NULL, v075 IN NUMBER:=NULL,
326                      v076 IN NUMBER:=NULL, v077 IN NUMBER:=NULL,
327                      v078 IN NUMBER:=NULL, v079 IN NUMBER:=NULL,
328                      v080 IN NUMBER:=NULL, v081 IN NUMBER:=NULL,
329                      v082 IN NUMBER:=NULL, v083 IN NUMBER:=NULL,
330                      v084 IN NUMBER:=NULL, v085 IN NUMBER:=NULL,
331                      v086 IN NUMBER:=NULL, v087 IN NUMBER:=NULL,
332                      v088 IN NUMBER:=NULL, v089 IN NUMBER:=NULL,
333                      v090 IN NUMBER:=NULL, v091 IN NUMBER:=NULL,
334                      v092 IN NUMBER:=NULL, v093 IN NUMBER:=NULL,
335                      v094 IN NUMBER:=NULL, v095 IN NUMBER:=NULL,
336                      v096 IN NUMBER:=NULL, v097 IN NUMBER:=NULL,
337                      v098 IN NUMBER:=NULL, v099 IN NUMBER:=NULL,
338                      v100 IN NUMBER:=NULL, v101 IN NUMBER:=NULL,
339                      v102 IN NUMBER:=NULL, v103 IN NUMBER:=NULL,
340                      v104 IN NUMBER:=NULL, v105 IN NUMBER:=NULL,
341                      v106 IN NUMBER:=NULL, v107 IN NUMBER:=NULL,
342                      v108 IN NUMBER:=NULL, v109 IN NUMBER:=NULL,
343                      v110 IN NUMBER:=NULL, v111 IN NUMBER:=NULL,
344                      v112 IN NUMBER:=NULL, v113 IN NUMBER:=NULL,
345                      v114 IN NUMBER:=NULL, v115 IN NUMBER:=NULL,
346                      v116 IN NUMBER:=NULL, v117 IN NUMBER:=NULL,
347                      v118 IN NUMBER:=NULL, v119 IN NUMBER:=NULL,
348                      v120 IN NUMBER:=NULL, v121 IN NUMBER:=NULL,
349                      v122 IN NUMBER:=NULL, v123 IN NUMBER:=NULL,
350                      v124 IN NUMBER:=NULL, v125 IN NUMBER:=NULL,
351                      v126 IN NUMBER:=NULL, v127 IN NUMBER:=NULL,
352                      v128 IN NUMBER:=NULL, v129 IN NUMBER:=NULL,
353                      v130 IN NUMBER:=NULL, v131 IN NUMBER:=NULL,
354                      v132 IN NUMBER:=NULL, v133 IN NUMBER:=NULL,
355                      v134 IN NUMBER:=NULL, v135 IN NUMBER:=NULL,
356                      v136 IN NUMBER:=NULL, v137 IN NUMBER:=NULL,
357                      v138 IN NUMBER:=NULL, v139 IN NUMBER:=NULL,
358                      v140 IN NUMBER:=NULL, v141 IN NUMBER:=NULL,
359                      v142 IN NUMBER:=NULL, v143 IN NUMBER:=NULL,
360                      v144 IN NUMBER:=NULL, v145 IN NUMBER:=NULL,
361                      v146 IN NUMBER:=NULL, v147 IN NUMBER:=NULL,
362                      v148 IN NUMBER:=NULL, v149 IN NUMBER:=NULL,
363                      v150 IN NUMBER:=NULL, v151 IN NUMBER:=NULL,
364                      v152 IN NUMBER:=NULL, v153 IN NUMBER:=NULL,
365                      v154 IN NUMBER:=NULL, v155 IN NUMBER:=NULL,
366                      v156 IN NUMBER:=NULL, v157 IN NUMBER:=NULL,
367                      v158 IN NUMBER:=NULL, v159 IN NUMBER:=NULL,
368                      v160 IN NUMBER:=NULL, v161 IN NUMBER:=NULL,
372                      v168 IN NUMBER:=NULL, v169 IN NUMBER:=NULL,
369                      v162 IN NUMBER:=NULL, v163 IN NUMBER:=NULL,
370                      v164 IN NUMBER:=NULL, v165 IN NUMBER:=NULL,
371                      v166 IN NUMBER:=NULL, v167 IN NUMBER:=NULL,
373                      v170 IN NUMBER:=NULL, v171 IN NUMBER:=NULL,
374                      v172 IN NUMBER:=NULL, v173 IN NUMBER:=NULL,
375                      v174 IN NUMBER:=NULL, v175 IN NUMBER:=NULL,
376                      v176 IN NUMBER:=NULL, v177 IN NUMBER:=NULL,
377                      v178 IN NUMBER:=NULL, v179 IN NUMBER:=NULL,
378                      v180 IN NUMBER:=NULL, v181 IN NUMBER:=NULL,
379                      v182 IN NUMBER:=NULL, v183 IN NUMBER:=NULL,
380                      v184 IN NUMBER:=NULL, v185 IN NUMBER:=NULL,
381                      v186 IN NUMBER:=NULL, v187 IN NUMBER:=NULL,
382                      v188 IN NUMBER:=NULL, v189 IN NUMBER:=NULL,
383                      v190 IN NUMBER:=NULL, v191 IN NUMBER:=NULL,
384                      v192 IN NUMBER:=NULL, v193 IN NUMBER:=NULL,
385                      v194 IN NUMBER:=NULL, v195 IN NUMBER:=NULL,
386                      v196 IN NUMBER:=NULL, v197 IN NUMBER:=NULL,
387                      v198 IN NUMBER:=NULL, v199 IN NUMBER:=NULL,
388                      v200 IN NUMBER:=NULL, v201 IN NUMBER:=NULL,
389                      v202 IN NUMBER:=NULL, v203 IN NUMBER:=NULL,
390                      v204 IN NUMBER:=NULL, v205 IN NUMBER:=NULL,
391                      v206 IN NUMBER:=NULL, v207 IN NUMBER:=NULL,
392                      v208 IN NUMBER:=NULL, v209 IN NUMBER:=NULL,
393                      v210 IN NUMBER:=NULL, v211 IN NUMBER:=NULL,
394                      v212 IN NUMBER:=NULL, v213 IN NUMBER:=NULL,
395                      v214 IN NUMBER:=NULL, v215 IN NUMBER:=NULL,
396                      v216 IN NUMBER:=NULL, v217 IN NUMBER:=NULL,
397                      v218 IN NUMBER:=NULL, v219 IN NUMBER:=NULL,
398                      v220 IN NUMBER:=NULL, v221 IN NUMBER:=NULL,
399                      v222 IN NUMBER:=NULL, v223 IN NUMBER:=NULL,
400                      v224 IN NUMBER:=NULL, v225 IN NUMBER:=NULL,
401                      v226 IN NUMBER:=NULL, v227 IN NUMBER:=NULL,
402                      v228 IN NUMBER:=NULL, v229 IN NUMBER:=NULL,
403                      v230 IN NUMBER:=NULL, v231 IN NUMBER:=NULL,
404                      v232 IN NUMBER:=NULL, v233 IN NUMBER:=NULL,
405                      v234 IN NUMBER:=NULL, v235 IN NUMBER:=NULL,
406                      v236 IN NUMBER:=NULL, v237 IN NUMBER:=NULL,
407                      v238 IN NUMBER:=NULL, v239 IN NUMBER:=NULL,
408                      v240 IN NUMBER:=NULL, v241 IN NUMBER:=NULL,
409                      v242 IN NUMBER:=NULL, v243 IN NUMBER:=NULL,
410                      v244 IN NUMBER:=NULL, v245 IN NUMBER:=NULL,
411                      v246 IN NUMBER:=NULL, v247 IN NUMBER:=NULL,
412                      v248 IN NUMBER:=NULL, v249 IN NUMBER:=NULL)
413 return VARCHAR2;
414 -- pragma restrict_references(interact, WNDS, WNPS, RNPS);
415 
416 --
417 -- NAME:
418 --      relate - determine the relationship between to geometries
419 -- DESCRIPTION
420 --      Relate operates on two geometries and, based on the mask,
421 --      can determine their relationship.  There are three interfaces to relate.
422 --      The first operates geometries in a single SDO layer.  The second
423 --      operates on two geometries in two different layers and the third
424 --      on its first geometry in an SDO layer and the second geometry described
425 --      in its arguement list.
426 --
427 -- ARGUMENTS
428 --      LAYER   - geometry table name (LAYER_sdogeom) input argument
429 --      GID     - Geometry IDentifier input argument
430 --      MASK    - relationship mask
431 --              any combionation of
432 --              DISJOINT
433 --              TOUCH
434 --              EQUAL
435 --              INSIDE
436 --              CONTAINS
437 --              COVEREDBY
438 --              COVERS
439 --              OVERLAPBDYDISJOINT
440 --              OVERLAPBDYINTERSECT
441 --              OR DETERMINE
442 --              OR ANYINTERACT
443 --     x_tolerance - allowed variance of ordinate values within dimension1
444 --     y_tolerance - allowed variance of ordinate values within dimension 2
445 --     vNNN        - list of up to 250 input values describing the elements
446 --                   of a geometric object with the following structure:
447 --                   etype, # of ordinate values, list of ordinate values.
448 --                   For example the following list could be used to describe
449 --                   a four point polygon with with a triangular hole :
450 --                   SDO_GEOM.POLYGON_TYPE, 10, ord1, ord2, ord3, ord4, ord5,
451 --                   ord6, ord7, ord8, ord9, ord10,
452 --                   SDO_GEOM.POLYGON_TYPE, 8, ord1, ord2, ord3, ord4, ord5,
453 --                   ord6, ord7, ord8
454 --                   The following example could be used to describe a two
455 --                   element (single segment) linestring:
456 --                   SDO_GEOM.LINESTRING_TYPE, 4, ord1, ord2, ord3, ord4,
457 --                   SDO_GEOM.LINESTRING_TYPE, 4, ord1, ord2, ord3, ord4
458 --
459 -- RETURNS
460 --      If any combination of the following mask options is specified as the
461 --      mask argument, relate returns the relation if it matches passes mask
462 --      otherwise FALSE.
463 --
464 --      DISJOINT
465 --      TOUCH
466 --      EQUAL
467 --      INSIDE
468 --      CONTAINS
469 --      COVEREDBY
470 --      COVERS
474 --      RELATE will return one of the above relations if the following mask is
471 --      OVERLAPBDYDISJOINT
472 --      OVERLAPBDYINTERSECT
473 --
475 --      specified:
476 --
477 --      DETERMINE
478 --
479 --      RELATE will return TRUE or FALSE for if the following mask is specified :
480 --
481 --      ANYINTERACT
482 --
483 
484 function relate (layer IN VARCHAR2, gid1 IN NUMBER,
485                  mask  IN VARCHAR2,
486                  gid2  IN NUMBER )
487 return VARCHAR2 ;
488 -- pragma restrict_references(relate, WNDS, WNPS, RNPS);
489 
490 
491 function relate (layer1 IN VARCHAR2, gid1  IN  NUMBER,
492                  mask   IN VARCHAR2,
493                  layer2 IN  VARCHAR2, gid2 IN NUMBER )
494 return VARCHAR2 ;
495 -- pragma restrict_references(relate, WNDS, WNPS, RNPS);
496 
497 function relate (layer1 IN VARCHAR2, gid1  IN  NUMBER, nord1 IN NUMBER,
498                  mask   IN VARCHAR2,
499                  layer2 IN  VARCHAR2, gid2 IN NUMBER, nord2 IN NUMBER,
500                  tolerance1 IN NUMBER, tolerance2 IN NUMBER)
501 return VARCHAR2 ;
502 -- pragma restrict_references(relate, WNDS, WNPS, RNPS);
503 
504 function relate (layer1 IN VARCHAR2, gid1  IN NUMBER,
505                 mask   IN VARCHAR2,
506                 x_tolerance IN NUMBER, y_tolerance IN NUMBER,
507                      v000 IN NUMBER:=NULL, v001 IN NUMBER:=NULL,
508                      v002 IN NUMBER:=NULL, v003 IN NUMBER:=NULL,
509                      v004 IN NUMBER:=NULL, v005 IN NUMBER:=NULL,
510                      v006 IN NUMBER:=NULL, v007 IN NUMBER:=NULL,
511                      v008 IN NUMBER:=NULL, v009 IN NUMBER:=NULL,
512                      v010 IN NUMBER:=NULL, v011 IN NUMBER:=NULL,
513                      v012 IN NUMBER:=NULL, v013 IN NUMBER:=NULL,
514                      v014 IN NUMBER:=NULL, v015 IN NUMBER:=NULL,
515                      v016 IN NUMBER:=NULL, v017 IN NUMBER:=NULL,
516                      v018 IN NUMBER:=NULL, v019 IN NUMBER:=NULL,
517                      v020 IN NUMBER:=NULL, v021 IN NUMBER:=NULL,
518                      v022 IN NUMBER:=NULL, v023 IN NUMBER:=NULL,
519                      v024 IN NUMBER:=NULL, v025 IN NUMBER:=NULL,
520                      v026 IN NUMBER:=NULL, v027 IN NUMBER:=NULL,
521                      v028 IN NUMBER:=NULL, v029 IN NUMBER:=NULL,
522                      v030 IN NUMBER:=NULL, v031 IN NUMBER:=NULL,
523                      v032 IN NUMBER:=NULL, v033 IN NUMBER:=NULL,
524                      v034 IN NUMBER:=NULL, v035 IN NUMBER:=NULL,
525                      v036 IN NUMBER:=NULL, v037 IN NUMBER:=NULL,
526                      v038 IN NUMBER:=NULL, v039 IN NUMBER:=NULL,
527                      v040 IN NUMBER:=NULL, v041 IN NUMBER:=NULL,
528                      v042 IN NUMBER:=NULL, v043 IN NUMBER:=NULL,
529                      v044 IN NUMBER:=NULL, v045 IN NUMBER:=NULL,
530                      v046 IN NUMBER:=NULL, v047 IN NUMBER:=NULL,
531                      v048 IN NUMBER:=NULL, v049 IN NUMBER:=NULL,
532                      v050 IN NUMBER:=NULL, v051 IN NUMBER:=NULL,
533                      v052 IN NUMBER:=NULL, v053 IN NUMBER:=NULL,
534                      v054 IN NUMBER:=NULL, v055 IN NUMBER:=NULL,
535                      v056 IN NUMBER:=NULL, v057 IN NUMBER:=NULL,
536                      v058 IN NUMBER:=NULL, v059 IN NUMBER:=NULL,
537                      v060 IN NUMBER:=NULL, v061 IN NUMBER:=NULL,
538                      v062 IN NUMBER:=NULL, v063 IN NUMBER:=NULL,
539                      v064 IN NUMBER:=NULL, v065 IN NUMBER:=NULL,
540                      v066 IN NUMBER:=NULL, v067 IN NUMBER:=NULL,
541                      v068 IN NUMBER:=NULL, v069 IN NUMBER:=NULL,
542                      v070 IN NUMBER:=NULL, v071 IN NUMBER:=NULL,
543                      v072 IN NUMBER:=NULL, v073 IN NUMBER:=NULL,
544                      v074 IN NUMBER:=NULL, v075 IN NUMBER:=NULL,
545                      v076 IN NUMBER:=NULL, v077 IN NUMBER:=NULL,
546                      v078 IN NUMBER:=NULL, v079 IN NUMBER:=NULL,
547                      v080 IN NUMBER:=NULL, v081 IN NUMBER:=NULL,
548                      v082 IN NUMBER:=NULL, v083 IN NUMBER:=NULL,
549                      v084 IN NUMBER:=NULL, v085 IN NUMBER:=NULL,
550                      v086 IN NUMBER:=NULL, v087 IN NUMBER:=NULL,
551                      v088 IN NUMBER:=NULL, v089 IN NUMBER:=NULL,
552                      v090 IN NUMBER:=NULL, v091 IN NUMBER:=NULL,
553                      v092 IN NUMBER:=NULL, v093 IN NUMBER:=NULL,
554                      v094 IN NUMBER:=NULL, v095 IN NUMBER:=NULL,
555                      v096 IN NUMBER:=NULL, v097 IN NUMBER:=NULL,
556                      v098 IN NUMBER:=NULL, v099 IN NUMBER:=NULL,
557                      v100 IN NUMBER:=NULL, v101 IN NUMBER:=NULL,
558                      v102 IN NUMBER:=NULL, v103 IN NUMBER:=NULL,
559                      v104 IN NUMBER:=NULL, v105 IN NUMBER:=NULL,
560                      v106 IN NUMBER:=NULL, v107 IN NUMBER:=NULL,
561                      v108 IN NUMBER:=NULL, v109 IN NUMBER:=NULL,
562                      v110 IN NUMBER:=NULL, v111 IN NUMBER:=NULL,
563                      v112 IN NUMBER:=NULL, v113 IN NUMBER:=NULL,
564                      v114 IN NUMBER:=NULL, v115 IN NUMBER:=NULL,
565                      v116 IN NUMBER:=NULL, v117 IN NUMBER:=NULL,
566                      v118 IN NUMBER:=NULL, v119 IN NUMBER:=NULL,
567                      v120 IN NUMBER:=NULL, v121 IN NUMBER:=NULL,
568                      v122 IN NUMBER:=NULL, v123 IN NUMBER:=NULL,
569                      v124 IN NUMBER:=NULL, v125 IN NUMBER:=NULL,
570                      v126 IN NUMBER:=NULL, v127 IN NUMBER:=NULL,
571                      v128 IN NUMBER:=NULL, v129 IN NUMBER:=NULL,
575                      v136 IN NUMBER:=NULL, v137 IN NUMBER:=NULL,
572                      v130 IN NUMBER:=NULL, v131 IN NUMBER:=NULL,
573                      v132 IN NUMBER:=NULL, v133 IN NUMBER:=NULL,
574                      v134 IN NUMBER:=NULL, v135 IN NUMBER:=NULL,
576                      v138 IN NUMBER:=NULL, v139 IN NUMBER:=NULL,
577                      v140 IN NUMBER:=NULL, v141 IN NUMBER:=NULL,
578                      v142 IN NUMBER:=NULL, v143 IN NUMBER:=NULL,
579                      v144 IN NUMBER:=NULL, v145 IN NUMBER:=NULL,
580                      v146 IN NUMBER:=NULL, v147 IN NUMBER:=NULL,
581                      v148 IN NUMBER:=NULL, v149 IN NUMBER:=NULL,
582                      v150 IN NUMBER:=NULL, v151 IN NUMBER:=NULL,
583                      v152 IN NUMBER:=NULL, v153 IN NUMBER:=NULL,
584                      v154 IN NUMBER:=NULL, v155 IN NUMBER:=NULL,
585                      v156 IN NUMBER:=NULL, v157 IN NUMBER:=NULL,
586                      v158 IN NUMBER:=NULL, v159 IN NUMBER:=NULL,
587                      v160 IN NUMBER:=NULL, v161 IN NUMBER:=NULL,
588                      v162 IN NUMBER:=NULL, v163 IN NUMBER:=NULL,
589                      v164 IN NUMBER:=NULL, v165 IN NUMBER:=NULL,
590                      v166 IN NUMBER:=NULL, v167 IN NUMBER:=NULL,
591                      v168 IN NUMBER:=NULL, v169 IN NUMBER:=NULL,
592                      v170 IN NUMBER:=NULL, v171 IN NUMBER:=NULL,
593                      v172 IN NUMBER:=NULL, v173 IN NUMBER:=NULL,
594                      v174 IN NUMBER:=NULL, v175 IN NUMBER:=NULL,
595                      v176 IN NUMBER:=NULL, v177 IN NUMBER:=NULL,
596                      v178 IN NUMBER:=NULL, v179 IN NUMBER:=NULL,
597                      v180 IN NUMBER:=NULL, v181 IN NUMBER:=NULL,
598                      v182 IN NUMBER:=NULL, v183 IN NUMBER:=NULL,
599                      v184 IN NUMBER:=NULL, v185 IN NUMBER:=NULL,
600                      v186 IN NUMBER:=NULL, v187 IN NUMBER:=NULL,
601                      v188 IN NUMBER:=NULL, v189 IN NUMBER:=NULL,
602                      v190 IN NUMBER:=NULL, v191 IN NUMBER:=NULL,
603                      v192 IN NUMBER:=NULL, v193 IN NUMBER:=NULL,
604                      v194 IN NUMBER:=NULL, v195 IN NUMBER:=NULL,
605                      v196 IN NUMBER:=NULL, v197 IN NUMBER:=NULL,
606                      v198 IN NUMBER:=NULL, v199 IN NUMBER:=NULL,
607                      v200 IN NUMBER:=NULL, v201 IN NUMBER:=NULL,
608                      v202 IN NUMBER:=NULL, v203 IN NUMBER:=NULL,
609                      v204 IN NUMBER:=NULL, v205 IN NUMBER:=NULL,
610                      v206 IN NUMBER:=NULL, v207 IN NUMBER:=NULL,
611                      v208 IN NUMBER:=NULL, v209 IN NUMBER:=NULL,
612                      v210 IN NUMBER:=NULL, v211 IN NUMBER:=NULL,
613                      v212 IN NUMBER:=NULL, v213 IN NUMBER:=NULL,
614                      v214 IN NUMBER:=NULL, v215 IN NUMBER:=NULL,
615                      v216 IN NUMBER:=NULL, v217 IN NUMBER:=NULL,
616                      v218 IN NUMBER:=NULL, v219 IN NUMBER:=NULL,
617                      v220 IN NUMBER:=NULL, v221 IN NUMBER:=NULL,
618                      v222 IN NUMBER:=NULL, v223 IN NUMBER:=NULL,
619                      v224 IN NUMBER:=NULL, v225 IN NUMBER:=NULL,
620                      v226 IN NUMBER:=NULL, v227 IN NUMBER:=NULL,
621                      v228 IN NUMBER:=NULL, v229 IN NUMBER:=NULL,
622                      v230 IN NUMBER:=NULL, v231 IN NUMBER:=NULL,
623                      v232 IN NUMBER:=NULL, v233 IN NUMBER:=NULL,
624                      v234 IN NUMBER:=NULL, v235 IN NUMBER:=NULL,
625                      v236 IN NUMBER:=NULL, v237 IN NUMBER:=NULL,
626                      v238 IN NUMBER:=NULL, v239 IN NUMBER:=NULL,
627                      v240 IN NUMBER:=NULL, v241 IN NUMBER:=NULL,
628                      v242 IN NUMBER:=NULL, v243 IN NUMBER:=NULL,
629                      v244 IN NUMBER:=NULL, v245 IN NUMBER:=NULL,
630                      v246 IN NUMBER:=NULL, v247 IN NUMBER:=NULL,
631                      v248 IN NUMBER:=NULL, v249 IN NUMBER:=NULL )
632 return VARCHAR2 ;
633 -- pragma restrict_references(relate, WNDS, WNPS, RNPS);
634 
635 
636 ------------------------------------------------------------------------------
637 -- PART II. Functions and procedures for object model                       --
638 ------------------------------------------------------------------------------
639 
640 --
641 -- NAME:
642 --      relate - object relate function
643 -- DESCRIPTION
644 --      This function operates on two geometries and, based on the mask,
645 --      can determine their relationship.
646 --
647 -- ARGUMENTS
648 --      geom1     - the first geometry object.
649 --      dim1      - the dimensional information array corresponding to the
650 --                  first geometry object, usually selected from
651 --                  SDO_GEOM_METADATA table.
652 --      mask      - relationship mask, any combionation of:
653 --                  DISJOINT, TOUCH, EQUAL, INSIDE, CONTAINS, COVEREDBY,
654 --                  COVERS, OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT,
655 --                  OR DETERMINE, OR ANYINTERACT
656 --      geom2     - the second geometry object.
657 --      dim2      - the dimensional information array corresponding to the
658 --                  second geometry object, usually selected from
659 --                  SDO_GEOM_METADATA table.
660 --      tol       - tolerance value.
661 --
662 -- RETURNS
663 --      If any combination of the following mask options is specified as the
664 --      mask argument, relate returns the relation if it matches passes mask
665 --      otherwise 'FALSE':
666 --      DISJOINT, TOUCH, EQUAL, INSIDE, CONTAINS, COVEREDBY, COVERS,
667 --      OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT.
668 --
672 --      Relate will return 'TRUE' or 'FALSE' for if the following mask is
669 --      Relate will return one of the above relations if the following mask is
670 --      specified: 'DETERMINE'.
671 --
673 --      specified: 'ANYINTERACT'.
674 --
675 
676 function relate(geom1 IN MDSYS.SDO_GEOMETRY,
677                 dim1  IN MDSYS.SDO_DIM_ARRAY,
678                 mask  IN VARCHAR2,
679                 geom2 IN MDSYS.SDO_GEOMETRY,
680                 dim2  IN MDSYS.SDO_DIM_ARRAY)
681 return VARCHAR2 PARALLEL_ENABLE;
682 -- pragma restrict_references(relate, WNDS, WNPS, RNPS);
683 
684 
685 function relate(geom1 IN MDSYS.SDO_GEOMETRY,
686                 mask  IN VARCHAR2,
687                 geom2 IN MDSYS.SDO_GEOMETRY,
688                 tol   IN NUMBER)
689 return VARCHAR2 PARALLEL_ENABLE;
690 -- pragma restrict_references(relate, WNDS, WNPS, RNPS);
691 
692 
693 --
694 -- NAME:
695 --      within_distance - object within distance function
696 -- DESCRIPTION
697 --      This function operates on two geometries and determines if they
698 --      are within the distance of <dist>.
699 --
700 -- ARGUMENTS
701 --      geom1     - the first geometry object.
702 --      dim1      - the dimensional information array corresponding to the
703 --                  first geometry object, usually selected from
704 --                  SDO_GEOM_METADATA table.
705 --      dist      - Euclidean distance value.
706 --      geom2     - the second geometry object.
707 --      dim2      - the dimensional information array corresponding to the
708 --                  second geometry object, usually selected from
709 --                  SDO_GEOM_METADATA table.
710 --      tol       - tolerance value.
711 --
712 -- RETURNS
713 --      'TRUE' if the two geometries are within distance of <dist> from
714 --      each other, or 'FALSE' otherwise.
715 --
716 
717 function within_distance(geom1 IN MDSYS.SDO_GEOMETRY,
718                          dim1  IN MDSYS.SDO_DIM_ARRAY,
719                          dist  IN NUMBER,
720                          geom2 IN MDSYS.SDO_GEOMETRY,
721                          dim2  IN MDSYS.SDO_DIM_ARRAY,
722                          units IN VARCHAR2:=NULL)
723 return VARCHAR2 PARALLEL_ENABLE;
724  -- pragma restrict_references(within_distance, WNDS, WNPS, RNPS);
725 
726 
727 function within_distance(geom1 IN MDSYS.SDO_GEOMETRY,
728                          dist  IN NUMBER,
729                          geom2 IN MDSYS.SDO_GEOMETRY,
730                          tol   IN NUMBER,
731                          units IN VARCHAR2:=NULL)
732 return VARCHAR2 PARALLEL_ENABLE;
733  -- pragma restrict_references(within_distance, WNDS, WNPS, RNPS);
734 
735 
736 --
737 -- NAME:
738 --      sdo_buffer -- buffer generation
739 -- DESCRIPTION
740 --      This function generates a buffer polygon for the input geometry
741 --      object with buffer distance <dist>.
742 --
743 -- ARGUMENTS
744 --      geom      - the input geometry object.
745 --      dim       - the dimensional information array corresponding to the
746 --                  input geometry object, usually selected from
747 --                  SDO_GEOM_METADATA table.
748 --      dist      - Euclidean distance value.
749 --      params    - Unit of the above dist; arc_tolerance for geodetic buffering
750 --      tol       - tolerance value.
751 --
752 -- RETURNS
753 --      This function returns a geometry object representing the buffer
754 --      polygon.
755 --
756 
757 function sdo_buffer(geom IN MDSYS.SDO_GEOMETRY,
758                     dim  IN MDSYS.SDO_DIM_ARRAY,
759                     dist IN NUMBER)
760 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
761 pragma restrict_references(sdo_buffer, WNDS, WNPS, TRUST);
762 
763 
764 function sdo_buffer(geom IN MDSYS.SDO_GEOMETRY,
765                     dist IN NUMBER,
766                     tol  IN NUMBER)
767 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
768 pragma restrict_references(sdo_buffer, WNDS, WNPS, TRUST);
769 
770 function sdo_buffer(geom IN MDSYS.SDO_GEOMETRY,
771                     dim  IN MDSYS.SDO_DIM_ARRAY,
772                     dist IN NUMBER,
773                     params IN VARCHAR2)
774 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
775 pragma restrict_references(sdo_buffer, WNDS, WNPS, TRUST);
776 
777 function sdo_buffer(geom IN MDSYS.SDO_GEOMETRY,
778                     dist IN NUMBER,
779                     tol  IN NUMBER,
780                     params IN VARCHAR2)
781 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
782 pragma restrict_references(sdo_buffer, WNDS, WNPS, TRUST);
783 
784 
785 -- Geometry operations
786 --
787 -- NAME:
788 --      sdo_union        -- union ('OR' operation) of two geometry objects.
789 --      sdo_difference   -- difference ('MINUS' operation) of two geometry
790 --                          objects.
791 --      sdo_xor          -- symetric difference('XOR' operation) of two
792 --                          geometry objects.
793 --      sdo_intersection -- intersection ('AND' operation) of two geometry
794 --                          objects.
795 --
796 -- DESCRIPTION
797 --      These four functions perform topological operations on two geometry
798 --      objects.
799 --
800 -- ARGUMENTS
801 --      geom1     - the first geometry object.
802 --      dim1      - the dimensional information array corresponding to the
806 --      dim2      - the dimensional information array corresponding to the
803 --                  first geometry object, usually selected from
804 --                  SDO_GEOM_METADATA table.
805 --      geom2     - the second geometry object.
807 --                  second geometry object, usually selected from
808 --                  SDO_GEOM_METADATA table.
809 --      tol       - tolerance value.
810 --
811 -- RETURNS
812 --      A geometry object representing the result of this geometry operation.
813 --
814 
815 function sdo_union(geom1 IN MDSYS.SDO_GEOMETRY,
816                    dim1  IN MDSYS.SDO_DIM_ARRAY,
817                    geom2 IN MDSYS.SDO_GEOMETRY,
818                    dim2  IN MDSYS.SDO_DIM_ARRAY)
819 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
820 -- pragma restrict_references(sdo_union, WNDS, WNPS, RNPS);
821 
822 function sdo_self_union(geom1 IN MDSYS.SDO_GEOMETRY,
823                         dim1  IN MDSYS.SDO_DIM_ARRAY)
824 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
825 
826 function sdo_difference(geom1 IN MDSYS.SDO_GEOMETRY,
827                         dim1  IN MDSYS.SDO_DIM_ARRAY,
828                         geom2 IN MDSYS.SDO_GEOMETRY,
829                         dim2  IN MDSYS.SDO_DIM_ARRAY)
830 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
831 -- pragma restrict_references(sdo_difference, WNDS, WNPS, RNPS);
832 
833 function sdo_xor(geom1 IN MDSYS.SDO_GEOMETRY,
834                  dim1  IN MDSYS.SDO_DIM_ARRAY,
835                  geom2 IN MDSYS.SDO_GEOMETRY,
836                  dim2  IN MDSYS.SDO_DIM_ARRAY)
837 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
838 -- pragma restrict_references(sdo_xor, WNDS, WNPS, RNPS);
839 
840 function sdo_intersection(geom1 IN MDSYS.SDO_GEOMETRY,
841                           dim1  IN MDSYS.SDO_DIM_ARRAY,
842                           geom2 IN MDSYS.SDO_GEOMETRY,
843                           dim2  IN MDSYS.SDO_DIM_ARRAY)
844 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
845 -- pragma restrict_references(sdo_intersection, WNDS, WNPS, RNPS);
846 
847 
848 function sdo_union(geom1 IN MDSYS.SDO_GEOMETRY,
849                    geom2 IN MDSYS.SDO_GEOMETRY,
850                    tol   IN NUMBER)
851 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
852 -- pragma restrict_references(sdo_union, WNDS, WNPS, RNPS);
853 
854 function sdo_self_union(geom1 IN MDSYS.SDO_GEOMETRY,
855                         tol   IN NUMBER)
856 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
857 
858 function sdo_difference(geom1 IN MDSYS.SDO_GEOMETRY,
859                         geom2 IN MDSYS.SDO_GEOMETRY,
860                         tol   IN NUMBER)
861 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
862 -- pragma restrict_references(sdo_difference, WNDS, WNPS, RNPS);
863 
864 function sdo_xor(geom1 IN MDSYS.SDO_GEOMETRY,
865                  geom2 IN MDSYS.SDO_GEOMETRY,
866                  tol   IN NUMBER)
867 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
868 -- pragma restrict_references(sdo_xor, WNDS, WNPS, RNPS);
869 
870 function sdo_intersection(geom1 IN MDSYS.SDO_GEOMETRY,
871                           geom2 IN MDSYS.SDO_GEOMETRY,
872                           tol   IN NUMBER)
873 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
874 -- pragma restrict_references(sdo_intersection, WNDS, WNPS, RNPS);
875 
876 
877 -- Deprecated polygon operation interfaces
878 --
879 -- NAME:
880 --      sdo_poly_union        -- union ('OR' operation) of two polygons
881 --      sdo_poly_difference   -- difference ('MINUS' operation) of two polygons
882 --      sdo_poly_xor          -- symetric difference('XOR' operation) of two
883 --                               polygons
884 --      sdo_poly_intersection -- intersection ('AND' operation) of two polygons
885 --
886 -- DESCRIPTION
887 --      These four functions are deprecated starting from version 8.1.6.
888 --      Please use geometry operations sdo_union, sdo_difference,
889 --      sdo_xor, and sdo_intersection instead of the above polygon specific
890 --      functions.
891 --
892 
893 function sdo_poly_union(geom1 IN MDSYS.SDO_GEOMETRY,
894                         dim1  IN MDSYS.SDO_DIM_ARRAY,
895                         geom2 IN MDSYS.SDO_GEOMETRY,
896                         dim2  IN MDSYS.SDO_DIM_ARRAY)
897 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
898 -- pragma restrict_references(sdo_poly_union, WNDS, WNPS, RNPS);
899 
900 function sdo_poly_difference(geom1 IN MDSYS.SDO_GEOMETRY,
901                              dim1  IN MDSYS.SDO_DIM_ARRAY,
902                              geom2 IN MDSYS.SDO_GEOMETRY,
903                              dim2  IN MDSYS.SDO_DIM_ARRAY)
904 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
905 -- pragma restrict_references(sdo_poly_difference, WNDS, WNPS, RNPS);
906 
907 function sdo_poly_xor(geom1 IN MDSYS.SDO_GEOMETRY,
908                       dim1  IN MDSYS.SDO_DIM_ARRAY,
909                       geom2 IN MDSYS.SDO_GEOMETRY,
910                       dim2  IN MDSYS.SDO_DIM_ARRAY)
911 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
912 -- pragma restrict_references(sdo_poly_xor, WNDS, WNPS, RNPS);
913 
914 function sdo_poly_intersection(geom1 IN MDSYS.SDO_GEOMETRY,
915                                dim1  IN MDSYS.SDO_DIM_ARRAY,
916                                geom2 IN MDSYS.SDO_GEOMETRY,
917                                dim2  IN MDSYS.SDO_DIM_ARRAY)
918 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
919 -- pragma restrict_references(sdo_poly_intersection, WNDS, WNPS, RNPS);
920 
921 
922 --
923 -- NAME:
927 -- DESCRIPTION
924 --      sdo_length -- compute length for one-dimensional geometry
925 --                    (linestring), or perimeter for two-dimensional
926 --                    geometry (polygon)
928 --      If the input polygon contains one or more holes, this function
929 --      calculates perimeters for the exterior boundary and all the holes,
930 --      and then returns the sum of all the perimeters.
931 --
932 -- ARGUMENTS
933 --      geom      - the input geometry object.
934 --      dim       - the dimensional information array corresponding to the
935 --                  input geometry object, usually selected from
936 --                  SDO_GEOM_METADATA table.
937 --      tol       - tolerance value.
938 --      unit      - the unit used in the result, if needed
939 --      count_shared_edges - Default 1(counting shared edges once) or
940 --                                   2(counting shared edges twice)
941 --
942 -- RETURNS
943 --      This function returns length or perimeter of a geometry object.
944 --
945 
946 function sdo_length(geom IN MDSYS.SDO_GEOMETRY,
947                     dim  IN MDSYS.SDO_DIM_ARRAY,
948                     unit IN VARCHAR2 DEFAULT NULL,
949                     count_shared_edges IN NUMBER DEFAULT NULL)
950 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
951 -- pragma restrict_references(sdo_length, WNDS, WNPS, RNPS);
952 
953 
954 function sdo_length(geom IN MDSYS.SDO_GEOMETRY,
955                     tol  IN NUMBER,
956                     unit IN VARCHAR2 DEFAULT NULL,
957                     count_shared_edges IN NUMBER DEFAULT NULL)
958 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
959 -- pragma restrict_references(sdo_length, WNDS, WNPS, RNPS);
960 
961 
962 --
963 -- NAME:
964 --      sdo_area -- compute area for two-dimensional geometry (polygon)
965 -- DESCRIPTION
966 --      This function returns correct area for polygon-with-holes.
967 --
968 -- ARGUMENTS
969 --      geom      - the input geometry object.
970 --      dim       - the dimensional information array corresponding to the
971 --                  input geometry object, usually selected from
972 --                  SDO_GEOM_METADATA table.
973 --      tol       - tolerance value.
974 --      unit      - the unit used in the result, if needed
975 --
976 -- RETURNS
977 --      This function returns area of a geometry object.
978 
979 function sdo_area(geom IN MDSYS.SDO_GEOMETRY,
980                   dim  IN MDSYS.SDO_DIM_ARRAY,
981                   unit IN VARCHAR2 DEFAULT NULL)
982 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
983 -- pragma restrict_references(sdo_area, WNDS, WNPS, RNPS);
984 
985 function sdo_area(geom IN MDSYS.SDO_GEOMETRY,
986                   tol  IN NUMBER,
987                   unit IN VARCHAR2 DEFAULT NULL)
988 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
989 -- pragma restrict_references(sdo_area, WNDS, WNPS, RNPS);
990 
991 function sdo_volume(geom IN MDSYS.SDO_GEOMETRY,
992                   tol  IN NUMBER,
993                   unit IN VARCHAR2 DEFAULT NULL)
994 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
995 
996 --
997 -- NAME:
998 --         sdo_distance
999 --
1000 -- DESCRIPTION
1001 --         Compute the distance between two geometries
1002 --
1003 -- ARGUMENTS
1004 --        geom1    - the first geometry object
1005 --        dim1     - the dimensional information array corresponding to the
1006 --                   first geometry object, usually selected from
1007 --                   SDO_GEOM_METADATA table.
1008 --        geom2    - the second geometry object.
1009 --        dim2     - the dimensional information array corresponding to the
1010 --                   second geometry object, usually selected from
1011 --                   SDO_GEOM_METADATA table.
1012 --        tol      - tolerance value.
1013 --        unit     - the unit for the returned distance
1014 --
1015 -- RETURNS
1016 --        the minimum distance between the two given geometries.
1017 --
1018 
1019 function   sdo_distance(geom1 IN mdsys.sdo_geometry,
1020                       dim1  IN mdsys.sdo_dim_array,
1021                       geom2 IN mdsys.sdo_geometry,
1022                       dim2  IN mdsys.sdo_dim_array,
1023                       unit  IN varchar2 DEFAULT NULL)
1024 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1025 --pragma restrict_references(sdo_distance, WNDS, WNPS, RNPS);
1026 
1027 
1028 function   sdo_distance(geom1 IN mdsys.sdo_geometry,
1029                         geom2 IN mdsys.sdo_geometry,
1030                         tol   IN NUMBER,
1031                         unit  IN varchar2 DEFAULT NULL)
1032 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1033 --pragma restrict_references(sdo_distance, WNDS, WNPS, RNPS);
1034 
1035 --
1036 -- NAME:
1037 --        sdo_maxdistance_line
1038 --
1039 -- DESCRIPTION
1040 --        Compute the the line that has the maximum distance between the
1041 --        two given geometries.
1042 --
1043 -- ARGUMENTS
1044 --        geom1    - the first geometry object
1045 --        dim1     - the dimensional information array corresponding to the
1046 --                   first geometry object, usually selected from
1047 --                   SDO_GEOM_METADATA table.
1048 --        geom2    - the second geometry object.
1049 --        dim2     - the dimensional information array corresponding to the
1050 --                   second geometry object, usually selected from
1051 --                   SDO_GEOM_METADATA table.
1052 --        tol      - tolerance value.
1053 --
1054 -- RETURNS
1058 
1055 --        the line that has the maximum distance between the two given
1056 --        geometries.
1057 --
1059 function sdo_maxdistance_line(geom1 IN mdsys.sdo_geometry,
1060                               dim1  IN mdsys.sdo_dim_array,
1061                               geom2 IN mdsys.sdo_geometry,
1062                               dim2  IN mdsys.sdo_dim_array)
1063 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1064 
1065 function sdo_maxdistance_line(geom1 IN mdsys.sdo_geometry,
1066                               geom2 IN mdsys.sdo_geometry,
1067                               tol   IN NUMBER)
1068 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1069 
1070 --
1071 -- NAME:
1072 --        sdo_maxdistance
1073 --
1074 -- DESCRIPTION
1075 --        Compute the maximal distance between two geometries
1076 --
1077 -- ARGUMENTS
1078 --        geom1    - the first geometry object
1079 --        dim1     - the dimensional information array corresponding to the
1080 --                   first geometry object, usually selected from
1081 --                   SDO_GEOM_METADATA table.
1082 --        geom2    - the second geometry object.
1083 --        dim2     - the dimensional information array corresponding to the
1084 --                   second geometry object, usually selected from
1085 --                   SDO_GEOM_METADATA table.
1086 --        tol      - tolerance value.
1087 --        unit     - the unit for the returned distance
1088 --
1089 -- RETURNS
1090 --        the maximal distance between the two given geometries.
1091 --
1092 
1093 function   sdo_maxdistance(geom1 IN mdsys.sdo_geometry,
1094                            dim1  IN mdsys.sdo_dim_array,
1095                            geom2 IN mdsys.sdo_geometry,
1096                            dim2  IN mdsys.sdo_dim_array,
1097                            unit  IN varchar2 DEFAULT NULL)
1098 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1099 
1100 function   sdo_maxdistance(geom1 IN mdsys.sdo_geometry,
1101                            geom2 IN mdsys.sdo_geometry,
1102                            tol   IN NUMBER,
1103                            unit  IN varchar2 DEFAULT NULL)
1104 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1105 
1106 --
1107 -- NAME:
1108 --        sdo_diameter_line
1109 --
1110 -- DESCRIPTION
1111 --        Compute the line that has the diameter of geometry
1112 --
1113 -- ARGUMENTS
1114 --        geom     - the geometry object
1115 --        dim      - the dimensional information array
1116 --        tol      - tolerance value.
1117 --
1118 -- RETURNS
1119 --        the line that has the diameter of geometry
1120 --
1121 
1122 function sdo_diameter_line(geom  IN mdsys.sdo_geometry,
1123                            dim   IN mdsys.sdo_dim_array)
1124 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1125 
1126 function sdo_diameter_line(geom  IN mdsys.sdo_geometry,
1127                            tol   IN NUMBER)
1128 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1129 
1130 --
1131 -- NAME:
1132 --        sdo_diameter
1133 --
1134 -- DESCRIPTION
1135 --        Compute the diameter of geometry
1136 --
1137 -- ARGUMENTS
1138 --        geom     - the geometry object
1139 --        dim      - the dimensional information array
1140 --        tol      - tolerance value.
1141 --        unit     - the unit for the returned distance
1142 --
1143 -- RETURNS
1144 --        the diameter of geometry
1145 --
1146 
1147 function   sdo_diameter(geom  IN mdsys.sdo_geometry,
1148                         dim   IN mdsys.sdo_dim_array,
1149                         unit  IN varchar2 DEFAULT NULL)
1150 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1151 
1152 function   sdo_diameter(geom  IN mdsys.sdo_geometry,
1153                         tol   IN NUMBER,
1154                         unit  IN varchar2 DEFAULT NULL)
1155 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1156 
1157 --
1158 -- NAME:
1159 --        sdo_width_line
1160 --
1161 -- DESCRIPTION
1162 --        Compute the line that has the width of geometry
1163 --
1164 -- ARGUMENTS
1165 --        geom     - the geometry object
1166 --        dim      - the dimensional information array
1167 --        tol      - tolerance value.
1168 --
1169 -- RETURNS
1170 --        the line that has the width of geometry
1171 --
1172 
1173 function sdo_width_line(geom  IN mdsys.sdo_geometry,
1174                         dim   IN mdsys.sdo_dim_array)
1175 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1176 
1177 function sdo_width_line(geom  IN mdsys.sdo_geometry,
1178                         tol   IN NUMBER)
1179 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1180 
1181 --
1182 -- NAME:
1183 --        sdo_width
1184 --
1185 -- DESCRIPTION
1186 --        Compute the width of geometry
1187 --
1188 -- ARGUMENTS
1189 --        geom     - the geometry object
1190 --        dim      - the dimensional information array
1191 --        tol      - tolerance value.
1192 --        unit     - the unit for the returned distance
1193 --
1194 -- RETURNS
1195 --        the width of geometry
1196 --
1197 
1198 function   sdo_width(geom  IN mdsys.sdo_geometry,
1199                      dim   IN mdsys.sdo_dim_array,
1200                      unit  IN varchar2 DEFAULT NULL)
1201 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1202 
1203 function   sdo_width(geom  IN mdsys.sdo_geometry,
1204                      tol   IN NUMBER,
1205                      unit  IN varchar2 DEFAULT NULL)
1206 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1207 
1208 --
1212 -- DESCRIPTION
1209 -- NAME:
1210 --         sdo_mbc
1211 --
1213 --         Compute the minimum bounding circle of geometry
1214 --
1215 -- ARGUMENTS
1216 --        geom     - the geometry object
1217 --        dim      - the dimensional information array
1218 --        tol      - tolerance value
1219 --        arc_tolerance  - mainly used for densify geodetic arc
1220 --
1221 -- RETURNS
1222 --        the minimum bounding circle of geometry
1223 --
1224 function sdo_mbc(geom          IN mdsys.sdo_geometry,
1225                  dim           IN mdsys.sdo_dim_array,
1226                  arc_tolerance IN NUMBER DEFAULT NULL)
1227 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1228 
1229 function sdo_mbc(geom          IN mdsys.sdo_geometry,
1230                  tol           IN NUMBER,
1231                  arc_tolerance IN NUMBER DEFAULT NULL)
1232 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1233 
1234 --
1235 -- NAME:
1236 --         sdo_mbc_center
1237 --
1238 -- DESCRIPTION
1239 --         Compute the center of the minimum bounding circle of geometry
1240 --
1241 -- ARGUMENTS
1242 --        geom     - the geometry object
1243 --        dim      - the dimensional information array
1244 --        tol      - tolerance value
1245 --
1246 -- RETURNS
1247 --        the center of the minimum bounding circle of geometry
1248 --
1249 function sdo_mbc_center(geom   IN mdsys.sdo_geometry,
1250                         dim    IN mdsys.sdo_dim_array)
1251 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1252 
1253 function sdo_mbc_center(geom   IN mdsys.sdo_geometry,
1254                         tol    IN NUMBER)
1255 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1256 
1257 --
1258 -- NAME:
1259 --         sdo_mbc_radius
1260 --
1261 -- DESCRIPTION
1262 --         Compute the radius of the minimum bounding circle of geometry
1263 --
1264 -- ARGUMENTS
1265 --        geom     - the geometry object
1266 --        dim      - the dimensional information array
1267 --        tol      - tolerance value
1268 --        unit     - the unit for the returned distance
1269 --
1270 -- RETURNS
1271 --        the radius of the minimum bounding circle of geometry
1272 --
1273 function sdo_mbc_radius(geom          IN mdsys.sdo_geometry,
1274                         dim           IN mdsys.sdo_dim_array,
1275                         unit          IN varchar2 DEFAULT NULL)
1276 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1277 
1278 function sdo_mbc_radius(geom          IN mdsys.sdo_geometry,
1279                         tol           IN NUMBER,
1280                         unit       IN varchar2 DEFAULT NULL)
1281 return NUMBER DETERMINISTIC PARALLEL_ENABLE;
1282 
1283 --
1284 -- NAME:
1285 --
1286 --      sdo_closest_points
1287 -- DESCRIPTION
1288 --      computes the minimum inter-geometry distance and the
1289 --      coordinates of closest point pair
1290 --
1291 -- ARGUMENTS
1292 --        geom1 - the first geometry
1293 --        geom2 - the second geometry
1294 --        tolerance - tolerance which is a number
1295 --        unit  - depends on the coordinate system
1296 -- RETURNS
1297 --       -9999 - if any portion of either geometry has arc(s);
1298 --       dist  - the distance - otherwise
1299 --       geoma - the coordinates of first point of closest approach as a geometry object
1300 --       geomb - the coordinates of second point of closest approach as a geometry object
1301 --
1302 -- Note that: dim1 and dim2 - dimensions of geom1 and geom2 respectively are computed internally.
1303 
1304 procedure sdo_closest_points(geom1 IN mdsys.sdo_geometry,
1305                              geom2 IN mdsys.sdo_geometry,
1306                              tolerance IN NUMBER,
1307                              unit      IN VARCHAR2,
1308                              dist      OUT NUMBER,
1309                              geoma     OUT mdsys.sdo_geometry,
1310                              geomb     OUT mdsys.sdo_geometry);
1311 --pragma restrict_references(sdo_closest_points, WNDS, WNPS, RNPS);
1312 
1313 
1314 --
1315 -- NAME:
1316 --
1317 --      sdo_convexhull
1318 -- DESCRIPTION
1319 --      calculates the convex hull of the given geometry.
1320 --
1321 --      If the geometry is of point type, or has less than three
1322 --      points in total this function will return null.
1323 --
1324 -- ARGUMENTS
1325 --        geom1    - the geometry object
1326 --        dim1     - the dimensional information array corresponding to the
1327 --                   geometry object, usually selected from
1328 --                   SDO_GEOM_METADATA table.
1329 --        tol      - tolerance value.
1330 -- RETURNS
1331 --      A geometry object representing the result of polygon operation.
1332 --
1333 
1334 function   sdo_convexhull(geom1 IN mdsys.sdo_geometry,
1335                           dim1  IN mdsys.sdo_dim_array)
1336 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1337 pragma restrict_references(sdo_convexhull, WNDS, WNPS, RNPS);
1338 
1339 function   sdo_convexhull(geom1 IN mdsys.sdo_geometry,
1340                           tol   IN NUMBER)
1341 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1342 pragma restrict_references(sdo_convexhull, WNDS, WNPS, RNPS);
1343 
1344 function   sdo_triangulate(geom IN mdsys.sdo_geometry,
1345                           tol   IN NUMBER)
1346 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1347 pragma restrict_references(sdo_triangulate, WNDS, WNPS, RNPS);
1348 
1349 -- computes the concavehull of the geometry, assuming
1350 -- that points are likely on the boundary,
1351 -- length: to stop, when the longest edge in the concave hull
1352 -- is shorter than it.
1353 function   sdo_concavehull_boundary(geom       IN mdsys.sdo_geometry,
1354                                     tol        IN NUMBER,
1355                                     length     IN NUMBER DEFAULT NULL)
1356 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1357 pragma restrict_references(sdo_concavehull_boundary, WNDS, WNPS, RNPS);
1358 
1359 -- computes the concavehull of the geometry, assuming
1360 -- that points are not only on the boundary, but also inside.
1361 -- radius: output, the radius of stopping circle
1362 function   sdo_concavehull(geom       IN mdsys.sdo_geometry,
1363                            tol        IN NUMBER,
1364                            radius    OUT NUMBER)
1365 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1366 pragma restrict_references(sdo_concavehull, WNDS, WNPS, RNPS);
1367 
1368 -- computes the concavehull of the geometry, assuming
1369 -- that points are not only on the boundary, but also inside
1370 function   sdo_concavehull(geom       IN mdsys.sdo_geometry,
1371                            tol        IN NUMBER)
1372 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1373 pragma restrict_references(sdo_concavehull, WNDS, WNPS, RNPS);
1374 
1375 -- computes the alpha shape of the geometry
1376 -- radius: alpha value = 1/radius
1377 -- flag: 0 -> include points and edges,
1378 --       1 -> doesn't include points and edges
1379 function sdo_alpha_shape(geom       IN mdsys.sdo_geometry,
1380                          tol        IN NUMBER,
1381                          radius     IN NUMBER DEFAULT NULL,
1382                          flag       IN BINARY_INTEGER DEFAULT 0)
1383 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1384 
1385 
1386 --
1387 -- NAME:
1388 --
1389 --      sdo_centroid
1390 -- DESCRIPTION
1391 --      calculates the centroid of the given geometry.
1392 --
1393 --      The geometry must be of Polygon type; otherwise
1394 --      this function will return null (even for
1395 --      multi-polygon).
1396 --
1397 -- ARGUMENTS
1398 --        geom1    - the polygon-typed geometry object
1399 --        dim1     - the dimensional information array corresponding to the
1400 --                   geometry object, usually selected from
1401 --                   USER_SDO_GEOM_METADATA table.
1402 --        tol      - tolerance value.
1403 -- RETURNS
1404 --      A point geometry object representing the centroid.
1405 --
1406 
1407 function   sdo_centroid(geom1 IN mdsys.sdo_geometry,
1408                         dim1  IN mdsys.sdo_dim_array)
1409 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1410 -- pragma restrict_references(sdo_centroid, WNDS, WNPS, RNPS);
1411 
1412 function   sdo_centroid(geom1 IN mdsys.sdo_geometry,
1413                         tol   IN NUMBER)
1414 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1415 --pragma restrict_references(sdo_centroid, WNDS, WNPS, RNPS);
1416 
1417 --
1418 -- NAME:
1419 --
1420 -- SDO_MBR
1421 -- DESCRIPTION
1422 -- Returns the MBR of the geometry object. The result will be
1423 -- of type x003 with (1003,3,3) element. That is a rectangle
1424 -- object in 2 dimensions.
1425 --
1426 
1427 function sdo_mbr(geom IN mdsys.sdo_geometry,
1428                         dim IN mdsys.sdo_dim_array)
1429 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1430 --pragma restrict_references(sdo_mbr, WNDS, WNPS, RNPS);
1431 
1432 function sdo_mbr(geom IN mdsys.sdo_geometry)
1433 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1434 --pragma restrict_references(sdo_mbr, WNDS, WNPS, RNPS);
1435 
1436 function sdo_g3dconv(geom IN mdsys.sdo_geometry,
1437                      dim IN mdsys.sdo_dim_array)
1438 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1439 --pragma restrict_references(sdo_g3dconv, WNDS, WNPS, RNPS);
1440 
1441 function sdo_g3dconv(geom IN mdsys.sdo_geometry)
1442 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1443 --pragma restrict_references(sdo_g3dconv, WNDS, WNPS, RNPS);
1444 
1445 
1446 function sdo_max_mbr_ordinate(geom IN mdsys.sdo_geometry,
1447                               dim IN mdsys.sdo_dim_array,
1448                               ordinate_pos IN NUMBER)
1449 return NUMBER PARALLEL_ENABLE;
1450 pragma restrict_references(sdo_max_mbr_ordinate, WNDS, WNPS, RNPS);
1451 
1452 function sdo_max_mbr_ordinate(geom IN mdsys.sdo_geometry,
1453                               ordinate_pos IN NUMBER)
1454 return NUMBER PARALLEL_ENABLE;
1455 pragma restrict_references(sdo_max_mbr_ordinate, WNDS, WNPS, RNPS);
1456 
1457 
1458 function sdo_min_mbr_ordinate(geom IN mdsys.sdo_geometry,
1459                               dim IN mdsys.sdo_dim_array,
1460                               ordinate_pos IN NUMBER)
1461 return NUMBER PARALLEL_ENABLE;
1462 pragma restrict_references(sdo_min_mbr_ordinate, WNDS, WNPS, RNPS);
1463 
1464 function sdo_min_mbr_ordinate(geom IN mdsys.sdo_geometry,
1465                               ordinate_pos IN NUMBER)
1466 return NUMBER PARALLEL_ENABLE;
1467 pragma restrict_references(sdo_min_mbr_ordinate, WNDS, WNPS, RNPS);
1468 
1469 
1470 
1471 --
1472 -- NAME:
1473 --
1474 --      sdo_pointonsurface
1475 -- DESCRIPTION
1476 --      Returns a point that is guaranteed to be on the surface of
1477 --      the given geometry (polygon type).
1478 --
1479 --      Currently supports only geometries of Polygon type.
1480 --
1481 -- ARGUMENTS
1482 --        geom1    - the polygon geometry object
1483 --        dim1     - the dimensional information array corresponding to the
1484 --                   geometry object, usually selected from
1485 --                   USER_SDO_GEOM_METADATA table.
1486 --        tol      - tolerance value.
1487 -- RETURNS
1488 --      A point geometry object representing the point
1489 --
1490 
1491 function   sdo_pointonsurface(geom1 IN mdsys.sdo_geometry,
1492                               dim1  IN mdsys.sdo_dim_array)
1493 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1494 pragma restrict_references(sdo_pointonsurface, WNDS, WNPS, RNPS);
1495 
1496 function   sdo_pointonsurface(geom1 IN mdsys.sdo_geometry,
1497                               tol   IN NUMBER)
1498 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1499 pragma restrict_references(sdo_pointonsurface, WNDS, WNPS, RNPS);
1500 
1501 
1502 --
1503 -- NAME:
1504 --      validate_geometry - validate a geometry object
1505 --      validate_layer    - validate all geometry objects in a column
1506 -- DESCRIPTION
1507 --      Validate geometry based on OGIS rules. Only check known SDO
1508 --      data types. Elements of unknown type are considered valid.
1509 --
1510 --      If a geometry contains multiple polygon rings, validate_geometry
1511 --      andvalidate_layer only check each ring against itself. No ring-ring
1512 --      relationship is examined at this time.
1513 --
1514 -- ARGUMENTS
1515 --      theGeometry     - the geometry object to be validated
1516 --      theDimInfo      - the dimension information corresponding to this
1517 --                        geometry object, usually selected from
1518 --                        SDO_GEOM_METADATA table.
1519 --      tolerance       - tolerance value.
1520 --      geom_table      - geometry object table name
1521 --      geom_column     - geometry object column name
1522 --      pkey_column     - primary key column name
1523 --      result_table    - result table name
1524 --
1525 -- RETURNS
1526 --      'TRUE' if theGeometry is valid. Otherwise it returns Oracle
1527 --      standard error code for known error or 'FALSE' for unknown error.
1528 --      validate_layer procedure populates the given result_table with
1529 --      validation results.
1530 --
1531 
1532 function validate_geometry(theGeometry IN MDSYS.SDO_GEOMETRY,
1533                            theDimInfo  IN MDSYS.SDO_DIM_ARRAY)
1534 return VARCHAR2 DETERMINISTIC PARALLEL_ENABLE;
1535 --pragma restrict_references(validate_geometry, WNDS, WNPS, RNPS);
1536 
1537 function validate_geometry(theGeometry IN MDSYS.SDO_GEOMETRY,
1538                            tolerance   IN NUMBER)
1539 return VARCHAR2 DETERMINISTIC PARALLEL_ENABLE;
1540 --pragma restrict_references(validate_geometry, WNDS, WNPS, RNPS);
1541 
1542 function validate_geometry_with_srid(theGeometry IN MDSYS.SDO_GEOMETRY,
1543                                      tolerance   IN NUMBER,
1544                                      conditional IN VARCHAR2 := 'TRUE',
1545                                      flag10g     IN VARCHAR2 := 'FALSE',
1546                                      expected_srid IN NUMBER := -1)
1547 return VARCHAR2 DETERMINISTIC PARALLEL_ENABLE;
1548 --pragma restrict_references(validate_geometry_with_srid, WNDS, WNPS, RNPS);
1549 
1550 function validate_geometry_with_srid(theGeometry IN MDSYS.SDO_GEOMETRY,
1551                                      theDimInfo  IN MDSYS.SDO_DIM_ARRAY,
1552                                      conditional IN VARCHAR2 := 'TRUE',
1553                                      flag10g     IN VARCHAR2 := 'FALSE',
1554                                      expected_srid IN NUMBER := -1)
1555 return VARCHAR2 DETERMINISTIC PARALLEL_ENABLE;
1556 --pragma restrict_references(validate_geometry_with_srid, WNDS, WNPS, RNPS);
1557 
1558 function validate_geometry_with_context(theGeometry IN MDSYS.SDO_GEOMETRY,
1559                                       theDimInfo  IN MDSYS.SDO_DIM_ARRAY,
1560                                       conditional IN VARCHAR2 := 'TRUE',
1561                                       flag10g     IN VARCHAR2 := 'FALSE')
1562 return VARCHAR2 DETERMINISTIC PARALLEL_ENABLE;
1563 --pragma restrict_references(validate_geometry_with_context, WNDS, WNPS, RNPS);
1564 
1565 function validate_geometry_with_context(theGeometry IN MDSYS.SDO_GEOMETRY,
1566                                         tolerance   IN NUMBER,
1567                                         conditional IN VARCHAR2 := 'TRUE',
1568                                         flag10g     IN VARCHAR2 := 'FALSE')
1569 return VARCHAR2 PARALLEL_ENABLE;
1570 --pragma restrict_references(validate_geometry_with_context, WNDS, WNPS, RNPS);
1571 
1572 procedure validate_layer(geom_table  IN VARCHAR2,
1573                          geom_column IN VARCHAR2,
1574                          pkey_column IN VARCHAR2,
1575                          result_table IN VARCHAR2,
1576                          commit_interval IN NUMBER := -1);
1577 
1578 procedure validate_layer_with_context(
1579             geom_table IN VARCHAR2,
1580             geom_column IN VARCHAR2,
1581             result_table IN VARCHAR2,
1582             commit_interval IN NUMBER := -1,
1583             conditional IN VARCHAR2 := 'TRUE',
1584             flag10g     IN VARCHAR2 := 'FALSE',
1585             geom_schema IN VARCHAR2 DEFAULT NULL) PARALLEL_ENABLE;
1586 
1587 procedure vallayer_with_context_lrs(geom_table  IN VARCHAR2,
1588                                     geom_column IN VARCHAR2,
1589                                     pkey_rowid_column IN VARCHAR2,
1590                                     result_table IN VARCHAR2,
1591                                     commit_interval IN NUMBER := -1);
1592 
1593 --
1594 -- NAME:
1595 --
1596 --      sdo_arc_densify
1597 -- DESCRIPTION
1598 --      If the geometry contains arcs, this function will densify/segment
1599 --      all acrs in the geometry.
1600 --
1601 -- ARGUMENTS
1602 --        geom    - the geometry object
1603 --        dim     - the dimensional information array corresponding to the
1604 --                   geometry object, usually selected from
1605 --                   SDO_GEOM_METADATA table.
1606 --        tol      - tolerance value.
1607 -- RETURNS
1608 --      A geometry object representing the result of polygon operation.
1609 --
1610 
1611 function   sdo_arc_densify(geom IN mdsys.sdo_geometry,
1612                            dim  IN mdsys.sdo_dim_array,
1613                            params IN VARCHAR2)
1614 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1615 pragma restrict_references(sdo_arc_densify, WNDS, WNPS, RNPS);
1616 
1617 function   sdo_arc_densify(geom IN mdsys.sdo_geometry,
1618                            tol  IN NUMBER,
1619                            params IN VARCHAR2)
1620 return MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
1621 pragma restrict_references(sdo_arc_densify, WNDS, WNPS, RNPS);
1622 
1623 function get_dim_array(geom IN MDSYS.SDO_GEOMETRY, tol IN NUMBER)
1624 return MDSYS.SDO_DIM_ARRAY DETERMINISTIC PARALLEL_ENABLE;
1625 pragma restrict_references(get_dim_array, WNDS, WNPS, RNPS);
1626 
1627 --
1628 -- NAME:
1629 --
1630 --      sdo_is_nurbscurve
1631 -- DESCRIPTION
1632 --      This function detects if the geometry contains NURBS curves.
1633 --      Used to return unsupported operation error for functions
1634 --      which cannot operate on NURBS curves.
1635 --
1636 -- ARGUMENTS
1637 --      geom    - the geometry object
1638 -- RETURNS
1639 --      TRUE if NURBS curve is present in the geometry, FALSE otherwise.
1640 --
1641 
1642 function sdo_is_nurbscurve(geom IN MDSYS.SDO_GEOMETRY)
1643 return VARCHAR2 DETERMINISTIC PARALLEL_ENABLE;
1644 pragma restrict_references(sdo_is_nurbscurve, WNDS, WNPS, RNPS);
1645 
1646 FUNCTION sdo_insert_log_filter(ind_schema   IN VARCHAR2,
1647                                ind_name     IN VARCHAR2,
1648                                indpart_name IN VARCHAR2,
1649                                min_x        IN NUMBER,
1650                                max_x        IN NUMBER,
1651                                min_y        IN NUMBER,
1652                                max_y        IN NUMBER,
1653                                min_z        IN NUMBER,
1654                                max_z        IN NUMBER)
1655   RETURN VARCHAR2 PARALLEL_ENABLE;
1656 
1657 PROCEDURE g3d_parameters(srid                    IN NUMBER,
1658                          sm_mjr_axis             OUT NUMBER,
1659                          inv_fltn                OUT NUMBER,
1660                          g3d_geog_crs_uom_factor OUT NUMBER);
1661 
1662 end SDO_GEOM;