Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

HAIT
Bonjour à tous,
nous avons développé quelques fonctionnalités sous orbisgis et nous aimerions les automatiser et les tourner en mode batch sous unix . Ne nous utilisons pas la dernière version d'orbisgis.
Merci pour votre aide!
AIT
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

Alexis.G
2012/1/25 HAIT [via OrbisGIS] <[hidden email]>:
> Bonjour à tous,
> nous avons développé quelques fonctionnalités sous orbisgis et nous
> aimerions les automatiser et les tourner en mode batch sous unix . Ne nous
> utilisons pas la dernière version d'orbisgis.
> Merci pour votre aide!
> AIT
>

Bonjour AIT,

J'imagine que vous avez au choix :

 - Développé une bibliothèque s'appuyant sur les fonctionnalités d'OrbisGIS
 - Modifié une des bibliothèques d'OrbisGIS.

Dans un cas comme dans l'autre, le moyen le plus simple pour nous
serait de consulter directement les codes que vous avez écrit. Il est
compliqué sans cela de parvenir à vous fournir une réponse précise.

Bonne journée,

Alexis.

--
OrbisGIS supporter.
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

ebocher
Administrator
In reply to this post by HAIT
Bonjour,

Je confirme la remarque d'Alexis. Si nous n'avons pas d'informations
plus claires nous ne pourrons pas vous aider. L'accès aux codes est
une question d'ailleurs qui devait être résolue depuis notre passage
chez vous. Ou en sommes nous à ce sujet ?

Erwan.
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

HAIT
Bonjour à vous deux et merci pour les réponses...
Le code ne cesse mais je peux toujours vous envoyer le code intermédiaire.
Un exemple plus simple ( avec le code) pour bien poser le problème:
J'ai développé des "Evaluators"qui permettent à l'utilisateur  de calculer un indicateur morphologique relatif au bâtis. Prenons cet exemple de calcul de la contiguïté:

import java.io.File;
import org.gdms.data.DataSource;
import org.gdms.data.DataSourceCreation;
import org.gdms.data.DataSourceCreationException;
import org.gdms.data.DataSourceFactory;
import org.gdms.data.file.FileSourceCreation;
import org.gdms.data.types.Type;
import org.gdms.data.types.TypeFactory;
import org.gdms.driver.DriverException;
import org.gdms.driver.driverManager.DriverLoadException;
import org.orbisgis.core.ui.pluginSystem.PlugInContext;
import org.orbisgis.progress.IProgressMonitor;




public class NetCompactnessEvaluator extends AbstractEvaluator {
       
        private ContiguityEvaluator contiguityEvaluator;

        public NetCompactnessEvaluator(PlugInContext context) {
                super("Net Compactness", context);
                contiguityEvaluator = new ContiguityEvaluator(context);
        }

       
        protected SqlBuilder getDataSource() {
                SqlBuilder sb = contiguityEvaluator.getDataSource();
                sb.addField("hauteur","nc_hight");
                sb.addField("ST_Area(the_geom)","nc_area");
                return sb;
        }

        protected DataSource getResults(DataSource datasource, IProgressMonitor pm)
                        throws DriverException {
                       
       
                pm.startTask("Compute " + contiguityEvaluator.getName());
                DataSource ds = contiguityEvaluator.getResults(datasource,pm);
                pm.endTask();
               

                int nc_hight = ds.getFieldIndexByName("nc_hight");
                int envelope = ds.getFieldIndexByName("Envelope");
                int nc_area  = ds.getFieldIndexByName("nc_area" );
                double volume  = 0;
                double surface = 0;
                for(long i=0 ; i<ds.getRowCount() ; i++){
                        volume  += ds.getDouble(i, nc_hight) * ds.getDouble(i, nc_area);
                        surface += ds.getDouble(i, envelope);
                }
                double result = surface/Math.pow(volume, 2.0/3.0);
               
                for(int i=0 ; i<7 ; i++){
                        ds.removeField(0);
                }

                ds.addField("Net Compactness", TypeFactory.createType(Type.DOUBLE));
                DataSourceFactory dsf = ds.getDataSourceFactory();
                File file = new File(dsf.getTempFile("gdms"));
                DataSourceCreation dsc = new FileSourceCreation(file, ds.getMetadata());
                file.delete();
                dsf.createDataSource(dsc);
                DataSource resultDs;
                try {
                        resultDs = dsf.getDataSource(file,DataSourceFactory.EDITABLE);
                } catch (DriverLoadException e) {
                        resultDs = ds;
                } catch (DataSourceCreationException e) {
                        resultDs = ds;
                }
                resultDs.open();
                resultDs.insertEmptyRow();
                resultDs.setDouble(0, 0, Math.round(result*10)/10.0);
               
                return resultDs;
        }

}



Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

ebocher
Administrator
Bonjour,

Évaluer des classes au fil de l'eau, extraites du contexte de ton
application est pour nous trop compliquée.
Donnes nous un accès à ton dépôt svn ou git ou le code est versionné.
Je le rappelle c'est quelque chose qui avait été entériné lors de
notre passage à Toulouse???

Erwan
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

HAIT
Re,
Dites-moi comment faire pour vous donner accès au code développé. Je ne connais pas la manip pour le faire avec svn...
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

Alexis.G
Le 26/01/2012 15:53, HAIT [via OrbisGIS] a écrit :
> Re,
> Dites-moi comment faire pour vous donner accès au code développé. Je
> ne connais pas la manip pour le faire avec svn...

