Commit ab63735760c42e394b0253ca9a0f6f0c9e13fe2d
1 parent
a07cf91e
Exists in
master
and in
7 other branches
$1
Showing
6 changed files
with
83 additions
and
37 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/php/classe_arvore.php
admin/php/classe_metaestat.php
| ... | ... | @@ -288,7 +288,7 @@ class Metaestat{ |
| 288 | 288 | * @param codigo do tipo de regiao. Se nao for definido, utiliza-se o default da variavel |
| 289 | 289 | * @return array("sqlagrupamento"=>,"sql"=>,"sqlmapserver"=>,"filtro"=>,"colunas"=>,"alias"=>,"colunavalor"=>,"titulo"=>,"nomeregiao"=>) |
| 290 | 290 | */ |
| 291 | - function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = ""){ | |
| 291 | + function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = "",$suportaWMST = false){ | |
| 292 | 292 | // |
| 293 | 293 | //o sql que faz acesso aos dados e marcado com /*SE*//*SE*/ na string que sera usada nos mapfiles |
| 294 | 294 | // |
| ... | ... | @@ -432,6 +432,10 @@ class Metaestat{ |
| 432 | 432 | else{ |
| 433 | 433 | $parametrosMedida = ""; |
| 434 | 434 | } |
| 435 | + //o campo deve ser convertido para data | |
| 436 | + if($suportaWMST == true){ | |
| 437 | + $parametrosMedida = $this->listaParametroTempo2CampoData($id_medida_variavel)." as dimtempo,"; | |
| 438 | + } | |
| 435 | 439 | $sql .= " FROM (SELECT $parametrosMedida * FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ ) as d "; |
| 436 | 440 | } |
| 437 | 441 | } |
| ... | ... | @@ -457,13 +461,17 @@ class Metaestat{ |
| 457 | 461 | $j = " d.".$dados["colunaidgeo"]."::text = g.".$dadosgeo["identificador"]."::text"; |
| 458 | 462 | } |
| 459 | 463 | $sqlgeo .= " WHERE ".$j; |
| 460 | - | |
| 464 | + if($suportaWMST == true){ | |
| 465 | + $sqlWMST = $this->listaParametroTempo2CampoData($id_medida_variavel,"d.")." as dimtempo"; | |
| 466 | + $sqlgeo = str_replace("SELECT d.*","SELECT d.*,".$sqlWMST,$sqlgeo); | |
| 467 | + } | |
| 461 | 468 | if($agregaregiao == true){ |
| 462 | 469 | $sqlgeo = $colunageo." from /*SE*/( ".$sqlgeo." __filtro__ )/*SE*/ as foo using unique ".$dadosAgregacao["colunaligacao_regiaopai"]." using srid=".$dadosgeo["srid"]; |
| 463 | 470 | } |
| 464 | 471 | else{ |
| 465 | - $sqlgeo = $colunageo." from /*SE*/(".$sqlgeo." __filtro__ )/*SE*/ as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; | |
| 472 | + $sqlgeo = $colunageo." from /*SE*/(".$sqlgeo." __filtro__ )/*SE*/ as foo using unique ".$dados["colunaidunico"]." using srid=".$dadosgeo["srid"]; | |
| 466 | 473 | } |
| 474 | + //var_dump($dados);exit; | |
| 467 | 475 | //remove ambiguidades |
| 468 | 476 | $sqlgeo = str_replace("d.".$dados["colunaidgeo"].",g.".$dados["colunaidgeo"],"d.".$dados["colunaidgeo"],$sqlgeo); |
| 469 | 477 | $sql = str_replace("d.".$dados["colunaidgeo"].",g.".$dados["colunaidgeo"],"d.".$dados["colunaidgeo"],$sql); |
| ... | ... | @@ -507,9 +515,9 @@ class Metaestat{ |
| 507 | 515 | if($titulolayer == ""){ |
| 508 | 516 | $titulolayer = $meta["nomemedida"]; |
| 509 | 517 | } |
| 510 | - $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true); | |
| 511 | - $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; | |
| 512 | - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao); | |
| 518 | + $dconexao = $this->listaConexao($meta["codigo_estat_conexao"],true); | |
| 519 | + $conexao = "user=".$dconexao["usuario"]." password=".$dconexao["senha"]." dbname=".$dconexao["bancodedados"]." host=".$dconexao["host"]." port=".$dconexao["porta"].""; | |
| 520 | + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao,$suportaWMST); | |
| 513 | 521 | if(empty($codigo_tipo_regiao)){ |
| 514 | 522 | $d = $this->listaMedidaVariavel("",$id_medida_variavel); |
| 515 | 523 | $codigo_tipo_regiao = $d["codigo_tipo_regiao"]; |
| ... | ... | @@ -549,9 +557,9 @@ class Metaestat{ |
| 549 | 557 | $titulolayer = mb_convert_encoding($sql["titulo"],"ISO-8859-1",mb_detect_encoding($sql["titulo"])); |
| 550 | 558 | } |
| 551 | 559 | //pega os parametros caso seja um mapfile para WMS-time |
| 552 | - | |
| 553 | 560 | if($suportaWMST == true){ |
| 554 | - $resolucao = $this->listaResolucaoWMST($id_medida_variavel); | |
| 561 | + $sqlMinMax = "select min(dimtempo) as min,max(dimtempo) as max from(".$sql["sql"].") as x"; | |
| 562 | + $minmaxdata = $this->execSQLDB($meta["codigo_estat_conexao"],$sqlMinMax ); | |
| 555 | 563 | } |
| 556 | 564 | $dados[] = "MAP"; |
| 557 | 565 | $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"'; |
| ... | ... | @@ -592,6 +600,11 @@ class Metaestat{ |
| 592 | 600 | $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"'; |
| 593 | 601 | $dados[] = ' ITENSDESC "'.implode(",",$sql["alias"]).'"'; |
| 594 | 602 | } |
| 603 | + if($suportaWMST == true){ | |
| 604 | + $dados[] = ' "wms_timeitem" "dimtempo"'; | |
| 605 | + $dados[] = ' "wms_timeextent" "'.$minmaxdata[0]["min"]."/".$minmaxdata[0]["max"].'"'; | |
| 606 | + $dados[] = ' "wms_timedefault" "'.$minmaxdata[0]["max"].'"'; | |
| 607 | + } | |
| 595 | 608 | $dados[] = ' END'; |
| 596 | 609 | if($classes == ""){ |
| 597 | 610 | $dados[] = ' CLASS'; |
| ... | ... | @@ -1700,19 +1713,40 @@ class Metaestat{ |
| 1700 | 1713 | $sql .= "ORDER BY bancodedados,host,usuario"; |
| 1701 | 1714 | return $this->execSQL($sql,$codigo_estat_conexao); |
| 1702 | 1715 | } |
| 1703 | - function listaResolucaoWMST($id_medida_variavel){ | |
| 1704 | - $campoData = $this->listaParametroTempo2CampoData($id_medida_variavel); | |
| 1705 | - } | |
| 1706 | - function listaParametroTempo2CampoData($id_medida_variavel){ | |
| 1716 | + function listaParametroTempo2CampoData($id_medida_variavel,$prefixoAlias = ""){ | |
| 1707 | 1717 | //lista os parametros temporais |
| 1708 | 1718 | $parametros = $this->listaParametro($id_medida_variavel,"","",true,true); |
| 1709 | 1719 | echo "<pre>"; |
| 1710 | - var_dump($parametros); | |
| 1711 | - //faz o sql para pegar os valores e definir a resolucao | |
| 1712 | - foreach($parametros as $parametro){ | |
| 1713 | - | |
| 1720 | + //var_dump($parametros);exit; | |
| 1721 | + //faz o sql para pegar os valores e definir a resolucao | |
| 1722 | + //o tempo deve comecar sempre pelo ano | |
| 1723 | + $data = array(); | |
| 1724 | + if($parametros[0]["tipo"] == 1){ | |
| 1725 | + //ano | |
| 1726 | + $data[] = $prefixoAlias.$parametros[0]["coluna"]; | |
| 1727 | + $tipodata = "YYYY"; | |
| 1728 | + //mes | |
| 1729 | + if(!empty($parametros[1])){ | |
| 1730 | + $data[] = "'-'".$prefixoAlias.$parametros[1]["coluna"]; | |
| 1731 | + $tipodata = "YYYYMM"; | |
| 1732 | + } | |
| 1733 | + else{ | |
| 1734 | + $data[] = "'-01'"; | |
| 1735 | + } | |
| 1736 | + //dia | |
| 1737 | + if(!empty($parametros[2])){ | |
| 1738 | + $data[] = "'-'".$prefixoAlias.$parametros[2]["coluna"]; | |
| 1739 | + $tipodata = "YYYYMMDD"; | |
| 1740 | + } | |
| 1741 | + else{ | |
| 1742 | + $data[] = "'-01'"; | |
| 1743 | + } | |
| 1744 | + $data = implode("||",$data); | |
| 1745 | + /** | |
| 1746 | + * @TODO falta a hora | |
| 1747 | + */ | |
| 1748 | + return "to_date($data,'$tipodata')"; | |
| 1714 | 1749 | } |
| 1715 | - //se for apenas do tipo anual | |
| 1716 | 1750 | } |
| 1717 | 1751 | /** |
| 1718 | 1752 | * Lista os dados de um ou de todos os parametros relacionados a uma medida de variavel | ... | ... |
classesphp/classe_menutemas.php
| ... | ... | @@ -499,7 +499,7 @@ $fatorestrela - valor para normalizar o total de acessos com o valor da estrela |
| 499 | 499 | */ |
| 500 | 500 | function procurartemasestrela($nivel,$fatorestrela) |
| 501 | 501 | { |
| 502 | - include_once(__DIR_."/../admin/php/classe_arvore.php"); | |
| 502 | + include_once(__DIR__."/../admin/php/classe_arvore.php"); | |
| 503 | 503 | $arvore = new Arvore($this->locaplic,$this->idioma); |
| 504 | 504 | $temas = $arvore->procuraTemasEstrela($nivel,$fatorestrela,$this->perfil); |
| 505 | 505 | unset($arvore); | ... | ... |
ogc.php
| ... | ... | @@ -67,7 +67,13 @@ ogc.php?intervalo=0,50 |
| 67 | 67 | $cache = true; |
| 68 | 68 | require_once(dirname(__FILE__)."/classesphp/carrega_ext.php"); |
| 69 | 69 | include(dirname(__FILE__)."/ms_configura.php"); |
| 70 | -include(dirname(__FILE__)."/classesphp/pega_variaveis.php"); | |
| 70 | +include(dirname(__FILE__)."/classesphp/pega_variaveis.php"); | |
| 71 | +//define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos | |
| 72 | +if(isset($id_medida_variavel)){ | |
| 73 | + $tema = "ogcmetaestat".$id_medida_variavel; | |
| 74 | + $_GET["layers"] = $tema; | |
| 75 | + $_GET["LAYERS"] = $tema; | |
| 76 | +} | |
| 71 | 77 | if(!isset($temas) && isset($tema)){ |
| 72 | 78 | $temas = $tema; |
| 73 | 79 | } |
| ... | ... | @@ -154,10 +160,6 @@ if(count($_GET) == 0){ |
| 154 | 160 | $req->setParameter("SERVICE", "WMS"); |
| 155 | 161 | $cache = false; |
| 156 | 162 | } |
| 157 | -//define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos | |
| 158 | -if(isset($id_medida_variavel)){ | |
| 159 | - $tema = "ogcmetaestat".$id_medida_variavel; | |
| 160 | -} | |
| 161 | 163 | if(isset($tema) && $tipo != "metadados"){ |
| 162 | 164 | $tipo = ""; |
| 163 | 165 | } |
| ... | ... | @@ -233,7 +235,9 @@ else{ |
| 233 | 235 | $m = new Metaestat(); |
| 234 | 236 | $m->nomecache = "ogcmetaestat".$id_medida_variavel; |
| 235 | 237 | $mapfileMetaestat = $m->mapfileMedidaVariavel($id_medida_variavel,"",1,"","","","","","",true); |
| 236 | - $nmap = ms_newMapobj($mapfileMetaestat["mapfile"]); | |
| 238 | + $nmap = ms_newMapobj($mapfileMetaestat["mapfile"]); | |
| 239 | + $nmap->setmetadata("ows_enable_request","*"); | |
| 240 | + $req->setParameter("LAYERS", "ogcmetaestat".$id_medida_variavel); | |
| 237 | 241 | } |
| 238 | 242 | else{ |
| 239 | 243 | if(file_exists($locaplic."/temas/".$tx.".php") && $temai3geo == true){ |
| ... | ... | @@ -526,7 +530,7 @@ if((isset($legenda)) && (strtolower($legenda) == "sim")){ |
| 526 | 530 | $leg = $oMap->legend; |
| 527 | 531 | $leg->set("status",MS_EMBED); |
| 528 | 532 | } |
| 529 | -ms_ioinstallstdouttobuffer(); | |
| 533 | +ms_ioinstallstdouttobuffer(); | |
| 530 | 534 | $oMap->owsdispatch($req); |
| 531 | 535 | $contenttype = ms_iostripstdoutbuffercontenttype(); |
| 532 | 536 | if(strtolower($request) == "getcapabilities"){ | ... | ... |
temas/_lwmstime.map
| ... | ... | @@ -4,24 +4,24 @@ MAP |
| 4 | 4 | LAYER |
| 5 | 5 | CONNECTION "user=postgres password=postgres dbname=geosaude host=localhost port=5432" |
| 6 | 6 | CONNECTIONTYPE POSTGIS |
| 7 | - DATA "the_geom from ( SELECT ano,d.gid,d.pop_res_tot,d.co_municipio,g.no_cidade,g.co_uf,g.sg_uf,g.area_territorial,g.nu_ano_instalacao,st_setsrid(g.the_geom,4326) as the_geom FROM (SELECT * FROM ibge.populacao_residente ) as d, i3geo_metaestat.municipios as g WHERE d.co_municipio::text = g.co_municipio::text ) as foo using unique co_municipio using srid=4326" | |
| 7 | + DATA "the_geom from ( SELECT to_date(ano||'-01-01','YYYY') as ano,d.gid,d.pop_res_tot,d.co_municipio,g.no_cidade,g.co_uf,g.sg_uf,g.area_territorial,g.nu_ano_instalacao,st_setsrid(g.the_geom,4326) as the_geom FROM (SELECT * FROM ibge.populacao_residente ) as d, i3geo_metaestat.municipios as g WHERE d.co_municipio::text = g.co_municipio::text ) as foo using unique co_municipio using srid=4326" | |
| 8 | + FILTER (ano = '1970-01-01') #necessario para usar como mapfile normal | |
| 8 | 9 | METADATA |
| 9 | 10 | "METAESTAT_ID_MEDIDA_VARIAVEL" "" |
| 11 | + "wms_enable_request" "*" | |
| 10 | 12 | "CLASSE" "SIM" |
| 11 | 13 | "permitekmz" "nao" |
| 14 | + "iconetema" "" | |
| 15 | + "wms_timeitem" "ano" | |
| 12 | 16 | "METAESTAT_CODIGO_TIPO_REGIAO" "" |
| 17 | + "wms_timeextent" "1970,1980,1991,2000" | |
| 13 | 18 | "permitedownload" "sim" |
| 14 | 19 | "METAESTAT" "" |
| 15 | - "permitekml" "sim" | |
| 20 | + "wms_timedefault" "1970" #necessario quando e um WMS sem requisicao TIME | |
| 16 | 21 | "permiteogc" "sim" |
| 17 | - "TEMA" "População total (pol) MunicÃpio Teste de WMS Time" | |
| 18 | - "wms_title" "População total (pol) MunicÃpio Teste de WMS Time" | |
| 19 | - "wms_timeextent" "1970,1980,1991,2000" | |
| 20 | - "wms_timeitem" "ano" | |
| 21 | - "wms_timedefault" "1970" | |
| 22 | - "wms_enable_request" "*" | |
| 23 | - | |
| 24 | - | |
| 22 | + "permitekml" "sim" | |
| 23 | + "TEMA" "População total (pol) Município Teste de WMS Time" | |
| 24 | + "wms_title" "População total (pol) Município Teste de WMS Time" | |
| 25 | 25 | END # METADATA |
| 26 | 26 | NAME "_lwmstime" |
| 27 | 27 | STATUS DEFAULT |
| ... | ... | @@ -29,12 +29,13 @@ MAP |
| 29 | 29 | TILEITEM "location" |
| 30 | 30 | TYPE POLYGON |
| 31 | 31 | UNITS METERS |
| 32 | - FILTER (ano = 1970) #1970 1980 1991 2000 | |
| 33 | 32 | CLASS |
| 34 | 33 | NAME "<= 6008" |
| 35 | 34 | EXPRESSION ([pop_res_tot]<=6008) |
| 36 | 35 | STYLE |
| 36 | + ANGLE 0 | |
| 37 | 37 | COLOR 255 255 255 |
| 38 | + OFFSET 0 0 | |
| 38 | 39 | OUTLINECOLOR 255 255 255 |
| 39 | 40 | OUTLINEWIDTH 2 |
| 40 | 41 | END # STYLE |
| ... | ... | @@ -43,7 +44,9 @@ MAP |
| 43 | 44 | NAME "> 6008 e <= 11531" |
| 44 | 45 | EXPRESSION (([pop_res_tot]>6008)and([pop_res_tot]<=11531)) |
| 45 | 46 | STYLE |
| 47 | + ANGLE 0 | |
| 46 | 48 | COLOR 207 207 255 |
| 49 | + OFFSET 0 0 | |
| 47 | 50 | OUTLINECOLOR 255 255 255 |
| 48 | 51 | OUTLINEWIDTH 2 |
| 49 | 52 | END # STYLE |
| ... | ... | @@ -52,7 +55,9 @@ MAP |
| 52 | 55 | NAME "> 11531 e <= 22638" |
| 53 | 56 | EXPRESSION (([pop_res_tot]>11531)and([pop_res_tot]<=22638)) |
| 54 | 57 | STYLE |
| 58 | + ANGLE 0 | |
| 55 | 59 | COLOR 160 160 255 |
| 60 | + OFFSET 0 0 | |
| 56 | 61 | OUTLINECOLOR 255 255 255 |
| 57 | 62 | OUTLINEWIDTH 2 |
| 58 | 63 | END # STYLE |
| ... | ... | @@ -61,7 +66,9 @@ MAP |
| 61 | 66 | NAME "> 22638" |
| 62 | 67 | EXPRESSION ([pop_res_tot]>22638) |
| 63 | 68 | STYLE |
| 69 | + ANGLE 0 | |
| 64 | 70 | COLOR 114 114 255 |
| 71 | + OFFSET 0 0 | |
| 65 | 72 | OUTLINECOLOR 255 255 255 |
| 66 | 73 | OUTLINEWIDTH 2 |
| 67 | 74 | END # STYLE | ... | ... |