Plusieurs outils ont été développés sous OpenJUMP pour aider les utilisateurs de GeoConcept à passer d’un logiciel à l’autre.
Les drivers GeoConcept
Trois drivers GeoConcept ont été développés pour OpenJUMP. Ils sont réunis dans l’extension driver-geoconcept-x.x.x.jar (driver-geoconcept-0.9.3 au moment de la mise à jour de cet article). La distribution complète incluant les sources et les dépendances se trouve au même endroit (fichier .zip).
1 - Un Driver pour l’import de données (chargement en mémoire) Ce plugin vous permet d’importer des données au format ASCII GeoConcept (gxt). Il bénéficie d’une grande souplesse, permettant de lire des fichiers utilisant différents séparateurs, en coordonnées absolues ou en coordonnées relatives.
Nom et type des attributs : si l’export GeoConcept ne contient pas la description des champs, des noms d’attribut par défaut sont utilisés (il est fortement recommendé d’exporter les champs en en-tête). Le format d’export GeoConcept ne permet pas de préciser le type des champs (entier, caractère, date...). Par défaut, tous les champs sont donc interprétés comme des chaînes de caractères.
Pour lire les attributs dans un schema qui différencie les caractères des entiers, des dates ou des double, il faut désigner le fichier de metadonnées xml décrivant le modèle de votre carte GeoConcept. [Note : cette option n’est plus accessible depuis la version 0.9]
Lecture de la géométrie : le pilote lit les géométries d’origine en les altérant le moins possible, mais la différence entre les modèles géométriques de GeoConcept et de JUMP ne permet pas de restituer les objets de manière 100% conforme :
les polygones ouverts sont fermés (conformité au modèle SFS oblige), mais l’information est conservée et ils sont réécrits "ouverts" s’ils sont exportés en GeoConcept à partir de d’OpenJUMP (l’information n’est toutefois pas respectée pour chaque trou et chaque polygone si le polygone est composé de plusieurs entités),
si un "trou" est décrit avant le contour externe, l’ordre originel n’est pas conservé. La surface est normalisée au chargement.
si une surface est composé de deux entités se recouvrant, le résultat est un multi-polygones composé de deux polygones se recouvrant.
Note : un parser spécial accessible en ajoutant l’option -Dgcdriver=OL à la ligne de commande permet de ne charger que les géométries ’invalides’ ou du moins suspectes à partir d’un très gros fichier.
2 - Un Driver pour l’import de données (lecture sur disque) : ce plugin expérimental est équivalent au précédent, mais au lieu de tout charger en mémoire, il accède aux données sur disque. Conséquences :
on peut charger des fichiers plus volumineux
les fichiers sont en lecture seule
l’accès aux données est beaucoup plus lent
3 - Un driver pour l’export de données au format GeoConcept : ce plugin crée à partir d’une couche OpenJUMP :
un fichier d’export GeoConcept
un fichier xml décrivant le modèle dans lequel sont exportées les données au format xml de GeoConcept. Ce modèle est à importer dans GeoConcept avant les données.
Attention, un import/export de données GeoConcept à partir d’OpenJUMP ne permet pas de conserver les données exactement sous leur forme initiale :
le type des attributs peut changer du au nombre limité de types d’attributs gérés par OpenJUMP (caractères/entiers/doubles/dates).
Gestion du nom des types / sous-types
Le nom des types/sous-types exportés est déterminé suivant la double règle suivante :
si le nom de la couche contient un ’/’ (cas d’une couche importée à partir d’un fichier gxt) : les type/sous-type exportés sont construits à partir du nom de la couche (partie précédent le ’/’ et partie suivant le ’/’.
si le nom de la couche ne contient pas de ’/’, le nom de la catégorie est utilisée pour le type et celui de la couche pour le sous-type.
Les outils cachés du driver GeoConcept
Presse-papier GeoConcept : ce plugin, inclus dans l’extension GeoConcept 0.7 et plus, ajoute un bouton dans la barre d’outil GeoConcept.
Pour utiliser ce bouton, il faut avoir auparavant copier un ou plusieurs objets dans une carte GeoConcept ouverte. Une fois l’objet GeoConcept copier dans le presse-papier :
un clic sur le bouton GeoConcet d’OpenJUMP synchronise la vue OpenJUMP avec la carte GeoConcept (en fait, centre la carte sur l’objet présent dans le presse-papier)
un double-clic sur le bouton GeoConcept d’OpenJUMP copie la géométrie de l’objet (sa géométrie uniquement), dans une nouvelle couche d’OpenJUMP.
Historique
Version 0.9.3 (2008-08-09) Bug fix : une exception était lancée lors de l’écriture d’une couche vide Bug fix : utilisation d’utf-8 pour l’écriture du xml
Version 0.9a (2008-05-12) Bug fix : une seule couche pouvait être chargée à partir d’un gxt multi-couches.
Version 0.9 (2008-04-13) Adaptation du plugin à l’interface mise en place par Paul Austin pour gérer les drivers et les options.
Version 0.8c (2008-01-23) Possibilité d’exporter plusieurs couches OpenJUMP dans un seul fichier gxt.
Version 0.8beta2 (2007-07-05) Correction d’un bug concernant l’écriture des dates
Version 0.8beta (2007-06-30) Correction d’un bug qui empêchait la libération de la mémoire allouée dans JUMP après la suppression d’une couche (le jeu de données restait référencé dans la classe GXTFileReader).
Amélioration des performances globales en lecture (40 à 80% par rapport aux temps précédents) : la méthode split de l’API java utilisant les expressions régulières est remplacée par une classe spécialisée dans la lecture des fichiers CSV (auteur Glen Smith).
Version 0.8alpha (2007-06-23) Ajout d’une option permettant de ne charger que les polygones géométries à l’import Cette option s’active en ajoutant le paramètre suivant à la ligne de commande : java -Dgcdriver=OL ... Les géométries repérées sont :
* lignes ou polygones invalides (présence d’un auto-intersectant) * polygone dont le trou est décrit avant la surface * polygone possédant des contours se chevauchant * polygone possédant deux contours équivalents * lignes ou polygones possédant des points doublés
Un autre intérêt de ce driver est de permettre d’analyser de très gros fichiers sans saturer la mémoire d’OpenJUMP
Version 0.7 Amélioration du driver : il lit désormais correctement des polygones dont le trou est décrit avant le contour externe.