Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 02 August 2018 15:20

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

ArcGIS Runtime Java - Afficher le contenu d'un champ avec domaine

Bonjour smile

Je code actuellement en Java avec ArcGIS Runtime SDK version 100.3 pour développer une application cliente et je me heurte au problème suivant :

Quelqu'un sait-il comment afficher non pas la valeur "brute" d'un champ mais la valeur correspondante à son domaine ?

Dans l'extrait de code ci-dessous, je ne vois pas comment récupérer la valeur codée du domaine d'un champ.

Code:

ServiceFeatureTable pSFT = new ServiceFeatureTable(props.getProperty("URL_service_1"));

final ListenableFuture<FeatureQueryResult> selectFuture = pSFT.queryFeaturesAsync(queryParams, ServiceFeatureTable.QueryFeatureFields.LOAD_ALL);

                selectFuture.addDoneListener(new Runnable() {

                    @Override
                    public void run() {
                        try {
                            Callout fenetre = mapView.getCallout();
                            fenetre.setStyle(props.getProperty("callOutCSS"));
                            fenetre.setTitle("Informations\n");
                            FeatureQueryResult result = selectFuture.get();
                            
                            Iterator<Feature> iterator = result.iterator();
                            Feature feature;
                            String attrContenu;
                            attrContenu = "";

                            while (iterator.hasNext()) {
                                feature = iterator.next();
                                Map<String, Object> attr = feature.getAttributes();
                                
                                Set<String> keys = attr.keySet();

                                for(int i = 0; i < champsDOPC.length; i++) {
                                    for (String key : keys) {
                                        Object value = attr.get(key);
                                        if (champsDOPC[i].equalsIgnoreCase(key)) {
                                            if (!(value == null)) {
                                                Domain pDom = compaDOPCMoyen.getField(key).getDomain();
                                                if (!(pDom == null)) {
                                                    System.out.println("Le champ " + key + " a comme domaine : " + pDom.getName());
                                                    
                                                    
                                                }
                                                attrContenu += key + " : " + value + "\n";
                                            }
                                        }
                                    }
                                }
                            }

                            if (!fenetre.isVisible()) {
                                fenetre.setDetail(attrContenu);
                                fenetre.showCalloutAt(curMapPoint, dureeCallOut);
                            } else
                                fenetre.dismiss();

                        } catch (Exception ex) {
                            //System.out.printf(ex.printStackTrace());
                        }

                    }
                });

Merci par avance pour votre aide smile

Bon après-midi

Dernière modification par janyv (Thu 02 August 2018 15:25)


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#2 Fri 03 August 2018 12:29

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: ArcGIS Runtime Java - Afficher le contenu d'un champ avec domaine

Bonjour,

Au cas où, voici une solution : il faut changer de classe (Domain->CodedValueDomain) :

Code:

...
                            while (iterator.hasNext()) {
                                feature = iterator.next();

                                Map<String, Object> attr = feature.getAttributes();

                                Set<String> keys = attr.keySet();

                                for(int i = 0; i < champsDOPC.length; i++) {
                                    for (String key : keys) {
                                        if (champsDOPC[i].equalsIgnoreCase(key)) {
                                            Object value = attr.get(key);
                                            if (!(value == null)) {
                                                Domain pDom = compaDOPCMoyen.getField(key).getDomain();
                                                if (!(pDom == null)) {
                                                    CodedValueDomain pCVC = (CodedValueDomain)pDom;
                                                    List<CodedValue> pListe = pCVC.getCodedValues();
                                                    String sValue;
                                                    sValue = "";
                                                    for(int j= 0; j < pListe.size(); j++) {
                                                        if (value.toString().equalsIgnoreCase(pListe.get(j).getCode().toString())) {
                                                            sValue = pListe.get(j).getName();
                                                            break;
                                                        }
                                                    }
                                                    attrContenu += key + " : " + sValue + "\n";
                                                } else {
                                                    attrContenu += key + " : " + value + "\n";
                                                }
                                            }
                                        }
                                    }
                                }
                            }
...

Bonne journée


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB