From eb44fdea4832325c3f4b2c926f3fbdb8d37654d4 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 1 Aug 2012 01:37:17 +0000 Subject: [PATCH] Inclusão de opção para abrir no i3geo uma variável estatística cadastrada --- admin/js/estat_variavel.js | 39 +++++++++++++++++++++++++++++++++++---- admin/php/classe_metaestat.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- admin/php/conexao.php | 48 +++++++++--------------------------------------- admin/php/editormapfile.php | 2 +- admin/php/metaestat.php | 28 +++++++++++++++++++++++++++- testamapfile.php | 31 ++++++++++++++++--------------- 6 files changed, 152 insertions(+), 62 deletions(-) diff --git a/admin/js/estat_variavel.js b/admin/js/estat_variavel.js index cacce26..15048f9 100755 --- a/admin/js/estat_variavel.js +++ b/admin/js/estat_variavel.js @@ -429,9 +429,13 @@ function sql(tipo,id) { ins += ""; ins +="

Agrupar pela coluna
"; ins += ""; + ins +="

Tipo de layer (para o caso de mapas ou mapfiles, podendo ser point,line ou polygon)
"; + ins += ""; ins += '

'; ins += ' '; ins += ' '; + ins += ' '; + ins += ' '; $i("editor_bd").innerHTML = ins; new YAHOO.widget.Button("sqljson"); @@ -440,15 +444,42 @@ function sql(tipo,id) { if($i("incluirtodascolunas").checked === true){ colunas = 1; } - window.open('../php/metaestat.php?funcao=dadosMedidaVariavel&formato=json&id_medida_variavel='+id+"&agruparpor="+$i("agruparsql").value+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas); + window.open('../php/metaestat.php?funcao=dadosMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas); }; new YAHOO.widget.Button("sumarioestat"); $i("sumarioestat-button").onclick = function(){ window.open('../php/metaestat.php?funcao=sumarioMedidaVariavel&formato=json&id_medida_variavel='+id+"&agruparpor="+$i("agruparsql").value+"&filtro="+$i("filtrosql").value); }; + new YAHOO.widget.Button("mapfileestat"); + $i("mapfileestat-button").onclick = function(){ + var colunas = 0; + if($i("incluirtodascolunas").checked === true){ + colunas = 1; + } + window.open('../php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&tipolayer="+$i("tipolayer").value); + }; + new YAHOO.widget.Button("i3geoestat"); + $i("i3geoestat-button").onclick = function(){ + var callback = { + success: function(oResponse){ + var dados = YAHOO.lang.JSON.parse(oResponse.responseText); + window.open("../../ms_criamapa.php?temasa="+dados.mapfile+"&layers="+dados.layer); + core_carregando("desativa"); + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }, + colunas = 0; + if($i("incluirtodascolunas").checked === true){ + colunas = 1; + } + sUrl = '../php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&tipolayer="+$i("tipolayer").value; + core_carregando("ativa"); + core_makeRequest(sUrl,callback); + }; new YAHOO.widget.Button("graficoestat"); $i("graficoestat-button").onclick = function(){ - callback = { + var callback = { success: function(oResponse){ var dados = YAHOO.lang.JSON.parse(oResponse.responseText); dados = dados.grupos; @@ -516,8 +547,8 @@ function sql(tipo,id) { }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } - }; - sUrl = '../php/metaestat.php?funcao=sumarioMedidaVariavel&formato=json&id_medida_variavel='+id+"&agruparpor="+$i("agruparsql").value+"&filtro="+document.getElementById("filtrosql").value; + }, + sUrl = '../php/metaestat.php?funcao=sumarioMedidaVariavel&formato=json&id_medida_variavel='+id+"&agruparpor="+$i("agruparsql").value+"&filtro="+document.getElementById("filtrosql").value; core_carregando("ativa"); core_makeRequest(sUrl,callback); }; diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index a6b1a6c..a18786b 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -40,6 +40,7 @@ class Metaestat{ public $dbh; protected $dbhw; protected $convUTF; + public $dir_tmp; /* Function: __construct @@ -48,6 +49,9 @@ class Metaestat{ function __construct(){ error_reporting(0); include(__DIR__."/conexao.php"); + //vem do include + $this->dir_tmp = $dir_tmp; + $this->locaplic = $locaplic; if(!isset($convUTF)){ $convUTF = true; } @@ -62,6 +66,16 @@ class Metaestat{ function __destruct(){ $this->fechaConexao; } + function nomeRandomico($n=10){ + $nomes = ""; + $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $max = 51; + for($i=0; $i < $n; ++$i) + { + $nomes .= $a{mt_rand(0, $max)}; + } + return $nomes; + } function fechaConexao(){ $this->dbh = null; $this->dbhw = null; @@ -195,7 +209,7 @@ class Metaestat{ } else{ $sql = " SELECT d.* "; - $sqlgeo = " SELECT ".$dados["tabela"].".*,g.".$dados["colunaidgeo"]; + $sqlgeo = $sql.",g.".$dadosgeo["colunageo"]; } $sql .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d "; $sqlgeo .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d,".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g "; @@ -212,9 +226,57 @@ class Metaestat{ else{ $sqlgeo .= " WHERE ".$j; } - $sqlgeo = $dadosgeo["colunageo"]." from ($sqlgeo) as foo using unique ".$dados["colunaidgeo"]." using srid= ".$dadosgeo["srid"]; + //atencao: cuidado ao alterar essa string pois ') as foo' pode ser usado para replace em outras funcoes + $sqlgeo = $dadosgeo["colunageo"]." from ($sqlgeo) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; return array("sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro); } + function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer=""){ + if(empty($tipolayer)){ + $tipolayer = "polygon"; + } + $meta = $this->listaMedidaVariavel("",$id_medida_variavel); + 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"].""; + //echo $conexao;exit; + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas); + $sqlf = $sql["sqlmapserver"]; + if(!empty($filtro)){ + $sqlf = str_replace(") as foo"," AND ".$filtro." ) foo",$sqlf); + } + //echo $sqlf;exit; + $rand = $this->nomeRandomico(); + $arq = $this->dir_tmp."/".$rand.".map"; + $dados[] = "MAP"; + $dados[] = "SYMBOLSET ".$this->locaplic."/symbols/simbolosv6.sym"; + $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"'; + $dados[] = "LAYER"; + $dados[] = ' NAME "'.$rand.'"'; + $dados[] = " TYPE $tipolayer"; + $dados[] = ' DATA "'.$sqlf.'"'; + $dados[] = ' CONNECTION "'.$conexao.'"'; + $dados[] = ' CONNECTIONTYPE POSTGIS'; + $dados[] = ' STATUS OFF'; + $dados[] = ' METADATA'; + $dados[] = ' TEMA "'.$titulolayer.'"'; + $dados[] = ' CLASSE "SIM"'; + $dados[] = ' END'; + $dados[] = ' CLASS'; + $dados[] = ' NAME ""'; + $dados[] = ' STYLE'; + $dados[] = ' COLOR 200 0 0'; + $dados[] = ' END'; + $dados[] = ' END'; + $dados[] = "END"; + $dados[] = "END"; + $fp = fopen($arq,"w"); + foreach ($dados as $dado){ + fwrite($fp,$dado."\n"); + } + return array("mapfile"=>$arq,"layer"=>$rand,"titulolayer"=>$titulolayer); + } function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0){ $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas); $sqlf = $sql["sql"]; diff --git a/admin/php/conexao.php b/admin/php/conexao.php index dfc5ca4..884bef3 100644 --- a/admin/php/conexao.php +++ b/admin/php/conexao.php @@ -41,42 +41,16 @@ Free Software Foundation, Inc., no endereço Arquivo: i3geo/admin/php/conexao.php */ -if(isset($locaplic) && $locaplic != "") -{ +if(isset($locaplic) && $locaplic != ""){ include($locaplic."/ms_configura.php"); } -else -{ - if (file_exists("../../../ms_configura.php")) - { - include("../../../ms_configura.php"); - } - else - { - if (file_exists("../../ms_configura.php")) - { - include("../../ms_configura.php"); - } - else - { - if (file_exists("../ms_configura.php")) - { - include("../ms_configura.php"); - } - else - if (file_exists("ms_configura.php")) - { - include("ms_configura.php"); - } - } - } +else{ + include(__DIR__."/../../ms_configura.php"); } -if(!isset($conexaoadmin)) -{ +if(!isset($conexaoadmin)){ $conexaoadmin = ""; } -if(!isset($esquemaadmin)) -{ +if(!isset($esquemaadmin)){ $esquemaadmin = ""; } // @@ -84,11 +58,9 @@ if(!isset($esquemaadmin)) // $convUTF = true; -if($conexaoadmin == "") -{ +if($conexaoadmin == ""){ $arquivosqlite = $locaplic."/admin/admin.db"; - if(!file_exists($arquivosqlite)) - { + if(!file_exists($arquivosqlite)){ echo "O arquivo admin.db não existe. Utilize i3geo/admin/criabanco.php para criar o banco de dados SQLITE."; exit; } @@ -97,15 +69,13 @@ if($conexaoadmin == "") if(!extension_loaded("PDO")){ echo "A extensao do PHP 'PDO' nao esta instalada."; } - try - { + try { //para escrita $dbhw = new PDO($conAdminw); //para leitura $dbh = new PDO($conAdmin); } - catch (PDOException $e) - { + catch (PDOException $e) { print "Erro ao criar o objeto PDO!: " . $e->getMessage() . "
Talvez exista alguma incompatibilidade entre o PHP e o banco admin.db. Vc pode apagar o arquivo menutemas/admin.db e recria-lo com admin/php/criasqlite.php"; die(); } diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 863a170..95fba41 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -1144,7 +1144,7 @@ function criarNovoMap() if(!file_exists($arq)) { $dados[] = "MAP"; - $dados[] = "SYMBOLSET ../symbols/simbolos.sym"; + $dados[] = "SYMBOLSET ../symbols/simbolosv6.sym"; $dados[] = 'FONTSET "../symbols/fontes.txt"'; $dados[] = "LAYER"; $dados[] = " NAME $codigo"; diff --git a/admin/php/metaestat.php b/admin/php/metaestat.php index 2945ce7..579d029 100644 --- a/admin/php/metaestat.php +++ b/admin/php/metaestat.php @@ -511,7 +511,33 @@ switch (strtoupper($funcao)) case "DADOSMEDIDAVARIAVEL": $m = new Metaestat(); if($formato == "json"){ - retornaJSON($m->dadosMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas,$agruparpor)); + retornaJSON($m->dadosMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas)); + } + exit; + break; + /* + Valor: MAPFILEMEDIDAVARIAVEL + + Cria o mapfile de uma media de uma variavel + + Parametros: + + formato + + filtro + + agruparpor + + todasascolunas - 0 ou 1 + + Retorno: + + {JSON} + */ + case "MAPFILEMEDIDAVARIAVEL": + $m = new Metaestat(); + if($formato == "json"){ + retornaJSON($m->mapfileMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas,$tipolayer,$titulolayer)); } exit; break; diff --git a/testamapfile.php b/testamapfile.php index b7515e5..e3a7b73 100644 --- a/testamapfile.php +++ b/testamapfile.php @@ -102,7 +102,7 @@ if (isset($map) && $map != "") if(!isset($solegenda)){$solegenda = "nao";} if ($map == "todos") { - $tipo = "todos"; + $tipo = "todos"; $conta = 0; echo "
Número de mapas = ".(count($arqs["arquivos"]))." Faltam= ".(count($arqs["arquivos"])-$iniciar-10)."
"; if (!isset($iniciar)){$iniciar = 0;} @@ -121,7 +121,7 @@ if (isset($map) && $map != "") echo "




Próximos mapas"; } else - {verifica($map,$solegenda);} + {verifica($map,$solegenda);} } echo ''; echo ''; @@ -134,20 +134,20 @@ function verifica($map,$solegenda) { Header("Content-type: image/png"); ImagePng(ImageCreateFromPNG('temas/miniaturas/'.$map.".mini.png")); - exit; + exit; } if ($tipo == "grande" && file_exists('temas/miniaturas/'.$map.".grande.png")) { Header("Content-type: image/png"); ImagePng(ImageCreateFromPNG('temas/miniaturas/'.$map.".grande.png")); - exit; + exit; } ms_ResetErrorList(); $tema = ""; if(file_exists($map)) {$tema = $map;} else - { + { $map = str_replace("\\","/",$map); $map = basename($map); if (file_exists('temas/'.$map)) @@ -174,13 +174,13 @@ function verifica($map,$solegenda) if($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){ $base = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map"; } - if($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ + if($base == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ $base = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map"; } - if($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ + if($base == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ $base = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map"; } - if($f == "") + if($base == "") {$base = $locaplic."/aplicmap/geral1v".$versao.".map";} } } @@ -188,6 +188,7 @@ function verifica($map,$solegenda) if(!file_exists($base)) {$base = $locaplic."/aplicmap/".$base;} } + //echo $base;exit; $mapa = ms_newMapObj($base); error_reporting(0); $temasn = $mapa->getAllLayerNames(); @@ -204,7 +205,7 @@ function verifica($map,$solegenda) if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade {$layern->set("connection",$postgis_mapa);} else - {$layern->set("connection",$postgis_mapa[$lcon]);} + {$layern->set("connection",$postgis_mapa[$lcon]);} } } } @@ -251,13 +252,13 @@ function verifica($map,$solegenda) if ($layern->connectiontype == MS_POSTGIS) { $lcon = $layern->connection; - error_reporting(0); + error_reporting(0); if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))) { if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade {$layern->set("connection",$postgis_mapa);} else - {$layern->set("connection",$postgis_mapa[$lcon]);} + {$layern->set("connection",$postgis_mapa[$lcon]);} } } } @@ -281,7 +282,7 @@ function verifica($map,$solegenda) $dados = $layern->connection; else $dados = $layern->data; - $pegarext = $teman; + $pegarext = $teman; } } zoomTema($pegarext,$mapa); @@ -322,7 +323,7 @@ function verifica($map,$solegenda) $nomec = ($objImagem->imagepath).nomeRandomico()."teste.png"; $objImagem->saveImage($nomec); $nomer = ($objImagem->imageurl).basename($nomec); - + $nomel = ($objImagemLegenda->imagepath).nomeRandomico()."testel.png"; $objImagemLegenda->saveImage($nomel); $nomerl = ($objImagemLegenda->imageurl).basename($nomel); @@ -346,7 +347,7 @@ function verifica($map,$solegenda) $error = $error->next(); } } - + } else { @@ -360,7 +361,7 @@ function zoomTema($nomelayer,&$mapa) { $layer = $mapa->getlayerbyname($nomelayer); if($layer->data == "" && $layer->connection == "") - {return;} + {return;} $prjMapa = $mapa->getProjection(); $prjTema = $layer->getProjection(); $extatual = $mapa->extent; -- libgit2 0.21.2