Commit 3681bfcc8ddfdc449bccac14433674e74ded3a12
1 parent
c44aeecf
Exists in
master
and in
7 other branches
Corrige a leitura de geoRSS
Showing
3 changed files
with
44 additions
and
44 deletions
Show diff stats
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ã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; |