diff --git a/admin/admin.db b/admin/admin.db index cd96823..0195283 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/classesphp/classe_analise.php b/classesphp/classe_analise.php index 0f721b7..4e91c2a 100644 --- a/classesphp/classe_analise.php +++ b/classesphp/classe_analise.php @@ -2041,7 +2041,7 @@ $temaPo - Tema poligonal. $locaplic - Localização do I3geo */ - function nptPol($temaPt,$temaPo,$locaplic) + function nptPol($temaPt,$temaPo,$locaplic,$somaritem="") { //error_reporting(0); set_time_limit(180); @@ -2064,45 +2064,81 @@ $locaplic - Localização do I3geo $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); // cria o dbf $def = array(); - foreach ($itenspo as $ni) - {$def[] = array(substr($ni, 0, 10),"C","254");} + foreach ($itenspo as $ni){ + $def[] = array(substr($ni, 0, 10),"C","254"); + } $def[] = array("npontos","N","10","0"); - if($this->dbaseExiste == false) - {$db = xbase_create($nomeshp.".dbf", $def);xbase_close($db);} - else - {$db = dbase_create($nomeshp.".dbf", $def);dbase_close($db);} + $def[] = array("soma","N","10","0"); + $def[] = array("media","N","10","0"); + if($this->dbaseExiste == false){ + $db = xbase_create($nomeshp.".dbf", $def);xbase_close($db); + } + else{ + $db = dbase_create($nomeshp.".dbf", $def);dbase_close($db); + } //acrescenta os pontos no novo shapefile $dbname = $nomeshp.".dbf"; - if($this->dbaseExiste == false) - $db=xbase_open($dbname,2); - else - $db=dbase_open($dbname,2); + if($this->dbaseExiste == false){ + $db=xbase_open($dbname,2); + } + else{ + $db=dbase_open($dbname,2); + } $shapes = retornaShapesMapext($layerPo,$this->mapa); - foreach($shapes as $shape) - { + foreach($shapes as $shape){ $novoreg = array(); - foreach($itenspo as $ipo) - {$novoreg[] = $shape->values[$ipo];} + foreach($itenspo as $ipo){ + $novoreg[] = $shape->values[$ipo]; + } $layerPt->querybyshape($shape); - $novoreg[] = $layerPt->getNumresults(); + if($somaritem != ""){ + $soma = 0; + $layerPt->open(); + $res_count = $layerPt->getNumresults(); + for ($i = 0; $i < $res_count; ++$i){ + if($this->v == 6){ + $s = $layerPt->getShape($layerPt->getResult($i)); + } + else{ + $result = $layerPt->getResult($i); + $shp_index = $result->shapeindex; + $s = $layerPt->getfeature($shp_index,-1); + } + $soma += $s->values[$somaritem]; + } + $fechou = $layerPt->close(); + $novoreg[] = $res_count; + $novoreg[] = $soma; + $novoreg[] = $soma / $res_count; + } + else{ + $novoreg[] = $layerPt->getNumresults(); + $novoreg[] = 0; + $novoreg[] = 0; + } $novoshpf->addShape($shape); - if($this->dbaseExiste == false) - xbase_add_record($db,$novoreg); - else - dbase_add_record($db,$novoreg); + if($this->dbaseExiste == false){ + xbase_add_record($db,$novoreg); + } + else{ + dbase_add_record($db,$novoreg); + } + } + if($this->dbaseExiste == false){ + xbase_close($db); + } + else{ + dbase_close($db); } - if($this->dbaseExiste == false) - xbase_close($db); - else - dbase_close($db); //adiciona o novo tema no mapa $novolayer = criaLayer($this->mapa,MS_LAYER_POLYGON,MS_DEFAULT,"N pontos",$metaClasse="SIM",false); $novolayer->set("data",$nomeshp.".shp"); $novolayer->setmetadata("DOWNLOAD","SIM"); $novolayer->setmetadata("TEMALOCAL","SIM"); $novolayer->set("opacity","80"); - if (file_exists($this->qyfile)) - {unlink ($this->qyfile);} + if (file_exists($this->qyfile)){ + unlink ($this->qyfile); + } return("ok"); } /* diff --git a/ferramentas/nptpol/dicionario.js b/ferramentas/nptpol/dicionario.js index bf06444..8aa8a81 100644 --- a/ferramentas/nptpol/dicionario.js +++ b/ferramentas/nptpol/dicionario.js @@ -41,5 +41,11 @@ pt:"Calcular", en:"", es:"", it:"" +}], +8: [{ +pt:"(Opcional) Item da tabela que será somado", +en:"", +es:"", +it:"" }] }; \ No newline at end of file diff --git a/ferramentas/nptpol/exec.php b/ferramentas/nptpol/exec.php index 2fb4b60..4612d30 100644 --- a/ferramentas/nptpol/exec.php +++ b/ferramentas/nptpol/exec.php @@ -19,7 +19,7 @@ Salva o mapa acrescentando um novo layer com o resultado. include_once(dirname(__FILE__)."/../../classesphp/classe_analise.php"); copiaSeguranca($map_file); $m = new Analise($map_file,$tema,$locaplic,$ext); - $retorno = $m->nptPol($temaPt,$temaPo,$locaplic); + $retorno = $m->nptPol($temaPt,$temaPo,$locaplic,$somaritem); $m->salva(); $_SESSION["contadorsalva"]++; break; diff --git a/ferramentas/nptpol/index.js b/ferramentas/nptpol/index.js index 444db55..d920915 100644 --- a/ferramentas/nptpol/index.js +++ b/ferramentas/nptpol/index.js @@ -153,6 +153,10 @@ i3GEOF.nptpol = { t1: function(){ var ins = "

"+$trad(4,i3GEOF.nptpol.dicionario)+":
"; ins += "


"; + + ins += "

"+$trad(8,i3GEOF.nptpol.dicionario)+":
"; + ins += "

-

"; + ins += "

"+$trad(5,i3GEOF.nptpol.dicionario)+":
"; ins += "

"; i3GEO.util.proximoAnterior("i3GEOF.nptpol.t0()","i3GEOF.nptpol.t2()",ins,"i3GEOF.nptpol.t1","i3GEOnptpolresultado"); @@ -183,20 +187,22 @@ i3GEOF.nptpol = { {return;} i3GEOF.nptpol.aguarde.visibility = "visible"; var p, - cp, - fim = function(retorno){ - if (retorno.data==undefined ) - {$i("i3GEOnptpolfim").innerHTML = "

Erro";} - else - {i3GEO.atualiza();} - i3GEOF.nptpol.aguarde.visibility = "hidden"; - }, - ext; + cp, + somaritem = $i("i3GEOnptpoltemasItem").value, + fim = function(retorno){ + if (retorno.data==undefined ) + {$i("i3GEOnptpolfim").innerHTML = "

Erro";} + else + {i3GEO.atualiza();} + i3GEOF.nptpol.aguarde.visibility = "hidden"; + }, + ext; if(i3GEO.Interface.ATUAL === "googlemaps") {ext = i3GEO.Interface.googlemaps.bbox();} else {ext = i3GEO.parametros.mapexten;} p = i3GEO.configura.locaplic+"/ferramentas/nptpol/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=nptPol&temaPt="+$i("i3GEOnptpolPontos").value+"&temaPo="+$i("i3GEOnptpolPoligonos").value+"&ext="+ext; + p += "&somaritem="+somaritem; cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"nptpol",fim); @@ -216,15 +222,20 @@ i3GEOF.nptpol = { i3GEO.util.comboTemas( "i3GEOnptpolPontos", function(retorno){ - $i("i3GEOnptpolDivPontos").innerHTML = retorno.dados; - $i("i3GEOnptpolDivPontos").style.display = "block"; - if ($i("i3GEOnptpolPontos")){ - $i("i3GEOnptpolPontos").onchange = function(){ - i3GEO.mapa.ativaTema($i("i3GEOnptpolPontos").value); - }; + $i("i3GEOnptpolDivPontos").innerHTML = retorno.dados; + $i("i3GEOnptpolDivPontos").style.display = "block"; + if ($i("i3GEOnptpolPontos")){ + $i("i3GEOnptpolPontos").onchange = function(){ + var v = $i("i3GEOnptpolPontos").value; + i3GEO.mapa.ativaTema(v); + if(v != ""){ + i3GEOF.nptpol.comboItens(); + } + }; } if(i3GEO.temaAtivo !== ""){ $i("i3GEOnptpolPontos").value = i3GEO.temaAtivo; + i3GEOF.nptpol.comboItens(); } }, "i3GEOnptpolDivPontos", @@ -246,12 +257,12 @@ i3GEOF.nptpol = { i3GEO.util.comboTemas( "i3GEOnptpolPoligonos", function(retorno){ - $i("i3GEOnptpolDivPoligonos").innerHTML = retorno.dados; - $i("i3GEOnptpolDivPoligonos").style.display = "block"; - if ($i("i3GEOnptpolPoligonos")){ - $i("i3GEOnptpolPoligonos").onchange = function(){ - i3GEO.mapa.ativaTema($i("i3GEOnptpolPoligonos").value); - }; + $i("i3GEOnptpolDivPoligonos").innerHTML = retorno.dados; + $i("i3GEOnptpolDivPoligonos").style.display = "block"; + if ($i("i3GEOnptpolPoligonos")){ + $i("i3GEOnptpolPoligonos").onchange = function(){ + i3GEO.mapa.ativaTema($i("i3GEOnptpolPoligonos").value); + }; } if(i3GEO.temaAtivo !== ""){ $i("i3GEOnptpolPoligonos").value = i3GEO.temaAtivo; @@ -262,5 +273,32 @@ i3GEOF.nptpol = { false, "poligonos" ); + }, + /* + Function: comboItens + + Cria um combo para escolha de um item do tema + + Veja: + + + + */ + comboItens: function(){ + var tema = $i("i3GEOnptpolPontos").value; + if(tema != ""){ + i3GEO.util.comboItens( + "i3GEOnptpoltemasItem", + tema, + function(retorno){ + $i("i3GEOnptpolondeItens").innerHTML = retorno.dados; + $i("i3GEOnptpolondeItens").style.display = "block"; + }, + "i3GEOnptpolondeItens" + ); + } + else{ + $i("i3GEOnptpolondeItens").innerHTML = "-"; + } } }; \ No newline at end of file -- libgit2 0.21.2