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;