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 += "
"+$trad(8,i3GEOF.nptpol.dicionario)+":
";
+ ins += "
"+$trad(5,i3GEOF.nptpol.dicionario)+":
";
ins += "
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:
+
+