From 418b50503c952e1e02ffd0840f025d1afc367df0 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sat, 31 May 2014 03:47:29 +0000 Subject: [PATCH] v6 - inclusão de opção para gerar um arquivo de configuração mapfile automaticamente quando um shapefile é enviado para o banco de dados postgis --- admin/admin.db | Bin 263168 -> 0 bytes admin/js/estat_editor.js | 12 ++++++++---- admin/php/conexao.php | 2 +- admin/php/editormapfile.php | 16 ++++++++++------ admin/php/metaestat_uploadshp_submit.php | 38 ++++++++++++++++++++++++++++++++++++-- 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 99622d3..273c70f 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/js/estat_editor.js b/admin/js/estat_editor.js index dff374d..8e47b4d 100644 --- a/admin/js/estat_editor.js +++ b/admin/js/estat_editor.js @@ -521,6 +521,7 @@ i3GEOadmin.editor = { ); i3GEO.util.comboEpsg("comboInSrid","selInSrid","i3GEOadmin.editor.uploadshp.mudaComboInSrid",4326); i3GEO.util.comboEpsg("comboOutSrid","selOutSrid","i3GEOadmin.editor.uploadshp.mudaComboOutSrid",4326); + window.location.hash="i3GEOuploadshp"; }, mudaComboInSrid: function(obj){ $i("insrid").value = obj.value; @@ -529,14 +530,16 @@ i3GEOadmin.editor = { $i("outsrid").value = obj.value; }, formulario: function(){ - var ins = '
' + + var ins = '' + '
' + + '
' + '

shp:

' + '

shx:

' + '

dbf:

' + '
' + '
' + - '

Nome da tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):
' + + '

Nome da tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):
' + + ' ' + 'Ou escolha da lista: ' + '

' + '
' + '
' + + '

 Marque para criar o arquivo de configuração (mapfile) e visualizar os dados no mapa interativo (você poderá editar esse arquivo posteriormente no editor de mapfiles)' + '

 Inclui uma coluna gid do tipo serial e chave primária com código único

' + '

' + '' + '' + '' + - '

' + "

Não utilize '_' no nome do arquivo. Apenas letras e números são aceitos!!!

" + '' + '

Após terminar o processo, atualize essa página para que a nova tabela criada apareça nas listas de seleção.

' + '

Utilize o cadastro de regiões para registrar a tabela criada como uma nova unidade geográfica que poderá ser escolhida no processo de criação de variáveis.

