Commit a63b125eb5db9559b3ea15b20b41df13d3178d18
1 parent
7595060e
Exists in
master
and in
7 other branches
Classificador pela média
Showing
5 changed files
with
159 additions
and
11 deletions
Show diff stats
classesphp/classe_alteraclasse.php
... | ... | @@ -321,15 +321,15 @@ class Alteraclasse |
321 | 321 | } |
322 | 322 | /* |
323 | 323 | function: metade |
324 | - | |
324 | + | |
325 | 325 | 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 |
326 | - | |
326 | + | |
327 | 327 | Parametros: |
328 | - | |
328 | + | |
329 | 329 | $item - item da tabela de atributos |
330 | - | |
330 | + | |
331 | 331 | $itemid - item que identifica unicamente cada registro |
332 | - | |
332 | + | |
333 | 333 | $ignorar - valor que será ignorado na listagem final |
334 | 334 | */ |
335 | 335 | function metade($item,$itemid,$ignorar) |
... | ... | @@ -423,6 +423,75 @@ class Alteraclasse |
423 | 423 | } |
424 | 424 | } |
425 | 425 | /* |
426 | + function: classemedia | |
427 | + | |
428 | + 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 | |
429 | + | |
430 | + Parametros: | |
431 | + | |
432 | + $item - item da tabela de atributos | |
433 | + | |
434 | + $ignorar - valor que será ignorado na listagem final | |
435 | + */ | |
436 | + function classemedia($item,$ignorar) | |
437 | + { | |
438 | + if(!$this->layer){ | |
439 | + return "erro"; | |
440 | + } | |
441 | + $valores = $this->pegaValores($this->mapa,$this->layer,$item,false,$ignorar); | |
442 | + | |
443 | + if (count($valores) > 0){ | |
444 | + $media = array_sum($valores) / count($valores); | |
445 | + | |
446 | + $numclassesatual = $this->layer->numclasses; | |
447 | + //apaga todas as classes existentes | |
448 | + $classetemp = $this->layer->getClass(0); | |
449 | + $estilotemp = $classetemp->getStyle(0); | |
450 | + for ($i=0; $i < $numclassesatual; ++$i){ | |
451 | + $classe = $this->layer->getClass($i); | |
452 | + $classe->set("status",MS_DELETE); | |
453 | + } | |
454 | + //adiciona as classes novas | |
455 | + $expressao = "([".$item."]<".$media.")"; | |
456 | + $nomeclasse = "< media ".$media; | |
457 | + $classe = ms_newClassObj($this->layer); | |
458 | + | |
459 | + $novoestilo = ms_newStyleObj($classe); | |
460 | + if ($this->layer->type == 0){ | |
461 | + $novoestilo->set("symbolname","ponto"); | |
462 | + $novoestilo->set("size","6"); | |
463 | + } | |
464 | + $ncor = $novoestilo->color; | |
465 | + $ncor->setrgb(200,183,134); | |
466 | + $ncor = $novoestilo->outlinecolor; | |
467 | + $ncor->setrgb(255,255,255); | |
468 | + $classe->setexpression($expressao); | |
469 | + $classe->set("name",$nomeclasse); | |
470 | + | |
471 | + $expressao = "([".$item."]>=".$media.")"; | |
472 | + $nomeclasse = ">= media ".$media; | |
473 | + $classe = ms_newClassObj($this->layer); | |
474 | + | |
475 | + $novoestilo = ms_newStyleObj($classe); | |
476 | + if ($this->layer->type == 0){ | |
477 | + $novoestilo->set("symbolname","ponto"); | |
478 | + $novoestilo->set("size","6"); | |
479 | + } | |
480 | + $ncor = $novoestilo->color; | |
481 | + $ncor->setrgb(210,100,100); | |
482 | + $ncor = $novoestilo->outlinecolor; | |
483 | + $ncor->setrgb(255,255,255); | |
484 | + $classe->setexpression($expressao); | |
485 | + $classe->set("name",$nomeclasse); | |
486 | + | |
487 | + $this->layer->setMetaData("cache",""); | |
488 | + return ("ok"); | |
489 | + } | |
490 | + else{ | |
491 | + return ("erro. Nenhum valor numerico no item"); | |
492 | + } | |
493 | + } | |
494 | + /* | |
426 | 495 | function: quantil |
427 | 496 | |
428 | 497 | Cria classes em um objeto layer com intervalos baseados no calculo de quantil | ... | ... |
classesphp/mapa_controle.php
... | ... | @@ -1218,6 +1218,9 @@ switch (strtoupper($funcao)) |
1218 | 1218 | if ($opcao == "metade"){ |
1219 | 1219 | $retorno = $m->metade($item,$itemid,$ignorar); |
1220 | 1220 | } |
1221 | + if ($opcao == "media"){ | |
1222 | + $retorno = $m->classemedia($item,$ignorar); | |
1223 | + } | |
1221 | 1224 | if ($opcao == "quartis"){ |
1222 | 1225 | if(!isset($tipoLegenda)) |
1223 | 1226 | { |
... | ... | @@ -2346,7 +2349,7 @@ switch (strtoupper($funcao)) |
2346 | 2349 | Valor: LISTAINTERFACES |
2347 | 2350 | |
2348 | 2351 | Lista as interfaces de abertura de mapas |
2349 | - | |
2352 | + | |
2350 | 2353 | Pesquisa na pasta interfaces e na pasta definida em $customDir |
2351 | 2354 | */ |
2352 | 2355 | case "LISTAINTERFACES": | ... | ... |
ferramentas/legenda/dicionario.js
... | ... | @@ -779,5 +779,19 @@ i3GEOF.legenda.dicionario = |
779 | 779 | en : "", |
780 | 780 | es : "" |
781 | 781 | } |
782 | - ] | |
782 | + ], | |
783 | + "media" : [ | |
784 | + { | |
785 | + pt : "Média", | |
786 | + en : "", | |
787 | + es : "" | |
788 | + } | |
789 | + ], | |
790 | + "duasmedias" : [ | |
791 | + { | |
792 | + 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", | |
793 | + en : "", | |
794 | + es : "" | |
795 | + } | |
796 | + ] | |
783 | 797 | }; | ... | ... |
ferramentas/legenda/index.js
... | ... | @@ -222,6 +222,12 @@ i3GEOF.legenda = |
222 | 222 | } |
223 | 223 | }); |
224 | 224 | b.addClass("rodar"); |
225 | + b = new YAHOO.widget.Button("i3GEOlegendabotaoMedia", { | |
226 | + onclick : { | |
227 | + fn : i3GEOF.legenda.media | |
228 | + } | |
229 | + }); | |
230 | + b.addClass("rodar"); | |
225 | 231 | b = new YAHOO.widget.Button("i3GEOlegendabotao7", { |
226 | 232 | onclick : { |
227 | 233 | fn : i3GEOF.legenda.representacao |
... | ... | @@ -366,6 +372,9 @@ i3GEOF.legenda = |
366 | 372 | if ($i("i3GEOlegendaitensMetadeId")) { |
367 | 373 | $i("i3GEOlegendaitensMetadeId").innerHTML = retorno.dados; |
368 | 374 | } |
375 | + if ($i("i3GEOlegendaitensMedia")) { | |
376 | + $i("i3GEOlegendaitensMedia").innerHTML = retorno.dados; | |
377 | + } | |
369 | 378 | if ($i("i3GEOlegendaitensValorClass")) { |
370 | 379 | $i("i3GEOlegendaitensValorClass").innerHTML = retorno.dados; |
371 | 380 | } |
... | ... | @@ -1348,7 +1357,6 @@ i3GEOF.legenda = |
1348 | 1357 | } |
1349 | 1358 | var item = $i("i3GEOlegendaitensMetade").getElementsByTagName("select")[0].value, |
1350 | 1359 | itemid = $i("i3GEOlegendaitensMetadeId").getElementsByTagName("select")[0].value, |
1351 | - ext = i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten), | |
1352 | 1360 | p = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid=" |
1353 | 1361 | + i3GEO.configura.sid |
1354 | 1362 | + "&funcao=alteraclasse" |
... | ... | @@ -1359,9 +1367,7 @@ i3GEOF.legenda = |
1359 | 1367 | + "&itemid=" |
1360 | 1368 | + itemid |
1361 | 1369 | + "&opcao=metade&ignorar=" |
1362 | - + $i("i3GEOlegendaignorar").value | |
1363 | - + "&ext=" | |
1364 | - + ext, | |
1370 | + + $i("i3GEOlegendaignorar").value, | |
1365 | 1371 | cp = new cpaint(), |
1366 | 1372 | fim = function() { |
1367 | 1373 | i3GEOF.legenda.aposAlterarLegenda(); |
... | ... | @@ -1389,6 +1395,52 @@ i3GEOF.legenda = |
1389 | 1395 | } |
1390 | 1396 | }, |
1391 | 1397 | /* |
1398 | + * Function: media | |
1399 | + * | |
1400 | + * Duas classes considerando a media | |
1401 | + * | |
1402 | + * Veja: | |
1403 | + * | |
1404 | + * <ALTERACLASSE> | |
1405 | + */ | |
1406 | + media : function() { | |
1407 | + try { | |
1408 | + if (i3GEOF.legenda.aguarde.visibility === "visible") { | |
1409 | + return; | |
1410 | + } | |
1411 | + var item = $i("i3GEOlegendaitensMedia").getElementsByTagName("select")[0].value, | |
1412 | + p = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid=" | |
1413 | + + i3GEO.configura.sid | |
1414 | + + "&funcao=alteraclasse" | |
1415 | + + "&tema=" | |
1416 | + + i3GEOF.legenda.tema | |
1417 | + + "&item=" | |
1418 | + + item | |
1419 | + + "&opcao=media&ignorar=" | |
1420 | + + $i("i3GEOlegendaignorar").value, | |
1421 | + cp = new cpaint(), | |
1422 | + fim = function() { | |
1423 | + i3GEOF.legenda.aposAlterarLegenda(); | |
1424 | + i3GEOF.legenda.aguarde.visibility = "hidden"; | |
1425 | + }; | |
1426 | + if (item == "") { | |
1427 | + i3GEO.janela.tempoMsg("Selecione um item!"); | |
1428 | + return; | |
1429 | + } | |
1430 | + if ($i("i3GEOFlegendaaplicaextent").checked === true) { | |
1431 | + p += "&ext=" + i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten); | |
1432 | + } else { | |
1433 | + p += "&ext=" + i3GEO.util.extOSM2Geo(i3GEO.parametros.extentTotal); | |
1434 | + } | |
1435 | + i3GEOF.legenda.aguarde.visibility = "visible"; | |
1436 | + cp.set_response_type("JSON"); | |
1437 | + cp.call(p, "alteraclasse", fim); | |
1438 | + } catch (e) { | |
1439 | + i3GEO.janela.tempoMsg("Erro: " + e); | |
1440 | + i3GEOF.legenda.aguarde.visibility = "hidden"; | |
1441 | + } | |
1442 | + }, | |
1443 | + /* | |
1392 | 1444 | * Function: valorQ |
1393 | 1445 | * |
1394 | 1446 | * Altera a leganda do tema claculando as classes pelo método quartil | ... | ... |
ferramentas/legenda/template_mst.html
... | ... | @@ -200,6 +200,16 @@ |
200 | 200 | </fieldset> |
201 | 201 | <br> |
202 | 202 | <fieldset style='padding: 5px; margin: 2px;'> |
203 | + <legend>{{{media}}}</legend> | |
204 | + <p class='paragrafo'>{{{duasmedias}}}</p> | |
205 | + <div id='i3GEOlegendaitensMedia' class='styled-select'></div> | |
206 | + <br> | |
207 | + <p class='paragrafo'> | |
208 | + <input id='i3GEOlegendabotaoMedia' size='25' type='button' value='{{{aplicar}}}' /> | |
209 | + </p> | |
210 | + </fieldset> | |
211 | + <br> | |
212 | + <fieldset style='padding: 5px; margin: 2px;'> | |
203 | 213 | <legend>{{{calcularQuartil}}}</legend> |
204 | 214 | <p class='paragrafo'>{{{criaQuartis}}}</p> |
205 | 215 | <div id='i3GEOlegendaitensValorQuartil' class='styled-select'></div> | ... | ... |