Commit 3681bfcc8ddfdc449bccac14433674e74ded3a12

Authored by Edmar Moretti
1 parent c44aeecf

Corrige a leitura de geoRSS

classesphp/classe_mapa.php
@@ -1570,30 +1570,32 @@ $canal - Identificador do canal (ordem em que está no RSS) @@ -1570,30 +1570,32 @@ $canal - Identificador do canal (ordem em que está no RSS)
1570 { 1570 {
1571 $xml = simplexml_load_file($servico); 1571 $xml = simplexml_load_file($servico);
1572 $conta = 0; 1572 $conta = 0;
1573 - foreach($xml->channel as $c)  
1574 - { 1573 + foreach($xml->channel as $c){
1575 if ($conta == $canal) 1574 if ($conta == $canal)
1576 {$canal = $c;} 1575 {$canal = $c;}
1577 } 1576 }
1578 $resultado = array(); 1577 $resultado = array();
1579 $tipog = ""; 1578 $tipog = "";
1580 - foreach ($canal->item as $item)  
1581 - { 1579 + foreach ($canal->item as $item){
1582 $env = array(); 1580 $env = array();
1583 //define o tipo 1581 //define o tipo
1584 - if ($item->xpath('geo:lat')){$tipog = "geo";}  
1585 - if ($item->xpath('georss:point')){$tipog = "georsspoint";}  
1586 - if ($item->xpath('georss:where')){$tipog = "envelope";}  
1587 - if ($tipog == "envelope")  
1588 - { 1582 + if ($item->xpath('geo:lat'))
  1583 + {$tipog = "geo";}
  1584 + if ($item->xpath('georss:point'))
  1585 + {$tipog = "georsspoint";}
  1586 + if ($item->xpath('georss:where'))
  1587 + {$tipog = "envelope";}
  1588 + if ($tipog == "envelope"){
1589 foreach ($item->xpath('georss:where') as $w) 1589 foreach ($item->xpath('georss:where') as $w)
1590 { 1590 {
1591 foreach ($w->xpath('gml:Envelope') as $e) 1591 foreach ($w->xpath('gml:Envelope') as $e)
1592 { 1592 {
1593 - $lc = $e->xpath('gml:lowerCorner');  
1594 - $uc = $e->xpath('gml:upperCorner');  
1595 - $lc = explode(" ",$lc[0]);  
1596 - $uc = explode(" ",$uc[0]); 1593 + //$lc = $e->xpath('gml:lowerCorner');
  1594 + $lc = (string) $e->children('gml', TRUE)->lowerCorner;
  1595 + //$uc = $e->xpath('gml:upperCorner');
  1596 + $uc = (string) $e->children('gml', TRUE)->upperCorner;
  1597 + $lc = explode(" ",$lc);
  1598 + $uc = explode(" ",$uc);
1597 if (is_numeric($lc[0])) 1599 if (is_numeric($lc[0]))
1598 { 1600 {
1599 $ymin = $lc[0]; 1601 $ymin = $lc[0];
@@ -1606,33 +1608,32 @@ $canal - Identificador do canal (ordem em que está no RSS) @@ -1606,33 +1608,32 @@ $canal - Identificador do canal (ordem em que está no RSS)
1606 } 1608 }
1607 } 1609 }
1608 } 1610 }
1609 - if ($tipog == "geo")  
1610 - {  
1611 - if ($item->xpath('geo:lon'))  
1612 - {$x = $item->xpath('geo:lon');}  
1613 - else  
1614 - {$x = $item->xpath('geo:long');}  
1615 - $y = $item->xpath('geo:lat');  
1616 - $env = array($y[0],$x[0]); 1611 + if ($tipog == "geo"){
  1612 + if ($item->xpath('geo:lon')){
  1613 + $x = (string) $item->children('geo', TRUE)->lon;
  1614 + }
  1615 + else{
  1616 + $x = (string) $item->children('geo', TRUE)->long;
  1617 + }
  1618 + //$y = $item->xpath('geo:lat');
  1619 + $y = (string) $item->children('geo', TRUE)->lat;
  1620 + $env = array($y,$x);
  1621 +
1617 } 1622 }
1618 if ($tipog == "georsspoint") 1623 if ($tipog == "georsspoint")
1619 { 1624 {
1620 - $temp = $item->xpath('georss:point');  
1621 - $env = array( explode(" ",$temp[0]) ); 1625 + //$temp = $item->xpath('georss:point');
  1626 + $temp = (string) $item->children('georss', TRUE)->point;
  1627 + $env = array( explode(" ",$temp) );
1622 } 1628 }
1623 - if (count($env) > 0)  
1624 - { 1629 + if (count($env) > 0){
1625 $resultado[] = array(ixml($item,"title"),ixml($item,"link"),ixml($item,"description"),ixml($item,"category"),$env); 1630 $resultado[] = array(ixml($item,"title"),ixml($item,"link"),ixml($item,"description"),ixml($item,"category"),$env);
1626 } 1631 }
1627 } 1632 }
1628 //cria o shapefile com os dados 1633 //cria o shapefile com os dados
1629 - if (count($resultado) > 0)  
1630 - { 1634 + if (count($resultado) > 0){
1631 //para manipular dbf 1635 //para manipular dbf
1632 - if (file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php"))  
1633 - include_once ($this->locaplic."/pacotes/phpxbase/api_conversion.php");  
1634 - else  
1635 - include_once ("../pacotes/phpxbase/api_conversion.php"); 1636 + include_once (__DIR__."/../pacotes/phpxbase/api_conversion.php");
1636 $diretorio = dirname($this->arquivo); 1637 $diretorio = dirname($this->arquivo);
1637 $tipol = MS_SHP_POLYGON; 1638 $tipol = MS_SHP_POLYGON;
1638 if ($tipog == "georsspoint"){$tipol = MS_SHP_POINT;} 1639 if ($tipog == "georsspoint"){$tipol = MS_SHP_POINT;}
@@ -1654,11 +1655,9 @@ $canal - Identificador do canal (ordem em que está no RSS) @@ -1654,11 +1655,9 @@ $canal - Identificador do canal (ordem em que está no RSS)
1654 $reg = array(); 1655 $reg = array();
1655 $novoshpf = ms_newShapefileObj($nomeshp.".shp", -2); 1656 $novoshpf = ms_newShapefileObj($nomeshp.".shp", -2);
1656 //acrescenta os shapes 1657 //acrescenta os shapes
1657 - foreach ($resultado as $r)  
1658 - { 1658 + foreach ($resultado as $r){
1659 $pts = $r[4]; 1659 $pts = $r[4];
1660 - if ($tipol == MS_SHP_POLYGON)  
1661 - { 1660 + if ($tipol == MS_SHP_POLYGON){
1662 $shp = ms_newShapeObj(MS_SHP_POLYGON); 1661 $shp = ms_newShapeObj(MS_SHP_POLYGON);
1663 $linha = ms_newLineObj(); 1662 $linha = ms_newLineObj();
1664 $linha->addXY($pts[0],$pts[3]); 1663 $linha->addXY($pts[0],$pts[3]);
@@ -1667,8 +1666,7 @@ $canal - Identificador do canal (ordem em que está no RSS) @@ -1667,8 +1666,7 @@ $canal - Identificador do canal (ordem em que está no RSS)
1667 $linha->addXY($pts[0],$pts[1]); 1666 $linha->addXY($pts[0],$pts[1]);
1668 $linha->addXY($pts[0],$pts[3]); 1667 $linha->addXY($pts[0],$pts[3]);
1669 } 1668 }
1670 - else  
1671 - { 1669 + else{
1672 $shp = ms_newShapeObj(MS_SHP_POINT); 1670 $shp = ms_newShapeObj(MS_SHP_POINT);
1673 $linha = ms_newLineObj(); 1671 $linha = ms_newLineObj();
1674 $linha->addXY($pts[1],$pts[0]); 1672 $linha->addXY($pts[1],$pts[0]);
@@ -1680,10 +1678,13 @@ $canal - Identificador do canal (ordem em que está no RSS) @@ -1680,10 +1678,13 @@ $canal - Identificador do canal (ordem em que está no RSS)
1680 $reg = array(); 1678 $reg = array();
1681 } 1679 }
1682 xbase_close($db); 1680 xbase_close($db);
1683 - if ($tipog == "georsspoint" || $tipog == "geo")  
1684 - {$tipol = MS_LAYER_POINT;}  
1685 - else  
1686 - {$tipol = MS_LAYER_POLYGON;} 1681 + if ($tipog == "georsspoint" || $tipog == "geo"){
  1682 + $tipol = MS_LAYER_POINT;
  1683 + }
  1684 + else{
  1685 + $tipol = MS_LAYER_POLYGON;
  1686 + }
  1687 +
1687 $layer = criaLayer($this->mapa,$tipol,MS_DEFAULT,"GeoRSS","SIM"); 1688 $layer = criaLayer($this->mapa,$tipol,MS_DEFAULT,"GeoRSS","SIM");
1688 $layer->set("data",$nomeshp.".shp"); 1689 $layer->set("data",$nomeshp.".shp");
1689 $layer->set("name",basename($nomeshp)); 1690 $layer->set("name",basename($nomeshp));
ferramentas/conectargeorss/exec.php
@@ -20,8 +20,7 @@ Adiciona um tema baseado em um RSS. @@ -20,8 +20,7 @@ Adiciona um tema baseado em um RSS.
20 $retorno = $m->adicionaTemaGeoRSS($servico,$dir_tmp,$locaplic,$canal); 20 $retorno = $m->adicionaTemaGeoRSS($servico,$dir_tmp,$locaplic,$canal);
21 if ($retorno != "erro") 21 if ($retorno != "erro")
22 {$m->salva();$_SESSION["contadorsalva"]++;redesenhaMapa();} 22 {$m->salva();$_SESSION["contadorsalva"]++;redesenhaMapa();}
23 - else  
24 - { 23 + else{
25 $retorno = "erro.Nenhum dado espacializado foi encontrado."; 24 $retorno = "erro.Nenhum dado espacializado foi encontrado.";
26 } 25 }
27 break; 26 break;
ferramentas/conectargeorss/index.js
@@ -99,7 +99,7 @@ retorno {JSON} - retorno da função clickGuia2 @@ -99,7 +99,7 @@ retorno {JSON} - retorno da função clickGuia2
99 */ 99 */
100 function listaCanais(retorno) 100 function listaCanais(retorno)
101 { 101 {
102 - var i,ins = "Clique no bot&atilde;o 'mapa' para incluir os dados do canal desejado<br>"; 102 + var i,ins = "Escolha um dos itens para incluir os dados do canal no mapa<br>";
103 if (retorno.data != undefined) 103 if (retorno.data != undefined)
104 { 104 {
105 retorno = retorno.data; 105 retorno = retorno.data;