' + - '
'; + '
' + + ''; return ins; }, submit: function(){ diff --git a/admin/php/conexao.php b/admin/php/conexao.php index 37c092d..8ff3909 100644 --- a/admin/php/conexao.php +++ b/admin/php/conexao.php @@ -33,7 +33,7 @@ Este programa é distribuído na expectativa de que seja útil porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU para mais detalhes. -Você deve ter recebido uma cópia da Licença Pública Geral do +Você deve ter recebido uma c�pia da Licença Pública Geral do GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index d796810..b7517ca 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -231,7 +231,7 @@ switch (strtoupper($funcao)) /* Valor: LIMPARCACHEMAPFILE - Apaga o diret�rio contendo o cache de um tema (mapfile) + Apaga o diretorio contendo o cache de um tema (mapfile) Parametros: @@ -268,7 +268,7 @@ switch (strtoupper($funcao)) Exclui um mapfile. - S� é possível excluir se o mapfile não estiver vinculado a nenhum tema ou n� da árvore de temas + So é possível excluir se o mapfile não estiver vinculado a nenhum tema ou no da árvore de temas Parametros: @@ -1183,9 +1183,8 @@ function sobeDesce() return "ok"; } //essa funcao e usada tambem por i3geo/ferramentas/upload/upload.php -function criarNovoMap() -{ - global $nome,$codigo,$locaplic,$it,$en,$es,$esquemaadmin,$metaestat,$tipoLayer,$data; +function criarNovoMap(){ + global $nome,$codigo,$locaplic,$it,$en,$es,$esquemaadmin,$metaestat,$tipoLayer,$data,$conexao; $arq = $locaplic."/temas/".$codigo.".map"; if(!file_exists($arq)){ if(empty($tipoLayer)){ @@ -1201,6 +1200,10 @@ function criarNovoMap() $dados[] = ' CONNECTIONTYPE POSTGIS'; $tipoLayer = "polygon"; } + elseif(!empty($conexao)){ + $dados[] = ' CONNECTIONTYPE POSTGIS'; + $dados[] = ' CONNECTION "'.$conexao.'"'; + } $dados[] = " TYPE ".$tipoLayer; if(empty($data)){ $dados[] = ' DATA ""'; @@ -1237,7 +1240,8 @@ function criarNovoMap() { fwrite($fp,$dado."\n"); } - require_once("conexao.php"); + + include("conexao.php"); if($convUTF){ $nome = utf8_encode($nome); $desc = utf8_encode($desc); diff --git a/admin/php/metaestat_uploadshp_submit.php b/admin/php/metaestat_uploadshp_submit.php index c1409db..a7be6a9 100755 --- a/admin/php/metaestat_uploadshp_submit.php +++ b/admin/php/metaestat_uploadshp_submit.php @@ -76,7 +76,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ $colunasTemp = $layer->getItems(); $colunas = array(); foreach($colunasTemp as $c){ - //abaixo gid e forçado a entrar + //abaixo gid e forcado a entrar if(!is_numeric($c) && strtolower($c) != "gid"){ $colunas[] = $c; } @@ -182,6 +182,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ ob_flush(); flush(); sleep(1); + $srid = 4326; for ($i=0; $i<$numshapes;$i++){ $s = $layer->getShape(new resultObj($i)); $vs = array(); @@ -212,9 +213,11 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ } if(($_POST["insrid"] == $_POST["outsrid"]) || $_POST["outsrid"] == ""){ $vs[] = "st_geomfromtext('".$s->toWkt()."','".$_POST["insrid"]."')"; + $srid = $_POST["insrid"]; } else{ $vs[] = "st_transform(st_geomfromtext('".$s->toWkt()."','".$_POST["insrid"]."'),'".$_POST["outsrid"]."')"; + $srid = $_POST["outsrid"]; } $str = implode(",",$vs); $str = str_replace("nulo",'null',$str); @@ -228,7 +231,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ ob_flush(); flush(); sleep(1); - if($_POST["incluiserialshp"] == "on"){ + if($_POST["incluiserialshp"] == "on" || $_POST["i3GEOuploadCriaMapfile"] == "on"){ $linhas[] = "alter table ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." add gid serial CONSTRAINT ".$_POST["tabelaDestino"]."_gid_pkey PRIMARY KEY"; echo "
alter table ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." add gid serial CONSTRAINT ".$_POST["tabelaDestino"]."_gid_pkey PRIMARY KEY"; } @@ -257,6 +260,37 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ echo "
Registros na tabela final: ". count($r); echo "
Diferenças podem ocorrer em função de caracteres acentuados não suportados pelo banco de dados"; echo "
Feito!!!
Faça o reload da página"; + if($_POST["i3GEOuploadCriaMapfile"] == "on"){ + //verifica se o usuario marcou a opcao de cria mapfile + //nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera + //ser criado e registrado no sistema + $nome = $_POST["tabelaDestino"]; + $codigo = $_POST["tabelaDestino"]; + $it = $_POST["tabelaDestino"]; + $en = $_POST["tabelaDestino"]; + $es = $_POST["tabelaDestino"]; + //descobre o tipo de geometria + $tipo = "select ST_Dimension(the_geom) as d from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." limit 1"; + $q = $dbh->query($tipo,PDO::FETCH_ASSOC); + $tipo = $q->fetchAll(); + $tipo = $tipo[0]["d"]; + $tipoLayer = "polygon"; + if ($tipo == 0){ + $tipoLayer = "point"; + } + if ($tipo == 1){ + $tipoLayer = "line"; + } + $funcao = "CRIARNOVOMAP"; + $output = "retorno"; + $data = "the_geom from ($sql) as foo using unique gid using srid=$srid "; + $conexao = 'dbname='.$conexao["bancodedados"].' user='.$conexao["usuario"].' password='.$conexao["senha"].' host='.$conexao["host"].' port='.$conexao["porta"]; + include_once("editormapfile.php"); + echo "

Criado o mapfile!!!
"; + echo "Para editar clique: ".$nome.""; + echo ""; + } + echo "

Fim"; } else{ echo "

Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.

"; -- libgit2 0.21.2