Commit c8e1b1b3a1ec128aa8c8e3093061aa56c3ab6190

Authored by Edmar Moretti
1 parent 9283ba56

Correção na geração de serviços kml, kmz e datadownload

admin/admin.db
No preview for this file type
classesphp/mapa_controle.php
@@ -119,7 +119,7 @@ $interfaceTemp = $interface; @@ -119,7 +119,7 @@ $interfaceTemp = $interface;
119 //TEMA2SLD e usado por datadownload.htm 119 //TEMA2SLD e usado por datadownload.htm
120 //PEGAMAPAS e utilizado em varias funcoes 120 //PEGAMAPAS e utilizado em varias funcoes
121 // 121 //
122 -if ($funcao != "listainterfaces" && $funcao != "pegalistadetemas" && $funcao != "pegalistadeSubgrupos" && $funcao != "procurartemasestrela" && $funcao != "pegalistadegrupos" && $funcao != "pegalistademenus" && $funcao != "criaMapa" && strtoupper($funcao) != "TEMA2SLD" && strtoupper($funcao) != "PEGAMAPAS"){ 122 +if ($funcao != "download3" && $funcao != "listainterfaces" && $funcao != "pegalistadetemas" && $funcao != "pegalistadeSubgrupos" && $funcao != "procurartemasestrela" && $funcao != "pegalistadegrupos" && $funcao != "pegalistademenus" && $funcao != "criaMapa" && strtoupper($funcao) != "TEMA2SLD" && strtoupper($funcao) != "PEGAMAPAS"){
123 session_name("i3GeoPHP"); 123 session_name("i3GeoPHP");
124 if (isset($g_sid) && $g_sid != "") 124 if (isset($g_sid) && $g_sid != "")
125 { 125 {
@@ -175,10 +175,10 @@ if(!file_exists($tema)){ @@ -175,10 +175,10 @@ if(!file_exists($tema)){
175 175
176 $layers = $tema; 176 $layers = $tema;
177 //ajusta o OUTPUTFORMAT 177 //ajusta o OUTPUTFORMAT
178 -if(strpos(strtolower($OUTPUTFORMAT),"kml") === true || strpos(strtolower($OUTPUTFORMAT),"kml") === 0){ 178 +if(strpos(strtolower($OUTPUTFORMAT),"kml") !== false){
179 $OUTPUTFORMAT = "kml"; 179 $OUTPUTFORMAT = "kml";
180 } 180 }
181 -if(strpos(strtolower($OUTPUTFORMAT),"kmz") === true || strpos(strtolower($OUTPUTFORMAT),"kmz") === 0){ 181 +if(strpos(strtolower($OUTPUTFORMAT),"kmz") !== false){
182 $OUTPUTFORMAT = "kmz"; 182 $OUTPUTFORMAT = "kmz";
183 } 183 }
184 // 184 //
@@ -191,11 +191,29 @@ if(!empty($OUTPUTFORMAT)){ @@ -191,11 +191,29 @@ if(!empty($OUTPUTFORMAT)){
191 //para o caso da requisicao kmz 191 //para o caso da requisicao kmz
192 //kmz nao funciona diretamente com mapserver 192 //kmz nao funciona diretamente com mapserver
193 // 193 //
194 -if(strtolower($OUTPUTFORMAT) == "xkml" || strtolower($OUTPUTFORMAT) == "kmz"){ 194 +if(strtolower($OUTPUTFORMAT) == "kmz"){
195 $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; 195 $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
196 header("Location:".$urln); 196 header("Location:".$urln);
197 exit; 197 exit;
198 } 198 }
  199 +if(strtolower($OUTPUTFORMAT) == "kml" && $ogrOutput == false){
  200 + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
  201 + header("Location:".$urln);
  202 + exit;
  203 +}
  204 +//
  205 +//caso seja uma requisição WMS com format
  206 +//
  207 +if(strpos(strtolower($format),"kml") !== false){
  208 + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema;
  209 + header("Location:".$urln);
  210 + exit;
  211 +}
  212 +if(strpos(strtolower($format),"kmz") !== false){
  213 + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema;
  214 + header("Location:".$urln);
  215 + exit;
  216 +}
199 // 217 //
200 //usa o epsg correto ao inves do apelido inventado pelo Google 218 //usa o epsg correto ao inves do apelido inventado pelo Google
201 // 219 //
pacotes/kmlmapserver/classes/layerserver.class.php
@@ -143,32 +143,38 @@ class LayerServer { @@ -143,32 +143,38 @@ class LayerServer {
143 function run(){ 143 function run(){
144 // Check cache 144 // Check cache
145 if(ENABLE_CACHE){ 145 if(ENABLE_CACHE){
146 - $cache_file = $this->get_cache_file_name();  
147 - if(file_exists($cache_file)){  
148 - $this->send_header();  
149 - readfile($cache_file);  
150 - exit;  
151 - } 146 + $cache_file = $this->get_cache_file_name();
  147 + if(file_exists($cache_file)){
  148 + $this->send_header();
  149 + readfile($cache_file);
  150 + exit;
  151 + }
152 } 152 }
153 // If not layer are requested, send all as networklinks 153 // If not layer are requested, send all as networklinks
154 if(!$this->typename){ 154 if(!$this->typename){
155 - $this->_networklink = true;  
156 - $this->typename = $this->get_layer_list(); 155 + $this->_networklink = true;
  156 + $this->typename = $this->get_layer_list();
157 } else { 157 } else {
158 - $this->_networklink = false; 158 + $this->_networklink = false;
159 } 159 }
160 - //ajusta a legenda  
161 - $numlayers = $this->map_object->numlayers;  
162 - for ($i=0;$i < $numlayers;++$i){  
163 - $layer = $this->map_object->getlayer($i);  
164 - if (($layer->data != "") && (strtoupper($layer->getmetadata("escondido")) != "SIM") && (strtoupper($layer->getmetadata("tema")) != "NAO")){  
165 - if ($layer->numclasses > 0){  
166 - $classe = $layer->getclass(0);  
167 - if (($classe->name == "") || ($classe->name == " ")){  
168 - $classe->set("name",$layer->getmetadata("tema"));  
169 - }  
170 - //corrige o titulo da legenda  
171 - if($layer->type != 3 && $layer->type != 4){ 160 + if($this->_networklink == false){
  161 + //desliga todos os layers
  162 + for($i = 0; $i < $this->map_object->numlayers; $i++){
  163 + $l = $this->map_object->getLayer($i);
  164 + $l->set("status",MS_OFF);
  165 + }
  166 + //ajusta a legenda
  167 + $nomesl = explode(',', $this->typename);
  168 + foreach ($nomesl as $nomel){
  169 + $layer = $this->map_object->getlayerbyname($nomel);
  170 + if($layer){
  171 + $layer->set("status",MS_DEFAULT);
  172 + if ($layer->numclasses > 0){
  173 + $classe = $layer->getclass(0);
  174 + if (($classe->name == "") || ($classe->name == " ")){
  175 + $classe->set("name",$layer->getmetadata("tema"));
  176 + }
  177 + //corrige o titulo da legenda
172 $nclass = $layer->numclasses; 178 $nclass = $layer->numclasses;
173 for($j=0;$j<$nclass;$j++){ 179 for($j=0;$j<$nclass;$j++){
174 $classe = $layer->getclass($j); 180 $classe = $layer->getclass($j);
@@ -193,8 +199,12 @@ class LayerServer { @@ -193,8 +199,12 @@ class LayerServer {
193 . " <screenXY x='0.01' y='0.14' xunits='fraction' yunits='fraction'/>" . PHP_EOL 199 . " <screenXY x='0.01' y='0.14' xunits='fraction' yunits='fraction'/>" . PHP_EOL
194 . " <size x='-1' y='-1' xunits='pixels' yunits='pixels'/>" . PHP_EOL 200 . " <size x='-1' y='-1' xunits='pixels' yunits='pixels'/>" . PHP_EOL
195 . " </ScreenOverlay>" . PHP_EOL; 201 . " </ScreenOverlay>" . PHP_EOL;
196 -  
197 - $this->_xml = new SimpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.0"><Document >'.$legenda.'</Document></kml>'); 202 + if($this->_networklink == false){
  203 + $this->_xml = new SimpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.0"><Document >'.$legenda.'</Document></kml>');
  204 + }
  205 + else{
  206 + $this->_xml = new SimpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.0"><Document ></Document></kml>');
  207 + }
198 // Prepare projection 208 // Prepare projection
199 $this->in_proj = ms_newProjectionObj($this->map_object->getProjection()); 209 $this->in_proj = ms_newProjectionObj($this->map_object->getProjection());
200 // Set projection to GOOGLE earth's projection 210 // Set projection to GOOGLE earth's projection