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 240 $filtro = false;
241 241 $dados = $this->listaMedidaVariavel("",$id_medida_variavel);
242 242 $dadosgeo = $this->listaTipoRegiao($dados["codigo_tipo_regiao"]);
  243 + //indica se os dados sao agregados a uma regiao de nivel superior
243 244 $agregaregiao = false;
  245 + $colunas = array();
244 246 if($codigo_tipo_regiao != "" && $dados["codigo_tipo_regiao"] != $codigo_tipo_regiao){
245 247 $agregaregiao = true;
  248 + //guarda os dados da regiao que agrega a regiao original da medida variavel
246 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 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 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 322 $tipoconta = "";
311 323 if($dados["permitesoma"] == 1){
... ... @@ -320,8 +332,14 @@ class Metaestat{
320 332 }
321 333 else{
322 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 344 $dadosfiltro = "";
327 345 if(!empty($dados["filtro"])){
... ... @@ -333,14 +351,17 @@ class Metaestat{
333 351 $sql = str_replace("__dadosfiltro__",$dadosfiltro,$sql);
334 352 $sqlgeo = str_replace("__dadosfiltro__",$dadosfiltro,$sqlgeo);
335 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 360 $sqlgeo .= " WHERE ".$j;
338 361  
339   -
340   - //@TODO - agregacao com uma regiao maior
341 362 if($agregaregiao == true){
342 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 366 else{
346 367 $sqlgeo = $colunageo." from (".$sqlgeo." __filtro__ ) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"];
... ... @@ -370,7 +391,9 @@ class Metaestat{
370 391 $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true);
371 392 $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"]."";
372 393 $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao);
  394 +
373 395 $sqlf = $sql["sqlmapserver"];
  396 + //echo $sqlf;exit;
374 397 if(!empty($filtro)){
375 398 $sqlf = str_replace("__filtro__"," AND ".$filtro." /*FA*//*FA*/ /*FAT*//*FAT*/",$sqlf);
376 399 }
... ... @@ -398,8 +421,10 @@ class Metaestat{
398 421 $dados[] = ' METAESTAT "SIM"';
399 422 $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
400 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 428 $dados[] = ' END';
404 429 if($classes == ""){
405 430 $dados[] = ' CLASS';
... ...
interface/carto_ol.htm
... ... @@ -114,6 +114,9 @@ i3GEO.Interface.openlayers.GADGETS = {
114 114 OverviewMap:false
115 115 };
116 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 120 i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.finaliza = 'if($i("omenudataInterface1")){i3GEOoMenuBar.getMenuItem("omenudataInterface1").cfg.setProperty("text", " ");}';
118 121 i3GEO.cria();
119 122 i3GEO.configura.mapaRefDisplay = "none";
... ...