Commit d63ac125633432ccb134c6c4b9cf8e347c911e90

Authored by Edmar Moretti
1 parent 98cbf426

Modificação na aplicação de cores em classes para considerar se o color é negativo

admin/admin.db
No preview for this file type
admin/black_editor.php
1 <?php 1 <?php
2 -//verifica login  
3 -session_write_close ();  
4 -session_name ( "i3GeoLogin" );  
5 -if(empty($_COOKIE ["i3geocodigologin"])){  
6 - exit; 2 +// verifica login
  3 +session_write_close();
  4 +session_name("i3GeoLogin");
  5 +if (empty($_COOKIE["i3geocodigologin"])) {
  6 + exit();
7 } 7 }
8 -session_id ( $_COOKIE ["i3geocodigologin"] );  
9 -session_start ();  
10 -if ($_SESSION ["usuario"] != $_COOKIE ["i3geousuariologin"]) {  
11 - $_COOKIE = array ();  
12 - $_SESSION = array ();  
13 - session_destroy ();  
14 - exit; 8 +session_id($_COOKIE["i3geocodigologin"]);
  9 +session_start();
  10 +if ($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]) {
  11 + $_COOKIE = array();
  12 + $_SESSION = array();
  13 + session_destroy();
  14 + exit();
15 } 15 }
  16 +session_write_close();
16 ?> 17 ?>
17 <!DOCTYPE html> 18 <!DOCTYPE html>
18 <html lang="pt-br"> 19 <html lang="pt-br">
19 <head> 20 <head>
20 <meta http-equiv="Category" content="i3Geo Mapa interativo MMA geoprocessamento sig mobile"> 21 <meta http-equiv="Category" content="i3Geo Mapa interativo MMA geoprocessamento sig mobile">
21 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> 22 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
22 -<meta name="viewport"  
23 - content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0"> 23 +<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0">
24 <title>i3GEO - OpenLayers</title> 24 <title>i3GEO - OpenLayers</title>
25 <script src="../pacotes/ol4/ol.js"></script> 25 <script src="../pacotes/ol4/ol.js"></script>
26 <script src="../js/i3geo.js"></script> 26 <script src="../js/i3geo.js"></script>
@@ -40,152 +40,142 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -40,152 +40,142 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
40 background: none; 40 background: none;
41 margin-bottom: 15px; 41 margin-bottom: 15px;
42 } 42 }
43 -.foraDoMapa + span > span { 43 +
  44 +.foraDoMapa+span>span {
44 background-color: yellow; 45 background-color: yellow;
45 } 46 }
46 </style> 47 </style>
47 </head> 48 </head>
48 - <!-- As palavras entre {{{}}} sao utilizadas para a traducao. Veja i3geo/js/dicionario.js 49 +<!-- As palavras entre {{{}}} sao utilizadas para a traducao. Veja i3geo/js/dicionario.js
49 Marque com data-traduzir="true" os elementos que deverao passar pelo tradutor 50 Marque com data-traduzir="true" os elementos que deverao passar pelo tradutor
50 --> 51 -->
51 <body id="i3geo" style='background: white;'> 52 <body id="i3geo" style='background: white;'>
52 - <!-- inclui o nome do usuario logado 53 + <!-- inclui o nome do usuario logado
53 <div id="i3GEONomeLogin" 54 <div id="i3GEONomeLogin"
54 style="position: absolute; left: 10px; top: 2px; font-size: 11px; z-index: 50000"></div> 55 style="position: absolute; left: 10px; top: 2px; font-size: 11px; z-index: 50000"></div>
55 --> 56 -->
56 - <!-- Aqui vai o mapa. O div a ser inserido e padronizado e depende da interface usar openlayers ou googlemaps 57 + <!-- Aqui vai o mapa. O div a ser inserido e padronizado e depende da interface usar openlayers ou googlemaps
57 Se os estilos width e height nao estiverem definidos, o tamanho do mapa abrangera a tela toda 58 Se os estilos width e height nao estiverem definidos, o tamanho do mapa abrangera a tela toda
58 --> 59 -->
59 - <div id="mapai3Geo" >  
60 - </div>  
61 - <!-- aqui sera incluida a escala numerica. E necessario ter o id=i3GEOescalanum para que o valor seja atualizado-->  
62 - <form class="escalanumerica hidden-xs" onsubmit="javascript:i3GEO.navega.aplicaEscala($i('i3GEOescalanum').value);return false;">  
63 - <input id='i3GEOescalanum' type='text' name='' value='' size='10' title='' >  
64 - </form> 60 + <div id="mapai3Geo"></div>
  61 + <!-- aqui sera incluida a escala numerica. E necessario ter o id=i3GEOescalanum para que o valor seja atualizado-->
  62 + <form class="escalanumerica hidden-xs" onsubmit="javascript:i3GEO.navega.aplicaEscala($i('i3GEOescalanum').value);return false;">
  63 + <input id='i3GEOescalanum' type='text' name='' value='' size='10' title=''>
  64 + </form>
65 65
66 - <!-- aqui sera incluido o gadget que mostra a coordenada geografica da posicao do mouse -->  
67 - <div class="localizarxy fundoRodape hidden-xs hidden-sm" >  
68 - <div class="i3GeoMascaraCoord" style="display: block;">  
69 - <select onchange="javascript:i3GEO.coordenadas.mudaTipo(this,'localizarxy');" class="i3geoCoordenadasComboTipo">  
70 - <option>DMS:</option>  
71 - <option value="janela">janela</option>  
72 - <option value="geoProj">DMS</option>  
73 - <option value="dd">Dec. de grau</option>  
74 - <option value="geohash">GeoHash</option>  
75 - <option value="policonicaSad69">Polic SAD-69</option>  
76 - <option value="utmSad69Proj">UTM Sad-69</option>  
77 - <option value="utmSirgas2000Proj">UTM Sirgas</option>  
78 - </select>  
79 - </div>  
80 - <div class="i3GeoMascaraCoord" id="localizarxygeoProj" style="display: block;position: absolute;top: 0px;left: 60px;">  
81 - X:  
82 - <input name="" value="-00" size="3" title="grau" id="localizarxygeoProjxg" type="text">  
83 - <input name="" value="00" size="2" title="minuto" id="localizarxygeoProjxm" type="text">  
84 - <input name="" value="00.00" size="5" title="segundo" id="localizarxygeoProjxs" type="text">  
85 - Y:  
86 - <input name="" value="-00" size="3" title="grau" id="localizarxygeoProjyg" type="text">  
87 - <input name="" value="00" size="2" title="minuto" id="localizarxygeoProjym" type="text">  
88 - <input name="" value="00.00" size="5" title="segundo" id="localizarxygeoProjys" type="text">  
89 - <img class="ticfind" style="margin-left:8px;" title="zoom" onclick="i3GEO.coordenadas.zoomPontoGeo()" src="../imagens/branco.gif">  
90 - </div>  
91 - <div id="localizarxydd" class="i3GeoMascaraCoord" style="display: none;position: absolute;top: 0px;left: 60px;">  
92 - X: <input name="" value="00" size="12" title="X" id="localizarxyddX" type="text">  
93 - Y: <input name="" value="00" size="12" title="Y" id="localizarxyddY" type="text">  
94 - </div>  
95 - <div id="localizarxygeohash" class="i3GeoMascaraCoord" style="display: none;position: absolute;top: 0px;left: 60px;">  
96 - GeoHash <input name="" value="00" size="12" title="Cod" id="localizarxygeohashCodigo" type="text">  
97 - <img class="ticfind" style="margin-left:8px;" title="zoom" onclick="i3GEO.coordenadas.geohash.zoomCodigo('localizarxygeohashCodigo')" src="../imagens/branco.gif">  
98 - </div>  
99 - <div id="localizarxypoliconicaSad69" class="i3GeoMascaraCoord" style="display: none;position: absolute;top: 0px;left: 60px;">  
100 - X: <input name="" value="00" size="12" title="X" id="localizarxypoliconicaSad69X" type="text">  
101 - Y: <input name="" value="00" size="12" title="Y" id="localizarxypoliconicaSad69Y" type="text">  
102 - </div>  
103 - <div id="localizarxyutmSad69Proj" class="i3GeoMascaraCoord" style="display: none;position: absolute;top: 0px;left: 60px;">  
104 - X: <input name="" value="00" size="12" title="X" id="localizarxyutmSad69ProjX" type="text">  
105 - Y: <input name="" value="00" size="12" title="Y" id="localizarxyutmSad69ProjY" type="text">  
106 - Zn: <input name="" value="--" size="2" title="Zona" id="localizarxyutmSad69ProjZN" type="text">  
107 - </div>  
108 - <div id="localizarxyutmSirgas2000Proj" class="i3GeoMascaraCoord" style="display: none;position: absolute;top: 0px;left: 60px;">  
109 - X: <input name="" value="00" size="12" title="X" id="localizarxyutmSirgas2000ProjX" type="text">  
110 - Y: <input name="" value="00" size="12" title="Y" id="localizarxyutmSirgas2000ProjY" type="text">  
111 - Zn: <input name="" value="--" size="2" title="Zona" id="localizarxyutmSirgas2000ProjZN" type="text">  
112 - </div>  
113 - </div>  
114 - <!-- barra de icones de navegacao -->  
115 - <div class="ol-i3GEOcontrols ol-control" data-traduzir="true">  
116 - <button title="{{{d2t}}}" onclick="i3GEO.Interface.zoom2ext(i3GEO.parametros.extentTotal)" style="float: left;">  
117 - <!--<img style="width:20px;" src="../imagens/gisicons/projection.png">-->  
118 - <i class="material-icons">public</i>  
119 - </button>  
120 - <button onclick="i3GEO.Interface.zoomli()" style="float: left;">  
121 - <!--<img style="width:20px;" src="../imagens/gisicons/zoom-region.png">-->  
122 - <i class="material-icons">zoom_in</i>  
123 - </button>  
124 - <br>  
125 - <button title="{{{volta}}}" onclick="i3GEO.navega.extensaoAnterior()" style="float: left;">  
126 - <!--<img style="width:16px;" src="../imagens/oxygen/16x16/draw-triangle1.png">-->  
127 - <i class="material-icons">undo</i>  
128 - </button>  
129 - <button title="{{{avanca}}}" onclick="i3GEO.navega.extensaoProximo()" style="float: left;">  
130 - <!--<img style="width:16px;" src="../imagens/oxygen/16x16/draw-triangle2.png">-->  
131 - <i class="material-icons">redo</i>  
132 - </button>  
133 - <br>  
134 - <button title="{{{graticule}}}" onclick="i3GEO.Interface.grade()" style="float: left;">  
135 - <!--<img style="width:16px;" src="../imagens/gisicons/graticule.png">-->  
136 - <i class="material-icons">grid_on</i>  
137 - </button>  
138 - <button class="hidden-xs hidden-sm" title="{{{x79}}}" data-template="../interface/templates/ferramentasSend.html" onclick="i3GEO.marcador.inicia(this)" style="float: left;">  
139 - <!--<img style="width:20px;" src="../imagens/gisicons/save1.png">-->  
140 - <i class="material-icons">bookmark_border</i>  
141 - </button>  
142 - <br>  
143 - <button class="hidden-xs hidden-sm" title="{{{d9}}}" onclick="i3GEO.maparef.inicia()" style="float: left;">  
144 - <!--<img style="width:20px;" src="../imagens/gisicons/map-reference.png">-->  
145 - <i class="material-icons">picture_in_picture</i>  
146 - </button>  
147 - </div>  
148 - <!--barra de progresso que e mostrada conforme as camadas sao desenhadas no mapa. Esse elemento deve ter o id="i3GEOprogressoCamadas" -->  
149 - <div id="i3GEOprogressoCamadas" class="progress" style="display:block;position:absolute;top:0px; height:5px;width:0%;margin:auto;">  
150 - <div class="progress-bar progress-bar-striped active" role="progressbar" style="width:100%">  
151 - </div>  
152 - </div>  
153 - <!--barra de aguarde id="i3GEObarraAguarde" -->  
154 - <div id="i3GEObarraAguarde" class="progress" style="display:block;position:absolute;top:0px; height:5px;width:0%;margin:auto;">  
155 - <div class="progress-bar progress-bar-success progress-bar-striped active" role="progressbar" style="width:100%">  
156 - </div>  
157 - </div>  
158 - <!-- mensagem de copyright -->  
159 - <div id="i3GEOcopyright">i3Geo</div>  
160 - <!-- botoes laterais que abrem guias moveis -->  
161 - <div id="i3GEOguiaMovel" >  
162 - <!-- configuracao para todos os botoes 66 + <!-- aqui sera incluido o gadget que mostra a coordenada geografica da posicao do mouse -->
  67 + <div class="localizarxy fundoRodape hidden-xs hidden-sm">
  68 + <div class="i3GeoMascaraCoord" style="display: block;">
  69 + <select onchange="javascript:i3GEO.coordenadas.mudaTipo(this,'localizarxy');" class="i3geoCoordenadasComboTipo">
  70 + <option>DMS:</option>
  71 + <option value="janela">janela</option>
  72 + <option value="geoProj">DMS</option>
  73 + <option value="dd">Dec. de grau</option>
  74 + <option value="geohash">GeoHash</option>
  75 + <option value="policonicaSad69">Polic SAD-69</option>
  76 + <option value="utmSad69Proj">UTM Sad-69</option>
  77 + <option value="utmSirgas2000Proj">UTM Sirgas</option>
  78 + </select>
  79 + </div>
  80 + <div class="i3GeoMascaraCoord" id="localizarxygeoProj" style="display: block; position: absolute; top: 0px; left: 60px;">
  81 + X: <input name="" value="-00" size="3" title="grau" id="localizarxygeoProjxg" type="text"> <input name="" value="00" size="2" title="minuto" id="localizarxygeoProjxm" type="text"> <input
  82 + name="" value="00.00" size="5" title="segundo" id="localizarxygeoProjxs" type="text"> Y: <input name="" value="-00" size="3" title="grau" id="localizarxygeoProjyg" type="text"> <input
  83 + name="" value="00" size="2" title="minuto" id="localizarxygeoProjym" type="text"> <input name="" value="00.00" size="5" title="segundo" id="localizarxygeoProjys" type="text"> <img
  84 + class="ticfind" style="margin-left: 8px;" title="zoom" onclick="i3GEO.coordenadas.zoomPontoGeo()" src="../imagens/branco.gif">
  85 + </div>
  86 + <div id="localizarxydd" class="i3GeoMascaraCoord" style="display: none; position: absolute; top: 0px; left: 60px;">
  87 + X: <input name="" value="00" size="12" title="X" id="localizarxyddX" type="text"> Y: <input name="" value="00" size="12" title="Y" id="localizarxyddY" type="text">
  88 + </div>
  89 + <div id="localizarxygeohash" class="i3GeoMascaraCoord" style="display: none; position: absolute; top: 0px; left: 60px;">
  90 + GeoHash <input name="" value="00" size="12" title="Cod" id="localizarxygeohashCodigo" type="text"> <img class="ticfind" style="margin-left: 8px;" title="zoom"
  91 + onclick="i3GEO.coordenadas.geohash.zoomCodigo('localizarxygeohashCodigo')" src="../imagens/branco.gif">
  92 + </div>
  93 + <div id="localizarxypoliconicaSad69" class="i3GeoMascaraCoord" style="display: none; position: absolute; top: 0px; left: 60px;">
  94 + X: <input name="" value="00" size="12" title="X" id="localizarxypoliconicaSad69X" type="text"> Y: <input name="" value="00" size="12" title="Y" id="localizarxypoliconicaSad69Y" type="text">
  95 + </div>
  96 + <div id="localizarxyutmSad69Proj" class="i3GeoMascaraCoord" style="display: none; position: absolute; top: 0px; left: 60px;">
  97 + X: <input name="" value="00" size="12" title="X" id="localizarxyutmSad69ProjX" type="text"> Y: <input name="" value="00" size="12" title="Y" id="localizarxyutmSad69ProjY" type="text"> Zn:
  98 + <input name="" value="--" size="2" title="Zona" id="localizarxyutmSad69ProjZN" type="text">
  99 + </div>
  100 + <div id="localizarxyutmSirgas2000Proj" class="i3GeoMascaraCoord" style="display: none; position: absolute; top: 0px; left: 60px;">
  101 + X: <input name="" value="00" size="12" title="X" id="localizarxyutmSirgas2000ProjX" type="text"> Y: <input name="" value="00" size="12" title="Y" id="localizarxyutmSirgas2000ProjY"
  102 + type="text"> Zn: <input name="" value="--" size="2" title="Zona" id="localizarxyutmSirgas2000ProjZN" type="text">
  103 + </div>
  104 + </div>
  105 + <!-- barra de icones de navegacao -->
  106 + <div class="ol-i3GEOcontrols ol-control" data-traduzir="true">
  107 + <button title="{{{d2t}}}" onclick="i3GEO.Interface.zoom2ext(i3GEO.parametros.extentTotal)" style="float: left;">
  108 + <!--<img style="width:20px;" src="../imagens/gisicons/projection.png">-->
  109 + <i class="material-icons">public</i>
  110 + </button>
  111 + <button onclick="i3GEO.Interface.zoomli()" style="float: left;">
  112 + <!--<img style="width:20px;" src="../imagens/gisicons/zoom-region.png">-->
  113 + <i class="material-icons">zoom_in</i>
  114 + </button>
  115 + <br>
  116 + <button title="{{{volta}}}" onclick="i3GEO.navega.extensaoAnterior()" style="float: left;">
  117 + <!--<img style="width:16px;" src="../imagens/oxygen/16x16/draw-triangle1.png">-->
  118 + <i class="material-icons">undo</i>
  119 + </button>
  120 + <button title="{{{avanca}}}" onclick="i3GEO.navega.extensaoProximo()" style="float: left;">
  121 + <!--<img style="width:16px;" src="../imagens/oxygen/16x16/draw-triangle2.png">-->
  122 + <i class="material-icons">redo</i>
  123 + </button>
  124 + <br>
  125 + <button title="{{{graticule}}}" onclick="i3GEO.Interface.grade()" style="float: left;">
  126 + <!--<img style="width:16px;" src="../imagens/gisicons/graticule.png">-->
  127 + <i class="material-icons">grid_on</i>
  128 + </button>
  129 + <button class="hidden-xs hidden-sm" title="{{{x79}}}" data-template="../interface/templates/ferramentasSend.html" onclick="i3GEO.marcador.inicia(this)" style="float: left;">
  130 + <!--<img style="width:20px;" src="../imagens/gisicons/save1.png">-->
  131 + <i class="material-icons">bookmark_border</i>
  132 + </button>
  133 + <br>
  134 + <button class="hidden-xs hidden-sm" title="{{{d9}}}" onclick="i3GEO.maparef.inicia()" style="float: left;">
  135 + <!--<img style="width:20px;" src="../imagens/gisicons/map-reference.png">-->
  136 + <i class="material-icons">picture_in_picture</i>
  137 + </button>
  138 + </div>
  139 + <!--barra de progresso que e mostrada conforme as camadas sao desenhadas no mapa. Esse elemento deve ter o id="i3GEOprogressoCamadas" -->
  140 + <div id="i3GEOprogressoCamadas" class="progress" style="display: block; position: absolute; top: 0px; height: 5px; width: 0%; margin: auto;">
  141 + <div class="progress-bar progress-bar-striped active" role="progressbar" style="width: 100%"></div>
  142 + </div>
  143 + <!--barra de aguarde id="i3GEObarraAguarde" -->
  144 + <div id="i3GEObarraAguarde" class="progress" style="display: block; position: absolute; top: 0px; height: 5px; width: 0%; margin: auto;">
  145 + <div class="progress-bar progress-bar-success progress-bar-striped active" role="progressbar" style="width: 100%"></div>
  146 + </div>
  147 + <!-- mensagem de copyright -->
  148 + <div id="i3GEOcopyright">i3Geo</div>
  149 + <!-- botoes laterais que abrem guias moveis -->
  150 + <div id="i3GEOguiaMovel">
  151 + <!-- configuracao para todos os botoes
163 data-idconteudo - id do DIV que contem o conteudo da guia e que sera mostrado ao ser clicado 152 data-idconteudo - id do DIV que contem o conteudo da guia e que sera mostrado ao ser clicado
164 --> 153 -->
165 - <div class="iconesGuiaMovel ol-control" data-traduzir="true">  
166 - <!-- ferramentas 154 + <div class="iconesGuiaMovel ol-control" data-traduzir="true">
  155 + <!-- ferramentas
167 data-idLista - id do DIV dentro de idconteudo que sera utilizado para mostrar as "pastas" que abrem o proximo nivel 156 data-idLista - id do DIV dentro de idconteudo que sera utilizado para mostrar as "pastas" que abrem o proximo nivel
168 data-idLinks - id do DIV dentro de idconteudo que sera utilizado para mostrar a lista de links que abre cada ferramenta 157 data-idLinks - id do DIV dentro de idconteudo que sera utilizado para mostrar a lista de links que abre cada ferramenta
169 data-idMigalha - id do DIV que sera utilizado para mostrar o link de retorno ao nivel anterior 158 data-idMigalha - id do DIV que sera utilizado para mostrar o link de retorno ao nivel anterior
170 --> 159 -->
171 - <div data-idconteudo="guia8obj" data-idLinks="listaFerramentasLinks" data-idMigalha="migalhaFerramentas" data-idLista="listaFerramentas" onclick="i3GEO.guias.ativa('ferramentas',this)">  
172 - <button title="{{{iconeFerramentas}}}" class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
173 - <i class="material-icons">business_center</i>  
174 - </button>  
175 - </div>  
176 - <!-- temas existentes no mapa 160 + <div data-idconteudo="guia8obj" data-idLinks="listaFerramentasLinks" data-idMigalha="migalhaFerramentas" data-idLista="listaFerramentas" onclick="i3GEO.guias.ativa('ferramentas',this)">
  161 + <button title="{{{iconeFerramentas}}}" class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  162 + <i class="material-icons">business_center</i>
  163 + </button>
  164 + </div>
  165 + <!-- temas existentes no mapa
