Découpe vecteur

Ce script va vous permettre de découper un ou plusieurs fichiers vecteurs sur la base d'une couche vecteur "pochoir"


Attention ce script n'est exécutable qu'à partir de la version 2.2.0 d'OrbisGIS


Script :

import org.gdms.data.DataSource;

import org.orbisgis.core.layerModel.MapContext;


/** Spécifiez ici le nom de la couche qui va servir de pochoir. Dans cet exemple, la couche pochoir s'appelle agglo_nantes */

zone = "agglo_nantes";

/** Spécifie ici le suffixe qui sera généré à la fin de chacunes des couches découpées */

suffixe = "_agglo";


MapContext mc = mc;

print(mc.getLayerModel().getLayerCount());


for (int i = 0; i< mc.getLayerModel().getLayerCount(); i++){

print(mc.getLayerModel().getLayer(i).getName());

layerName = mc.getLayerModel().getLayer(i).getName();

layerNameOut = layerName + suffixe;

/** A la place de /tmp/, mettez l'adresse du dossier ou vos couches générées doivent atterir (ici elles seront en .shp) */

SQL("SELECT REGISTER('/tmp/"+ layerNameOut +".shp', '"+ layerNameOut+"');");

/** Retrouvez ici la requete SQL qui découpe les couches sur la base du pochoir */

SQL("CREATE TABLE " + layerNameOut + " as select st_intersection(a.the_geom,b.the_geom) as the_geom, a.*{except the_geom} from " + layerName + " a, " + zone + " b where st_intersects(a.the_geom, b.the_geom);");

}


Procédure :

1- Collez ce script dans la console Beanshell

2- Dans le Geocatalog, chargez toutes les données que vous souhaitez découper + la couche qui va vous servir de pochoir

3- Glissez/déposez les couches à découper dans la TOC --> la couche pochoir doit rester dans le Geocatalog.... sinon elle va se découper avec elle-même

4- Modifier les variables "zone" et "suffixe" ainsi que l'adresse de destination de vos couches et leur format

5- Exécutez le script


Remarque : Dans ce script, nous utilisons la fonction SQL Intesection qui se base sur un opérateur d'instersection. En conséquence, tout les objets qui intersectent la zone pochoir seront conservés --> même ceux qui débordent de la zone.


Exemple avec découpe de quelques couches de la BD TOPO de l'IGN sur l'agglomération nantaise :


1- On place les couches dans la TOC et on adapte le script à nos données


2- On éxecute le script (on voit alors qu'OrbisGIS travail)

3- Une fois que le traitement est terminé, on peut comparer le résultat avec l'original


Avant

Après


Les nouvelles couches sont bien découpées, renommées avec le suffixe et stockées à l'adresse spécifiée.




Auteur du script : Erwan Bocher - IRSTV - Ecole Centrale de Nantes

Copyright - IRSTV - 2009 - www.orbisgis.org