Commit bd2bb84437168b870940c74f51a8fab8131dafc7

Authored by Edmar Moretti
1 parent daceb07d

Inclusão de rotina para agregar regiões no sistema METAESTAT

admin/admin.db
No preview for this file type
admin/php/classe_metaestat.php
@@ -240,72 +240,84 @@ class Metaestat{ @@ -240,72 +240,84 @@ class Metaestat{
240 $filtro = false; 240 $filtro = false;
241 $dados = $this->listaMedidaVariavel("",$id_medida_variavel); 241 $dados = $this->listaMedidaVariavel("",$id_medida_variavel);
242 $dadosgeo = $this->listaTipoRegiao($dados["codigo_tipo_regiao"]); 242 $dadosgeo = $this->listaTipoRegiao($dados["codigo_tipo_regiao"]);
  243 + //indica se os dados sao agregados a uma regiao de nivel superior
243 $agregaregiao = false; 244 $agregaregiao = false;
  245 + $colunas = array();
244 if($codigo_tipo_regiao != "" && $dados["codigo_tipo_regiao"] != $codigo_tipo_regiao){ 246 if($codigo_tipo_regiao != "" && $dados["codigo_tipo_regiao"] != $codigo_tipo_regiao){
245 $agregaregiao = true; 247 $agregaregiao = true;
  248 + //guarda os dados da regiao que agrega a regiao original da medida variavel
246 $dadosgeoagregada = $this->listaTipoRegiao($codigo_tipo_regiao); 249 $dadosgeoagregada = $this->listaTipoRegiao($codigo_tipo_regiao);
247 - }  
248 - if($tipolayer != "point"){  
249 - $colunageo = $dadosgeo["colunageo"];  
250 - }  
251 - else{  
252 - $colunageo = $dadosgeo["colunacentroide"];  
253 - }  
254 - if($todasascolunas == 0){  
255 - $sql = " SELECT d.".$dados["colunavalor"].",d.".$dados["colunaidgeo"];  
256 - $colunas[] = $dados["colunavalor"];  
257 - $colunas[] = $dados["colunaidgeo"];  
258 - if(!empty($agruparpor)){  
259 - $temp = explode(",",$agruparpor);  
260 - $sql .= ",d.".implode(",d.",$temp);  
261 - $colunas = array_merge($colunas,$temp); 250 + if($tipolayer != "point"){
  251 + $colunageo = $dadosgeoagregada["colunageo"];
  252 + }
  253 + else{
  254 + $colunageo = $dadosgeoagregada["colunacentroide"];
262 } 255 }
263 } 256 }
264 else{ 257 else{
265 - $sql = " SELECT d.* ";  
266 - $colunas = $this->colunasTabela($dados["codigo_estat_conexao"],$dados["esquemadb"],$dados["tabela"]);  
267 - }  
268 - //prepara a lista de colunas que ficarao visiveis no sql geo  
269 - $vis = $dadosgeo["colunasvisiveis"];  
270 - $vis = str_replace(" ",",",$vis);  
271 - $vis = str_replace(",,",",",$vis);  
272 - $colunasvisiveis = explode(",",$vis);  
273 - //$vis[] = "st_setsrid($colunageo,".$dadosgeo["srid"].") as $colunageo";  
274 - $colunasvisiveis = array_unique($colunasvisiveis);  
275 - $colunas = array_merge($colunas,$colunasvisiveis);  
276 - $vis = implode(",g.",$colunasvisiveis);  
277 - $vis = "g.".$vis.",st_setsrid(g.".$colunageo.",".$dadosgeo["srid"].") as ".$colunageo;  
278 - //$sqlgeo = $sql.",g.".$colunageo;  
279 - $sqlgeo = $sql.",".$vis;  
280 - //  
281 - //prepara os alias das colunas  
282 - //  
283 - $alias = $colunas;  
284 - $n = count($colunas);  
285 - for($i=0;$i<$n;$i++){  
286 - if($colunas[$i] === $dados["colunavalor"]){  
287 - $alias[$i] = mb_convert_encoding($dados["nomemedida"],"ISO-8859-1",mb_detect_encoding($dados["nomemedida"]));  
288 - }  
289 - }  
290 - $aliasvis = $dadosgeo["apelidos"];  
291 - $aliasvis = str_replace(" ",",",$aliasvis);  
292 - $aliasvis = str_replace(",,",",",$aliasvis);  
293 - $aliasvis = explode(",",$aliasvis);  
294 - if(count($aliasvis) == count($colunasvisiveis)){  
295 - $n = count($colunas);  
296 - for($i=0;$i<$n;$i++){  
297 - $nj = count($colunasvisiveis);  
298 - for($j=0;$j<$nj;$j++){  
299 - if($colunas[$i] === $colunasvisiveis[$j]){  
300 - $alias[$i] = mb_convert_encoding($aliasvis[$j],"ISO-8859-1",mb_detect_encoding($aliasvis[$j]));  
301 - }  
302 - } 258 + if($tipolayer != "point"){
  259 + $colunageo = $dadosgeo["colunageo"];
  260 + }
  261 + else{
  262 + $colunageo = $dadosgeo["colunacentroide"];
  263 + }
  264 + }
  265 + if($agregaregiao == false){
  266 + if($todasascolunas == 0){
  267 + $sql = " SELECT d.".$dados["colunavalor"].",d.".$dados["colunaidgeo"];
  268 + $colunas[] = $dados["colunavalor"];
  269 + $colunas[] = $dados["colunaidgeo"];
  270 + if(!empty($agruparpor)){
  271 + $temp = explode(",",$agruparpor);
  272 + $sql .= ",d.".implode(",d.",$temp);
  273 + $colunas = array_merge($colunas,$temp);
  274 + }
  275 + }
  276 + else{
  277 + $sql = " SELECT d.* ";
  278 + $colunas = $this->colunasTabela($dados["codigo_estat_conexao"],$dados["esquemadb"],$dados["tabela"]);
  279 + }
  280 + //prepara a lista de colunas que ficarao visiveis no sql geo
  281 + $vis = $dadosgeo["colunasvisiveis"];
  282 + $vis = str_replace(" ",",",$vis);
  283 + $vis = str_replace(",,",",",$vis);
  284 + $colunasvisiveis = explode(",",$vis);
  285 + //$vis[] = "st_setsrid($colunageo,".$dadosgeo["srid"].") as $colunageo";
  286 + $colunasvisiveis = array_unique($colunasvisiveis);
  287 + $colunas = array_merge($colunas,$colunasvisiveis);
  288 + $vis = implode(",g.",$colunasvisiveis);
  289 + $vis = "g.".$vis.",st_setsrid(g.".$colunageo.",".$dadosgeo["srid"].") as ".$colunageo;
  290 + //$sqlgeo = $sql.",g.".$colunageo;
  291 + $sqlgeo = $sql.",".$vis;
  292 + //
  293 + //prepara os alias das colunas
  294 + //
  295 + $alias = $colunas;
  296 + $n = count($colunas);
  297 + for($i=0;$i<$n;$i++){
  298 + if($colunas[$i] === $dados["colunavalor"]){
  299 + $alias[$i] = mb_convert_encoding($dados["nomemedida"],"ISO-8859-1",mb_detect_encoding($dados["nomemedida"]));
  300 + }
  301 + }
  302 + $aliasvis = $dadosgeo["apelidos"];
  303 + $aliasvis = str_replace(" ",",",$aliasvis);
  304 + $aliasvis = str_replace(",,",",",$aliasvis);
  305 + $aliasvis = explode(",",$aliasvis);
  306 + if(count($aliasvis) == count($colunasvisiveis)){
  307 + $n = count($colunas);
  308 + for($i=0;$i<$n;$i++){
  309 + $nj = count($colunasvisiveis);
  310 + for($j=0;$j<$nj;$j++){
  311 + if($colunas[$i] === $colunasvisiveis[$j]){
  312 + $alias[$i] = mb_convert_encoding($aliasvis[$j],"ISO-8859-1",mb_detect_encoding($aliasvis[$j]));
  313 + }
  314 + }
  315 + }
303 } 316 }
304 } 317 }
305 - //  
306 - if($agregaregiao == true){ 318 + else{
307 $dadosAgregacao = $this->listaAgregaRegiaoFilho($dados["codigo_tipo_regiao"], $codigo_tipo_regiao); 319 $dadosAgregacao = $this->listaAgregaRegiaoFilho($dados["codigo_tipo_regiao"], $codigo_tipo_regiao);
308 - $sqlgeo = "g.".$dadosAgregacao["colunaligacao_regiaopai"].",sum(d.".$dados["colunavalor"].") as ".$dados["colunavalor"]; 320 + $sqlgeo = "SELECT st_setsrid(g.".$colunageo.",".$dadosgeo["srid"].") as the_geom ,g.".$dadosAgregacao["colunaligacao_regiaopai"].",d.".$dados["colunavalor"]." as ".$dados["colunavalor"];
309 } 321 }
310 $tipoconta = ""; 322 $tipoconta = "";
311 if($dados["permitesoma"] == 1){ 323 if($dados["permitesoma"] == 1){
@@ -320,8 +332,14 @@ class Metaestat{ @@ -320,8 +332,14 @@ class Metaestat{
320 } 332 }
321 else{ 333 else{
322 $sqlagrupamento = " SELECT d.".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d group by ".$agruparpor." order by ".$agruparpor; 334 $sqlagrupamento = " SELECT d.".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d group by ".$agruparpor." order by ".$agruparpor;
323 - $sqlgeo .= " FROM (SELECT $tipoconta(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ group by ".$agruparpor.",".$dados["colunaidgeo"].") as d, ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g";  
324 - $sql .= " FROM (SELECT $tipoconta(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ group by ".$agruparpor.",".$dados["colunaidgeo"].") as d "; 335 + if($agregaregiao == true){
  336 + $sqlgeo .= " FROM (SELECT $tipoconta(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dadosAgregacao["colunaligacao_regiaopai"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ group by ".$agruparpor.",".$dadosAgregacao["colunaligacao_regiaopai"].") as d, ".$dadosgeo["esquemadb"].".".$dadosgeoagregada["tabela"]." as g";
  337 + $sql .= " FROM (SELECT $tipoconta(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dadosAgregacao["colunaligacao_regiaopai"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ group by ".$agruparpor.",".$dadosAgregacao["colunaligacao_regiaopai"].") as d ";
  338 + }
  339 + else{
  340 + $sqlgeo .= " FROM (SELECT $tipoconta(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ group by ".$agruparpor.",".$dados["colunaidgeo"].") as d, ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g";
  341 + $sql .= " FROM (SELECT $tipoconta(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ group by ".$agruparpor.",".$dados["colunaidgeo"].") as d ";
  342 + }
325 } 343 }
326 $dadosfiltro = ""; 344 $dadosfiltro = "";
327 if(!empty($dados["filtro"])){ 345 if(!empty($dados["filtro"])){
@@ -333,14 +351,17 @@ class Metaestat{ @@ -333,14 +351,17 @@ class Metaestat{
333 $sql = str_replace("__dadosfiltro__",$dadosfiltro,$sql); 351 $sql = str_replace("__dadosfiltro__",$dadosfiltro,$sql);
334 $sqlgeo = str_replace("__dadosfiltro__",$dadosfiltro,$sqlgeo); 352 $sqlgeo = str_replace("__dadosfiltro__",$dadosfiltro,$sqlgeo);
335 //join com a tabela geo 353 //join com a tabela geo
336 - $j = " d.".$dados["colunaidgeo"]."::text = g.".$dadosgeo["identificador"]."::text"; 354 + if($agregaregiao == true){
  355 + $j = " g.".$dadosgeoagregada["identificador"]."::text = d.".$dadosAgregacao["colunaligacao_regiaopai"]."::text";
  356 + }
  357 + else{
  358 + $j = " d.".$dados["colunaidgeo"]."::text = g.".$dadosgeo["identificador"]."::text";
  359 + }
337 $sqlgeo .= " WHERE ".$j; 360 $sqlgeo .= " WHERE ".$j;
338 361
339 -  
340 - //@TODO - agregacao com uma regiao maior  
341 if($agregaregiao == true){ 362 if($agregaregiao == true){
342 //$sqlgeo = "select pg.*,".$dados["colunavalor"]." from (select ".$sqlgeo." __filtro__ group by g.".$dadosAgregacao["colunaligacao_regiaopai"].") as fg, ".$dadosgeoagregada["esquemadb"].".".$dadosgeoagregada["tabela"]." as pg where fg.".$dadosAgregacao["colunaligacao_regiaopai"]." = pg.".$dadosgeoagregada["identificador"]; 363 //$sqlgeo = "select pg.*,".$dados["colunavalor"]." from (select ".$sqlgeo." __filtro__ group by g.".$dadosAgregacao["colunaligacao_regiaopai"].") as fg, ".$dadosgeoagregada["esquemadb"].".".$dadosgeoagregada["tabela"]." as pg where fg.".$dadosAgregacao["colunaligacao_regiaopai"]." = pg.".$dadosgeoagregada["identificador"];
343 - $sqlgeo = $colunageo." from ( $sqlgeo ) as foo using unique ".$dadosAgregacao["colunaligacao_regiaopai"]." using srid=".$dadosgeo["srid"]; 364 + $sqlgeo = $colunageo." from ( ".$sqlgeo." __filtro__ ) as foo using unique ".$dadosAgregacao["colunaligacao_regiaopai"]." using srid=".$dadosgeo["srid"];
344 } 365 }
345 else{ 366 else{
346 $sqlgeo = $colunageo." from (".$sqlgeo." __filtro__ ) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; 367 $sqlgeo = $colunageo." from (".$sqlgeo." __filtro__ ) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"];
@@ -370,7 +391,9 @@ class Metaestat{ @@ -370,7 +391,9 @@ class Metaestat{
370 $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true); 391 $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true);
371 $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; 392 $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"]."";
372 $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao); 393 $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao);
  394 +
373 $sqlf = $sql["sqlmapserver"]; 395 $sqlf = $sql["sqlmapserver"];
  396 + //echo $sqlf;exit;
374 if(!empty($filtro)){ 397 if(!empty($filtro)){
375 $sqlf = str_replace("__filtro__"," AND ".$filtro." /*FA*//*FA*/ /*FAT*//*FAT*/",$sqlf); 398 $sqlf = str_replace("__filtro__"," AND ".$filtro." /*FA*//*FA*/ /*FAT*//*FAT*/",$sqlf);
376 } 399 }
@@ -398,8 +421,10 @@ class Metaestat{ @@ -398,8 +421,10 @@ class Metaestat{
398 $dados[] = ' METAESTAT "SIM"'; 421 $dados[] = ' METAESTAT "SIM"';
399 $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"'; 422 $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
400 $dados[] = ' METAESTAT_ID_MEDIDA_VARIAVEL "'.$id_medida_variavel.'"'; 423 $dados[] = ' METAESTAT_ID_MEDIDA_VARIAVEL "'.$id_medida_variavel.'"';
401 - $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"';  
402 - $dados[] = ' ITENSDESC "'.implode(",",$sql["alias"]).'"'; 424 + if(count($sql["colunas"]) > 0){
  425 + $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"';
  426 + $dados[] = ' ITENSDESC "'.implode(",",$sql["alias"]).'"';
  427 + }
403 $dados[] = ' END'; 428 $dados[] = ' END';
404 if($classes == ""){ 429 if($classes == ""){
405 $dados[] = ' CLASS'; 430 $dados[] = ' CLASS';
interface/carto_ol.htm
@@ -114,6 +114,9 @@ i3GEO.Interface.openlayers.GADGETS = { @@ -114,6 +114,9 @@ i3GEO.Interface.openlayers.GADGETS = {
114 OverviewMap:false 114 OverviewMap:false
115 }; 115 };
116 i3GEO.Interface.openlayers.TILES = true; 116 i3GEO.Interface.openlayers.TILES = true;
  117 +i3GEO.Interface.openlayers.parametrosMap.scales = [
  118 + 105000000,50000000,21000000,10000000,5000000,1000000,500000,250000,100000,50000,25000,10000,5000,1000,100
  119 +];
117 i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.finaliza = 'if($i("omenudataInterface1")){i3GEOoMenuBar.getMenuItem("omenudataInterface1").cfg.setProperty("text", " ");}'; 120 i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.finaliza = 'if($i("omenudataInterface1")){i3GEOoMenuBar.getMenuItem("omenudataInterface1").cfg.setProperty("text", " ");}';
118 i3GEO.cria(); 121 i3GEO.cria();
119 i3GEO.configura.mapaRefDisplay = "none"; 122 i3GEO.configura.mapaRefDisplay = "none";