Commit a6982646bc3905e8cf4950de153c68b60860460e
1 parent
a4b4d748
Exists in
master
and in
7 other branches
Correção na função de identificação de atributos quando o tema em foco é um WMS.…
… Alguns WMS exigem a definição do parâmetro format na requisição getfeatureinfo, entretanto, quando format é definido na requisição, WMS gerados pelo Mapserver geram erros. O problema foi corrigido criticando-se o resultado da chamada getfeatureinfo.
Showing
6 changed files
with
55 additions
and
23 deletions
Show diff stats
classesphp/classe_atributos.php
@@ -710,6 +710,19 @@ function identificaQBP($tema,$x,$y,$map_file,$resolucao,$item,$tiporetorno="") | @@ -710,6 +710,19 @@ function identificaQBP($tema,$x,$y,$map_file,$resolucao,$item,$tiporetorno="") | ||
710 | $res .= "&Y=".round($ptimg->y); | 710 | $res .= "&Y=".round($ptimg->y); |
711 | $res .= "&WIDTH=".$mapa->width; | 711 | $res .= "&WIDTH=".$mapa->width; |
712 | $res .= "&HEIGHT=".$mapa->height; | 712 | $res .= "&HEIGHT=".$mapa->height; |
713 | + $formatoinfo = "text/plain"; | ||
714 | + $formatosinfo = $layer->getmetadata("formatosinfo"); | ||
715 | + if ($formatosinfo != "") | ||
716 | + { | ||
717 | + $formatosinfo = explode(",",$formatosinfo); | ||
718 | + if ($formatosinfo[0] != ""){$formatoinfo = $formatosinfo[0];} | ||
719 | + foreach ($formatosinfo as $f) | ||
720 | + { | ||
721 | + if(strtoupper($f) == "TEXT/PLAIN") | ||
722 | + {$formatoinfo = "text/plain";} | ||
723 | + } | ||
724 | + | ||
725 | + } | ||
713 | $srs = $layer->getmetadata("wms_srs"); | 726 | $srs = $layer->getmetadata("wms_srs"); |
714 | $srss = explode(" ",$srs); | 727 | $srss = explode(" ",$srs); |
715 | $srs = "EPSG:4326"; | 728 | $srs = "EPSG:4326"; |
@@ -719,23 +732,25 @@ function identificaQBP($tema,$x,$y,$map_file,$resolucao,$item,$tiporetorno="") | @@ -719,23 +732,25 @@ function identificaQBP($tema,$x,$y,$map_file,$resolucao,$item,$tiporetorno="") | ||
719 | {$srs = "EPSG:4291";} | 732 | {$srs = "EPSG:4291";} |
720 | } | 733 | } |
721 | $res .= "&SRS=".$srs; | 734 | $res .= "&SRS=".$srs; |
722 | - $res = file($res); | ||
723 | - $res = str_ireplace('<?xml version="1.0" encoding="UTF-8"?>',"",$res); | ||
724 | - $res = str_ireplace('<?xml version="1.0" encoding="ISO-8859-1"?>',"",$res); | ||
725 | - $res = str_ireplace("<?xml version='1.0' encoding='ISO-8859-1'?>","",$res); | ||
726 | - $res = str_ireplace('<?xml',"",$res); | ||
727 | - $res = str_ireplace("<","zzzzzzzzzz",$res); | ||
728 | - $res = str_ireplace(">","zzzzzzzzzz",$res); | ||
729 | - $resultado[] = $res; | 735 | + $resposta = file($res."&FORMAT=".$formatoinfo); |
736 | + $resposta = str_ireplace('<?xml version="1.0" encoding="UTF-8"?>',"",$resposta); | ||
737 | + $resposta = str_ireplace('<?xml version="1.0" encoding="ISO-8859-1"?>',"",$resposta); | ||
738 | + $resposta = str_ireplace("<?xml version='1.0' encoding='ISO-8859-1'?>","",$resposta); | ||
739 | + $resposta = str_ireplace('<?xml',"",$resposta); | ||
740 | + $resposta = str_ireplace("<","zzzzzzzzzz",$resposta); | ||
741 | + $resposta = str_ireplace(">","zzzzzzzzzz",$resposta); | ||
742 | + if (stristr(implode(" ",$resposta),"msWMSLoadGetMapParams")) | ||
743 | + { | ||
744 | + $resposta = file($res); | ||
745 | + $resposta = str_ireplace('<?xml version="1.0" encoding="UTF-8"?>',"",$resposta); | ||
746 | + $resposta = str_ireplace('<?xml version="1.0" encoding="ISO-8859-1"?>',"",$resposta); | ||
747 | + $resposta = str_ireplace("<?xml version='1.0' encoding='ISO-8859-1'?>","",$resposta); | ||
748 | + $resposta = str_ireplace('<?xml',"",$resposta); | ||
749 | + $resposta = str_ireplace("<","zzzzzzzzzz",$resposta); | ||
750 | + $resposta = str_ireplace(">","zzzzzzzzzz",$resposta); | ||
751 | + } | ||
752 | + $resultado[] = $resposta; | ||
730 | return $resultado; | 753 | return $resultado; |
731 | - $lines = file($res); | ||
732 | - $lines = str_ireplace("<html>","",$lines); | ||
733 | - $lines = str_ireplace("<body>","",$lines); | ||
734 | - $lines = str_ireplace("</html>","",$lines); | ||
735 | - $lines = str_ireplace("</body>","",$lines); | ||
736 | - $lines = str_ireplace("#","",$lines); | ||
737 | - $resultado[] = $lines; | ||
738 | - return $resultado; | ||
739 | } | 754 | } |
740 | if(($layer->connectiontype != MS_WMS) && ($layer->type == MS_LAYER_RASTER)) | 755 | if(($layer->connectiontype != MS_WMS) && ($layer->type == MS_LAYER_RASTER)) |
741 | { | 756 | { |
classesphp/classe_mapa.php
@@ -795,20 +795,18 @@ $imgdir - diretório temporário das imagens | @@ -795,20 +795,18 @@ $imgdir - diretório temporário das imagens | ||
795 | $imgurl - url do imgdir | 795 | $imgurl - url do imgdir |
796 | $tiporep - tipo de representação das feições do mapa | 796 | $tiporep - tipo de representação das feições do mapa |
797 | $suportasld - Suporta SLD sim|nao. | 797 | $suportasld - Suporta SLD sim|nao. |
798 | - | 798 | +$formatosinfo - lista de formatos da requisição de atributos para a função getfeatureinfo (default text/plain) |
799 | Include: | 799 | Include: |
800 | <wmswfs.php> | 800 | <wmswfs.php> |
801 | */ | 801 | */ |
802 | - function adicionatemawms($tema,$servico,$nome,$proj,$formato,$locaplic,$tipo,$versao,$nomecamada,$dir_tmp,$imgdir,$imgurl,$tiporep,$suportasld) | 802 | + function adicionatemawms($tema,$servico,$nome,$proj,$formato,$locaplic,$tipo,$versao,$nomecamada,$dir_tmp,$imgdir,$imgurl,$tiporep,$suportasld,$formatosinfo="text/plain") |
803 | { | 803 | { |
804 | require_once("wmswfs.php"); | 804 | require_once("wmswfs.php"); |
805 | //limpa selecao | 805 | //limpa selecao |
806 | if (file_exists(($this->arquivo)."qy")) | 806 | if (file_exists(($this->arquivo)."qy")) |
807 | {unlink (($this->arquivo)."qy");} | 807 | {unlink (($this->arquivo)."qy");} |
808 | - | ||
809 | $nmap = ms_newMapObj($locaplic."/aplicmap/novotema.map"); | 808 | $nmap = ms_newMapObj($locaplic."/aplicmap/novotema.map"); |
810 | $layer = $nmap->getlayerbyname("novotema"); | 809 | $layer = $nmap->getlayerbyname("novotema"); |
811 | - | ||
812 | $layer->set("name",$tema); | 810 | $layer->set("name",$tema); |
813 | $layer->set("status",MS_DEFAULT); | 811 | $layer->set("status",MS_DEFAULT); |
814 | $layer->setmetadata("tema",$nomecamada); | 812 | $layer->setmetadata("tema",$nomecamada); |
@@ -856,6 +854,7 @@ Include: | @@ -856,6 +854,7 @@ Include: | ||
856 | $layer->setmetadata("wms_name",$tema); | 854 | $layer->setmetadata("wms_name",$tema); |
857 | $layer->setmetadata("wms_server_version",$versao); | 855 | $layer->setmetadata("wms_server_version",$versao); |
858 | $layer->setmetadata("wms_formatlist",$formato); | 856 | $layer->setmetadata("wms_formatlist",$formato); |
857 | + $layer->setmetadata("formatosinfo",$formatosinfo); | ||
859 | $layer->setmetadata("wms_exceptions_format","application/vnd.ogc.se_xml"); | 858 | $layer->setmetadata("wms_exceptions_format","application/vnd.ogc.se_xml"); |
860 | $layer->setmetadata("wms_style",$nome); | 859 | $layer->setmetadata("wms_style",$nome); |
861 | $layer->setmetadata("wms_connectiontimeout","30"); | 860 | $layer->setmetadata("wms_connectiontimeout","30"); |
classesphp/mapa_controle.php
@@ -636,7 +636,7 @@ Include: | @@ -636,7 +636,7 @@ Include: | ||
636 | case "adicionatemawms": | 636 | case "adicionatemawms": |
637 | include("classe_mapa.php"); | 637 | include("classe_mapa.php"); |
638 | $m = new Mapa($map_file); | 638 | $m = new Mapa($map_file); |
639 | - $m->adicionatemawms($tema,$servico,$nome,$proj,$formato,$locaplic,$tipo,$versao,$nomecamada,$dir_tmp,$imgdir,$imgurl,$tiporep,$suportasld); | 639 | + $m->adicionatemawms($tema,$servico,$nome,$proj,$formato,$locaplic,$tipo,$versao,$nomecamada,$dir_tmp,$imgdir,$imgurl,$tiporep,$suportasld,$formatosinfo); |
640 | $teste = $m->mapa->draw(); | 640 | $teste = $m->mapa->draw(); |
641 | $retorno = "ok"; | 641 | $retorno = "ok"; |
642 | if ($teste != "") | 642 | if ($teste != "") |
classesphp/wmswfs.php
@@ -323,7 +323,8 @@ function temaswms() | @@ -323,7 +323,8 @@ function temaswms() | ||
323 | } | 323 | } |
324 | } | 324 | } |
325 | $retorna[] = "<br>Proj.:<input size=30 id=proj type=text class=digitar value='".implode(",",wms_srs($dom))."'/><br>"; | 325 | $retorna[] = "<br>Proj.:<input size=30 id=proj type=text class=digitar value='".implode(",",wms_srs($dom))."'/><br>"; |
326 | - $retorna[] = "<br>Formatos:<input size=30 id=formatos type=text class=digitar value='".implode(",",wms_formats($dom))."'/><br><br>"; | 326 | + $retorna[] = "<br>Formatos imagem:<input size=30 id=formatos type=text class=digitar value='".implode(",",wms_formats($dom))."'/><br><br>"; |
327 | + $retorna[] = "<br>Formatos info:<input size=30 id=formatosinfo type=text class=digitar value='".implode(",",wms_formatsinfo($dom))."'/><br><br>"; | ||
327 | $retorna[] = "<br>Versao:<input size=30 id=versao type=text class=digitar value='".(wms_version($dom))."'/><br><br>"; | 328 | $retorna[] = "<br>Versao:<input size=30 id=versao type=text class=digitar value='".(wms_version($dom))."'/><br><br>"; |
328 | $retorna[] = "<br>Suporta SLD:<input size=30 id=suportasld type=text class=digitar value='".$suporta."'/><br><br><br>"; | 329 | $retorna[] = "<br>Suporta SLD:<input size=30 id=suportasld type=text class=digitar value='".$suporta."'/><br><br><br>"; |
329 | $cp->set_data(implode($retorna)); | 330 | $cp->set_data(implode($retorna)); |
@@ -500,6 +501,23 @@ function wms_formats ( $dom ) | @@ -500,6 +501,23 @@ function wms_formats ( $dom ) | ||
500 | return $arr; | 501 | return $arr; |
501 | } | 502 | } |
502 | /* | 503 | /* |
504 | +function: wms_formatsinfo | ||
505 | + | ||
506 | +Retorna os formatos existentes de retorno da opção getfeatureinfo. | ||
507 | +*/ | ||
508 | +function wms_formatsinfo ( $dom ) | ||
509 | +{ | ||
510 | + $xpath = new DOMXPath($dom); | ||
511 | + $query = '//WMT_MS_Capabilities/Capability/Request/GetFeatureInfo/Format'; | ||
512 | + $entries = $xpath->query($query); | ||
513 | + $arr = array(); | ||
514 | + foreach ($entries as $entry) | ||
515 | + { | ||
516 | + $arr[] = $entry->nodeValue; | ||
517 | + } | ||
518 | + return $arr; | ||
519 | +} | ||
520 | +/* | ||
503 | function: wms_estilos | 521 | function: wms_estilos |
504 | 522 | ||
505 | Retorna os estilos de um WMS. | 523 | Retorna os estilos de um WMS. |
ferramentas/conectarwms/index.js
@@ -139,7 +139,7 @@ function adiciona() | @@ -139,7 +139,7 @@ function adiciona() | ||
139 | } | 139 | } |
140 | aguarde("block"); | 140 | aguarde("block"); |
141 | var tiporep = $i("tiporep").value | 141 | var tiporep = $i("tiporep").value |
142 | - var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=adicionatemawms&servico="+$i("servico").value+"&tema="+g_tema+"&nome="+g_nometema+"&proj="+$i("proj").value+"&formato="+$i("formatos").value+"&tipo="+g_tipo+"&versao="+$i("versao").value+"&nomecamada="+g_nomecamada+"&tiporep="+tiporep+"&suportasld="+g_sld | 142 | + var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=adicionatemawms&servico="+$i("servico").value+"&tema="+g_tema+"&nome="+g_nometema+"&proj="+$i("proj").value+"&formato="+$i("formatos").value+"&tipo="+g_tipo+"&versao="+$i("versao").value+"&nomecamada="+g_nomecamada+"&tiporep="+tiporep+"&suportasld="+g_sld+"&formatosinfo="+$i("formatosinfo").value |
143 | var cp = new cpaint(); | 143 | var cp = new cpaint(); |
144 | //cp.set_debug(2) | 144 | //cp.set_debug(2) |
145 | cp.set_response_type("JSON"); | 145 | cp.set_response_type("JSON"); |