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"; | ... | ... |