oracle spatial - upmpdi.topografia.upm.es/m.manso/docencia/bbddee2010/3.-oracle_sdo.pdf · oracle...
TRANSCRIPT
Oracle SpatialGuía introductoria
Miguel Ángel Manso
ETSI en Topografía, Geodesia y Cartografía - UPM
Índice
• ¿Cómo crear una tabla con Geometrías?
• ¿Cómo dar de alta los metadatos de la tabla?
• ¿Cómo crear un índice espacial?
• ¿Qué operaciones se pueden realizar con las geometrías?
Crear una tabla con geometrías
• Usa la misma Clausura que para el resto de tablas: CREATE TABLE …();
• La columna que contendrá la geometría será de tipo: MDSYS.SDO_GEOMETRY
• Ejemplo:CREATE TABLE cola_markets (
mkt_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape SDO_GEOMETRY);
Crear metadatos geometrías
• Existe una tabla SDO_GEOM_METADATA en la que se registran las tablas que contienen alguna columna de tipo SDO_GEOMETRY
• Existe una vista para cada usuario (Con la que se opera) para estos metadatos: USER_SDO_GEOM_METADATA
• Esta vista contiene:
– TABLE_NAME, COLUMN_NAME, DIMINFO, SRID
Crear metadatos
INSERT INTO user_sdo_geom_metadata ( TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ( 'cola_markets','shape', SDO_DIM_ARRAY(
SDO_DIM_ELEMENT('X', 0, 20, 0.005), SDO_DIM_ELEMENT('Y', 0, 20, 0.005)
), NULL);
Crear índices espaciales
• Para crear índices SQL proporciona la siguiente clausura:– CREATE INDEX nombre ON la_tabla(la_columna)
INDEXTYPE IS tipo_indice;
• Índices espaciales: MDSYS.SPATIAL_INDEX
• Ejemplo:– CREATE INDEX cola_spatial_idx ON
cola_markets(shape) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
Operaciones con las geometrías
• Oracle proporciona los paquetes:
– SDO_GEOM
– SDO_UTIL
– Operadores espaciales
– SDO_LRS
SDO_GEOMSDO_GEOM.RELATE
SDO_GEOM.SDO_ARC_DENSIFY
SDO_GEOM.SDO_AREA
SDO_GEOM.SDO_BUFFER
SDO_GEOM.SDO_CENTROID
SDO_GEOM.SDO_CONVEXHULL
SDO_GEOM.SDO_DIFFERENCE
SDO_GEOM.SDO_DISTANCE
SDO_GEOM.SDO_INTERSECTION
SDO_GEOM.SDO_LENGTH
SDO_GEOM.SDO_MAX_MBR_ORDINATE
SDO_GEOM.SDO_MBR
SDO_GEOM.SDO_MIN_MBR_ORDINATE
SDO_GEOM.SDO_POINTONSURFACE
SDO_GEOM.SDO_UNION
SDO_GEOM.SDO_XOR
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT
SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT
SDO_GEOM.WITHIN_DISTANCE
SDO_UTIL
• SDO_UTIL.APPEND• SDO_UTIL.APPEND_TO_COLLECTION• SDO_UTIL.CIRCLE_POLYGON• SDO_UTIL.CONCAT_LINES• SDO_UTIL.CONVERT_UNIT• SDO_UTIL.DROP_WORK_TABLES• SDO_UTIL.ELLIPSE_POLYGON• SDO_UTIL.EXTRACT• SDO_UTIL.EXTRACT3D• SDO_UTIL.EXTRUDE• SDO_UTIL.FROM_GML311GEOMETRY• SDO_UTIL.FROM_GMLGEOMETRY• SDO_UTIL.FROM_WKBGEOMETRY• SDO_UTIL.FROM_WKTGEOMETRY• SDO_UTIL.GETNUMELEM• SDO_UTIL.GETNUMVERTICES
• SDO_UTIL.GETVERTICES• SDO_UTIL.INITIALIZE_INDEXES_FOR_TTS• SDO_UTIL.POINT_AT_BEARING• SDO_UTIL.POLYGONTOLINE• SDO_UTIL.PREPARE_FOR_TTS• SDO_UTIL.RECTIFY_GEOMETRY• SDO_UTIL.REMOVE_DUPLICATE_VERTICES• SDO_UTIL.REVERSE_LINESTRING• SDO_UTIL.SIMPLIFY• SDO_UTIL.TO_GML311GEOMETRY• SDO_UTIL.TO_GMLGEOMETRY• SDO_UTIL.TO_WKBGEOMETRY• SDO_UTIL.TO_WKTGEOMETRY• SDO_UTIL.VALIDATE_WKBGEOMETRY• SDO_UTIL.VALIDATE_WKTGEOMETRY
Operadores espaciales• SDO_ANYINTERACT
• SDO_CONTAINS
• SDO_COVEREDBY
• SDO_COVERS
• SDO_EQUAL
• SDO_FILTER
• SDO_INSIDE
• SDO_JOIN
• SDO_NN
• SDO_NN_DISTANCE
• SDO_ON
• SDO_OVERLAPBDYDISJOINT
• SDO_OVERLAPBDYINTERSECT
• SDO_OVERLAPS
• SDO_RELATE
• SDO_TOUCH
• SDO_WITHIN_DISTANCE
Spatial Aggregate Functions
• SDO_AGGR_CENTROID
• SDO_AGGR_CONCAT_LINES
• SDO_AGGR_CONVEXHULL
• SDO_AGGR_LRS_CONCAT
• SDO_AGGR_MBR
• SDO_AGGR_UNION
SDO_LRS• SDO_LRS.CLIP_GEOM_SEGMENT• SDO_LRS.CONCATENATE_GEOM_SEGMENTS• SDO_LRS.CONNECTED_GEOM_SEGMENTS• SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY• SDO_LRS.CONVERT_TO_LRS_GEOM• SDO_LRS.CONVERT_TO_LRS_LAYER• SDO_LRS.CONVERT_TO_STD_DIM_ARRAY• SDO_LRS.CONVERT_TO_STD_GEOM• SDO_LRS.CONVERT_TO_STD_LAYER• SDO_LRS.DEFINE_GEOM_SEGMENT• SDO_LRS.DYNAMIC_SEGMENT• SDO_LRS.FIND_LRS_DIM_POS• SDO_LRS.FIND_MEASURE• SDO_LRS.FIND_OFFSET• SDO_LRS.GEOM_SEGMENT_END_MEASURE• SDO_LRS.GEOM_SEGMENT_END_PT• SDO_LRS.GEOM_SEGMENT_LENGTH• SDO_LRS.GEOM_SEGMENT_START_MEASURE• SDO_LRS.GEOM_SEGMENT_START_PT• SDO_LRS.GET_MEASURE• SDO_LRS.GET_NEXT_SHAPE_PT• SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE• SDO_LRS.GET_PREV_SHAPE_PT
• SDO_LRS.GET_PREV_SHAPE_PT_MEASURE• SDO_LRS.IS_GEOM_SEGMENT_DEFINED• SDO_LRS.IS_MEASURE_DECREASING• SDO_LRS.IS_MEASURE_INCREASING• SDO_LRS.IS_SHAPE_PT_MEASURE• SDO_LRS.LOCATE_PT• SDO_LRS.LRS_INTERSECTION• SDO_LRS.MEASURE_RANGE• SDO_LRS.MEASURE_TO_PERCENTAGE• SDO_LRS.OFFSET_GEOM_SEGMENT• SDO_LRS.PERCENTAGE_TO_MEASURE• SDO_LRS.PROJECT_PT• SDO_LRS.REDEFINE_GEOM_SEGMENT• SDO_LRS.RESET_MEASURE• SDO_LRS.REVERSE_GEOMETRY• SDO_LRS.REVERSE_MEASURE• SDO_LRS.SET_PT_MEASURE• SDO_LRS.SPLIT_GEOM_SEGMENT• SDO_LRS.TRANSLATE_MEASURE• SDO_LRS.VALID_GEOM_SEGMENT• SDO_LRS.VALID_LRS_PT• SDO_LRS.VALID_MEASURE• SDO_LRS.VALIDATE_LRS_GEOMETRY