Commit 574fbff43208c2d1147e79af84025a284eb70797

Authored by Edmar Moretti
1 parent d7d8bbf3

Correção nas funções de busca para corrigir problemas com acentuação e projeção

Showing 2 changed files with 203 additions and 160 deletions   Show diff stats
classesphp/classe_atributos.php
... ... @@ -705,28 +705,31 @@ class Atributos
705 705 if ($filtro != ""){
706 706 $l->setfilter("");
707 707 }
708   - $b = "ÁÃÕÓÔáãâàóõôòúûíêéç";
709   - $trocas = "AAOOOaaaaoooouuieecAAOOOaaaaoooouuieecAAOOOaaaaoooouuieec";
710   - $buscas = b.(html_entity_decode($b,ENT_NOQUOTES,'UTF8')).(html_entity_decode($b,ENT_NOQUOTES,'ISO8859-1'));
711 708 $sopen = $l->open();
712 709 if($sopen == MS_FAILURE){
713 710 return "erro";
714 711 }
  712 + $ret = $this->mapa->extent;
  713 + /*
715 714 $prjMapa = $this->mapa->getProjection();
716 715 $prjTema = $l->getProjection();
717   - $ret = $this->mapa->extent;
718   - if (($prjTema != "") && ($prjMapa != $prjTema)) {
  716 + if ($prjTema != ""){
719 717 $projInObj = ms_newprojectionobj($prjTema);
720 718 $projOutObj = ms_newprojectionobj($prjMapa);
  719 + }
  720 + */
  721 + /*
  722 + if (($prjTema != "") && ($prjMapa != $prjTema)) {
721 723 $status = $ret->project($projInObj, $projOutObj);
722 724 if($status !== MS_SUCCESS){
723 725 $ret = $this->mapa->extent;
724 726 }
725 727 }
726   -
  728 + */
