[Gvsig_usuarios] Cargar capas postgis

jaume domínguez faus jaume.dominguez en iver.es
Lun Abr 7 11:40:21 CEST 2008


Hola mj

Solo especulo, pero si no tienes excepción ni ves nada, parece que en tu 
vista no haya features, quizá porque el encuadre está fuera de las 
features (estás mirando a otro lado), la capa está codificada en CRS 
diferente de la vista o porque la consulta no devuelve nada.  Veo que 
tienes un setWhereFilter(""). ¿Eso es correcto? quizá es una condición 
que nunca se cumple en vez de ser la condición que siempre se cumple 
(aunque esto no lo sé)


Espero que te sirva.
Salut


mj wrote:
>
> * *
>
> *Hola, necesito un poquito de ayuda. Quiero hacer un menú que cargue 
> unas capas de postgis en gvsig. Encontre un código en el foro de 
> desarrolladores de gvsig en el que saltaba una excepción. He 
> conseguido que la excepción no me salte pero no me hace nada. Os copio 
> el código, a ver si alguno me echa una mano porque estoy un poco 
> perdida. Estoy con la version 1.1.2. *
>
> * *
>
> *public* *void* cargarPostgis(MapControl mapCtrl, View v){
>
>             String dbURL = "jdbc:postgresql://localhost:5432/argentina";
>
>             String user = "postgres";
>
>             String pwd = "Asus11";
>
>  
>
>            
>
>             IConnection conn;
>
>             String selectedDriver = "PostGIS JDBC Driver";
>
>             Driver drv = LayerFactory./getDM/().getDriver(selectedDriver);
>
>             IVectorialJDBCDriver dbDriver = (IVectorialJDBCDriver) drv;
>
>             *try* {
>
>                   IConnection conex = 
> ConnectionFactory./createConnection/(dbURL,user,pwd);
>
>                   DBLayerDefinition dbLayerDef = *new* 
> DBLayerDefinition();
>
>                   dbLayerDef.setCatalogName("argentina"); //Nombre de 
> la base de datos
>
>                   dbLayerDef.setSchema("public"); //Nombre del esquema
>
>                   dbLayerDef.setTableName("rios"); //Nombre de la tabla
>
>                   dbLayerDef.setFieldGeometry("the_geom"); //Nombre de 
> la columna geométrica
>
>                   dbLayerDef.setFieldID("gid"); //Columna ID
>
>                   dbLayerDef.setWhereClause("");
>
>                   String strSRID = 
> mapCtrl.getProjection().getAbrev().substring(5);
>
>                   dbLayerDef.setSRID_EPSG(strSRID);
>
>                   dbLayerDef.setConnection(conex);
>
>                   PostGISWriter writer = *new* PostGISWriter();
>
>  
>
>                   writer.setWriteAll(*true*);
>
>                   //No queremos crear la tabla
>
>                   writer.setCreateTable(*false*);
>
>                   *try* {
>
>                         writer.initialize(dbLayerDef);
>
>                         //Creamos la tabla
>
>                         writer.preProcess();
>
>                         writer.postProcess();
>
>                         *if* (dbDriver *instanceof* ICanReproject){
>
>                              
> ((ICanReproject)dbDriver).setDestProjection(strSRID);
>
>                         }
>
>                        
>
>                         //Creamos el dirver, hay que añadir el campo 
> ID a la definición de campos
>
>                         *boolean* bFound = *false*;
>
>                         System./out/.println("prueba 
> "+dbLayerDef.getFieldsDesc());
>
>                         *if* (dbLayerDef.getFieldsDesc()!=*null*){
>
>                              System./out/.println("Si entro aqui es 
> que no soy null ");
>
>                  
>
>                         *for* (*int* i=0; 
> i<dbLayerDef.getFieldsDesc().length;i++){
>
>                              FieldDescription f = 
> dbLayerDef.getFieldsDesc()[i];
>
>                              *if* 
> (f.getFieldName().equalsIgnoreCase(dbLayerDef.getFieldID())){
>
>                                    bFound = *true*;
>
>                                    *break*;
>
>                              }
>
>                         }
>
>                         }
>
>                         bFound = *true*;
>
>                         //Si no está, lo añadimos
>
>                         *if* (!bFound){
>
>                              *int* numFieldsAnt = 
> dbLayerDef.getFieldsDesc().length;
>
>                              FieldDescription [] newFields = *new* 
> FieldDescription [dbLayerDef.getFieldsDesc().length+1];
>
>                              *for* (*int* i=0;i<numFieldsAnt;i++){
>
>                                    newFields[i] = 
> dbLayerDef.getFieldsDesc()[i];
>
>                              }
>
>                              newFields[numFieldsAnt] = *new* 
> FieldDescription();
>
>                              
> newFields[numFieldsAnt].setFieldDecimalCount(0);
>
>                              
> newFields[numFieldsAnt].setFieldType(Types./INTEGER/);
>
>                              newFields[numFieldsAnt].setFieldLength(7);
>
>                              
> newFields[numFieldsAnt].setFieldName(dbLayerDef.getFieldID());
>
>                              dbLayerDef.setFieldsDesc(newFields);
>
>                         }
>
>                         //Esto lo pongo para probar
>
>                        
>
>                         FieldDescription [] newFields = *new* 
> FieldDescription [1];
>
>                         newFields[0] = *new* FieldDescription();
>
>                         newFields[0].setFieldDecimalCount(0);
>
>                         newFields[0].setFieldType(Types./INTEGER/);
>
>                         newFields[0].setFieldLength(7);
>
>                         
> newFields[0].setFieldName(dbLayerDef.getFieldID());
>
>                         dbLayerDef.setFieldsDesc(newFields);
>
>                         dbDriver.setData(conex,dbLayerDef);
>
>                         IProjection proj = *null*;
>
>                         *if* (drv *instanceof* ICanReproject){
>
>                              proj = 
> CRSFactory./getCRS/("EPSG:"+((ICanReproject)dbDriver).getSourceProjection(*null*, 
> *null*));
>
>                         }
>
>                         FLyrVect lyr = (FLyrVect) 
> LayerFactory./createDBLayer/(dbDriver, "rios", proj);
>
>                         v.getMapControl().getMapContext().getLayers();
>
>                         
> v.getMapControl().getMapContext().endAtomicEvent();
>
>                        
>
>                   } *catch* (EditionException e) {
>
>                         // *TODO* Auto-generated catch block
>
>                         System./err/.println("Error "+e);
>
>                         e.printStackTrace();
>
>                   }
>
>                  
>
>                  
>
>                  
>
>             } *catch* (DBException e) {
>
>                   // *TODO* Auto-generated catch block
>
>                   e.printStackTrace();
>
>             }
>
>       }
>
>  
>
> Un saludo y muchas gracias de antemano.__
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en runas.cap.gva.es
>
> 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://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios
>   


-- 
Jaume Dominguez Faus

Equip gvSIG 

Web Map Service
Web Coverage Service 
Web Map Context
Simbologia Avançada
Etiquetat Intel·ligent

Iver TI
C. Salamanca, 52
46005 València
Telf: 902 25 25 40 Fax: 96 316 27 16
(Spain)
 


Este mensaje y sus archivos son confidenciales. No está permitida su reproducción o distribución sin la autorización expresa de "IVER Tecnologías de la Información". Si usted no es el destinatario previsto, queda desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.




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