Pages: 1
- Sujet précédent - ArcGIS Runtime Java - Afficher le contenu d'un champ avec domaine - Sujet suivant
 
#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 ![]()
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 ![]()
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
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
Hors ligne
Pages: 1
- Sujet précédent - ArcGIS Runtime Java - Afficher le contenu d'un champ avec domaine - Sujet suivant
 


