IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

SIG & Java : Vue d'ensemble

Date de publication : 07 février 2009

Par Sorel johann (http://jsorel.developpez.com/)
 

Tour d'horizon des différentes API java open-sources disponible pour la réalisation d'applications SIG.

I. Différents mondes en compétition
I-A. Les API outil
I-A-1. JTS : Java Topology Suite
I-A-2. JSR-275 : Units
I-B. Les tout en un
I-C. Les forks et adaptations
I-D. Les outils normalisés
I-D-1. Particularités GvSIG
I-D-2. Particularités Udig
I-D-3. La futur génération : GeoTidy


I. Différents mondes en compétition

Voici une liste non exaustive de ce que l'on trouve actuellement :
en Udig,
en GvSIG,
en GeoAPI,
en JGrass,
en GeoTidy,
en Jump,
en JTS,
en OpenJump,
en Constellation,
en MapFaces,
en JSR-275,
en GeoTools,
en GeoServer,
en Puzzle-GIS,
...
Une liste plus complète se trouve fr ici.

Tous ses projets n'ont pas les mêmes objectifs et ils peuvent être regroupé en différentes catégories.


I-A. Les API outil


I-A-1. JTS : Java Topology Suite

JTS est une librairie pour le traitement des géometries en 2 dimensions.
Pour ceux qui ont déjà utilisé Java2D, JTS fournis des objets similaires à des object Shape comme Rectangle, Eclipse, Area.
Java2D et JTS sont très proche jusqu'a un certain point.
Par exemple, Java2D fournit deux methodes : intersect et contain qui permettent de savoir si deux geometries se coupent ou se contiennent mutuellement. Toutefois la javadoc precise bien que le résultat n'est pas necessairement exact si le calcul s'avere trop couteux a faire.
En comparaison JTS garantie que le resultat retourné est correct.
JTS propose aussi bien plus de fonction d'analyze de geometries, comme :
within, touch, disjoint, union, convex-hull, difference ...etc...
JTS est aussi capable de gérer des géometries plus complexe, comme des polygones a trous, des multi-points ...etc... alors que dans Java2D ces geometries sont toutes sous le nom de Area.


I-A-2. JSR-275 : Units

Cette librairie est issue du JCP (Java Community Process) dans le but de palier au manque d'une API pour gérer les unités.
On trouve donc dans cette librairie toutes les classes necessaires pour gérer les unités: mètres, miles, degrée, m3 par seconde ...etc... ainsi que les methodes pour transformer d'une unité à une autre.
Cette API est primordiale pour pouvoir gérer les projections cartographique.


I-B. Les tout en un

On trouve dans cette catégorie, les outils desktop comme Jump et GvSIG.
Ces outils sont tout en un dans le sens ou ils apportent toutes les briques logiciels par eux meme. C'est à dire, la gestion des projections, le moteur de rendue, l'acces aux données, la gestion des geometries etc...
Ils sont généralement plus en avance que les autres car ils regroupent et developpent une l'application et ses modules dans le meme projet ce qui rend le developpement plus rapide.
Se sont de bons choix quand on est limité par le temps ou que l'on cherchent une base complete.


I-C. Les forks et adaptations

On distingue les forks comme OpenJump (un fork de Jump on le devine), et les adaptations d'autres langages comme JGrass qui enrichi ses capacités avec les fonctions de l'application C++ Grass, GvSIG avec GDAL ou encore certaines extensions de GeoServer intégrant aussi des binding pour GDAL (librairie C++ de traitement d'image).
Ces applications sont nés car les librairies Java n'offrent pas encore tous les outils dont on peut avoir besoin en SIG (fonctions d'analyzes, lecteurs de formats ...).


I-D. Les outils normalisés

Etant donné que le domaine des SIG est encore jeune et en plein évolution il n'existe qu'une seule alternative aujourdhui : GeoAPI
GeoAPI est l'API qui fournit les interfaces suivants les normes ISO et OGC.

Beaucoup de projets l'utilisent :
GeoTidy, GeoTools, Udig, GeoServer, Constellation, MapFaces, Puzzle-GIS
JGrass l'utilise indirectement a travers Udig.
GvSIG utilise une vieille version de celle ci.

Voici comment les projets s'organisent autour de GeoAPI.



Les plus aboutis et les plus utilisés sont :
- GeoTools comme implémentation de base (actuellement en version 2.6)
- GeoServer comme serveur cartographique (actuellement en version 1.7)
- Udig (v1.1) et GvSIG (1.1) pour le desktop



I-D-1. Particularités GvSIG

On notera que GvSIG se demarque des autres projets en offrent aussi une version mobile pour les outils nomades (GPS).
GvSIG bénéficie d'un traitement de faveur comparé aux autres car il est directement subventionné par l'état espagnol, ce qui lui permet d'etre le seul à fournir tous les outils necessaire, de la lecture en passant par l'analyze jusqu'a la mise en forme avant impression.
Toutefois ce projet a quelques defauts :
- Il modifie votre JVM a l'installation.
- Il fait usage de librairies tierce native (GDAL-OGR-GRASS).
- Il n'utilise pas une plateforme comme socle.


I-D-2. Particularités Udig

Udig est aussi particulier car il est basé sur la plateforme Eclipse. Ce qui lui permet de s'enrichir rapidement.
JGrass est un exemple d'une application à l'origine en swing qui a été porté sur Udig.


I-D-3. La futur génération : GeoTidy

Ces projets (Constellation, MapFaces, Puzzle-GIS)font actuellement bande a part car ils sont encore en développement.

Tous ses projets se démarquent car ils sont dotés du dernier moteur de rendue Go2 et vont etre les premiers construit sur GeoTidy (le possible futur GeoTools 3).
GeoTidy devrait etre la premiere librairie Java a disposé d'un modele de geometries ISO-19107 pour les données topologiques et multidimensionelles ainsi que de la plus complète implémentation de gestion des projections.



Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Sorel johann. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.