727 729 $fr = array();
728 730 if (@$l->queryByrect($ret) == MS_SUCCESS){
729 731 $res_count = $l->getNumresults();
  732 + $palavra = $this->remove_accents(strtolower($palavra));
730 733 for ($i = 0; $i < $res_count; ++$i) {
731 734 $valitem = array();
732 735 if($this->v == 6){
... ... @@ -742,8 +745,10 @@ class Atributos
742 745 $r = array();
743 746 foreach ($items as $item){
744 747 $v = trim($shape->values[$item]);
  748 + $nv = $this->remove_accents(strtolower($v));
  749 + //echo $v." - ".$nv."<br>";
745 750 if ($tipo == "exata"){
746   - if ($v == $palavra || (strtr($v,$buscas,$trocas) == strtr($palavra,$buscas,$trocas)))
  751 + if ($nv == $palavra)
747 752 {
748 753 if($convC == true)
749 754 {
... ... @@ -754,7 +759,7 @@ class Atributos
754 759 }
755 760 }
756 761 else{
757   - if (strtolower($v) == strtolower($palavra) || (stristr(strtr(strtolower($v),$buscas,$trocas),strtr(strtolower($palavra),$buscas,$trocas)))){
  762 + if (stristr($nv,$palavra)){
758 763 if($convC == true){
759 764 $v = $this->converte($v);
760 765 }
... ... @@ -765,9 +770,11 @@ class Atributos
765 770 }
766 771 if ($encontrado == "sim"){
767 772 $ret = $this->extensaoShape($shape,$l);
  773 + /*
768 774 if (($prjTema != "") && ($prjMapa != $prjTema)){
769 775 $ret->project($projInObj, $projOutObj);
770 776 }
  777 + */
771 778 $novoreg["box"] = $ret;
772 779 $novoreg["valores"] = $r;
773 780 $encontrado = "nao";
... ... @@ -776,55 +783,6 @@ class Atributos
776 783 }
777 784 $resultado[] = array("tema"=>$tema,"resultado"=>$fr);
778 785 }
779   - /*
780   - $teste = $l->whichShapes($ret);
781   - if($teste){
782   - $fr = array();
783   - while ($shape = $l->nextShape())
784   - {
785   - $novoreg = array();
786   - $r = array();
787   - foreach ($items as $item)
788   - {
789   - $v = trim($shape->values[$item]);
790   - echo $v;
791   - if ($tipo == "exata")
792   - {
793   - if (strtr($v,$buscas,$trocas) == strtr($palavra,$buscas,$trocas))
794   - {
795   - if($convC == true)
796   - {$v = $this->converte($v);}
797   - $r[] = array("item" => $item,"valor" => $v);
798   - $encontrado = "sim";
799   - }
800   - }
801   - else
802   - {
803   -
804   - if (stristr(strtr($v,$buscas,$trocas),strtr($palavra,$buscas,$trocas)))
805   - {
806   - if($convC == true)
807   - {$v = $this->converte($v);}
808   - $r[] = array("item" => $item,"valor" => $v);
809   - $encontrado = "sim";
810   - }
811   - }
812   - }
813   - if ($encontrado == "sim")
814   - {
815   - $ret = $this->extensaoShape($shape,$l);
816   - if (($prjTema != "") && ($prjMapa != $prjTema))
817   - {$ret->project($projInObj, $projOutObj);}
818   - $novoreg["box"] = $ret;
819   - $novoreg["valores"] = $r;
820   - $encontrado = "nao";
821   - $fr[] = $novoreg;
822   - }
823   - }
824   - $resultado[] = array("tema"=>$tema,"resultado"=>$fr);
825   - $l->close();
826   - }
827   - */
828 786 }
829 787 return($resultado);
830 788 }
... ... @@ -2474,5 +2432,146 @@ class Atributos
2474 2432 }
2475 2433 return $texto;
2476 2434 }
  2435 + function remove_accents($string) {
  2436 + if (!preg_match('/[\x80-\xff]/', $string))
  2437 + return $string;
  2438 + if ($this->seems_utf8($string)) {
  2439 + $chars = array(
  2440 + // Decompositions for Latin-1 Supplement
  2441 + chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
  2442 + chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
  2443 + chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
  2444 + chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
  2445 + chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
  2446 + chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
  2447 + chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
  2448 + chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
  2449 + chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
  2450 + chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
  2451 + chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
  2452 + chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
  2453 + chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
  2454 + chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
  2455 + chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
  2456 + chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
  2457 + chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
  2458 + chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
  2459 + chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
  2460 + chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
  2461 + chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
  2462 + chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
  2463 + chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
  2464 + chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
  2465 + chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
  2466 + chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
  2467 + chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
  2468 + chr(195).chr(191) => 'y',
  2469 + // Decompositions for Latin Extended-A
  2470 + chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
  2471 + chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
  2472 + chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
  2473 + chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
  2474 + chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
  2475 + chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
  2476 + chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
  2477 + chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
  2478 + chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
  2479 + chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
  2480 + chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
  2481 + chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
  2482 + chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
  2483 + chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
  2484 + chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
  2485 + chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
  2486 + chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
  2487 + chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
  2488 + chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
  2489 + chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
  2490 + chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
  2491 + chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
  2492 + chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
  2493 + chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
  2494 + chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
  2495 + chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
  2496 + chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
  2497 + chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
  2498 + chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
  2499 + chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
  2500 + chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
  2501 + chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
  2502 + chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
  2503 + chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
  2504 + chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
  2505 + chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
  2506 + chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
  2507 + chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
  2508 + chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
  2509 + chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
  2510 + chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
  2511 + chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
  2512 + chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
  2513 + chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
  2514 + chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
  2515 + chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
  2516 + chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
  2517 + chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
  2518 + chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
  2519 + chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
  2520 + chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
  2521 + chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
  2522 + chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
  2523 + chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
  2524 + chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
  2525 + chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
  2526 + chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
  2527 + chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
  2528 + chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
  2529 + chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
  2530 + chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
  2531 + chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
  2532 + chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
  2533 + chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
  2534 + // Euro Sign
  2535 + chr(226).chr(130).chr(172) => 'E',
  2536 + // GBP (Pound) Sign
  2537 + chr(194).chr(163) => '');
  2538 + $string = strtr($string, $chars);
  2539 + } else {
  2540 + // Assume ISO-8859-1 if not UTF-8
  2541 + $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
  2542 + .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
  2543 + .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
  2544 + .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
  2545 + .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
  2546 + .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
  2547 + .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
  2548 + .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
  2549 + .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
  2550 + .chr(252).chr(253).chr(255);
  2551 + $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
  2552 + $string = strtr($string, $chars['in'], $chars['out']);
  2553 + $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
  2554 + $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
  2555 + $string = str_replace($double_chars['in'], $double_chars['out'], $string);
  2556 + }
  2557 + return $string;
  2558 + }
  2559 + function seems_utf8($Str) { # by bmorel at ssi dot fr
  2560 + $length = strlen($Str);
  2561 + for ($i = 0; $i < $length; $i++) {
  2562 + if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
  2563 + elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n = 1; # 110bbbbb
  2564 + elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n = 2; # 1110bbbb
  2565 + elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n = 3; # 11110bbb
  2566 + elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n = 4; # 111110bb
  2567 + elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n = 5; # 1111110b
  2568 + else return false; # Does not match any model
  2569 + for ($j = 0; $j < $n; $j++) { # n bytes matching 10bbbbbb follow ?
  2570 + if ((++$i == $length) || ((ord($Str[$i]) & 0xC0) != 0x80))
  2571 + return false;
  2572 + }
  2573 + }
  2574 + return true;
  2575 + }
2477 2576 }
2478 2577 ?>
2479 2578 \ No newline at end of file
... ...
temas/teste.map
... ... @@ -2,120 +2,64 @@ MAP
2 2 FONTSET "../symbols/fontes.txt"
3 3 SYMBOLSET "../symbols/simbolosv6.sym"
4 4 LAYER
5   - CONNECTION "sigeo"
6   - CONNECTIONTYPE POSTGIS
7   - DATA "geom from (select * from limites.tindi) as foo using unique gid using srid=4326"
  5 + CONNECTION ""
  6 + DATA "/var/www/temp/localizador_052015.shp"
8 7 METADATA
9   - "METAESTAT_ID_MEDIDA_VARIAVEL" ""
10   - "TIP" "terrai_nom"
11   - "cache" "sim"
12   - "ltempoitemimagem" ""
13   - "olopacity" ""
14   - "CLASSE" "SIM"
15   - "ltempoitemdescricao" ""
16   - "palletestep" ""
17   - "ltempoiteminicio" ""
18   - "ltempoitemtip" ""
19   - "gmopacity" ""
20   - "gmstatus" ""
21   - "itensdesc" "código,nome,etnia,município,fase,modalidade"
22   - "description_template" ""
23   - "ltempoitemtitulo" ""
24   - "ltempoitemlink" ""
25   - "METAESTAT_CODIGO_TIPO_REGIAO" ""
26   - "arquivotemaoriginal" ""
27   - "palletefile" ""
28   - "olstatus" ""
29   - "nomeoriginal" ""
30   - "ltempoformatodata" ""
31   - "ltempoitemicone" ""
32   - "metaestat" ""
33   - "itembuscarapida" ""
34   - "CONEXAOORIGINAL" "sigeo"
35   - "itens" "terrai_cod,terrai_nom,etnia_nome,municipio_,fase_ti,modalidade"
36   - "TEMA" "Terras indígenas por fase de regularização"
37   - "convcaracter" ""
38   - "cortepixels" "0"
39   - "editorsql" ""
40   - "ltempoconvencode" ""
41   - "ltempoitemfim" ""
  8 + "METAESTAT_ID_MEDIDA_VARIAVEL"""
  9 + "ltempoitemimagem"""
  10 + "tip""RELATORIO"
  11 + "ltempoitemdescricao"""
  12 + "CLASSE""SIM"
  13 + "ltempoiteminicio"""
  14 + "palletestep"""
  15 + "ltempoitemtip"""
  16 + "temporizador"""
  17 + "ltempoitemtitulo"""
  18 + "description_template"""
  19 + "itensdesc""OBS,PROCESSO,RIP,ORGAO,RELATORIO"
  20 + "iconetema"""
  21 + "ltempoitemlink"""
  22 + "itenslink""[OBS]"
  23 + "tiles"""
  24 + "METAESTAT_CODIGO_TIPO_REGIAO"""
  25 + "palletefile"""
  26 + "ltempoformatodata"""
  27 + "ltempoitemicone"""
  28 + "permitecomentario""SIM"
  29 + "PLUGINI3GEO"""
  30 + "metaestat"""
  31 + "escondido""NAO"
  32 + "itembuscarapida""OBS"
  33 + "itens""OBS,PROCESSO,RIP,ORGAO,RELATORIO"
  34 + "transitioneffect""SIM"
  35 + "TEMA""localizador"
  36 + "convcaracter"""
  37 + "cortepixels""0"
  38 + "ltempoconvencode"""
  39 + "editorsql"""
  40 + "identifica""SIM"
  41 + "aplicaextensao""SIM"
  42 + "ltempoitemfim"""
42 43 END # METADATA
43   - NAME "tiregula"
44   - PROCESSING "LABEL_NO_CLIP=True"
45   - PROCESSING "POLYLINE_NO_CLIP=True"
46   - PROCESSING "LABEL_NO_CLIP=True"
47   - PROCESSING "POLYLINE_NO_CLIP=True"
  44 + NAME "teste"
  45 + PROJECTION
  46 + "init=epsg:29194"
  47 + END # PROJECTION
48 48 STATUS DEFAULT
49 49 TEMPLATE "none.htm"
50 50 TILEITEM "location"
51   - TYPE POLYGON
  51 + TYPE POINT
52 52 UNITS METERS
53 53 CLASS
54   - NAME "Declarada"
55   - EXPRESSION ('[fase_ti]'eq'Declarada')
  54 + NAME ""
56 55 STYLE
57 56 ANGLE 0
58   - COLOR 198 105 222
  57 + COLOR 166 16 16
59 58 OFFSET 0 0
60   - OUTLINECOLOR 255 255 255
  59 + SIZE 20
  60 + SYMBOL "ponto"
61 61 END # STYLE
62   - TITLE ""
63   - END # CLASS
64   - CLASS
65   - NAME "Regularizada"
66   - EXPRESSION ('[fase_ti]'eq'Regularizada')
67   - STYLE
68   - ANGLE 0
69   - COLOR 141 104 56
70   - OFFSET 0 0
71   - OUTLINECOLOR 255 255 255
72   - END # STYLE
73   - TITLE ""
74   - END # CLASS
75   - CLASS
76   - NAME "Encaminhada RI"
77   - EXPRESSION ('[fase_ti]'eq'Encaminhada RI')
78   - STYLE
79   - ANGLE 0
80   - COLOR 80 222 151
81   - OFFSET 0 0
82   - OUTLINECOLOR 255 255 255
83   - END # STYLE
84   - TITLE ""
85   - END # CLASS
86   - CLASS
87   - NAME "Homologada"
88   - EXPRESSION ('[fase_ti]'eq'Homologada')
89   - STYLE
90   - ANGLE 0
91   - COLOR 56 127 51
92   - OFFSET 0 0
93   - OUTLINECOLOR 255 255 255
94   - END # STYLE
95   - TITLE ""
96   - END # CLASS
97   - CLASS
98   - NAME "Delimitada"
99   - EXPRESSION ('[fase_ti]'eq'Delimitada')
100   - STYLE
101   - ANGLE 0
102   - COLOR 154 239 245
103   - OFFSET 0 0
104   - OUTLINECOLOR 255 255 255
105   - END # STYLE
106   - TITLE ""
107   - END # CLASS
108   - CLASS
109   - NAME "Em Estudo"
110   - EXPRESSION ('[fase_ti]'eq'Em Estudo')
111   - STYLE
112   - ANGLE 0
113   - COLOR 232 157 44
114   - OFFSET 0 0
115   - OUTLINECOLOR 255 255 255
116   - END # STYLE
117   - TITLE ""
118 62 END # CLASS
119 63 END # LAYER
120 64  
121 65 -END # MAP
  66 +END # MAP
122 67 \ No newline at end of file
... ...