Commit bd2bb84437168b870940c74f51a8fab8131dafc7
1 parent
daceb07d
Exists in
master
and in
7 other branches
Inclusão de rotina para agregar regiões no sistema METAESTAT
Showing
3 changed files
with
92 additions
and
64 deletions
Show diff stats
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"; | ... | ... |