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; }
Partager