Commit 824c374e13c37e2b556bce5ca31baa98a308a0bb
1 parent
2711d9d8
Exists in
master
and in
7 other branches
Complementação da função de obtenção das colunas de atributos de um tema permitindo o uso de WMS
Showing
5 changed files
with
80 additions
and
16 deletions
Show diff stats
admin/admin.db
No preview for this file type
classesphp/classe_atributos.php
... | ... | @@ -218,7 +218,7 @@ Lista os itens de um tema. |
218 | 218 | //pega o nome correto do tema |
219 | 219 | $nometmp = pegaNome($layer,"UTF-8"); |
220 | 220 | $nomestemas[] = $nometmp; |
221 | - if ($layer->data != "") | |
221 | + if($layer->data != "" || $layer->connectiontype == 7) | |
222 | 222 | { |
223 | 223 | $items = pegaItens($layer,$this->mapa); |
224 | 224 | foreach ($items as $item) | ... | ... |
classesphp/classe_legenda.php
... | ... | @@ -164,7 +164,30 @@ Salva o mapfile atual |
164 | 164 | function salva() |
165 | 165 | { |
166 | 166 | if (connection_aborted()){exit();} |
167 | - $this->mapa->save($this->arquivo); | |
167 | + $this->recalculaSLD(); | |
168 | + $this->mapa->save($this->arquivo); | |
169 | + } | |
170 | +/* | |
171 | +function: recalculaSLD | |
172 | + | |
173 | +Constrói o SLD que é aplicado ao metadata wms_sld_body. O SLD resultante é baseado nas definições das classes existentes no layer | |
174 | +*/ | |
175 | + function recalculaSLD(){ | |
176 | + if($this->layer->classitem != "" && $this->layer->connectiontype == 7 && $this->layer->numclasses > 0){ | |
177 | + $tipotemp = $this->layer->type; | |
178 | + $tiporep = $this->layer->getmetadata("tipooriginal"); | |
179 | + $this->layer->set("type",MS_LAYER_POLYGON); | |
180 | + if ($tiporep == "linear") | |
181 | + {$this->layer->set("type",MS_LAYER_LINE);} | |
182 | + if ($tiporep == "pontual") | |
183 | + {$this->layer->set("type",MS_LAYER_POINT);} | |
184 | + $this->layer->set("status",MS_DEFAULT); | |
185 | + $this->layer->setmetadata("wms_sld_body",""); | |
186 | + $sld = $this->layer->generateSLD(); | |
187 | + if($sld != "") | |
188 | + {$this->layer->setmetadata("wms_sld_body",str_replace('"',"'",$sld));} | |
189 | + $this->layer->set("type",$tipotemp); | |
190 | + } | |
168 | 191 | } |
169 | 192 | |
170 | 193 | /* |
... | ... | @@ -284,7 +307,23 @@ array |
284 | 307 | $c = $layer->connectiontype; |
285 | 308 | $s = $layer->getmetadata("wms_sld_url"); |
286 | 309 | $im = $layer->getmetadata("legendaimg"); |
287 | - if ($c == 7 || $im != "") | |
310 | + $nc = $layer->numclasses; | |
311 | + // | |
312 | + //se for wms e tiver classes define o tipo de layer para poder gerar a legenda corretamente | |
313 | + // | |
314 | + if($c == 7 && $nc > 0){ | |
315 | + $tipotemp = $layer->type; | |
316 | + $tiporep = $layer->getmetadata("tipooriginal"); | |
317 | + $layer->set("type",MS_LAYER_POLYGON); | |
318 | + if($tiporep == "linear") | |
319 | + {$layer->set("type",MS_LAYER_LINE);} | |
320 | + if ($tiporep == "pontual") | |
321 | + {$layer->set("type",MS_LAYER_POINT);} | |
322 | + } | |
323 | + // | |
324 | + //se for WMS e não tiver classes, tenta pegar a legenda via requisição WMS | |
325 | + // | |
326 | + if ($nc == 0 && ($c == 7 || $im != "")) | |
288 | 327 | { |
289 | 328 | if($c == 7){ |
290 | 329 | $con = $layer->connection; |
... | ... | @@ -303,7 +342,6 @@ array |
303 | 342 | } |
304 | 343 | else |
305 | 344 | { |
306 | - $nc = $layer->numclasses; | |
307 | 345 | for ($c = 0;$c < $nc;$c++) |
308 | 346 | { |
309 | 347 | $classe = $layer->getclass($c); | ... | ... |
classesphp/funcoes_gerais.php
... | ... | @@ -1345,17 +1345,43 @@ Retorno: |
1345 | 1345 | */ |
1346 | 1346 | function pegaItens($layer,$mapa="") |
1347 | 1347 | { |
1348 | - if($layer->type == MS_LAYER_RASTER && $mapa != ""){ | |
1349 | - $pt = ms_newPointObj(); | |
1350 | - $pt->setXY($mapa->extent->minx,$mapa->extent->miny); | |
1351 | - $layer->queryByPoint($pt,0,0); | |
1352 | - } | |
1353 | - $sopen = $layer->open(); | |
1354 | - if($sopen != MS_FAILURE) | |
1355 | - {$items = $layer->getItems();} | |
1356 | - else | |
1357 | - {$items = array();} | |
1358 | - $layer->close(); | |
1348 | + // | |
1349 | + //no caso de WMS ou WFS | |
1350 | + // | |
1351 | + | |
1352 | + if($layer->connectiontype == 7){ | |
1353 | + $url = $layer->connection; | |
1354 | + $temp = explode("?",$url); | |
1355 | + if(count($temp) == 1) | |
1356 | + {$url .= "?";} | |
1357 | + $url = $url."&SERVICE=wfs&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=".$layer->getmetadata("wms_name"); | |
1358 | + //$url = "http://ogi.state.ok.us/geoserver/wfs?VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=okcounties"; | |
1359 | + $xml = simplexml_load_file($url); | |
1360 | + $dom = new DOMDocument(); | |
1361 | + $dom->loadXML($xml->asxml()); | |
1362 | + $items = array(); | |
1363 | + $sequences = $dom->getElementsByTagName("sequence"); | |
1364 | + | |
1365 | + foreach ($sequences as $sq){ | |
1366 | + $services = $sq->getElementsByTagName("element"); | |
1367 | + foreach ($services as $s){ | |
1368 | + $items[] = $s->getAttribute("name"); | |
1369 | + } | |
1370 | + } | |
1371 | + } | |
1372 | + else{ | |
1373 | + if($layer->type == MS_LAYER_RASTER && $mapa != ""){ | |
1374 | + $pt = ms_newPointObj(); | |
1375 | + $pt->setXY($mapa->extent->minx,$mapa->extent->miny); | |
1376 | + $layer->queryByPoint($pt,0,0); | |
1377 | + } | |
1378 | + $sopen = $layer->open(); | |
1379 | + if($sopen != MS_FAILURE) | |
1380 | + {$items = $layer->getItems();} | |
1381 | + else | |
1382 | + {$items = array();} | |
1383 | + $layer->close(); | |
1384 | + } | |
1359 | 1385 | return $items; |
1360 | 1386 | } |
1361 | 1387 | /* | ... | ... |
ferramentas/legenda/index.js.php
... | ... | @@ -447,7 +447,7 @@ i3GEOF.legenda = { |
447 | 447 | {$i("i3GEOlegendaresultado").innerHTML = "<p style=color:red >Ocorreu um erro<br>";} |
448 | 448 | i3GEOF.legenda.aguarde.visibility = "hidden"; |
449 | 449 | } |
450 | - catch(e){alert("Erro: "+ e);i3GEOF.legenda.aguarde.visibility = "hidden";} | |
450 | + catch(e){alert("Não é possível editar a legenda desse tema");i3GEOF.legenda.aguarde.visibility = "hidden";} | |
451 | 451 | }, |
452 | 452 | aplicaColourRamp: function(){ |
453 | 453 | if($i("listaColourRamp").value != ""){ | ... | ... |