[Gvsig_desarrolladores] Capas PostGIS

Angélica María Gómez materia.angelica en gmail.com
Mie Dic 19 16:43:16 CET 2007


Muchas gracias

En el proyecto ya tengo incluidas las librerías
cms.jar
driver-manager-1.1.jar
gdbms-0.8-SNAPSHOPT.jar
iver-utilities.jar

y hasta la de Postgre, para otra prueba que estaba haciendo:
postgresql-8.2-506.jdbf3.jar

El caso es que revisé lo de las proyecciones y aun en la base de datos no
están proyectados los datos. Pero antes de cargar las capas a la vista, hago
lo siguiente, que parte de ello fue tomado de la clase TextPostGIS:

public FLyrVect iniciarCapaPostGIS(String tablageom)
    {

        String layerName = tablageom;
        String tableName = tablageom;
        IConnection conn;
        LayerFactory.setDriversPath
("D:/eclipse/workspace/_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
        try {
            if(Conexion.dburl!=null){
                conn = ConnectionFactory.createConnection(Conexion.dburl,
Conexion.dbUser, Conexion.dbPass);
                ((ConnectionJDBC)conn).getConnection().setAutoCommit(false);
                Connection con = DriverManager.getConnection(Conexion.dburl,
Conexion.dbUser,Conexion.dbPass);
                con.setAutoCommit(false);
                String fidField = "gid"; //En nuestro caso, este es el
nombre siempre
                String geomField = "the_geom"; //De nuevo para SHR_DB este
es el nombre siempre


                Statement st = ((Connection)con).createStatement();
                ResultSet rs = st.executeQuery("select * from " + tableName
+ " LIMIT 1");
                ResultSetMetaData rsmd = rs.getMetaData();
                int cantColum=rsmd.getColumnCount();
                String[] fields = new String[cantColum-1];
                int j = 0;
                for (int i = 0; i < cantColum; i++) {
                    if
(!rsmd.getColumnLabel(i+1).equalsIgnoreCase(geomField))
                    {
                    fields[j++] = rsmd.getColumnName(i+1).toString();
                    //System.out.println("Campo numero nombre "+i+" j "+j+"
"+rsmd.getColumnName(i+1));
                    }
                }
                /*Prueba
                for (int i = 0; i < fields.length; i++) {
                    System.out.println("Campo numero nombre "+i+"
"+fields[i]);
                }*/

                String whereClause = "";
                IVectorialJDBCDriver driver = (IVectorialJDBCDriver)
LayerFactory.getDM().getDriver("PostGIS JDBC Driver");



                String strEPSG = "4686";
                DBLayerDefinition lyrDef = new DBLayerDefinition();
                lyrDef.setName(layerName);
                lyrDef.setTableName(tableName);
                lyrDef.setWhereClause(whereClause);
                lyrDef.setFieldNames(fields);
                lyrDef.setFieldGeometry(geomField);
                lyrDef.setFieldID(fidField);
                lyrDef.setSRID_EPSG(strEPSG);

                if (driver instanceof ICanReproject)
                {
                    ((ICanReproject)driver).setDestProjection(strEPSG);
                }
                driver.setData(conn, lyrDef);
                IProjection proj = null;
                if (driver instanceof ICanReproject)
                {
                    proj = CRSFactory.getCRS("EPSG:" +
((ICanReproject)driver).getSourceProjection(null,lyrDef));
                }
                FLayer lyr = LayerFactory.createDBLayer(driver, layerName,
proj);
                Rectangle2D rectAux = lyr.getFullExtent();
                return (FLyrVect) lyr;
            }else{
                JOptionPane.showMessageDialog(command,"No se ha establecido
conexion con la base de datos");
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }


Luego cargo las capas en la vista. El cuento es que en la vista sigue
apareciendo el EPSG 23030. Luego no se si las capas están en diferente
sistema de proyecciones, o si no toma ese sistema o si es indispensable
tener las capas proyectadas en la base de datos, en cuyo caso no se como
cargar esa proyección en el layer o si acaso es que no estoy creando bien la
capa.

Ahora el problema solo aparece cuando intento seleccionar algo en la vista o
ver algún atributo de la tabla de atributos. Del resto puede hacer zoom,
pan, etc con las herramientas de GvSIG

Muchas gracias por la ayuda que puedan darme.





On Dec 18, 2007 9:03 AM, Cesar Escribano <cescriba en gmail.com> wrote:

> Hola Angélica:
> Yo no he llegado aún a hacer lo que estás haciendo, pero ese error se me
> producía cuando llamaba a mi extension sin haber incluido las librerias de
> gvSIG. Algo así como que al llamar a tu extensión (desde menú, por ejemplo)
> no encuentra las clases básicas de java.
> Lo resolví creando proyectos en Eclipse que apuntasen a las librerías
> básicas necesarias y haciendo que mi extensión "dependa" de dichos
> proyectos. (Pág 12 del documento "Crear extensiones desde 0 en gvSIG").
> Aunque imagino que esto ya lo tienes superado con creces.
> No creo que yo te haya ayudado, pero te comento esto por si acaso.
>
>
> 2007/12/18, Angélica María Gómez <materia.angelica en gmail.com>:
> >
> > HOLA
> >
> > Hace días escribí este correo y no obtuve respuesta de nadie. El
> > problema aun persiste y no se que es lo que pasa. ¿Alguien por favor me
> > puede guiar?
> >
> > Muchas gracias
> >
> > On Dec 13, 2007 12:01 AM, Angélica María Gómez <
> > materia.angelica en gmail.com > wrote:
> >
> > > Buen día
> > >
> > > Estoy haciendo un proyecto con una base de datos en postgre. Mi
> > > problema es
> > > que cuando intento buscar un objeto (municipio) a partir de un punto
> > > en la
> > > vista o cuando intento seleccionar unos lugares por la dirección me
> > > saca un
> > > error.
> > >
> > > Cree la conexion a la base de datos y estoy cargando las capas
> > > directamente
> > > de la BD a la vista
> > > Cuando intento hacer por ejemplo un queryByPoint, presenta lo
> > > siguiente.
> > >
> > > DEBUG [AWT-EventQueue-1] (NotificationManager.java:99) -
> > > java.lang.NullPointerException
> > > java.lang.NullPointerException
> > >        at
> > > com.iver.cit.gvsig.fmap.operations.strategies.DBStrategy.queryByRect(
> > > DBStrategy.java :285)
> > >        at
> > > com.iver.cit.gvsig.fmap.operations.strategies.DefaultStrategy.queryByRect
> > > (DefaultStrategy.java:413)
> > >        at
> > > com.iver.cit.gvsig.fmap.operations.strategies.DefaultStrategy.queryByPoint
> > > (DefaultStrategy.java :295)
> > >        at
> > > com.iver.cit.gvsig.fmap.operations.strategies.DefaultStrategy.queryByPoint
> > > (DefaultStrategy.java:409)
> > >        at com.iver.cit.gvsig.fmap.layers.FLyrVect.queryByPoint(
> > > FLyrVect.java:610)
> > >        at
> > > com.iue.geosig.SHRProyecto.logica.ControlConsultaDistanciaH.consultarIntercepcion(
> > > ControlConsultaDistanciaH.java:77)
> > >        at com.iue.geosig.SHRProyecto.logica.ControlConsultaDistanciaH
> > > .<init>(ControlConsultaDistanciaH.java:35)
> > >        at
> > > com.iue.geosig.SHRProyecto.interfaz.DistanciaH$1.actionPerformed (
> > > DistanciaH.java:225)
> > >        at javax.swing.AbstractButton.fireActionPerformed(Unknown
> > > Source)
> > >        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown
> > > Source)
> > >        at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown
> > > Source)
> > >        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
> > >        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown
> > > Source)
> > >        at java.awt.Component.processMouseEvent (Unknown Source)
> > >        at javax.swing.JComponent.processMouseEvent(Unknown Source)
> > >        at java.awt.Component.processEvent(Unknown Source)
> > >        at java.awt.Container.processEvent(Unknown Source)
> > >        at java.awt.Component.dispatchEventImpl(Unknown Source)
> > >        at java.awt.Container.dispatchEventImpl(Unknown Source)
> > >        at java.awt.Component.dispatchEvent(Unknown Source)
> > >        at java.awt.LightweightDispatcher.retargetMouseEvent (Unknown
> > > Source)
> > >        at java.awt.LightweightDispatcher.processMouseEvent(Unknown
> > > Source)
> > >        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> > >        at java.awt.Container.dispatchEventImpl(Unknown Source)
> > >        at java.awt.Window.dispatchEventImpl(Unknown Source)
> > >        at java.awt.Component.dispatchEvent(Unknown Source)
> > >        at java.awt.EventQueue.dispatchEvent(Unknown Source)
> > >        at com.iver.andami.ui.AndamiEventQueue.dispatchEvent (
> > > AndamiEventQueue.java:58)
> > >        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown
> > > Source)
> > >        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
> > > Source)
> > >        at java.awt.EventDispatchThread.pumpEvents (Unknown Source)
> > >        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> > >        at java.awt.EventDispatchThread.run(Unknown Source)
> > >  WARN [AWT-EventQueue-1] (PluginServices.java:130) - Plugin
> > > com.iver.core -- No se encontró la traducción para Consola de
> > > información
> > >  WARN [AWT-EventQueue-1] (PluginServices.java:130) - Plugin
> > > com.iver.core -- No se encontró la traducción para Consola de
> > > información
> > >  WARN [AWT-EventQueue-1] ( PluginServices.java:130) - Plugin
> > > com.iver.core -- No se encontró la traducción para Activa la ventana
> > > DEBUG [AWT-EventQueue-1] (NewSkin.java:483) - Activando Consola de
> > > información
> > > DEBUG [AWT-EventQueue-1] (MDIFrame.java :991) - Memoria total: 42 MB
> > >
> > >
> > > Igual pasa cuando intento capturar un punto desde la vista. No se si
> > > las instrucciones de queryByPoint o el listener para la vista, sólo
> > > son válidas para capas shp.
> > > La otra pregunta es como puedo hacer para mostrar la selección (pintar
> > >
> > > la selección) en la vista
> > >
> > > Muchas gracias por la ayuda que puedan brindarme
> > >
> > >
> > > --
> > > Angélica María Gómez
> > > Docente
> > > Institución Universitaria de Envigado
> > > Universidad de Antioquia
> > >
> >
> >
> >
> > --
> > Angélica María Gómez
> > Docente
> > Institución Universitaria de Envigado
> > Universidad de Antioquia
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en runas.cap.gva.es
> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >
> >
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
>


-- 
Angélica María Gómez
Docente
Institución Universitaria de Envigado
Universidad de Antioquia
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20071219/63bcaa71/attachment-0001.htm


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