177 data-idListaDeCamadas - id onde sera incluida a lista de camadas 166 data-idListaDeCamadas - id onde sera incluida a lista de camadas
178 data-idListaFundo - id onde sera incluida a lista de camadas de fundo (mapa base) 167 data-idListaFundo - id onde sera incluida a lista de camadas de fundo (mapa base)
179 data-verificaAbrangencia - se for uma string, faz a verificacao se a camada esta fora da abrangencia atual do mapa, 168 data-verificaAbrangencia - se for uma string, faz a verificacao se a camada esta fora da abrangencia atual do mapa,
180 inserindo ou nao a string como uma classe CSS. Pode degradar a performance e depende 169 inserindo ou nao a string como uma classe CSS. Pode degradar a performance e depende
181 do metadata existente na camada. Deixe vazio para nao ativar a operacao. 170 do metadata existente na camada. Deixe vazio para nao ativar a operacao.
182 --> 171 -->
183 - <div onclick="i3GEO.guias.ativa('temas',this)" data-verificaAbrangencia="" data-idconteudo="guia1obj" data-idListaFundo="listaFundo" data-idListaDeCamadas="listaTemas" style="margin-top: 3px;">  
184 - <button title="{{{iconeMapa}}}" class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
185 - <i class="material-icons"><i class="material-icons">visibility</i></i>  
186 - </button>  
187 - </div>  
188 - <!-- catalogo de adicao de temas ao mapa 172 + <div onclick="i3GEO.guias.ativa('temas',this)" data-verificaAbrangencia="" data-idconteudo="guia1obj" data-idListaFundo="listaFundo" data-idListaDeCamadas="listaTemas"
  173 + style="margin-top: 3px;">
  174 + <button title="{{{iconeMapa}}}" class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  175 + <i class="material-icons"><i class="material-icons">visibility</i></i>
  176 + </button>
  177 + </div>
  178 + <!-- catalogo de adicao de temas ao mapa
189 data-idCatalogo - id do DIV que contem a primeira pagina do catalogo. Esse DIV sera escondido e mostrado conforme o usuario navega pelo catalogo 179 data-idCatalogo - id do DIV que contem a primeira pagina do catalogo. Esse DIV sera escondido e mostrado conforme o usuario navega pelo catalogo
190 data-idMenus - id do DIV que recebera a lista de menus cadastrados no sistema de administracao 180 data-idMenus - id do DIV que recebera a lista de menus cadastrados no sistema de administracao
191 data-idNavegacao - id do DIV que recebera a lista de opcoes apos o usuario clicar em um item do catalogo principal 181 data-idNavegacao - id do DIV que recebera a lista de opcoes apos o usuario clicar em um item do catalogo principal
@@ -194,140 +184,170 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -194,140 +184,170 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
194 Variaveis javascript: 184 Variaveis javascript:
195 i3GEO.catalogoMenus.IDSMENUS - (array) apenas os menus com idmenu que constem nessa lista serao mostrados. Por default e vazio. 185 i3GEO.catalogoMenus.IDSMENUS - (array) apenas os menus com idmenu que constem nessa lista serao mostrados. Por default e vazio.
196 --> 186 -->
197 - <div onclick="i3GEO.guias.ativa('adiciona',this)" data-idconteudo="guia2obj" data-idMigalha="catalogoMigalha" data-idNavegacao="catalogoNavegacao" data-idCatalogo="catalogoPrincipal" data-idMenus="catalogoMenus" style="margin-top: 3px;">  
198 - <button title="{{{iconeCatalogo}}}" class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
199 - <i class="material-icons">layers</i>  
200 - </button>  
201 - </div>  
202 - <!-- legenda -->  
203 - <div onclick="i3GEO.guias.ativa('legenda',this)" data-idconteudo="guia4obj" data-idLegenda="legendaHtml" style="margin-top: 3px;">  
204 - <button title="{{{iconeLegenda}}}" class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
205 - <i class="material-icons">view_list</i>  
206 - </button>  
207 - </div>  
208 - <div class="hidden-xs hidden-sm" onclick="i3GEO.guias.ativa('dobraPagina',this)" style="margin-top: 3px;">  
209 - <button title="{{{trocaInterface}}}" class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
210 - <i class="material-icons">compare_arrows</i>  
211 - </button>  
212 - </div>  
213 - <!-- Busca -->  
214 - <div onclick="i3GEO.guias.ativa('buscaRapida',this)" data-idconteudo="guia7obj" style="margin-top: 3px;">  
215 - <button class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
216 - <i class="material-icons">search</i>  
217 - </button>  
218 - </div>  
219 - <div onclick="i3GEO.guias.ativa('identificaBalao',this)" style="margin-top: 3px;" >  
220 - <button title="{{{iconeBalao}}}" class="iconeGuiaMovel" style="color:white;box-shadow: none;">  
221 - <i class="material-icons">location_on</i>  
222 - </button>  
223 - </div>  
224 - <!-- A opcao de identificacao esta integrada ao balao de informacoes, mas pode aparecer aqui tambem 187 + <div onclick="i3GEO.guias.ativa('adiciona',this)" data-idconteudo="guia2obj" data-idMigalha="catalogoMigalha" data-idNavegacao="catalogoNavegacao" data-idCatalogo="catalogoPrincipal"
  188 + data-idMenus="catalogoMenus" style="margin-top: 3px;">
  189 + <button title="{{{iconeCatalogo}}}" class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  190 + <i class="material-icons">layers</i>
  191 + </button>
  192 + </div>
  193 + <!-- legenda -->
  194 + <div onclick="i3GEO.guias.ativa('legenda',this)" data-idconteudo="guia4obj" data-idLegenda="legendaHtml" style="margin-top: 3px;">
  195 + <button title="{{{iconeLegenda}}}" class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  196 + <i class="material-icons">view_list</i>
  197 + </button>
  198 + </div>
  199 + <div class="hidden-xs hidden-sm" onclick="i3GEO.guias.ativa('dobraPagina',this)" style="margin-top: 3px;">
  200 + <button title="{{{trocaInterface}}}" class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  201 + <i class="material-icons">compare_arrows</i>
  202 + </button>
  203 + </div>
  204 + <!-- Busca -->
  205 + <div onclick="i3GEO.guias.ativa('buscaRapida',this)" data-idconteudo="guia7obj" style="margin-top: 3px;">
  206 + <button class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  207 + <i class="material-icons">search</i>
  208 + </button>
  209 + </div>
  210 + <div onclick="i3GEO.guias.ativa('identificaBalao',this)" style="margin-top: 3px;">
  211 + <button title="{{{iconeBalao}}}" class="iconeGuiaMovel" style="color: white; box-shadow: none;">
  212 + <i class="material-icons">location_on</i>
  213 + </button>
  214 + </div>
  215 + <!-- A opcao de identificacao esta integrada ao balao de informacoes, mas pode aparecer aqui tambem
225 <div class="hidden-xs hidden-sm" onclick="i3GEO.guias.ativa('identifica',this)" style="margin-top: 3px;"> 216 <div class="hidden-xs hidden-sm" onclick="i3GEO.guias.ativa('identifica',this)" style="margin-top: 3px;">
226 <button title="{{{iconeIdentifica}}}" class="iconeGuiaMovel" style="box-shadow: none;"> 217 <button title="{{{iconeIdentifica}}}" class="iconeGuiaMovel" style="box-shadow: none;">
227 <img src="../imagens/gisicons/pointer-info.png" style="cursor: pointer; padding: 3px;"> 218 <img src="../imagens/gisicons/pointer-info.png" style="cursor: pointer; padding: 3px;">
228 </button> 219 </button>
229 </div> 220 </div>
230 --> 221 -->
231 - </div>  
232 - <!-- veja i3GEO.guias.CONFIGURA -->  
233 - <!-- Os IDs sao definidos no botao que ativa a guia veja: "i3GEOguiaMovel" -->  
234 - <!-- se height nao estiver definido sera utilizada a altura do mapa -->  
235 - <div id="i3GEOguiaMovelMolde" >  
236 - <div id="i3GEOguiaMovelConteudo" >  
237 - <!-- camadas existentes no mapa -->  
238 - <div id='guia1obj' data-traduzir="true" style='display: none;'>  
239 - <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');">  
240 - <span class="pull-left">{{{iconeMapa}}}</span>X</div>  
241 - <div class="separadorCabecalhoGuias">&nbsp;</div>  
242 - <div class="list-group condensed noprint" >  
243 - <label>{{{opcoes}}}</label>  
244 - <a data-target="#opcoesGuia1" class="btn btn-sm btn-primary pull-right" style="margin-top: 0px;padding-top: 0px;padding-bottom: 0px;" type="button" data-toggle="collapse" >  
245 - <span class="caret"></span>  
246 - </a>  
247 - <div class="text-left collapse" id="opcoesGuia1" style="margin-left: 30px;">  
248 - <p><a onclick="i3GEO.arvoreDeCamadas.atualiza(i3GEO.arvoreDeCamadas.CAMADAS,true)" href="javascript:void(0)" >Refresh</a></p>  
249 - <p><a onclick="i3GEO.arvoreDeCamadas.aplicaTemas('ligartodos')" href="javascript:void(0)" >{{{t3a}}}</a></p>  
250 - <p><a onclick="i3GEO.arvoreDeCamadas.aplicaTemas('desligartodos')" href="javascript:void(0)" >{{{t3b}}}</a></p>  
251 - <p><a onclick="i3GEO.arvoreDeCamadas.dialogo.excluir()" href="javascript:void(0)" >{{{t12}}}</a></p>  
252 - <p><a onclick="i3GEO.arvoreDeCamadas.dialogo.filtro()" href="javascript:void(0)" >{{{t2a}}}</a></p>  
253 - <p><a onclick="i3GEO.mapa.dialogo.opacidade()" href="javascript:void(0)" >{{{t20}}}</a></p>  
254 - <p><a onclick="i3GEO.mapa.dialogo.animacao()" href="javascript:void(0)" >{{{p21}}}</a></p>  
255 - <p><a onclick="i3GEO.mapa.dialogo.imprimir()" href="javascript:void(0)" >{{{d12}}}</a></p>  
256 - <p><a onclick="i3GEO.mapa.limpasel()" href="javascript:void(0)" >{{{t4}}}</a></p>  
257 - </div>  
258 - </div>  
259 - <hr>  
260 - <!-- Esta div acrescenta a lista de de camadas dispon&iacute;veis no mapa atual -->  
261 - <div id="listaTemas" style="overflow:none;" data-template="../interface/templates/camada.html"></div>  
262 - <!-- Esta div acrescenta a lista de de camadas de fundo 222 + </div>
  223 + <!-- veja i3GEO.guias.CONFIGURA -->
  224 + <!-- Os IDs sao definidos no botao que ativa a guia veja: "i3GEOguiaMovel" -->
  225 + <!-- se height nao estiver definido sera utilizada a altura do mapa -->
  226 + <div id="i3GEOguiaMovelMolde">
  227 + <div id="i3GEOguiaMovelConteudo">
  228 + <!-- camadas existentes no mapa -->
  229 + <div id='guia1obj' data-traduzir="true" style='display: none;'>
  230 + <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');">
  231 + <button>
  232 + <span class="pull-left">{{{iconeMapa}}}</span>
  233 + <span class="pull-right material-icons">cancel</span>
  234 + </button>
  235 + </div>
  236 + <div class="separadorCabecalhoGuias">&nbsp;</div>
  237 + <div class="list-group condensed noprint">
  238 + <label>{{{opcoes}}}</label>
  239 + <a data-target="#opcoesGuia1" class="btn btn-sm btn-primary pull-right" style="margin-top: 0px; padding-top: 0px; padding-bottom: 0px;" type="button" data-toggle="collapse">
  240 + <span class="caret"></span>
  241 + </a>
  242 + <div class="text-left collapse" id="opcoesGuia1" style="margin-left: 30px;">
  243 + <p>
  244 + <a onclick="i3GEO.arvoreDeCamadas.atualiza(i3GEO.arvoreDeCamadas.CAMADAS,true)" href="javascript:void(0)">Refresh</a>
  245 + </p>
  246 + <p>
  247 + <a onclick="i3GEO.arvoreDeCamadas.aplicaTemas('ligartodos')" href="javascript:void(0)">{{{t3a}}}</a>
  248 + </p>
  249 + <p>
  250 + <a onclick="i3GEO.arvoreDeCamadas.aplicaTemas('desligartodos')" href="javascript:void(0)">{{{t3b}}}</a>
  251 + </p>
  252 + <p>
  253 + <a onclick="i3GEO.arvoreDeCamadas.dialogo.excluir()" href="javascript:void(0)">{{{t12}}}</a>
  254 + </p>
  255 + <p>
  256 + <a onclick="i3GEO.arvoreDeCamadas.dialogo.filtro()" href="javascript:void(0)">{{{t2a}}}</a>
  257 + </p>
  258 + <p>
  259 + <a onclick="i3GEO.mapa.dialogo.opacidade()" href="javascript:void(0)">{{{t20}}}</a>
  260 + </p>
  261 + <p>
  262 + <a onclick="i3GEO.mapa.dialogo.animacao()" href="javascript:void(0)">{{{p21}}}</a>
  263 + </p>
  264 + <p>
  265 + <a onclick="i3GEO.mapa.dialogo.imprimir()" href="javascript:void(0)">{{{d12}}}</a>
  266 + </p>
  267 + <p>
  268 + <a onclick="i3GEO.mapa.limpasel()" href="javascript:void(0)">{{{t4}}}</a>
  269 + </p>
  270 + </div>
  271 + </div>
  272 + <hr>
  273 + <!-- Esta div acrescenta a lista de de camadas dispon&iacute;veis no mapa atual -->
  274 + <div id="listaTemas" style="overflow: none;" data-template="../interface/templates/camada.html"></div>
  275 + <!-- Esta div acrescenta a lista de de camadas de fundo
263 A lista de camadas de fundo e obtida da variavel i3GEO.Interface.openlayers.LAYERSADICIONAIS 276 A lista de camadas de fundo e obtida da variavel i3GEO.Interface.openlayers.LAYERSADICIONAIS
264 Essa variavel e definida via javascript, e no caso das interfaces padrao do i3Geo, e definida 277 Essa variavel e definida via javascript, e no caso das interfaces padrao do i3Geo, e definida
265 no programa interface/config.php 278 no programa interface/config.php
266 --> 279 -->
267 - <div class="list-group condensed">  
268 - <label>{{{camadasDeFundo}}}</label>  
269 - <a data-target="#collapseFundo" class="btn btn-sm btn-primary pull-right" style="margin-top: 0px;padding-top: 0px;padding-bottom: 0px;" type="button" data-toggle="collapse" >  
270 - <span class="caret"></span>  
271 - </a>  
272 - <div style="margin-left:0px;" class="collapse text-left" id="collapseFundo">  
273 - <form>  
274 - <div id="listaFundo" class="form-group" data-template="../interface/templates/camadaFundo.html"></div>  
275 - </form>  
276 - </div>  
277 - </div>  
278 - </div>  
279 - <!-- Catalogo de temas -->  
280 - <div id='guia2obj' data-traduzir="true" style='display: none; text-align:left;'>  
281 - <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');i3GEO.catalogoMenus.mostraCatalogoPrincipal();"><span class="pull-left">{{{iconeCatalogo}}}</span> X</div>  
282 - <div class="separadorCabecalhoGuias">&nbsp;</div>  
283 - <!-- aqui entra a lista de elementos quando uma das opcoes e clicada -->  
284 - <div id="catalogoMigalha" data-template="../interface/templates/catalogoMigalha.html"></div>  
285 - <div id="catalogoNavegacao"></div>  
286 - <!-- Opcoes -->  
287 - <div id="catalogoPrincipal">  
288 - <div class="list-group condensed noprint" >  
289 - <label>{{{opcoes}}}</label>  
290 - <a data-target="#opcoesGuia2" class="btn btn-sm btn-primary pull-right" style="margin-top: 0px;padding-top: 0px;padding-bottom: 0px;" type="button" data-toggle="collapse" >  
291 - <span class="caret"></span>  
292 - </a>  
293 - <div class="text-left collapse" id="opcoesGuia2" style="margin-left: 30px;">  
294 - <p>  
295 - <a href="javascript:void(0)" onclick="i3GEO.login.dialogo.abreLogin()">Login/Logout</a>  
296 - </p>  
297 - <p>  
298 - <!-- <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.atualiza()">Refresh</a> -->  
299 - </p>  
300 - <li class="divider"></p>  
301 - <p>  
302 - <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.conectaservico()" >{{{a15}}}</a>  
303 - </p>  
304 - <p>  
305 - <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.uploadarquivo()">{{{a14}}}</a>  
306 - </p>  
307 - <p>  
308 - <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.downloadbase()">{{{a3}}}</a>  
309 - </p>  
310 - <p>  
311 - <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.importarwmc()">{{{a3a}}}</a>  
312 - </p>  
313 - <p>  
314 - <!-- <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.nuvemTags()">{{{a5a}}}</a> -->  
315 - </p>  
316 - <p>  
317 - <!-- <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.carouselTemas()">Miniaturas</a> -->  
318 - </p>  
319 - <p>  
320 - <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.buscaInde()">Busca na INDE</a>  
321 - </p>  
322 - <p>  
323 - <a href="javascript:void(0)" onclick="i3GEO.mapa.dialogo.metaestat()">Cartogramas estatisticos</a>  
324 - </p>  
325 - <p><a href="http://localhost/i3geo/kml.php?tipoxml=kml" target="_blank">{{{a13}}}</a>  
326 - </p>  
327 - </div>  
328 - </div>  
329 - <hr>  
330 - <!-- busca tema no catalogo 280 + <div class="list-group condensed">
  281 + <label>{{{camadasDeFundo}}}</label>
  282 + <a data-target="#collapseFundo" class="btn btn-sm btn-primary pull-right" style="margin-top: 0px; padding-top: 0px; padding-bottom: 0px;" type="button" data-toggle="collapse">
  283 + <span class="caret"></span>
  284 + </a>
  285 + <div style="margin-left: 0px;" class="collapse text-left" id="collapseFundo">
  286 + <form>
  287 + <div id="listaFundo" class="form-group" data-template="../interface/templates/camadaFundo.html"></div>
  288 + </form>
  289 + </div>
  290 + </div>
  291 + </div>
  292 + <!-- Catalogo de temas -->
  293 + <div id='guia2obj' data-traduzir="true" style='display: none; text-align: left;'>
  294 + <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');i3GEO.catalogoMenus.mostraCatalogoPrincipal();">
  295 + <button>
  296 + <span class="pull-left">{{{iconeCatalogo}}}</span>
  297 + <span class="pull-right material-icons">cancel</span>
  298 + </button>
  299 + </div>
  300 + <div class="separadorCabecalhoGuias">&nbsp;</div>
  301 + <!-- aqui entra a lista de elementos quando uma das opcoes e clicada -->
  302 + <div id="catalogoMigalha" data-template="../interface/templates/catalogoMigalha.html"></div>
  303 + <div id="catalogoNavegacao"></div>
  304 + <!-- Opcoes -->
  305 + <div id="catalogoPrincipal">
  306 + <div class="list-group condensed noprint">
  307 + <label>{{{opcoes}}}</label>
  308 + <a data-target="#opcoesGuia2" class="btn btn-sm btn-primary pull-right" style="margin-top: 0px; padding-top: 0px; padding-bottom: 0px;" type="button" data-toggle="collapse">
  309 + <span class="caret"></span>
  310 + </a>
  311 + <div class="text-left collapse" id="opcoesGuia2" style="margin-left: 30px;">
  312 + <p>
  313 + <a href="javascript:void(0)" onclick="i3GEO.login.dialogo.abreLogin()">Login/Logout</a>
  314 + </p>
  315 + <p>
  316 + <!-- <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.atualiza()">Refresh</a> -->
  317 + </p>
  318 + <li class="divider"></p>
  319 + <p>
  320 + <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.conectaservico()">{{{a15}}}</a>
  321 + </p>
  322 + <p>
  323 + <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.uploadarquivo()">{{{a14}}}</a>
  324 + </p>
  325 + <p>
  326 + <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.downloadbase()">{{{a3}}}</a>
  327 + </p>
  328 + <p>
  329 + <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.importarwmc()">{{{a3a}}}</a>
  330 + </p>
  331 + <p>
  332 + <!-- <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.nuvemTags()">{{{a5a}}}</a> -->
  333 + </p>
  334 + <p>
  335 + <!-- <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.carouselTemas()">Miniaturas</a> -->
  336 + </p>
  337 + <p>
  338 + <a href="javascript:void(0)" onclick="i3GEO.arvoreDeTemas.dialogo.buscaInde()">Busca na INDE</a>
  339 + </p>
  340 + <p>
  341 + <a href="javascript:void(0)" onclick="i3GEO.mapa.dialogo.metaestat()">Cartogramas estatisticos</a>
  342 + </p>
  343 + <p>
  344 + <a href="http://localhost/i3geo/kml.php?tipoxml=kml" target="_blank">{{{a13}}}</a>
  345 + </p>
  346 +
  347 + </div>
  348 + </div>
  349 + <hr>
  350 + <!-- busca tema no catalogo
