banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 03 June 2008 10:22

Cwouam
Juste Inscrit !
Date d'inscription: 3 Jun 2008
Messages: 2

[ArcGIS Server 9.3RC] Exporter une légende en Java

Bonjour,

Je travaille avec ArcGIS Server 9.3RC en Java, et je souhaiterais exporter la carte et sa légende sous la forme d'images. Pour la carte, pas trop de soucis, mais pour la légende cela semble plus difficile...
Au fil de mes recherches j'ai trouvé un bout de code en .Net que j'ai retranscrit en Java. Le problème c'est qu'à la ligne ou je crée l'ImageType, l'exécution du code me renvoie une AutomationExeption, et j'ai beau chercher, je ne vois pas la source du problème.

Si quelqu'un connaitrait la source de cette exception, ou disposerait d'une solution alternative plus efficace ou plus simple, je suis preneur smile

Veuillez trouver ci-dessous le code en question.

Merci d'avance pour votre aide !

Code:

public static IImageResult getLegendImage(MapServer mapServer)
            throws UnknownHostException, IOException {
        IImageResult imageResult = null;

        // Récupération de la légende
        IMap map = mapServer.getMap(mapServer.getDefaultMapName());
        UID uid = new UID();
        uid.setValue("esriCarto.Legend");
        ILegend legendValue = (ILegend) map.createMapSurround(uid, null);

        // Step 1: Set image description (used for the legend image to be
        // generated)
        // Image type
        IImageType imageType = new ImageType(); // Ligne à laquelle est levée l'AutomationException
        imageType.setFormat(esriImageFormat.esriImageJPG);
        imageType.setReturnType(esriImageReturnType.esriImageReturnURL);
        // Image Display
        IImageDisplay imageDisp = new ImageDisplay();
        imageDisp.setHeight(0);
        imageDisp.setWidth(150);
        imageDisp.setDeviceResolution(96);
        // Image Description
        IImageDescription imageDesc = new ImageDescription();
        imageDesc.setType(imageType);
        imageDesc.setDisplay(imageDisp);

        // Step 2: Set map display (used to calculate scale dependent layer
        // visibility in the legend
        IImageDisplay mapDisplay = new ImageDisplay();
        mapDisplay.setHeight(500);
        mapDisplay.setWidth(500);
        mapDisplay.setDeviceResolution(96);

        // Export legend
        IMapServerLayout mapServerLayout = (IMapServerLayout) mapServer;
        imageResult = mapServerLayout.exportLegend(legendValue,
                (IMapDescription) null, mapDisplay, null, imageDesc);

        return imageResult;
    }

Hors ligne

 

#2 Wed 04 June 2008 12:01

Cwouam
Juste Inscrit !
Date d'inscription: 3 Jun 2008
Messages: 2

Re: [ArcGIS Server 9.3RC] Exporter une légende en Java

Après de plus amples recherches, j'ai finalement trouvé la solution. A toutes fins utiles la voici :

En fait il fallait utiliser le ServerContext pour créer une instance des objets qui me posaient problème.

Pour récupérer le ServerContext :

Code:

AGSLocalMapResource agsMapRes = (AGSLocalMapResource) webContext
            .getResources().get("nom_AGS_ressource");
IServerContext serverContext = agsMapRes.getServerContext();

Pour instancier les objets :

Code:

IImageType imageType = (ImageType) serverContext
            .createObject("esriCarto.ImageType");

Et voilà !

Hors ligne

 

Pied de page des forums

Powered by FluxBB