#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
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