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