From d4bcea5ae8f24ad422bb8e9d2ef321b943b957aa Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 8 Nov 2017 20:43:37 -0200 Subject: [PATCH] Correção na ativação de camadas que possuem parametros sql, evitando que o status seja sempre inserido como DEFAULT --- classesphp/classe_metaestatinfo.php | 10 ++++++---- classesphp/mapa_controle.php | 1 + classesphp/mapa_inicia.php | 724 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ferramentas/parametrossql/exec.php | 4 +++- ferramentas/parametrossql/index.js | 1 + ms_criamapa.php | 2802 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 6 files changed, 1796 insertions(+), 1746 deletions(-) diff --git a/classesphp/classe_metaestatinfo.php b/classesphp/classe_metaestatinfo.php index 7d7e4f8..7c10dca 100755 --- a/classesphp/classe_metaestatinfo.php +++ b/classesphp/classe_metaestatinfo.php @@ -510,6 +510,7 @@ class MetaestatInfo{ $this->nomecache = $this->nomecache . $this->nomeRandomico(5); } $arq = $this->dir_tmp."/".$this->nomecache.".map"; + if(!file_exists($arq)){ $meta = $this->listaMedidaVariavel("",$id_medida_variavel); //evita agregar regioes qd nao e necessario @@ -578,14 +579,14 @@ class MetaestatInfo{ $titulo = array(); //adiciona as classes novas $expressao[] = "([".$item."]<=".($calc["quartil1"]).")"; - $titulo[] = "Quartil 1: <=".$calc["quartil1"]; + $titulo[] = "<=".round($calc["quartil1"],3); $expressao[] = "(([".$item."]>".($calc["quartil1"]).")and([".$item."]<=".($calc["quartil2"])."))"; - $titulo[] = "Quartil 2: >".$calc["quartil1"]." e <= ".$calc["quartil2"]; + $titulo[] = "> ".round($calc["quartil1"],3)." e <= ".round($calc["quartil2"],3); if($calc["quartil3"] != 0){ $expressao[] = "(([".$item."]>".($calc["quartil2"]).")and([".$item."]<=".($calc["quartil3"])."))"; - $titulo[] = "Quartil 3: >".$calc["quartil2"]." e <= ".$calc["quartil3"]; + $titulo[] = "> ".round($calc["quartil2"],3)." e <= ".round($calc["quartil3"],3); $expressao[] = "([".$item."]>".($calc["quartil3"]).")"; - $titulo[] = "Quartil 4: >".$calc["quartil3"]; + $titulo[] = "> ".round($calc["quartil3"],3); } if($calc["quartil1"] > 0){ $classes[] = array( @@ -736,6 +737,7 @@ class MetaestatInfo{ fwrite($fp,$dado."\n"); } } + return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer); } /** diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 2832811..64e8782 100755 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -249,6 +249,7 @@ if ($funcao == "criaMapa") { cpjson($id); return; } + if (! isset($map_file)) { // nesse caso é necessário criar o diretório temporário e iniciar o mapa // $cp->set_data(array("erro"=>"linkquebrado")); diff --git a/classesphp/mapa_inicia.php b/classesphp/mapa_inicia.php index b48fcf7..94ce2f9 100755 --- a/classesphp/mapa_inicia.php +++ b/classesphp/mapa_inicia.php @@ -1,361 +1,365 @@ -extent; - $ext = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); - $c = $m->numlayers; - for ($i=0;$i < $c;++$i){ - $layer = $m->getlayer($i); - if($layer->status == 2){ - $layer->setmetadata("olstatus","DEFAULT"); - } - else{ - $layer->setmetadata("olstatus","OFF"); - } - $layer->setmetadata("olopacity",$layer->opacity); - //error_log($layer->name); - } - $m->save($map_file); - } - if($interface == "googlemaps") - { - $m = ms_newMapObj($map_file); - $e = $m->extent; - $ext = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); - if($interface == "googlemaps"){ - $m->setProjection("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m"); - } - $c = $m->numlayers; - for ($i=0;$i < $c;++$i) - { - $layer = $m->getlayer($i); - if($layer->status == 2) - {$layer->setmetadata("gmstatus","DEFAULT");} - else - {$layer->setmetadata("gmstatus","OFF");} - $layer->setmetadata("gmopacity",$layer->opacity); - if($layer->name == "mundo" || $layer->name == "estados") - {$layer->set("status",MS_OFF);} - if($layer->type == MS_LAYER_POLYGON || $layer->type == MS_LAYER_RASTER) - { - if($layer->opacity == "" || $layer->opacity == 100) - { - $layer->set("opacity",50); - } - } - if($layer->name == "rosadosventos" || $layer->name == "copyright") - {$layer->set("status",MS_DELETE);} - } - $temp = $m->scalebar; - $temp->set("status",MS_OFF); - $c = $m->imagecolor; - $c->setrgb(255,255,255); - if($interface == "googleearth") - { - $m->selectOutputFormat("jpeg"); - $of = $m->outputformat; - $of->set("driver","AGG/PNG"); - } - else - {$of = $m->outputformat;} - $of->set("imagemode",MS_IMAGEMODE_RGBA); - $of->set("transparent",MS_ON); - $m->save($map_file); - } - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $protocolo = $protocolo[0]; - $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; - $urli3geo = str_replace("/classesphp/mapa_controle.php","",$protocolo.$_SERVER["PHP_SELF"]); - //altera o tamanho do query map para ficar igual ao do mapa - include_once("classe_mapa.php"); - //error_reporting(0); - if(!function_exists("sobeAnno")){ - include_once("funcoes_gerais.php"); - } - sobeAnno($map_file); - $m = new Mapa($map_file); - if(isset($w)) - { - $m->mudaQS($w,$h); - $m = new Mapa($map_file); - $m->mapa->setsize($w,$h); - } - //error_reporting(0); - // - //verifica se a legenda deve ser embebida no mapa - // - $legenda = $m->mapa->legend; - $legenda->set("status",MS_OFF); - // - //salva as alterações feitas - // - $m->mapa->setmetadata("ows_enable_request","*"); - $m->salva(); - // - //cuidado ao mexer aqui - //o mapa precisa ser salvo para registrar a extensão geográfica - // - //$imgo = $m->mapa->draw(); - $imgo = $m->mapa->prepareImage(); - $m->salva($map_file); - //$e = $m->mapa->extent; - //$ext = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); - $escalaMapa = $m->mapa->scaledenom; - $celula = $m->mapa->cellsize; - // - //pega os parametros de cada tema - // - $qyfile = str_replace(".map",".qy",$map_file); - $arqsel = (file_exists($qyfile)) ? true : false; - $m = New Mapa($map_file,$locaplic); - $temas = $m->parametrosTemas(); - $versao = versao(); - $temp = $m->mapa->scalebar; - $temp->set("status",MS_OFF); - $of = $m->mapa->outputformat; - $of->set("imagemode",MS_IMAGEMODE_RGBA); - $of->setOption("QUANTIZE_FORCE","OFF"); - $of->set("driver","AGG/PNG"); - $m->mapa->setmetadata("interface",$interface); - $m->salva(); - $nomes = nomeRandomico(12); - if($imgo->imagepath == "") - {echo "Erro IMAGEPATH vazio";exit;} - $nomer = ($imgo->imagepath)."mapa".$nomes.".png"; - //$imgo->saveImage($nomer); - if (isset($utilizacgi) && strtolower($utilizacgi) == "sim") - {$nomer = $locmapserv."?map=".$map_file."&mode=map";} - else - {$nomer = ($imgo->imageurl).basename($nomer);} - //pega a cor de fundo do mapa - $c = $m->mapa->imagecolor; - $cordefundo = $c->red.",".$c->green.",".$c->blue; - //pega o texto de copyright - $copyright = ""; - $lc = @$m->mapa->getlayerbyname("copyright"); - if($lc != "" && $lc->status == MS_DEFAULT ){ - if($versao["principal"] >= 6){ - $shape = $lc->getShape(new resultObj(0)); - $copyright = $shape->text; - } - else{ - $shape = $lc->getfeature(0,-1); - $copyright = $shape->text; - } - } - $res["editor"] = "nao"; - // - //papeis do usuario se estiver logado - // - $res["papeis"] = array(); - $logado = "nao"; - $res["i3geoPermiteLogin"] = "sim"; - if(isset($i3geoPermiteLogin) && $i3geoPermiteLogin == false){ - $_COOKIE = array(); - $res["i3geoPermiteLogin"] = "nao"; - } - if(!empty($_COOKIE["i3geocodigologin"])){ - session_write_close(); - session_name("i3GeoLogin"); - session_id($_COOKIE["i3geocodigologin"]); - session_start(); - //var_dump($_SESSION);exit; - $logado = "sim"; - if(!empty($_SESSION["usuario"]) && $_SESSION["usuario"] == $_COOKIE["i3geousuariologin"]){ - $res["papeis"] = $_SESSION["papeis"]; - } - else{ - $logado = "nao"; - } - //verifica se o usuario logado pode ver as opcoes de edicao do sistema de admin dentro do mapa - foreach($res["papeis"] as $p){ - if($p < 3){ - $res["editor"] = "sim"; - } - } - } - // - $res["mapexten"] = $ext; - $res["mapscale"] = $escalaMapa; - $res["mapres"] = $m->mapa->resolution; - $res["pixelsize"] = $celula; - //TODO depreciar na documentacao e ms_configura - /* - if ((isset($expoeMapfile)) && ($expoeMapfile == "nao")) - {$res["mapfile"] = "";} - else - {$res["mapfile"] = $map_file;} - */ - $res["mapfile"] = ""; - $res["cgi"] = "";//$locmapserv; - $res["extentTotal"] = $ext; - $res["mapimagem"] = "";//$nomer; - $geoip = "nao"; - if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")) - {$geoip = "sim";} - $res["geoip"] = $geoip; - $res["listavisual"] = (file_exists($locaplic."/imagens/visual")) ? implode(",",listaDiretorios($locaplic."/imagens/visual")) : ""; - //TODO depreciar na documentacao - $res["utilizacgi"] = "nao";//$utilizacgi; - $res["versaoms"] = $versao["principal"]; - $res["versaomscompleta"] = $versao["completa"]; - $res["versaoint"] = $versao["inteiro"]; - $res["mensagens"] = $m->pegaMensagens(); - $res["r"] = (isset($R_path)) ? "sim" : "nao"; - $res["extentref"] = ""; - $res["kmlurl"] = $kmlurl; - $res["mensageminicia"] = $mensagemInicia; - $res["interfacePadrao"] = $interfacePadrao; - $res["w"] = $w; - $res["h"] = $h; - $res["titulo"] = $tituloInstituicao; - $res["tempo"] = microtime(1) - $tempo; - $res["erro"] = ''; - $res["mappath"] = "";//$imgo->imagepath; - $res["mapurl"] = "";//$imgo->imageurl; - $res["navegacaoDir"] = $navegadoresLocais; - if($openid == true) - {$res["autenticadoopenid"] = "sim";} - else - {$res["autenticadoopenid"] = "nao";} - $res["emailInstituicao"] = $emailInstituicao; - $res["cordefundo"] = $cordefundo; - $res["copyright"] = $copyright; - $res["logado"] = $logado; - $res["saikuUrl"] = $saikuUrl; - $res["statusFerramentas"] = $statusFerramentas; - $res["googleApiKey"] = $googleApiKey; - //parametros de inicializacao armazenados com o mapa quando o usuario utiliza a opcao de salvar mapa no nbanco de dados - $customizacoesinit = $m->mapa->getmetadata("CUSTOMIZACOESINIT"); - $res["editavel"] = $m->mapa->getmetadata("EDITAVEL"); - $m->mapa->setmetadata("CUSTOMIZACOESINIT",""); - $m->salva(); - restauraCon($map_file,$postgis_mapa); - copy($map_file,(str_replace(".map","reinc.map",$map_file))); - copy($map_file,(str_replace(".map","seguranca.map",$map_file))); - ob_clean(); - cpjson(array("variaveis"=>$res,"temas"=>$temas,"customizacoesinit"=>$customizacoesinit)); -} +extent; + $ext = ($e->minx) . " " . ($e->miny) . " " . ($e->maxx) . " " . ($e->maxy); + $c = $m->numlayers; + for ($i = 0; $i < $c; ++ $i) { + $layer = $m->getlayer($i); + if ($layer->status == 2) { + $layer->setmetadata("olstatus", "DEFAULT"); + } else { + $layer->setmetadata("olstatus", "OFF"); + } + $layer->setmetadata("olopacity", $layer->opacity); + // error_log($layer->name); + } + $m->save($map_file); + } + if ($interface == "googlemaps") { + $m = ms_newMapObj($map_file); + $e = $m->extent; + $ext = ($e->minx) . " " . ($e->miny) . " " . ($e->maxx) . " " . ($e->maxy); + if ($interface == "googlemaps") { + $m->setProjection("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m"); + } + $c = $m->numlayers; + for ($i = 0; $i < $c; ++ $i) { + $layer = $m->getlayer($i); + if ($layer->status == 2) { + $layer->setmetadata("gmstatus", "DEFAULT"); + } else { + $layer->setmetadata("gmstatus", "OFF"); + } + $layer->setmetadata("gmopacity", $layer->opacity); + if ($layer->name == "mundo" || $layer->name == "estados") { + $layer->set("status", MS_OFF); + } + if ($layer->type == MS_LAYER_POLYGON || $layer->type == MS_LAYER_RASTER) { + if ($layer->opacity == "" || $layer->opacity == 100) { + $layer->set("opacity", 50); + } + } + if ($layer->name == "rosadosventos" || $layer->name == "copyright") { + $layer->set("status", MS_DELETE); + } + } + $temp = $m->scalebar; + $temp->set("status", MS_OFF); + $c = $m->imagecolor; + $c->setrgb(255, 255, 255); + if ($interface == "googleearth") { + $m->selectOutputFormat("jpeg"); + $of = $m->outputformat; + $of->set("driver", "AGG/PNG"); + } else { + $of = $m->outputformat; + } + $of->set("imagemode", MS_IMAGEMODE_RGBA); + $of->set("transparent", MS_ON); + $m->save($map_file); + } + $protocolo = explode("/", $_SERVER['SERVER_PROTOCOL']); + $protocolo = $protocolo[0]; + $protocolo = strtolower($protocolo) . '://' . $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT']; + $urli3geo = str_replace("/classesphp/mapa_controle.php", "", $protocolo . $_SERVER["PHP_SELF"]); + // altera o tamanho do query map para ficar igual ao do mapa + include_once ("classe_mapa.php"); + // error_reporting(0); + if (! function_exists("sobeAnno")) { + include_once ("funcoes_gerais.php"); + } + sobeAnno($map_file); + $m = new Mapa($map_file); + if (isset($w)) { + $m->mudaQS($w, $h); + $m = new Mapa($map_file); + $m->mapa->setsize($w, $h); + } + // error_reporting(0); + // + // verifica se a legenda deve ser embebida no mapa + // + $legenda = $m->mapa->legend; + $legenda->set("status", MS_OFF); + // + // salva as alterações feitas + // + $m->mapa->setmetadata("ows_enable_request", "*"); + $m->salva(); + // + // cuidado ao mexer aqui + // o mapa precisa ser salvo para registrar a extensão geográfica + // + // $imgo = $m->mapa->draw(); + $imgo = $m->mapa->prepareImage(); + $m->salva($map_file); + // $e = $m->mapa->extent; + // $ext = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); + $escalaMapa = $m->mapa->scaledenom; + $celula = $m->mapa->cellsize; + // + // pega os parametros de cada tema + // + $qyfile = str_replace(".map", ".qy", $map_file); + $arqsel = (file_exists($qyfile)) ? true : false; + $m = new Mapa($map_file, $locaplic); + $temas = $m->parametrosTemas(); + $versao = versao(); + $temp = $m->mapa->scalebar; + $temp->set("status", MS_OFF); + $of = $m->mapa->outputformat; + $of->set("imagemode", MS_IMAGEMODE_RGBA); + $of->setOption("QUANTIZE_FORCE", "OFF"); + $of->set("driver", "AGG/PNG"); + $m->mapa->setmetadata("interface", $interface); + $m->salva(); + $nomes = nomeRandomico(12); + if ($imgo->imagepath == "") { + echo "Erro IMAGEPATH vazio"; + exit(); + } + $nomer = ($imgo->imagepath) . "mapa" . $nomes . ".png"; + // $imgo->saveImage($nomer); + if (isset($utilizacgi) && strtolower($utilizacgi) == "sim") { + $nomer = $locmapserv . "?map=" . $map_file . "&mode=map"; + } else { + $nomer = ($imgo->imageurl) . basename($nomer); + } + // pega a cor de fundo do mapa + $c = $m->mapa->imagecolor; + $cordefundo = $c->red . "," . $c->green . "," . $c->blue; + // pega o texto de copyright + $copyright = ""; + $lc = @$m->mapa->getlayerbyname("copyright"); + if ($lc != "" && $lc->status == MS_DEFAULT) { + if ($versao["principal"] >= 6) { + $shape = $lc->getShape(new resultObj(0)); + $copyright = $shape->text; + } else { + $shape = $lc->getfeature(0, - 1); + $copyright = $shape->text; + } + } + $res["editor"] = "nao"; + // + // papeis do usuario se estiver logado + // + $res["papeis"] = array(); + $logado = "nao"; + $res["i3geoPermiteLogin"] = "sim"; + if (isset($i3geoPermiteLogin) && $i3geoPermiteLogin == false) { + $_COOKIE = array(); + $res["i3geoPermiteLogin"] = "nao"; + } + if (! empty($_COOKIE["i3geocodigologin"])) { + session_write_close(); + session_name("i3GeoLogin"); + session_id($_COOKIE["i3geocodigologin"]); + session_start(); + // var_dump($_SESSION);exit; + $logado = "sim"; + if (! empty($_SESSION["usuario"]) && $_SESSION["usuario"] == $_COOKIE["i3geousuariologin"]) { + $res["papeis"] = $_SESSION["papeis"]; + } else { + $logado = "nao"; + } + // verifica se o usuario logado pode ver as opcoes de edicao do sistema de admin dentro do mapa + foreach ($res["papeis"] as $p) { + if ($p < 3) { + $res["editor"] = "sim"; + } + } + } + // + $res["mapexten"] = $ext; + $res["mapscale"] = $escalaMapa; + $res["mapres"] = $m->mapa->resolution; + $res["pixelsize"] = $celula; + // TODO depreciar na documentacao e ms_configura + /* + * if ((isset($expoeMapfile)) && ($expoeMapfile == "nao")) + * {$res["mapfile"] = "";} + * else + * {$res["mapfile"] = $map_file;} + */ + $res["mapfile"] = ""; + $res["cgi"] = ""; // $locmapserv; + $res["extentTotal"] = $ext; + $res["mapimagem"] = ""; // $nomer; + $geoip = "nao"; + if (file_exists($locaplic . "/pacotes/geoip") && file_exists($locaplic . "/pacotes/geoip/GeoLiteCity.dat")) { + $geoip = "sim"; + } + $res["geoip"] = $geoip; + $res["listavisual"] = (file_exists($locaplic . "/imagens/visual")) ? implode(",", listaDiretorios($locaplic . "/imagens/visual")) : ""; + // TODO depreciar na documentacao + $res["utilizacgi"] = "nao"; // $utilizacgi; + $res["versaoms"] = $versao["principal"]; + $res["versaomscompleta"] = $versao["completa"]; + $res["versaoint"] = $versao["inteiro"]; + $res["mensagens"] = $m->pegaMensagens(); + $res["r"] = (isset($R_path)) ? "sim" : "nao"; + $res["extentref"] = ""; + $res["kmlurl"] = $kmlurl; + $res["mensageminicia"] = $mensagemInicia; + $res["interfacePadrao"] = $interfacePadrao; + $res["w"] = $w; + $res["h"] = $h; + $res["titulo"] = $tituloInstituicao; + $res["tempo"] = microtime(1) - $tempo; + $res["erro"] = ''; + $res["mappath"] = ""; // $imgo->imagepath; + $res["mapurl"] = ""; // $imgo->imageurl; + $res["navegacaoDir"] = $navegadoresLocais; + if ($openid == true) { + $res["autenticadoopenid"] = "sim"; + } else { + $res["autenticadoopenid"] = "nao"; + } + $res["emailInstituicao"] = $emailInstituicao; + $res["cordefundo"] = $cordefundo; + $res["copyright"] = $copyright; + $res["logado"] = $logado; + $res["saikuUrl"] = $saikuUrl; + $res["statusFerramentas"] = $statusFerramentas; + $res["googleApiKey"] = $googleApiKey; + // parametros de inicializacao armazenados com o mapa quando o usuario utiliza a opcao de salvar mapa no nbanco de dados + $customizacoesinit = $m->mapa->getmetadata("CUSTOMIZACOESINIT"); + $res["editavel"] = $m->mapa->getmetadata("EDITAVEL"); + $m->mapa->setmetadata("CUSTOMIZACOESINIT", ""); + $m->salva(); + restauraCon($map_file, $postgis_mapa); + copy($map_file, (str_replace(".map", "reinc.map", $map_file))); + copy($map_file, (str_replace(".map", "seguranca.map", $map_file))); + ob_clean(); + cpjson(array( + "variaveis" => $res, + "temas" => $temas, + "customizacoesinit" => $customizacoesinit + )); +} ?> diff --git a/ferramentas/parametrossql/exec.php b/ferramentas/parametrossql/exec.php index 4c8a648..4fb249f 100755 --- a/ferramentas/parametrossql/exec.php +++ b/ferramentas/parametrossql/exec.php @@ -99,7 +99,9 @@ switch (strtoupper($funcao)) } $layer->set("data",$data); } - $layer->set("status",MS_DEFAULT); + if(isset($_GET["ativacamada"])){ + $layer->set("status",MS_DEFAULT); + } $layer->setmetadata("PLUGINI3GEO",'{"plugin":"parametrossql","ativo":"sim"}'); $layer->setmetadata("TEMA",$layer1->getmetadata("TEMA")." - ".$titulos); //$layer->set("name","plugin".nomeRandomico()); diff --git a/ferramentas/parametrossql/index.js b/ferramentas/parametrossql/index.js index f6f6717..eb5bcbb 100755 --- a/ferramentas/parametrossql/index.js +++ b/ferramentas/parametrossql/index.js @@ -163,6 +163,7 @@ i3GEOF.parametrossql = { }; p = i3GEO.configura.locaplic+"/ferramentas/parametrossql/exec.php?g_sid="+i3GEO.configura.sid + "&funcao=aplicar" + + "&ativacamada=sim" + "&tema=" + camada.name + "&chaves=&valores=" + par.join(","); cp = new cpaint(); diff --git a/ms_criamapa.php b/ms_criamapa.php index fd0a806..0f47a9c 100755 --- a/ms_criamapa.php +++ b/ms_criamapa.php @@ -1,148 +1,147 @@ -_filter= - - Exemplo de filtro - - http://localhost/i3geo/ms_criamapa.php?temasa=_lbiomashp&map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&temasa=_lbiomashp - - no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' - - largura - largura em pixel do mapa - - altura - altura em pixels do mapa - - DESLIGACACHE - sim|nao forca o desligamento do cache em todos os layers -*/ - -if(isset($_GET["ajuda"])){ - echo "
";
-	echo"
+_filter=
+ *
+ * Exemplo de filtro
+ *
+ * http://localhost/i3geo/ms_criamapa.php?temasa=_lbiomashp&map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&temasa=_lbiomashp
+ *
+ * no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA'
+ *
+ * largura - largura em pixel do mapa
+ *
+ * altura - altura em pixels do mapa
+ *
+ * DESLIGACACHE - sim|nao forca o desligamento do cache em todos os layers
+ */
+if (isset($_GET["ajuda"])) {
+    echo "
";
+    echo "
 Parâmetros:
 
 base - arquivo mapfile que servirá de base para a criação do mapa. Por default, são utilizados os arquivos existentes em i3geo/aplicmap (geral1windows, geral1,...)
@@ -215,1239 +214,1280 @@ filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma:
  largura - largura em pixel do mapa
 
  altura - altura em pixels do mapa
-	";
-	exit;
-}
-//$_COOKIE = array();
-
-//
-//quando $funcao existe, é pq o ms_criamapa.php está
-//sendo utilizado como um include em classesphp/mapa_controle.php
-//
-
-if(!isset($funcao)){
-	ob_end_clean();
-	/*
-	 Carrega as extensões PHP
-
-	 Carrega as extensões utilizadas no programa de inicialização.
-	 A carga das extensões geralmente é necessária nas instalações windows (ms4w) ou quando as mesmas não são carregadas pela própria inicialização do PHP.
-	 */
-	include_once (dirname(__FILE__)."/classesphp/carrega_ext.php");
-	/*
-	 Include dos arquivos PHP.
-
-	 Inclui os programas php com funções utilizadas pelo ms_criamapa.php
-	 */
-	include_once (dirname(__FILE__)."/classesphp/sani_request.php");
-	include_once (dirname(__FILE__)."/classesphp/funcoes_gerais.php");
-	if(!isset($_GET["interface"])){
-	    $_GET["interface"] = "";
-	}
-	$interface = $_GET["interface"];
-}
-$parurl = array_merge($_GET,$_POST);
-//
-//$base pode vir do ms_configura ou da URL
-//o ms_configura pode ter sido inserido antes
-//
-if(empty($base) && !empty($parurl["base"])){
-	$base = $parurl["base"];
-}
-
-ms_ResetErrorList();
-$metaestatids = @$parurl["metaestatids"];
-$temasa = @$parurl["temasa"];
-$layers = @$parurl["layers"];
-$desligar = @$parurl["desligar"];
-$mapext = @$parurl["mapext"];
-$executa = "";//$parurl["executa"];
-$perfil = @$parurl["perfil"];
-$caminho = @$parurl["caminho"];
-$pontos = @$parurl["pontos"];
-$nometemapontos = @$parurl["nometemapontos"];
-$linhas = @$parurl["linhas"];
-$nometemalinhas = @$parurl["nometemalinhas"];
-$poligonos = @$parurl["poligonos"];
-$nometemapoligonos = @$parurl["nometemapoligonos"];
-$simbolo = @$parurl["simbolo"];
-$corsimbolo = @$parurl["corsimbolo"];
-$tamanhosimbolo = @$parurl["tamanhosimbolo"];
-$wkt = @$parurl["wkt"];
-$nometemawkt = @$parurl["nometemawkt"];
-$idioma = @$parurl["idioma"];
-$kmlurl = @$parurl["kmlurl"];
-$url_wms = @$parurl["url_wms"];
-$layer_wms = @$parurl["layer_wms"];
-$style_wms = @$parurl["style_wms"];
-$nome_wms = @$parurl["nome_wms"];
-$srs_wms = @$parurl["srs_wms"];
-$image_wms = @$parurl["image_wms"];
-$versao_wms = @$parurl["versao_wms"];
-$gvsigview = @$parurl["gvsigview"];
-$restauramapa = @$parurl["restauramapa"];
-
-$versao = versao();
-$versao = $versao["principal"];
-
-//
-//a variável $base pode ser definida em ms_configura, mas a preferência é pela definição já existente
-//por isso, $base é guardada em uma variável e retomada apos o include de ms_configura.php
-//se restauramapa estiver definido, usa o mapfile guardado no banco de  administracao como a base
-//
-if(!isset($dir_tmp)){
-	include_once (dirname(__FILE__)."/ms_configura.php");
-	if(!empty($parurl["base"])){
-		$base = $parurl["base"];
-	}
-	if(!empty($parurl["interface"])){
-		$interface = $parurl["interface"];
-	}
-}
-if(isset($logExec) && $logExec["init"] == true){
-	i3GeoLog("prog: ms_criamapa url: ".implode("&",array_merge($_GET,$_POST)),$dir_tmp);
-}
-if(!empty($restauramapa)){
-	$base = restauraMapaAdmin($restauramapa,$dir_tmp);
-	$m = ms_newMapObj($base);
-	$w = $m->web;
-	$w->set("imagepath",dirname($w->imagepath)."/");
-	$w->set("imageurl",dirname($w->imageurl)."/");
-	$m->save($base);
-}else{
-	if(isset($base)){
-		$tempBaseX = $base;
-	}
-	if(isset($tempBaseX) && $tempBaseX != ""){
-		$base = $tempBaseX;
-	}
-}
-//verifica se o usuario trocou a senha do master
-if($_SERVER['SERVER_NAME'] != "localhost" && ($i3geomaster[0]["usuario"] == "admin" && $i3geomaster[0]["senha"] == "admin") ){
-	echo json_encode(array("bloqueado"=>"Bloqueado. ATENCAO!!! Acesso bloqueado: edite o arquivo i3geo/ms_configura.php e altere o login e senha da variavel i3geomaster"));
-	exit;
-}
-/*
-Define o cookie para o idioma da interface
-*/
-if(isset($idioma) && $idioma != ""){
-	setcookie("i3geolingua", $idioma);
-}
-/*
-Cria os diretorios temporários que serão utilizados pelo i3geo para armazenar as imagens e outros dados.
-*/
-$diretorios = criaDirMapa($dir_tmp,$cachedir);
-if(!$diretorios){
-	echo "

Não foi possível criar os diretórios temporários em $dir_tmp.

"; - exit; -} -criaIndex($dir_tmp,$diretorios); -$tmpfname = $diretorios[0]; -$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); -/* -Prepara as variáveis que serão incluidas na seção - -As variáveis vêm do arquivo ms_configura.php e são armazenadas em uma seção com nome específico para o i3geo. -*/ -if (!isset($mapext) || empty($mapext)){ - $mapext=""; -} -else{ - $mapext = str_replace(","," ",$mapext); - setcookie("i3geoUltimaExtensao", $mapext); -} -$saikuUrl_ = $saikuUrl; -$cachedir_ = $cachedir; -$dir_tmp_ = $dir_tmp; -$emailInstituicao_ = $emailInstituicao; -$locmapserv_ = $locmapserv; -$locaplic_ = $locaplic; -//$locsistemas_ = $locsistemas; -//$locidentifica_ = $locidentifica; -$R_path_ = $R_path; -$mapext_ = $mapext; - -$debug_ = @$debug; -$ler_extensoes_ = $ler_extensoes; -$postgis_mapa_ = $postgis_mapa; -$tituloInstituicao_ = $tituloInstituicao; -//$atlasxml_ = $atlasxml; -$expoeMapfile_ = $expoeMapfile; -$googleApiKey_ = $googleApiKey; -$mensagemInicia_ = $mensagemInicia; -$interfacePadrao_ = $interfacePadrao; -if(empty($interface)){ - $interface_ = $interfacePadrao; -} -if(isset($kmlurl)){ - $kmlurl_ = $kmlurl; -} -// -//se houver string de conexão para substituição -//o modo cgi não irá funcionar -// -if($postgis_mapa != ""){ - $utilizacgi = "nao"; -} -if(!isset($perfil)){ - $perfil=""; -} -$perfil_ = $perfil; -$utilizacgi_ = $utilizacgi; -if ((isset($navegadoresLocais)) && ($navegadoresLocais != "")){ - $navegadoresLocais_ = "sim"; -} -else{ - $navegadoresLocais_ = "nao"; -} -if(empty($i3georendermode)){ - $i3georendermode_ = 0; -} -else{ - $i3georendermode_ = $i3georendermode; -} -if(empty($statusFerramentas)){ - $statusFerramentas_ = array(); -} -else{ - $statusFerramentas_ = $statusFerramentas; -} -if(empty($logExec)){ - $logExec_ = ""; -} -else{ - $logExec_ = $logExec; -} -if(!isset($i3geoPermiteLogin)){ - $i3geoPermiteLogin_ = ""; -} -else{ - $i3geoPermiteLogin_ = $i3geoPermiteLogin; -} -/* -Inicia a seção - -O i3geo inicia uma seção específica no servidor, denominada i3GeoPHP. -Se já houver uma seção aberta, em função de outro browser estar ativo, cria uma nova. Faz a cópia das variáveis definidas para itens da seção. -*/ -session_name("i3GeoPHP"); -session_start(); -//echo $_SESSION["map_file"];exit; -if (!isset($g_sid)){$g_sid="";} -if(isset($_SESSION["map_file"]) || $g_sid != "" || $g_sid == "undefined"){ - session_regenerate_id(); - $_SESSION = array(); -} -/* -Aguarde - -Monta a apresentação do aguarde. - -Aqui é necessário verificar se $executa está definido -isso pq algumas aplicações podem ser prejudicadas caso o aguarde seja mostrado -*/ -$_SESSION["dir_tmp"] = $dir_tmp_; -$_SESSION["cachedir"] = $cachedir_; -$_SESSION["emailInstituicao"] = $emailInstituicao_; -$_SESSION["locmapserv"] = $locmapserv_; -$_SESSION["locaplic"] = $locaplic_; -$_SESSION["R_path"] = $R_path_; -$_SESSION["mapext"] = $mapext_; -$_SESSION["debug"] = $debug_; -$_SESSION["ler_extensoes"] = $ler_extensoes_; -$_SESSION["postgis_mapa"] = $postgis_mapa_; -$_SESSION["perfil"] = $perfil_; -$_SESSION["navegadoresLocais"] = $navegadoresLocais_; -$_SESSION["utilizacgi"] = $utilizacgi_; -$_SESSION["tituloInstituicao"] = $tituloInstituicao_; -$_SESSION["expoeMapfile"] = $expoeMapfile; -$_SESSION["googleApiKey"] = $googleApiKey_; -$_SESSION["mensagemInicia"] = $mensagemInicia_; -$_SESSION["interfacePadrao"] = $interfacePadrao_; -$_SESSION["logExec"] = $logExec_; -$_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin_; -if(!isset($customDir)){ - $customDir = ""; -} -$_SESSION["customDir"] = $customDir; -if(isset($interface_)){ - $_SESSION["interface"] = $interface_; -} -if(isset($kmlurl_)){ - $_SESSION["kmlurl"] = $kmlurl_; -} -//rotina de segurança, ver http://shiflett.org/articles/the-truth-about-sessions -$fingerprint = 'I3GEOSEC' . $_SERVER['HTTP_USER_AGENT']; -$_SESSION['fingerprint'] = md5($fingerprint . session_id()); -$_SESSION["mapdir"] = $diretorios[1]; -$_SESSION["imgdir"] = $diretorios[2]; -$_SESSION["contadorsalva"] = 0;//essa variavel e utilizada pela ferramenta telaremota. Toda vez que o mapa e salvo, acrescenta 1 (veja classesphp/mapa_controle.php) -$_SESSION["i3georendermode"] = $i3georendermode_; -$_SESSION["saikuUrl"] = $saikuUrl_; -$_SESSION["logExec"] = $logExec_; -$_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin_; - -//sao arrays -$postgis_mapa = $postgis_mapa_; -$_SESSION["statusFerramentas"] = $statusFerramentas_; -/* -Define os arquivos .map - -Seleciona os arquivos mapfile que serão carregados como base conforme o tipo de sistema operacional. - -A variável $base pode ser definida como um parâmetro na inicialização, caso contrário será utilizado o valor definido em ms_configura.php ou o i3Geo tentará descobrir o melhor arquivo a ser usado, conforme o que existir em i3geo/aplicmap. - -Os arquivos .map padrão são armazenados em i3geo/aplicmap. -O arquivo é lido conforma a característica do sistema operacional. - -*/ -$versao = versao(); -$versao = $versao["principal"]; -if(!isset($base) || $base == ""){ - if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ - $base = $locaplic."/aplicmap/geral1windowsv".$versao.".map"; - } - else{ - if($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){ - $base = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map"; - } - if($base == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){ - $base = "/var/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($base == ""){ - $base = $locaplic."/aplicmap/geral1v".$versao.".map"; - } - } -} -//error_log($base); -//if(!isset($estadosl)) -//{$estadosl = "estadosl";} -/* -Cria os objetos map que serão processados - -O arquivo definido em $base é lido como um objeto map. Esse objeto será processado para incluir novos layers e alterar outros parâmetros definidos pelo usuário. -*/ -if (file_exists($base)){ - $map = ms_newMapObj($base); - $mapn = ms_newMapObj($base); -} -else{ - $map = ms_newMapObj($locaplic."/aplicmap/".$base.".map"); - $mapn = ms_newMapObj($locaplic."/aplicmap/".$base.".map"); -} - -/* -Parâmetros adicionais. - -Processa os parâmetros para a inicialização verificando se foram passados pela URL ou não. -*/ -if (!isset($mapext)){ - $mapext = $map->extent->minx." ".$map->extent->miny." ".$map->extent->maxx." ".$map->extent->maxy; -} -//arquivo com a imagem de referência -if (!isset ($map_reference_image)){ - $map_reference_image = $map->reference->image; -} -//extensão geográfica da imagem do mapa de referência -if (!isset ($map_reference_extent)){ - $map_reference_extent = $map->reference->extent->minx." ".$map->reference->extent->miny." ".$map->reference->extent->maxx." ".$map->reference->extent->maxy; -} -if(empty($interface)){ - if(!isset($interfacePadrao)){ - $interfacePadrao = "ol.htm"; - } - $interface = $interfacePadrao; -} - -if(isset($layers) && !isset($temasa)){ - $temasa = $layers; -} - -incluiTemasIniciais(); - -if(isset($layers)){ - ligaTemas(); -} -if(isset($desligar)){ - desligaTemasIniciais(); -} -if (isset($map_reference_image)){ - $mapn->reference->set("image",$map_reference_image); -} -$extr = $mapn->reference->extent; -if (isset($map_reference_extent)){ - $temp = explode(" ",$map_reference_extent); - foreach ($temp as $t) { - if ($t != ""){ - $newext[] = $t; - } - } - if (count($newext) == 4){ - $extr->setextent($newext[0], $newext[1], $newext[2], $newext[3]); - } -} -$ext = $mapn->extent; -$newext = array(); -if ((isset($mapext)) && ($mapext != "")){ - $temp = explode(" ",$mapext); - foreach ($temp as $t) { - if ($t != ""){ - $newext[] = $t; - } - } - if (count($newext) == 4){ - $ext->setextent($newext[0], $newext[1], $newext[2], $newext[3]); - } -} -else{ - //algumas aplicacoes usam essa variavel (SAIKU) - $mapext = $ext->minx." ".$ext->miny." ".$ext->maxx." ".$ext->maxy; -} - -/* -Configura os endereços corretos no mapfile. - -Altera as propriedades imagepath e imageurl corrigindo os caminhos padrão conforme o diretório criado para armazenar o mapa de trabalho. -*/ - -$w = $mapn->web; -$atual = $w->imagepath; -$w->set("imagepath",$atual.$diretorios[2]."/"); -$atual = $w->imageurl; -$w->set("imageurl",$atual.$diretorios[2]."/"); - -$projecao = pegaProjecaoDefault("proj4"); -if($projecao != ""){ - $mapn->setProjection($projecao); -} -//aplica o tamanho do mapa -if(isset($parurl["largura"]) && isset($parurl["altura"])){ - $mapn->setsize($parurl["largura"],$parurl["altura"]); -} - -$tmpfname = str_replace(".map","",$tmpfname).".map"; -$salvo = $mapn->save($tmpfname); - -$_SESSION["imgurl"] = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].$atual.$diretorios[2]."/"; -$_SESSION["tmpurl"] = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].$atual; -$_SESSION["map_file"] = $tmpfname; -$_SESSION["mapext"] = $mapext; -if (isset($executa)){ - if (file_exists($executa)){ - //include_once ($executa); - } - if (function_exists($executa)){ - //eval($executa."();"); - } -} -if(isset($wkt)){ - insereWKTUrl(); -} - -if(isset($pontos)){ - inserePontosUrl(); -} - -if(isset($linhas)){ - insereLinhasUrl(); -} - -if(isset($poligonos)){ - inserePoligonosUrl(); -} - -if(isset($url_wms)){ - incluiTemaWms(); -} - -adaptaLayers($tmpfname,$versao); - -//if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")){ -// require_once(dirname(__FILE__)."/ms_registraip.php"); -//} -if ($interface != "mashup"){ - abreInterface($interface,$caminho); -} - -/* -Adapta os dados de cada layer. - -Faz alterações em cada layer caso sejam necessárias. -*/ -function adaptaLayers($tmpfname,$versao){ - global $parurl; - $mapa = ms_newMapObj($tmpfname); - $path = $mapa->shapepath; - $numlayers = $mapa->numlayers; - for($i=0;$i<$numlayers;++$i){ - $layer = $mapa->getLayer($i); - $ok = true; - if ($layer->connection == ""){ - $ok = false; - $d = $layer->data; - if((file_exists($d)) || (file_exists($d.".shp"))){ - $ok = true; - } - else{ - if((file_exists($path."/".$d)) || (file_exists($path."/".$d.".shp"))){ - $ok = true; - } - } - } - if ($ok == false){ - $layer->set("status",MS_OFF); - } - //para impedir erros na legenda - if($layer->getmetadata("classe") == ""){ - $layer->setmetadata("classe",""); - } - if($versao > 5){ - $pr = $layer->getProcessing(); - if(!in_array("LABEL_NO_CLIP=True",$pr)){ - $layer->setprocessing("LABEL_NO_CLIP=True"); - } - if(!in_array("POLYLINE_NO_CLIP=True",$pr)){ - $layer->setprocessing("POLYLINE_NO_CLIP=True"); - } - - } - // - //verifica se deve aplicar filtro - // - $filtro = @$parurl["map_layer_".$layer->name."_filter"]; - if(!empty($filtro)){ - $layer->setmetadata("CACHE","nao"); - $layer->setfilter($filtro); - } - corrigeLayerPath($layer,$mapa); - } - $mapa->save($tmpfname); - erroCriacao(); -} -/* -Redireciona para o HTML definido em $interface, abrindo o mapa -*/ -function abreInterface($interface,$caminho){ - $nomeInterface = explode(".",basename($interface)); - if (count(explode(".php",$interface)) > 1){ - if(file_exists($caminho."interface/".$interface)){ - include_once($caminho."interface/".$interface); - } - exit; - } - else{ - if(file_exists($caminho."interface/".$interface)){ - $urln = $caminho."interface/".$interface."?&".session_id(); - } - else{ - $urln = $interface."?&".session_id(); - } - if(!headers_sent()){ - header("Location:".$urln); - } - else{ - echo ""; - } - } -} -/* -Desliga os temas definidos na variável $desligar -*/ -function desligaTemasIniciais() -{ - global $desligar,$mapn; - $layers = str_replace(','," ",$desligar); - $lista = explode(" ", $layers); - foreach ($lista as $l) - { - if ($l == "") - {continue;} - if(@$mapn->getLayerByName($l)) - {$layern = $mapn->getLayerByName($l);$layern->set("status",MS_OFF);} - $grupos = $mapn->getLayersIndexByGroup($l); - if(count($grupos) > 0) - { - for ($i = 0;$i < count($grupos);++$i) - { - $layern = $mapn->getLayer($grupos[$i]); - if(strtolower($layern->group) == strtolower($l)) - { - $layern->set("status",MS_OFF); - } - } - } - } - erroCriacao(); -} -/* -Liga os temas definidos na variável $layers -*/ -function ligaTemas() -{ - global $layers,$mapn; - if (isset($layers)) - { - $layers = str_replace(','," ",$layers); - $lista = explode(" ", $layers); - foreach ($lista as $l) - { - if ($l == "") - {continue;} - if(@$mapn->getLayerByName($l)) - {$layern = $mapn->getLayerByName($l);$layern->set("status",MS_DEFAULT);} - $grupos = $mapn->getLayersIndexByGroup($l); - if(count($grupos) > 0) - { - for ($i = 0;$i < count($grupos);++$i) - { - $layern = $mapn->getLayer($grupos[$i]); - if(strtolower($layern->group) == strtolower($l)) - { - $layern->set("status",MS_DEFAULT); - } - } - } - } - } - erroCriacao(); -} -/* -Inclui os temas definidos na variável $temasa - -Os temas devem estar em i3geo/temas -*/ -function incluiTemasIniciais(){ - global $temasa,$mapn,$locaplic,$metaestatids,$layers; - if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'){ - $temasdir = $locaplic."\\temas"; - } - else { - $temasdir = $locaplic."/temas"; - } - if (!isset($temasa)){ - $temasa = ""; - } - $temasa = str_replace(','," ",$temasa); - $alayers = explode(" ",$temasa); - if(isset($metaestatids)){ - //localhost/i3geo/ms_criamapa.php?metaestatids=25,12&layers=25 - include_once (dirname(__FILE__) . "/classesphp/classe_metaestatinfo.php"); - $metaestatids = str_replace(','," ",$metaestatids); - $metaestatids = explode(" ",$metaestatids); - $metaestatidsligados = $layers; - $metaestatidsligados = str_replace(','," ",$metaestatidsligados); - $metaestatidsligados = explode(" ",$metaestatidsligados); - foreach($metaestatids as $metaestatid){ - //$_pg["filtro"] = str_replace('"', "'", $_pg["filtro"]); - $m = new MetaestatInfo(); - - $parametros = $m->listaParametro($metaestatid,"","",true,true); - //id_parametro_medida,coluna - $filtroPar = array(); - foreach($parametros as $parametro){ - $valoresparametro = $m->valorUnicoMedidaVariavel($metaestatid,$parametro["coluna"]); - $valormaior = $valoresparametro[count($valoresparametro) - 1]; - $filtroPar[] = " ".$parametro["coluna"] . "::text = '" . $valormaior[$parametro["coluna"]] . "' "; - } - //var_dump($filtroPar);exit; - $mapfilemetaestat = $m->mapfileMedidaVariavel( - $metaestatid, - implode(" AND ",$filtroPar), - 0, - "polygon", - "", - "", - "", - "", - "", - false, - false - ); - //array(3) { ["mapfile"]=> string(52) "/tmp/ms_tmp/AAAAc20ad4d76fe97759aa27a0c99bff6710.map" ["layer"]=> string(36) "AAAAc20ad4d76fe97759aa27a0c99bff6710" ["titulolayer"]=> string(0) "" } - //var_dump ($mapfilemetaestat); - //exit; - array_push($alayers,$mapfilemetaestat["mapfile"]); - - if(in_array($metaestatid,$metaestatidsligados)){ - $maptemp = @ms_newMapObj($mapfilemetaestat["mapfile"]); - $maptemp->getlayerbyname($mapfilemetaestat["layer"])->set("status",MS_DEFAULT); - $maptemp->save($mapfilemetaestat["mapfile"]); - } - } - } - - $existeraster = false; - foreach ($alayers as $arqt) { - $arqtemp = ""; - $arqt = trim($arqt); - if ($arqt == "") - {continue;} - $extensao = ".map"; - if(file_exists($arqt)){ - $arqtemp = $arqt; - } - if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($locaplic."\\aplicmap\\".$arqt.$extensao))){ - $arqtemp = $locaplic."\\aplicmap\\".$arqt.$extensao; - } - elseif (file_exists($locaplic."/aplicmap/".$arqt.$extensao)){ - $arqtemp = $locaplic."/aplicmap/".$arqt.$extensao; - } - if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($temasdir."\\".$arqt.$extensao))){ - $arqtemp = $temasdir."\\".$arqt.$extensao; - } - elseif (file_exists($temasdir."/".$arqt.$extensao)){ - $arqtemp = $temasdir."/".$arqt.$extensao; - } - if($arqtemp == ""){ - //echo "
Impossível acessar tema $arqtemp"; - } - else{ - if ($extensao == ".map" && !@ms_newMapObj($arqtemp)){ - echo "
Problemas com a camada $arqtemp
"; - } - else{ - $maptemp = @ms_newMapObj($arqtemp); - for($i=0;$i<($maptemp->numlayers);++$i){ - //error_reporting(0); - $layern = $maptemp->getLayer($i); - if($layern->type == MS_LAYER_RASTER) - {$existeraster = true;} - if ($layern->name == "estadosl"){ - $layern->set("data",$locaplic."/aplicmap/dados/estados.shp"); - } - $layern->setmetadata("nomeoriginal",$layern->name); - $nNome = str_replace(".map","",basename($arqtemp)); - $layern->setmetadata("arquivotemaoriginal",$nNome); - autoClasses($layern,$mapn); - // - //necessário para não alterar a extensão do mapa por esse parâmetro - // - $layern->setmetadata("aplicaextensao",""); - //cria e aplica sld se for wms e existirem classes - if($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata("wms_sld_body") == ""){ - $tipotemp = $layern->type; - $statustemp = $layern->status; - $tiporep = $layern->getmetadata("tipooriginal"); - $layern->set("type",MS_LAYER_POLYGON); - if ($tiporep == "linear") - {$layern->set("type",MS_LAYER_LINE);} - if ($tiporep == "pontual") - {$layern->set("type",MS_LAYER_POINT);} - $layern->set("status",MS_DEFAULT); - $sld = $layern->generateSLD(); - if($sld != "") - $layern->setmetadata("wms_sld_body",str_replace('"',"'",$sld)); - $layern->set("type",$tipotemp); - $layern->set("status",$statustemp); - } - cloneInlineSymbol($layern,$maptemp,$mapn); - $layerAdicionado = ms_newLayerObj($mapn, $layern); - //echo $layern->name; - corrigeLayerGrid($layern,$layerAdicionado); - } - } - } - } - erroCriacao(); -} -/* -Cria os arquivos vazios index.htm e index.html nos diretorios temporários -*/ -function criaIndex($dir_tmp,$diretorios) -{ - if (!file_exists($dir_tmp."/index.htm")) - { - $f = fopen($dir_tmp."/index.htm","x"); - fclose($f); - $f = fopen($dir_tmp."/index.html","x"); - fclose($f); - $f = fopen($dir_tmp."/".$diretorios[1]."/index.html","x"); - fclose($f); - $f = fopen($dir_tmp."/".$diretorios[1]."/index.htm","x"); - fclose($f); - $f = fopen($dir_tmp."/".$diretorios[2]."/index.html","x"); - fclose($f); - $f = fopen($dir_tmp."/".$diretorios[2]."/index.htm","x"); - fclose($f); - } - if (!file_exists($dir_tmp."/index.htm")) - { - echo "Erro. Não foi possível gravar no diretório temporário"; - exit; - } -} -/* -Mostra a mensagem de aguarde -*/ -function mostraAguarde() -{ - global $interface,$mensagemInicia,$tituloInstituicao; - if (!isset($interface)) - { - echo ""; - echo ''; - echo "".$tituloInstituicao.""; - echo '
'; - echo '

'.$mensagemInicia.'
Aguarde...preparando o mapa

'; - echo ''; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "
"; - echo ''; - } -} -/* -Insere elementos no mapa a partir de uma string definida em wkt -*/ -function insereWKTUrl() -{ - global $tamanhosimbolo,$simbolo,$corsimbolo,$wkt,$nometemawkt,$dir_tmp,$imgdir,$tmpfname,$locaplic; - include_once "pacotes/phpxbase/api_conversion.php"; - if (!isset($nometemapontos)) - {$nometemapontos="WKT";} - if ($nometemapontos == "") - {$nometemapontos="WKT";} - // - //cria o shape file - // - $shape = ms_shapeObjFromWkt($wkt); - $tipol = $shape->type; - if($tipol == 0){$tipol = 3;} - $nomeshp = $dir_tmp."/".$imgdir."/wkts"; - // cria o dbf - $def = array(); - $items = array("COORD"); - foreach ($items as $ni) - {$def[] = array($ni,"C","254");} - if(!function_exists(dbase_create)) - {xbase_create($nomeshp.".dbf", $def);} - else - {dbase_create($nomeshp.".dbf", $def);} - $dbname = $nomeshp.".dbf"; - $db=xbase_open($dbname,2); - if ($tipol == 1) - {$novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_ARC);} - if ($tipol == 3) - {$novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_MULTIPOINT);} - if ($tipol == 2) - {$novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON);} - $reg[] = ""; - $novoshpf->addShape($shape); - xbase_add_record($db,$reg); - $novoshpf->free(); - xbase_close($db); - //adiciona o layer - $mapa = ms_newMapObj($tmpfname); - $layer = ms_newLayerObj($mapa); - $layer->set("name","wktins"); - $layer->set("data",$nomeshp.".shp"); - $layer->setmetadata("DOWNLOAD","sim"); - $layer->setmetadata("temalocal","sim"); - $layer->setmetadata("tema",$nometemawkt); - $layer->setmetadata("classe","sim"); - $layer->set("type",$shape->type); - $layer->set("status",MS_DEFAULT); - $classe = ms_newClassObj($layer); - $classe->set("name"," "); - $estilo = ms_newStyleObj($classe); - if($shape->type == 0) - { - if(!isset($simbolo)) - $estilo->set("symbolname","ponto"); - if(!isset($tamanhosimbolo)) - $estilo->set("size",6); - } - if($shape->type == 1) - { - if(!isset($simbolo)) - $estilo->set("symbolname","linha"); - if(!isset($tamanhosimbolo)) - $estilo->set("size",3); - } - if($shape->type == 2) - {$layer->set("opacity","50");} - - $cor = $estilo->color; - if(!isset($corsimbolo)) - {$corsimbolo ="255,0,0";} - $corsimbolo = str_replace(" ",",",$corsimbolo); - $corsimbolo = explode(",",$corsimbolo); - $cor->setRGB($corsimbolo[0],$corsimbolo[1],$corsimbolo[2]); - - $salvo = $mapa->save($tmpfname); - erroCriacao(); -} -/* -Insere um tema do tipo ponto - -*/ -function inserePontosUrl() -{ - global $pontos,$tamanhosimbolo,$simbolo,$corsimbolo,$nometemapontos,$dir_tmp,$imgdir,$tmpfname,$locaplic; - include_once "pacotes/phpxbase/api_conversion.php"; - if (!isset($nometemapontos)) - {$nometemapontos="Pontos";} - if ($nometemapontos == "") - {$nometemapontos="Pontos";} - // - //cria o shape file - // - $tipol = MS_SHP_POINT; - $nomeshp = $dir_tmp."/".$imgdir."/".nomeRandomico(); - // cria o dbf - $def = array(); - $items = array("COORD"); - foreach ($items as $ni) - {$def[] = array($ni,"C","254");} - if(!function_exists(dbase_create)){ - xbase_create($nomeshp.".dbf", $def); - } - else{ - dbase_create($nomeshp.".dbf", $def); - } - $dbname = $nomeshp.".dbf"; - $db=xbase_open($dbname,2); - $novoshpf = ms_newShapefileObj($nomeshp, $tipol); - $pontos = explode(" ",trim($pontos)); - if(count($pontos) == 1){ - $pontos = explode(",",trim($pontos[0])); - } - foreach ($pontos as $p){ - if (is_numeric($p)){ - $pontosn[] = $p; - } - } - $pontos = $pontosn; - for ($ci = 0;$ci < count($pontos);$ci=$ci+2){ - $reg = array(); - $reg[] = $pontos[$ci]." ".$pontos[$ci+1]; - $shape = ms_newShapeObj($tipol); - $linha = ms_newLineObj(); - $linha->addXY($pontos[$ci],$pontos[$ci+1]); - $shape->add($linha); - $novoshpf->addShape($shape); - xbase_add_record($db,$reg); - } - $novoshpf->free(); - xbase_close($db); - //adiciona o layer - $mapa = ms_newMapObj($tmpfname); - $layer = ms_newLayerObj($mapa); - $layer->set("name","pontoins"); - $layer->set("data",$nomeshp.".shp"); - $layer->setmetadata("DOWNLOAD","sim"); - $layer->setmetadata("tema",$nometemapontos); - $layer->setmetadata("classe","sim"); - $layer->setmetadata("temalocal","sim"); - $layer->setmetadata("ATLAS","nao"); - $layer->set("type",MS_LAYER_POINT); - $layer->set("status",MS_DEFAULT); - $classe = ms_newClassObj($layer); - $classe->set("name"," "); - $estilo = ms_newStyleObj($classe); - - if(!isset($simbolo)) - {$simbolo = "ponto";} - $estilo->set("symbolname",$simbolo); - if(!isset($tamanhosimbolo)) - {$tamanhosimbolo = 6;} - $estilo->set("size",$tamanhosimbolo); - $cor = $estilo->color; - if(!isset($corsimbolo)) - {$corsimbolo ="255,0,0";} - $corsimbolo = str_replace(" ",",",$corsimbolo); - $corsimbolo = explode(",",$corsimbolo); - $cor->setRGB($corsimbolo[0],$corsimbolo[1],$corsimbolo[2]); - - $salvo = $mapa->save($tmpfname); - erroCriacao(); -} -/* -Insere um tema do tipo linear - -As linhas devem ter os pontos separados por espaços e cada linha separada por vírgula - -*/ -function insereLinhasUrl() -{ - global $tamanhosimbolo,$simbolo,$corsimbolo,$linhas,$nometemalinhas,$dir_tmp,$imgdir,$tmpfname,$locaplic; - include_once "pacotes/phpxbase/api_conversion.php"; - if (!isset($nometemalinhas)) - {$nometemalinhas="Linhas";} - if ($nometemalinhas == "") - {$nometemalinhas="Linhas";} - // - //cria o shape file - // - $tipol = MS_SHP_ARC; - $nomeshp = $dir_tmp."/".$imgdir."/".nomeRandomico(); - // cria o dbf - $def = array(); - $items = array("COORD"); - foreach ($items as $ni){ - $def[] = array($ni,"C","254"); - } - if(!function_exists(dbase_create)){ - xbase_create($nomeshp.".dbf", $def); - } - else{ - dbase_create($nomeshp.".dbf", $def); - } - $dbname = $nomeshp.".dbf"; - $db=xbase_open($dbname,2); - $novoshpf = ms_newShapefileObj($nomeshp, $tipol); - $linhas = explode(",",trim($linhas)); - $pontosLinhas = array(); //guarda os pontos de cada linha em arrays - foreach ($linhas as $l){ - $tempPTs = explode(" ",trim($l)); - $temp = array(); - foreach ($tempPTs as $p){ - if (is_numeric($p)){ - $temp[] = $p; - } - } - $pontosLinhas[] = $temp; - } - foreach ($pontosLinhas as $ptsl){ - $linhas = $ptsl; - $shape = ms_newShapeObj(MS_SHAPE_LINE); - $linha = ms_newLineObj(); - $reg = array(); - $reg[] = implode(",",$ptsl); - for ($ci = 0;$ci < count($linhas);$ci=$ci+2){ - $linha->addXY($linhas[$ci],$linhas[$ci+1]); - - } - $shape->add($linha); - $novoshpf->addShape($shape); - xbase_add_record($db,$reg); - } - $novoshpf->free(); - xbase_close($db); - //adiciona o layer - $mapa = ms_newMapObj($tmpfname); - $layer = ms_newLayerObj($mapa); - $layer->set("name","linhains"); - $layer->set("data",$nomeshp.".shp"); - $layer->setmetadata("DOWNLOAD","sim"); - $layer->setmetadata("temalocal","sim"); - $layer->setmetadata("tema",$nometemalinhas); - $layer->setmetadata("classe","sim"); - $layer->setmetadata("ATLAS","nao"); - $layer->set("type",MS_LAYER_LINE); - $layer->set("status",MS_DEFAULT); - $classe = ms_newClassObj($layer); - $classe->set("name"," "); - $estilo = ms_newStyleObj($classe); - - if(isset($simbolo)){ - $simbolo = "linha"; - $estilo->set("symbolname",$simbolo); - } - if(!isset($tamanhosimbolo)){ - $tamanhosimbolo = 4; - } - $estilo->set("width",$tamanhosimbolo); - $cor = $estilo->color; - if(!isset($corsimbolo)) - {$corsimbolo ="255,0,0";} - $corsimbolo = str_replace(" ",",",$corsimbolo); - $corsimbolo = explode(",",$corsimbolo); - $cor->setRGB($corsimbolo[0],$corsimbolo[1],$corsimbolo[2]); - - $salvo = $mapa->save($tmpfname); - erroCriacao(); -} -/* -Insere um tema poligonal. - -Os polígonos devem ter os pontos separados por espaços e cada polígono separado por vírgula -*/ -function inserePoligonosUrl() -{ - global $tamanhosimbolo,$simbolo,$corsimbolo,$poligonos,$nometemapoligonos,$dir_tmp,$imgdir,$tmpfname,$locaplic; - include_once "pacotes/phpxbase/api_conversion.php"; - if (!isset($nometemapoligonos)) - {$nometemapoligonos="Poligonos";} - if ($nometemapoligonos == "") - {$nometemapoligonos="Poligonos";} - // - //cria o shape file - // - $tipol = MS_SHP_POLYGON; - $nomeshp = $dir_tmp."/".$imgdir."/".nomeRandomico(); - // cria o dbf - $def = array(); - $items = array("COORD"); - foreach ($items as $ni) - {$def[] = array($ni,"C","254");} - if(!function_exists(dbase_create)) - {xbase_create($nomeshp.".dbf", $def);} - else - {dbase_create($nomeshp.".dbf", $def);} - $dbname = $nomeshp.".dbf"; - $db=xbase_open($dbname,2); - $novoshpf = ms_newShapefileObj($nomeshp, $tipol); - $linhas = explode(",",trim($poligonos)); - $pontosLinhas = array(); //guarda os pontos de cada linha em arrays - foreach ($linhas as $l) - { - $tempPTs = explode(" ",trim($l)); - $temp = array(); - foreach ($tempPTs as $p) - if (is_numeric($p)){$temp[] = $p;} - $pontosLinhas[] = $temp; - } - foreach ($pontosLinhas as $ptsl) - { - $linhas = $ptsl; - $shape = ms_newShapeObj(MS_SHAPE_POLYGON); - $linha = ms_newLineObj(); - $reg = array(); - $reg[] = ""; - for ($ci = 0;$ci < count($linhas);$ci=$ci+2) - { - $linha->addXY($linhas[$ci],$linhas[$ci+1]); - } - $shape->add($linha); - $novoshpf->addShape($shape); - xbase_add_record($db,$reg); - } - $novoshpf->free(); - xbase_close($db); - //adiciona o layer - $mapa = ms_newMapObj($tmpfname); - $layer = ms_newLayerObj($mapa); - $layer->set("name","linhains"); - $layer->set("data",$nomeshp.".shp"); - $layer->setmetadata("DOWNLOAD","sim"); - $layer->setmetadata("temalocal","sim"); - $layer->setmetadata("tema",$nometemapoligonos); - $layer->setmetadata("classe","sim"); - $layer->setmetadata("ATLAS","nao"); - $layer->set("type",MS_LAYER_POLYGON); - $layer->set("opacity","50"); - $layer->set("status",MS_DEFAULT); - $classe = ms_newClassObj($layer); - $classe->set("name"," "); - $estilo = ms_newStyleObj($classe); - - $cor = $estilo->color; - if(!isset($corsimbolo)) - {$corsimbolo ="255,0,0";} - $corsimbolo = str_replace(" ",",",$corsimbolo); - $corsimbolo = explode(",",$corsimbolo); - $cor->setRGB($corsimbolo[0],$corsimbolo[1],$corsimbolo[2]); - - $salvo = $mapa->save($tmpfname); - erroCriacao(); -} -/* -Inclui no mapa um tema do tipo WMS -*/ -function incluiTemaWms() -{ - global $nome_wms,$url_wms,$layer_wms,$style_wms,$srs_wms,$image_wms,$versao_wms,$tmpfname,$locaplic; - include_once ($locaplic."/classesphp/classe_mapa.php"); - if(!$nome_wms) - {$nome = $layer_wms." ".$style_wms;} - else - $nome = $nome_wms; - $m = new Mapa($tmpfname); - $m->adicionatemawms($layer_wms,$url_wms,$style_wms,$srs_wms,$image_wms,$locaplic,"",$versao_wms,$nome,"","","","","nao","text/plain",""); - $salvo = $m->salva($tmpfname); - //echo $tmpfname;exit; - erroCriacao(); -} -/* -Projeto gvsig -*/ -function incluiMapaGvsig($gvsiggvp,$gvsigview=""){ - -} -/* -Captura e mostra os erros de processamento do mapserver -*/ -function erroCriacao(){ - $error = ms_GetErrorObj(); - while($error && $error->code != MS_NOERR) - { - printf("
Error in %s: %s
\n", $error->routine, $error->message); - $error = $error->next(); - } - ms_ResetErrorList(); -} -/* -Cria os diretórios temporários para a aplicação. - -Parametro: - -$dir_tmp {string} - Diretório temporário (no servidor) utilizado pelo mapserver. - -$cachedir {string} - Diretório de cache temporário definido no ms_configura.php - -Retorno: - -{boleano} -*/ -function criaDirMapa($dir_tmp,$cachedir=""){ - if(empty($dir_tmp)){ - return false; - } - if(!file_exists($dir_tmp)){ - @mkdir ($dir_tmp,0744); - } - if(file_exists($dir_tmp)){ - foreach(glob($dir_tmp . '/{,.}*.php', GLOB_BRACE) as $f) { - unlink ($f); - } - $tmpdirname = nomeRandomico(); - $crdir = @mkdir ($dir_tmp."/".$tmpdirname,0744); - chmod($dir_tmp."/".$tmpdirname,0744); - $crdiri = @mkdir ($dir_tmp."/img".$tmpdirname,0744); - chmod($dir_tmp."/img".$tmpdirname,0744); - $mapfile = $dir_tmp."/".$tmpdirname."/".$tmpdirname.".map"; - $tmpimgname = "img".$tmpdirname; - if(!file_exists($dir_tmp."/comum")){ - @mkdir($dir_tmp."/comum",0744); - } - if(!file_exists($dir_tmp."/saiku-datasources")){ - //utilizado para armazenar os arquivos de fonte de dados do SAIKU - @mkdir($dir_tmp."/saiku-datasources",0744); - chmod($dir_tmp."/saiku-datasources",0744); - } - // - if($cachedir == ""){ - if(!file_exists($dir_tmp."/cache")){ - @mkdir($dir_tmp."/cache",0744); - chmod($dir_tmp."/cache",0744); - @mkdir($dir_tmp."/cache/googlemaps",0744); - chmod($dir_tmp."/cache/googlemaps",0744); - } - } - else{ - if(!file_exists($cachedir)){ - @mkdir($cachedir,0744); - chmod($cachedir,0744); - @mkdir($cachedir."/googlemaps",0744); - chmod($cachedir."/googlemaps",0744); - } - } - if(file_exists($dir_tmp."/".$tmpdirname)){ - return array($mapfile,$tmpdirname,$tmpimgname); - } - else{ - return false; - } - } - else{ - return false; - } -} -?> + "; + exit(); +} +// $_COOKIE = array(); + +// +// quando $funcao existe, é pq o ms_criamapa.php está +// sendo utilizado como um include em classesphp/mapa_controle.php +// + +if (! isset($funcao)) { + ob_end_clean(); + /* + * Carrega as extensões PHP + * + * Carrega as extensões utilizadas no programa de inicialização. + * A carga das extensões geralmente é necessária nas instalações windows (ms4w) ou quando as mesmas não são carregadas pela própria inicialização do PHP. + */ + include_once (dirname(__FILE__) . "/classesphp/carrega_ext.php"); + /* + * Include dos arquivos PHP. + * + * Inclui os programas php com funções utilizadas pelo ms_criamapa.php + */ + include_once (dirname(__FILE__) . "/classesphp/sani_request.php"); + include_once (dirname(__FILE__) . "/classesphp/funcoes_gerais.php"); + if (! isset($_GET["interface"])) { + $_GET["interface"] = ""; + } + $interface = $_GET["interface"]; +} +$parurl = array_merge($_GET, $_POST); +// +// $base pode vir do ms_configura ou da URL +// o ms_configura pode ter sido inserido antes +// +if (empty($base) && ! empty($parurl["base"])) { + $base = $parurl["base"]; +} + +ms_ResetErrorList(); +$metaestatids = @$parurl["metaestatids"]; +$temasa = @$parurl["temasa"]; +$layers = @$parurl["layers"]; +$desligar = @$parurl["desligar"]; +$mapext = @$parurl["mapext"]; +$executa = ""; // $parurl["executa"]; +$perfil = @$parurl["perfil"]; +$caminho = @$parurl["caminho"]; +$pontos = @$parurl["pontos"]; +$nometemapontos = @$parurl["nometemapontos"]; +$linhas = @$parurl["linhas"]; +$nometemalinhas = @$parurl["nometemalinhas"]; +$poligonos = @$parurl["poligonos"]; +$nometemapoligonos = @$parurl["nometemapoligonos"]; +$simbolo = @$parurl["simbolo"]; +$corsimbolo = @$parurl["corsimbolo"]; +$tamanhosimbolo = @$parurl["tamanhosimbolo"]; +$wkt = @$parurl["wkt"]; +$nometemawkt = @$parurl["nometemawkt"]; +$idioma = @$parurl["idioma"]; +$kmlurl = @$parurl["kmlurl"]; +$url_wms = @$parurl["url_wms"]; +$layer_wms = @$parurl["layer_wms"]; +$style_wms = @$parurl["style_wms"]; +$nome_wms = @$parurl["nome_wms"]; +$srs_wms = @$parurl["srs_wms"]; +$image_wms = @$parurl["image_wms"]; +$versao_wms = @$parurl["versao_wms"]; +$gvsigview = @$parurl["gvsigview"]; +$restauramapa = @$parurl["restauramapa"]; + +$versao = versao(); +$versao = $versao["principal"]; + +// +// a variável $base pode ser definida em ms_configura, mas a preferência é pela definição já existente +// por isso, $base é guardada em uma variável e retomada apos o include de ms_configura.php +// se restauramapa estiver definido, usa o mapfile guardado no banco de administracao como a base +// +if (! isset($dir_tmp)) { + include_once (dirname(__FILE__) . "/ms_configura.php"); + if (! empty($parurl["base"])) { + $base = $parurl["base"]; + } + if (! empty($parurl["interface"])) { + $interface = $parurl["interface"]; + } +} +if (isset($logExec) && $logExec["init"] == true) { + i3GeoLog("prog: ms_criamapa url: " . implode("&", array_merge($_GET, $_POST)), $dir_tmp); +} +if (! empty($restauramapa)) { + $base = restauraMapaAdmin($restauramapa, $dir_tmp); + $m = ms_newMapObj($base); + $w = $m->web; + $w->set("imagepath", dirname($w->imagepath) . "/"); + $w->set("imageurl", dirname($w->imageurl) . "/"); + $m->save($base); +} else { + if (isset($base)) { + $tempBaseX = $base; + } + if (isset($tempBaseX) && $tempBaseX != "") { + $base = $tempBaseX; + } +} +// verifica se o usuario trocou a senha do master +if ($_SERVER['SERVER_NAME'] != "localhost" && ($i3geomaster[0]["usuario"] == "admin" && $i3geomaster[0]["senha"] == "admin")) { + echo json_encode(array( + "bloqueado" => "Bloqueado. ATENCAO!!! Acesso bloqueado: edite o arquivo i3geo/ms_configura.php e altere o login e senha da variavel i3geomaster" + )); + exit(); +} +/* + * Define o cookie para o idioma da interface + */ +if (isset($idioma) && $idioma != "") { + setcookie("i3geolingua", $idioma); +} +/* + * Cria os diretorios temporários que serão utilizados pelo i3geo para armazenar as imagens e outros dados. + */ +$diretorios = criaDirMapa($dir_tmp, $cachedir); +if (! $diretorios) { + echo "

