Commit d63ac125633432ccb134c6c4b9cf8e347c911e90
1 parent
98cbf426
Exists in
master
and in
7 other branches
Modificação na aplicação de cores em classes para considerar se o color é negativo
Showing
9 changed files
with
1756 additions
and
1705 deletions
Show diff stats
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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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"> </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í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"> </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í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"> </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"> </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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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"> </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"> </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"> </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"> </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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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"> </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"> </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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
573 | 633 | <div> </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 ["usuario"] != $_COOKIE ["i3geousuariologin"]) { |
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çã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ério do Meio Ambiente Brasil | |
14 | -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com | |
15 | - | |
16 | -Este programa é software livre; você pode redistribuí-lo | |
17 | -e/ou modificá-lo sob os termos da Licença Pública Geral | |
18 | -GNU conforme publicada pela Free Software Foundation; | |
19 | - | |
20 | -Este programa é distribuído na expectativa de que seja útil, | |
21 | -porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
22 | -de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
23 | -Consulte a Licença Pública Geral do GNU para mais detalhes. | |
24 | -Você deve ter recebido uma copia da Licença Pública Geral do | |
25 | - GNU junto com este programa; se não, escreva para a | |
26 | -Free Software Foundation, Inc., no endereç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ções que alteram as classes da legenda de um tema existente no mapa. | |
37 | -As modificaçõ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ç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ão a ser desenhados conforme essa primeira classe, uma vez que a expressão de definiçã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ã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 índices, nomes e expressões definidas nos parâmetros passados como argumentos. | |
185 | - | |
186 | - Parametros: | |
187 | - | |
188 | - $ids - lista de ids, separados por vírgula, que identificam as classes no layer | |
189 | - | |
190 | - $nomes - lista com os novos nomes | |
191 | - | |
192 | - $exps - lista com as novas expressõ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 é 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érico na tabela de atributos com um número de classes fixos. | |
272 | - | |
273 | - Parametros: | |
274 | - | |
275 | - $item - item da tabela de atributos | |
276 | - | |
277 | - $nclasses - número de classes | |
278 | - | |
279 | - $ignorar - valor que será 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 à primeira metade do total e a segunda classe corresponde à 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á 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ão abaixo da média e a segunda aqueles que são iguais ou superiores a média | |
1 | +<?php | |
444 | 2 | |
445 | - Parametros: | |
3 | +/* | |
4 | + * Title: classe_alteraclasse.php | |
5 | + * | |
6 | + * Manipulaçã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ério do Meio Ambiente Brasil | |
15 | + * Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com | |
16 | + * | |
17 | + * Este programa é software livre; você pode redistribuí-lo | |
18 | + * e/ou modificá-lo sob os termos da Licença Pública Geral | |
19 | + * GNU conforme publicada pela Free Software Foundation; | |
20 | + * | |
21 | + * Este programa é distribuído na expectativa de que seja útil, | |
22 | + * porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | |
23 | + * de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | |
24 | + * Consulte a Licença Pública Geral do GNU para mais detalhes. | |
25 | + * Você deve ter recebido uma copia da Licença Pública Geral do | |
26 | + * GNU junto com este programa; se não, escreva para a | |
27 | + * Free Software Foundation, Inc., no endereç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ções que alteram as classes da legenda de um tema existente no mapa. | |
38 | + * As modificaçõ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á 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ç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ú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á 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ão a ser desenhados conforme essa primeira classe, uma vez que a expressão de definiçã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ã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 índices, nomes e expressões definidas nos parâmetros passados como argumentos. | |
190 | + * | |
191 | + * Parametros: | |
192 | + * | |
193 | + * $ids - lista de ids, separados por vírgula, que identificam as classes no layer | |
194 | + * | |
195 | + * $nomes - lista com os novos nomes | |
196 | + * | |
197 | + * $exps - lista com as novas expressõ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 é 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úmero de classes | |
274 | + /* | |
275 | + * function: intervalosiguais | |
276 | + * | |
277 | + * Cria classes em um objeto layer com intervalos iguais baseando-se em um item numérico na tabela de atributos com um número de classes fixos. | |
278 | + * | |
279 | + * Parametros: | |
280 | + * | |
281 | + * $item - item da tabela de atributos | |
282 | + * | |
283 | + * $nclasses - número de classes | |
284 | + * | |
285 | + * $ignorar - valor que será 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á 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érico na tabela de atributos com um nú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á ignorado na listagem final | |
656 | - | |
657 | - $tipoLegenda - tipo de texto que será incluí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ência de um valor é 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á ignorado na listagem final | |
748 | - | |
749 | - $itemNome - item que será usado para definir os nomes das classes (por default será 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á 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 (í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 (í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ável de 0 a 100 conforme o nú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 (í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ção de todos os estilos de todas as classes de um layer | |
944 | - | |
945 | - Parametro: | |
946 | - | |
947 | - $tipo {string} - tipo de representaçã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í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 à primeira metade do total e a segunda classe corresponde à 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á 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ão 6 do Mapserver as classes não obedecem o OFF ou ON em arquivos RASTER. Foi necessá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á processado. | |
1158 | - | |
1159 | - $item {string} - Item que será processado. | |
1160 | - | |
1161 | - $numerico {boleano} - O item e numerico (true ou false). | |
1162 | - | |
1163 | - $ignorar {string} - valor que será 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á 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ão abaixo da média e a segunda aqueles que são iguais ou superiores a média | |
443 | + * | |
444 | + * Parametros: | |
445 | + * | |
446 | + * $item - item da tabela de atributos | |
447 | + * | |
448 | + * $ignorar - valor que será 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úmero de classes | |
518 | + * | |
519 | + * $ignorar - valor que será 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úmero de classes | |
590 | + * | |
591 | + * $ignorar - valor que será 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érico na tabela de atributos com um nú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á ignorado na listagem final | |
654 | + * | |
655 | + * $tipoLegenda - tipo de texto que será incluí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ência de um valor é 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á ignorado na listagem final | |
744 | + * | |
745 | + * $itemNome - item que será usado para definir os nomes das classes (por default será 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á 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 (í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 (í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ável de 0 a 100 conforme o nú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 (í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ção de todos os estilos de todas as classes de um layer | |
939 | + * | |
940 | + * Parametro: | |
941 | + * | |
942 | + * $tipo {string} - tipo de representaçã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í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ão 6 do Mapserver as classes não obedecem o OFF ou ON em arquivos RASTER. Foi necessá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á processado. | |
1153 | + * | |
1154 | + * $item {string} - Item que será processado. | |
1155 | + * | |
1156 | + * $numerico {boleano} - O item e numerico (true ou false). | |
1157 | + * | |
1158 | + * $ignorar {string} - valor que será 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á 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 é 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" | ... | ... |