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 :
Udig,
GvSIG,
GeoAPI,
JGrass,
GeoTidy,
Jump,
JTS,
OpenJump,
Constellation,
MapFaces,
JSR-275,
GeoTools,
GeoServer,
Puzzle-GIS,
...
Une liste plus complète se trouve
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.


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.