diff --git a/classesphp/classe_alteraclasse.php b/classesphp/classe_alteraclasse.php index e8d9d34..d319940 100644 --- a/classesphp/classe_alteraclasse.php +++ b/classesphp/classe_alteraclasse.php @@ -272,6 +272,8 @@ $ignorar - valor que será ignorado na listagem final } $ncor = $novoestilo->color; $ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255))); + $ncor = $novoestilo->outlinecolor; + $ncor->setrgb(255,255,255); $classe->setexpression($expressao); $classe->set("name",$nomeclasse); $classe->set("title",($this->layer->name)."+".$i); @@ -282,6 +284,76 @@ $ignorar - valor que será ignorado na listagem final else {return ("erro. Nenhum valor numerico no item");} } + /* + function: quantil + + Cria classes em um objeto layer com intervalos baseados no calculo de quantil + + Parametros: + + $item - item da tabela de atributos + + $nclasses - número de classes + + $ignorar - valor que será ignorado na listagem final + */ + function quantil($item,$nclasses,$ignorar) + { + if(!$this->layer){return "erro";} + $valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar); + if (count($valores) > 0){ + //rotina obtida do pacote TME + sort($valores); + $valores = array_unique($valores); + $numValues = count($valores); + $classNum = $numValues / $nclasses; // Number in each class + for ($i = 0; $i < $nclasses; $i++) { + $position = (int)($classNum * $i); + $classBreaks[] = $valores[$position]; + } + $classBreaks[] = $valores[$numValues-1]; // Last class break = biggest value + //echo "
";var_dump($classBreaks);exit;
+			$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
+			for ($i=0; $i < $nclasses; ++$i){
+				$expressao = "(([".$item."]>".$classBreaks[$i].")and([".$item."]<=".$classBreaks[$i + 1]."))";
+				$nomeclasse = "> ".$classBreaks[$i]." e <= que ".($classBreaks[$i + 1]);
+				if($i == 0){
+					$expressao = "([".$item."]<=".$classBreaks[$i + 1].")";
+					$nomeclasse = "<= que ".($classBreaks[$i + 1]);
+				}
+				if($i == ($nclasses - 1)){
+					$expressao = "([".$item."] >=".$classBreaks[$i].")";
+					$nomeclasse = ">= que ".($classBreaks[$i]);
+				}
+				$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((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));
+				$ncor = $novoestilo->outlinecolor;
+				$ncor->setrgb(255,255,255);
+				$classe->setexpression($expressao);
+				$classe->set("name",$nomeclasse);
+				//$classe->set("title",($this->layer->name)."+".$i);
+			}
+			$this->layer->setMetaData("cache","");
+			return ("ok");
+		}
+		else{
+			return ("erro. Nenhum valor numerico no item");
+		}
+	}
 /*
 function: quartis
 
@@ -351,6 +423,8 @@ Include:
 				$classe->set("name",$nomeClasse);
 				$ncor = $novoestilo->color;
 				$ncor->setrgb(255,$vcor[$i],$vcor[$i]);
+				$ncor = $novoestilo->outlinecolor;
+				$ncor->setrgb(255,255,255);
 			}
 			$this->layer->setMetaData("cache","");
 			return ("ok");
@@ -426,6 +500,8 @@ $itemNome - item que será usado para definir os nomes das classes (por de
 			$estilo = $classes[$i]->getStyle(0);
 			$ncor = $estilo->color;
 			$ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));
+			$ncor = $estilo->outlinecolor;
+			$ncor->setrgb(255,255,255);
 			if ($this->layer->type == 0) //tipo ponto
 			{
 				$estilo->set("symbolname","ponto");
diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php
index 48d0d43..8899069 100644
--- a/classesphp/mapa_controle.php
+++ b/classesphp/mapa_controle.php
@@ -1081,6 +1081,8 @@ Altera uma classe de um tema, aplicando uma nova classificação ou 
 		{$retorno = $m->valorunico($item,$ignorar);}
 		if ($opcao == "intervalosiguais")
 		{$retorno = $m->intervalosiguais($item,$nclasses,$ignorar);}
+		if ($opcao == "quantil")
+		{$retorno = $m->quantil($item,$nclasses,$ignorar);}
 		if ($opcao == "quartis")
 		{
 			if(!isset($tipoLegenda))
diff --git a/ferramentas/legenda/index.js b/ferramentas/legenda/index.js
index 5094e5c..211ccd0 100644
--- a/ferramentas/legenda/index.js
+++ b/ferramentas/legenda/index.js
@@ -216,6 +216,7 @@ i3GEOF.legenda = {
 				{onclick:{fn: i3GEOF.legenda.valorC}}
 			);
 			$i("i3GEOlegendabotao8-button").style.width = "200px";
+
 			new YAHOO.widget.Button(
 				"i3GEOlegendabotao9",
 				{onclick:{fn: i3GEOF.legenda.valorQ}}
@@ -223,6 +224,12 @@ i3GEOF.legenda = {
 			$i("i3GEOlegendabotao9-button").style.width = "200px";
 
 			new YAHOO.widget.Button(
+				"i3GEOlegendabotaoQuantil",
+				{onclick:{fn: i3GEOF.legenda.valorQu}}
+			);
+			$i("i3GEOlegendabotaoQuantil-button").style.width = "200px";
+
+			new YAHOO.widget.Button(
 				"i3GEOlegendabotao10",
 				{onclick:{fn: i3GEOF.legenda.aplicaEstilo}}
 			);
@@ -394,6 +401,7 @@ i3GEOF.legenda = {
 		'	

Número de classes:'+ $inputText("","","i3GEOlegendanclasses","",3,"5") + '

'+ + '  '+ '


Cria classes para um item numérico utilizando os quartis (o item utilizado é o mesmo indicado acima)

'+ '

'+ '

Estilo dos nomes das classes: ' + @@ -1097,6 +1105,35 @@ i3GEOF.legenda = { catch(e){i3GEO.janela.tempoMsg("Erro: "+ e);i3GEOF.legenda.aguarde.visibility = "hidden";} }, /* + Function: valorQu + + Altera a leganda do tema por meio do calculo de quantis + + Veja: + + + */ + valorQu: function(){ + try{ + if(i3GEOF.legenda.aguarde.visibility === "visible") + {return;} + var item = $i("i3GEOlegendaSelItem").value, + nclasses = $i("i3GEOlegendanclasses").value, + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=alteraclasse&nclasses="+nclasses+"&tema="+i3GEOF.legenda.tema+"&item="+item+"&opcao=quantil&ignorar="+$i("i3GEOlegendaignorar").value+"&ext="+i3GEO.parametros.mapexten, + cp = new cpaint(), + fim = function(){ + i3GEOF.legenda.aposAlterarLegenda(); + i3GEOF.legenda.aguarde.visibility = "hidden"; + }; + if (item == "") + {i3GEO.janela.tempoMsg("Selecione um item!");return;} + 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: representacao Altera o tipo de representação do tema (linear ou poligonoal) -- libgit2 0.21.2