[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