Commit 82fc776caa423ace83927a83952d16a3749af3d8
1 parent
bbd38bfd
Exists in
master
--no commit message
Showing
2 changed files
with
149 additions
and
18 deletions
Show diff stats
json.php
| ... | ... | @@ -26,7 +26,7 @@ Você deve ter recebido uma copia da Licença Pública Geral do |
| 26 | 26 | Free Software Foundation, Inc., no endereço |
| 27 | 27 | 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. |
| 28 | 28 | |
| 29 | -Arquivo: i3geo/ogc.php | |
| 29 | +Arquivo: i3geo/json.php | |
| 30 | 30 | |
| 31 | 31 | Parâmetros: |
| 32 | 32 | |
| ... | ... | @@ -142,7 +142,7 @@ if($format == "storymap"){ |
| 142 | 142 | $collon = $storymap["collon"]; |
| 143 | 143 | $collat = $storymap["collat"]; |
| 144 | 144 | $colmedia = $storymap["colmedia"]; |
| 145 | - | |
| 145 | + | |
| 146 | 146 | $par = array( |
| 147 | 147 | "cabecalho"=>$cabecalho, |
| 148 | 148 | "texto"=>$texto, |
| ... | ... | @@ -189,7 +189,7 @@ function gdocs(){ |
| 189 | 189 | "type"=>$tipos[$i] |
| 190 | 190 | ); |
| 191 | 191 | } |
| 192 | - | |
| 192 | + | |
| 193 | 193 | $fields[] = array( |
| 194 | 194 | "id"=>"geo", |
| 195 | 195 | "type"=>"geo" |
| ... | ... | @@ -332,9 +332,10 @@ function carregaCacheArquivo(){ |
| 332 | 332 | } |
| 333 | 333 | |
| 334 | 334 | function pegaDadosJ(){ |
| 335 | - global $oMap, $tema, $versao; | |
| 335 | + global $oMap, $tema, $versao, $locaplic; | |
| 336 | 336 | set_time_limit(0); |
| 337 | 337 | $layer = $oMap->getlayerbyname($tema); |
| 338 | + processaPluginI3geo(); | |
| 338 | 339 | $layer->set("status",MS_DEFAULT); |
| 339 | 340 | $layer->set("template","none.htm"); |
| 340 | 341 | $items = pegaItens($layer,$oMap); |
| ... | ... | @@ -344,7 +345,7 @@ function pegaDadosJ(){ |
| 344 | 345 | $linhas = array(); |
| 345 | 346 | for ($i = 0; $i < $res_count; $i++){ |
| 346 | 347 | //echo $i." - <br>"; |
| 347 | - if($versao == 6){ | |
| 348 | + if($versao >= 6){ | |
| 348 | 349 | $shape = $layer->getShape($layer->getResult($i)); |
| 349 | 350 | } |
| 350 | 351 | else{ |
| ... | ... | @@ -388,7 +389,69 @@ function pegaDadosJ(){ |
| 388 | 389 | ); |
| 389 | 390 | return $resultado; |
| 390 | 391 | } |
| 391 | - | |
| 392 | +function processaPluginI3geo(){ | |
| 393 | + global $locaplic, $layer; | |
| 394 | + $c = $layer->getmetadata("PLUGINI3GEO"); | |
| 395 | + if($c != ""){ | |
| 396 | + $cs = json_decode($c,true); | |
| 397 | + if($cs["plugin"] == "parametrossql"){ | |
| 398 | + $data = $layer->data; | |
| 399 | + $cs = $cs["parametros"]; | |
| 400 | + $chaves = array(); | |
| 401 | + foreach($cs as $c){ | |
| 402 | + $chaves[] = $c["chave"]; | |
| 403 | + } | |
| 404 | + $chaves = implode(",",$chaves); | |
| 405 | + $filtro = $layer->getFilterString(); | |
| 406 | + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$chaves); | |
| 407 | + $chaves = explode(",",$chaves); | |
| 408 | + $n = count($chaves); | |
| 409 | + //a variavel $plugin vem da URL e contem os valores | |
| 410 | + //que devem ser substituidos | |
| 411 | + //se $plugin for vazio, usa o primeiro valor definido na configuracao do plugin | |
| 412 | + //A ordem dos valores deve ser exatamente a ordem das chaves | |
| 413 | + if(empty($plugin)){ | |
| 414 | + $plugin = array(); | |
| 415 | + foreach($cs as $c){ | |
| 416 | + if($c["chave"] != ""){ | |
| 417 | + //valores definidos no plugin como uma string | |
| 418 | + if($c["valores"] != ""){ | |
| 419 | + $temp = explode(",",$c["valores"]); | |
| 420 | + $plugin[] = $temp[0]; | |
| 421 | + } | |
| 422 | + elseif ($c["prog"] != ""){ | |
| 423 | + $plugin[] = execProg($locaplic."/".$c["prog"]); | |
| 424 | + } | |
| 425 | + } | |
| 426 | + } | |
| 427 | + $plugin = implode(",",$plugin); | |
| 428 | + } | |
| 429 | + $layer->setmetadata("TEMA",$layer->getmetadata("TEMA")." - ".$plugin); | |
| 430 | + $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$plugin); | |
| 431 | + $valores = explode(",",strip_tags($valores)); | |
| 432 | + for($i = 0; $i < $n; $i++){ | |
| 433 | + if($chaves[$i] != ""){ | |
| 434 | + $v = $valores[$i]; | |
| 435 | + $data = str_replace($chaves[$i],$v,$data); | |
| 436 | + if($filtro != ""){ | |
| 437 | + $filtro = str_replace($chaves[$i],$v,$filtro); | |
| 438 | + } | |
| 439 | + } | |
| 440 | + } | |
| 441 | + if($filtro != ""){ | |
| 442 | + $layer->setfilter($filtro); | |
| 443 | + } | |
| 444 | + $layer->set("data",$data); | |
| 445 | + } | |
| 446 | + } | |
| 447 | +} | |
| 448 | +//utilizada para obter os dados default quando se utiliza o plugin parametrossql | |
| 449 | +function execProg($prog){ | |
| 450 | + include($prog); | |
| 451 | + //$retorno variavel deve ser retornada pelo programa $prog | |
| 452 | + //veja como exemplo i3geo/aplicmap/daods/listaano.php | |
| 453 | + return $retorno[0]["v"]; | |
| 454 | +} | |
| 392 | 455 | function converteenc($texto){ |
| 393 | 456 | if (!mb_detect_encoding($texto,"UTF-8",true)){ |
| 394 | 457 | $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1"); | ... | ... |
ogc.php
| ... | ... | @@ -351,7 +351,7 @@ else{ |
| 351 | 351 | if($extensao == ".map"){ |
| 352 | 352 | //cria o mapfile com base no sistema de metadados estatisticos |
| 353 | 353 | //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro |
| 354 | - if(!isset($id_medida_variavel) && $temai3geo == true){ | |
| 354 | + if(!isset($id_medida_variavel) && $temai3geo == true){ | |
| 355 | 355 | $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); |
| 356 | 356 | $l = $nmap->getlayer(0); |
| 357 | 357 | $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL"); |
| ... | ... | @@ -667,10 +667,11 @@ else{ |
| 667 | 667 | } |
| 668 | 668 | $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename)); |
| 669 | 669 | $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename)); |
| 670 | + //verifica se existem layers com plugin definido e processa conforme o tipo de plugin | |
| 671 | + processaPluginI3geo(); | |
| 670 | 672 | // |
| 671 | 673 | //caso seja download ou json ou csv |
| 672 | - // | |
| 673 | - | |
| 674 | + // | |
| 674 | 675 | processaOutputformatMapfile(); |
| 675 | 676 | |
| 676 | 677 | $oMap->save($nomeMapfileTmp); |
| ... | ... | @@ -750,7 +751,7 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ |
| 750 | 751 | $x = $_GET["X"]; |
| 751 | 752 | $y = $_GET["Y"]; |
| 752 | 753 | $z = $_GET["Z"]; |
| 753 | - | |
| 754 | + | |
| 754 | 755 | if(file_exists($tema)){ |
| 755 | 756 | $layer0 = $oMap->getlayer(0); |
| 756 | 757 | $layer0->set("status",MS_DEFAULT); |
| ... | ... | @@ -771,7 +772,7 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ |
| 771 | 772 | if ($layer0->getmetadata("cortepixels") != ""){ |
| 772 | 773 | $cortePixels = $layer0->getmetadata("cortepixels"); |
| 773 | 774 | } |
| 774 | - | |
| 775 | + | |
| 775 | 776 | if($cache == true){ |
| 776 | 777 | carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); |
| 777 | 778 | } |
| ... | ... | @@ -797,10 +798,10 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ |
| 797 | 798 | $oMap->setsize(256,256); |
| 798 | 799 | $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y); |
| 799 | 800 | |
| 800 | - | |
| 801 | - | |
| 801 | + | |
| 802 | + | |
| 802 | 803 | $oMap->setProjection("proj=merc,a=6378137,b=6378137,lat_ts=0.0,lon_0=0.0,x_0=0.0,y_0=0,k=1.0,units=m"); |
| 803 | - | |
| 804 | + | |
| 804 | 805 | // |
| 805 | 806 | //se o layer foi marcado para corte altera os parametros para ampliar o mapa |
| 806 | 807 | //antes de gerar a imagem |
| ... | ... | @@ -925,19 +926,19 @@ if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json" |
| 925 | 926 | exit; |
| 926 | 927 | } |
| 927 | 928 | $oMap->owsdispatch($req); |
| 928 | - | |
| 929 | + | |
| 929 | 930 | $contenttype = ms_iostripstdoutbuffercontenttype(); |
| 930 | 931 | ms_iostripstdoutbuffercontentheaders(); |
| 931 | 932 | //grava em disco |
| 932 | 933 | $contents = ms_iogetstdoutbufferstring(); |
| 933 | 934 | file_put_contents($arq,$contents); |
| 934 | 935 | //envia para download |
| 935 | - | |
| 936 | + | |
| 936 | 937 | header("Content-type: application/json; subtype=geojson"); |
| 937 | - | |
| 938 | + | |
| 938 | 939 | ms_iogetStdoutBufferBytes(); |
| 939 | 940 | ms_ioresethandlers(); |
| 940 | - | |
| 941 | + | |
| 941 | 942 | exit; |
| 942 | 943 | } |
| 943 | 944 | if(strtolower($OUTPUTFORMAT) == "shape-zip"){ |
| ... | ... | @@ -1417,4 +1418,71 @@ function converteenc($texto){ |
| 1417 | 1418 | } |
| 1418 | 1419 | return $texto; |
| 1419 | 1420 | } |
| 1421 | +function processaPluginI3geo(){ | |
| 1422 | + global $oMap, $locaplic; | |
| 1423 | + $numlayers = $oMap->numlayers; | |
| 1424 | + for ($i=0;$i < $numlayers;$i++){ | |
| 1425 | + $l = $oMap->getlayer($i); | |
| 1426 | + $c = $l->getmetadata("PLUGINI3GEO"); | |
| 1427 | + if($c != ""){ | |
| 1428 | + $cs = json_decode($c,true); | |
| 1429 | + if($cs["plugin"] == "parametrossql"){ | |
| 1430 | + $data = $l->data; | |
| 1431 | + $cs = $cs["parametros"]; | |
| 1432 | + $chaves = array(); | |
| 1433 | + foreach($cs as $c){ | |
| 1434 | + $chaves[] = $c["chave"]; | |
| 1435 | + } | |
| 1436 | + $chaves = implode(",",$chaves); | |
| 1437 | + $filtro = $l->getFilterString(); | |
| 1438 | + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$chaves); | |
| 1439 | + $chaves = explode(",",$chaves); | |
| 1440 | + $n = count($chaves); | |
| 1441 | + //a variavel $plugin vem da URL e contem os valores | |
| 1442 | + //que devem ser substituidos | |
| 1443 | + //se $plugin for vazio, usa o primeiro valor definido na configuracao do plugin | |
| 1444 | + //A ordem dos valores deve ser exatamente a ordem das chaves | |
| 1445 | + if(empty($plugin)){ | |
| 1446 | + $plugin = array(); | |
| 1447 | + foreach($cs as $c){ | |
| 1448 | + if($c["chave"] != ""){ | |
| 1449 | + //valores definidos no plugin como uma string | |
| 1450 | + if($c["valores"] != ""){ | |
| 1451 | + $temp = explode(",",$c["valores"]); | |
| 1452 | + $plugin[] = $temp[0]; | |
| 1453 | + } | |
| 1454 | + elseif ($c["prog"] != ""){ | |
| 1455 | + $plugin[] = execProg($locaplic."/".$c["prog"]); | |
| 1456 | + } | |
| 1457 | + } | |
| 1458 | + } | |
| 1459 | + $plugin = implode(",",$plugin); | |
| 1460 | + } | |
| 1461 | + $l->setmetadata("TEMA",$l->getmetadata("TEMA")." - ".$plugin); | |
| 1462 | + $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$plugin); | |
| 1463 | + $valores = explode(",",strip_tags($valores)); | |
| 1464 | + for($i = 0; $i < $n; $i++){ | |
| 1465 | + if($chaves[$i] != ""){ | |
| 1466 | + $v = $valores[$i]; | |
| 1467 | + $data = str_replace($chaves[$i],$v,$data); | |
| 1468 | + if($filtro != ""){ | |
| 1469 | + $filtro = str_replace($chaves[$i],$v,$filtro); | |
| 1470 | + } | |
| 1471 | + } | |
| 1472 | + } | |
| 1473 | + if($filtro != ""){ | |
| 1474 | + $l->setfilter($filtro); | |
| 1475 | + } | |
| 1476 | + $l->set("data",$data); | |
| 1477 | + } | |
| 1478 | + } | |
| 1479 | + } | |
| 1480 | +} | |
| 1481 | +//utilizada para obter os dados default quando se utiliza o plugin parametrossql | |
| 1482 | +function execProg($prog){ | |
| 1483 | + include($prog); | |
| 1484 | + //$retorno variavel deve ser retornada pelo programa $prog | |
| 1485 | + //veja como exemplo i3geo/aplicmap/daods/listaano.php | |
| 1486 | + return $retorno[0]["v"]; | |
| 1487 | +} | |
| 1420 | 1488 | ?> | ... | ... |