[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