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,7 +218,7 @@ Lista os itens de um tema. | ||
218 | //pega o nome correto do tema | 218 | //pega o nome correto do tema |
219 | $nometmp = pegaNome($layer,"UTF-8"); | 219 | $nometmp = pegaNome($layer,"UTF-8"); |
220 | $nomestemas[] = $nometmp; | 220 | $nomestemas[] = $nometmp; |
221 | - if ($layer->data != "") | 221 | + if($layer->data != "" || $layer->connectiontype == 7) |
222 | { | 222 | { |
223 | $items = pegaItens($layer,$this->mapa); | 223 | $items = pegaItens($layer,$this->mapa); |
224 | foreach ($items as $item) | 224 | foreach ($items as $item) |
classesphp/classe_legenda.php
@@ -164,7 +164,30 @@ Salva o mapfile atual | @@ -164,7 +164,30 @@ Salva o mapfile atual | ||
164 | function salva() | 164 | function salva() |
165 | { | 165 | { |
166 | if (connection_aborted()){exit();} | 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,7 +307,23 @@ array | ||
284 | $c = $layer->connectiontype; | 307 | $c = $layer->connectiontype; |
285 | $s = $layer->getmetadata("wms_sld_url"); | 308 | $s = $layer->getmetadata("wms_sld_url"); |
286 | $im = $layer->getmetadata("legendaimg"); | 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 | if($c == 7){ | 328 | if($c == 7){ |
290 | $con = $layer->connection; | 329 | $con = $layer->connection; |
@@ -303,7 +342,6 @@ array | @@ -303,7 +342,6 @@ array | ||
303 | } | 342 | } |
304 | else | 343 | else |
305 | { | 344 | { |
306 | - $nc = $layer->numclasses; | ||
307 | for ($c = 0;$c < $nc;$c++) | 345 | for ($c = 0;$c < $nc;$c++) |
308 | { | 346 | { |
309 | $classe = $layer->getclass($c); | 347 | $classe = $layer->getclass($c); |
classesphp/funcoes_gerais.php
@@ -1345,17 +1345,43 @@ Retorno: | @@ -1345,17 +1345,43 @@ Retorno: | ||
1345 | */ | 1345 | */ |
1346 | function pegaItens($layer,$mapa="") | 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 | return $items; | 1385 | return $items; |
1360 | } | 1386 | } |
1361 | /* | 1387 | /* |
ferramentas/legenda/index.js.php
@@ -447,7 +447,7 @@ i3GEOF.legenda = { | @@ -447,7 +447,7 @@ i3GEOF.legenda = { | ||
447 | {$i("i3GEOlegendaresultado").innerHTML = "<p style=color:red >Ocorreu um erro<br>";} | 447 | {$i("i3GEOlegendaresultado").innerHTML = "<p style=color:red >Ocorreu um erro<br>";} |
448 | i3GEOF.legenda.aguarde.visibility = "hidden"; | 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 | aplicaColourRamp: function(){ | 452 | aplicaColourRamp: function(){ |
453 | if($i("listaColourRamp").value != ""){ | 453 | if($i("listaColourRamp").value != ""){ |