From c8e1b1b3a1ec128aa8c8e3093061aa56c3ab6190 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 19 Feb 2016 17:04:09 -0200 Subject: [PATCH] Correção na geração de serviços kml, kmz e datadownload --- admin/admin.db | Bin 332800 -> 0 bytes classesphp/mapa_controle.php | 2 +- ogc.php | 24 +++++++++++++++++++++--- pacotes/kmlmapserver/classes/layerserver.class.php | 56 +++++++++++++++++++++++++++++++++----------------------- 4 files changed, 55 insertions(+), 27 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index daa5f41..b37dc87 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 0e98de1..50fe9da 100755 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -119,7 +119,7 @@ $interfaceTemp = $interface; //TEMA2SLD e usado por datadownload.htm //PEGAMAPAS e utilizado em varias funcoes // -if ($funcao != "listainterfaces" && $funcao != "pegalistadetemas" && $funcao != "pegalistadeSubgrupos" && $funcao != "procurartemasestrela" && $funcao != "pegalistadegrupos" && $funcao != "pegalistademenus" && $funcao != "criaMapa" && strtoupper($funcao) != "TEMA2SLD" && strtoupper($funcao) != "PEGAMAPAS"){ +if ($funcao != "download3" && $funcao != "listainterfaces" && $funcao != "pegalistadetemas" && $funcao != "pegalistadeSubgrupos" && $funcao != "procurartemasestrela" && $funcao != "pegalistadegrupos" && $funcao != "pegalistademenus" && $funcao != "criaMapa" && strtoupper($funcao) != "TEMA2SLD" && strtoupper($funcao) != "PEGAMAPAS"){ session_name("i3GeoPHP"); if (isset($g_sid) && $g_sid != "") { diff --git a/ogc.php b/ogc.php index ac61929..85291a2 100755 --- a/ogc.php +++ b/ogc.php @@ -175,10 +175,10 @@ if(!file_exists($tema)){ $layers = $tema; //ajusta o OUTPUTFORMAT -if(strpos(strtolower($OUTPUTFORMAT),"kml") === true || strpos(strtolower($OUTPUTFORMAT),"kml") === 0){ +if(strpos(strtolower($OUTPUTFORMAT),"kml") !== false){ $OUTPUTFORMAT = "kml"; } -if(strpos(strtolower($OUTPUTFORMAT),"kmz") === true || strpos(strtolower($OUTPUTFORMAT),"kmz") === 0){ +if(strpos(strtolower($OUTPUTFORMAT),"kmz") !== false){ $OUTPUTFORMAT = "kmz"; } // @@ -191,11 +191,29 @@ if(!empty($OUTPUTFORMAT)){ //para o caso da requisicao kmz //kmz nao funciona diretamente com mapserver // -if(strtolower($OUTPUTFORMAT) == "xkml" || strtolower($OUTPUTFORMAT) == "kmz"){ +if(strtolower($OUTPUTFORMAT) == "kmz"){ $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; header("Location:".$urln); exit; } +if(strtolower($OUTPUTFORMAT) == "kml" && $ogrOutput == false){ + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; + header("Location:".$urln); + exit; +} +// +//caso seja uma requisição WMS com format +// +if(strpos(strtolower($format),"kml") !== false){ + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema; + header("Location:".$urln); + exit; +} +if(strpos(strtolower($format),"kmz") !== false){ + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema; + header("Location:".$urln); + exit; +} // //usa o epsg correto ao inves do apelido inventado pelo Google // diff --git a/pacotes/kmlmapserver/classes/layerserver.class.php b/pacotes/kmlmapserver/classes/layerserver.class.php index f93d6f4..9245d28 100755 --- a/pacotes/kmlmapserver/classes/layerserver.class.php +++ b/pacotes/kmlmapserver/classes/layerserver.class.php @@ -143,32 +143,38 @@ class LayerServer { function run(){ // Check cache if(ENABLE_CACHE){ - $cache_file = $this->get_cache_file_name(); - if(file_exists($cache_file)){ - $this->send_header(); - readfile($cache_file); - exit; - } + $cache_file = $this->get_cache_file_name(); + if(file_exists($cache_file)){ + $this->send_header(); + readfile($cache_file); + exit; + } } // If not layer are requested, send all as networklinks if(!$this->typename){ - $this->_networklink = true; - $this->typename = $this->get_layer_list(); + $this->_networklink = true; + $this->typename = $this->get_layer_list(); } else { - $this->_networklink = false; + $this->_networklink = false; } - //ajusta a legenda - $numlayers = $this->map_object->numlayers; - for ($i=0;$i < $numlayers;++$i){ - $layer = $this->map_object->getlayer($i); - if (($layer->data != "") && (strtoupper($layer->getmetadata("escondido")) != "SIM") && (strtoupper($layer->getmetadata("tema")) != "NAO")){ - if ($layer->numclasses > 0){ - $classe = $layer->getclass(0); - if (($classe->name == "") || ($classe->name == " ")){ - $classe->set("name",$layer->getmetadata("tema")); - } - //corrige o titulo da legenda - if($layer->type != 3 && $layer->type != 4){ + if($this->_networklink == false){ + //desliga todos os layers + for($i = 0; $i < $this->map_object->numlayers; $i++){ + $l = $this->map_object->getLayer($i); + $l->set("status",MS_OFF); + } + //ajusta a legenda + $nomesl = explode(',', $this->typename); + foreach ($nomesl as $nomel){ + $layer = $this->map_object->getlayerbyname($nomel); + if($layer){ + $layer->set("status",MS_DEFAULT); + if ($layer->numclasses > 0){ + $classe = $layer->getclass(0); + if (($classe->name == "") || ($classe->name == " ")){ + $classe->set("name",$layer->getmetadata("tema")); + } + //corrige o titulo da legenda $nclass = $layer->numclasses; for($j=0;$j<$nclass;$j++){ $classe = $layer->getclass($j); @@ -193,8 +199,12 @@ class LayerServer { . " " . PHP_EOL . " " . PHP_EOL . " " . PHP_EOL; - - $this->_xml = new SimpleXMLElement(''.$legenda.''); + if($this->_networklink == false){ + $this->_xml = new SimpleXMLElement(''.$legenda.''); + } + else{ + $this->_xml = new SimpleXMLElement(''); + } // Prepare projection $this->in_proj = ms_newProjectionObj($this->map_object->getProjection()); // Set projection to GOOGLE earth's projection -- libgit2 0.21.2