Não foi possível criar os diretórios temporários em $dir_tmp.

"; + exit(); +} +criaIndex($dir_tmp, $diretorios); +$tmpfname = $diretorios[0]; +$protocolo = explode("/", $_SERVER['SERVER_PROTOCOL']); +/* + * Prepara as variáveis que serão incluidas na seção + * + * As variáveis vêm do arquivo ms_configura.php e são armazenadas em uma seção com nome específico para o i3geo. + */ +if (! isset($mapext) || empty($mapext)) { + $mapext = ""; +} else { + $mapext = str_replace(",", " ", $mapext); + setcookie("i3geoUltimaExtensao", $mapext); +} +$saikuUrl_ = $saikuUrl; +$cachedir_ = $cachedir; +$dir_tmp_ = $dir_tmp; +$emailInstituicao_ = $emailInstituicao; +$locmapserv_ = $locmapserv; +$locaplic_ = $locaplic; +// $locsistemas_ = $locsistemas; +// $locidentifica_ = $locidentifica; +$R_path_ = $R_path; +$mapext_ = $mapext; + +$debug_ = @$debug; +$ler_extensoes_ = $ler_extensoes; +$postgis_mapa_ = $postgis_mapa; +$tituloInstituicao_ = $tituloInstituicao; +// $atlasxml_ = $atlasxml; +$expoeMapfile_ = $expoeMapfile; +$googleApiKey_ = $googleApiKey; +$mensagemInicia_ = $mensagemInicia; +$interfacePadrao_ = $interfacePadrao; +if (empty($interface)) { + $interface_ = $interfacePadrao; +} +if (isset($kmlurl)) { + $kmlurl_ = $kmlurl; +} +// +// se houver string de conexão para substituição +// o modo cgi não irá funcionar +// +if ($postgis_mapa != "") { + $utilizacgi = "nao"; +} +if (! isset($perfil)) { + $perfil = ""; +} +$perfil_ = $perfil; +$utilizacgi_ = $utilizacgi; +if ((isset($navegadoresLocais)) && ($navegadoresLocais != "")) { + $navegadoresLocais_ = "sim"; +} else { + $navegadoresLocais_ = "nao"; +} +if (empty($i3georendermode)) { + $i3georendermode_ = 0; +} else { + $i3georendermode_ = $i3georendermode; +} +if (empty($statusFerramentas)) { + $statusFerramentas_ = array(); +} else { + $statusFerramentas_ = $statusFerramentas; +} +if (empty($logExec)) { + $logExec_ = ""; +} else { + $logExec_ = $logExec; +} +if (! isset($i3geoPermiteLogin)) { + $i3geoPermiteLogin_ = ""; +} else { + $i3geoPermiteLogin_ = $i3geoPermiteLogin; +} +/* + * Inicia a seção + * + * O i3geo inicia uma seção específica no servidor, denominada i3GeoPHP. + * Se já houver uma seção aberta, em função de outro browser estar ativo, cria uma nova. Faz a cópia das variáveis definidas para itens da seção. + */ +session_name("i3GeoPHP"); +session_start(); +// echo $_SESSION["map_file"];exit; +if (! isset($g_sid)) { + $g_sid = ""; +} +if (isset($_SESSION["map_file"]) || $g_sid != "" || $g_sid == "undefined") { + session_regenerate_id(); + $_SESSION = array(); +} +/* + * Aguarde + * + * Monta a apresentação do aguarde. + * + * Aqui é necessário verificar se $executa está definido + * isso pq algumas aplicações podem ser prejudicadas caso o aguarde seja mostrado + */ +$_SESSION["dir_tmp"] = $dir_tmp_; +$_SESSION["cachedir"] = $cachedir_; +$_SESSION["emailInstituicao"] = $emailInstituicao_; +$_SESSION["locmapserv"] = $locmapserv_; +$_SESSION["locaplic"] = $locaplic_; +$_SESSION["R_path"] = $R_path_; +$_SESSION["mapext"] = $mapext_; +$_SESSION["debug"] = $debug_; +$_SESSION["ler_extensoes"] = $ler_extensoes_; +$_SESSION["postgis_mapa"] = $postgis_mapa_; +$_SESSION["perfil"] = $perfil_; +$_SESSION["navegadoresLocais"] = $navegadoresLocais_; +$_SESSION["utilizacgi"] = $utilizacgi_; +$_SESSION["tituloInstituicao"] = $tituloInstituicao_; +$_SESSION["expoeMapfile"] = $expoeMapfile; +$_SESSION["googleApiKey"] = $googleApiKey_; +$_SESSION["mensagemInicia"] = $mensagemInicia_; +$_SESSION["interfacePadrao"] = $interfacePadrao_; +$_SESSION["logExec"] = $logExec_; +$_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin_; +if (! isset($customDir)) { + $customDir = ""; +} +$_SESSION["customDir"] = $customDir; +if (isset($interface_)) { + $_SESSION["interface"] = $interface_; +} +if (isset($kmlurl_)) { + $_SESSION["kmlurl"] = $kmlurl_; +} +// rotina de segurança, ver http://shiflett.org/articles/the-truth-about-sessions +$fingerprint = 'I3GEOSEC' . $_SERVER['HTTP_USER_AGENT']; +$_SESSION['fingerprint'] = md5($fingerprint . session_id()); +$_SESSION["mapdir"] = $diretorios[1]; +$_SESSION["imgdir"] = $diretorios[2]; +$_SESSION["contadorsalva"] = 0; // essa variavel e utilizada pela ferramenta telaremota. Toda vez que o mapa e salvo, acrescenta 1 (veja classesphp/mapa_controle.php) +$_SESSION["i3georendermode"] = $i3georendermode_; +$_SESSION["saikuUrl"] = $saikuUrl_; +$_SESSION["logExec"] = $logExec_; +$_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin_; + +// sao arrays +$postgis_mapa = $postgis_mapa_; +$_SESSION["statusFerramentas"] = $statusFerramentas_; +/* + * Define os arquivos .map + * + * Seleciona os arquivos mapfile que serão carregados como base conforme o tipo de sistema operacional. + * + * A variável $base pode ser definida como um parâmetro na inicialização, caso contrário será utilizado o valor definido em ms_configura.php ou o i3Geo tentará descobrir o melhor arquivo a ser usado, conforme o que existir em i3geo/aplicmap. + * + * Os arquivos .map padrão são armazenados em i3geo/aplicmap. + * O arquivo é lido conforma a característica do sistema operacional. + * + */ +$versao = versao(); +$versao = $versao["principal"]; +if (! isset($base) || $base == "") { + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { + $base = $locaplic . "/aplicmap/geral1windowsv" . $versao . ".map"; + } else { + if ($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv' . $versao . '.map')) { + $base = "/var/www/i3geo/aplicmap/geral1debianv" . $versao . ".map"; + } + if ($base == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) { + $base = "/var/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 ($base == "") { + $base = $locaplic . "/aplicmap/geral1v" . $versao . ".map"; + } + } +} +// error_log($base); +// if(!isset($estadosl)) +// {$estadosl = "estadosl";} +/* + * Cria os objetos map que serão processados + * + * O arquivo definido em $base é lido como um objeto map. Esse objeto será processado para incluir novos layers e alterar outros parâmetros definidos pelo usuário. + */ +if (file_exists($base)) { + $map = ms_newMapObj($base); + $mapn = ms_newMapObj($base); +} else { + $map = ms_newMapObj($locaplic . "/aplicmap/" . $base . ".map"); + $mapn = ms_newMapObj($locaplic . "/aplicmap/" . $base . ".map"); +} + +/* + * Parâmetros adicionais. + * + * Processa os parâmetros para a inicialização verificando se foram passados pela URL ou não. + */ +if (! isset($mapext)) { + $mapext = $map->extent->minx . " " . $map->extent->miny . " " . $map->extent->maxx . " " . $map->extent->maxy; +} +// arquivo com a imagem de referência +if (! isset($map_reference_image)) { + $map_reference_image = $map->reference->image; +} +// extensão geográfica da imagem do mapa de referência +if (! isset($map_reference_extent)) { + $map_reference_extent = $map->reference->extent->minx . " " . $map->reference->extent->miny . " " . $map->reference->extent->maxx . " " . $map->reference->extent->maxy; +} +if (empty($interface)) { + if (! isset($interfacePadrao)) { + $interfacePadrao = "ol.htm"; + } + $interface = $interfacePadrao; +} + +if (isset($layers) && ! isset($temasa)) { + $temasa = $layers; +} + +incluiTemasIniciais(); + +if (isset($layers)) { + ligaTemas(); +} +if (isset($desligar)) { + desligaTemasIniciais(); +} +if (isset($map_reference_image)) { + $mapn->reference->set("image", $map_reference_image); +} +$extr = $mapn->reference->extent; +if (isset($map_reference_extent)) { + $temp = explode(" ", $map_reference_extent); + foreach ($temp as $t) { + if ($t != "") { + $newext[] = $t; + } + } + if (count($newext) == 4) { + $extr->setextent($newext[0], $newext[1], $newext[2], $newext[3]); + } +} +$ext = $mapn->extent; +$newext = array(); +if ((isset($mapext)) && ($mapext != "")) { + $temp = explode(" ", $mapext); + foreach ($temp as $t) { + if ($t != "") { + $newext[] = $t; + } + } + if (count($newext) == 4) { + $ext->setextent($newext[0], $newext[1], $newext[2], $newext[3]); + } +} else { + // algumas aplicacoes usam essa variavel (SAIKU) + $mapext = $ext->minx . " " . $ext->miny . " " . $ext->maxx . " " . $ext->maxy; +} + +/* + * Configura os endereços corretos no mapfile. + * + * Altera as propriedades imagepath e imageurl corrigindo os caminhos padrão conforme o diretório criado para armazenar o mapa de trabalho. + */ + +$w = $mapn->web; +$atual = $w->imagepath; +$w->set("imagepath", $atual . $diretorios[2] . "/"); +$atual = $w->imageurl; +$w->set("imageurl", $atual . $diretorios[2] . "/"); + +$projecao = pegaProjecaoDefault("proj4"); +if ($projecao != "") { + $mapn->setProjection($projecao); +} +// aplica o tamanho do mapa +if (isset($parurl["largura"]) && isset($parurl["altura"])) { + $mapn->setsize($parurl["largura"], $parurl["altura"]); +} + +$tmpfname = str_replace(".map", "", $tmpfname) . ".map"; +$salvo = $mapn->save($tmpfname); + +$_SESSION["imgurl"] = strtolower($protocolo[0]) . "://" . $_SERVER['HTTP_HOST'] . $atual . $diretorios[2] . "/"; +$_SESSION["tmpurl"] = strtolower($protocolo[0]) . "://" . $_SERVER['HTTP_HOST'] . $atual; +$_SESSION["map_file"] = $tmpfname; +$_SESSION["mapext"] = $mapext; +if (isset($executa)) { + if (file_exists($executa)) { + // include_once ($executa); + } + if (function_exists($executa)) { + // eval($executa."();"); + } +} +if (isset($wkt)) { + insereWKTUrl(); +} + +if (isset($pontos)) { + inserePontosUrl(); +} + +if (isset($linhas)) { + insereLinhasUrl(); +} + +if (isset($poligonos)) { + inserePoligonosUrl(); +} + +if (isset($url_wms)) { + incluiTemaWms(); +} + +adaptaLayers($tmpfname, $versao); + +// if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")){ +// require_once(dirname(__FILE__)."/ms_registraip.php"); +// } +if ($interface != "mashup") { + abreInterface($interface, $caminho); +} + +/* + * Adapta os dados de cada layer. + * + * Faz alterações em cada layer caso sejam necessárias. + */ +function adaptaLayers($tmpfname, $versao) +{ + global $parurl; + $mapa = ms_newMapObj($tmpfname); + $path = $mapa->shapepath; + $numlayers = $mapa->numlayers; + for ($i = 0; $i < $numlayers; ++ $i) { + $layer = $mapa->getLayer($i); + $ok = true; + if ($layer->connection == "") { + $ok = false; + $d = $layer->data; + if ((file_exists($d)) || (file_exists($d . ".shp"))) { + $ok = true; + } else { + if ((file_exists($path . "/" . $d)) || (file_exists($path . "/" . $d . ".shp"))) { + $ok = true; + } + } + } + if ($ok == false) { + $layer->set("status", MS_OFF); + } + // para impedir erros na legenda + if ($layer->getmetadata("classe") == "") { + $layer->setmetadata("classe", ""); + } + if ($versao > 5) { + $pr = $layer->getProcessing(); + if (! in_array("LABEL_NO_CLIP=True", $pr)) { + $layer->setprocessing("LABEL_NO_CLIP=True"); + } + if (! in_array("POLYLINE_NO_CLIP=True", $pr)) { + $layer->setprocessing("POLYLINE_NO_CLIP=True"); + } + } + // + // verifica se deve aplicar filtro + // + $filtro = @$parurl["map_layer_" . $layer->name . "_filter"]; + if (! empty($filtro)) { + $layer->setmetadata("CACHE", "nao"); + $layer->setfilter($filtro); + } + corrigeLayerPath($layer, $mapa); + } + $mapa->save($tmpfname); + erroCriacao(); +} + +/* + * Redireciona para o HTML definido em $interface, abrindo o mapa + */ +function abreInterface($interface, $caminho) +{ + $nomeInterface = explode(".", basename($interface)); + if (count(explode(".php", $interface)) > 1) { + if (file_exists($caminho . "interface/" . $interface)) { + include_once ($caminho . "interface/" . $interface); + } + exit(); + } else { + if (file_exists($caminho . "interface/" . $interface)) { + $urln = $caminho . "interface/" . $interface . "?&" . session_id(); + } else { + $urln = $interface . "?&" . session_id(); + } + if (! headers_sent()) { + header("Location:" . $urln); + } else { + echo ""; + } + } +} + +/* + * Desliga os temas definidos na variável $desligar + */ +function desligaTemasIniciais() +{ + global $desligar, $mapn; + $layers = str_replace(',', " ", $desligar); + $lista = explode(" ", $layers); + foreach ($lista as $l) { + if ($l == "") { + continue; + } + if (@$mapn->getLayerByName($l)) { + $layern = $mapn->getLayerByName($l); + $layern->set("status", MS_OFF); + } + $grupos = $mapn->getLayersIndexByGroup($l); + if (count($grupos) > 0) { + for ($i = 0; $i < count($grupos); ++ $i) { + $layern = $mapn->getLayer($grupos[$i]); + if (strtolower($layern->group) == strtolower($l)) { + $layern->set("status", MS_OFF); + } + } + } + } + erroCriacao(); +} + +/* + * Liga os temas definidos na variável $layers + */ +function ligaTemas() +{ + global $layers, $mapn; + if (isset($layers)) { + $layers = str_replace(',', " ", $layers); + $lista = explode(" ", $layers); + foreach ($lista as $l) { + if ($l == "") { + continue; + } + if (@$mapn->getLayerByName($l)) { + $layern = $mapn->getLayerByName($l); + $layern->set("status", MS_DEFAULT); + } + $grupos = $mapn->getLayersIndexByGroup($l); + if (count($grupos) > 0) { + for ($i = 0; $i < count($grupos); ++ $i) { + $layern = $mapn->getLayer($grupos[$i]); + if (strtolower($layern->group) == strtolower($l)) { + $layern->set("status", MS_DEFAULT); + } + } + } + } + } + erroCriacao(); +} + +/* + * Inclui os temas definidos na variável $temasa + * + * Os temas devem estar em i3geo/temas + */ +function incluiTemasIniciais() +{ + global $temasa, $mapn, $locaplic, $metaestatids, $layers; + if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { + $temasdir = $locaplic . "\\temas"; + } else { + $temasdir = $locaplic . "/temas"; + } + if (! isset($temasa)) { + $temasa = ""; + } + $temasa = str_replace(',', " ", $temasa); + $alayers = explode(" ", $temasa); + if (isset($metaestatids)) { + // localhost/i3geo/ms_criamapa.php?metaestatids=25,12&layers=25 + include_once (dirname(__FILE__) . "/classesphp/classe_metaestatinfo.php"); + $metaestatids = str_replace(',', " ", $metaestatids); + $metaestatids = explode(" ", $metaestatids); + $metaestatidsligados = $layers; + $metaestatidsligados = str_replace(',', " ", $metaestatidsligados); + $metaestatidsligados = explode(" ", $metaestatidsligados); + foreach ($metaestatids as $metaestatid) { + // $_pg["filtro"] = str_replace('"', "'", $_pg["filtro"]); + $m = new MetaestatInfo(); + + $parametros = $m->listaParametro($metaestatid, "", "", true, true); + // id_parametro_medida,coluna + $filtroPar = array(); + $tituloPar = array(); + foreach ($parametros as $parametro) { + $valoresparametro = $m->valorUnicoMedidaVariavel($metaestatid, $parametro["coluna"]); + //var_dump($valoresparametro); + //exit(); + $valormaior = $valoresparametro[count($valoresparametro) - 1]; + $filtroPar[] = " " . $parametro["coluna"] . "::text = '" . $valormaior[$parametro["coluna"]] . "' "; + $tituloPar[] = $parametro["coluna"] . ": " . $valormaior[$parametro["coluna"]]; + } + $dadosMedida = $m->listaMedidaVariavel("", $metaestatid); + // var_dump($dadosMedida);exit; + $tituloCamada = mb_convert_encoding($dadosMedida["nomemedida"],"ISO-8859-1",mb_detect_encoding($dadosMedida["nomemedida"])); + if(count($tituloPar)>0){ + $tituloCamada = $tituloCamada." (".implode(" ,",$tituloPar)." )"; + } + $mapfilemetaestat = $m->mapfileMedidaVariavel($metaestatid, implode(" AND ", $filtroPar), 0, "polygon", $tituloCamada, "", "", "", "", false, false); + // array(3) { ["mapfile"]=> string(52) "/tmp/ms_tmp/AAAAc20ad4d76fe97759aa27a0c99bff6710.map" ["layer"]=> string(36) "AAAAc20ad4d76fe97759aa27a0c99bff6710" ["titulolayer"]=> string(0) "" } + // var_dump ($mapfilemetaestat); + // exit; + array_push($alayers, $mapfilemetaestat["mapfile"]); + + if (in_array($metaestatid, $metaestatidsligados)) { + $maptemp = @ms_newMapObj($mapfilemetaestat["mapfile"]); + $maptemp->getlayerbyname($mapfilemetaestat["layer"])->set("status", MS_DEFAULT); + $maptemp->save($mapfilemetaestat["mapfile"]); + } + } + } + + $existeraster = false; + foreach ($alayers as $arqt) { + $arqtemp = ""; + $arqt = trim($arqt); + if ($arqt == "") { + continue; + } + $extensao = ".map"; + if (file_exists($arqt)) { + $arqtemp = $arqt; + } + if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($locaplic . "\\aplicmap\\" . $arqt . $extensao))) { + $arqtemp = $locaplic . "\\aplicmap\\" . $arqt . $extensao; + } elseif (file_exists($locaplic . "/aplicmap/" . $arqt . $extensao)) { + $arqtemp = $locaplic . "/aplicmap/" . $arqt . $extensao; + } + if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($temasdir . "\\" . $arqt . $extensao))) { + $arqtemp = $temasdir . "\\" . $arqt . $extensao; + } elseif (file_exists($temasdir . "/" . $arqt . $extensao)) { + $arqtemp = $temasdir . "/" . $arqt . $extensao; + } + if ($arqtemp == "") { + // echo "
Impossível acessar tema $arqtemp"; + } else { + if ($extensao == ".map" && ! @ms_newMapObj($arqtemp)) { + echo "
Problemas com a camada $arqtemp
"; + } else { + $maptemp = @ms_newMapObj($arqtemp); + for ($i = 0; $i < ($maptemp->numlayers); ++ $i) { + // error_reporting(0); + $layern = $maptemp->getLayer($i); + if ($layern->type == MS_LAYER_RASTER) { + $existeraster = true; + } + if ($layern->name == "estadosl") { + $layern->set("data", $locaplic . "/aplicmap/dados/estados.shp"); + } + $layern->setmetadata("nomeoriginal", $layern->name); + $nNome = str_replace(".map", "", basename($arqtemp)); + $layern->setmetadata("arquivotemaoriginal", $nNome); + autoClasses($layern, $mapn); + // + // necessário para não alterar a extensão do mapa por esse parâmetro + // + $layern->setmetadata("aplicaextensao", ""); + // cria e aplica sld se for wms e existirem classes + if ($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata("wms_sld_body") == "") { + $tipotemp = $layern->type; + $statustemp = $layern->status; + $tiporep = $layern->getmetadata("tipooriginal"); + $layern->set("type", MS_LAYER_POLYGON); + if ($tiporep == "linear") { + $layern->set("type", MS_LAYER_LINE); + } + if ($tiporep == "pontual") { + $layern->set("type", MS_LAYER_POINT); + } + $layern->set("status", MS_DEFAULT); + $sld = $layern->generateSLD(); + if ($sld != "") + $layern->setmetadata("wms_sld_body", str_replace('"', "'", $sld)); + $layern->set("type", $tipotemp); + $layern->set("status", $statustemp); + } + cloneInlineSymbol($layern, $maptemp, $mapn); + $layerAdicionado = ms_newLayerObj($mapn, $layern); + // echo $layern->name; + corrigeLayerGrid($layern, $layerAdicionado); + } + } + } + } + erroCriacao(); +} + +/* + * Cria os arquivos vazios index.htm e index.html nos diretorios temporários + */ +function criaIndex($dir_tmp, $diretorios) +{ + if (! file_exists($dir_tmp . "/index.htm")) { + $f = fopen($dir_tmp . "/index.htm", "x"); + fclose($f); + $f = fopen($dir_tmp . "/index.html", "x"); + fclose($f); + $f = fopen($dir_tmp . "/" . $diretorios[1] . "/index.html", "x"); + fclose($f); + $f = fopen($dir_tmp . "/" . $diretorios[1] . "/index.htm", "x"); + fclose($f); + $f = fopen($dir_tmp . "/" . $diretorios[2] . "/index.html", "x"); + fclose($f); + $f = fopen($dir_tmp . "/" . $diretorios[2] . "/index.htm", "x"); + fclose($f); + } + if (! file_exists($dir_tmp . "/index.htm")) { + echo "Erro. Não foi possível gravar no diretório temporário"; + exit(); + } +} + +/* + * Mostra a mensagem de aguarde + */ +function mostraAguarde() +{ + global $interface, $mensagemInicia, $tituloInstituicao; + if (! isset($interface)) { + echo ""; + echo ''; + echo "" . $tituloInstituicao . ""; + echo '
'; + echo '

