Commit c8e1b1b3a1ec128aa8c8e3093061aa56c3ab6190
1 parent
9283ba56
Exists in
master
and in
7 other branches
Correção na geração de serviços kml, kmz e datadownload
Showing
4 changed files
with
55 additions
and
27 deletions
Show diff stats
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 | { |
ogc.php
@@ -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 |