IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Eviter de comptabiliser des donn�es (d'un Geojson) en faisant une moyenne


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable des �tudes
    Inscrit en
    Septembre 2016
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Responsable des �tudes

    Informations forums :
    Inscription : Septembre 2016
    Messages : 23
    Par d�faut Eviter de comptabiliser des donn�es (d'un Geojson) en faisant une moyenne
    Bonjour � tous!

    J'ai cr�� une fonction pour calculer la moyenne de production de plusieurs parcelles
    Il y a cependant une erreur: en effet pour chaque parcelle j'obtiens bien un cumul de production selon le calendrier que j'ai d�fini. Puis je fais la somme de ces cumuls et le divise par le nombre de parcelles concern�es. Mais lorsqu'une parcelle n'a pas d'informations sur sa production (dans le geojson les param�tres de la courbe de production affichent NULL ou NaN), la fonction prend tout de m�me en compte cette parcelle: Pour 30 parcelles analys�es, 28 produisent 200 tonnes de bl� mais la moyenne divisent 200 tonnes par 30...ce qui n'est pas logique.
    Faut-il int�grer une fonction qui lit les lignes du GeoJson mais �vite de r�cup�rer les infos si c'est NULL? Si oui est-ce que cela �vitera que la parcelle ne soit comptabilis�e?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    function moyProd(){
        var calendrier...//ici j'ai créé un calendrier
        if(nbParcelles>0){
            var listeValeurProd = new Array(calendrier.length);//valeur Y pour chaque jour
            for(var p = 0; p<nbParcelles;p++)
            {
                var idParcelle = geojson_OGRGeoJSON.features[p]["properties"]["id"]; //info id de la parcelle
                var courbeProd = new Array(listeNomParametre.length); //tableau des param sigmo
                var cumulProdParcelle =-1;            //variable Total production pour une parcelle
            //Get Valeurs de la courbe depuis GeoJson
                for(var nomDuParametre=0; nomDuParametre < listeNomParametre.length; nomDuParametre++){
                    var Param = [listeNomParametre[nomDuParametre];
                    var testVal =geojson_OGRGeoJSON.features[p]["properties"][preParam];
                    if(testVal!= null || isNaN(testVal)!=false){
                        courbeProd[listeNomParametre[nomDuParametre]]=parseFloat(testVal);
     
                    }
     
                }
                listeValeurProd =courbe(calendrier, courbeProd);        //il ne faut pas que la prod soit NaN
                cumulProdParcelle = SommeValeurs(listeValeurProd,calendrier);  //cumul de la production pour une parcelle
                 try {
                        var x = cumulProdParcelle;
     
                            if(x == "") throw "empty";
                            if(isNaN(x)) throw "not a number";
                            x = Number(x);
                            resCumulTotal = resCumulTotal + cumulProdParcelle;
                        }
                        catch(err) {
                            console.log("Input is " + err );
                        }
            }
            return resCumulTotal / nbParcelles;  // cumul total des productions de toutes les parcelles/ nombre de parcelles concernées
        }
        else{
            return null;
        }

  2. #2
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    question de logique, quand tu �cris return resCumulTotal / nbParcelles, tu ne tiens pas compte du fait que la parcelle soit prise ou non en compte.

    Le plus simple est de g�rer un compteur de parcelles prises en compte, tu initialises une variable � 0 avant ta boucle
    � chaque prise en compte tu l'incr�mentes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    resCumulTotal = resCumulTotal + cumulProdParcelle;
    nbrCount += 1;
    et tu t'en sert dans ton calcul
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    if (nbrCount) {
        return resCumulTotal / nbrCount; // cumul total des productions de toutes les parcelles/ nombre de parcelles concernées
    }

  3. #3
    Membre averti
    Homme Profil pro
    Responsable des �tudes
    Inscrit en
    Septembre 2016
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Responsable des �tudes

    Informations forums :
    Inscription : Septembre 2016
    Messages : 23
    Par d�faut
    Bonjour

    Merci NoSmoking!! Je me doutais qu'il manquait quelque chose mais je partais dans une logique inverse: j'essayais de limiter les parcelles concern�es. Raisonnement bizarre je le conc�de.
    Le probl�me �tant en deux parties, je mets la deuxi�me question dans une autre discussion.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2003] Eviter la copie des donn�es avec la mise en forme
    Par mandrake57 dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 06/06/2011, 18h56
  2. R�ponses: 2
    Dernier message: 07/07/2010, 17h19
  3. Comptabiliser des donn�es dans des intervalles
    Par ithurts dans le forum Requ�tes
    R�ponses: 3
    Dernier message: 07/05/2010, 22h18
  4. R�ponses: 9
    Dernier message: 03/11/2006, 10h30
  5. R�ponses: 3
    Dernier message: 13/12/2004, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo