diff --git a/classesphp/classe_alteraclasse.php b/classesphp/classe_alteraclasse.php index 9cf7d78..3551ee6 100644 --- a/classesphp/classe_alteraclasse.php +++ b/classesphp/classe_alteraclasse.php @@ -321,15 +321,15 @@ class Alteraclasse } /* function: metade - + Classifica os dados em duas classes, a primeira concentra os registros que somados correspondem à primeira metade do total e a segunda classe corresponde à segunda metade - + Parametros: - + $item - item da tabela de atributos - + $itemid - item que identifica unicamente cada registro - + $ignorar - valor que será ignorado na listagem final */ function metade($item,$itemid,$ignorar) @@ -423,6 +423,75 @@ class Alteraclasse } } /* + function: classemedia + + Classifica os dados em duas classes, a primeira concentra os registros que estão abaixo da média e a segunda aqueles que são iguais ou superiores a média + + Parametros: + + $item - item da tabela de atributos + + $ignorar - valor que será ignorado na listagem final + */ + function classemedia($item,$ignorar) + { + if(!$this->layer){ + return "erro"; + } + $valores = $this->pegaValores($this->mapa,$this->layer,$item,false,$ignorar); + + if (count($valores) > 0){ + $media = array_sum($valores) / count($valores); + + $numclassesatual = $this->layer->numclasses; + //apaga todas as classes existentes + $classetemp = $this->layer->getClass(0); + $estilotemp = $classetemp->getStyle(0); + for ($i=0; $i < $numclassesatual; ++$i){ + $classe = $this->layer->getClass($i); + $classe->set("status",MS_DELETE); + } + //adiciona as classes novas + $expressao = "([".$item."]<".$media.")"; + $nomeclasse = "< media ".$media; + $classe = ms_newClassObj($this->layer); + + $novoestilo = ms_newStyleObj($classe); + if ($this->layer->type == 0){ + $novoestilo->set("symbolname","ponto"); + $novoestilo->set("size","6"); + } + $ncor = $novoestilo->color; + $ncor->setrgb(200,183,134); + $ncor = $novoestilo->outlinecolor; + $ncor->setrgb(255,255,255); + $classe->setexpression($expressao); + $classe->set("name",$nomeclasse); + + $expressao = "([".$item."]>=".$media.")"; + $nomeclasse = ">= media ".$media; + $classe = ms_newClassObj($this->layer); + + $novoestilo = ms_newStyleObj($classe); + if ($this->layer->type == 0){ + $novoestilo->set("symbolname","ponto"); + $novoestilo->set("size","6"); + } + $ncor = $novoestilo->color; + $ncor->setrgb(210,100,100); + $ncor = $novoestilo->outlinecolor; + $ncor->setrgb(255,255,255); + $classe->setexpression($expressao); + $classe->set("name",$nomeclasse); + + $this->layer->setMetaData("cache",""); + return ("ok"); + } + else{ + return ("erro. Nenhum valor numerico no item"); + } + } + /* function: quantil Cria classes em um objeto layer com intervalos baseados no calculo de quantil diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index d5ebd7d..0e98de1 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -1218,6 +1218,9 @@ switch (strtoupper($funcao)) if ($opcao == "metade"){ $retorno = $m->metade($item,$itemid,$ignorar); } + if ($opcao == "media"){ + $retorno = $m->classemedia($item,$ignorar); + } if ($opcao == "quartis"){ if(!isset($tipoLegenda)) { @@ -2346,7 +2349,7 @@ switch (strtoupper($funcao)) Valor: LISTAINTERFACES Lista as interfaces de abertura de mapas - + Pesquisa na pasta interfaces e na pasta definida em $customDir */ case "LISTAINTERFACES": diff --git a/ferramentas/legenda/dicionario.js b/ferramentas/legenda/dicionario.js index 684dfd4..b3dd863 100644 --- a/ferramentas/legenda/dicionario.js +++ b/ferramentas/legenda/dicionario.js @@ -779,5 +779,19 @@ i3GEOF.legenda.dicionario = en : "", es : "" } - ] + ], + "media" : [ + { + pt : "Média", + en : "", + es : "" + } + ], + "duasmedias" : [ + { + pt : "Classifica os dados em duas classes, a primeira concentra os registros que estão abaixo da média e a segunda aqueles que são iguais ou superiores a média", + en : "", + es : "" + } + ] }; diff --git a/ferramentas/legenda/index.js b/ferramentas/legenda/index.js index 9667313..8d852ef 100644 --- a/ferramentas/legenda/index.js +++ b/ferramentas/legenda/index.js @@ -222,6 +222,12 @@ i3GEOF.legenda = } }); b.addClass("rodar"); + b = new YAHOO.widget.Button("i3GEOlegendabotaoMedia", { + onclick : { + fn : i3GEOF.legenda.media + } + }); + b.addClass("rodar"); b = new YAHOO.widget.Button("i3GEOlegendabotao7", { onclick : { fn : i3GEOF.legenda.representacao @@ -366,6 +372,9 @@ i3GEOF.legenda = if ($i("i3GEOlegendaitensMetadeId")) { $i("i3GEOlegendaitensMetadeId").innerHTML = retorno.dados; } + if ($i("i3GEOlegendaitensMedia")) { + $i("i3GEOlegendaitensMedia").innerHTML = retorno.dados; + } if ($i("i3GEOlegendaitensValorClass")) { $i("i3GEOlegendaitensValorClass").innerHTML = retorno.dados; } @@ -1348,7 +1357,6 @@ i3GEOF.legenda = } var item = $i("i3GEOlegendaitensMetade").getElementsByTagName("select")[0].value, itemid = $i("i3GEOlegendaitensMetadeId").getElementsByTagName("select")[0].value, - ext = i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten), p = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid=" + i3GEO.configura.sid + "&funcao=alteraclasse" @@ -1359,9 +1367,7 @@ i3GEOF.legenda = + "&itemid=" + itemid + "&opcao=metade&ignorar=" - + $i("i3GEOlegendaignorar").value - + "&ext=" - + ext, + + $i("i3GEOlegendaignorar").value, cp = new cpaint(), fim = function() { i3GEOF.legenda.aposAlterarLegenda(); @@ -1389,6 +1395,52 @@ i3GEOF.legenda = } }, /* + * Function: media + * + * Duas classes considerando a media + * + * Veja: + * + * + */ + media : function() { + try { + if (i3GEOF.legenda.aguarde.visibility === "visible") { + return; + } + var item = $i("i3GEOlegendaitensMedia").getElementsByTagName("select")[0].value, + p = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid=" + + i3GEO.configura.sid + + "&funcao=alteraclasse" + + "&tema=" + + i3GEOF.legenda.tema + + "&item=" + + item + + "&opcao=media&ignorar=" + + $i("i3GEOlegendaignorar").value, + cp = new cpaint(), + fim = function() { + i3GEOF.legenda.aposAlterarLegenda(); + i3GEOF.legenda.aguarde.visibility = "hidden"; + }; + if (item == "") { + i3GEO.janela.tempoMsg("Selecione um item!"); + return; + } + if ($i("i3GEOFlegendaaplicaextent").checked === true) { + p += "&ext=" + i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten); + } else { + p += "&ext=" + i3GEO.util.extOSM2Geo(i3GEO.parametros.extentTotal); + } + i3GEOF.legenda.aguarde.visibility = "visible"; + cp.set_response_type("JSON"); + cp.call(p, "alteraclasse", fim); + } catch (e) { + i3GEO.janela.tempoMsg("Erro: " + e); + i3GEOF.legenda.aguarde.visibility = "hidden"; + } + }, + /* * Function: valorQ * * Altera a leganda do tema claculando as classes pelo método quartil diff --git a/ferramentas/legenda/template_mst.html b/ferramentas/legenda/template_mst.html index e61277e..d53dbf9 100644 --- a/ferramentas/legenda/template_mst.html +++ b/ferramentas/legenda/template_mst.html @@ -200,6 +200,16 @@
+ {{{media}}} +

{{{duasmedias}}}

+
+
+

+ +

+
+
+
{{{calcularQuartil}}}

{{{criaQuartis}}}

-- libgit2 0.21.2