[Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Juan Lucas Dominguez Rubio
jldominguez en prodevelop.es
Jue Mar 4 18:28:06 CET 2010
Hola,
desde el punto de vista del usuario, copiar y pegar elementos entre capas no es posible, si no me equivoco.
Para hacerlo por código, tendrías que imitar los pasos que se dan cuando un usuario termina la edición y se procesan las modificaciones (addRow(...). etc.).
Una manera sencilla de plantearlo sería:
- el usuario selecciona un cierto número de geometrías de una capa
- después, el usuario selecciona exactamente dos capas vectoriales en el TOC
- cuando hubiera dos capas seleccionadas en el TOC y una de ellas tenga elementos seleccionados, aparecería disponible un boton que al ser pulsado, copiaría las geometrías seleccionadas a la otra capa seleccionada
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: mié 27/01/2010 11:24
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial - Email found in subject
Buenas Juan, una vez que tengo cargada en la vista un layer, que he cogido de la bd oracle,
pongo la capa en edicion, es posible copiar una geometria e insertarla en otra capa ?
Gracias
El 20 de enero de 2010 17:31, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola, qué tipo de error es y cuándo te sucede?
La causa de esto podría ser el tema de la carga de IDs:
Puesto que una tabla puede ser muy grande, cuando el usuario añade una tabla, se lanza un hilo auxiliar que carga los IDs de los registros de la tabla y al final lanza un evento para quienes se hayan apuntado como listeners. Mientras ese hilo auxiliar no ha terminado, gvSIG sigue funcionando sin congelarse la interfaz, pero cualquier petición a esa capa obtiene una respuesta vacía (atributos puestos a valor nulo, cero geometrías, iteradores vacíos, etc).
El booleano que dice si el hilo auxiliar ha terminado es 'isNotAvailableYet' de la clase OracleSpatialDriver. No es visible desde fuera directamente, así que puedes añadirle un get y ya está.
Si quieres ser notificado cuando ese hilo ha terminado, debes usar el método:
public void addDriverEventListener(DriverEventListener listener)
de DefaultJDBCDriver y comprobar que el evento notificado es de tipo DriverEvent.DRIVER_EVENT_LOADING_END. Después de haber recibido esa notificación, la capa debe comportarse normalmente.
No sé cómo es la adaptación que estás haciendo, pero una posibilidad podría ser asociar el código que falla a una acción de usuario (por ejemplo, elegir cierto menú), y antes de intentar ejecutar eso, consultas el booleanno que te he comentado, y si la capa aún no está lista, sacas un mensaje tipo: "Aún no se puede hacer eso".
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: mié 20/01/2010 17:13
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan,
Me ha surgido un problema, cuando carga una capa a la vista, si voy probando en modo debug, carga la capa vale y despues utilizo esta capa para hacer una serie de operaciones, pero cuando lo hago en modo ejecucion, llamo a la funcion de cargar capa y parece ser mientras se carga la capa, el hilo de la aplicacion continua pero claro al no tener los datos de la capa (porque todavia no le ha dado tiempo a cargar)da error.
como puedo hacer que cuando cargue una capa recuperada de la bd y cargada en la vista, hasta que no este disponible no siga la ejecucion ??
este es el codigo de cargar capa:
IVectorialDatabaseDriver driver = (IVectorialDatabaseDriver) LayerFactory.getDM().getDriver(operacionesEducacion.getProperty("oracleSpatial"));
DBLayerDefinition lyr_def = new DBLayerDefinition();
String schema = operacionesEducacion.getProperty("schema");
String tableName = nombre;
String fidField = operacionesEducacion.getProperty("rowid");
String geomField = operacionesEducacion.getProperty("geometria");
Statement ps = null;
ResultSet resultSet = null;
operacionesEducacion op=new operacionesEducacion();
Connection conn=op.abrirConexionConOracle();
ps = conn.createStatement();
ps.setFetchSize(50);
//resultSet = ps.executeQuery("SELECT * FROM "+ tableName);
DBLayerDefinition lyrDef = new DBLayerDefinition();
resultSet = ps.executeQuery("SELECT * FROM "+ nombre );
String[] fields=computeMetadata(resultSet);
lyrDef.setName(nombre);
lyrDef.setSchema(schema);
lyrDef.setTableName(tableName);
lyrDef.setWhereClause("");
lyrDef.setFieldGeometry(geomField);
lyrDef.setFieldNames(fields);
lyrDef.setFieldID(fidField);
lyrDef.setHost(cwp.getHost());
lyrDef.setPort(Integer.parseInt(cwp.getPort()));
lyrDef.setDataBase(cwp.getDb());
lyrDef.setUser(cwp.getUser());
IProjection PROJECTION_DEFAULT =CRSFactory.getCRS(operacionesEducacion.getProperty("crs"));
lyrDef.setProjection(PROJECTION_DEFAULT);
lyrDef.setPassword(cwp.getPw());
driver.setData(cwp.getConnection(), lyrDef);
lyr = LayerFactory.createDBLayer(driver,nombre, PROJECTION_DEFAULT);
mapCtrl.getMapContext().getLayers().addLayer(lyr);
Muchas gracias y un saludo
El 18 de enero de 2010 14:14, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola Carlos,
Si lo preguntas como usuario:
No es posible crear una capa a partir de dos tablas. En muchos casos es mejor hacer parte del trabajo en la BD. Por ejmplo, crear una vista en tu BD Oracle basándote en una o varias tablas y luego abrir esa vista desde gvSIG, ya que la pestaña GeoBD te ofrece las tablas y también las vistas, aunque tanmbién es cierto que no todas las vistas se pueden abrir desde gvSIG. En el momento de intentar abrir una vista te aparece un mensaje de error si esa vista es de las que no pueden abrirse. Otra posibilidad es abrir dos tablas como dos capas distintas en gvSIG y después trabajar con ellas (unión, link, operaciones espaciales, etc)
Cuando abres una tabla Oracle Spatial, puedes añadir una restricción de tipo alfanumérico y/o geométrico en la caja de texto que hay en la parte inferior del diálogo. Ahí puedes poner la expresión SQL que iría después del WHERE. Para esto debes mirar los nombres y tipos de los atributos (esto aparece en la parte superior derecha del diálogo).
Si lo preguntas como desarrollador:
El driver de Oracle Spatial de gvSIG usa la famosa librería ojdbc14.jar distribuída por Oracle, que es la que usan todas las aplicaciones Java que acceden a BD Oracle, y además en el código del driver hay métodos para instanciar objetos geométricos (SDO_GEOMETRY), así pues leyendo correctamente los metadatos de la BD y escribiendo las SQL adecuadas debe ser posible hacer cualquier cosa con la BD y las capas.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: lun 18/01/2010 7:58
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenos dias Juan,
Es posible en gvsig realizar una consulta sobre 2 tablas y crear con el resultado un Layer, para mostrarla en la vista ???
Se pueden hacer consultas espaciales ??
Hay te dejo mis dudas,
Un saludo y Muchas Gracias
El 13 de enero de 2010 11:20, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola, si es una tabla sin geometrías quizás te conviene obtener la conexión y después montar la SQL sin llamar a ningún método que ya exista.
Para obtener la conexión fíjate en el método load() de la clase DefaultJDBCDriver. Sería algo así:
ConnectionWithParams cwp = SingleVectorialDBConnectionManager.instance().getConnection(
OracleSpatialDriver.NAME,
<usuario>,
<contrasena>,
<nombre_conexion_cualquiera>,
<host>,
<puerto_normalmente_1521>,
<nombre_db>,
true);
El objeto conexión se obtiene con:
Connection c = ((ConnectionJDBC) cwp.getConnection()).getConnection();
y esa c es la que puedes usar para ejecutar una SQL. Puedes mirar el código del método addRow de la clase OracleSpatialWriter para ver cómo construir la SQL.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: mar 12/01/2010 16:30
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan,
Para modificar una tabla de oracle spatial sin geometria "añadir un registro", en que clases podria ver el código referente al modo en el que lo hace cuando se utilizando la interfaz grafica??
Un saludo
El 11 de enero de 2010 10:11, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola.
Creo que el primer error no tiene consecuencias graves. La serie de errores que hay después ocurren porque se supone que la primera columna de la SQL que has ejecutado debe ser de tipo ROWID y no lo es:
select CODAREA, c."IDCOMISION", c."NOMBREORIG", c."CODINEMUN", c."GID", c."TIPOZONA", c."TITULARIDAD", c."CLASE", c.GEOMETRY from PRUEBA.HU_AREAINFLUENCIA c where (sdo_relate(GEOMETRY, mdsys.sdo_geometry(2003, 82337, null, mdsys.sdo_elem_info_array(1, 1003, 3), mdsys.sdo_ordinate_array(61368.4981766357, 4077142.0001, 264551.392423364, 4236433.0)), 'mask=anyinteract querytype=window') = 'TRUE')
La línea donde salta la excepción dice:
ROWID ri = (ROWID) rs.getObject(1);
así que la SQL que creas debe empezar por "SELECT ROWID, ....". Esa parte del código es bastante delicada. Haz ejecuciones paso a paso y mira que los tipos y nombres de columnas son los que el código espera.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: lun 11/01/2010 9:43
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan,
Cuando ejecuto la linea : driver.setData(cwp.getConnection(), lyrDef);
me salta en consola el siguiente error:
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:2452) - Unknown EPSG code: null
DEBUG [Thread-14] (OracleSpatialDriver.java:927) - SQL para leer ids: select rowid, c.GEOMETRY.SDO_ELEM_INFO from PRUEBA.HU_AREAINFLUENCIA c
INFO [Thread-14] (OracleSpatialDriver.java:940) - FETCH_SIZE = 15000
DEBUG [Thread-14] (OracleSpatialDriver.java:960) - Beginning of result set:
INFO [Thread-14] (OracleSpatialDriver.java:983) - IDs read: 0
INFO [Thread-14] (OracleSpatialDriver.java:402) - Ids thread delayed by: 891 ms.
despues parece que recorre cada registro de la tabla dando en cada uno el siguiente error::
DEBUG [AWT-EventQueue-1] (FLyrDefault.java:1106) - setTocStatusImage sun.awt.image.ToolkitImage en 1354684 sobre capa HU_AREAINFLUENCIA
Viewport despues: Datos del viewPort:
Extent=java.awt.geom.Rectangle2D$Double[x=100525.79679999966,y=4077142.0001,w=124868.29700000025,h=159290.99990000017]
adjustedExtent=java.awt.geom.Rectangle2D$Double[x=61368.49817663574,y=4077142.0001,w=203182.8942467281,h=159290.99990000017]
imageSize=java.awt.Dimension[width=1111,height=871]
escale=0.005467979989747049
trans=AffineTransform[[0.005467979989747, 0.0, -335.56172003067246], [0.0, -0.005467979989747, 23164.73087190406]]
DEBUG [Thread-11] (OracleSpatialDriver.java:1476) - MAIN SEL = select CODAREA, c."IDCOMISION", c."NOMBREORIG", c."CODINEMUN", c."GID", c."TIPOZONA", c."TITULARIDAD", c."CLASE", c.GEOMETRY from PRUEBA.HU_AREAINFLUENCIA c where (sdo_relate(GEOMETRY, mdsys.sdo_geometry(2003, 82337, null, mdsys.sdo_elem_info_array(1, 1003, 3), mdsys.sdo_ordinate_array(61368.4981766357, 4077142.0001, 264551.392423364, 4236433.0)), 'mask=anyinteract querytype=window') = 'TRUE')
java.lang.ClassCastException: java.lang.String
at es.prodevelop.cit.gvsig.fmap.drivers.jdbc.oracle.OracleSpatialFeatureIterator.next(OracleSpatialFeatureIterator.java:135)
at com.iver.cit.gvsig.fmap.drivers.featureiterators.ReprojectWrapperFeatureIterator.next(ReprojectWrapperFeatureIterator.java:92)
at com.iver.cit.gvsig.fmap.layers.FLyrVect._draw(FLyrVect.java:437)
at com.iver.cit.gvsig.fmap.layers.FLyrVect.draw(FLyrVect.java:631)
at com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:209)
at com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:175)
at com.iver.cit.gvsig.fmap.MapContext.draw(MapContext.java:1092)
at com.iver.cit.gvsig.fmap.MapControl$PaintingRequest.paint(MapControl.java:1043)
at com.iver.cit.gvsig.fmap.MapControl$Drawer2$Worker.run(MapControl.java:1234)
at java.lang.Thread.run(Thread.java:595)
Saludos
El 7 de enero de 2010 18:34, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola. Si no pones comillas dobles, Oracle lo pone internamente en mayúsculas <TIPO> y al compararlo con <Tipo>, falla. Si pones comillas también en la query, funciona:
Select "Tipo" from HUELVA_AREAINFLUENCIA
Creo que una aplicación que se dedique a crear tablas en Oracle con nombres arbitrarios para tablas y campos no puede prescindir de las comillas dobles.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: jue 07/01/2010 12:34
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
CREATE TABLE HUELVA_AREAINFLUENCIA
(
"CodArea" NVARCHAR2(80),
"Tipo" NUMBER(12),
"IdComision" NVARCHAR2(80),
"Titularida" NUMBER(12),
"NombreOrig" NVARCHAR2(80),
"CodIneMun" NVARCHAR2(80),
"SHAPE_Leng" FLOAT(126),
"SHAPE_Area" FLOAT(126),
GID NUMBER(12),
GEOMETRY MDSYS.SDO_GEOMETRY
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE UNIQUE INDEX HUELVA_AREAINFLUENCIA_PK ON HUELVA_AREAINFLUENCIA
(GID)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
CREATE INDEX HUELVA_AREAINFLUENCIA_SX ON HUELVA_AREAINFLUENCIA
(GEOMETRY)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
ALTER TABLE HUELVA_AREAINFLUENCIA ADD (
CONSTRAINT HUELVA_AREAINFLUENCIA_PK
PRIMARY KEY
(GID)
USING INDEX
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
));
Y la sentencia:
Select Tipo from HUELVA_AREAINFLUENCIA;
te dara el error de identificador no valido
El 7 de enero de 2010 12:27, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola. El driver Oracle Spatial de gvSIG usa constantemente dobles comillas para poder manejar cualquier nombre de campo o tabla y no da problemas.
Puedes enviar la SQL de creación de una tabla y una SQL de consulta que dé problemas para que lo pueda reproducir en mi BD?
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: jue 07/01/2010 12:12
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
He probado con el TOAD,al ejecutar sentencias sobre tablas que tienen nombres de campos o nombres de tablas entre
comillas da el mismo error, meti campos nuevos, sin dobles comillas y no daba problemas, por eso me inclino a que el error
sea cosa de las comillas...
saludos
El 7 de enero de 2010 11:59, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola. En las SQL los nombres de tablas, nombres de campos etc pueden ir entre comillas para evitar conflictos con las palabras clave del lenguaje SQL y para poder usar cualquier caracter salvo precisamente "
Por ejemplo al exportar una capa a Oracle Spatial se genera una SQL como esta:
CREATE TABLE "LLEIDA"."GT2_NOR_00"
( "NAME" NVARCHAR2(40),
"CAPITAL" NVARCHAR2(64),
"APPROX" NUMBER(12,0),
"AREA" FLOAT(126),
"SOURCETHM" NVARCHAR2(16),
"GEOMETRY" "MDSYS"."SDO_GEOMETRY" ,
"GID" NUMBER(12,0),
CONSTRAINT "GT2_NOR_00_PK" PRIMARY KEY ("GID");
pero eso no significa que esos nombres incluyan las comillas (de hecho no creo que Oracle te deje crear un campo cuyo nombre contenga comillas dobles.
Insisto en que deberías acceder a tu BD con algún otro software que te permita hacer comprobaciones.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: jue 07/01/2010 10:59
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas,
Creo que ya se donde puede estar el problema, al generar la tabla se crearon los nombres de las tablas y campos
entre dobles comillas, puede ser eso...
Saludos
El 7 de enero de 2010 10:42, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola. Solo se me ocurre que sea un problema de mayúsculas y minúsculas. El campo se llama CODAREA (todo con mayúsculas) ?
Cuál es el valor de _sql en la linea 668 de OracleSpatialDriver.java cuando salta esa excepción?
Y cuál es el valor de not_restricted_sql en la linea 628 de OracleSpatialDriver.java cuando salta la otra excepción?
Puedes introducir esas SQL en otra aplicación (por ejemplo Oracle SQLDeveloper [1]) y ver qué pasa?
[1] http://www.oracle.com/technology/software/products/sql/index.html
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: jue 07/01/2010 10:07
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan, el error que me daba al cargar la capa leida de BD oracle spatial en gvsig mediante codificación es el siguiente
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:695) - While guessing shape type: ORA-00904: "CODAREA": identificador no válido
WARN [AWT-EventQueue-1] (OracleSpatialDriver.java:696) - Assumed MULTI
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:664) - While getting metadata. ORA-00904: "CODAREA": identificador no válido
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:2452) - Unknown EPSG code: null
DEBUG [Thread-14] (OracleSpatialDriver.java:927) - SQL para leer ids: select rowid, c.GEOMETRY.SDO_ELEM_INFO from PRUEBA.HUELVA_AREAINFLUENCIA c
INFO [Thread-14] (OracleSpatialDriver.java:940) - FETCH_SIZE = 15000
DEBUG [Thread-14] (OracleSpatialDriver.java:960) - Beginning of result set:
INFO [Thread-14] (OracleSpatialDriver.java:983) - IDs read: 0
INFO [Thread-14] (OracleSpatialDriver.java:402) - Ids thread delayed by: 906 ms.
El campo CODAREA existe, no se porque me dice eso de identificador no valido
Un saludo y Feliz año a tod en s
El 24 de diciembre de 2009 08:55, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola,
Parece que has construído una query SQL con los atributos en orden equivocado. Ejecuta paso a paso para ver de qué tipo son los atributos del resultset que obtienes en esa línea de código.
Además, Oracle Spatial usa otra codificación para los SRS, es decir en la BD Oracle Spatial no debe figurar el valor 23030 para el SRID. . El código EPSG:23030 es el 82337 en Oracle Spatial.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: mié 23/12/2009 19:08
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan,
al cargar la capa me salta el siguiente error, comentarte que el sistema de referencia de los datos que he cargado es el 23030,
te suen esto ??
Gracias de antemano
DEBUG [AWT-EventQueue-1] (MDIFrame.java:672) - Execute command:HELLO
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:
2175) - Oracle Spatial code not found in table: 23030
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:2205) - Error with SQL statement. Unknown Oracle code: 23030
ERROR [AWT-EventQueue-1] (OracleSpatialDriver.java:2452) - Unknown EPSG code: null
DEBUG [Thread-14] (OracleSpatialDriver.java:927) - SQL para leer ids: select rowid, c.GEOM.SDO_ELEM_INFO from PRUEBA.AREAINFLUENCIA c
INFO [Thread-14] (OracleSpatialDriver.java:940) - FETCH_SIZE = 15000
DEBUG [Thread-14] (OracleSpatialDriver.java:960) - Beginning of result set:
INFO [Thread-14] (OracleSpatialDriver.java:983) - IDs read: 0
INFO [Thread-14] (OracleSpatialDriver.java:402) - Ids thread delayed by: 875 ms.
DEBUG [AWT-EventQueue-1] (FLyrDefault.java:1106) - setTocStatusImage sun.awt.image.ToolkitImage en 129a559 sobre capa AREAINFLUENCIA
DEBUG [Thread-14] (FLyrDefault.java:1106) - setTocStatusImage null sobre capa AREAINFLUENCIA
Viewport despues: Datos del viewPort:
Extent=java.awt.geom.Rectangle2D$Double[x=100525.0,y=1.0,w=7.9679899441E10,h=4077141.0]
adjustedExtent=java.awt.geom.Rectangle2D$Double[x=100525.0,y=-3.1231621380395138E10,w=7.9679899441E10,h=6.2467319903790276E10]
imageSize=java.awt.Dimension[width=1111,height=871]
escale=1.3943290689299303E-8
trans=AffineTransform[[1.3943291E-8, 0.0, -0.001401649296542], [0.0, -1.3943291E-8, 435.5284243950154]]
DEBUG [Thread-11] (OracleSpatialDriver.java:1476) - MAIN SEL = select CODAREA, c."TIPO", c."IDCOMISION", c."TITULARIDA", c."NOMBREORIG", c."SHAPE_LENG", c."SHAPE_AREA", c."CODINEMUN", c.GEOM from PRUEBA.AREAINFLUENCIA c where (sdo_relate(GEOM, mdsys.sdo_geometry(2003, 23030, null, mdsys.sdo_elem_info_array(1, 1003, 3), mdsys.sdo_ordinate_array(100525.0, -3.12316213803951E10, 7.9679999966E10, 3.12356985233951E10)), 'mask=anyinteract querytype=window') = 'TRUE')
java.lang.ClassCastException: java.lang.String
at es.prodevelop.cit.gvsig.fmap.drivers.jdbc.oracle.OracleSpatialFeatureIterator.next(OracleSpatialFeatureIterator.java:135)
at com.iver.cit.gvsig.fmap.drivers.featureiterators.ReprojectWrapperFeatureIterator.next(ReprojectWrapperFeatureIterator.java:92)
at com.iver.cit.gvsig.fmap.layers.FLyrVect._draw(FLyrVect.java:437)
at com.iver.cit.gvsig.fmap.layers.FLyrVect.draw(FLyrVect.java:631)
at com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:209)
at com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:175)DEBUG [Thread-11] (NotificationManager.java:104) - java.lang.String
java.lang.ClassCastException: java.lang.String
at es.prodevelop.cit.gvsig.fmap.drivers.jdbc.oracle.OracleSpatialFeatureIterator.next(OracleSpatialFeatureIterator.java:135)
at com.iver.cit.gvsig.fmap.drivers.featureiterators.ReprojectWrapperFeatureIterator.next(ReprojectWrapperFeatureIterator.java:92)
at com.iver.cit.gvsig.fmap.layers.FLyrVect._draw(FLyrVect.java:437)
at com.iver.cit.gvsig.fmap.layers.FLyrVect.draw(FLyrVect.java:631)
at com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:209)
at com.iver.cit.gvsig.fmap.DefaultMapContextDrawer.draw(DefaultMapContextDrawer.java:175)
at com.iver.cit.gvsig.fmap.MapContext.draw(MapContext.java:1092)
at com.iver.cit.gvsig.fmap.MapControl$PaintingRequest.paint(MapControl.java:1043)
at com.iver.cit.gvsig.fmap.MapControl$Drawer2$Worker.run(MapControl.java:1234)
at java.lang.Thread.run(Thread.java:595)
at com.iver.cit.gvsig.fmap.MapContext.draw(MapContext.java:1092)
at com.iver.cit.gvsig.fmap.MapControl$PaintingRequest.paint(MapControl.java:1043)
at com.iver.cit.gvsig.fmap.MapControl$Drawer2$Worker.run(MapControl.java:1234)
at java.lang.Thread.run(Thread.java:595)
El 23 de diciembre de 2009 15:59, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola,
en mi workspace de 1.9 (conectado al trunk del repositorio) tengo un proyecto llamado libDriverManager y en su build.xml se crea el archivo "driver-manager-1.1.jar". Qué versión estás compilando? De dónde salen esos dos jar?
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: mié 23/12/2009 13:15
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan, te comento un poco
tengo dos librerias :
driver-manager-1.0-SNAPSHOT con esta si me aparece el driver de Oracle Spatial Database Driver
driver-manager-1.0 con esta NO ME SALE EL DRIVER Oracle Spatial Database Driver
Si pongo las dos librerias evidentemente me da error, me dice que tengo dos librerias que se
llaman igual,
¿Que diferencias hay entre una y otra ?
¿como puedo hacer para que me salga el driver oracle spatial?
Saludos y muchas gracias
El 23 de diciembre de 2009 11:43, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola, Carlos.
Esto es un esbozo del código que necesitas para crear una capa Oracle Spatial por código. No lo he probado, pero los errores que tenga creo que serán solo erratas. Debes reemplazar las expresiones <...> por los valores de tu BD: El puerto suele ser 1521 para Oracle Spatial. He supuesto que el nombre del campo geométrico es GEOMETRY:
===========================
ConnectionWithParams cwp = null;
try {
cwp = SingleVectorialDBConnectionManager.instance().getConnectionOracleSpatialDriver.NAME, <usuario>, <contrasena>,
<nombre_de_la_conexion_cualquier_cosa>, <nombre-del-servidor-o-IP>, <puerto>, <nombre_de_la_BD>, true);
} catch (DBException e) {
System.err.println("Error: " + e.getMessage());
}
FLayer lyr = null;
try {
IVectorialDatabaseDriver driver = (IVectorialDatabaseDriver) LayerFactory.getDM().getDriver(OracleSpatialDriver.NAME);
schema = <esquema_es_decir_usuario>;
tableName = <nombre_de_la_tabla>;
String fidField = "ROWID";
String geomField = "GEOMETRY";
String[] fields = <array_con_los_nombre_de_campos>; // debe contener "ROWID" pero no "GEOMETRY"
DBLayerDefinition lyrDef = new DBLayerDefinition();
lyrDef.setName(<nombre_de_la_capa_en_el_TOC_de_gvSIG_cualquier_cosa>);
lyrDef.setSchema(schema);
lyrDef.setTableName(tableName);
lyrDef.setWhereClause("");
lyrDef.setFieldGeometry(geomField);
lyrDef.setFieldNames(fields);
lyrDef.setFieldID(fidField);
lyrDef.setHost(cwp.getHost());
lyrDef.setPort(Integer.parseInt(cwp.getPort()));
lyrDef.setDataBase(cwp.getDb());
lyrDef.setUser(cwp.getUser());
lyrDef.setPassword(cwp.getPw());
driver.setData(cwp.getConnection(), lyrDef);
lyr = LayerFactory.createDBLayer(driver, layerName, null);
} catch (Exception ex) {
System.err.println("Error: " + ex.getMessage());
}
=============================
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: mié 23/12/2009 10:34
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan,
He estado viendo las clases que me comentastes de WizardVectorialDB y de NewOracleSpatialTableWizard,
eso lo que hace es realmente mostrar el panel de conexio a bd y seleccionar la capa a representar en la vista,
para hacer esto mismo pero todo mediante codificación nada de abrir panels, es posible con estas clases ?? o hay otras ??
Gracias y saludos
El 21 de diciembre de 2009 15:40, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola, Carlos. No entiendo lo que quieres hacer. Coger una capa de la BD Oracle Spatial y representarla en una vista de gvSIG es lo que hace la extensión Oracle Spatial, entre otras cosas. Qué cosa novedosa quieres hacer con una capa Oracle Spatial?
La creación de la capa puedes verla en el método getLayer de la clase WizardVectorialDB (proyecto appGvsig). Ese método se usa para cualquier tipo de BD espacial, lo único que cambia son las variables selectedDataSource y conex. Para ver cómo dar valor a esas variables en el caso de Oracle Spatial, mira por ejemplo el método addNewConnection de la clase NewOracleSpatialTableWizard.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: lun 21/12/2009 14:31
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Efectivamente, estaba intentando ejecutar ese código, mi intención era coger una capa de nuesta BD oracle
y representarla en gvsig, pero ando un poco perdido y estaba siguiendo ese ejemplo
que parecia crear un DBLayerDefinition con la capa de la BD...
Hay alguno forma para hacer esto que te comento, coger la capa de la bd y representarla ??
Muchas Gracias y un saludo
El 21 de diciembre de 2009 13:48, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Esta línea exactamente:
OracleSpatialDriver driver = new OracleSpatialDriver();
solo aparece en una clase de test que tiene un método 'main', pero no se usa en la aplicación. Se usó para hacer pruebas de rendimiento del driver. Estás intentando ejecutar ese main?
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: lun 21/12/2009 12:40
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Sabes de alguna libreria que pueda revisar para ver si todo esta correcto ??
Gracias y saludos
El 21 de diciembre de 2009 12:36, Carlos Javier Martin Cano <carlosjmartinc en gmail.com> escribió:
Si si seguí las instrucciones, me funciona todo menos la conexión a oracle spatial...
tengo la version 1.9 estable de gvsig
El 21 de diciembre de 2009 12:30, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola.
Parece que te falta compilar y poner en su sitio alguna de las librerías básicas de gvSIG.
Has seguido estas instrucciones?
http://www.gvsig.org/web/docdev/docs/svn_article/construir-gvsig-desde-el-repositorio-svn
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: lun 21/12/2009 11:18
Para: Lista de Desarrolladores de gvSIG
Asunto: Re: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas Juan,
Primero gracias por contestar ,
He podido ejecutar el build.xml del proyecto extOracleSpatial pero al iniciar mi aplicación
cuando ejecuto la linea
OracleSpatialDriver driver = new OracleSpatialDriver();
me da el siguiente error, no se si tendrá algo que ver
java.lang.NoClassDefFoundError: com/iver/cit/gvsig/fmap/DriverException
No se a que se debe,
Un saludo
El 21 de diciembre de 2009 10:56, Juan Lucas Dominguez Rubio <jldominguez en prodevelop.es> escribió:
Hola, Carlos. En la línea 42 de extOracleSpatial/build.xml dice:
depends="init,compile,create-jar,copy-data-files,copy-to-andami, clean">
Elimina el elemento 'compile' para que quede asi:
depends="init,create-jar,copy-data-files,copy-to-andami,clean">
Creo que así podrás ejecutar el build.xml sin ese error. No olvides tener activada la opción "Project - build automatically" en el menú principal.
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 listserv.gva.es en nombre de Carlos Javier Martin Cano
Enviado el: dom 20/12/2009 20:41
Para: gvsig_desarrolladores en listserv.gva.es
Asunto: [Gvsig_desarrolladores] gvsig 1.9 y oraclespatial
Buenas,
me he bajado la extensión para oracle spatial (extOracleSpatial)
al ejecutar el build.xml me da el siguiente error :
Buildfile: D:\gvSIG\extOracleSpatial\build.xml
init:
compile:
gvSIG-import-build-number:
BUILD FAILED
D:\gvSIG\extOracleSpatial\build.xml:123: The following error occurred while executing this line:
D:\gvSIG\binaries\ant\utilities.xml:207: Error: property buildNumberFile not set or file not available: ${buildNumberFile}
Total time: 1 second
Me podeis ayudar ?
Gracias y un saludo
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20100304/4f8129d4/attachment.htm
Más información sobre la lista de distribución gvSIG_desarrolladores