331 <div class="form-group label-floating"> 351 <div class="form-group label-floating">
332 <label class="control-label" for="i3GEObuscatema">{{{a1}}}</label> 352 <label class="control-label" for="i3GEObuscatema">{{{a1}}}</label>
333 <div class="input-group"> 353 <div class="input-group">
@@ -340,18 +360,18 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -340,18 +360,18 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
340 </div> 360 </div>
341 </div> 361 </div>
342 --> 362 -->
343 - <!-- A lista de menus e uma funcao de i3GEO.guias.CONFIGURA.adiciona 363 + <!-- A lista de menus e uma funcao de i3GEO.guias.CONFIGURA.adiciona
344 Nessa funcao ficam tambem os parametros: 364 Nessa funcao ficam tambem os parametros:
345 "idOndeMenus": "catalogoMenus", 365 "idOndeMenus": "catalogoMenus",
346 "idCatalogoPrincipal": "catalogoPrincipal", 366 "idCatalogoPrincipal": "catalogoPrincipal",
347 "idCatalogoNavegacao": "catalogoNavegacao", 367 "idCatalogoNavegacao": "catalogoNavegacao",
348 "idOndeMigalha": "catalogoMigalha" 368 "idOndeMigalha": "catalogoMigalha"
349 --> 369 -->
350 - <div id="catalogoMenus" data-templateDir="../interface/templates/dir.html" data-templateTema="../interface/templates/tema.html"></div> 370 + <div id="catalogoMenus" data-templateDir="../interface/templates/dir.html" data-templateTema="../interface/templates/tema.html"></div>
351 371
352 - <div id="arvoreAdicionaTema"></div> 372 + <div id="arvoreAdicionaTema"></div>
353 373
354 - <!-- 374 + <!--
355 As funcoes de inicializacao recebem um objeto com parametros. Que por padrao sao: 375 As funcoes de inicializacao recebem um objeto com parametros. Que por padrao sao:
356 config: { 376 config: {
357 'templateDir': '../interface/templates/dir.html', 377 'templateDir': '../interface/templates/dir.html',
@@ -366,43 +386,63 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -366,43 +386,63 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
366 onclick="i3GEO.catalogoInde.inicia({'templateDir': '../interface/templates/dir.html','templateTema': '../interface/templates/tema.html','idCatalogoPrincipal':'catalogoPrincipal','idCatalogoNavegacao':'catalogoNavegacao','idOndeMigalha':'catalogoMigalha'})" 386 onclick="i3GEO.catalogoInde.inicia({'templateDir': '../interface/templates/dir.html','templateTema': '../interface/templates/tema.html','idCatalogoPrincipal':'catalogoPrincipal','idCatalogoNavegacao':'catalogoNavegacao','idOndeMigalha':'catalogoMigalha'})"
367 --> 387 -->
368 388
369 - <!-- servicos da INDE brasileira -->  
370 - <div class="list-group condensed"><div class="row-content text-left">  
371 - <a onclick="i3GEO.catalogoInde.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
372 - <label style="width: 255px;vertical-align: middle;">  
373 - <a onclick="i3GEO.catalogoInde.inicia()" role="button" href="javascript:void(0)">  
374 - <h4>INDE-Br</h4></a>  
375 - <h6>Infraestrutura Nacional de Dados Espaciais do Brasil</h6>  
376 - </label>  
377 - </div></div><hr>  
378 - <!-- lista de wms cadastrados no sistema de administracao -->  
379 - <div class="list-group condensed"><div class="row-content text-left">  
380 - <a onclick="i3GEO.catalogoOgc.inicia();return false;" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
381 - <label style="width: 255px;vertical-align: middle;">  
382 - <a onclick="i3GEO.catalogoOgc.inicia()" role="button" href="javascript:void(0)">  
383 - <h4>OGC-WMS</h4></a>  
384 - <h6>{{{descOgcWms}}}</h6>  
385 - </label>  
386 - </div></div><hr>  
387 - <!-- regioes cadastradas no sistema de metadados -->  
388 - <div class="list-group condensed"><div class="row-content text-left">  
389 - <a onclick="i3GEO.catalogoRegioes.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
390 - <label style="width: 255px;vertical-align: middle;">  
391 - <a onclick="i3GEO.catalogoRegioes.inicia()" role="button" href="javascript:void(0)">  
392 - <h4>{{{x87}}}</h4></a>  
393 - <h6>{{{descLimLoc}}}</h6>  
394 - </label>  
395 - </div></div><hr>  
396 - <!-- camadas que vem do sistema de metadados estatisticos -->  
397 - <div class="list-group condensed"><div class="row-content text-left">  
398 - <a onclick="i3GEO.catalogoMetaestat.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
399 - <label style="width: 255px;vertical-align: middle;">  
400 - <a onclick="i3GEO.catalogoMetaestat.inicia()" role="button" href="javascript:void(0)">  
401 - <h4>{{{x57}}}</h4></a>  
402 - <h6>{{{descMeta}}}</h6>  
403 - </label>  
404 - </div></div><hr>  
405 - <!-- mapas cadastrados no sistema de administracao (nao funcional) 389 + <!-- servicos da INDE brasileira -->
  390 + <div class="list-group condensed">
  391 + <div class="row-content text-left">
  392 + <a onclick="i3GEO.catalogoInde.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  393 + <span class="material-icons ">folder_open</span>
  394 + </a>
  395 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoInde.inicia()" role="button" href="javascript:void(0)">
  396 + <h4>INDE-Br</h4>
  397 + </a>
  398 + <h6>Infraestrutura Nacional de Dados Espaciais do Brasil</h6>
  399 + </label>
  400 + </div>
  401 + </div>
  402 + <hr>
  403 + <!-- lista de wms cadastrados no sistema de administracao -->
  404 + <div class="list-group condensed">
  405 + <div class="row-content text-left">
  406 + <a onclick="i3GEO.catalogoOgc.inicia();return false;" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  407 + <span class="material-icons ">folder_open</span>
  408 + </a>
  409 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoOgc.inicia()" role="button" href="javascript:void(0)">
  410 + <h4>OGC-WMS</h4>
  411 + </a>
  412 + <h6>{{{descOgcWms}}}</h6>
  413 + </label>
  414 + </div>
  415 + </div>
  416 + <hr>
  417 + <!-- regioes cadastradas no sistema de metadados -->
  418 + <div class="list-group condensed">
  419 + <div class="row-content text-left">
  420 + <a onclick="i3GEO.catalogoRegioes.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  421 + <span class="material-icons ">folder_open</span>
  422 + </a>
  423 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoRegioes.inicia()" role="button" href="javascript:void(0)">
  424 + <h4>{{{x87}}}</h4>
  425 + </a>
  426 + <h6>{{{descLimLoc}}}</h6>
  427 + </label>
  428 + </div>
  429 + </div>
  430 + <hr>
  431 + <!-- camadas que vem do sistema de metadados estatisticos -->
  432 + <div class="list-group condensed">
  433 + <div class="row-content text-left">
  434 + <a onclick="i3GEO.catalogoMetaestat.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  435 + <span class="material-icons ">folder_open</span>
  436 + </a>
  437 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoMetaestat.inicia()" role="button" href="javascript:void(0)">
  438 + <h4>{{{x57}}}</h4>
  439 + </a>
  440 + <h6>{{{descMeta}}}</h6>
  441 + </label>
  442 + </div>
  443 + </div>
  444 + <hr>
  445 + <!-- mapas cadastrados no sistema de administracao (nao funcional)
406 <div class="list-group condensed"><div class="row-content text-left"> 446 <div class="list-group condensed"><div class="row-content text-left">
407 <a onclick="i3GEO.catalogoMapas.inicia({'seletorTemplateDir': '#guia2objTemplateDir','seletorTemplateTema': '#guia2objTemplateTema','idCatalogoPrincipal':'catalogoPrincipal','idCatalogoNavegacao':'catalogoNavegacao','idOndeMigalha':'catalogoMigalha'})" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a> 447 <a onclick="i3GEO.catalogoMapas.inicia({'seletorTemplateDir': '#guia2objTemplateDir','seletorTemplateTema': '#guia2objTemplateTema','idCatalogoPrincipal':'catalogoPrincipal','idCatalogoNavegacao':'catalogoNavegacao','idOndeMigalha':'catalogoMigalha'})" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>
408 <label style="width: 255px;vertical-align: middle;"> 448 <label style="width: 255px;vertical-align: middle;">
@@ -412,92 +452,107 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -412,92 +452,107 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
412 </label> 452 </label>
413 </div></div><hr> 453 </div></div><hr>
414 --> 454 -->
415 - <!-- camadas por estrelas -->  
416 - <div class="list-group condensed"><div class="row-content text-left">  
417 - <a onclick="i3GEO.catalogoEstrelas.inicia({'valorEstrela':5,'numEstrelas':1})" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
418 - <label style="width: 255px;vertical-align: middle;">  
419 - <a onclick="i3GEO.catalogoEstrelas.inicia({'valorEstrela':5,'numEstrelas':1})" role="button" href="javascript:void(0)">  
420 - <h4>{{{t46}}}</h4></a>  
421 - <h6>{{{descEstrelas}}}</h6>  
422 - </label>  
423 - </div></div><hr>  
424 - <!-- sistemas que adicionam camadas -->  
425 - <div class="list-group condensed"><div class="row-content text-left">  
426 - <a onclick="i3GEO.catalogoSistemas.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
427 - <label style="width: 255px;vertical-align: middle;">  
428 - <a onclick="i3GEO.catalogoSistemas.inicia()" role="button" href="javascript:void(0)">  
429 - <h4>{{{a11}}}</h4></a>  
430 - <h6>{{{descSistemas}}}</h6>  
431 - </label>  
432 - </div></div><hr>  
433 - <!-- navegacao em diretorios -->  
434 - <div class="list-group condensed"><div class="row-content text-left">  
435 - <a onclick="i3GEO.catalogoDir.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)"><span class="material-icons ">folder_open</span></a>  
436 - <label style="width: 255px;vertical-align: middle;">  
437 - <a onclick="i3GEO.catalogoDir.inicia()" role="button" href="javascript:void(0)">  
438 - <h4>{{{a6}}}</h4></a>  
439 - <h6>{{{descDir}}}</h6>  
440 - </label>  
441 - </div></div><hr>  
442 - </div>  
443 - </div>  
444 - <!-- Legenda -->  
445 - <div data-traduzir="true" id='guia4obj' style='display: none; text-align: left'>  
446 - <div class="i3GEOfechaGuia" onclick="i3GEO.legenda.off('legendaHtml');i3GEO.guias.abreFecha('fecha');"><span class="pull-left">{{{iconeLegenda}}}</span>X</div>  
447 - <div class="separadorCabecalhoGuias">&nbsp;</div>  
448 - <a href='javascript:void(0)' onclick="i3GEO.legenda.inicia({'janela':true})" >{{{x11}}}</a>  
449 - <div id="legendaHtml" data-template="../interface/templates/legenda.html" data-size="35,25" style='display: none; text-align: left'></div>  
450 - </div>  
451 - <!-- busca 455 + <!-- camadas por estrelas -->
  456 + <div class="list-group condensed">
  457 + <div class="row-content text-left">
  458 + <a onclick="i3GEO.catalogoEstrelas.inicia({'valorEstrela':5,'numEstrelas':1})" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  459 + <span class="material-icons ">folder_open</span>
  460 + </a>
  461 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoEstrelas.inicia({'valorEstrela':5,'numEstrelas':1})" role="button"
  462 + href="javascript:void(0)">
  463 + <h4>{{{t46}}}</h4>
  464 + </a>
  465 + <h6>{{{descEstrelas}}}</h6>
  466 + </label>
  467 + </div>
  468 + </div>
  469 + <hr>
  470 + <!-- sistemas que adicionam camadas -->
  471 + <div class="list-group condensed">
  472 + <div class="row-content text-left">
  473 + <a onclick="i3GEO.catalogoSistemas.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  474 + <span class="material-icons ">folder_open</span>
  475 + </a>
  476 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoSistemas.inicia()" role="button" href="javascript:void(0)">
  477 + <h4>{{{a11}}}</h4>
  478 + </a>
  479 + <h6>{{{descSistemas}}}</h6>
  480 + </label>
  481 + </div>
  482 + </div>
  483 + <hr>
  484 + <!-- navegacao em diretorios -->
  485 + <div class="list-group condensed">
  486 + <div class="row-content text-left">
  487 + <a onclick="i3GEO.catalogoDir.inicia()" role="button" class="btn btn-primary btn-fab btn-fab-max" href="javascript:void(0)">
  488 + <span class="material-icons ">folder_open</span>
  489 + </a>
  490 + <label style="width: 255px; vertical-align: middle;"> <a onclick="i3GEO.catalogoDir.inicia()" role="button" href="javascript:void(0)">
  491 + <h4>{{{a6}}}</h4>
  492 + </a>
  493 + <h6>{{{descDir}}}</h6>
  494 + </label>
  495 + </div>
  496 + </div>
  497 + <hr>
  498 + </div>
  499 + </div>
  500 + <!-- Legenda -->
  501 + <div data-traduzir="true" id='guia4obj' style='display: none; text-align: left'>
  502 + <div class="i3GEOfechaGuia" onclick="i3GEO.legenda.off('legendaHtml');i3GEO.guias.abreFecha('fecha');">
  503 + <button>
  504 + <span class="pull-left">{{{iconeLegenda}}}</span>
  505 + <span class="pull-right material-icons">cancel</span>
  506 + </button>
  507 + </div>
  508 + <div class="separadorCabecalhoGuias">&nbsp;</div>
  509 + <a href='javascript:void(0)' onclick="i3GEO.legenda.inicia({'janela':true})">{{{x11}}}</a>
  510 + <div id="legendaHtml" data-template="../interface/templates/legenda.html" data-size="35,25" style='display: none; text-align: left'></div>
  511 + </div>
  512 + <!-- busca
452 Funcoes de busca por registros. Pode ser feita nos temas existentes no mapa, em um servico de busca e no google 513 Funcoes de busca por registros. Pode ser feita nos temas existentes no mapa, em um servico de busca e no google
453 No botao que dispara a busca, ficam os parametros de configuracao 514 No botao que dispara a busca, ficam os parametros de configuracao
454 Esses parametros indicam qual o checkbox que define o tipo de busca, o local onde os dados serao mostrados e o template para formatar o resultado 515 Esses parametros indicam qual o checkbox que define o tipo de busca, o local onde os dados serao mostrados e o template para formatar o resultado
455 --> 516 -->
456 - <div data-traduzir="true" id='guia7obj' style='display: none; text-align: left'>  
457 - <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');"><span class="pull-left">{{{t23}}}</span> X</div>  
458 - <div class="separadorCabecalhoGuias">&nbsp;</div>  
459 - <form onSubmit="return false;" >  
460 - <div class="form-group label-floating">  
461 - <label class="control-label" for="valorBuscaRapida">{{{x36}}}</label>  
462 - <div class="input-group">  
463 - <input class="form-control" type="text" value="" name="valorBuscaRapida">  
464 - <span class="input-group-btn">  
465 - <a onclick="i3GEO.busca.inicia(this);return false;"  
466 - data-templateGoogle="../interface/templates/buscaEmTemas.html"  
467 - data-inputGoogle="[name=google]"  
468 - data-ondeGoogle=".i3GEOresultadoBuscaGoogle"  
469 - data-templateTemasMapa="../interface/templates/buscaEmTemas.html"  
470 - data-inputTemasMapa="[name=temasMapa]"  
471 - data-ondeTemasMapa=".i3GEOresultadoBuscaTemasMapa"  
472 - data-templateServico="../interface/templates/buscaEmServico.html"  
473 - data-ondeConteiner="#guia7obj"  
474 - data-inputOndePalavra="[name=valorBuscaRapida]"  
475 - data-inputServicosExternos="[name=servicosExternos]"  
476 - data-ondeServicosExternos=".i3GEOresultadoBuscaServicos" role="button" type="button" class="btn btn-warning btn-fab btn-fab-max" href="javascript:void(0)">  
477 - <span class="material-icons ">send</span>  
478 - </a>  
479 - </span>  
480 - </div>  
481 - </div>  
482 - <h4>{{{x37}}}:</h4>  
483 - <div class="form-inline" style="width:100%;">  
484 - <div class="list-group condensed">  
485 - <div class="checkbox text-left">  
486 - <label>  
487 - <input checked class="noprint" value="on" type="checkbox" value="" name="servicosExternos" >  
488 - <span class="checkbox-material noprint"><span class="check"></span></span> {{{x38}}}  
489 - </label>  
490 - </div>  
491 - </div>  
492 - <div class="list-group condensed">  
493 - <div class="checkbox text-left">  
494 - <label>  
495 - <input class="noprint" value="on" type="checkbox" name="temasMapa">  
496 - <span class="checkbox-material noprint"><span class="check"></span></span> {{{x39}}}  
497 - </label>  
498 - </div>  
499 - </div>  
500 - <!-- Apenas para a interface google maps 517 + <div data-traduzir="true" id='guia7obj' style='display: none; text-align: left'>
  518 + <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');">
  519 + <button>
  520 + <span class="pull-left">{{{t23}}}</span>
  521 + <span class="pull-right material-icons">cancel</span>
  522 + </button>
  523 + </div>
  524 + <div class="separadorCabecalhoGuias">&nbsp;</div>
  525 + <form onSubmit="return false;">
  526 + <div class="form-group label-floating">
  527 + <label class="control-label" for="valorBuscaRapida">{{{x36}}}</label>
  528 + <div class="input-group">
  529 + <input class="form-control" type="text" value="" name="valorBuscaRapida"> <span class="input-group-btn"> <a onclick="i3GEO.busca.inicia(this);return false;"
  530 + data-templateGoogle="../interface/templates/buscaEmTemas.html" data-inputGoogle="[name=google]" data-ondeGoogle=".i3GEOresultadoBuscaGoogle"
  531 + data-templateTemasMapa="../interface/templates/buscaEmTemas.html" data-inputTemasMapa="[name=temasMapa]" data-ondeTemasMapa=".i3GEOresultadoBuscaTemasMapa"
  532 + data-templateServico="../interface/templates/buscaEmServico.html" data-ondeConteiner="#guia7obj" data-inputOndePalavra="[name=valorBuscaRapida]"
  533 + data-inputServicosExternos="[name=servicosExternos]" data-ondeServicosExternos=".i3GEOresultadoBuscaServicos" role="button" type="button"
  534 + class="btn btn-warning btn-fab btn-fab-max" href="javascript:void(0)">
  535 + <span class="material-icons ">send</span>
  536 + </a>
  537 + </span>
  538 + </div>
  539 + </div>
  540 + <h4>{{{x37}}}:</h4>
  541 + <div class="form-inline" style="width: 100%;">
  542 + <div class="list-group condensed">
  543 + <div class="checkbox text-left">
  544 + <label> <input checked class="noprint" value="on" type="checkbox" value="" name="servicosExternos"> <span class="checkbox-material noprint"><span class="check"></span></span>
  545 + {{{x38}}}
  546 + </label>
  547 + </div>
  548 + </div>
  549 + <div class="list-group condensed">
  550 + <div class="checkbox text-left">
  551 + <label> <input class="noprint" value="on" type="checkbox" name="temasMapa"> <span class="checkbox-material noprint"><span class="check"></span></span> {{{x39}}}
  552 + </label>
  553 + </div>
  554 + </div>
  555 + <!-- Apenas para a interface google maps
501 <div class="list-group condensed"> 556 <div class="list-group condensed">
502 <div class="checkbox text-left"> 557 <div class="checkbox text-left">
503 <label> 558 <label>
@@ -507,55 +562,60 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -507,55 +562,60 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
507 </div> 562 </div>
508 </div> 563 </div>
509 --> 564 -->
510 - </div>  
511 - </form>  
512 - <hr>  
513 - <div class="i3GEOresultadoBuscaServicos" ></div>  
514 - <div class="i3GEOresultadoBuscaTemasMapa" ></div>  
515 - <div class="i3GEOresultadoBuscaGoogle" ></div>  
516 - <div class="alert alert-info" role="alert">{{{x40}}}</div>  
517 - </div>  
518 - <!-- Ferramentas -->  
519 - <div data-traduzir="true" id='guia8obj' style='display: none; text-align: left'>  
520 - <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');"><span class="pull-left">{{{iconeFerramentas}}}</span> X</div>  
521 - <div class="separadorCabecalhoGuias">&nbsp;</div>  
522 - <div class="form-inline" style="width:100%;">  
523 - <div class="text-center form-group" style="margin:4px;">  
524 - <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.analise.dialogo.area();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">  
525 - <img style="margin-top:4px;" src="../imagens/gisicons/area-measure.png">  
526 - </a>  
527 - <h6>{{{d21at}}}</h6>  
528 - </div>  
529 - <div class="text-center form-group" style="margin:4px;">  
530 - <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.analise.dialogo.distancia();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">  
531 - <img style="margin-top:4px;" src="../imagens/gisicons/length-measure.png">  
532 - </a>  
533 - <h6>{{{d21t}}}</h6>  
534 - </div>  
535 - <div class="text-center form-group" style="margin:4px;">  
536 - <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.mapa.dialogo.selecao();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">  
537 - <img style="margin-top:4px;" src="../imagens/gisicons/select.png">  
538 - </a>  
539 - <h6>{{{d24t}}}</h6>  
540 - </div>  
541 - <div class="text-center form-group" style="margin:4px;">  
542 - <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.mapa.dialogo.geolocal();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">  
543 - <img style="margin-top:4px;" src="../imagens/gisicons/layer-gps.png">  
544 - </a>  
545 - <h6>{{{localiza}}}</h6>  
546 - </div>  
547 - </div>  
548 - <div class="clearfix"></div>  
549 - <hr>  
550 - <div id="migalhaFerramentas" data-template="../interface/templates/ferramentasMigalha.html" style='display: block; text-align: left;'></div>  
551 - <div id="listaFerramentasLinks" data-template="../interface/templates/ferramentasLink.html" style='display: block; text-align: left'></div>  
552 - <div id="listaFerramentas" data-template="../interface/templates/ferramentasFolder.html" style='display: block; text-align: left'></div>  
553 - </div>  
554 - </div>  
555 - </div>  
556 - </div>  
557 - <!-- para mostrar o banner de abertura -->  
558 - <script id="i3GEOlogoMarcaTemplate" type="x-tmpl-mustache"> 565 + </div>
  566 + </form>
  567 + <hr>
  568 + <div class="i3GEOresultadoBuscaServicos"></div>
  569 + <div class="i3GEOresultadoBuscaTemasMapa"></div>
  570 + <div class="i3GEOresultadoBuscaGoogle"></div>
  571 + <div class="alert alert-info" role="alert">{{{x40}}}</div>
  572 + </div>
  573 + <!-- Ferramentas -->
  574 + <div data-traduzir="true" id='guia8obj' style='display: none; text-align: left'>
  575 + <div class="i3GEOfechaGuia" onclick="i3GEO.guias.abreFecha('fecha');">
  576 + <button>
  577 + <span class="pull-left">{{{iconeFerramentas}}}</span>
  578 + <span class="pull-right material-icons">cancel</span>
  579 + </button>
  580 + </div>
  581 + <div class="separadorCabecalhoGuias">&nbsp;</div>
  582 + <div class="form-inline" style="width: 100%;">
  583 + <div class="text-center form-group" style="margin: 4px;">
  584 + <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.analise.dialogo.area();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">
  585 + <img style="margin-top: 4px;" src="../imagens/gisicons/area-measure.png">
  586 + </a>
  587 + <h6>{{{d21at}}}</h6>
  588 + </div>
  589 + <div class="text-center form-group" style="margin: 4px;">
  590 + <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.analise.dialogo.distancia();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">
  591 + <img style="margin-top: 4px;" src="../imagens/gisicons/length-measure.png">
  592 + </a>
  593 + <h6>{{{d21t}}}</h6>
  594 + </div>
  595 + <div class="text-center form-group" style="margin: 4px;">
  596 + <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.mapa.dialogo.selecao();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">
  597 + <img style="margin-top: 4px;" src="../imagens/gisicons/select.png">
  598 + </a>
  599 + <h6>{{{d24t}}}</h6>
  600 + </div>
  601 + <div class="text-center form-group" style="margin: 4px;">
  602 + <a onclick="i3GEO.guias.abreFecha('fecha');i3GEO.mapa.dialogo.geolocal();" role="button" class="btn btn-success btn-fab btn-fab-max" href="javascript:void(0)">
  603 + <img style="margin-top: 4px;" src="../imagens/gisicons/layer-gps.png">
  604 + </a>
  605 + <h6>{{{localiza}}}</h6>
  606 + </div>
  607 + </div>
  608 + <div class="clearfix"></div>
  609 + <hr>
  610 + <div id="migalhaFerramentas" data-template="../interface/templates/ferramentasMigalha.html" style='display: block; text-align: left;'></div>
  611 + <div id="listaFerramentasLinks" data-template="../interface/templates/ferramentasLink.html" style='display: block; text-align: left'></div>
  612 + <div id="listaFerramentas" data-template="../interface/templates/ferramentasFolder.html" style='display: block; text-align: left'></div>
  613 + </div>
  614 + </div>
  615 + </div>
  616 + </div>
  617 + <!-- para mostrar o banner de abertura -->
  618 + <script id="i3GEOlogoMarcaTemplate" type="x-tmpl-mustache">
559 <div> 619 <div>
560 <table> 620 <table>
561 <tr> 621 <tr>
@@ -573,7 +633,7 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -573,7 +633,7 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
573 <div>&nbsp;</div> 633 <div>&nbsp;</div>
574 </div> 634 </div>
575 </script> 635 </script>
576 - <script> 636 + <script>
577 //ativa o banner de inicializacao 637 //ativa o banner de inicializacao
578 i3GEO.janela.tempoMsg($i("i3GEOlogoMarcaTemplate").innerHTML,4000); 638 i3GEO.janela.tempoMsg($i("i3GEOlogoMarcaTemplate").innerHTML,4000);
579 (function() { 639 (function() {
@@ -727,7 +787,7 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) { @@ -727,7 +787,7 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
727 theme: "inset-2", 787 theme: "inset-2",
728 axis: "yx", 788 axis: "yx",
729 scrollbarPosition: "inside", 789 scrollbarPosition: "inside",
730 - scrollButtons:{ enable: true }, 790 + scrollButtons:{ enable: false },
731 advanced:{ autoExpandHorizontalScroll: true } 791 advanced:{ autoExpandHorizontalScroll: true }
732 } 792 }
733 }, 793 },
classesphp/classe_alteraclasse.php
1 -<?php  
2 -/*  
3 - Title: classe_alteraclasse.php  
4 -  
5 -Manipula&ccedil;&atilde;o de classes e estilos de um layer  
6 -  
7 -Licenca:  
8 -  
9 -GPL2  
10 -  
11 -i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet  
12 -  
13 -Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil  
14 -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com  
15 -  
16 -Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo  
17 -e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral  
18 -GNU conforme publicada pela Free Software Foundation;  
19 -  
20 -Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,  
21 -por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita  
22 -de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.  
23 -Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.  
24 -Voc&ecirc; deve ter recebido uma copia da Licen&ccedil;a P&uacute;blica Geral do  
25 - GNU junto com este programa; se n&atilde;o, escreva para a  
26 -Free Software Foundation, Inc., no endere&ccedil;o  
27 -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.  
28 -  
29 -Arquivo:  
30 -  
31 -i3geo/classesphp/classe_alteraclasse.php  
32 -*/  
33 -/*  
34 - Classe: Alteraclasse  
35 -  
36 -Opera&ccedil;&otilde;es que alteram as classes da legenda de um tema existente no mapa.  
37 -As modifica&ccedil;&otilde;es permitem contruir novas legendas para cada tema.  
38 -*/  
39 -class Alteraclasse  
40 -{  
41 - /*  
42 - Variavel: $mapa  
43 -  
44 - Objeto mapa  
45 - */  
46 - public $mapa;  
47 - /*  
48 - Variavel: $arquivo  
49 -  
50 - Arquivo map file  
51 - */  
52 - protected $arquivo;  
53 - /*  
54 - Variavel: $layer  
55 -  
56 - Objeto layer  
57 - */  
58 - public $layer;  
59 - /*  
60 - Variavel: $nome  
61 -  
62 - Nome do layer  
63 - */  
64 - protected $nome;  
65 - /*  
66 - Function: __construct  
67 -  
68 - Cria um objeto Alteraclasse  
69 -  
70 - Parametros:  
71 -  
72 - $map_file - Endere&ccedil;o do mapfile no servidor.  
73 -  
74 - $tema - nome do tema  
75 - */  
76 - function __construct($map_file,$tema="",$locaplic="",$ext="")  
77 - {  
78 - include(dirname(__FILE__)."/../ms_configura.php");  
79 - $this->postgis_mapa = $postgis_mapa;  
80 -  
81 - include_once(dirname(__FILE__)."/funcoes_gerais.php");  
82 -  
83 - $this->locaplic = $locaplic;  
84 -  
85 - $this->mapa = ms_newMapObj($map_file);  
86 - substituiConObj($this->mapa,$postgis_mapa);  
87 -  
88 - $this->arquivo = str_replace(".map","",$map_file).".map";  
89 - $this->layer = "";  
90 - if($tema != "" && @$this->mapa->getlayerbyname($tema)){  
91 - $this->layer = $this->mapa->getlayerbyname($tema);  
92 - }  
93 - $this->nome = $tema;  
94 - if($ext && $ext != ""){  
95 - $e = explode(" ",$ext);  
96 - $extatual = $this->mapa->extent;  
97 - $extatual->setextent((min($e[0],$e[2])),(min($e[1],$e[3])),(max($e[0],$e[2])),(max($e[1],$e[3])));  
98 - }  
99 - }  
100 - /*  
101 - function: salva  
102 -  
103 - Salva o mapfile atual  
104 -  
105 - */  
106 - function salva()  
107 - {  
108 - restauraConObj($this->mapa,$this->postgis_mapa);  
109 - $this->mapa->save($this->arquivo);  
110 - }  
111 - /*  
112 - Function: aplicacoresrgb  
113 -  
114 - Aplica cores nas classes atuais conforme uma lista de cores em RGB  
115 -  
116 - Parametro:  
117 -  
118 - cores {array} - array com a lista de valores RGB  
119 - */  
120 - function aplicacoresrgb($cores)  
121 - {  
122 - if(!$this->layer){  
123 - return "erro";  
124 - }  
125 - $numclasses = $this->layer->numclasses;  
126 - if ($numclasses > 0)  
127 - {  
128 - for ($i=0; $i < $numclasses; ++$i)  
129 - {  
130 - $classe = $this->layer->getClass($i);  
131 - $estilo = $classe->getstyle(0);  
132 - if($cores[$i])  
133 - {  
134 - $cor = explode(",",$cores[$i]);  
135 - $ncor = $estilo->color;  
136 - $ncor->setrgb($cor[0],$cor[1],$cor[2]);  
137 - }  
138 - }  
139 - }  
140 - $this->layer->setMetaData("cache","");  
141 - return("ok");  
142 - }  
143 - /*  
144 - function: simbolounico  
145 -  
146 - Elimina as classes existentes em um objeto layer mantendo apenas a primeira classe.  
147 - Todos os elementos passar&atilde;o a ser desenhados conforme essa primeira classe, uma vez que a express&atilde;o de defini&ccedil;&atilde;o da classe passa a ser vazia.  
148 - */  
149 - function simbolounico()  
150 - {  
151 - if(!$this->layer){  
152 - return "erro";  
153 - }  
154 - $numclasses = $this->layer->numclasses;  
155 - if ($numclasses > 0){  
156 - //elimina a express&atilde;o da primeira classe  
157 - $classe0 = $this->layer->getClass(0);  
158 - //echo "<pre>";var_dump($classe0);exit;  
159 - $classe0->setexpression("");  
160 - $classe0->set("name"," ");  
161 - //apaga todas as classes menos a primeira  
162 - for ($i=1; $i < $numclasses; ++$i)  
163 - {  
164 - $classe = $this->layer->getClass($i);  
165 - $classe->set("status",MS_DELETE);  
166 - }  
167 - }  
168 - else{  
169 - $classe = ms_newClassObj($this->layer);  
170 - $novoestilo = ms_newStyleObj($classe);  
171 - if ($this->layer->type == 0){  
172 - $novoestilo->set("symbolname","ponto");  
173 - $novoestilo->set("size","6");  
174 - }  
175 - $cor = $novoestilo->color;  
176 - $cor->setRGB(255,100,100);  
177 - }  
178 - $this->layer->setMetaData("cache","");  
179 - return("ok");  
180 - }  
181 - /*  
182 - function: alteraclasses  
183 -  
184 - Altera as classes existentes em um objeto layer conforme a lista de &iacute;ndices, nomes e express&otilde;es definidas nos par&acirc;metros passados como argumentos.  
185 -  
186 - Parametros:  
187 -  
188 - $ids - lista de ids, separados por v&iacute;rgula, que identificam as classes no layer  
189 -  
190 - $nomes - lista com os novos nomes  
191 -  
192 - $exps - lista com as novas express&otilde;es  
193 -  
194 - $base64 sim|nao indica se as strings estao codificadas em base64  
195 -  
196 - $minScales - lista com valores para minscaledenom  
197 -  
198 - $maxScales - lista com valores para maxscaledenom  
199 - */  
200 - function alteraclasses($ids,$nomes,$exps,$base64="nao",$minScales="",$maxScales="")  
201 - {  
202 - if($base64 == "sim"){  
203 - //$ids = base64_decode($ids);  
204 - //$nomes = base64_decode($nomes);  
205 - //$exps = base64_decode($exps);  
206 - }  
207 - //prepara os arrays com os valores  
208 - $ids = explode(";",$ids);  
209 - $minScales = explode(";",$minScales);  
210 - $maxScales = explode(";",$maxScales);  
211 -  
212 - $nomes = $this->converteTexto($nomes);  
213 - $nomes = explode(";",$nomes);  
214 - $exps = mb_convert_encoding($exps,"ISO-8859-1","UTF-8");  
215 - $exps = explode(";",$exps);  
216 - //pega os layers existentes no array ids e armazena no array t  
217 - $c = count($ids);  
218 - for ($i=0; $i < $c; ++$i){  
219 - $tx = explode("-",$ids[$i]);  
220 - $t[] = $tx[0];  
221 - }  
222 - //elimina nomes de layers duplicados  
223 - $t = array_unique($t);  
224 - //elimina as classes existentes atualmente em cada layer  
225 - foreach ($t as $tema){  
226 - $layer = $this->mapa->getlayerbyname($tema);  
227 - $layer->setmetadata("cache","");  
228 - $nc = $layer->numclasses;  
229 - if($nc > 0){  
230 - for($i=0;$i < $nc;++$i){  
231 - $class = $layer->getclass($i);  
232 - $class->set("status",MS_DELETE);  
233 - }  
234 - }  
235 - }  
236 - //acrescenta as classes definidas  
237 - $c = count($ids);  
238 - for ($i=0; $i < $c; ++$i){  
239 - $layerc = explode("-",$ids[$i]); //nome do layer &eacute; o indice 0 do array  
240 - $layer = $this->mapa->getlayerbyname($layerc[0]);  
241 - $layer->setMetaData("cache","");  
242 - $ncl = $layer->numclasses;  
243 - if ($layerc[1] < $ncl){  
244 - $classe = $layer->getclass($layerc[1]);  
245 - $classe->set("status",MS_DEFAULT);  
246 - $classe->set("name",$nomes[$i]);  
247 - $e = $exps[$i];  
248 - $e = str_replace("\\","'",$e);  
249 - $e = str_replace('"',"'",$e);  
250 - $e = str_replace("''","'",$e);  
251 - $e = str_replace("##","'",$e);  
252 - $classe->setexpression($e);  
253 - if($minScales[$i]){  
254 - if($minScales[$i] == 0 || $minScales[$i] == ""){  
255 - $minScales[$i] = -1;  
256 - }  
257 - $classe->set("minscaledenom",$minScales[$i]);  
258 - }  
259 - if($maxScales[$i]){  
260 - if($maxScales[$i] == 0 || $maxScales[$i] == ""){  
261 - $maxScales[$i] = -1;  
262 - }  
263 - $classe->set("maxscaledenom",$maxScales[$i]);  
264 - }  
265 - }  
266 - }  
267 - }  
268 - /*  
269 - function: intervalosiguais  
270 -  
271 - Cria classes em um objeto layer com intervalos iguais baseando-se em um item num&eacute;rico na tabela de atributos com um n&uacute;mero de classes fixos.  
272 -  
273 - Parametros:  
274 -  
275 - $item - item da tabela de atributos  
276 -  
277 - $nclasses - n&uacute;mero de classes  
278 -  
279 - $ignorar - valor que ser&aacute; ignorado na listagem final  
280 - */  
281 - function intervalosiguais($item,$nclasses,$ignorar)  
282 - {  
283 - if(!$this->layer){  
284 - return "erro";  
285 - }  
286 - $valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);  
287 - if (count($valores) > 0)  
288 - {  
289 - //calcula o menor valor e o maior valor  
290 - $min = min($valores);  
291 - $max = max($valores);  
292 - $intervalo = ($max - $min) / $nclasses;  
293 - $numclassesatual = $this->layer->numclasses;  
294 - //apaga todas as classes existentes  
295 - $classetemp = $this->layer->getClass(0);  
296 - $estilotemp = $classetemp->getStyle(0);  
297 - for ($i=0; $i < $numclassesatual; ++$i)  
298 - {  
299 - $classe = $this->layer->getClass($i);  
300 - $classe->set("status",MS_DELETE);  
301 - }  
302 - //adiciona as classes novas  
303 - $intatual = $min;  
304 - for ($i=0; $i < $nclasses; ++$i)  
305 - {  
306 - if ($i == $nclasses - 1)  
307 - {  
308 - $expressao = "(([".$item."]>=".$intatual.")and([".$item."]<=".($intatual+$intervalo)."))";  
309 - }  
310 - else  
311 - {$expressao = "(([".$item."]>=".$intatual.")and([".$item."]<".($intatual+$intervalo)."))";  
312 - }  
313 - $nomeclasse = ">= ".$intatual." e < que ".($intatual+$intervalo);  
314 - $intatual = $intatual + $intervalo;  
315 - $classe = ms_newClassObj($this->layer);  
316 - $novoestilo = ms_newStyleObj($classe);  
317 - if ($this->layer->type == 0)  
318 - {  
319 - $novoestilo->set("symbolname","ponto");  
320 - $novoestilo->set("size","6");  
321 - }  
322 - $ncor = $novoestilo->color;  
323 - $ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));  
324 - $ncor = $novoestilo->outlinecolor;  
325 - $ncor->setrgb(255,255,255);  
326 - $classe->setexpression($expressao);  
327 - $classe->set("name",$nomeclasse);  
328 - $classe->set("title",($this->layer->name)."+".$i);  
329 - }  
330 - $this->layer->setMetaData("cache","");  
331 - return ("ok");  
332 - }  
333 - else  
334 - {return ("erro. Nenhum valor numerico no item");  
335 - }  
336 - }  
337 - /*  
338 - function: metade  
339 -  
340 - Classifica os dados em duas classes, a primeira concentra os registros que somados correspondem &agrave; primeira metade do total e a segunda classe corresponde &agrave; segunda metade  
341 -  
342 - Parametros:  
343 -  
344 - $item - item da tabela de atributos  
345 -  
346 - $itemid - item que identifica unicamente cada registro  
347 -  
348 - $ignorar - valor que ser&aacute; ignorado na listagem final  
349 - */  
350 - function metade($item,$itemid,$ignorar)  
351 - {  
352 - if(!$this->layer){  
353 - return "erro";  
354 - }  
355 - //cria um array contendo o id como chave e o valor  
356 - $valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);  
357 - $ids = $this->pegaValores($this->mapa,$this->layer,$itemid,false,$ignorar);  
358 - $lista = array();  
359 - for ($i = 0; $i < count($valores); ++$i){  
360 - $lista[$ids[$i]] = $valores[$i];  
361 - }  
362 -  
363 - if (count($lista) > 0){  
364 - asort($lista);  
365 - //$valores = array_unique($valores);  
366 - $numValues = count($lista);  
367 - //soma os valores  
368 - $total = array_sum($lista);  
369 - //metade  
370 - $metade = $total / 2;  
371 - //separa os dados em dois conjuntos  
372 - $metadeInf = array();  
373 - $metadeSup = array();  
374 - $IdNumerico = true;  
375 - $soma = 0;  
376 - $somaInf = 0;  
377 - $somaSup = 0;  
378 - $maxMetade1 = 0;  
379 - foreach ($lista as $k => $v) {  
380 - $soma = $soma + $v;  
381 - if($soma < $metade){  
382 - $metadeInf[] = $k;  
383 - $somaInf = $soma;  
384 - $maxMetade1 = $v;  
385 - }  
386 - else{  
387 - $metadeSup[] = $k;  
388 - $somaSup = $somaSup + $v;  
389 - }  
390 - }  
391 - $percInf = ($somaInf * 100) / $total;  
392 - $percSup = ($somaSup * 100) / $total;  
393 -  
394 - $numclassesatual = $this->layer->numclasses;  
395 - //apaga todas as classes existentes  
396 - $classetemp = $this->layer->getClass(0);  
397 - $estilotemp = $classetemp->getStyle(0);  
398 - for ($i=0; $i < $numclassesatual; ++$i){  
399 - $classe = $this->layer->getClass($i);  
400 - $classe->set("status",MS_DELETE);  
401 - }  
402 - //adiciona as classes novas  
403 - $expressao = "('[".$itemid."]'in'".implode(",",$metadeInf)."')";  
404 - $nomeclasse = "Tot ".$somaInf.' ('.round($percInf,2).'%) Max: '.$maxMetade1;  
405 - $classe = ms_newClassObj($this->layer);  
406 - $novoestilo = ms_newStyleObj($classe);  
407 - if ($this->layer->type == 0){  
408 - $novoestilo->set("symbolname","ponto");  
409 - $novoestilo->set("size","6");  
410 - }  
411 - $ncor = $novoestilo->color;  
412 - $ncor->setrgb(246,183,134);  
413 - $ncor = $novoestilo->outlinecolor;  
414 - $ncor->setrgb(255,255,255);  
415 - $classe->setexpression($expressao);  
416 - $classe->set("name",$nomeclasse);  
417 -  
418 - $expressao = "('[".$itemid."]'in'".implode(",",$metadeSup)."')";  
419 - $nomeclasse = "Tot ".$somaSup.' ('.round($percSup,2).'%) ';  
420 - $classe = ms_newClassObj($this->layer);  
421 - $novoestilo = ms_newStyleObj($classe);  
422 - if ($this->layer->type == 0){  
423 - $novoestilo->set("symbolname","ponto");  
424 - $novoestilo->set("size","6");  
425 - }  
426 - $ncor = $novoestilo->color;  
427 - $ncor->setrgb(210,111,111);  
428 - $ncor = $novoestilo->outlinecolor;  
429 - $ncor->setrgb(255,255,255);  
430 - $classe->setexpression($expressao);  
431 - $classe->set("name",$nomeclasse);  
432 -  
433 - $this->layer->setMetaData("cache","");  
434 - return ("ok");  
435 - }  
436 - else{  
437 - return ("erro. Nenhum valor numerico no item");  
438 - }  
439 - }  
440 - /*  
441 - function: classemedia  
442 -  
443 - Classifica os dados em duas classes, a primeira concentra os registros que est&atilde;o abaixo da m&eacute;dia e a segunda aqueles que s&atilde;o iguais ou superiores a m&eacute;dia 1 +<?php
444 2
445 - Parametros: 3 +/*
  4 + * Title: classe_alteraclasse.php
  5 + *
  6 + * Manipula&ccedil;&atilde;o de classes e estilos de um layer
  7 + *
  8 + * Licenca:
  9 + *
  10 + * GPL2
  11 + *
  12 + * i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  13 + *
  14 + * Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil
  15 + * Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
  16 + *
  17 + * Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
  18 + * e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
  19 + * GNU conforme publicada pela Free Software Foundation;
  20 + *
  21 + * Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
  22 + * por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
  23 + * de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
  24 + * Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
  25 + * Voc&ecirc; deve ter recebido uma copia da Licen&ccedil;a P&uacute;blica Geral do
  26 + * GNU junto com este programa; se n&atilde;o, escreva para a
  27 + * Free Software Foundation, Inc., no endere&ccedil;o
  28 + * 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  29 + *
  30 + * Arquivo:
  31 + *
  32 + * i3geo/classesphp/classe_alteraclasse.php
  33 + */
  34 +/*
  35 + * Classe: Alteraclasse
  36 + *
  37 + * Opera&ccedil;&otilde;es que alteram as classes da legenda de um tema existente no mapa.
  38 + * As modifica&ccedil;&otilde;es permitem contruir novas legendas para cada tema.
  39 + */
  40 +class Alteraclasse
  41 +{
446 42
447 - $item - item da tabela de atributos 43 + /*
  44 + * Variavel: $mapa
  45 + *
  46 + * Objeto mapa
  47 + */
  48 + public $mapa;
448 49
449 - $ignorar - valor que ser&aacute; ignorado na listagem final  
450 - */  
451 - function classemedia($item,$ignorar)  
452 - {  
453 - if(!$this->layer){  
454 - return "erro";  
455 - }  
456 - $valores = $this->pegaValores($this->mapa,$this->layer,$item,false,$ignorar); 50 + /*
  51 + * Variavel: $arquivo
  52 + *
  53 + * Arquivo map file
  54 + */
  55 + protected $arquivo;
457 56
458 - if (count($valores) > 0){  
459 - $media = array_sum($valores) / count($valores); 57 + /*
  58 + * Variavel: $layer
  59 + *
  60 + * Objeto layer
  61 + */
  62 + public $layer;
460 63
461 - $numclassesatual = $this->layer->numclasses;  
462 - //apaga todas as classes existentes  
463 - $classetemp = $this->layer->getClass(0);  
464 - $estilotemp = $classetemp->getStyle(0);  
465 - for ($i=0; $i < $numclassesatual; ++$i){  
466 - $classe = $this->layer->getClass($i);  
467 - $classe->set("status",MS_DELETE);  
468 - }  
469 - //adiciona as classes novas  
470 - $expressao = "([".$item."]<".$media.")";  
471 - $nomeclasse = "< media ".$media;  
472 - $classe = ms_newClassObj($this->layer);  
473 -  
474 - $novoestilo = ms_newStyleObj($classe);  
475 - if ($this->layer->type == 0){  
476 - $novoestilo->set("symbolname","ponto");  
477 - $novoestilo->set("size","6");  
478 - }  
479 - $ncor = $novoestilo->color;  
480 - $ncor->setrgb(200,183,134);  
481 - $ncor = $novoestilo->outlinecolor;  
482 - $ncor->setrgb(255,255,255);  
483 - $classe->setexpression($expressao);  
484 - $classe->set("name",$nomeclasse); 64 + /*
  65 + * Variavel: $nome
  66 + *
  67 + * Nome do layer
  68 + */
  69 + protected $nome;
485 70
486 - $expressao = "([".$item."]>=".$media.")";  
487 - $nomeclasse = ">= media ".$media;  
488 - $classe = ms_newClassObj($this->layer);  
489 -  
490 - $novoestilo = ms_newStyleObj($classe);  
491 - if ($this->layer->type == 0){  
492 - $novoestilo->set("symbolname","ponto");  
493 - $novoestilo->set("size","6");  
494 - }  
495 - $ncor = $novoestilo->color;  
496 - $ncor->setrgb(210,100,100);  
497 - $ncor = $novoestilo->outlinecolor;  
498 - $ncor->setrgb(255,255,255);  
499 - $classe->setexpression($expressao);  
500 - $classe->set("name",$nomeclasse); 71 + /*
  72 + * Function: __construct
  73 + *
  74 + * Cria um objeto Alteraclasse
  75 + *
  76 + * Parametros:
  77 + *
  78 + * $map_file - Endere&ccedil;o do mapfile no servidor.
  79 + *
  80 + * $tema - nome do tema
  81 + */
  82 + function __construct($map_file, $tema = "", $locaplic = "", $ext = "")
  83 + {
  84 + include (dirname(__FILE__) . "/../ms_configura.php");
  85 + $this->postgis_mapa = $postgis_mapa;
501 86
502 - $this->layer->setMetaData("cache","");  
503 - return ("ok");  
504 - }  
505 - else{  
506 - return ("erro. Nenhum valor numerico no item");  
507 - }  
508 - }  
509 - /*  
510 - function: quantil 87 + include_once (dirname(__FILE__) . "/funcoes_gerais.php");
511 88
512 - Cria classes em um objeto layer com intervalos baseados no calculo de quantil 89 + $this->locaplic = $locaplic;
513 90
514 - Parametros: 91 + $this->mapa = ms_newMapObj($map_file);
  92 + substituiConObj($this->mapa, $postgis_mapa);
515 93
516 - $item - item da tabela de atributos 94 + $this->arquivo = str_replace(".map", "", $map_file) . ".map";
  95 + $this->layer = "";
  96 + if ($tema != "" && @$this->mapa->getlayerbyname($tema)) {
  97 + $this->layer = $this->mapa->getlayerbyname($tema);
  98 + }
  99 + $this->nome = $tema;
  100 + if ($ext && $ext != "") {
  101 + $e = explode(" ", $ext);
  102 + $extatual = $this->mapa->extent;
  103 + $extatual->setextent((min($e[0], $e[2])), (min($e[1], $e[3])), (max($e[0], $e[2])), (max($e[1], $e[3])));
  104 + }
  105 + }
517 106
518 - $nclasses - n&uacute;mero de classes 107 + /*
  108 + * function: salva
  109 + *
  110 + * Salva o mapfile atual
  111 + *
  112 + */
  113 + function salva()
  114 + {
  115 + restauraConObj($this->mapa, $this->postgis_mapa);
  116 + $this->mapa->save($this->arquivo);
  117 + }
519 118
520 - $ignorar - valor que ser&aacute; ignorado na listagem final  
521 - */  
522 - function quantil($item,$nclasses,$ignorar)  
523 - {  
524 - if(!$this->layer){  
525 - return "erro";  
526 - }  
527 - $valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);  
528 - if (count($valores) > 0){  
529 - //rotina obtida do pacote TME  
530 - sort($valores);  
531 - //$valores = array_unique($valores);  
532 - $numValues = count($valores);  
533 - $classNum = $numValues / $nclasses; // Number in each class  
534 - for ($i = 0; $i < $nclasses; $i++) {  
535 - $position = (int)($classNum * $i);  
536 - $classBreaks[] = $valores[$position];  
537 - }  
538 - $classBreaks[] = $valores[$numValues-1]; // Last class break = biggest value  
539 - //echo "<pre>";var_dump($classBreaks);exit;  
540 - $numclassesatual = $this->layer->numclasses;  
541 - //apaga todas as classes existentes  
542 - $classetemp = $this->layer->getClass(0);  
543 - $estilotemp = $classetemp->getStyle(0);  
544 - for ($i=0; $i < $numclassesatual; ++$i){  
545 - $classe = $this->layer->getClass($i);  
546 - $classe->set("status",MS_DELETE);  
547 - }  
548 - //adiciona as classes novas  
549 - for ($i=0; $i < $nclasses; ++$i){  
550 - $expressao = "(([".$item."]>".$classBreaks[$i].")and([".$item."]<=".$classBreaks[$i + 1]."))";  
551 - $nomeclasse = "> ".$classBreaks[$i]." e <= que ".($classBreaks[$i + 1]);  
552 - if($i == 0){  
553 - $expressao = "([".$item."]<=".$classBreaks[$i + 1].")";  
554 - $nomeclasse = "<= que ".($classBreaks[$i + 1]);  
555 - }  
556 - if($i == ($nclasses - 1)){  
557 - $expressao = "([".$item."] >=".$classBreaks[$i].")";  
558 - $nomeclasse = ">= que ".($classBreaks[$i]);  
559 - }  
560 - $classe = ms_newClassObj($this->layer);  
561 - $novoestilo = ms_newStyleObj($classe);  
562 - if ($this->layer->type == 0){  
563 - $novoestilo->set("symbolname","ponto");  
564 - $novoestilo->set("size","6");  
565 - }  
566 - $ncor = $novoestilo->color;  
567 - $ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));  
568 - $ncor = $novoestilo->outlinecolor;  
569 - $ncor->setrgb(255,255,255);  
570 - $classe->setexpression($expressao);  
571 - $classe->set("name",$nomeclasse);  
572 - //$classe->set("title",($this->layer->name)."+".$i);  
573 - }  
574 - $this->layer->setMetaData("cache","");  
575 - return ("ok");  
576 - }  
577 - else{  
578 - return ("erro. Nenhum valor numerico no item");  
579 - }  
580 - }  
581 - /*  
582 - function: quebrasnaturais 119 + /*
  120 + * Function: aplicacoresrgb
  121 + *
  122 + * Aplica cores nas classes atuais conforme uma lista de cores em RGB
  123 + *
  124 + * Parametro:
  125 + *
  126 + * cores {array} - array com a lista de valores RGB
  127 + */
  128 + function aplicacoresrgb($cores)
  129 + {
  130 + if (! $this->layer) {
  131 + return "erro";
  132 + }
  133 + $numclasses = $this->layer->numclasses;
  134 + if ($numclasses > 0) {
  135 + for ($i = 0; $i < $numclasses; ++ $i) {
  136 + $classe = $this->layer->getClass($i);
  137 + $estilo = $classe->getstyle(0);
  138 + if ($cores[$i]) {
  139 + $cor = explode(",", $cores[$i]);
  140 + $ncor = $estilo->color;
  141 + $ncor->setrgb($cor[0], $cor[1], $cor[2]);
  142 + }
  143 + }
  144 + }
  145 + $this->layer->setMetaData("cache", "");
  146 + return ("ok");
  147 + }
