<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Gracias, por tu respuesta, pero de esa manera me limita la carga por ejemplo de otras capas u ortofotos contenidas dentro<br>de un proyecto.<br><br> Sigo investigando, sobre lo referido<br><br>Atentamente<br>Robert Zavaleta<br><br>> Date: Mon, 8 Nov 2010 04:40:49 -0800<br>> From: rcastellanos@habana.geocuba.cu<br>> To: gvsig_desarrolladores@listserv.gva.es<br>> Subject: Re: [Gvsig_desarrolladores] conectarme a Base Spacial<br>> <br>> <br>> Hola <br>> <br>> Yo utilizo para cargar capas de la BD una clase que encontré en este foro, y<br>> permite pasarle los parámetros de la conexión que quieras.<br>> <br>> Aquí te envío el código, te advierto que solo tiene configurado el driver<br>> para cargar capas de postgresql.<br>> <br>> import java.sql.Connection;<br>> import java.sql.DatabaseMetaData;<br>> import java.sql.ResultSet;<br>> import java.util.ArrayList;<br>> <br>> import javax.swing.JOptionPane;<br>> <br>> import org.apache.log4j.Logger;<br>> import org.cresques.cts.ICoordTrans;<br>> import org.cresques.cts.IProjection;<br>> import org.cresques.cts.ProjectionPool;<br>> <br>> import com.hardcode.driverManager.Driver;<br>> import com.iver.andami.PluginServices;<br>> import com.iver.cit.gvsig.fmap.MapControl;<br>> import com.iver.cit.gvsig.fmap.core.ICanReproject;<br>> import com.iver.cit.gvsig.fmap.crs.CRSFactory;<br>> import com.iver.cit.gvsig.fmap.drivers.ConnectionFactory;<br>> import com.iver.cit.gvsig.fmap.drivers.ConnectionJDBC;<br>> import com.iver.cit.gvsig.fmap.drivers.DBLayerDefinition;<br>> import com.iver.cit.gvsig.fmap.drivers.FieldDescription;<br>> import com.iver.cit.gvsig.fmap.drivers.IConnection;<br>> import com.iver.cit.gvsig.fmap.drivers.IVectorialJDBCDriver;<br>> import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGISWriter;<br>> import com.iver.cit.gvsig.fmap.layers.FLayer;<br>> import com.iver.cit.gvsig.fmap.layers.FLyrVect;<br>> import com.iver.cit.gvsig.fmap.layers.LayerFactory;<br>> import com.iver.cit.gvsig.project.documents.view.gui.View;<br>> <br>> //import controlador.Controlador;<br>> <br>> /**<br>> * @author Sergio Piñón Campañó<br>> *<br>> */<br>> <br>> public class CargadorCapas {<br>> private static String selectedDriver;<br>> <br>> private static Logger log = Logger.getLogger(CargadorCapas.class);<br>> <br>> public CargadorCapas() {<br>> selectedDriver = "PostGIS JDBC Driver";<br>> }<br>> <br>> /**<br>> * Crea una capa a partir de una tabla de la BD y la añade al<br>> <code>mapControl y a la Vista <code>v<br>> * @param mapControl<br>> * @param v<br>> */<br>> <br>> <br>> public FLyrVect cargarTabla(String nombreTabla, String lyName, int posicion,<br>> String whereClause, MapControl mapControl, View v, String url, String puser,<br>> String ppass) {<br>> <br>> String dbURL = url;//"jdbc:postgresql://localhost:5432/Baracoa";<br>> <br>> String user = puser;//"postgres";<br>> String pwd = ppass;//"postgres";<br>> <br>> IConnection conex = null;<br>> try {<br>> <br>> IVectorialJDBCDriver dbDriver = (IVectorialJDBCDriver)<br>> LayerFactory.getDM().getDriver("PostGIS JDBC Driver");<br>> <br>> Driver drv = LayerFactory.getDM().getDriver(selectedDriver);<br>> <br>> conex = ConnectionFactory.createConnection(dbURL, user, pwd);<br>> <br>> /*creamos la definicion para la capa*/<br>> DBLayerDefinition dbLayerDef = new DBLayerDefinition();<br>> dbLayerDef.setCatalogName("Baracoa"); //Nombre de la base de datos<br>> dbLayerDef.setSchema("public"); //Nombre del esquema<br>> dbLayerDef.setTableName(nombreTabla); //Nombre de la tabla<br>> dbLayerDef.setFieldGeometry("the_geom");<br>> dbLayerDef.setFieldID("gid");<br>> dbLayerDef.setWhereClause(whereClause);<br>> dbLayerDef.setConnection(conex);<br>> //dbLayerDef.setName(lyName);<br>> <br>> /*obtenemos conexion JDBC*/<br>> <br>> Connection conexion = ((ConnectionJDBC) conex).getConnection();<br>> DatabaseMetaData metadataDB = conexion.getMetaData();<br>> <br>> String tipos[] = new String[1];<br>> tipos[0] = "TABLE";<br>> <br>> ResultSet tablas = metadataDB.getTables(null, null, nombreTabla, tipos);<br>> tablas.next();<br>> <br>> String t = tablas.getString(tablas.findColumn("TABLE_NAME"));<br>> <br>> ResultSet columnas = metadataDB.getColumns(null,null,nombreTabla, "%");<br>> ResultSet claves = metadataDB.getPrimaryKeys(null, null, nombreTabla);<br>> <br>> ArrayList<FieldDescription> descripciones = new ArrayList<br>> <FieldDescription>();<br>> <br>> ArrayList<String> nombres = new ArrayList<String>();<br>> <br>> while(columnas.next()) {<br>> log.info("Tratando atributo: \""+columnas.getString("Column_Name")+"\" de la<br>> tabla: "+nombreTabla);<br>> if(columnas.getString("Type_Name").equalsIgnoreCase("geometry")) {<br>> /*si es la columna de geometria*/<br>> log.info("Encontrado atributo de geometria para la tabla:"+nombreTabla);<br>> dbLayerDef.setFieldGeometry(columnas.getString("Column_Name"));<br>> }<br>> else {<br>> FieldDescription fieldDescription = new FieldDescription();<br>> fieldDescription.setFieldName(columnas.getString("Column_Name"));<br>> fieldDescription.setFieldType(columnas.getType());<br>> descripciones.add(fieldDescription);<br>> nombres.add(columnas.getString("Column_Name"));<br>> }<br>> }<br>> FieldDescription fields[] = new FieldDescription[descripciones.size()];<br>> String s[] = new String[nombres.size()];<br>> for(int i = 0; i < descripciones.size(); i++) {<br>> fields[i] = descripciones.get(i);<br>> s[i] = nombres.get(i);<br>> }<br>> dbLayerDef.setFieldsDesc(fields);<br>> dbLayerDef.setFieldNames(s);<br>> <br>> /*buscamos clave primaria y la añadimos a la definicion de la capa*/<br>> while(claves.next()) {<br>> dbLayerDef.setFieldID(claves.getString("Column_Name"));<br>> }<br>> <br>> //PostGISWriter writer = new PostGISWriter();<br>> <br>> //writer.setWriteAll(false);<br>> //writer.setCreateTable(false);<br>> <br>> IProjection proj = null;<br>> String strEPSG = "2085";<br>> <br>> if (drv instanceof ICanReproject)<br>> { <br>> dbLayerDef.setSRID_EPSG(strEPSG);<br>> <br>> if (dbDriver instanceof ICanReproject)<br>> {<br>> ((ICanReproject)dbDriver).setDestProjection(strEPSG);<br>> }<br>> dbDriver.setData(conex, dbLayerDef);<br>> <br>> if (dbDriver instanceof ICanReproject)<br>> {<br>> // el error lo da aquiiiiiii<br>> <br>> // proj = CRSFactory.getCRS("EPSG:" +<br>> ((ICanReproject)dbDriver).getSourceProjection(null,dbLayerDef));<br>> <br>> proj = CRSFactory.getCRS("EPSG:2085");<br>> <br>> }<br>> }<br>> FLayer lyr = LayerFactory.createDBLayer(dbDriver, lyName, proj);<br>> <br>> if (lyr!=null && mapControl!=null && v!=null) {<br>> lyr.setVisible(true);<br>> v.getMapControl().getMapContext().beginAtomicEvent();<br>> // Comprobamos si es necesario reproyectar<br>> checkProjection(lyr, v.getMapControl());<br>> <br>> v.getMapControl().getMapContext().getLayers().addLayer(lyr);<br>> v.getMapControl().getMapContext().endAtomicEvent();<br>> }<br>> <br>> <br>> return (FLyrVect) lyr;<br>> } catch (Exception e) {<br>> log.warn("No se pudo cargar capa de la tabla: "+nombreTabla);<br>> e.printStackTrace();<br>> return null;<br>> }<br>> <br>> }<br>> <br>> private void checkProjection(FLayer lyr, MapControl mc)<br>> {<br>> if (lyr instanceof FLyrVect)<br>> {<br>> FLyrVect lyrVect = (FLyrVect) lyr;<br>> IProjection proj = lyr.getProjection();<br>> // Comprobar que la proyección es la misma que la vista<br>> if (proj == null)<br>> {<br>> log.warn("Reproyectando capa "+lyr.getName()+" porque no<br>> tenía proyección asignada");<br>> lyrVect.setProjection( mc.getViewPort().getProjection());<br>> return;<br>> }<br>> if<br>> <br>> (!proj.getAbrev().equals(mc.getViewPort().getProjection().getAbrev())) {<br>> int option =<br>> JOptionPane.showConfirmDialog(null,PluginServices.getText(this,<br>> "reproyectar_aviso"),<br>> PluginServices.getText(this,<br>> "reproyectar_pregunta"),JOptionPane.YES_NO_OPTION);<br>> <br>> if (option == JOptionPane.NO_OPTION) {<br>> return;<br>> } else {<br>> log.error("coordTrans = " + proj.getAbrev() + " " +<br>> mc.getViewPort().getProjection().getAbrev());<br>> <br>> lyrVect.reProject((ICoordTrans) mc);<br>> System.err.println("coordTrans = " +<br>> proj.getAbrev() + " " +<br>> mc.getViewPort().getProjection().getAbrev());<br>> }<br>> }<br>> }<br>> }<br>> <br>> }<br>> <br>> Espero te sirva <br>> <br>> Saludos, Raisel<br>> -- <br>> View this message in context: http://osgeo-org.1803224.n2.nabble.com/conectarme-a-Base-Spacial-tp5710854p5716700.html<br>> Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.<br>> _______________________________________________<br>> gvSIG_desarrolladores mailing list<br>> gvSIG_desarrolladores@listserv.gva.es<br>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores<br>                                            </body>
</html>