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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#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