583 148
584 - Cria classes em um objeto layer com intervalos baseados no calculo de quebras naturais 149 + /*
  150 + * function: simbolounico
  151 + *
  152 + * Elimina as classes existentes em um objeto layer mantendo apenas a primeira classe.
  153 + * Todos os elementos passar&atilde;o a ser desenhados conforme essa primeira classe, uma vez que a express&atilde;o de defini&ccedil;&atilde;o da classe passa a ser vazia.
  154 + */
  155 + function simbolounico()
  156 + {
  157 + if (! $this->layer) {
  158 + return "erro";
  159 + }
  160 + $numclasses = $this->layer->numclasses;
  161 + if ($numclasses > 0) {
  162 + // elimina a express&atilde;o da primeira classe
  163 + $classe0 = $this->layer->getClass(0);
  164 + // echo "<pre>";var_dump($classe0);exit;
  165 + $classe0->setexpression("");
  166 + $classe0->set("name", " ");
  167 + // apaga todas as classes menos a primeira
  168 + for ($i = 1; $i < $numclasses; ++ $i) {
  169 + $classe = $this->layer->getClass($i);
  170 + $classe->set("status", MS_DELETE);
  171 + }
  172 + } else {
  173 + $classe = ms_newClassObj($this->layer);
  174 + $novoestilo = ms_newStyleObj($classe);
  175 + if ($this->layer->type == 0) {
  176 + $novoestilo->set("symbolname", "ponto");
  177 + $novoestilo->set("size", "6");
  178 + }
  179 + $cor = $novoestilo->color;
  180 + $cor->setRGB(255, 100, 100);
  181 + }
  182 + $this->layer->setMetaData("cache", "");
  183 + return ("ok");
  184 + }
