[Gvsig_desarrolladores] Añadir una capa por codigo

Virginia Portillo Ramos vir_portillo en hotmail.com
Mar Jun 22 13:23:30 CEST 2010


Hola,

Estoy intentado añadir una capa por codigo. El codigo que utilizo es el siguiente:

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

String mues;
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);
    
                    DBLayerDefinition lyrDef = new DBLayerDefinition();
                    
                    lyrDef.setName("CIUDADES");
                    lyrDef.setSchema("public");
                    lyrDef.setTableName("ciudades_xy");
    
                    if (munic.equals("TODOS")) {
                        lyrDef.setWhereClause("");
                        mues = "SELECT * FROM ciudades_xy";
                    }else{
                        lyrDef.setWhereClause("nombre= '" + ciudad+ "'"); 
                        mues = "SELECT * FROM ciudades_xy WHERE nombre= '" + ciudad + "'";
                    }
    
                    lyrDef.setFieldGeometry("the_geom");
                    
                    String[] fields = {"gid","n_ciudad","x","y","nombre"};
                    lyrDef.setFieldNames(fields);
    
                    lyrDef.setFieldID("gid");
                    
                    String strEPSG = "EPSG:23030";
    
                    lyrDef.setSRID_EPSG(strEPSG);
    
                    if (driver instanceof ICanReproject) {
                        ((ICanReproject) driver).setDestProjection(strEPSG);
                    }
                    
                    lyrDef.setHost("localhost");
                    lyrDef.setPort(5432);
                    lyrDef.setDataBase("VPR");
                    lyrDef.setUser("postgres");
                    lyrDef.setPassword("1");

                    Statement st = ((ConnectionJDBC)con).getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,   ResultSet.CONCUR_READ_ONLY);

                    ResultSet rs = null;
                    rs = st.executeQuery(mues);
    
                    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);
                    
                    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();
}

Funciona todo hasta la linea que he puesto en rojo que me da un NullPointerException, ¿Qué me estoy dejando? ¿Por qué no me funciona?

Muchas gracias de antemano.

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/6c8ed896/attachment.htm 


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