Buenos días a todos,

  Necesito crear una capa a partir de dos tablas de la base de
datos(postgresql), para posteriormente aplicar una leyenda por intervalos.
  En  una tabla tengo almacenada la geometría y otros campos y en otra
tabla tengo almacenado el campo por el cual quiero realizar la leyenda. No
almaceno este campo junto a la geometría puesto que depende del año y en
caso que lo incluyese me saldría una tabla demasiado extensa. Ambas tablas
están relacionadas por un campo en común.

  He creado capas a partir de una tabla, pero no soy capaz de crear una
capa a partir de dos tablas. Este sería el código para una tabla:
metadataDB = conexion1.getMetaData();
                String tipos[] = new String[1];
                tipos[0] = "TABLE";
                ResultSet tablas = metadataDB.getTables(null,
null,nombreTabla_Par, tipos);
                tablas.next();
                String t = tablas.getString(tablas.findColumn( "TABLE_NAME"
));

                ResultSet columnas =
metadataDB.getColumns(null,null,nombreTabla_Par, "%");
                Vector<String> vcolumnas=new Vector<String>();
                int p=0;
                while(columnas.next()) {
                    if
(columnas.getString("Column_Name").compareTo("the_geom") != 0 )
                        if
(!columnas.getString("Column_Name").equals("the_geom"))

vcolumnas.addElement(columnas.getString("Column_Name"));

                    // datos.set(i, columnas.getString("Column_Name"));
                   //
System.out.println("Contenido"+columnas.getString("Column_Name"));

                }





                /*creamos la definicion para la capa*/
                dbLayerDef = new DBLayerDefinition();
                dbLayerDef.setCatalogName(nombreBD); //Nombre de la base de
datos
                dbLayerDef.setSchema(esquema); //Nombre del esquema
                dbLayerDef.setTableName(nombreTabla_Par); //Nombre de la
tabla
                dbLayerDef.setWhereClause("where municipio='"+ municipio
+"'");
                dbLayerDef.setConnection(conex);
                String[] fields=new String[vcolumnas.size()];
                for(int i=0; i<vcolumnas.size(); i++){
                    fields[i]= vcolumnas.get(i);
                    System.out.println("Dentro del for "+ fields[i]);
                }
                dbLayerDef.setFieldNames(fields);
                dbLayerDef.setFieldGeometry("the_geom");
                dbLayerDef.setFieldID("gid");




                    dbDriver.setData(conex, dbLayerDef);


                    IProjection proj = null;

                    //if (drv instanceof ICanReproject){
                    proj = CRSFactory.getCRS("EPSG:23030");
                    //}
                    System.out.println("La proyeccion" + proj);
                    FLayer lyr =  LayerFactory.createDBLayer(dbDriver,
municipio, proj);


                    /*asignamos proyección a la capa y al ViewPort*/

                    v.getMapControl().getViewPort().setProjection(proj);
                    dbLayerDef.setSRID_EPSG("EPSG:23030");







*¿ y para relacionar las dos como se haría?*. Teniendo en cuenta que el
campo de la segunda tabla es el que voy a utilizar para realizar la leyenda.


Gracias a todos.

Un Saludo.
_______________________________________________
gvSIG_desarrolladores mailing list
[email protected]
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de 
baja en esta lista, acuda a la siguiente dirección: 
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores

Responder a