From 7a6af063ed092f1ab48007450eb298f42245e4ba Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 10 Mar 2009 20:45:39 +0000 Subject: [PATCH] --- classesjs/compactajs.php | 1 + classesphp/classe_mapa.php | 34 ++++++++++++++++++++++++++++++++++ ferramentas/funcoes.js | 17 +++++++++++------ ferramentas/funcoes_compacto.js | 6 ++++-- ferramentas/i3geo_tudo_compacto.js | 6 ++++-- ferramentas/i3geo_tudo_compacto.js.php | 6 ++++-- ferramentas/uploaddbf/index.js | 35 ++++++++++++++++++++++++++++------- ferramentas/uploaddbf/join.htm | 40 ++++++++++++++++++++++++++++++++++++++++ ferramentas/uploaddbf/novotema.htm | 39 +++++++++++++++++++++++++++++++++++++++ ferramentas/uploaddbf/upload.php | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------- 10 files changed, 230 insertions(+), 66 deletions(-) create mode 100644 ferramentas/uploaddbf/join.htm create mode 100644 ferramentas/uploaddbf/novotema.htm diff --git a/classesjs/compactajs.php b/classesjs/compactajs.php index ddb5882..b181026 100644 --- a/classesjs/compactajs.php +++ b/classesjs/compactajs.php @@ -76,6 +76,7 @@ packer("classe_analise.js","compactados/classe_analise_compacto.js","Normal"); packer("classe_php.js","compactados/classe_php_compacto.js","Normal"); packer("classe_interface.js","compactados/classe_interface_compacto.js","Normal"); packer("classe_i3geo.js","compactados/classe_i3geo_compacto.js","Normal"); +packer("../ferramentas/funcoes.js","../ferramentas/funcoes_compacto.js","Normal"); // //gera um único js para a inicialização do I3Geo // diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index f3fcb42..e91e68c 100644 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -1345,5 +1345,39 @@ $arq - Nome do arquivo. $dbh = null; $dbhw = null; } + function insereJOIN($string,$layername) + { + //le o map file + $abre = fopen($this->arquivo, "r"); + while (!feof($abre)) + { + $buffer = fgets($abre); + $maparray[] = $buffer; + } + fclose($abre); + $novoarray = array(); + $conta = 0; + $pega = "nao"; + //procura a string "querymap" + foreach ($maparray as $e) + { + $testa = explode("NAME",$e); + if (count($testa) > 1) + {$pega = "sim";} + $testa = explode('"'.$layername.'"',$e); + if ((count($testa) > 1) && ($pega == "sim")) + { + $novoarray[] = $string; + $pega = "nao"; + } + $novoarray[] = $e; + } + //salva o mapfile + $abre = fopen($this->arquivo, "wt"); + foreach($novoarray as $linha) + {$escreve = fwrite ($abre,$linha);} + $fecha = fclose ($abre); + } + } ?> \ No newline at end of file diff --git a/ferramentas/funcoes.js b/ferramentas/funcoes.js index a54584f..bf9ad24 100644 --- a/ferramentas/funcoes.js +++ b/ferramentas/funcoes.js @@ -183,16 +183,19 @@ function combocor(id,def,s) // //monta combo com os itens de um unico tema // -function comboitens(id,tema,funcao,onde) +function comboitens(id,tema,funcao,onde,nome) { - if (arguments.length == 4) + if (arguments.length > 3) $i(onde).innerHTML="buscando itens..."; + if (arguments.length != 5) + {nome = "";} + var monta = function(retorno) { if (retorno.data != undefined) { var ins = new Array(); - ins.push(""); ins.push(""); for (i=0;i 2) $i(onde).innerHTML="buscando temas..."; + if (arguments.length == 3) + {nome = "";} var monta = function(retorno) { if (retorno.data != undefined) { if (retorno.data.length > 0) { - comboTemas = ""; comboTemas += ""; for (i=0;i"+retorno.data[i].nome+"";} diff --git a/ferramentas/funcoes_compacto.js b/ferramentas/funcoes_compacto.js index 4c7212c..60d787f 100644 --- a/ferramentas/funcoes_compacto.js +++ b/ferramentas/funcoes_compacto.js @@ -20,7 +20,8 @@ document.body.style.backgroundColor="#F0F0F0";function aguarde(tipo){ if(tipo==" ndiv.innerHTML=texto+""; document.getElementById("resultado").appendChild(ndiv);} var ids=new Array("t0","t1","t2","t3","t4","t5","t6","t7"); for(i=0;i"; combo+=""; combo+=""; combo+=""; return(combo);}function naosim(id){ var combo=""; return(combo);}function combocor(id,def,s){ var combo=""; return(combo);} function comboitens(id,tema,funcao,onde){ if(arguments.length==4) $i(onde).innerHTML="buscando itens..."; var monta=function(retorno){ if(retorno.data !=undefined){ var ins=new Array(); ins.push(""; return(combo);} function comboitens(id,tema,funcao,onde,nome){ if(arguments.length > 3) $i(onde).innerHTML="buscando itens..."; if(arguments.length !=5){nome="";} + var monta=function(retorno){ if(retorno.data !=undefined){ var ins=new Array(); ins.push(""); var ins=ins.join(''); var temp={dados:ins,tipo:"dados"};} else{ var temp={dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)");} @@ -56,7 +57,8 @@ document.body.style.backgroundColor="#F0F0F0";function aguarde(tipo){ if(tipo==" else{var temp={dados:'
Nenhum tema possui seleção. Utilize a opção de seleção ou a tabela de um tema para escolher algum elemento de algum tema.
',tipo:"mensagem"};}} else{var temp={dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)");} - var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=listatemascomsel","listaTemasComSel",monta);} function comboTemasLigados(id,funcao,onde){ if(arguments.length==3) $i(onde).innerHTML="buscando temas..."; var monta=function(retorno){ if(retorno.data !=undefined){ if(retorno.data.length > 0){ comboTemas=""; comboTemas+=""; for(i=0;i"+retorno.data[i].nome+"";} comboTemas+=""; var temp={dados:comboTemas,tipo:"dados"};} else{var temp={dados:'
Nenhum tema está ligado.
',tipo:"mensagem"};}} else{var temp={dados:'
Ocorreu um erro',tipo:"erro"};} diff --git a/ferramentas/i3geo_tudo_compacto.js b/ferramentas/i3geo_tudo_compacto.js index cd75108..78304fe 100644 --- a/ferramentas/i3geo_tudo_compacto.js +++ b/ferramentas/i3geo_tudo_compacto.js @@ -21,7 +21,8 @@ document.body.style.backgroundColor="#F0F0F0";function aguarde(tipo){ if(tipo==" ndiv.innerHTML=texto+""; document.getElementById("resultado").appendChild(ndiv);} var ids=new Array("t0","t1","t2","t3","t4","t5","t6","t7"); for(i=0;i"; combo+=""; combo+=""; combo+=""; return(combo);}function naosim(id){ var combo=""; return(combo);}function combocor(id,def,s){ var combo=""; return(combo);} function comboitens(id,tema,funcao,onde){ if(arguments.length==4) $i(onde).innerHTML="buscando itens..."; var monta=function(retorno){ if(retorno.data !=undefined){ var ins=new Array(); ins.push(""; return(combo);} function comboitens(id,tema,funcao,onde,nome){ if(arguments.length > 3) $i(onde).innerHTML="buscando itens..."; if(arguments.length !=5){nome="";} + var monta=function(retorno){ if(retorno.data !=undefined){ var ins=new Array(); ins.push(""); var ins=ins.join(''); var temp={dados:ins,tipo:"dados"};} else{ var temp={dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)");} @@ -57,7 +58,8 @@ document.body.style.backgroundColor="#F0F0F0";function aguarde(tipo){ if(tipo==" else{var temp={dados:'
Nenhum tema possui seleção. Utilize a opção de seleção ou a tabela de um tema para escolher algum elemento de algum tema.
',tipo:"mensagem"};}} else{var temp={dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)");} - var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=listatemascomsel","listaTemasComSel",monta);} function comboTemasLigados(id,funcao,onde){ if(arguments.length==3) $i(onde).innerHTML="buscando temas..."; var monta=function(retorno){ if(retorno.data !=undefined){ if(retorno.data.length > 0){ comboTemas=""; comboTemas+=""; for(i=0;i"+retorno.data[i].nome+"";} comboTemas+=""; var temp={dados:comboTemas,tipo:"dados"};} else{var temp={dados:'
Nenhum tema está ligado.
',tipo:"mensagem"};}} else{var temp={dados:'
Ocorreu um erro',tipo:"erro"};} diff --git a/ferramentas/i3geo_tudo_compacto.js.php b/ferramentas/i3geo_tudo_compacto.js.php index 71bc695..373f405 100644 --- a/ferramentas/i3geo_tudo_compacto.js.php +++ b/ferramentas/i3geo_tudo_compacto.js.php @@ -21,7 +21,8 @@ document.body.style.backgroundColor="#F0F0F0";function aguarde(tipo){ if(tipo==" ndiv.innerHTML=texto+""; document.getElementById("resultado").appendChild(ndiv);} var ids=new Array("t0","t1","t2","t3","t4","t5","t6","t7"); for(i=0;i"; combo+=""; combo+=""; combo+=""; return(combo);}function naosim(id){ var combo=""; return(combo);}function combocor(id,def,s){ var combo=""; return(combo);} function comboitens(id,tema,funcao,onde){ if(arguments.length==4) $i(onde).innerHTML="buscando itens..."; var monta=function(retorno){ if(retorno.data !=undefined){ var ins=new Array(); ins.push(""; return(combo);} function comboitens(id,tema,funcao,onde,nome){ if(arguments.length > 3) $i(onde).innerHTML="buscando itens..."; if(arguments.length !=5){nome="";} + var monta=function(retorno){ if(retorno.data !=undefined){ var ins=new Array(); ins.push(""); var ins=ins.join(''); var temp={dados:ins,tipo:"dados"};} else{ var temp={dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)");} @@ -57,7 +58,8 @@ document.body.style.backgroundColor="#F0F0F0";function aguarde(tipo){ if(tipo==" else{var temp={dados:'
Nenhum tema possui seleção. Utilize a opção de seleção ou a tabela de um tema para escolher algum elemento de algum tema.
',tipo:"mensagem"};}} else{var temp={dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)");} - var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=listatemascomsel","listaTemasComSel",monta);} function comboTemasLigados(id,funcao,onde){ if(arguments.length==3) $i(onde).innerHTML="buscando temas..."; var monta=function(retorno){ if(retorno.data !=undefined){ if(retorno.data.length > 0){ comboTemas=""; comboTemas+=""; for(i=0;i"+retorno.data[i].nome+"";} comboTemas+=""; var temp={dados:comboTemas,tipo:"dados"};} else{var temp={dados:'
Nenhum tema está ligado.
',tipo:"mensagem"};}} else{var temp={dados:'
Ocorreu um erro',tipo:"erro"};} diff --git a/ferramentas/uploaddbf/index.js b/ferramentas/uploaddbf/index.js index b76f631..0535f8e 100644 --- a/ferramentas/uploaddbf/index.js +++ b/ferramentas/uploaddbf/index.js @@ -21,6 +21,24 @@ Free Software Foundation, Inc., no endereço */ parametrosURL() mensagemAjuda("men1",$i("men1").innerHTML) +if($i("temas")){ + aguarde("block") + comboTemasLigados("tema",function(retorno) + { + $i("temas").innerHTML = retorno.dados + aguarde("none") + $i("tema").onchange = function() + { + $i("itens").innerHTML = ""; + comboitens("item",$i("tema").value,function(retorno) + { + $i("itens").innerHTML = retorno.dados + },"itens","item") + if ($i("temas").value == "") + alert("Selecione um tema"); + } + },"temas","tema") +} //document.getElementById("g_sid").value = g_sid YAHOO.example.init = function () { @@ -34,11 +52,14 @@ function submete() { $i("f").submit() } -radioepsg -( - function(retorno) - { +if($i("listaepsg")) +{ + radioepsg + ( + function(retorno) + { $i("listaepsg").innerHTML = retorno.dados - }, - "listaepsg" -) \ No newline at end of file + }, + "listaepsg" + ) +} \ No newline at end of file diff --git a/ferramentas/uploaddbf/join.htm b/ferramentas/uploaddbf/join.htm new file mode 100644 index 0000000..2344122 --- /dev/null +++ b/ferramentas/uploaddbf/join.htm @@ -0,0 +1,40 @@ + + + + + + + + + +
+
+
+dbf: 
+
+Coluna DBF:
+ +
+
+ Tema: +
+
+
Coluna do tema: +
+
+
+ + +
+ + +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/ferramentas/uploaddbf/novotema.htm b/ferramentas/uploaddbf/novotema.htm new file mode 100644 index 0000000..783e555 --- /dev/null +++ b/ferramentas/uploaddbf/novotema.htm @@ -0,0 +1,39 @@ + + + + + + + + + +
+
+
+dbf: 
+
+nome coluna x:
+nome coluna y:

+Projeção: +
+
+ + +
+
+
+
+Utilize essa opção para acrescentar um tema baseado nas coordenadas x e y presentes em uma tabela DBF. +Os valores de x e y devem utilizar "." como separador de decimal. Se as coordenadas estiverem na projeção +geográfica, os valores deverão estar em décimos de grau, com sinal negativo para pontos ao +sul do equador e oeste do meridiano 0.
+O arquivo DBF será armazenado no servidor onde o i3geo está instalado e permanecerá lá até que +os arquivos temporários sejam apagados. Não utilize essa opção se existir alguma restrição ao uso do arquivo e se +a política de acesso aos dados, definidas pela entidade que hospeda o i3geo, não for compatível +com essas restrições +
+ + + + + \ No newline at end of file diff --git a/ferramentas/uploaddbf/upload.php b/ferramentas/uploaddbf/upload.php index f9b2cef..dfdd941 100644 --- a/ferramentas/uploaddbf/upload.php +++ b/ferramentas/uploaddbf/upload.php @@ -54,59 +54,77 @@ if (isset($_FILES['filedbf']['name'])) if($status != 1) {echo "Ocorreu um erro no envio do arquivo";exit;} $nome = str_replace(".dbf","",$dirmap."/".$_FILES['filedbf']['name']); - $nomex = strtoupper($nomex); - $nomey = strtoupper($nomey); if($status == 1) { - echo "

Arquivo enviado. Criando shape file...

"; - require_once("../../pacotes/phpxbase/api_conversion.php"); - $dbf = xbase_open($dirmap."/".$_FILES['filedbf']['name']); - $records = xbase_numrecords($dbf); - $record = array(); - $novoshpf = ms_newShapefileObj($nome, MS_SHP_POINT); - $novoshpf->free(); - $shapefileObj = ms_newShapefileObj($nome,-2); - for($x = 1; $x <= $records; $x++) + if(!isset($tema)) //o dbf deverá ser transformado em uma camada no mapa { - $record = xbase_get_record_with_names($dbf, $x); - $poPoint = ms_newpointobj(); - $poPoint->setXY($record[$nomex],$record[$nomey]); - $shapefileObj->addpoint($poPoint); + $nomex = strtoupper($nomex); + $nomey = strtoupper($nomey); + echo "

Arquivo enviado. Criando shape file...

"; + require_once("../../pacotes/phpxbase/api_conversion.php"); + $dbf = xbase_open($dirmap."/".$_FILES['filedbf']['name']); + $records = xbase_numrecords($dbf); + $record = array(); + $novoshpf = ms_newShapefileObj($nome, MS_SHP_POINT); + $novoshpf->free(); + $shapefileObj = ms_newShapefileObj($nome,-2); + for($x = 1; $x <= $records; $x++) + { + $record = xbase_get_record_with_names($dbf, $x); + $poPoint = ms_newpointobj(); + $poPoint->setXY($record[$nomex],$record[$nomey]); + $shapefileObj->addpoint($poPoint); + } + $shapefileObj->free(); + $mapt = ms_newMapObj($temasaplic."/novotema.map"); + $novolayer = $mapt->getLayerByName("novotema"); + $novolayer->set("data",$nome.".shp"); + $novolayer->set("name",basename($nome)); + $novolayer->setmetadata("TEMA",basename($nome)); + $novolayer->setmetadata("DOWNLOAD","SIM"); + $novolayer->set("type",MS_LAYER_POINT); + $novolayer->setfilter(""); + $classe = $novolayer->getclass(0); + $estilo = $classe->getstyle(0); + $estilo->set("symbolname","ponto"); + $estilo->set("size",6); + // le os itens + $novolayer->set("status",MS_DEFAULT); + $abriu = $novolayer->open(); + $items = $novolayer->getItems(); + $fechou = $novolayer->close(); + if ($items != "") + { + $its = implode(",",$items); + $novolayer->setmetadata("ITENS",$its); + $novolayer->setmetadata("ITENSDESC",$its); + $novolayer->set("template","none.htm"); + } + if($epsg != "") + {$novolayer->setProjection("init=epsg:".$epsg);} + $adiciona = ms_newLayerObj($mapa, $novolayer); + $salvo = $mapa->save($map_file); + echo "Tema criado!!!"; + echo ""; } - $shapefileObj->free(); - $mapt = ms_newMapObj($temasaplic."/novotema.map"); - $novolayer = $mapt->getLayerByName("novotema"); - $novolayer->set("data",$nome.".shp"); - $novolayer->set("name",basename($nome)); - $novolayer->setmetadata("TEMA",basename($nome)); - $novolayer->setmetadata("DOWNLOAD","SIM"); - $novolayer->set("type",MS_LAYER_POINT); - $novolayer->setfilter(""); - $classe = $novolayer->getclass(0); - $estilo = $classe->getstyle(0); - $estilo->set("symbolname","ponto"); - $estilo->set("size",6); - // le os itens - $novolayer->set("status",MS_DEFAULT); - $abriu = $novolayer->open(); - $items = $novolayer->getItems(); - $fechou = $novolayer->close(); - if ($items != "") + else //join com um tema { - $its = implode(",",$items); - $novolayer->setmetadata("ITENS",$its); - $novolayer->setmetadata("ITENSDESC",$its); - $novolayer->set("template","none.htm"); + //$layer = $mapa->getlayerbyname($tema); + $dbf = $dirmap."/".$_FILES['filedbf']['name']; + $string = 'JOIN '."\n".' NAME "'.$_FILES['filedbf']['name'].'"'."\n"; + $string .= 'TABLE "'.$dbf.'"'."\n"; + $string .= 'FROM "'.$item.'"'."\n"; + $string .= 'TO "'.$colunadbf.'"'."\n"; + $string .= 'TYPE ONE-TO-ONE'."\n"." END"."\n"; + $string .= 'TEMPLATE "none.htm"'."\n"; + + //$layer->updatefromstring($string); + //$salvo = $mapa->save($map_file); + include_once("../../classesphp/classe_mapa.php"); + $m = new Mapa($map_file,$locaplic); + $m->insereJOIN($string,$tema); + echo "Junção concluida!!!"; } - //echo $epsg; - - if($epsg != "") - {$novolayer->setProjection("init=epsg:".$epsg);} - $adiciona = ms_newLayerObj($mapa, $novolayer); - $salvo = $mapa->save($map_file); - //grava os templates de cada tema - echo "Tema criado!!!"; - echo ""; } else { -- libgit2 0.21.2