Vous n'avez actuellement pas les droits pour effectuer une telle
manipulation. J'ai d'ailleurs du mal à comprendre que cette réflexion
n'arrive que maintenant, alors que vos développements sur notre
plateforme ont été engagés il y a plusieurs mois. Cette question aurait
du être mise sur le tapis dès le début, lors de nos premiers entretiens,
et aurait permis de discuter vos travaux à l'origine. La question
originelle de ce post serait d'ailleurs probablement résolue.

Par ailleurs, étant donné que je ne peux avoir aucune garantie sur la
synchronisation entre votre code et la version actuelle du tronc, je ne
suis pas sûr qu'il soit viable de vous créer une branche dédiée. Il
n'est pas question de perdre le suivi du versionnement, sur aucune des
branches maintenues dans notre dépôt. Je préfère également avoir des
garanties de qualité sur les codes apportés à nos dépôts. Par
conséquent, je vais avoir besoin des informations suivantes :

- Un diff (à mettre dans un fichier en pièce jointe) de vos travaux,
basé sur votre version du tronc.
- Le numéro de révision de la version du tronc sur laquelle vous avez
basé vos travaux.

Le diff est susceptible de ne pas contenir les fichiers ajoutés à la
copie locale mais jamais commité. Joignez les à la pièce jointe. De
préférence dans une arborescence de dossiers correspondant aux noms des
package.

Notez que vous pouvez préférer une autre solution de versionnement si
vous préférez. Je sais utiliser autre chose que SVN, git, notamment.

Bonne soirée,

Alexis.


Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

HAIT
Bonjour,
Nous n'avons pas ici, à ma connaissance,  un gestionnaire de versions, le plus simple c'est de vous envoyer tous les packages  et l'importer ensuite dans le  corps d'orbisgis. La version que j'utilise est la 3.0
Bonne journée
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

ebocher
Administrator
Bonjour,

Ce n'est pas le plus simple, ni la démarche la plus adaptée et surtout
la plus cohérente pour suivre un projet R&D.
Étant donné que nous n'avez pas de système de versionnement nous
pouvons réfléchir à vous héberger sur le notre. Ceci implique de votre
part :

- d'utiliser le serveur de versionnement pour partager et maintenir à
jour vos développements,
- de respecter les bonnes pratiques en vigueur lorsque l'on développe,
- de clarifier les conditions de mise à disposition de votre code,
 et enfin ne pas utiliser le dépôt à d'autres fins que celles que nous
vous spécifierons.

Erwan
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

Alexis.G
Bonjour,

Je ne pense pas que ce soit notre rôle d'assurer l'intégration de vos travaux dans nos projets, sur lesquels vous vous basez. En tant que développeur et mainteneur de votre projet, vous êtes logiquement le plus à même de réaliser cet import.

Comme le précise Erwan, nous sommes disposé à accueillir vos développements sur la plateforme au sein de notre dépôt SVN. Cela implique en particulier que vous réalisiez le travail d'intégration de vos codes dans la plateforme. Notez que ce travail est a priori immédiat, OrbisGIS étant le lieu d'exécution de vos développements.

De plus, je vous rappelle que l'utilisation d'un système de gestion de versions est cruciale dans les projets de développement. Ces logiciels permettent d'appréhender plus rapidement l'évolution d'une base de codes, et de se rendre compte plus aisément de la nature du travails qui est effectué.

Enfin, je ne vous ai pas demandé quelle version du logiciel vous avez utilisé, mais bien le numéro de révision de la base de codes sur lequel vous avez effectué vos travaux. Étant donné que, selon toute vraisemblance, vous avez modifié cette base de codes, il me semble pertinent de supposer qu'à défaut de versionner vos travaux, vous avez récupérer les sources à l'aide d'un

svn checkout

Par conséquent, à moins d'avoir supprimé les dossiers contenant les informations nécessaires au versionnement par SVN, vous devriez être en mesure de me fournir le numéro de la révision qui vous a servi de base. Ainsi que l'URL utilisée pour récupérer les sources. Toutes ces informations sont conservées par Subversion.

Sans cette information, il me sera difficile de vous créer la branche la plus adaptée à vos besoins. Je l'attends toujours, donc, avant de vous créer un espace de développement dédié.

Alexis.
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

HAIT
Bonjour,
Je suis tout à fait d'accord, pour suivre un projet il faut un gestionnaire de référentiels, MAIS, ici les normes de sécurités ne le permettent pas, pas  ssh, svn.
Mes projets sont déjà intégrés dans la plate-forme en local.
Les infos en question:
URL: http://svn.orbisgis.org/orbisgis/trunk/orbisgis-ui
Revision: 11313

Indépendamment, je ne sais toujours pas comment exécuter  la plat-forme en mode bash!
Merci çà vous deux.
Reply | Threaded
Open this post in threaded view
|

Re: Automatiser et tourner en mode batch les fonctionnalités sous orbisgis

ebocher
Administrator
Bonjour,

Suite à tes remarques, nous avons ajouté dans le core de la plateforme d'OrbisGIS une classe qui permet d’exécuter des scripts beanshell.

Le code est disponible sur le trunk dans le package org.orbisgis.core.beanshell du projet orbisgis-core.


Nous allons progressivement ajouter des fichiers exemples. Néanmoins tu peux d'ores et déjà lire l'article d'Alexis sur notre blog qui présente comment utiliser beanshell.

A noter que le fait de manipuler l'API du core d'OrbisGIS via des scripts t'impose de faire toutes les instanciations nécessaires et qui sont d’habitudes faites par l'IHM. Si tu veux par exemple, représenter des données il te faudra construire un mapcontext. Il y a des exemples dans les tests unitaires.

Erwan.