En cuestión de capas geométricas es importante considerar algunos aspectos:
- Las capas se manejaran por tablas o vistas?
- La capa geométrica se encuentra registrada en la tabla correspondiente de datos geométricos?.
- Se han creado correctamente los índices, y dentro de este, se encuentra configurado correctamente el tipo de dato geométrico que contendrá la capa?.
Agregar capas geométricas
Por ejemplo, si queremos agregar 4 capas; 2 tablas, TABLA1 y TABLA2; 2 vistas, VW_TABLA1 y VW_TABLA2.
Corremos la siguiente sentencia en Oracle:
SELECT * FROM USER_SDO_GEOM_METADATA
Verificamos que las 4 capas estén registradas; es importante mencionar que USER_SDO_GEOM_METADA es una tabla del schema MDSYS no es una tabla del schema GTO.
En caso de no existir alguna capa registrada la agregamos de la siguiente forma:
INSERT INTO User_SDO_Geom_Metadata (table_name,column_name,diminfo,srid) VALUES ('VW_TABLA2', 'GEOM', MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',178338,430380,0.5),MDSYS.SDO_DIM_ELEMENT('Y',2202847,2417710,0.5)),32614);
MDSYS.SDO_DIM_ELEMENT(SDO_DIMNAME,SDO_LB,SDO_UB,SDO_TOLERANCE)
MDSYS.SDO_DIM_ELEMENT('X',178338,430380,0.5)
Dónde:
SDO_DIMNAME : indica el parámetro al que se establecerá las coordenadas mínimas y máximas
SDO_LB : Coordenada mínima en SDODIMNAME
SDO_UB : Coordenada máxima en SDODIMNAME
SDO_TOLERANCE : Es una forma de garantizar que tendrás consistencia y resultados aceptables atreves de diferentes plataformas y aplicaciones en pocas palabras déjalas en 0.5 no le muevas..
Si lo comparamos con SQL Server estos son los datos espaciales XMIN, XMAX, YMIN, YMAX
Agregar índices espaciales
Una vez registradas todas las capas en la table USER_SDO_GEOM_METADA, verificamos que los índices se encuentren creados para cada una de las capas. En caso de no existir algún índice espacial lo creamos de la siguiente forma:
CREATE INDEX VW_TABLA2_SIdx ON VW_TABLA2 (GEOM)
INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('LAYER_GTYPE=MULTIPOLYGON')
Como se puede observar, se está creando un índice sobre una vista. Al ejecutar esta sentencia nos arrojara un error como el sigue:
Error que empieza en la línea 3 del comando:
CREATE INDEX VW_TABLA2_SIdx ON VW_TABLE2 (GEOM)
INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('LAYER_GTYPE=MULTIPOLYGON')
Error en la línea de comandos:3 Columna:40
Informe de error:
Error SQL: ORA-01702: una vista no es apropiada aquí
01702. 00000 - "a view is not appropriate here"
*Cause:
*Action:
Aun con este error es importante crear estos índices, posiblemente es un bug de Oracle pero si no lo hacemos de esa manera, la lectura de las capas en thinkgeo nos mandara un error.
0 comentarios:
Publicar un comentario en la entrada