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