585 185
586 - Parametros: 186 + /*
  187 + * function: alteraclasses
  188 + *
  189 + * Altera as classes existentes em um objeto layer conforme a lista de &iacute;ndices, nomes e express&otilde;es definidas nos par&acirc;metros passados como argumentos.
  190 + *
  191 + * Parametros:
  192 + *
  193 + * $ids - lista de ids, separados por v&iacute;rgula, que identificam as classes no layer
  194 + *
  195 + * $nomes - lista com os novos nomes
  196 + *
  197 + * $exps - lista com as novas express&otilde;es
  198 + *
  199 + * $base64 sim|nao indica se as strings estao codificadas em base64
  200 + *
  201 + * $minScales - lista com valores para minscaledenom
  202 + *
  203 + * $maxScales - lista com valores para maxscaledenom
  204 + */
  205 + function alteraclasses($ids, $nomes, $exps, $base64 = "nao", $minScales = "", $maxScales = "")
  206 + {
  207 + if ($base64 == "sim") {
  208 + // $ids = base64_decode($ids);
  209 + // $nomes = base64_decode($nomes);
  210 + // $exps = base64_decode($exps);
  211 + }
  212 + // prepara os arrays com os valores
  213 + $ids = explode(";", $ids);
  214 + $minScales = explode(";", $minScales);
  215 + $maxScales = explode(";", $maxScales);
587 216
588 - $item - item da tabela de atributos 217 + $nomes = $this->converteTexto($nomes);
  218 + $nomes = explode(";", $nomes);
  219 + $exps = mb_convert_encoding($exps, "ISO-8859-1", "UTF-8");
  220 + $exps = explode(";", $exps);
  221 + // pega os layers existentes no array ids e armazena no array t
  222 + $c = count($ids);
  223 + for ($i = 0; $i < $c; ++ $i) {
  224 + $tx = explode("-", $ids[$i]);
  225 + $t[] = $tx[0];
  226 + }
  227 + // elimina nomes de layers duplicados
  228 + $t = array_unique($t);
  229 + // elimina as classes existentes atualmente em cada layer
  230 + foreach ($t as $tema) {
  231 + $layer = $this->mapa->getlayerbyname($tema);
  232 + $layer->setmetadata("cache", "");
  233 + $nc = $layer->numclasses;
  234 + if ($nc > 0) {
  235 + for ($i = 0; $i < $nc; ++ $i) {
  236 + $class = $layer->getclass($i);
  237 + $class->set("status", MS_DELETE);
  238 + }
  239 + }
  240 + }
  241 + // acrescenta as classes definidas
  242 + $c = count($ids);
  243 + for ($i = 0; $i < $c; ++ $i) {
  244 + $layerc = explode("-", $ids[$i]); // nome do layer &eacute; o indice 0 do array
  245 + $layer = $this->mapa->getlayerbyname($layerc[0]);
  246 + $layer->setMetaData("cache", "");
  247 + $ncl = $layer->numclasses;
  248 + if ($layerc[1] < $ncl) {
  249 + $classe = $layer->getclass($layerc[1]);
  250 + $classe->set("status", MS_DEFAULT);
  251 + $classe->set("name", $nomes[$i]);
  252 + $e = $exps[$i];
  253 + $e = str_replace("\\", "'", $e);
  254 + $e = str_replace('"', "'", $e);
  255 + $e = str_replace("''", "'", $e);
  256 + $e = str_replace("##", "'", $e);
  257 + $classe->setexpression($e);
  258 + if ($minScales[$i]) {
  259 + if ($minScales[$i] == 0 || $minScales[$i] == "") {
  260 + $minScales[$i] = - 1;
  261 + }
  262 + $classe->set("minscaledenom", $minScales[$i]);
  263 + }
  264 + if ($maxScales[$i]) {
  265 + if ($maxScales[$i] == 0 || $maxScales[$i] == "") {
  266 + $maxScales[$i] = - 1;
  267 + }
  268 + $classe->set("maxscaledenom", $maxScales[$i]);
  269 + }
  270 + }
  271 + }
  272 + }
589 273
590 - $nclasses - n&uacute;mero de classes 274 + /*
  275 + * function: intervalosiguais
  276 + *
  277 + * Cria classes em um objeto layer com intervalos iguais baseando-se em um item num&eacute;rico na tabela de atributos com um n&uacute;mero de classes fixos.
  278 + *
  279 + * Parametros:
  280 + *
  281 + * $item - item da tabela de atributos
  282 + *
  283 + * $nclasses - n&uacute;mero de classes
  284 + *
  285 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  286 + */
  287 + function intervalosiguais($item, $nclasses, $ignorar)
  288 + {
  289 + if (! $this->layer) {
  290 + return "erro";
  291 + }
  292 + $valores = $this->pegaValores($this->mapa, $this->layer, $item, true, $ignorar);
  293 + if (count($valores) > 0) {
  294 + // calcula o menor valor e o maior valor
  295 + $min = min($valores);
  296 + $max = max($valores);
  297 + $intervalo = ($max - $min) / $nclasses;
  298 + $numclassesatual = $this->layer->numclasses;
  299 + // apaga todas as classes existentes
  300 + $classetemp = $this->layer->getClass(0);
  301 + $estilotemp = $classetemp->getStyle(0);
  302 + for ($i = 0; $i < $numclassesatual; ++ $i) {
  303 + $classe = $this->layer->getClass($i);
  304 + $classe->set("status", MS_DELETE);
  305 + }
  306 + // adiciona as classes novas
  307 + $intatual = $min;
  308 + for ($i = 0; $i < $nclasses; ++ $i) {
  309 + if ($i == $nclasses - 1) {
  310 + $expressao = "(([" . $item . "]>=" . $intatual . ")and([" . $item . "]<=" . ($intatual + $intervalo) . "))";
  311 + } else {
  312 + $expressao = "(([" . $item . "]>=" . $intatual . ")and([" . $item . "]<" . ($intatual + $intervalo) . "))";
  313 + }
  314 + $nomeclasse = ">= " . $intatual . " e < que " . ($intatual + $intervalo);
  315 + $intatual = $intatual + $intervalo;
  316 + $classe = ms_newClassObj($this->layer);
  317 + $novoestilo = ms_newStyleObj($classe);
  318 + if ($this->layer->type == 0) {
  319 + $novoestilo->set("symbolname", "ponto");
  320 + $novoestilo->set("size", "6");
  321 + }
  322 + $ncor = $novoestilo->color;
  323 + $ncor->setrgb((mt_rand(0, 255)), (mt_rand(0, 255)), (mt_rand(0, 255)));
  324 + $ncor = $novoestilo->outlinecolor;
  325 + $ncor->setrgb(255, 255, 255);
  326 + $classe->setexpression($expressao);
  327 + $classe->set("name", $nomeclasse);
  328 + $classe->set("title", ($this->layer->name) . "+" . $i);
  329 + }
  330 + $this->layer->setMetaData("cache", "");
  331 + return ("ok");
  332 + } else {
  333 + return ("erro. Nenhum valor numerico no item");
  334 + }
  335 + }
