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 | ?> | ... | ... |