[Gvsig_desarrolladores] Añadir una capa por codigo‏

Virginia Portillo Ramos vir_portillo en hotmail.com
Mar Jun 22 17:34:49 CEST 2010


Muchas gracias por tu ayuda Eñaut, la verdad es que si que cambia bastante de una version a otra pero me ha dado alguna idea.

Al final he detectado el problema. Escribo como debe quedar en gvsig 1.9 la carga de una capa por codigo utilizando una base de datos de PostgreSQL por si alguien lo necesita:

IProjection proj = null;
IVectorialDatabaseDriver driver = null;
IConnection
 con = null;

View v = (View) PluginServices.getMDIManager().getActiveWindow();
MapControl mapCtrl = v.getMapControl();

String ciudad;

try {
               
     
                    String str 
="jdbc:postgresql://localhost/VPR";
    
                    
Class.forName("org.postgresql.Driver");
                    
    
                con = 
ConnectionFactory.createConnection(str,"postgres","1");
    
    
                
((ConnectionJDBC)con).getConnection().setAutoCommit(false);

                    driver = (IVectorialDatabaseDriver) LayerFactory.getDM().getDriver("PostGIS JDBC Driver");

   
                 DBLayerDefinition lyrDef = new DBLayerDefinition();
   
                 
                    lyrDef.setName("CIUDADES"); 'nombre capa
   
                 lyrDef.setSchema("public");
                    
lyrDef.setTableName("ciudades_xy"); 'nombre tabla
    
                    if 
(ciudad.equals("TODOS")) {
                        
lyrDef.setWhereClause("");
                    }else{
                    
    lyrDef.setWhereClause("WHERE nombre= '" + ciudad+ "'"); 
                    }
    
                    
lyrDef.setFieldGeometry("the_geom"); 'Nombre campo geometria
                    
    
                String[] fields = {"gid","n_ciudad","x","y","nombre"}; 'Campos que se desea visualizar (gid obligatorio)
   
                 lyrDef.setFieldNames(fields);

    
                lyrDef.setFieldID("gid"); 'Nombre campo principal
                    
   
                 String strEPSG = mapCtrl.getViewPort().getProjection().getAbrev();
    
    
                lyrDef.setSRID_EPSG(strEPSG);
    
    
                if (driver instanceof ICanReproject) {
    
                    ((ICanReproject) driver).setDestProjection(strEPSG);
   
                 }
                    
                    
lyrDef.setHost("localhost"); 'Servidor
                    
lyrDef.setPort(5432); 'Puerto
                    lyrDef.setDataBase("VPR"); 'Base de datos
   
                 lyrDef.setUser("postgres"); 'Usuario
                    
lyrDef.setPassword("1"); 'Contraseña
    
    
                driver.setData(con, 
lyrDef);
    
                    View v = (View) 
PluginServices.getMDIManager().getActiveWindow();
                   
 MapControl mapCtrl = v.getMapControl();
                    
    
                if (driver instanceof ICanReproject) {
    
                     proj = mapCtrl.getViewPort().getProjection();
   
                 }
                    
                    FLayer
 lyr;
                    lyr = LayerFactory.createDBLayer(driver, 
"CIUDADES",
                            proj); 'driver, Nombre capa, proj
                   
 
                    if (lyr != null) {
                        
lyr.setVisible(true);
                        
mapCtrl.getMapContext().getLayers().addLayer(lyr);      
            
        }    

} catch (DBException e) {
                    //
 TODO Auto-generated catch block
                    
e.printStackTrace();
} catch (ClassNotFoundException e) {
        
            // TODO Auto-generated catch block
                    
e.printStackTrace();
} catch (SQLException e) {
                
    // TODO Auto-generated catch block
                    
e.printStackTrace();
}

Espero que os sirva.

Saludos.

Virginia
 		 	   		  
_________________________________________________________________
Sé el protagonista de GQ con Messenger y Vodafone Blackberry. ¡Y gana premios!
http://serviciosmoviles.es.msn.com/messenger/vodafone.aspx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20100622/a4ed7461/attachment.htm 


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