' . $mensagemInicia . '
Aguarde...preparando o mapa

'; + echo ''; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
"; + echo ''; + } +} + +/* + * Insere elementos no mapa a partir de uma string definida em wkt + */ +function insereWKTUrl() +{ + global $tamanhosimbolo, $simbolo, $corsimbolo, $wkt, $nometemawkt, $dir_tmp, $imgdir, $tmpfname, $locaplic; + include_once "pacotes/phpxbase/api_conversion.php"; + if (! isset($nometemapontos)) { + $nometemapontos = "WKT"; + } + if ($nometemapontos == "") { + $nometemapontos = "WKT"; + } + // + // cria o shape file + // + $shape = ms_shapeObjFromWkt($wkt); + $tipol = $shape->type; + if ($tipol == 0) { + $tipol = 3; + } + $nomeshp = $dir_tmp . "/" . $imgdir . "/wkts"; + // cria o dbf + $def = array(); + $items = array( + "COORD" + ); + foreach ($items as $ni) { + $def[] = array( + $ni, + "C", + "254" + ); + } + if (! function_exists(dbase_create)) { + xbase_create($nomeshp . ".dbf", $def); + } else { + dbase_create($nomeshp . ".dbf", $def); + } + $dbname = $nomeshp . ".dbf"; + $db = xbase_open($dbname, 2); + if ($tipol == 1) { + $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_ARC); + } + if ($tipol == 3) { + $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_MULTIPOINT); + } + if ($tipol == 2) { + $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); + } + $reg[] = ""; + $novoshpf->addShape($shape); + xbase_add_record($db, $reg); + $novoshpf->free(); + xbase_close($db); + // adiciona o layer + $mapa = ms_newMapObj($tmpfname); + $layer = ms_newLayerObj($mapa); + $layer->set("name", "wktins"); + $layer->set("data", $nomeshp . ".shp"); + $layer->setmetadata("DOWNLOAD", "sim"); + $layer->setmetadata("temalocal", "sim"); + $layer->setmetadata("tema", $nometemawkt); + $layer->setmetadata("classe", "sim"); + $layer->set("type", $shape->type); + $layer->set("status", MS_DEFAULT); + $classe = ms_newClassObj($layer); + $classe->set("name", " "); + $estilo = ms_newStyleObj($classe); + if ($shape->type == 0) { + if (! isset($simbolo)) + $estilo->set("symbolname", "ponto"); + if (! isset($tamanhosimbolo)) + $estilo->set("size", 6); + } + if ($shape->type == 1) { + if (! isset($simbolo)) + $estilo->set("symbolname", "linha"); + if (! isset($tamanhosimbolo)) + $estilo->set("size", 3); + } + if ($shape->type == 2) { + $layer->set("opacity", "50"); + } + + $cor = $estilo->color; + if (! isset($corsimbolo)) { + $corsimbolo = "255,0,0"; + } + $corsimbolo = str_replace(" ", ",", $corsimbolo); + $corsimbolo = explode(",", $corsimbolo); + $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); + + $salvo = $mapa->save($tmpfname); + erroCriacao(); +} + +/* + * Insere um tema do tipo ponto + * + */ +function inserePontosUrl() +{ + global $pontos, $tamanhosimbolo, $simbolo, $corsimbolo, $nometemapontos, $dir_tmp, $imgdir, $tmpfname, $locaplic; + include_once "pacotes/phpxbase/api_conversion.php"; + if (! isset($nometemapontos)) { + $nometemapontos = "Pontos"; + } + if ($nometemapontos == "") { + $nometemapontos = "Pontos"; + } + // + // cria o shape file + // + $tipol = MS_SHP_POINT; + $nomeshp = $dir_tmp . "/" . $imgdir . "/" . nomeRandomico(); + // cria o dbf + $def = array(); + $items = array( + "COORD" + ); + foreach ($items as $ni) { + $def[] = array( + $ni, + "C", + "254" + ); + } + if (! function_exists(dbase_create)) { + xbase_create($nomeshp . ".dbf", $def); + } else { + dbase_create($nomeshp . ".dbf", $def); + } + $dbname = $nomeshp . ".dbf"; + $db = xbase_open($dbname, 2); + $novoshpf = ms_newShapefileObj($nomeshp, $tipol); + $pontos = explode(" ", trim($pontos)); + if (count($pontos) == 1) { + $pontos = explode(",", trim($pontos[0])); + } + foreach ($pontos as $p) { + if (is_numeric($p)) { + $pontosn[] = $p; + } + } + $pontos = $pontosn; + for ($ci = 0; $ci < count($pontos); $ci = $ci + 2) { + $reg = array(); + $reg[] = $pontos[$ci] . " " . $pontos[$ci + 1]; + $shape = ms_newShapeObj($tipol); + $linha = ms_newLineObj(); + $linha->addXY($pontos[$ci], $pontos[$ci + 1]); + $shape->add($linha); + $novoshpf->addShape($shape); + xbase_add_record($db, $reg); + } + $novoshpf->free(); + xbase_close($db); + // adiciona o layer + $mapa = ms_newMapObj($tmpfname); + $layer = ms_newLayerObj($mapa); + $layer->set("name", "pontoins"); + $layer->set("data", $nomeshp . ".shp"); + $layer->setmetadata("DOWNLOAD", "sim"); + $layer->setmetadata("tema", $nometemapontos); + $layer->setmetadata("classe", "sim"); + $layer->setmetadata("temalocal", "sim"); + $layer->setmetadata("ATLAS", "nao"); + $layer->set("type", MS_LAYER_POINT); + $layer->set("status", MS_DEFAULT); + $classe = ms_newClassObj($layer); + $classe->set("name", " "); + $estilo = ms_newStyleObj($classe); + + if (! isset($simbolo)) { + $simbolo = "ponto"; + } + $estilo->set("symbolname", $simbolo); + if (! isset($tamanhosimbolo)) { + $tamanhosimbolo = 6; + } + $estilo->set("size", $tamanhosimbolo); + $cor = $estilo->color; + if (! isset($corsimbolo)) { + $corsimbolo = "255,0,0"; + } + $corsimbolo = str_replace(" ", ",", $corsimbolo); + $corsimbolo = explode(",", $corsimbolo); + $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); + + $salvo = $mapa->save($tmpfname); + erroCriacao(); +} + +/* + * Insere um tema do tipo linear + * + * As linhas devem ter os pontos separados por espaços e cada linha separada por vírgula + * + */ +function insereLinhasUrl() +{ + global $tamanhosimbolo, $simbolo, $corsimbolo, $linhas, $nometemalinhas, $dir_tmp, $imgdir, $tmpfname, $locaplic; + include_once "pacotes/phpxbase/api_conversion.php"; + if (! isset($nometemalinhas)) { + $nometemalinhas = "Linhas"; + } + if ($nometemalinhas == "") { + $nometemalinhas = "Linhas"; + } + // + // cria o shape file + // + $tipol = MS_SHP_ARC; + $nomeshp = $dir_tmp . "/" . $imgdir . "/" . nomeRandomico(); + // cria o dbf + $def = array(); + $items = array( + "COORD" + ); + foreach ($items as $ni) { + $def[] = array( + $ni, + "C", + "254" + ); + } + if (! function_exists(dbase_create)) { + xbase_create($nomeshp . ".dbf", $def); + } else { + dbase_create($nomeshp . ".dbf", $def); + } + $dbname = $nomeshp . ".dbf"; + $db = xbase_open($dbname, 2); + $novoshpf = ms_newShapefileObj($nomeshp, $tipol); + $linhas = explode(",", trim($linhas)); + $pontosLinhas = array(); // guarda os pontos de cada linha em arrays + foreach ($linhas as $l) { + $tempPTs = explode(" ", trim($l)); + $temp = array(); + foreach ($tempPTs as $p) { + if (is_numeric($p)) { + $temp[] = $p; + } + } + $pontosLinhas[] = $temp; + } + foreach ($pontosLinhas as $ptsl) { + $linhas = $ptsl; + $shape = ms_newShapeObj(MS_SHAPE_LINE); + $linha = ms_newLineObj(); + $reg = array(); + $reg[] = implode(",", $ptsl); + for ($ci = 0; $ci < count($linhas); $ci = $ci + 2) { + $linha->addXY($linhas[$ci], $linhas[$ci + 1]); + } + $shape->add($linha); + $novoshpf->addShape($shape); + xbase_add_record($db, $reg); + } + $novoshpf->free(); + xbase_close($db); + // adiciona o layer + $mapa = ms_newMapObj($tmpfname); + $layer = ms_newLayerObj($mapa); + $layer->set("name", "linhains"); + $layer->set("data", $nomeshp . ".shp"); + $layer->setmetadata("DOWNLOAD", "sim"); + $layer->setmetadata("temalocal", "sim"); + $layer->setmetadata("tema", $nometemalinhas); + $layer->setmetadata("classe", "sim"); + $layer->setmetadata("ATLAS", "nao"); + $layer->set("type", MS_LAYER_LINE); + $layer->set("status", MS_DEFAULT); + $classe = ms_newClassObj($layer); + $classe->set("name", " "); + $estilo = ms_newStyleObj($classe); + + if (isset($simbolo)) { + $simbolo = "linha"; + $estilo->set("symbolname", $simbolo); + } + if (! isset($tamanhosimbolo)) { + $tamanhosimbolo = 4; + } + $estilo->set("width", $tamanhosimbolo); + $cor = $estilo->color; + if (! isset($corsimbolo)) { + $corsimbolo = "255,0,0"; + } + $corsimbolo = str_replace(" ", ",", $corsimbolo); + $corsimbolo = explode(",", $corsimbolo); + $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); + + $salvo = $mapa->save($tmpfname); + erroCriacao(); +} + +/* + * Insere um tema poligonal. + * + * Os polígonos devem ter os pontos separados por espaços e cada polígono separado por vírgula + */ +function inserePoligonosUrl() +{ + global $tamanhosimbolo, $simbolo, $corsimbolo, $poligonos, $nometemapoligonos, $dir_tmp, $imgdir, $tmpfname, $locaplic; + include_once "pacotes/phpxbase/api_conversion.php"; + if (! isset($nometemapoligonos)) { + $nometemapoligonos = "Poligonos"; + } + if ($nometemapoligonos == "") { + $nometemapoligonos = "Poligonos"; + } + // + // cria o shape file + // + $tipol = MS_SHP_POLYGON; + $nomeshp = $dir_tmp . "/" . $imgdir . "/" . nomeRandomico(); + // cria o dbf + $def = array(); + $items = array( + "COORD" + ); + foreach ($items as $ni) { + $def[] = array( + $ni, + "C", + "254" + ); + } + if (! function_exists(dbase_create)) { + xbase_create($nomeshp . ".dbf", $def); + } else { + dbase_create($nomeshp . ".dbf", $def); + } + $dbname = $nomeshp . ".dbf"; + $db = xbase_open($dbname, 2); + $novoshpf = ms_newShapefileObj($nomeshp, $tipol); + $linhas = explode(",", trim($poligonos)); + $pontosLinhas = array(); // guarda os pontos de cada linha em arrays + foreach ($linhas as $l) { + $tempPTs = explode(" ", trim($l)); + $temp = array(); + foreach ($tempPTs as $p) + if (is_numeric($p)) { + $temp[] = $p; + } + $pontosLinhas[] = $temp; + } + foreach ($pontosLinhas as $ptsl) { + $linhas = $ptsl; + $shape = ms_newShapeObj(MS_SHAPE_POLYGON); + $linha = ms_newLineObj(); + $reg = array(); + $reg[] = ""; + for ($ci = 0; $ci < count($linhas); $ci = $ci + 2) { + $linha->addXY($linhas[$ci], $linhas[$ci + 1]); + } + $shape->add($linha); + $novoshpf->addShape($shape); + xbase_add_record($db, $reg); + } + $novoshpf->free(); + xbase_close($db); + // adiciona o layer + $mapa = ms_newMapObj($tmpfname); + $layer = ms_newLayerObj($mapa); + $layer->set("name", "linhains"); + $layer->set("data", $nomeshp . ".shp"); + $layer->setmetadata("DOWNLOAD", "sim"); + $layer->setmetadata("temalocal", "sim"); + $layer->setmetadata("tema", $nometemapoligonos); + $layer->setmetadata("classe", "sim"); + $layer->setmetadata("ATLAS", "nao"); + $layer->set("type", MS_LAYER_POLYGON); + $layer->set("opacity", "50"); + $layer->set("status", MS_DEFAULT); + $classe = ms_newClassObj($layer); + $classe->set("name", " "); + $estilo = ms_newStyleObj($classe); + + $cor = $estilo->color; + if (! isset($corsimbolo)) { + $corsimbolo = "255,0,0"; + } + $corsimbolo = str_replace(" ", ",", $corsimbolo); + $corsimbolo = explode(",", $corsimbolo); + $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); + + $salvo = $mapa->save($tmpfname); + erroCriacao(); +} + +/* + * Inclui no mapa um tema do tipo WMS + */ +function incluiTemaWms() +{ + global $nome_wms, $url_wms, $layer_wms, $style_wms, $srs_wms, $image_wms, $versao_wms, $tmpfname, $locaplic; + include_once ($locaplic . "/classesphp/classe_mapa.php"); + if (! $nome_wms) { + $nome = $layer_wms . " " . $style_wms; + } else + $nome = $nome_wms; + $m = new Mapa($tmpfname); + $m->adicionatemawms($layer_wms, $url_wms, $style_wms, $srs_wms, $image_wms, $locaplic, "", $versao_wms, $nome, "", "", "", "", "nao", "text/plain", ""); + $salvo = $m->salva($tmpfname); + // echo $tmpfname;exit; + erroCriacao(); +} + +/* + * Projeto gvsig + */ +function incluiMapaGvsig($gvsiggvp, $gvsigview = "") +{} + +/* + * Captura e mostra os erros de processamento do mapserver + */ +function erroCriacao() +{ + $error = ms_GetErrorObj(); + while ($error && $error->code != MS_NOERR) { + printf("
Error in %s: %s
\n", $error->routine, $error->message); + $error = $error->next(); + } + ms_ResetErrorList(); +} + +/* + * Cria os diretórios temporários para a aplicação. + * + * Parametro: + * + * $dir_tmp {string} - Diretório temporário (no servidor) utilizado pelo mapserver. + * + * $cachedir {string} - Diretório de cache temporário definido no ms_configura.php + * + * Retorno: + * + * {boleano} + */ +function criaDirMapa($dir_tmp, $cachedir = "") +{ + if (empty($dir_tmp)) { + return false; + } + if (! file_exists($dir_tmp)) { + @mkdir($dir_tmp, 0744); + } + if (file_exists($dir_tmp)) { + foreach (glob($dir_tmp . '/{,.}*.php', GLOB_BRACE) as $f) { + unlink($f); + } + $tmpdirname = nomeRandomico(); + $crdir = @mkdir($dir_tmp . "/" . $tmpdirname, 0744); + chmod($dir_tmp . "/" . $tmpdirname, 0744); + $crdiri = @mkdir($dir_tmp . "/img" . $tmpdirname, 0744); + chmod($dir_tmp . "/img" . $tmpdirname, 0744); + $mapfile = $dir_tmp . "/" . $tmpdirname . "/" . $tmpdirname . ".map"; + $tmpimgname = "img" . $tmpdirname; + if (! file_exists($dir_tmp . "/comum")) { + @mkdir($dir_tmp . "/comum", 0744); + } + if (! file_exists($dir_tmp . "/saiku-datasources")) { + // utilizado para armazenar os arquivos de fonte de dados do SAIKU + @mkdir($dir_tmp . "/saiku-datasources", 0744); + chmod($dir_tmp . "/saiku-datasources", 0744); + } + // + if ($cachedir == "") { + if (! file_exists($dir_tmp . "/cache")) { + @mkdir($dir_tmp . "/cache", 0744); + chmod($dir_tmp . "/cache", 0744); + @mkdir($dir_tmp . "/cache/googlemaps", 0744); + chmod($dir_tmp . "/cache/googlemaps", 0744); + } + } else { + if (! file_exists($cachedir)) { + @mkdir($cachedir, 0744); + chmod($cachedir, 0744); + @mkdir($cachedir . "/googlemaps", 0744); + chmod($cachedir . "/googlemaps", 0744); + } + } + if (file_exists($dir_tmp . "/" . $tmpdirname)) { + return array( + $mapfile, + $tmpdirname, + $tmpimgname + ); + } else { + return false; + } + } else { + return false; + } +} +?> \ No newline at end of file -- libgit2 0.21.2