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 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 18 <!DOCTYPE html>
18 19 <html lang="pt-br">
19 20 <head>
20 21 <meta http-equiv="Category" content="i3Geo Mapa interativo MMA geoprocessamento sig mobile">
21 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 24 <title>i3GEO - OpenLayers</title>
25 25 <script src="../pacotes/ol4/ol.js"></script>
26 26 <script src="../js/i3geo.js"></script>
... ... @@ -40,152 +40,142 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
40 40 background: none;
41 41 margin-bottom: 15px;
42 42 }
43   -.foraDoMapa + span > span {
  43 +
  44 +.foraDoMapa+span>span {
44 45 background-color: yellow;
45 46 }
46 47 </style>
47 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 50 Marque com data-traduzir="true" os elementos que deverao passar pelo tradutor
50 51 -->
51 52 <body id="i3geo" style='background: white;'>
52   - <!-- inclui o nome do usuario logado
  53 + <!-- inclui o nome do usuario logado
53 54 <div id="i3GEONomeLogin"
54 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 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 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 156 data-idLista - id do DIV dentro de idconteudo que sera utilizado para mostrar as "pastas" que abrem o proximo nivel
168 157 data-idLinks - id do DIV dentro de idconteudo que sera utilizado para mostrar a lista de links que abre cada ferramenta
169 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 166 data-idListaDeCamadas - id onde sera incluida a lista de camadas
178 167 data-idListaFundo - id onde sera incluida a lista de camadas de fundo (mapa base)
179 168 data-verificaAbrangencia - se for uma string, faz a verificacao se a camada esta fora da abrangencia atual do mapa,
180 169 inserindo ou nao a string como uma classe CSS. Pode degradar a performance e depende
181 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 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 180 data-idMenus - id do DIV que recebera a lista de menus cadastrados no sistema de administracao
191 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 184 Variaveis javascript:
195 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 216 <div class="hidden-xs hidden-sm" onclick="i3GEO.guias.ativa('identifica',this)" style="margin-top: 3px;">
226 217 <button title="{{{iconeIdentifica}}}" class="iconeGuiaMovel" style="box-shadow: none;">
227 218 <img src="../imagens/gisicons/pointer-info.png" style="cursor: pointer; padding: 3px;">
228 219 </button>
229 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 276 A lista de camadas de fundo e obtida da variavel i3GEO.Interface.openlayers.LAYERSADICIONAIS
264 277 Essa variavel e definida via javascript, e no caso das interfaces padrao do i3Geo, e definida
265 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 351 <div class="form-group label-floating">
332 352 <label class="control-label" for="i3GEObuscatema">{{{a1}}}</label>
333 353 <div class="input-group">
... ... @@ -340,18 +360,18 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
340 360 </div>
341 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 364 Nessa funcao ficam tambem os parametros:
345 365 "idOndeMenus": "catalogoMenus",
346 366 "idCatalogoPrincipal": "catalogoPrincipal",
347 367 "idCatalogoNavegacao": "catalogoNavegacao",
348 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 375 As funcoes de inicializacao recebem um objeto com parametros. Que por padrao sao:
356 376 config: {
357 377 'templateDir': '../interface/templates/dir.html',
... ... @@ -366,43 +386,63 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
366 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 446 <div class="list-group condensed"><div class="row-content text-left">
407 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 448 <label style="width: 255px;vertical-align: middle;">
... ... @@ -412,92 +452,107 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
412 452 </label>
413 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 513 Funcoes de busca por registros. Pode ser feita nos temas existentes no mapa, em um servico de busca e no google
453 514 No botao que dispara a busca, ficam os parametros de configuracao
454 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 556 <div class="list-group condensed">
502 557 <div class="checkbox text-left">
503 558 <label>
... ... @@ -507,55 +562,60 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
507 562 </div>
508 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 619 <div>
560 620 <table>
561 621 <tr>
... ... @@ -573,7 +633,7 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
573 633 <div>&nbsp;</div>
574 634 </div>
575 635 </script>
576   - <script>
  636 + <script>
577 637 //ativa o banner de inicializacao
578 638 i3GEO.janela.tempoMsg($i("i3GEOlogoMarcaTemplate").innerHTML,4000);
579 639 (function() {
... ... @@ -727,7 +787,7 @@ if ($_SESSION [&quot;usuario&quot;] != $_COOKIE [&quot;i3geousuariologin&quot;]) {
727 787 theme: "inset-2",
728 788 axis: "yx",
729 789 scrollbarPosition: "inside",
730   - scrollButtons:{ enable: true },
  790 + scrollButtons:{ enable: false },
731 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 1244 \ No newline at end of file
... ...
classesphp/classe_legenda.php
... ... @@ -117,9 +117,8 @@ class Legenda
117 117  
118 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 121 $this->postgis_mapa = $postgis_mapa;
122   -
123 122 include_once(dirname(__FILE__)."/funcoes_gerais.php");
124 123 $this->v = versao();
125 124 $this->v = $this->v["principal"];
... ... @@ -130,22 +129,22 @@ class Legenda
130 129 }
131 130 $this->mapa = ms_newMapObj($map_file);
132 131 substituiConObj($this->mapa,$postgis_mapa);
133   -
134 132 $this->arquivo = str_replace(".map","",$map_file).".map";
  133 +
135 134 if($tema != "" && @$this->mapa->getlayerbyname($tema))
136 135 {
137   - $this->layer = $this->mapa->getlayerbyname($tema);
  136 + $this->layer = $this->mapa->getlayerbyname($tema);
138 137 $this->nome = $tema;
139 138 $vermultilayer = new vermultilayer();
140 139 $vermultilayer->verifica($map_file,$tema);
141 140 if ($vermultilayer->resultado == 1) // o tema e multi layer
142 141 {
143   - $ls = $vermultilayer->temas;
  142 + $ls = $vermultilayer->temas;
144 143 $this->visiveis = $vermultilayer->temasvisiveis;
145 144 }
146 145 else
147 146 {
148   - $ls[] = $tema;
  147 + $ls[] = $tema;
149 148 $this->visiveis = array($tema);
150 149 }
151 150 $this->grupo = $ls;
... ... @@ -424,9 +423,9 @@ class Legenda
424 423 array
425 424 */
426 425 function tabelaLegenda($totaliza="nao"){
427   - $linhas = array();
  426 + $linhas = array();
428 427 foreach ($this->visiveis as $l){
429   - $layer = $this->mapa->getlayerbyname($l);
  428 + $layer = $this->mapa->getlayerbyname($l);
430 429 //verifica se &eacute; wms ou wfs
431 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 104 */
105 105 case "EDITALEGENDA":
106 106 include_once(dirname(__FILE__)."/../../classesphp/classe_legenda.php");
  107 +
107 108 $m = new Legenda($map_file,$locaplic,$tema);
108 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 113 $retorno = $r;
111 114 break;
112 115 /*
... ...
ferramentas/opcoes_label/dicionario.js
... ... @@ -154,5 +154,10 @@ i3GEOF.proplabel.dicionario = {
154 154 pt : "Propriedades do texto",
155 155 en : "",
156 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 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 6 <label class="control-label" for="">{{{fonte}}}</label>
4 7 <div style="width: 100%;" class="input-group">
5 8 <div id="i3GEOproplabelDivListaFonte"></div>
... ...
temas/_lbairros.map
1 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 4 LAYER
5   - CONNECTION "i3geosaude"
  5 + CONNECTION "user=postgres password=postgres dbname=i3geosaude host=localhost port=5432"
6 6 CONNECTIONTYPE POSTGIS
7 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 8 METADATA
9   - "TIP" "no_bairro,id"
10 9 "cache" "sim"
  10 + "TIP" "no_bairro,id"
11 11 "CLASSE" "SIM"
12 12 "permitekmz" "SIM"
13 13 "ITENSDESC" "id,Código bairro,Nome,Distrito,Município"
14 14 "EDITAVEL" "NAO"
  15 + "extensao" "-70.041740706664 -33.694583050265 -34.792884974458 2.8730391155742"
15 16 "wkttip" "SIM"
16 17 "permitedownload" "SIM"
17 18 "permitecomentario" "NAO"
18 19 "escondido" "NAO"
19 20 "download" "SIM"
20   - "ITENS" "gid,co_bairro,no_bairro,no_distr,no_municip"
21 21 "CONEXAOORIGINAL" "i3geosaude"
22   - "transitioneffect" "NAO"
23   - "permiteogc" "SIM"
  22 + "ITENS" "gid,co_bairro,no_bairro,no_distr,no_municip"
24 23 "permitekml" "SIM"
  24 + "permiteogc" "SIM"
  25 + "transitioneffect" "NAO"
25 26 "TEMA" "_Bairros POSTGIS"
26 27 "identifica" "nao"
27 28 END # METADATA
... ... @@ -41,4 +42,6 @@ MAP
41 42 TITLE ""
42 43 END # CLASS
43 44 END # LAYER
  45 +
44 46 END # MAP
  47 +
... ...
temas/_lbiomashp.map
... ... @@ -8,42 +8,42 @@ MAP
8 8 CONNECTION ""
9 9 DATA "/var/www/i3geo/aplicmap/dados/biomas.shp"
10 10 METADATA
11   - "cache" "sim"
12 11 "TIP" "CD_LEGENDA"
13   - "olopacity" ""
  12 + "cache" "sim"
14 13 "CLASSE" "SIM"
  14 + "olopacity" ""
15 15 "animagif" ""
16 16 "permitekmz" "SIM"
17 17 "gmopacity" ""
18 18 "gmstatus" ""
19 19 "ITENSDESC" "Teste de acentuação"
20   - "editavel" ""
21   - "ESCALA" "250000"
22 20 "TILES" "SIM"
  21 + "ESCALA" "250000"
  22 + "editavel" ""
23 23 "arquivotemaoriginal" ""
24 24 "extensao" "-73.990940816816 -33.74827031115 -34.822855820777 5.272224303909"
25   - "olstatus" ""
26 25 "nomeoriginal" ""
  26 + "olstatus" ""
27 27 "permitedownload" "SIM"
28   - "permitecomentario" "NAO"
29 28 "FILTROORIGINAL" ""
30   - "escondido" "NAO"
  29 + "permitecomentario" "NAO"
31 30 "DATAORIGINAL" ""
32   - "esquematabelaeditavel" ""
  31 + "escondido" "NAO"
33 32 "download" "SIM"
  33 + "esquematabelaeditavel" ""
34 34 "itembuscarapida" "CD_LEGENDA"
35   - "tme" ""
36 35 "ITENS" "CD_LEGENDA"
37   - "transitioneffect" "NAO"
38   - "permiteogc" "SIM"
  36 + "tme" ""
39 37 "permitekml" "SIM"
40   - "TEMA" "Biomas shapefile (acentuação)"
  38 + "permiteogc" "SIM"
  39 + "transitioneffect" "NAO"
41 40 "convcaracter" "SIM"
42   - "colunageometria" ""
  41 + "TEMA" "Biomas shapefile (acentuação)"
43 42 "colunaidunico" ""
  43 + "colunageometria" ""
44 44 "identifica" "sim"
45   - "storymap" ""
46 45 "tabelaeditavel" ""
  46 + "storymap" ""
47 47 END # METADATA
48 48 NAME "_lbiomashp"
49 49 PROCESSING "ITEMS=CD_LEGENDA"
... ...