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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoRezo est partenaire institutionnel de la Conférence Francophone ESRI

image sig2019

16 et 17 octobre 2019 aux Docks de Paris

#1 Thu 02 August 2018 15:20

janyv
Membre
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 340

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
Membre
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 340

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

Partagez  |