From ab63735760c42e394b0253ca9a0f6f0c9e13fe2d Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 20 Aug 2013 22:40:38 +0000 Subject: [PATCH] $1 --- admin/admin.db | Bin 208896 -> 0 bytes admin/php/classe_arvore.php | 3 ++- admin/php/classe_metaestat.php | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++----------------- classesphp/classe_menutemas.php | 2 +- ogc.php | 18 +++++++++++------- temas/_lwmstime.map | 29 ++++++++++++++++++----------- 6 files changed, 83 insertions(+), 37 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index e7e8407..0b7f80b 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/classe_arvore.php b/admin/php/classe_arvore.php index e93a1c5..2189414 100644 --- a/admin/php/classe_arvore.php +++ b/admin/php/classe_arvore.php @@ -813,7 +813,8 @@ class Arvore } if(strtolower($recordset["tipoa_tema"]) == "wms") { - $down = "nao";$ogc="nao"; + $down = "nao"; + $ogc = "nao"; } if ($recordset["link_tema"] != "") { diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 6ce7709..75806be 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -288,7 +288,7 @@ class Metaestat{ * @param codigo do tipo de regiao. Se nao for definido, utiliza-se o default da variavel * @return array("sqlagrupamento"=>,"sql"=>,"sqlmapserver"=>,"filtro"=>,"colunas"=>,"alias"=>,"colunavalor"=>,"titulo"=>,"nomeregiao"=>) */ - function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = ""){ + function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = "",$suportaWMST = false){ // //o sql que faz acesso aos dados e marcado com /*SE*//*SE*/ na string que sera usada nos mapfiles // @@ -432,6 +432,10 @@ class Metaestat{ else{ $parametrosMedida = ""; } + //o campo deve ser convertido para data + if($suportaWMST == true){ + $parametrosMedida = $this->listaParametroTempo2CampoData($id_medida_variavel)." as dimtempo,"; + } $sql .= " FROM (SELECT $parametrosMedida * FROM ".$dados["esquemadb"].".".$dados["tabela"] ." __dadosfiltro__ ) as d "; } } @@ -457,13 +461,17 @@ class Metaestat{ $j = " d.".$dados["colunaidgeo"]."::text = g.".$dadosgeo["identificador"]."::text"; } $sqlgeo .= " WHERE ".$j; - + if($suportaWMST == true){ + $sqlWMST = $this->listaParametroTempo2CampoData($id_medida_variavel,"d.")." as dimtempo"; + $sqlgeo = str_replace("SELECT d.*","SELECT d.*,".$sqlWMST,$sqlgeo); + } if($agregaregiao == true){ $sqlgeo = $colunageo." from /*SE*/( ".$sqlgeo." __filtro__ )/*SE*/ as foo using unique ".$dadosAgregacao["colunaligacao_regiaopai"]." using srid=".$dadosgeo["srid"]; } else{ - $sqlgeo = $colunageo." from /*SE*/(".$sqlgeo." __filtro__ )/*SE*/ as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; + $sqlgeo = $colunageo." from /*SE*/(".$sqlgeo." __filtro__ )/*SE*/ as foo using unique ".$dados["colunaidunico"]." using srid=".$dadosgeo["srid"]; } + //var_dump($dados);exit; //remove ambiguidades $sqlgeo = str_replace("d.".$dados["colunaidgeo"].",g.".$dados["colunaidgeo"],"d.".$dados["colunaidgeo"],$sqlgeo); $sql = str_replace("d.".$dados["colunaidgeo"].",g.".$dados["colunaidgeo"],"d.".$dados["colunaidgeo"],$sql); @@ -507,9 +515,9 @@ class Metaestat{ if($titulolayer == ""){ $titulolayer = $meta["nomemedida"]; } - $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true); - $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao); + $dconexao = $this->listaConexao($meta["codigo_estat_conexao"],true); + $conexao = "user=".$dconexao["usuario"]." password=".$dconexao["senha"]." dbname=".$dconexao["bancodedados"]." host=".$dconexao["host"]." port=".$dconexao["porta"].""; + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,$tipolayer,$codigo_tipo_regiao,$suportaWMST); if(empty($codigo_tipo_regiao)){ $d = $this->listaMedidaVariavel("",$id_medida_variavel); $codigo_tipo_regiao = $d["codigo_tipo_regiao"]; @@ -549,9 +557,9 @@ class Metaestat{ $titulolayer = mb_convert_encoding($sql["titulo"],"ISO-8859-1",mb_detect_encoding($sql["titulo"])); } //pega os parametros caso seja um mapfile para WMS-time - if($suportaWMST == true){ - $resolucao = $this->listaResolucaoWMST($id_medida_variavel); + $sqlMinMax = "select min(dimtempo) as min,max(dimtempo) as max from(".$sql["sql"].") as x"; + $minmaxdata = $this->execSQLDB($meta["codigo_estat_conexao"],$sqlMinMax ); } $dados[] = "MAP"; $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"'; @@ -592,6 +600,11 @@ class Metaestat{ $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"'; $dados[] = ' ITENSDESC "'.implode(",",$sql["alias"]).'"'; } + if($suportaWMST == true){ + $dados[] = ' "wms_timeitem" "dimtempo"'; + $dados[] = ' "wms_timeextent" "'.$minmaxdata[0]["min"]."/".$minmaxdata[0]["max"].'"'; + $dados[] = ' "wms_timedefault" "'.$minmaxdata[0]["max"].'"'; + } $dados[] = ' END'; if($classes == ""){ $dados[] = ' CLASS'; @@ -1700,19 +1713,40 @@ class Metaestat{ $sql .= "ORDER BY bancodedados,host,usuario"; return $this->execSQL($sql,$codigo_estat_conexao); } - function listaResolucaoWMST($id_medida_variavel){ - $campoData = $this->listaParametroTempo2CampoData($id_medida_variavel); - } - function listaParametroTempo2CampoData($id_medida_variavel){ + function listaParametroTempo2CampoData($id_medida_variavel,$prefixoAlias = ""){ //lista os parametros temporais $parametros = $this->listaParametro($id_medida_variavel,"","",true,true); echo "
";
-		var_dump($parametros);
-		//faz o sql para pegar os valores e definir a resolucao
-		foreach($parametros as $parametro){
-
+		//var_dump($parametros);exit;
+		//faz o sql para pegar os valores e definir a resolucao
+		//o tempo deve comecar sempre pelo ano
+		$data = array();
+		if($parametros[0]["tipo"] == 1){
+			//ano
+			$data[] = $prefixoAlias.$parametros[0]["coluna"];
+			$tipodata = "YYYY";
+			//mes
+			if(!empty($parametros[1])){
+				$data[] = "'-'".$prefixoAlias.$parametros[1]["coluna"];
+				$tipodata = "YYYYMM";
+			}
+			else{
+				$data[] = "'-01'";
+			}
+			//dia
+			if(!empty($parametros[2])){
+				$data[] = "'-'".$prefixoAlias.$parametros[2]["coluna"];
+				$tipodata = "YYYYMMDD";
+			}
+			else{
+				$data[] = "'-01'";
+			}
+			$data = implode("||",$data);
+			/**
+			 * @TODO falta a hora
+			 */
+			return "to_date($data,'$tipodata')";
 		}
-		//se for apenas do tipo anual
 	}
 	/**
 	 * Lista os dados de um ou de todos os parametros relacionados a uma medida de variavel
diff --git a/classesphp/classe_menutemas.php b/classesphp/classe_menutemas.php
index cfbb1d0..6712056 100644
--- a/classesphp/classe_menutemas.php
+++ b/classesphp/classe_menutemas.php
@@ -499,7 +499,7 @@ $fatorestrela - valor para normalizar o total de acessos com o valor da estrela
 */
 	function procurartemasestrela($nivel,$fatorestrela)
 	{
-		include_once(__DIR_."/../admin/php/classe_arvore.php");
+		include_once(__DIR__."/../admin/php/classe_arvore.php");
 		$arvore = new Arvore($this->locaplic,$this->idioma);
 		$temas = $arvore->procuraTemasEstrela($nivel,$fatorestrela,$this->perfil);
 		unset($arvore);
diff --git a/ogc.php b/ogc.php
index 8cb1557..99a5b99 100644
--- a/ogc.php
+++ b/ogc.php
@@ -67,7 +67,13 @@ ogc.php?intervalo=0,50
 $cache = true;
 require_once(dirname(__FILE__)."/classesphp/carrega_ext.php");
 include(dirname(__FILE__)."/ms_configura.php");
-include(dirname(__FILE__)."/classesphp/pega_variaveis.php");
+include(dirname(__FILE__)."/classesphp/pega_variaveis.php");
+//define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos
+if(isset($id_medida_variavel)){
+	$tema = "ogcmetaestat".$id_medida_variavel;
+	$_GET["layers"] = $tema;
+	$_GET["LAYERS"] = $tema;
+}
 if(!isset($temas) && isset($tema)){
 	$temas = $tema;
 }
@@ -154,10 +160,6 @@ if(count($_GET) == 0){
 	$req->setParameter("SERVICE", "WMS");
 	$cache = false;
 }
-//define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos
-if(isset($id_medida_variavel)){
-	$tema = "ogcmetaestat".$id_medida_variavel;
-}
 if(isset($tema) && $tipo != "metadados"){
 	$tipo = "";
 }
@@ -233,7 +235,9 @@ else{
 				$m = new Metaestat();
 				$m->nomecache = "ogcmetaestat".$id_medida_variavel;
 				$mapfileMetaestat = $m->mapfileMedidaVariavel($id_medida_variavel,"",1,"","","","","","",true);
-				$nmap = ms_newMapobj($mapfileMetaestat["mapfile"]);
+				$nmap = ms_newMapobj($mapfileMetaestat["mapfile"]);
+				$nmap->setmetadata("ows_enable_request","*");
+				$req->setParameter("LAYERS", "ogcmetaestat".$id_medida_variavel);
 			}
 			else{
 				if(file_exists($locaplic."/temas/".$tx.".php") && $temai3geo == true){
@@ -526,7 +530,7 @@ if((isset($legenda)) && (strtolower($legenda) == "sim")){
 	$leg = $oMap->legend;
 	$leg->set("status",MS_EMBED);
 }
-ms_ioinstallstdouttobuffer();
+ms_ioinstallstdouttobuffer();
 $oMap->owsdispatch($req);
 $contenttype = ms_iostripstdoutbuffercontenttype();
 if(strtolower($request) == "getcapabilities"){
diff --git a/temas/_lwmstime.map b/temas/_lwmstime.map
index 71a59c1..ba823f4 100755
--- a/temas/_lwmstime.map
+++ b/temas/_lwmstime.map
@@ -4,24 +4,24 @@ MAP
   LAYER
     CONNECTION "user=postgres password=postgres dbname=geosaude host=localhost port=5432"
     CONNECTIONTYPE POSTGIS
-    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"
+    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"
+    FILTER (ano = '1970-01-01') #necessario para usar como mapfile normal
     METADATA
       "METAESTAT_ID_MEDIDA_VARIAVEL"	""
+      "wms_enable_request"	"*"
       "CLASSE"	"SIM"
       "permitekmz"	"nao"
+      "iconetema"	""
+      "wms_timeitem"	"ano"
       "METAESTAT_CODIGO_TIPO_REGIAO"	""
+      "wms_timeextent"	"1970,1980,1991,2000"
       "permitedownload"	"sim"
       "METAESTAT"	""
-      "permitekml"	"sim"
+      "wms_timedefault"	"1970" #necessario quando e um WMS sem requisicao TIME
       "permiteogc"	"sim"
-      "TEMA"	"População total (pol) Município Teste de WMS Time"
-    "wms_title"    "População total (pol) Município Teste de WMS Time"
-    "wms_timeextent" "1970,1980,1991,2000"
-    "wms_timeitem" "ano"
-    "wms_timedefault" "1970"
-    "wms_enable_request" "*"      
-      
-      
+      "permitekml"	"sim"
+      "TEMA"	"População total (pol) Município Teste de WMS Time"
+      "wms_title"	"População total (pol) Município Teste de WMS Time"
     END # METADATA
     NAME "_lwmstime"
     STATUS DEFAULT
@@ -29,12 +29,13 @@ MAP
     TILEITEM "location"
     TYPE POLYGON
     UNITS METERS
-    FILTER (ano = 1970) #1970 1980 1991 2000
     CLASS
       NAME "<= 6008"
       EXPRESSION ([pop_res_tot]<=6008)
       STYLE
+        ANGLE 0
         COLOR 255 255 255
+        OFFSET 0 0
         OUTLINECOLOR 255 255 255
         OUTLINEWIDTH 2
       END # STYLE
@@ -43,7 +44,9 @@ MAP
       NAME "> 6008 e <= 11531"
       EXPRESSION (([pop_res_tot]>6008)and([pop_res_tot]<=11531))
       STYLE
+        ANGLE 0
         COLOR 207 207 255
+        OFFSET 0 0
         OUTLINECOLOR 255 255 255
         OUTLINEWIDTH 2
       END # STYLE
@@ -52,7 +55,9 @@ MAP
       NAME "> 11531 e <= 22638"
       EXPRESSION (([pop_res_tot]>11531)and([pop_res_tot]<=22638))
       STYLE
+        ANGLE 0
         COLOR 160 160 255
+        OFFSET 0 0
         OUTLINECOLOR 255 255 255
         OUTLINEWIDTH 2
       END # STYLE
@@ -61,7 +66,9 @@ MAP
       NAME "> 22638"
       EXPRESSION ([pop_res_tot]>22638)
       STYLE
+        ANGLE 0
         COLOR 114 114 255
+        OFFSET 0 0
         OUTLINECOLOR 255 255 255
         OUTLINEWIDTH 2
       END # STYLE
--
libgit2 0.21.2