Version | Auteur | Mise à jour |
0.1 | Erwan Bocher | 20/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
));
}