edit · history · print
VersionAuteurMise à jour
0.1Erwan Bocher20/10/2006

Introduction

Cet article expose un exemple d'utilisation d'une requête SQL select pour réorganiser les champs d'une couche géographique dans gvSIG. Pour cela nous utilisons la librairie GDBMS 0.8 intégrée à gvSIG 1.0 RC1. Les colonnes de la couche sont réorganisées afin que le champ gid apparaisse en première position.

Code source


//On definit le repertoire ou se trouve les drivers

                LayerFactory.setDriversPath(
                "C:/Program Files/gvSIG_1.0/bin/gvSIG/extensiones/com.iver.cit.gvsig/drivers");

                //On accède au fichier en tant que couche géographique

                FLayer l = LayerFactory.createLayer("countries",
                                (VectorialFileDriver) LayerFactory.getDM().getDriver("gvSIG shp driver"),
                                new File("C:/Temp/countries.shp"),
                                ProjectionPool.get("EPSG:23030"));


                FLyrVect vectorialLayer = (FLyrVect) l;

                //On déclare un objet DataSource sur lequel la requête va être executée.
                DataSource ds = null;      

                ds = vectorialLayer.getRecordset();


                //Un string buffer que l'on va completer grace à la methode append.          
                StringBuffer sqlOrdering = new StringBuffer("select gid");

                for (int i=0;i<ds.getFieldCount();i++) {                               
                        //On cherche et on ignore le champ gid
                        if ((ds.getFieldName(i).equalsIgnoreCase("gid"))||(ds.getFieldName(i).equalsIgnoreCase("GID")))
                                continue;

                        sqlOrdering.append(", "+ ds.getFieldName(i));

                }
                //On complete la requête avec le nom de la source de données.   
                sqlOrdering.append(" from "+ds.getName()+ ";");

                //On affiche la requête
                System.out.println("La requête SQL" + sqlOrdering.toString());

                //Execution de la requête
                ds = ds.getDataSourceFactory().executeSQL(sqlOrdering.toString(), DataSourceFactory.AUTOMATIC_OPENING);

                // On verifie si les champs sont bien réorganisés
                        for (int i=0;i<ds.getFieldCount();i++) {                               
                        System.out.println("Liste des noms de champ"+ ds.getFieldName(i));
                        }       
 

edit · history · print
Page last modified on October 20, 2006, at 04:45 PM