591 336
592 - $ignorar - valor que ser&aacute; ignorado na listagem final  
593 - */  
594 - function quebrasnaturais($item,$nclasses,$ignorar)  
595 - {  
596 - if(!$this->layer){  
597 - return "erro";  
598 - }  
599 - $valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);  
600 - if (count($valores) > 0){  
601 - include(dirname(__FILE__)."/../pacotes/jenks-master/jenks.php");  
602 - $classBreaks = getJenksClasses($nclasses, $valores);  
603 - //echo "<pre>";var_dump($classBreaks);exit;  
604 - $numclassesatual = $this->layer->numclasses;  
605 - //apaga todas as classes existentes  
606 - $classetemp = $this->layer->getClass(0);  
607 - $estilotemp = $classetemp->getStyle(0);  
608 - for ($i=0; $i < $numclassesatual; ++$i){  
609 - $classe = $this->layer->getClass($i);  
610 - $classe->set("status",MS_DELETE);  
611 - }  
612 - //adiciona as classes novas  
613 - for ($i=0; $i < $nclasses; ++$i){  
614 - $expressao = "(([".$item."]>".$classBreaks[$i].")and([".$item."]<=".$classBreaks[$i + 1]."))";  
615 - $nomeclasse = "> ".$classBreaks[$i]." e <= que ".($classBreaks[$i + 1]);  
616 - if($i == 0){  
617 - $expressao = "([".$item."]<=".$classBreaks[$i + 1].")";  
618 - $nomeclasse = "<= que ".($classBreaks[$i + 1]);  
619 - }  
620 - if($i == ($nclasses - 1)){  
621 - $expressao = "([".$item."] >=".$classBreaks[$i].")";  
622 - $nomeclasse = ">= que ".($classBreaks[$i]);  
623 - }  
624 - $classe = ms_newClassObj($this->layer);  
625 - $novoestilo = ms_newStyleObj($classe);  
626 - if ($this->layer->type == 0){  
627 - $novoestilo->set("symbolname","ponto");  
628 - $novoestilo->set("size","6");  
629 - }  
630 - $ncor = $novoestilo->color;  
631 - $ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));  
632 - $ncor = $novoestilo->outlinecolor;  
633 - $ncor->setrgb(255,255,255);  
634 - $classe->setexpression($expressao);  
635 - $classe->set("name",$nomeclasse);  
636 - //$classe->set("title",($this->layer->name)."+".$i);  
637 - }  
638 - $this->layer->setMetaData("cache","");  
639 - return ("ok");  
640 - }  
641 - else{  
642 - return ("erro. Nenhum valor numerico no item");  
643 - }  
644 - }  
645 -  
646 - /*  
647 - function: quartis  
648 -  
649 - Cria classes em um objeto layer com intervalos em quartis baseando-se em um item num&eacute;rico na tabela de atributos com um n&uacute;mero de classes fixos.  
650 -  
651 - Parametros:  
652 -  
653 - $item - Item da tabela de atributos utilizado para gerar as classes.  
654 -  
655 - $ignorar - valor que ser&aacute; ignorado na listagem final  
656 -  
657 - $tipoLegenda - tipo de texto que ser&aacute; inclu&iacute;do no nome de cada classe completo|simples|minimo  
658 -  
659 - Include:  
660 - <classe_estatistica.php>  
661 - */  
662 - function quartis($item,$ignorar="",$tipoLegenda="minimo")  
663 - {  
664 - if(!$this->layer){  
665 - return "erro";  
666 - }  
667 -  
668 - $valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);  
669 - if (count($valores) > 0)  
670 - {  
671 - if(file_exists($this->locaplic."/classe_estatistica.php"))  
672 - include_once($this->locaplic."/classe_estatistica.php");  
673 - else  
674 - include_once("classe_estatistica.php");  
675 - $estat = new estatistica();  
676 - $estat->calcula($valores);  
677 - $calc = $estat->resultado;  
678 - $numclassesatual = $this->layer->numclasses;  
679 - //apaga todas as classes existentes  
680 - $classetemp = $this->layer->getClass(0);  
681 - for ($i=0; $i < $numclassesatual; ++$i)  
682 - {  
683 - $classe = $this->layer->getClass($i);  
684 - $classe->set("status",MS_DELETE);  
685 - }  
686 - //adiciona as classes novas  
687 - $expressao[] = "([".$item."]<=".($calc["quartil1"]).")";  
688 - $expressao[] = "(([".$item."]>".($calc["quartil1"]).")and([".$item."]<=".($calc["quartil2"])."))";  
689 - if($calc["quartil3"] != 0){  
690 - $expressao[] = "(([".$item."]>".($calc["quartil2"]).")and([".$item."]<=".($calc["quartil3"])."))";  
691 - $expressao[] = "([".$item."]>".($calc["quartil3"]).")";  
692 - }  
693 - $nomes[] = "<= ".($calc["quartil1"]);  
694 - $nomes[] = "> ".($calc["quartil1"])." e <= ".($calc["quartil2"]);  
695 - if($calc["quartil3"] != 0){  
696 - $nomes[] = "> ".($calc["quartil2"])." e <= ".($calc["quartil3"]);  
697 - $nomes[] = "> ".($calc["quartil3"]);  
698 - }  
699 - $vcor = array(250,230,150,0);  
700 - for ($i=0;$i < count($nomes);++$i)  
701 - {  
702 - $classe = ms_newClassObj($this->layer);  
703 - $novoestilo = ms_newStyleObj($classe);  
704 - if ($this->layer->type == 0)  
705 - {  
706 - $novoestilo->set("symbolname","ponto");  
707 - $novoestilo->set("size","6");  
708 - }  
709 - $classe->setexpression($expressao[$i]);  
710 - if($tipoLegenda == "completo")  
711 - {  
712 - $nomeClasse = "Quartil ".($i+1)." ".$expressao[$i];  
713 - }  
714 - if($tipoLegenda == "simples")  
715 - {  
716 - $nomeClasse = "Quartil ".($i+1)." ".$nomes[$i];  
717 - }  
718 - if($tipoLegenda == "minimo" || $tipoLegenda == "")  
719 - {  
720 - $nomeClasse = $nomes[$i];  
721 - }  
722 -  
723 - $classe->set("name",$nomeClasse);  
724 - $ncor = $novoestilo->color;  
725 - $ncor->setrgb(255,$vcor[$i],$vcor[$i]);  
726 - $ncor = $novoestilo->outlinecolor;  
727 - $ncor->setrgb(255,255,255);  
728 - }  
729 - $this->layer->setMetaData("cache","");  
730 - return ("ok");  
731 - }  
732 - else  
733 - {return ("erro. Nenhum valor numerico no item");  
734 - }  
735 - }  
736 - /*  
737 - function: valorunico  
738 -  
739 - Cria classes em um objeto layer baseando-se em um item na tabela de atributos.  
740 -  
741 - Para cada ocorr&ecirc;ncia de um valor &eacute; acrescentada uma classe.  
742 -  
743 - Parametros:  
744 -  
745 - $item - Item da tabela de atributos utilizado para gerar as classes.  
746 -  
747 - $ignorar - valor que ser&aacute; ignorado na listagem final  
748 -  
749 - $itemNome - item que ser&aacute; usado para definir os nomes das classes (por default ser&aacute; igual a $item)  
750 - */  
751 - function valorunico($item,$ignorar,$itemNome="")  
752 - {  
753 - if(!$this->layer){  
754 - return "erro";  
755 - }  
756 - if($itemNome == "" || $ignorar != "")  
757 - {  
758 - $itemNome = $item;  
759 - }  
760 - // pega valores  
761 - $vs = $this->pegaValores($this->mapa,$this->layer,$item,false,$ignorar);  
762 - if ($item == $itemNome)  
763 - {  
764 - $ns = $vs;  
765 - }  
766 - else{  
767 - $ns = $this->pegaValores($this->mapa,$this->layer,$itemNome,false,$ignorar);  
768 - }  
769 - $lista = array();  
770 - for ($i = 0; $i < count($vs); ++$i){  
771 - $temp[$vs[$i]] = $ns[$i];  
772 - }  
773 - $valores = array_keys($temp);  
774 - $nomes = array();  
775 - foreach($temp as $t)  
776 - {  
777 - $nomes[] = $t;  
778 - }  
779 - $nclassexist = $this->layer->numclasses;  
780 - if ($nclassexist > count($valores))  
781 - {  
782 - $nclassexist = count($valores);  
783 - }  
784 - if($this->layer->numclasses == 0)  
785 - {  
786 - $temp = ms_newClassObj($this->layer);  
787 - ms_newStyleObj($temp);  
788 - }  
789 - // cria classes  
790 - $classes = array();  
791 - $classpadrao = $this->layer->getClass(0);  
792 - for ($i = 0; $i < $nclassexist; ++$i)  
793 - {  
794 - $classes[$i] = $this->layer->getClass($i);  
795 - }  
796 - $c = $this->layer->numclasses;  
797 - for ($i = 0; $i < $c; ++$i) // apaga classes atuais  
798 - {  
799 - $cl = $this->layer->getClass($i);  
800 - $cl->set("status",MS_DELETE);  
801 - }  
802 - $c = count($valores);  
803 - for ($i = 0; $i < $c; ++$i)  
804 - {  
805 - $classes[$i] = ms_newClassObj($this->layer);  
806 - $newstyle = ms_newStyleObj($classes[$i]);  
807 - }  
808 - for ($i = 0; $i < $c; ++$i)  
809 - {  
810 - $e = "('[".$item."]'eq'".$valores[$i]."')";  
811 - $ca = $classes[$i];  
812 - $ca->setexpression($e);  
813 - $texto = $this->converteTexto($nomes[$i]);  
814 - $ca->set("name",$texto);  
815 - $estilo = $classes[$i]->getStyle(0);  
816 - $ncor = $estilo->color;  
817 - $ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));  
818 - $ncor = $estilo->outlinecolor;  
819 - $ncor->setrgb(255,255,255);  
820 - if ($this->layer->type == 0) //tipo ponto  
821 - {  
822 - $estilo->set("symbolname","ponto");  
823 - $estilo->set("size",6);  
824 - }  
825 - //$c->set("title",$tema."+".$i);  
826 - }  
827 - $this->layer->setMetaData("cache","");  
828 - return("ok");  
829 - }  
830 - /*  
831 - function: adicionaclasse  
832 -  
833 - Adiciona uma nova classe em um objeto layer  
834 -  
835 - A nova classe ser&aacute; uma c�pia da classe 0.  
836 - */  
837 - function adicionaclasse()  
838 - {  
839 - if(!$this->layer){  
840 - return "erro";  
841 - }  
842 - $classe = $this->layer->getclass(0);  
843 - $c = ms_newClassObj($this->layer, $classe);  
844 - $this->layer->setMetaData("cache","");  
845 - return("ok");  
846 - }  
847 - /*  
848 - function: sobeclasse  
849 -  
850 - Sobe uma classe na ordem de desenho  
851 -  
852 - Parametro:  
853 -  
854 - $idclasse {numerico} - id da classe (&iacute;ndice)  
855 - */  
856 - function sobeclasse($idclasse)  
857 - {  
858 - if(!$this->layer){  
859 - return "erro";  
860 - }  
861 - $this->layer->moveclassup($idclasse);  
862 - return("ok");  
863 - }  
864 - /*  
865 - function: desceclasse  
866 -  
867 - Desce uma classe na ordem de desenho  
868 -  
869 - Parametro:  
870 -  
871 - $idclasse {numerico} - id da classe (&iacute;ndice)  
872 - */  
873 - function desceclasse($idclasse)  
874 - {  
875 - if(!$this->layer){  
876 - return "erro";  
877 - }  
878 - $this->layer->moveclassdown($idclasse);  
879 - return("ok");  
880 - }  
881 - /*  
882 - function: adicionaopacidade  
883 -  
884 - Adiciona opacidade vari&aacute;vel de 0 a 100 conforme o n&uacute;mero de classes  
885 -  
886 - */  
887 - function adicionaopacidade()  
888 - {  
889 - //error_reporting(0);  
890 - if(!$this->layer){  
891 - return "erro";  
892 - }  
893 - $numclasses = $this->layer->numclasses;  
894 - $n = intval(100 / $numclasses);  
895 - for($i=0;$i<$numclasses;++$i)  
896 - {  
897 - $classe = $this->layer->getclass($i);  
898 - $numestilos = $classe->numstyles;  
899 - $o = ($i * $n) + 5;  
900 - for($j=0;$j<$numestilos;++$j)  
901 - {  
902 - $estilo = $classe->getstyle($j);  
903 - $estilo->set("opacity",$o);  
904 - }  
905 - }  
906 - $this->layer->setMetaData("cache","");  
907 - return("ok");  
908 - }  
909 - /*  
910 - function: alteracor  
911 -  
912 - Aplica uma nova cor aos estilos de uma classe  
913 -  
914 - Parametros:  
915 -  
916 - $idclasse {numerico} - id da classe (&iacute;ndice)  
917 -  
918 - $cor {string} - cor rgb  
919 - */  
920 - function alteracor($idclasse,$cor)  
921 - {  
922 - //error_reporting(0);  
923 - if(!$this->layer){  
924 - return "erro";  
925 - }  
926 - $numclasses = $this->layer->numclasses;  
927 - $cor = str_replace(" ",",",$cor);  
928 - $cor = explode(",",$cor);  
929 - $classe = $this->layer->getclass($idclasse);  
930 - $numestilos = $classe->numstyles;  
931 - for($j=0;$j<$numestilos;++$j)  
932 - {  
933 - $estilo = $classe->getstyle($j);  
934 - $ncor = $estilo->color;  
935 - $ncor->setrgb($cor[0],$cor[1],$cor[2]);  
936 - }  
937 - $this->layer->setMetaData("cache","");  
938 - return("ok");  
939 - }  
940 - /*  
941 - function: alterageometria  
942 -  
943 - Altera a geometria de representa&ccedil;&atilde;o de todos os estilos de todas as classes de um layer  
944 -  
945 - Parametro:  
946 -  
947 - $tipo {string} - tipo de representa&ccedil;&atilde;o  
948 - */  
949 - function alterageometria($tipo)  
950 - {  
951 - //error_reporting(0);  
952 - if(!$this->layer){  
953 - return "erro";  
954 - }  
955 - $numclasses = $this->layer->numclasses;  
956 - for($i=0;$i<$numclasses;++$i)  
957 - {  
958 - $classe = $this->layer->getclass($i);  
959 - $numestilos = $classe->numstyles;  
960 - for($j=0;$j<$numestilos;++$j)  
961 - {  
962 - $estilo = $classe->getstyle($j);  
963 - $s = "STYLE geomtransform '$tipo' END";  
964 - $estilo->updateFromString($s);  
965 - }  
966 - }  
967 - $this->layer->setMetaData("cache","");  
968 - return("ok");  
969 - }  
970 - /*  
971 - function: alteraCoresClasses  
972 -  
973 - Altera as cores das classes existentes em um objeto layer gerando uma paleta de cores de acordo com um valor inicial e final.  
974 -  
975 - Parametros:  
976 -  
977 - $cori - cor inicial.  
978 -  
979 - $corf - cor final.  
980 -  
981 - Include:  
982 - <class.palette.php>  
983 - */  
984 - function alteraCoresClasses($cori,$corf)  
985 - {  
986 - if(!$this->layer){  
987 - return "erro";  
988 - }  
989 - if(file_exists($this->locaplic."/class.palette.php"))  
990 - include_once($this->locaplic."/class.palette.php");  
991 - else  
992 - include_once("class.palette.php");  
993 -  
994 - $cori = RGB2hex(explode(",",$cori));  
995 - $corf = RGB2hex(explode(",",$corf));  
996 - $numclasses = $this->layer->numclasses;  
997 - $myPalette=new palette(array($cori,$corf),($numclasses + 1));  
998 - $cores = $myPalette->colorRGB;  
999 - for($i=0;$i<$numclasses;++$i)  
1000 - {  
1001 - $classe = $this->layer->getclass($i);  
1002 - $estilo = $classe->getstyle(0);  
1003 - $corpaleta = $cores[$i];  
1004 - if ($this->layer->type == MS_LAYER_LINE)  
1005 - {  
1006 - $cor = $estilo->outlinecolor;  
1007 - $cor->setrgb($corpaleta[0],$corpaleta[1],$corpaleta[2]);  
1008 - }  
1009 - $cor = $estilo->color;  
1010 - $cor->setrgb($corpaleta[0],$corpaleta[1],$corpaleta[2]);  
1011 - }  
1012 - $this->layer->setMetaData("cache","");  
1013 - return("ok");  
1014 - }  
1015 - /*  
1016 - function: inverteCoresClasses  
1017 -  
1018 - Inverte as cores da legenda de um tema.  
1019 - */  
1020 - function inverteCoresClasses(){  
1021 - if(!$this->layer){  
1022 - return "erro";  
1023 - }  
1024 - $numclasses = $this->layer->numclasses;  
1025 - $cor = array();  
1026 - for($i=0;$i<$numclasses;++$i){  
1027 - $classe = $this->layer->getclass($i);  
1028 - $estilo = $classe->getstyle(0);  
1029 - $c = $estilo->color;  
1030 - $cor[] = array(  
1031 - "r"=>($c->red),  
1032 - "g"=>($c->green),  
1033 - "b"=>($c->blue)  
1034 - );  
1035 - }  
1036 - $cor = array_reverse($cor);  
1037 - for($i=0;$i<$numclasses;++$i){  
1038 - $classe = $this->layer->getclass($i);  
1039 - $c = $cor[$i];  
1040 - $estilo = $classe->getstyle(0);  
1041 - $ncor = $estilo->color;  
1042 - $ncor->setrgb($c["r"],$c["g"],$c["b"]);  
1043 - }  
1044 - $this->layer->setMetaData("cache","");  
1045 - return("ok");  
1046 - }  
1047 - /*  
1048 - function: calculaTamanhoClasses  
1049 -  
1050 - Calcula o tamanho dos estilos das classes, alterando o tamanho do s&iacute;mbolo.  
1051 - */  
1052 - function calculaTamanhoClasses()  
1053 - {  
1054 - if(!$this->layer){  
1055 - return "erro";  
1056 - }  
1057 - $numclasses = $this->layer->numclasses;  
1058 - for($i=0;$i<$numclasses;++$i)  
1059 - {  
1060 - $classe = $this->layer->getclass($i);  
1061 - $estilo = $classe->getstyle(0);  
1062 - $estilo->set("size",($i+1));  
1063 - if ($estilo->symbolname == "")  
1064 - {  
1065 - if ($this->layer->type == MS_LAYER_LINE)  
1066 - {  
1067 - $estilo->set("symbolname","linha");  
1068 - }  
1069 - if ($this->layer->type == MS_LAYER_POINT)  
1070 - {  
1071 - $estilo->set("symbolname","ponto");  
1072 - }  
1073 - if ($this->layer->type == MS_LAYER_POLYGON)  
1074 - {  
1075 - $estilo->set("symbolname","p4");  
1076 - }  
1077 - }  
1078 - }  
1079 - $this->layer->setMetaData("cache","");  
1080 - return("ok");  
1081 - }  
1082 - /*  
1083 - function: ordenaClasses 337 + /*
  338 + * function: metade
  339 + *
  340 + * Classifica os dados em duas classes, a primeira concentra os registros que somados correspondem &agrave; primeira metade do total e a segunda classe corresponde &agrave; segunda metade
  341 + *
  342 + * Parametros:
  343 + *
  344 + * $item - item da tabela de atributos
  345 + *
  346 + * $itemid - item que identifica unicamente cada registro
  347 + *
  348 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  349 + */
  350 + function metade($item, $itemid, $ignorar)
  351 + {
  352 + if (! $this->layer) {
  353 + return "erro";
  354 + }
  355 + // cria um array contendo o id como chave e o valor
  356 + $valores = $this->pegaValores($this->mapa, $this->layer, $item, true, $ignorar);
  357 + $ids = $this->pegaValores($this->mapa, $this->layer, $itemid, false, $ignorar);
  358 + $lista = array();
  359 + for ($i = 0; $i < count($valores); ++ $i) {
  360 + $lista[$ids[$i]] = $valores[$i];
  361 + }
1084 362
1085 - Ordena as classes pelo nome  
1086 - */  
1087 - function ordenaClasses()  
1088 - {  
1089 - if(!$this->layer){  
1090 - return "erro";  
1091 - }  
1092 - $numclasses = $this->layer->numclasses;  
1093 - if($numclasses == 1){  
1094 - return("ok");  
1095 - }  
1096 - //pega o nome das classes  
1097 - $nomes = array();  
1098 - for($i=0;$i<$numclasses;$i++){  
1099 - $classe = $this->layer->getclass($i);  
1100 - $nomes[$classe->name] = $classe->convertToString();  
1101 - }  
1102 - ksort($nomes);  
1103 - $indice = 0;  
1104 - foreach($nomes as $n){  
1105 - $classe = $this->layer->getclass($indice);  
1106 - $classe->updatefromstring($n);  
1107 - $indice++;  
1108 - }  
1109 - $this->layer->setMetaData("cache","");  
1110 - return("ok");  
1111 - }  
1112 - /*  
1113 - function: statusClasse  
1114 -  
1115 - Inverte o status a uma classe desligando ou desligando, conforme o status atual.  
1116 -  
1117 - Parametros:  
1118 -  
1119 - $classe - id da classe  
1120 -  
1121 - */  
1122 - function statusClasse($classe)  
1123 - {  
1124 - //  
1125 - //na vers&atilde;o 6 do Mapserver as classes n&atilde;o obedecem o OFF ou ON em arquivos RASTER. Foi necess&aacute;rio contornar o problema usando um metadata  
1126 - //  
1127 - if(!$this->layer){  
1128 - return "erro";  
1129 - }  
1130 - $cl = $this->layer->getclass($classe);  
1131 - $status = $cl->status;  
1132 - echo $status;  
1133 - if ($status == MS_OFF){  
1134 - $cl->set("status",MS_ON);  
1135 - if($this->layer->type == 3){  
1136 - $e = $cl->getstyle(0);  
1137 - $e->set("opacity",100);  
1138 - }  
1139 - }  
1140 - else{  
1141 - $cl->set("status",MS_OFF);  
1142 - if($this->layer->type == 3){  
1143 - $e = $cl->getstyle(0);  
1144 - $e->set("opacity",0);  
1145 - }  
1146 - }  
1147 - $this->layer->setMetaData("cache","");  
1148 - return("ok");  
1149 - }  
1150 - /*  
1151 - Function: pegaValores  
1152 -  
1153 - Pega os valores de um item de um tema.  
1154 -  
1155 - Parametros:  
1156 -  
1157 - $layer {objeto} - Layer que ser&aacute; processado.  
1158 -  
1159 - $item {string} - Item que ser&aacute; processado.  
1160 -  
1161 - $numerico {boleano} - O item e numerico (true ou false).  
1162 -  
1163 - $ignorar {string} - valor que ser&aacute; ignorado na listagem final  
1164 -  
1165 - Retorno:  
1166 -  
1167 - {array}  
1168 - */  
1169 - function pegaValores($mapa,$layer,$item,$numerico=false,$ignorar="")  
1170 - {  
1171 - $layer->set("template","none.htm");  
1172 - //$layer->setfilter("");  
1173 - $versao = versao();  
1174 - $versao = $versao["principal"];  
1175 - $ignorararray = explode(",",$ignorar);  
1176 - if (@$layer->queryByrect($mapa->extent) == MS_SUCCESS)  
1177 - {  
1178 - if($layer->type == MS_LAYER_RASTER){  
1179 - if($item == "pixel"){  
1180 - $item = "value_0";  
1181 - }  
1182 - }  
1183 -  
1184 - $sopen = $layer->open();  
1185 - if($sopen == MS_FAILURE){  
1186 - return "erro";  
1187 - }  
1188 - $res_count = $layer->getNumresults();  
1189 - $valitem = array();  
1190 - for ($i=0;$i<$res_count;++$i)  
1191 - {  
1192 - if($versao >= 6)  
1193 - {  
1194 - $shape = $layer->getShape($layer->getResult($i));  
1195 - }  
1196 - else{  
1197 - $result = $layer->getResult($i);  
1198 - $shp_index = $result->shapeindex;  
1199 - $shape = $layer->getfeature($shp_index,-1);  
1200 - }  
1201 - $v = trim($shape->values[$item]);  
1202 - if ($numerico)  
1203 - {  
1204 - if (is_numeric($v))  
1205 - {  
1206 - if ($ignorar == "")  
1207 - {  
1208 - $valitem[] = $v;  
1209 - }  
1210 - else  
1211 - {  
1212 - //if ($v != $ignorar)  
1213 - if(!in_array($v,$ignorararray))  
1214 - {  
1215 - $valitem[] = $v;  
1216 - }  
1217 - }  
1218 - }  
1219 - }  
1220 - else  
1221 - {  
1222 - if ($ignorar == "")  
1223 - {  
1224 - $valitem[] = $v;  
1225 - }  
1226 - else  
1227 - {  
1228 - if(!in_array($v,$ignorararray))  
1229 - {  
1230 - $valitem[] = $v;  
1231 - }  
1232 - }  
1233 - }  
1234 - }  
1235 - $fechou = $layer->close();  
1236 - }  
1237 - $layer->close();  
1238 - return ($valitem);  
1239 - }  
1240 - /*  
1241 - Function: converteTexto 363 + if (count($lista) > 0) {
  364 + asort($lista);
  365 + // $valores = array_unique($valores);
  366 + $numValues = count($lista);
  367 + // soma os valores
  368 + $total = array_sum($lista);
  369 + // metade
  370 + $metade = $total / 2;
  371 + // separa os dados em dois conjuntos
  372 + $metadeInf = array();
  373 + $metadeSup = array();
  374 + $IdNumerico = true;
  375 + $soma = 0;
  376 + $somaInf = 0;
  377 + $somaSup = 0;
  378 + $maxMetade1 = 0;
  379 + foreach ($lista as $k => $v) {
  380 + $soma = $soma + $v;
  381 + if ($soma < $metade) {
  382 + $metadeInf[] = $k;
  383 + $somaInf = $soma;
  384 + $maxMetade1 = $v;
  385 + } else {
  386 + $metadeSup[] = $k;
  387 + $somaSup = $somaSup + $v;
  388 + }
  389 + }
  390 + $percInf = ($somaInf * 100) / $total;
  391 + $percSup = ($somaSup * 100) / $total;
1242 392
1243 - Converte uma string de ISO-8859-1 para UTF-8 393 + $numclassesatual = $this->layer->numclasses;
  394 + // apaga todas as classes existentes
  395 + $classetemp = $this->layer->getClass(0);
  396 + $estilotemp = $classetemp->getStyle(0);
  397 + for ($i = 0; $i < $numclassesatual; ++ $i) {
  398 + $classe = $this->layer->getClass($i);
  399 + $classe->set("status", MS_DELETE);
  400 + }
  401 + // adiciona as classes novas
  402 + $expressao = "('[" . $itemid . "]'in'" . implode(",", $metadeInf) . "')";
  403 + $nomeclasse = "Tot " . $somaInf . ' (' . round($percInf, 2) . '%) Max: ' . $maxMetade1;
  404 + $classe = ms_newClassObj($this->layer);
  405 + $novoestilo = ms_newStyleObj($classe);
  406 + if ($this->layer->type == 0) {
  407 + $novoestilo->set("symbolname", "ponto");
  408 + $novoestilo->set("size", "6");
  409 + }
  410 + $ncor = $novoestilo->color;
  411 + $ncor->setrgb(246, 183, 134);
  412 + $ncor = $novoestilo->outlinecolor;
  413 + $ncor->setrgb(255, 255, 255);
  414 + $classe->setexpression($expressao);
  415 + $classe->set("name", $nomeclasse);
1244 416
1245 - Parametro: 417 + $expressao = "('[" . $itemid . "]'in'" . implode(",", $metadeSup) . "')";
  418 + $nomeclasse = "Tot " . $somaSup . ' (' . round($percSup, 2) . '%) ';
  419 + $classe = ms_newClassObj($this->layer);
  420 + $novoestilo = ms_newStyleObj($classe);
  421 + if ($this->layer->type == 0) {
  422 + $novoestilo->set("symbolname", "ponto");
  423 + $novoestilo->set("size", "6");
  424 + }
  425 + $ncor = $novoestilo->color;
  426 + $ncor->setrgb(210, 111, 111);
  427 + $ncor = $novoestilo->outlinecolor;
  428 + $ncor->setrgb(255, 255, 255);
  429 + $classe->setexpression($expressao);
  430 + $classe->set("name", $nomeclasse);
1246 431
1247 - $texto - string que ser&aacute; convertida 432 + $this->layer->setMetaData("cache", "");
  433 + return ("ok");
  434 + } else {
  435 + return ("erro. Nenhum valor numerico no item");
  436 + }
  437 + }
1248 438
1249 - Return: 439 + /*
  440 + * function: classemedia
  441 + *
  442 + * Classifica os dados em duas classes, a primeira concentra os registros que est&atilde;o abaixo da m&eacute;dia e a segunda aqueles que s&atilde;o iguais ou superiores a m&eacute;dia
  443 + *
  444 + * Parametros:
  445 + *
  446 + * $item - item da tabela de atributos
  447 + *
  448 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  449 + */
  450 + function classemedia($item, $ignorar)
  451 + {
  452 + if (! $this->layer) {
  453 + return "erro";
  454 + }
  455 + $valores = $this->pegaValores($this->mapa, $this->layer, $item, false, $ignorar);
1250 456
1251 - {string}  
1252 - */  
1253 - function converteTexto($texto)  
1254 - {  
1255 - if (function_exists("mb_convert_encoding"))  
1256 - {  
1257 - if (!mb_detect_encoding($texto,"UTF-8",true))  
1258 - {  
1259 - $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1");  
1260 - }  
1261 - }  
1262 - return $texto;  
1263 - }  
1264 -} 457 + if (count($valores) > 0) {
  458 + $media = array_sum($valores) / count($valores);
  459 +
  460 + $numclassesatual = $this->layer->numclasses;
  461 + // apaga todas as classes existentes
  462 + $classetemp = $this->layer->getClass(0);
  463 + $estilotemp = $classetemp->getStyle(0);
  464 + for ($i = 0; $i < $numclassesatual; ++ $i) {
  465 + $classe = $this->layer->getClass($i);
  466 + $classe->set("status", MS_DELETE);
  467 + }
  468 + // adiciona as classes novas
  469 + $expressao = "([" . $item . "]<" . $media . ")";
  470 + $nomeclasse = "< media " . $media;
  471 + $classe = ms_newClassObj($this->layer);
  472 +
  473 + $novoestilo = ms_newStyleObj($classe);
  474 + if ($this->layer->type == 0) {
  475 + $novoestilo->set("symbolname", "ponto");
  476 + $novoestilo->set("size", "6");
  477 + }
  478 + $ncor = $novoestilo->color;
  479 + $ncor->setrgb(200, 183, 134);
  480 + $ncor = $novoestilo->outlinecolor;
  481 + $ncor->setrgb(255, 255, 255);
  482 + $classe->setexpression($expressao);
  483 + $classe->set("name", $nomeclasse);
  484 +
  485 + $expressao = "([" . $item . "]>=" . $media . ")";
  486 + $nomeclasse = ">= media " . $media;
  487 + $classe = ms_newClassObj($this->layer);
  488 +
  489 + $novoestilo = ms_newStyleObj($classe);
  490 + if ($this->layer->type == 0) {
  491 + $novoestilo->set("symbolname", "ponto");
  492 + $novoestilo->set("size", "6");
  493 + }
  494 + $ncor = $novoestilo->color;
  495 + $ncor->setrgb(210, 100, 100);
  496 + $ncor = $novoestilo->outlinecolor;
  497 + $ncor->setrgb(255, 255, 255);
  498 + $classe->setexpression($expressao);
  499 + $classe->set("name", $nomeclasse);
  500 +
  501 + $this->layer->setMetaData("cache", "");
  502 + return ("ok");
  503 + } else {
  504 + return ("erro. Nenhum valor numerico no item");
  505 + }
  506 + }
  507 +
  508 + /*
  509 + * function: quantil
  510 + *
  511 + * Cria classes em um objeto layer com intervalos baseados no calculo de quantil
  512 + *
  513 + * Parametros:
  514 + *
  515 + * $item - item da tabela de atributos
  516 + *
  517 + * $nclasses - n&uacute;mero de classes
  518 + *
  519 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  520 + */
  521 + function quantil($item, $nclasses, $ignorar)
  522 + {
  523 + if (! $this->layer) {
  524 + return "erro";
  525 + }
  526 + $valores = $this->pegaValores($this->mapa, $this->layer, $item, true, $ignorar);
  527 + if (count($valores) > 0) {
  528 + // rotina obtida do pacote TME
  529 + sort($valores);
  530 + // $valores = array_unique($valores);
  531 + $numValues = count($valores);
  532 + $classNum = $numValues / $nclasses; // Number in each class
  533 + for ($i = 0; $i < $nclasses; $i ++) {
  534 + $position = (int) ($classNum * $i);
  535 + $classBreaks[] = $valores[$position];
  536 + }
  537 + $classBreaks[] = $valores[$numValues - 1]; // Last class break = biggest value
  538 + // echo "<pre>";var_dump($classBreaks);exit;
  539 + $numclassesatual = $this->layer->numclasses;
  540 + // apaga todas as classes existentes
  541 + $classetemp = $this->layer->getClass(0);
  542 + $estilotemp = $classetemp->getStyle(0);
  543 + for ($i = 0; $i < $numclassesatual; ++ $i) {
  544 + $classe = $this->layer->getClass($i);
  545 + $classe->set("status", MS_DELETE);
  546 + }
  547 + // adiciona as classes novas
  548 + for ($i = 0; $i < $nclasses; ++ $i) {
  549 + $expressao = "(([" . $item . "]>" . $classBreaks[$i] . ")and([" . $item . "]<=" . $classBreaks[$i + 1] . "))";
  550 + $nomeclasse = "> " . $classBreaks[$i] . " e <= que " . ($classBreaks[$i + 1]);
  551 + if ($i == 0) {
  552 + $expressao = "([" . $item . "]<=" . $classBreaks[$i + 1] . ")";
  553 + $nomeclasse = "<= que " . ($classBreaks[$i + 1]);
  554 + }
  555 + if ($i == ($nclasses - 1)) {
  556 + $expressao = "([" . $item . "] >=" . $classBreaks[$i] . ")";
  557 + $nomeclasse = ">= que " . ($classBreaks[$i]);
  558 + }
  559 + $classe = ms_newClassObj($this->layer);
  560 + $novoestilo = ms_newStyleObj($classe);
  561 + if ($this->layer->type == 0) {
  562 + $novoestilo->set("symbolname", "ponto");
  563 + $novoestilo->set("size", "6");
  564 + }
  565 + $ncor = $novoestilo->color;
  566 + $ncor->setrgb((mt_rand(0, 255)), (mt_rand(0, 255)), (mt_rand(0, 255)));
  567 + $ncor = $novoestilo->outlinecolor;
  568 + $ncor->setrgb(255, 255, 255);
  569 + $classe->setexpression($expressao);
  570 + $classe->set("name", $nomeclasse);
  571 + // $classe->set("title",($this->layer->name)."+".$i);
  572 + }
  573 + $this->layer->setMetaData("cache", "");
  574 + return ("ok");
  575 + } else {
  576 + return ("erro. Nenhum valor numerico no item");
  577 + }
  578 + }
  579 +
  580 + /*
  581 + * function: quebrasnaturais
  582 + *
  583 + * Cria classes em um objeto layer com intervalos baseados no calculo de quebras naturais
  584 + *
  585 + * Parametros:
  586 + *
  587 + * $item - item da tabela de atributos
  588 + *
  589 + * $nclasses - n&uacute;mero de classes
  590 + *
  591 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  592 + */
  593 + function quebrasnaturais($item, $nclasses, $ignorar)
  594 + {
  595 + if (! $this->layer) {
  596 + return "erro";
  597 + }
  598 + $valores = $this->pegaValores($this->mapa, $this->layer, $item, true, $ignorar);
  599 + if (count($valores) > 0) {
  600 + include (dirname(__FILE__) . "/../pacotes/jenks-master/jenks.php");
  601 + $classBreaks = getJenksClasses($nclasses, $valores);
  602 + // echo "<pre>";var_dump($classBreaks);exit;
  603 + $numclassesatual = $this->layer->numclasses;
  604 + // apaga todas as classes existentes
  605 + $classetemp = $this->layer->getClass(0);
  606 + $estilotemp = $classetemp->getStyle(0);
  607 + for ($i = 0; $i < $numclassesatual; ++ $i) {
  608 + $classe = $this->layer->getClass($i);
  609 + $classe->set("status", MS_DELETE);
  610 + }
  611 + // adiciona as classes novas
  612 + for ($i = 0; $i < $nclasses; ++ $i) {
  613 + $expressao = "(([" . $item . "]>" . $classBreaks[$i] . ")and([" . $item . "]<=" . $classBreaks[$i + 1] . "))";
  614 + $nomeclasse = "> " . $classBreaks[$i] . " e <= que " . ($classBreaks[$i + 1]);
  615 + if ($i == 0) {
  616 + $expressao = "([" . $item . "]<=" . $classBreaks[$i + 1] . ")";
  617 + $nomeclasse = "<= que " . ($classBreaks[$i + 1]);
  618 + }
  619 + if ($i == ($nclasses - 1)) {
  620 + $expressao = "([" . $item . "] >=" . $classBreaks[$i] . ")";
  621 + $nomeclasse = ">= que " . ($classBreaks[$i]);
  622 + }
  623 + $classe = ms_newClassObj($this->layer);
  624 + $novoestilo = ms_newStyleObj($classe);
  625 + if ($this->layer->type == 0) {
  626 + $novoestilo->set("symbolname", "ponto");
  627 + $novoestilo->set("size", "6");
  628 + }
  629 + $ncor = $novoestilo->color;
  630 + $ncor->setrgb((mt_rand(0, 255)), (mt_rand(0, 255)), (mt_rand(0, 255)));
  631 + $ncor = $novoestilo->outlinecolor;
  632 + $ncor->setrgb(255, 255, 255);
  633 + $classe->setexpression($expressao);
  634 + $classe->set("name", $nomeclasse);
  635 + // $classe->set("title",($this->layer->name)."+".$i);
  636 + }
  637 + $this->layer->setMetaData("cache", "");
  638 + return ("ok");
  639 + } else {
  640 + return ("erro. Nenhum valor numerico no item");
  641 + }
  642 + }
  643 +
  644 + /*
  645 + * function: quartis
  646 + *
  647 + * Cria classes em um objeto layer com intervalos em quartis baseando-se em um item num&eacute;rico na tabela de atributos com um n&uacute;mero de classes fixos.
  648 + *
  649 + * Parametros:
  650 + *
  651 + * $item - Item da tabela de atributos utilizado para gerar as classes.
  652 + *
  653 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  654 + *
  655 + * $tipoLegenda - tipo de texto que ser&aacute; inclu&iacute;do no nome de cada classe completo|simples|minimo
  656 + *
  657 + * Include:
  658 + * <classe_estatistica.php>
  659 + */
  660 + function quartis($item, $ignorar = "", $tipoLegenda = "minimo")
  661 + {
  662 + if (! $this->layer) {
  663 + return "erro";
  664 + }
  665 +
  666 + $valores = $this->pegaValores($this->mapa, $this->layer, $item, true, $ignorar);
  667 + if (count($valores) > 0) {
  668 + if (file_exists($this->locaplic . "/classe_estatistica.php"))
  669 + include_once ($this->locaplic . "/classe_estatistica.php");
  670 + else
  671 + include_once ("classe_estatistica.php");
  672 + $estat = new estatistica();
  673 + $estat->calcula($valores);
  674 + $calc = $estat->resultado;
  675 + $numclassesatual = $this->layer->numclasses;
  676 + // apaga todas as classes existentes
  677 + $classetemp = $this->layer->getClass(0);
  678 + for ($i = 0; $i < $numclassesatual; ++ $i) {
  679 + $classe = $this->layer->getClass($i);
  680 + $classe->set("status", MS_DELETE);
  681 + }
  682 + // adiciona as classes novas
  683 + $expressao[] = "([" . $item . "]<=" . ($calc["quartil1"]) . ")";
  684 + $expressao[] = "(([" . $item . "]>" . ($calc["quartil1"]) . ")and([" . $item . "]<=" . ($calc["quartil2"]) . "))";
  685 + if ($calc["quartil3"] != 0) {
  686 + $expressao[] = "(([" . $item . "]>" . ($calc["quartil2"]) . ")and([" . $item . "]<=" . ($calc["quartil3"]) . "))";
  687 + $expressao[] = "([" . $item . "]>" . ($calc["quartil3"]) . ")";
  688 + }
  689 + $nomes[] = "<= " . ($calc["quartil1"]);
  690 + $nomes[] = "> " . ($calc["quartil1"]) . " e <= " . ($calc["quartil2"]);
  691 + if ($calc["quartil3"] != 0) {
  692 + $nomes[] = "> " . ($calc["quartil2"]) . " e <= " . ($calc["quartil3"]);
  693 + $nomes[] = "> " . ($calc["quartil3"]);
  694 + }
  695 + $vcor = array(
  696 + 250,
  697 + 230,
  698 + 150,
  699 + 0
  700 + );
  701 + for ($i = 0; $i < count($nomes); ++ $i) {
  702 + $classe = ms_newClassObj($this->layer);
  703 + $novoestilo = ms_newStyleObj($classe);
  704 + if ($this->layer->type == 0) {
  705 + $novoestilo->set("symbolname", "ponto");
  706 + $novoestilo->set("size", "6");
  707 + }
  708 + $classe->setexpression($expressao[$i]);
  709 + if ($tipoLegenda == "completo") {
  710 + $nomeClasse = "Quartil " . ($i + 1) . " " . $expressao[$i];
  711 + }
  712 + if ($tipoLegenda == "simples") {
  713 + $nomeClasse = "Quartil " . ($i + 1) . " " . $nomes[$i];
  714 + }
  715 + if ($tipoLegenda == "minimo" || $tipoLegenda == "") {
  716 + $nomeClasse = $nomes[$i];
  717 + }
  718 +
  719 + $classe->set("name", $nomeClasse);
  720 + $ncor = $novoestilo->color;
  721 + $ncor->setrgb(255, $vcor[$i], $vcor[$i]);
  722 + $ncor = $novoestilo->outlinecolor;
  723 + $ncor->setrgb(255, 255, 255);
  724 + }
  725 + $this->layer->setMetaData("cache", "");
  726 + return ("ok");
  727 + } else {
  728 + return ("erro. Nenhum valor numerico no item");
  729 + }
  730 + }
  731 +
  732 + /*
  733 + * function: valorunico
  734 + *
  735 + * Cria classes em um objeto layer baseando-se em um item na tabela de atributos.
  736 + *
  737 + * Para cada ocorr&ecirc;ncia de um valor &eacute; acrescentada uma classe.
  738 + *
  739 + * Parametros:
  740 + *
  741 + * $item - Item da tabela de atributos utilizado para gerar as classes.
  742 + *
  743 + * $ignorar - valor que ser&aacute; ignorado na listagem final
  744 + *
  745 + * $itemNome - item que ser&aacute; usado para definir os nomes das classes (por default ser&aacute; igual a $item)
  746 + */
  747 + function valorunico($item, $ignorar, $itemNome = "")
  748 + {
  749 + if (! $this->layer) {
  750 + return "erro";
  751 + }
  752 + if ($itemNome == "" || $ignorar != "") {
  753 + $itemNome = $item;
  754 + }
  755 + // pega valores
  756 + $vs = $this->pegaValores($this->mapa, $this->layer, $item, false, $ignorar);
  757 + if ($item == $itemNome) {
  758 + $ns = $vs;
  759 + } else {
  760 + $ns = $this->pegaValores($this->mapa, $this->layer, $itemNome, false, $ignorar);
  761 + }
  762 + $lista = array();
  763 + for ($i = 0; $i < count($vs); ++ $i) {
  764 + $temp[$vs[$i]] = $ns[$i];
  765 + }
  766 + $valores = array_keys($temp);
  767 + $nomes = array();
  768 + foreach ($temp as $t) {
  769 + $nomes[] = $t;
  770 + }
  771 + $nclassexist = $this->layer->numclasses;
  772 + if ($nclassexist > count($valores)) {
  773 + $nclassexist = count($valores);
  774 + }
  775 + if ($this->layer->numclasses == 0) {
  776 + $temp = ms_newClassObj($this->layer);
  777 + ms_newStyleObj($temp);
  778 + }
  779 + // cria classes
  780 + $classes = array();
  781 + $classpadrao = $this->layer->getClass(0);
  782 + for ($i = 0; $i < $nclassexist; ++ $i) {
  783 + $classes[$i] = $this->layer->getClass($i);
  784 + }
  785 + $c = $this->layer->numclasses;
  786 + for ($i = 0; $i < $c; ++ $i) // apaga classes atuais
  787 +{
  788 + $cl = $this->layer->getClass($i);
  789 + $cl->set("status", MS_DELETE);
  790 + }
  791 + $c = count($valores);
  792 + for ($i = 0; $i < $c; ++ $i) {
  793 + $classes[$i] = ms_newClassObj($this->layer);
  794 + $newstyle = ms_newStyleObj($classes[$i]);
  795 + }
  796 + for ($i = 0; $i < $c; ++ $i) {
  797 + $e = "('[" . $item . "]'eq'" . $valores[$i] . "')";
  798 + $ca = $classes[$i];
  799 + $ca->setexpression($e);
  800 + $texto = $this->converteTexto($nomes[$i]);
  801 + $ca->set("name", $texto);
  802 + $estilo = $classes[$i]->getStyle(0);
  803 + $ncor = $estilo->color;
  804 + $ncor->setrgb((mt_rand(0, 255)), (mt_rand(0, 255)), (mt_rand(0, 255)));
  805 + $ncor = $estilo->outlinecolor;
  806 + $ncor->setrgb(255, 255, 255);
  807 + if ($this->layer->type == 0) // tipo ponto
  808 +{
  809 + $estilo->set("symbolname", "ponto");
  810 + $estilo->set("size", 6);
  811 + }
  812 + // $c->set("title",$tema."+".$i);
  813 + }
  814 + $this->layer->setMetaData("cache", "");
  815 + return ("ok");
  816 + }
  817 +
  818 + /*
  819 + * function: adicionaclasse
  820 + *
  821 + * Adiciona uma nova classe em um objeto layer
  822 + *
  823 + * A nova classe ser&aacute; uma c�pia da classe 0.
  824 + */
  825 + function adicionaclasse()
  826 + {
  827 + if (! $this->layer) {
  828 + return "erro";
  829 + }
  830 + $classe = $this->layer->getclass(0);
  831 + $c = ms_newClassObj($this->layer, $classe);
  832 + $this->layer->setMetaData("cache", "");
  833 + return ("ok");
  834 + }
  835 +
  836 + /*
  837 + * function: sobeclasse
  838 + *
  839 + * Sobe uma classe na ordem de desenho
  840 + *
  841 + * Parametro:
  842 + *
  843 + * $idclasse {numerico} - id da classe (&iacute;ndice)
  844 + */
  845 + function sobeclasse($idclasse)
  846 + {
  847 + if (! $this->layer) {
  848 + return "erro";
  849 + }
  850 + $this->layer->moveclassup($idclasse);
  851 + return ("ok");
  852 + }
  853 +
  854 + /*
  855 + * function: desceclasse
  856 + *
  857 + * Desce uma classe na ordem de desenho
  858 + *
  859 + * Parametro:
  860 + *
  861 + * $idclasse {numerico} - id da classe (&iacute;ndice)
  862 + */
  863 + function desceclasse($idclasse)
  864 + {
  865 + if (! $this->layer) {
  866 + return "erro";
  867 + }
  868 + $this->layer->moveclassdown($idclasse);
  869 + return ("ok");
  870 + }
  871 +
  872 + /*
  873 + * function: adicionaopacidade
  874 + *
  875 + * Adiciona opacidade vari&aacute;vel de 0 a 100 conforme o n&uacute;mero de classes
  876 + *
  877 + */
  878 + function adicionaopacidade()
  879 + {
  880 + // error_reporting(0);
  881 + if (! $this->layer) {
  882 + return "erro";
  883 + }
  884 + $numclasses = $this->layer->numclasses;
  885 + $n = intval(100 / $numclasses);
  886 + for ($i = 0; $i < $numclasses; ++ $i) {
  887 + $classe = $this->layer->getclass($i);
  888 + $numestilos = $classe->numstyles;
  889 + $o = ($i * $n) + 5;
  890 + for ($j = 0; $j < $numestilos; ++ $j) {
  891 + $estilo = $classe->getstyle($j);
  892 + $estilo->set("opacity", $o);
  893 + }
  894 + }
  895 + $this->layer->setMetaData("cache", "");
  896 + return ("ok");
  897 + }
  898 +
  899 + /*
  900 + * function: alteracor
  901 + *
  902 + * Aplica uma nova cor aos estilos de uma classe
  903 + *
  904 + * Parametros:
  905 + *
  906 + * $idclasse {numerico} - id da classe (&iacute;ndice)
  907 + *
  908 + * $cor {string} - cor rgb
  909 + */
  910 + function alteracor($idclasse, $cor)
  911 + {
  912 + // error_reporting(0);
  913 + if (! $this->layer) {
  914 + return "erro";
  915 + }
  916 + $numclasses = $this->layer->numclasses;
  917 + $cor = str_replace(" ", ",", $cor);
  918 + $cor = explode(",", $cor);
  919 + $classe = $this->layer->getclass($idclasse);
  920 + $numestilos = $classe->numstyles;
  921 + for ($j = 0; $j < $numestilos; ++ $j) {
  922 + $estilo = $classe->getstyle($j);
  923 + $ncor = $estilo->color;
  924 + $ncoroutline = $estilo->outlinecolor;
  925 + if ($ncor->red < 0) {
  926 + $ncoroutline->setrgb($cor[0], $cor[1], $cor[2]);
  927 + } else {
  928 + $ncor->setrgb($cor[0], $cor[1], $cor[2]);
  929 + }
  930 + }
  931 + $this->layer->setMetaData("cache", "");
  932 + return ("ok");
  933 + }
  934 +
  935 + /*
  936 + * function: alterageometria
  937 + *
  938 + * Altera a geometria de representa&ccedil;&atilde;o de todos os estilos de todas as classes de um layer
  939 + *
  940 + * Parametro:
  941 + *
  942 + * $tipo {string} - tipo de representa&ccedil;&atilde;o
  943 + */
  944 + function alterageometria($tipo)
  945 + {
  946 + // error_reporting(0);
  947 + if (! $this->layer) {
  948 + return "erro";
  949 + }
  950 + $numclasses = $this->layer->numclasses;
  951 + for ($i = 0; $i < $numclasses; ++ $i) {
  952 + $classe = $this->layer->getclass($i);
  953 + $numestilos = $classe->numstyles;
  954 + for ($j = 0; $j < $numestilos; ++ $j) {
  955 + $estilo = $classe->getstyle($j);
  956 + $s = "STYLE geomtransform '$tipo' END";
  957 + $estilo->updateFromString($s);
  958 + }
  959 + }
  960 + $this->layer->setMetaData("cache", "");
  961 + return ("ok");
  962 + }
  963 +
  964 + /*
  965 + * function: alteraCoresClasses
  966 + *
  967 + * Altera as cores das classes existentes em um objeto layer gerando uma paleta de cores de acordo com um valor inicial e final.
  968 + *
  969 + * Parametros:
  970 + *
  971 + * $cori - cor inicial.
  972 + *
  973 + * $corf - cor final.
  974 + *
  975 + * Include:
  976 + * <class.palette.php>
  977 + */
  978 + function alteraCoresClasses($cori, $corf)
  979 + {
  980 + if (! $this->layer) {
  981 + return "erro";
  982 + }
  983 + if (file_exists($this->locaplic . "/class.palette.php"))
  984 + include_once ($this->locaplic . "/class.palette.php");
  985 + else
  986 + include_once ("class.palette.php");
  987 +
  988 + $cori = RGB2hex(explode(",", $cori));
  989 + $corf = RGB2hex(explode(",", $corf));
  990 + $numclasses = $this->layer->numclasses;
  991 + $myPalette = new palette(array(
  992 + $cori,
  993 + $corf
  994 + ), ($numclasses + 1));
  995 + $cores = $myPalette->colorRGB;
  996 + for ($i = 0; $i < $numclasses; ++ $i) {
  997 + $classe = $this->layer->getclass($i);
  998 + $estilo = $classe->getstyle(0);
  999 + $corpaleta = $cores[$i];
  1000 + if ($this->layer->type == MS_LAYER_LINE) {
  1001 + $cor = $estilo->outlinecolor;
  1002 + $cor->setrgb($corpaleta[0], $corpaleta[1], $corpaleta[2]);
  1003 + }
  1004 + $cor = $estilo->color;
  1005 + $cor->setrgb($corpaleta[0], $corpaleta[1], $corpaleta[2]);
  1006 + }
  1007 + $this->layer->setMetaData("cache", "");
  1008 + return ("ok");
  1009 + }
  1010 +
  1011 + /*
  1012 + * function: inverteCoresClasses
  1013 + *
  1014 + * Inverte as cores da legenda de um tema.
  1015 + */
  1016 + function inverteCoresClasses()
  1017 + {
  1018 + if (! $this->layer) {
  1019 + return "erro";
  1020 + }
  1021 + $numclasses = $this->layer->numclasses;
  1022 + $cor = array();
  1023 + for ($i = 0; $i < $numclasses; ++ $i) {
  1024 + $classe = $this->layer->getclass($i);
  1025 + $estilo = $classe->getstyle(0);
  1026 + $c = $estilo->color;
  1027 + $cor[] = array(
  1028 + "r" => ($c->red),
  1029 + "g" => ($c->green),
  1030 + "b" => ($c->blue)
  1031 + );
  1032 + }
  1033 + $cor = array_reverse($cor);
  1034 + for ($i = 0; $i < $numclasses; ++ $i) {
  1035 + $classe = $this->layer->getclass($i);
  1036 + $c = $cor[$i];
  1037 + $estilo = $classe->getstyle(0);
  1038 + $ncor = $estilo->color;
  1039 + $ncor->setrgb($c["r"], $c["g"], $c["b"]);
  1040 + }
  1041 + $this->layer->setMetaData("cache", "");
  1042 + return ("ok");
  1043 + }
  1044 +
  1045 + /*
  1046 + * function: calculaTamanhoClasses
  1047 + *
  1048 + * Calcula o tamanho dos estilos das classes, alterando o tamanho do s&iacute;mbolo.
  1049 + */
  1050 + function calculaTamanhoClasses()
  1051 + {
  1052 + if (! $this->layer) {
  1053 + return "erro";
  1054 + }
  1055 + $numclasses = $this->layer->numclasses;
  1056 + for ($i = 0; $i < $numclasses; ++ $i) {
  1057 + $classe = $this->layer->getclass($i);
  1058 + $estilo = $classe->getstyle(0);
  1059 + $estilo->set("size", ($i + 1));
  1060 + if ($estilo->symbolname == "") {
  1061 + if ($this->layer->type == MS_LAYER_LINE) {
  1062 + $estilo->set("symbolname", "linha");
  1063 + }
  1064 + if ($this->layer->type == MS_LAYER_POINT) {
  1065 + $estilo->set("symbolname", "ponto");
  1066 + }
  1067 + if ($this->layer->type == MS_LAYER_POLYGON) {
  1068 + $estilo->set("symbolname", "p4");
  1069 + }
  1070 + }
  1071 + }
  1072 + $this->layer->setMetaData("cache", "");
  1073 + return ("ok");
  1074 + }
  1075 +
  1076 + /*
  1077 + * function: ordenaClasses
  1078 + *
  1079 + * Ordena as classes pelo nome
  1080 + */
  1081 + function ordenaClasses()
  1082 + {
  1083 + if (! $this->layer) {
  1084 + return "erro";
  1085 + }
  1086 + $numclasses = $this->layer->numclasses;
  1087 + if ($numclasses == 1) {
  1088 + return ("ok");
  1089 + }
  1090 + // pega o nome das classes
  1091 + $nomes = array();
  1092 + for ($i = 0; $i < $numclasses; $i ++) {
  1093 + $classe = $this->layer->getclass($i);
  1094 + $nomes[$classe->name] = $classe->convertToString();
  1095 + }
  1096 + ksort($nomes);
  1097 + $indice = 0;
  1098 + foreach ($nomes as $n) {
  1099 + $classe = $this->layer->getclass($indice);
  1100 + $classe->updatefromstring($n);
  1101 + $indice ++;
  1102 + }
  1103 + $this->layer->setMetaData("cache", "");
  1104 + return ("ok");
  1105 + }
  1106 +
  1107 + /*
  1108 + * function: statusClasse
  1109 + *
  1110 + * Inverte o status a uma classe desligando ou desligando, conforme o status atual.
  1111 + *
  1112 + * Parametros:
  1113 + *
  1114 + * $classe - id da classe
  1115 + *
  1116 + */
  1117 + function statusClasse($classe)
  1118 + {
  1119 + //
  1120 + // na vers&atilde;o 6 do Mapserver as classes n&atilde;o obedecem o OFF ou ON em arquivos RASTER. Foi necess&aacute;rio contornar o problema usando um metadata
  1121 + //
  1122 + if (! $this->layer) {
  1123 + return "erro";
  1124 + }
  1125 + $cl = $this->layer->getclass($classe);
  1126 + $status = $cl->status;
  1127 + echo $status;
  1128 + if ($status == MS_OFF) {
  1129 + $cl->set("status", MS_ON);
  1130 + if ($this->layer->type == 3) {
  1131 + $e = $cl->getstyle(0);
  1132 + $e->set("opacity", 100);
  1133 + }
  1134 + } else {
  1135 + $cl->set("status", MS_OFF);
  1136 + if ($this->layer->type == 3) {
  1137 + $e = $cl->getstyle(0);
  1138 + $e->set("opacity", 0);
  1139 + }
  1140 + }
  1141 + $this->layer->setMetaData("cache", "");
  1142 + return ("ok");
  1143 + }
  1144 +
  1145 + /*
  1146 + * Function: pegaValores
  1147 + *
  1148 + * Pega os valores de um item de um tema.
  1149 + *
  1150 + * Parametros:
  1151 + *
  1152 + * $layer {objeto} - Layer que ser&aacute; processado.
  1153 + *
  1154 + * $item {string} - Item que ser&aacute; processado.
  1155 + *
  1156 + * $numerico {boleano} - O item e numerico (true ou false).
  1157 + *
  1158 + * $ignorar {string} - valor que ser&aacute; ignorado na listagem final
  1159 + *
  1160 + * Retorno:
  1161 + *
  1162 + * {array}
  1163 + */
  1164 + function pegaValores($mapa, $layer, $item, $numerico = false, $ignorar = "")
  1165 + {
  1166 + $layer->set("template", "none.htm");
  1167 + // $layer->setfilter("");
  1168 + $versao = versao();
  1169 + $versao = $versao["principal"];
  1170 + $ignorararray = explode(",", $ignorar);
  1171 + if (@$layer->queryByrect($mapa->extent) == MS_SUCCESS) {
  1172 + if ($layer->type == MS_LAYER_RASTER) {
  1173 + if ($item == "pixel") {
  1174 + $item = "value_0";
  1175 + }
  1176 + }
  1177 +
  1178 + $sopen = $layer->open();
  1179 + if ($sopen == MS_FAILURE) {
  1180 + return "erro";
  1181 + }
  1182 + $res_count = $layer->getNumresults();
  1183 + $valitem = array();
  1184 + for ($i = 0; $i < $res_count; ++ $i) {
  1185 + if ($versao >= 6) {
  1186 + $shape = $layer->getShape($layer->getResult($i));
  1187 + } else {
  1188 + $result = $layer->getResult($i);
  1189 + $shp_index = $result->shapeindex;
  1190 + $shape = $layer->getfeature($shp_index, - 1);
  1191 + }
  1192 + $v = trim($shape->values[$item]);
  1193 + if ($numerico) {
  1194 + if (is_numeric($v)) {
  1195 + if ($ignorar == "") {
  1196 + $valitem[] = $v;
  1197 + } else {
  1198 + // if ($v != $ignorar)
  1199 + if (! in_array($v, $ignorararray)) {
  1200 + $valitem[] = $v;
  1201 + }
  1202 + }
  1203 + }
  1204 + } else {
  1205 + if ($ignorar == "") {
  1206 + $valitem[] = $v;
  1207 + } else {
  1208 + if (! in_array($v, $ignorararray)) {
  1209 + $valitem[] = $v;
  1210 + }
  1211 + }
  1212 + }
  1213 + }
  1214 + $fechou = $layer->close();
  1215 + }
  1216 + $layer->close();
  1217 + return ($valitem);
  1218 + }
  1219 +
  1220 + /*
  1221 + * Function: converteTexto
  1222 + *
  1223 + * Converte uma string de ISO-8859-1 para UTF-8
  1224 + *
  1225 + * Parametro:
  1226 + *
  1227 + * $texto - string que ser&aacute; convertida
  1228 + *
  1229 + * Return:
  1230 + *
  1231 + * {string}
  1232 + */
  1233 + function converteTexto($texto)
  1234 + {
  1235 + if (function_exists("mb_convert_encoding")) {
  1236 + if (! mb_detect_encoding($texto, "UTF-8", true)) {
  1237 + $texto = mb_convert_encoding($texto, "UTF-8", "ISO-8859-1");
  1238 + }
  1239 + }
  1240 + return $texto;
  1241 + }
  1242 +}
