[Gvsig_desarrolladores] Programando en gvSIG, Oracle Spatial

Juan Lucas Dominguez Rubio jldominguez en prodevelop.es
Jue Oct 25 10:43:28 CEST 2007


Hola, Antonio:
 
La extensión Oracle Spatial añade una tabla llamada ORA_EPSG al proyecto actual de gvSIG que sirve para convertir los códigos EPSG en códigos Oracle y viceversa. Por lo que veo en tu traza, esa tabla no existe, con lo cual supongo que no has cargado dicha extensión. Si la has cargado y te sale ese error, envíanos el archivo:
 
C:\Documents and Settings\<usuario>\gvSIG\gvSIG.log
 
Para crear la tabla sin haber cargado la extensión de Oracle Spatial, debes ejecutar este código antes de instanciar los drivers Oracle:
 
OraEpsgTableLoader loader = new OraEpsgTableLoader();
if (!loader.createOracleEpsgTable()) {
    logger.error("Unable to create ORA_EPSG datasource!");
}
 
Saludos,
 
Juan Lucas Domínguez Rubio
Prodevelop SL, Valencia (España)
Tlf.: 96.351.06.12 -- Fax: 96.351.09.68
http://www.prodevelop.es <http://www.prodevelop.es/> 

________________________________

De: gvsig_desarrolladores-bounces en runas.cap.gva.es en nombre de Antonio Fdez Carpio
Enviado el: mié 24/10/2007 9:24
Para: Lista de Desarrolladores de gvSIG
Asunto: [Gvsig_desarrolladores] Problemas Oracle Spatial


Hola lista. Tengo un problema al ejecutar el siguiente código que devuelve el driver de una conexion Oracle

try { 

String fidField = 

"id"; // BE CAREFUL => MAY BE NOT!!! 

String geomField = 

"localizacion"; // BE CAREFUL => MAY BE NOT!!! => 

String[] fields = 

new String[1]; 

fields[0] = 

"id"; 

String whereClause = 

""; 

OracleSpatialDriver driver = 

new OracleSpatialDriver(); 

// Here you can set the workingArea 

// driver.setWorkingArea(dbLayerDefinition.getWorkingArea()); 

String strEPSG = 

"23030"; 

DBLayerDefinition lyrDef = 

new DBLayerDefinition(); 

lyrDef.setName(dbtable);

lyrDef.setTableName(dbtable);

lyrDef.setWhereClause(whereClause);

lyrDef.setFieldNames(fields);

lyrDef.setFieldGeometry(geomField);

lyrDef.setFieldID(fidField);

// if (dbLayerDefinition.getWorkingArea() != null) 

// lyrDef.setWorkingArea(dbLayerDefinition.getWorkingArea()); 

lyrDef.setSRID_EPSG(strEPSG);

if (driver instanceof ICanReproject) { 

((ICanReproject) driver).setDestProjection(strEPSG);

}

driver.setData(conn, lyrDef);

IProjection proj = 

null; 

if (driver instanceof ICanReproject) { 

proj = CRSFactory.getCRS(

"EPSG:23030"); 

}

return driver; 

}

catch (Exception e) { 

e.printStackTrace();

}

 

Este codigo devuelve los siguiente errores en Eclipse:

ERROR [main] (

OracleSpatialDriver.java:3167) - Error with SQL statement. com.hardcode.gdbms.engine.data.NoSuchTableException : ORA_EPSG 

WARN [main] (

OracleSpatialDriver.java:450) - No SRID found for this table. 

ERROR [main] (

OracleSpatialDriver.java:3224) - Error with SQL statement. com.hardcode.gdbms.engine.data.NoSuchTableException : ORA_EPSG 

ERROR [main] (

OracleSpatialDriver.java:3167) - Error with SQL statement. com.hardcode.gdbms.engine.data.NoSuchTableException : ORA_EPSG 

SPHEROID["WGS84", 6378137.0, 298.257223563]

DEBUG [Thread-1] (

OracleSpatialDriver.java:871) - SQL para leer ids: select rowid, c.localizacion.SDO_ELEM_INFO from TRAMO c 

INFO [Thread-1] (

OracleSpatialDriver.java:879) - FETCH_SIZE = 15000 

DEBUG [Thread-1] (

OracleSpatialDriver.java:899) - Beginning of result set: 

INFO [Thread-1] (

OracleSpatialDriver.java:922) - IDs read: 0 

INFO [Thread-1] (

OracleSpatialDriver.java:352) - Ids thread delayed by: 938 ms. 

 

Alguien sabe porque puede ocurrir esto??

------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/ms-tnef
Tamaño     : 9161 bytes
Descripción: no disponible
Url        : http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20071025/d68b92b5/attachment.bin


Más información sobre la lista de distribución gvSIG_desarrolladores