Oracle Spatial
Transcripción
Oracle Spatial
Oracle Spatial Guí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_GEOM SDO_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