1265 ?> 1243 ?>
1266 \ No newline at end of file 1244 \ No newline at end of file
classesphp/classe_legenda.php
@@ -117,9 +117,8 @@ class Legenda @@ -117,9 +117,8 @@ class Legenda
117 117
118 function __construct($map_file="",$locaplic="",$tema="",$template="") 118 function __construct($map_file="",$locaplic="",$tema="",$template="")
119 { 119 {
120 - include(dirname(__FILE__)."/../ms_configura.php"); 120 + include(dirname(__FILE__)."/../ms_configura.php");
121 $this->postgis_mapa = $postgis_mapa; 121 $this->postgis_mapa = $postgis_mapa;
122 -  
123 include_once(dirname(__FILE__)."/funcoes_gerais.php"); 122 include_once(dirname(__FILE__)."/funcoes_gerais.php");
124 $this->v = versao(); 123 $this->v = versao();
125 $this->v = $this->v["principal"]; 124 $this->v = $this->v["principal"];
@@ -130,22 +129,22 @@ class Legenda @@ -130,22 +129,22 @@ class Legenda
130 } 129 }
131 $this->mapa = ms_newMapObj($map_file); 130 $this->mapa = ms_newMapObj($map_file);
132 substituiConObj($this->mapa,$postgis_mapa); 131 substituiConObj($this->mapa,$postgis_mapa);
133 -  
134 $this->arquivo = str_replace(".map","",$map_file).".map"; 132 $this->arquivo = str_replace(".map","",$map_file).".map";
  133 +
