ATTENTION : les utilisateurs de la version 4.1 du Plug-In sont invités à lire la notice de mise à jour 4.1 vers 5.0 en fin de ce document.
INTRODUCTION
Cartes & Données, c'est en réalité deux éléments bien distincts : le
paramétrage et la fabrication de la carte, et la visualisation de la carte fabriquée. Articque vous offre
aujourd'hui la possibilité de dissocier les deux éléments, pour intégrer les traitements
cartographiques dans votre application, et ainsi concevoir l'interface utilisateur qui vous convient.
Pour cela, nous avons développé les Carto-EXTENSIONS. Historiquement le premier
élément de ces extensions est C&D Vision (1997). Il permet en effet, depuis une application de
bases de données par exemple, d'afficher une carte calculée à la volée. Puis sont apparus
le Plug-In pour 4D (1998), et l'ActiveX (1999), permettant une intégration directe de la carte, et
une programmation aisée. Fin 2003 nous sommes fiers de pouvoir vous proposer un Plug-In pour 4D MacOsX,
une librairie pour Java et C (Windows et Unix) et un nouveau produit Cartes & Données
Serveur destiné à être utilisé par un serveur web applicatif sous Windows,
MacOsX et Linux.
Ce document décrit le fonctionnement de toutes les déclinaisons de nos extensions car
leurs interfaces (API) sont quasiment identiques. Un petit logo permettra de distinguer les
spécificités de l'ActiveX , du Plug-In , de la librairie pour Java et C , ou du C&D serveur .
Cette documentation s'adresse aux développeurs :
- 4D
- Visual Basic
- Delphi
- Access
- Cognos
- Java
- C
- Jsp, Asp, Php etc.
- ...
De plus, pour bien comprendre le présent document et l'utilisation des extensions, il est indispensable de
connaître Cartes & Données.
MODES DE FONCTIONNEMENT
L'API est volontairement succinte. C'est parce que la programmation a été réduite à son
strict minimum. En réalité on ne programme pas les traitements cartographiques directement dans le
composant. On lui fournit tout simplement un organigramme ! Tout le travail a déjà été fait
dans Cartes & Données en quelques clics.
Bien sûr, l'API permet de modifier l'organigramme dynamiquement, mais l'effort est minime. Pour faire des
cartes avec les carto-extensions, il suffit donc de connaître Cartes & Données et son "Script". C'est grâce au Script que l'on peut modifier les paramètres. Le
développeur se promène dans l'arborescence des paramètres, et modifie uniquement ceux qui
l'intéressent.
Bref, si l'organigramme convient, il n'est pas nécessaire de programmer pour intégrer la
cartographie à votre application. Si par contre vous développez une interface complète
spécifique à vos besoins, vous pourrez en quelques lignes de code manipuler la carte à
volonté. Voici toutefois quelques recommandations générales avant de commencer :
L'ACTIVEX
L'ActiveX est un composant COM minimum permettant
l'affichage d'une carte dans une application supportant les ActiveX, en monoposte ou client/serveur.
L'ActiveX n'est pas publiable sur le web. Il ne faut pas
le mettre dans une page asp.
L'ActiveX n'est pas multi-thread et donc ne doit
être utilisé que dans le thread principal. Il n'est pas conseillé de l'utiliser sur un serveur
web.
LE PLUG-IN POUR 4D
Le Plug-In permet l'affichage d'une carte dans une
application 4D en monoposte ou en client/serveur (à partir de la version 6.7). Il permet la fabrication de carte
et l'affichage. Mais on ne peut pas publier directement le Plug-In sur le web.
Le Plug-In a une fonctionnalité
particulière : il sert également de lien entre le logiciel Cartes & Données et la base 4D.
Cela permet un échange dynamique des données entre les deux applications et donc une grande
liberté dans les développements.
Lorsqu'on développe une application avec le
Plug-In, on crée des objets appelés "INSTANCES", identifiés par leur nom. C'est aussi le nom de la
variable de formulaire. Mais on peut aussi créer des instances en dehors des formulaires. Il ne faut pas oublier
de détruire les instances dont on n'a plus besoin pour libérer la mémoire associée.
Grâce à ces instances, le développeur est libre de développer dans les situations les plus
complexes comme les plus simples. Lire attentivement la description de la fonction cd_destroy.
Il n'est pas conseillé d'utiliser le Plug-In dans
un serveur Web :
- Dans 4D version 6, la gestion des process est indépendante des thread systèmes. Donc il est
possible d'utiliser le plugin dans un serveur web, même si les performances sont loin de celles de Cartes &
Données SERVEUR.
- Lorsque 4D V7 sortira ce ne sera plus le cas, car cette version prévoit de séparer les process 4D
en threads. Il faudra donc alors restreindre les appels au plugin dans un seul thread.
- Il est très important de concevoir une routine qui nettoie les instances créées par les
process web.
LA LIBRAIRIE POUR JAVA et C
La librairie se présente sous la forme d'une DLL
sous windows et d'une Shared Library pour Linux et MacOsX. Elle n'est pas interactive, on ne peut utiliser que les
exports image et image-map (html).
La librairie n'est pas multi-thread et donc ne doit
être utilisée que dans le thread principal. Il n'est pas conseillé de l'utiliser sur un serveur
web.
IMPORTANT: (C uniquement) : Lors des retours de
fonctions, on obtient parfois une chaine de caractère "const char * ". La chaîne fournie appartient au
Carto-Extension, et ne doit pas être modifiée. De plus cette chaine n'est plus valable après le
prochain appel de fonction
Lire attentivement la description de la fonction cd_destroy pour la gestion des
instances.
Cartes & Données SERVEUR
Ce programme est destiné à fabriquer
les cartes pour un serveur Web. Il peut tourner sur la même machine ou sur une autre si un disque est
partagé en réseau.
Il est accessible depuis n'importe quel serveur
web, développé en n'importe quel langage, avec n'importe quel fournisseur. Il faut simplement que l'outil
web permette une communication TCPIP par socket. C'est le cas des serveurs Jsp, Asp, 4D, WebSphere, WebObjects, Php,
Tcl, CGI etc...
C&D Serveur fonctionne sous Windows, Linux et
MacOsX. Il utilise les threads pour gérer les accès simultanés, et a été
optimisé pour des réponses rapides.
Le protocole de communication est extrêmement
simple et est basé sur le langage XML. Une API d'accès est fournie en Java à titre d'exemple.
D'autres API seront développées ultérieurement.
LIMITATIONS DES CARTO-EXTENSIONS
- On ne peut ni ajouter de module, ni en enlever.
- Le nombre de module de visualisation doit être 1, ni plus ni moins. Cependant, on peut mettre plusieurs
instances dans un même formulaire.
- Les informations contenues dans les fenêtres de paramétrage de Cartes & Données (par
exemple la taille de la carte, les résultats de la boîte et moustaches, les résultats de
l'A.C.P...) ne sont disponibles que dans l'organigramme, et toutes n'y sont pas. Aucune fonction ne les fournit
directement. Les données calculées ne sont pas disponibles non plus.
- Les déplacement d'objets faits dans C&D ne sont pas mémorisés dans les carto-extensions
(pour optimiser les traitements).
- Un minimum de programmation et une bonne connaissance des Scripts C&D sont nécessaires à la
réalisation d'une application utilisant pleinement les carto-extensions. Cependant, grâce aux exemples
fournis, un débutant peut faire une représentation cartographique
très professionnelle.
Ajout de 7 nouvelles fonctions permettant d'exporter les cartes et les données, de modifier la connexion
entre les modules (et donc de changer l'ordre des couches)... :
- cd_savemap(module_name As String, vxf_path As String, ret As Short)
- cd_savedata(module_name As String, txt_path As String, ret As Short)
- cd_link(dad_module_name As String, son_module_name As String, ret As Short)
- cd_unlink(dad_module_name As String, son_module_name As String, ret As Short)
- cd_getmodlist(count As Long, list As String, ret As Short)
- cd_getmapids(module_name As String, list As String, ret As Short)
- cd_setvalue(color As String, ret As Short)
Les points importants de cette mise à jour sont les suivants :
- Suppression de la fonction cd_loadpalette : les symboles personnalisés sont maintenant contenus dans le
répertoire "symbols" que vous pouvez récupérer dans "Mes documents/articque/cd_5.0" sur Windows
("Documents/articque/cd_5.0" sur Mac OSX) et recopier au niveau de votre application (au même endroit que le
fichier passe.txt).
- 4 fonctions d'export supplémentaires : gif, pdf, emf (Windows uniquement), swf.
- La fonction d'export en postscript (cd_expps) nécessite 3 arguments supplémentaires : la largeur
(width) et la hauteur (height) de l'image à exporter ainsi que le texte à placer en haut de l'image
(banner).
Les points importants de cette mise à jour sont les suivants :
- Les légendes et les décorations (titre, échelle...) doivent être affichées et
exportées séparément
- Suppression de l'export Gif et Bmp
- Ajout de l'export Png et Jpeg
- Ajout d'un export "image-map" pour insertion dans une page html
- Ajout de fonctions pour mieux maîtriser les coordonnées image, le zoom etc.
- Utilisation du zoom dans l'export image
- Ajout du nom de l'instance dans toutes les fonctions (
sauf dans l'ActiveX)
- Standardisation des noms des fonctions en "set..." et "get..."
Il n'est plus utile d'appeler cd_create, mais cd_destroy reste
disponible pour libérer les ressources
- Les symboles personnalisés peuvent être placés n'importe où sur le disque et
chargés dynamiquement
La grande amélioration du Plug-In est la possibilité de gérer plusieurs cartes en même
temps, avec plusieurs instances. De ce fait, les applications écrites pour le Plug-In C&D Version 3.5 ne
fonctionneront pas avec les versions ultérieures. En effet, aucune instance n'aura été
créée. Pour faire fonctionner l'application, il faut exécuter une fois les fonctions
cd_create("nom") et cd_working("nom") avec "nom" = nom de la variable dans le formulaire 4D. S'il y a
plusieurs Plug-Ins avec plusieurs noms différents, il faudra répéter l'opération pour
chacun. S'il n'y a pas de formulaire contenant de Plug-In (appli web ou simple export), alors il faut choisir un nom
fictif et appeler ces fonctions une fois.
Les deux fonctions pourront être appelées au début dans la "Methode Base sur Ouverture" par
exemple.
Ensuite le fonctionnement est identique et le code écrit est valable. On pourra cependant simplifier les
applications qui contenaient plusieurs formulaires, car maintenant chaque carte est indépendante, et on pourra
même mettre plusieurs cartes dans le même formulaire.
|