[Gvsig_desarrolladores] Guardar informacion en Base de datos espacial

gpman gmpan en mailinator.com
Lun Ene 26 13:14:51 CET 2009


Muchas gracias antes de nada.

>María Arias de Reyna wrote:
>Si tienes acceso a la base de datos y no necesitas mostrarlo
inmediatamente, 
>puedes meter este punto directamente en la tabla sin pasar por gvsig.
Cuando 
>gvsig cargue la capa (o la recargue), ya mostrará ese punto.

Si ahi está mi duda realmente. Realmente accedo a la BD a traves de gvSig,
con el SingleVectorialDBConnectionManager. Obtengo todos los drivers y el
usuario elige con cual se conecta. Hago algo como esto:
La primera linea obtiene todas las conexiones creadas a bases de datos
espaciales desde gvsig, con el "Gestor de Conexiones a BD espaciales" que
antes estaba en la extension GeoBD y ahora integrado. Parte del codigo para
conectarme lo he sacado de ahi.

ConnectionWithParams[] conn =
SingleVectorialDBConnectionManager.instance().getAllConnections();

IConnection conex = conn.getConnection();

Driver drv = (IVectorialDatabaseDriver)
LayerFactory.getDM().getDriver(drvName);
String[] tablnames = drv.getTableNames(conex, dbName);

Por ejemplo, con esta ultima linea obtengo las tablas que hay en la BD para
que el usuario elija en cual guardar los datos.

Bien, pues una vez tengo eso, y le pediré al usuario el punto, tendré que
convertirlo a objeto geografico (JTS supongo) etc,  pero bueno, no es el
tema. Sino, aprovechando la forma en que me he conectado... como guardo eso
en la BD???

Una forma que probé es a partir de la IConnection puedo obtener una
Connection tipica de jdbc en java.sql para poder lanzar querys con
Statements y tal... en plan

Connection conexion = ((ConnectionJDBC) conex).getConnection();
Statement stmt = conexion.createStatement();
String query = "SELECT * FROM tabla";
ResultSet rs = stmt.executeQuery(query);

Pero eso, que no me parece la mejor forma de hacer esta ultima parte. 
Supongo que una vez tengo un Driver podría obtener un Writer (esto ya lo he
hecho) pero a partir de ahi no se como guardar el punto. tengo que crear una
capa (aunque no la muestre de momento)? para ello debería convertir el Punto
a geometria o a una IFeature?

No se si me estaré explicando correctamente pero si teneis alguna
idea/orientacion os lo agradeceré.

Saludos. 



María Arias de Reyna wrote:
> 
> Si tienes acceso a la base de datos y no necesitas mostrarlo
> inmediatamente, 
> puedes meter este punto directamente en la tabla sin pasar por gvsig.
> Cuando 
> gvsig cargue la capa (o la recargue), ya mostrará ese punto. 
> 
> Y para tener un acceso a la base de datos independiente del tipo de base
> de 
> datos (oracle, postgresql,...) deberías utilizar una librería que te
> permita 
> separar el código del modelo de base de datos. Por ejemplo, hibernate: 
> http://hibernate.org. 
> 
> Si no vas a mostrar en ningún momento la información gráfica, quizás
> deberías 
> plantearte si necesitas gvsig o si simplemente con las extensiones gis de
> la 
> base de datos que utilices es suficiente.
> 
> -- 
> María Arias de Reyna Domínguez
> Emergya Consultoría
> 
> 
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> 
> 

-- 
View this message in context: http://n2.nabble.com/Guardar-informacion-en-Base-de-datos-espacial-tp2202565p2217570.html
Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.




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