135 if($tema != "" && @$this->mapa->getlayerbyname($tema)) 134 if($tema != "" && @$this->mapa->getlayerbyname($tema))
136 { 135 {
137 - $this->layer = $this->mapa->getlayerbyname($tema); 136 + $this->layer = $this->mapa->getlayerbyname($tema);
138 $this->nome = $tema; 137 $this->nome = $tema;
139 $vermultilayer = new vermultilayer(); 138 $vermultilayer = new vermultilayer();
140 $vermultilayer->verifica($map_file,$tema); 139 $vermultilayer->verifica($map_file,$tema);
141 if ($vermultilayer->resultado == 1) // o tema e multi layer 140 if ($vermultilayer->resultado == 1) // o tema e multi layer
142 { 141 {
143 - $ls = $vermultilayer->temas; 142 + $ls = $vermultilayer->temas;
144 $this->visiveis = $vermultilayer->temasvisiveis; 143 $this->visiveis = $vermultilayer->temasvisiveis;
145 } 144 }
146 else 145 else
147 { 146 {
148 - $ls[] = $tema; 147 + $ls[] = $tema;
149 $this->visiveis = array($tema); 148 $this->visiveis = array($tema);
150 } 149 }
151 $this->grupo = $ls; 150 $this->grupo = $ls;
@@ -424,9 +423,9 @@ class Legenda @@ -424,9 +423,9 @@ class Legenda
424 array 423 array
425 */ 424 */
426 function tabelaLegenda($totaliza="nao"){ 425 function tabelaLegenda($totaliza="nao"){
427 - $linhas = array(); 426 + $linhas = array();
428 foreach ($this->visiveis as $l){ 427 foreach ($this->visiveis as $l){
429 - $layer = $this->mapa->getlayerbyname($l); 428 + $layer = $this->mapa->getlayerbyname($l);
430 //verifica se &eacute; wms ou wfs 429 //verifica se &eacute; wms ou wfs
431 $c = $layer->connectiontype; 430 $c = $layer->connectiontype;
432 431
ferramentas/legenda/exec.php
@@ -104,9 +104,12 @@ Cria elementos para construir uma legenda no formato de tabela em HTML. @@ -104,9 +104,12 @@ Cria elementos para construir uma legenda no formato de tabela em HTML.
104 */ 104 */
105 case "EDITALEGENDA": 105 case "EDITALEGENDA":
106 include_once(dirname(__FILE__)."/../../classesphp/classe_legenda.php"); 106 include_once(dirname(__FILE__)."/../../classesphp/classe_legenda.php");
  107 +
107 $m = new Legenda($map_file,$locaplic,$tema); 108 $m = new Legenda($map_file,$locaplic,$tema);
108 $r = $m->tabelaLegenda(); 109 $r = $m->tabelaLegenda();
109 - if (!$r){$r = "erro.Erro legenda nao disponivel";} 110 + if (!$r){
  111 + $r = "erro.Erro legenda nao disponivel";
  112 + }
110 $retorno = $r; 113 $retorno = $r;
111 break; 114 break;
112 /* 115 /*
ferramentas/opcoes_label/dicionario.js
@@ -154,5 +154,10 @@ i3GEOF.proplabel.dicionario = { @@ -154,5 +154,10 @@ i3GEOF.proplabel.dicionario = {
154 pt : "Propriedades do texto", 154 pt : "Propriedades do texto",
155 en : "", 155 en : "",
156 es : "" 156 es : ""
  157 + } ],
  158 + 'observacao' : [ {
  159 + pt : "Mantenha essa janela aberta ao aplicar para que as propriedades sejam consideradas",
  160 + en : "",
  161 + es : ""
157 } ] 162 } ]
158 }; 163 };
ferramentas/opcoes_label/template_mst.html
1 <div class="container-fluid"> 1 <div class="container-fluid">
2 - <div style="width: 100%;" class='form-group label-fixed condensed'> 2 + <h5 class='alert alert-info'>
  3 + {{{observacao}}}
  4 + </h5>
  5 + <div style="width: 100%;" class='form-group label-fixed condensed'>
3 <label class="control-label" for="">{{{fonte}}}</label> 6 <label class="control-label" for="">{{{fonte}}}</label>
4 <div style="width: 100%;" class="input-group"> 7 <div style="width: 100%;" class="input-group">
5 <div id="i3GEOproplabelDivListaFonte"></div> 8 <div id="i3GEOproplabelDivListaFonte"></div>
temas/_lbairros.map
1 MAP 1 MAP
2 - FONTSET "/var/www/i3geo/symbols/fontes.txt"  
3 - SYMBOLSET "/var/www/i3geo/symbols/simbolosv6.sym" 2 + FONTSET "/var/www/i3geo/symbols/fontes.txt"
  3 + SYMBOLSET "/var/www/i3geo/symbols/simbolosv6.sym"
4 LAYER 4 LAYER
5 - CONNECTION "i3geosaude" 5 + CONNECTION "user=postgres password=postgres dbname=i3geosaude host=localhost port=5432"
6 CONNECTIONTYPE POSTGIS 6 CONNECTIONTYPE POSTGIS
7 DATA "the_geom from (select gid, st_setsrid(the_geom,4326) as the_geom,co_bairro,no_bairro,no_distr,no_municip from i3geo_metaestat.bairros ) as foo using unique co_bairro using srid=4326" 7 DATA "the_geom from (select gid, st_setsrid(the_geom,4326) as the_geom,co_bairro,no_bairro,no_distr,no_municip from i3geo_metaestat.bairros ) as foo using unique co_bairro using srid=4326"
8 METADATA 8 METADATA
9 - "TIP" "no_bairro,id"  
10 "cache" "sim" 9 "cache" "sim"
  10 + "TIP" "no_bairro,id"
11 "CLASSE" "SIM" 11 "CLASSE" "SIM"
12 "permitekmz" "SIM" 12 "permitekmz" "SIM"
13 "ITENSDESC" "id,Código bairro,Nome,Distrito,Município" 13 "ITENSDESC" "id,Código bairro,Nome,Distrito,Município"
14 "EDITAVEL" "NAO" 14 "EDITAVEL" "NAO"
  15 + "extensao" "-70.041740706664 -33.694583050265 -34.792884974458 2.8730391155742"
15 "wkttip" "SIM" 16 "wkttip" "SIM"
16 "permitedownload" "SIM" 17 "permitedownload" "SIM"
17 "permitecomentario" "NAO" 18 "permitecomentario" "NAO"
18 "escondido" "NAO" 19 "escondido" "NAO"
19 "download" "SIM" 20 "download" "SIM"
20 - "ITENS" "gid,co_bairro,no_bairro,no_distr,no_municip"  
21 "CONEXAOORIGINAL" "i3geosaude" 21 "CONEXAOORIGINAL" "i3geosaude"
22 - "transitioneffect" "NAO"  
23 - "permiteogc" "SIM" 22 + "ITENS" "gid,co_bairro,no_bairro,no_distr,no_municip"
24 "permitekml" "SIM" 23 "permitekml" "SIM"
  24 + "permiteogc" "SIM"
  25 + "transitioneffect" "NAO"
25 "TEMA" "_Bairros POSTGIS" 26 "TEMA" "_Bairros POSTGIS"
26 "identifica" "nao" 27 "identifica" "nao"
27 END # METADATA 28 END # METADATA
@@ -41,4 +42,6 @@ MAP @@ -41,4 +42,6 @@ MAP
41 TITLE "" 42 TITLE ""
42 END # CLASS 43 END # CLASS
43 END # LAYER 44 END # LAYER
  45 +
44 END # MAP 46 END # MAP
  47 +
temas/_lbiomashp.map
@@ -8,42 +8,42 @@ MAP @@ -8,42 +8,42 @@ MAP
8 CONNECTION "" 8 CONNECTION ""
9 DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" 9 DATA "/var/www/i3geo/aplicmap/dados/biomas.shp"
10 METADATA 10 METADATA
11 - "cache" "sim"  
12 "TIP" "CD_LEGENDA" 11 "TIP" "CD_LEGENDA"
13 - "olopacity" "" 12 + "cache" "sim"
14 "CLASSE" "SIM" 13 "CLASSE" "SIM"
  14 + "olopacity" ""
15 "animagif" "" 15 "animagif" ""
16 "permitekmz" "SIM" 16 "permitekmz" "SIM"
17 "gmopacity" "" 17 "gmopacity" ""
18 "gmstatus" "" 18 "gmstatus" ""
19 "ITENSDESC" "Teste de acentuação" 19 "ITENSDESC" "Teste de acentuação"
20 - "editavel" ""  
21 - "ESCALA" "250000"  
22 "TILES" "SIM" 20 "TILES" "SIM"
  21 + "ESCALA" "250000"
  22 + "editavel" ""
23 "arquivotemaoriginal" "" 23 "arquivotemaoriginal" ""
24 "extensao" "-73.990940816816 -33.74827031115 -34.822855820777 5.272224303909" 24 "extensao" "-73.990940816816 -33.74827031115 -34.822855820777 5.272224303909"
25 - "olstatus" ""  
26 "nomeoriginal" "" 25 "nomeoriginal" ""
  26 + "olstatus" ""
27 "permitedownload" "SIM" 27 "permitedownload" "SIM"
28 - "permitecomentario" "NAO"  
29 "FILTROORIGINAL" "" 28 "FILTROORIGINAL" ""
30 - "escondido" "NAO" 29 + "permitecomentario" "NAO"
31 "DATAORIGINAL" "" 30 "DATAORIGINAL" ""
32 - "esquematabelaeditavel" "" 31 + "escondido" "NAO"
33 "download" "SIM" 32 "download" "SIM"
  33 + "esquematabelaeditavel" ""
34 "itembuscarapida" "CD_LEGENDA" 34 "itembuscarapida" "CD_LEGENDA"
35 - "tme" ""  
36 "ITENS" "CD_LEGENDA" 35 "ITENS" "CD_LEGENDA"
37 - "transitioneffect" "NAO"  
38 - "permiteogc" "SIM" 36 + "tme" ""
39 "permitekml" "SIM" 37 "permitekml" "SIM"
40 - "TEMA" "Biomas shapefile (acentuação)" 38 + "permiteogc" "SIM"
  39 + "transitioneffect" "NAO"
41 "convcaracter" "SIM" 40 "convcaracter" "SIM"
42 - "colunageometria" "" 41 + "TEMA" "Biomas shapefile (acentuação)"
43 "colunaidunico" "" 42 "colunaidunico" ""
  43 + "colunageometria" ""
44 "identifica" "sim" 44 "identifica" "sim"
45 - "storymap" ""  
46 "tabelaeditavel" "" 45 "tabelaeditavel" ""
  46 + "storymap" ""
47 END # METADATA 47 END # METADATA
48 NAME "_lbiomashp" 48 NAME "_lbiomashp"
49 PROCESSING "ITEMS=CD_LEGENDA" 49 PROCESSING "ITEMS=CD_LEGENDA"