Commit 418b50503c952e1e02ffd0840f025d1afc367df0
1 parent
cdf1f287
Exists in
master
and in
7 other branches
v6 - inclusão de opção para gerar um arquivo de configuração mapfile automaticam…
…ente quando um shapefile é enviado para o banco de dados postgis
Showing
5 changed files
with
55 additions
and
13 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/js/estat_editor.js
... | ... | @@ -521,6 +521,7 @@ i3GEOadmin.editor = { |
521 | 521 | ); |
522 | 522 | i3GEO.util.comboEpsg("comboInSrid","selInSrid","i3GEOadmin.editor.uploadshp.mudaComboInSrid",4326); |
523 | 523 | i3GEO.util.comboEpsg("comboOutSrid","selOutSrid","i3GEOadmin.editor.uploadshp.mudaComboOutSrid",4326); |
524 | + window.location.hash="i3GEOuploadshp"; | |
524 | 525 | }, |
525 | 526 | mudaComboInSrid: function(obj){ |
526 | 527 | $i("insrid").value = obj.value; |
... | ... | @@ -529,14 +530,16 @@ i3GEOadmin.editor = { |
529 | 530 | $i("outsrid").value = obj.value; |
530 | 531 | }, |
531 | 532 | formulario: function(){ |
532 | - var ins = '<fieldset class=subbloco >' + | |
533 | + var ins = '' + | |
533 | 534 | '<form id=i3GEOuploadf target="i3GEOuploadiframe" action="../php/metaestat_uploadshp_submit.php" method="post" ENCTYPE="multipart/form-data">' + |
535 | + '<fieldset class=subbloco >' + | |
534 | 536 | '<p class="paragrafo" >shp: <br><input type="file" size=22 name="i3GEOuploadshp" style="top:0px;left:0px;cursor:pointer;"></p>' + |
535 | 537 | '<p class="paragrafo" >shx: <br><input type="file" size=22 name="i3GEOuploadshx" style="top:0px;left:0px;cursor:pointer;"></p>' + |
536 | 538 | '<p class="paragrafo" >dbf: <br><input type="file" size=22 name="i3GEOuploaddbf" style="top:0px;left:0px;cursor:pointer;"></p>' + |
537 | 539 | '</fieldset>' + |
538 | 540 | '<fieldset class=subbloco >' + |
539 | - '<p class="paragrafo" >Nome da tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):<br><input class=digitar type="text" size=20 id="tabelaDestino" name="tabelaDestino" style="top:0px;left:0px;cursor:pointer;"> ' + | |
541 | + '<p class="paragrafo" >Nome da tabela (não utilize caracteres incompatíveis com o banco de dados, como -, acentos ou espaços em branco):<br>' + | |
542 | + '<input class=digitar type="text" size=20 id="tabelaDestino" name="tabelaDestino" style="top:0px;left:0px;cursor:pointer;"> ' + | |
540 | 543 | 'Ou escolha da lista: ' + |
541 | 544 | '<select onchange="javascript:$i(\'tabelaDestino\').value = this.value;">' + |
542 | 545 | i3GEOadmin.editor.tabela.optionsTabela + |
... | ... | @@ -558,17 +561,18 @@ i3GEOadmin.editor = { |
558 | 561 | '<p><div id=selOutSrid ></div><input class=digitar type="text" value="" size=20 id="outsrid" name="outsrid" style="top:0px;left:0px;cursor:pointer;"></p>' + |
559 | 562 | '</fieldset>' + |
560 | 563 | '<fieldset class=subbloco >' + |
564 | + '<p class="paragrafo" ><input type=checkbox name=i3GEOuploadCriaMapfile id=i3GEOuploadCriaMapfile style="cursor:pointer;position:relative;top:2px;" /> 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)' + | |
561 | 565 | '<p class="paragrafo" ><input type="checkbox" id="incluiserialshp" name="incluiserialshp" style="cursor:pointer;position:relative;top:2px;"> Inclui uma coluna gid do tipo serial e chave primária com código único</p>' + |
562 | 566 | '<p class="paragrafo" ><input id=i3GEOuploadsubmit type="button" value="Enviar" size=12 />' + |
563 | 567 | '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' + |
564 | 568 | '<input type="hidden" id="i3GEOuploadcodigoconexao" name="i3GEOuploadcodigoconexao" value="">' + |
565 | 569 | '<input type="hidden" id="i3GEOuploadesquema" name="i3GEOuploadesquema" value="">' + |
566 | - '</form>' + | |
567 | 570 | "<p class='paragrafo' style=color:red >Não utilize '_' no nome do arquivo. Apenas letras e números são aceitos!!!</p>" + |
568 | 571 | '<iframe name=i3GEOuploadiframe style="text-align:left;border:1px solid gray;" width="98%" height="400px"></iframe>' + |
569 | 572 | '<p class="paragrafo" >Após terminar o processo, atualize essa página para que a nova tabela criada apareça nas listas de seleção.</p>' + |
570 | 573 | '<p class="paragrafo" >Utilize o <a href="./estat_tipo_regiao.html" >cadastro de regiões</a> para registrar a tabela criada como uma nova unidade geográfica que poderá ser escolhida no processo de criação de variáveis.</p>' + |
571 | - '</fieldset>'; | |
574 | + '</fieldset>' + | |
575 | + '</form>'; | |
572 | 576 | return ins; |
573 | 577 | }, |
574 | 578 | submit: function(){ | ... | ... |
admin/php/conexao.php
... | ... | @@ -33,7 +33,7 @@ Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til |
33 | 33 | porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita |
34 | 34 | de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. |
35 | 35 | Consulte a Licença Pública Geral do GNU para mais detalhes. |
36 | -Você deve ter recebido uma cópia da Licença Pública Geral do | |
36 | +Você deve ter recebido uma c�pia da Licença Pública Geral do | |
37 | 37 | GNU junto com este programa; se não, escreva para a |
38 | 38 | Free Software Foundation, Inc., no endereço |
39 | 39 | 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ... | ... |
admin/php/editormapfile.php
... | ... | @@ -231,7 +231,7 @@ switch (strtoupper($funcao)) |
231 | 231 | /* |
232 | 232 | Valor: LIMPARCACHEMAPFILE |
233 | 233 | |
234 | - Apaga o diret�rio contendo o cache de um tema (mapfile) | |
234 | + Apaga o diretorio contendo o cache de um tema (mapfile) | |
235 | 235 | |
236 | 236 | Parametros: |
237 | 237 | |
... | ... | @@ -268,7 +268,7 @@ switch (strtoupper($funcao)) |
268 | 268 | |
269 | 269 | Exclui um mapfile. |
270 | 270 | |
271 | - S� é possível excluir se o mapfile não estiver vinculado a nenhum tema ou n� da árvore de temas | |
271 | + So é possível excluir se o mapfile não estiver vinculado a nenhum tema ou no da árvore de temas | |
272 | 272 | |
273 | 273 | Parametros: |
274 | 274 | |
... | ... | @@ -1183,9 +1183,8 @@ function sobeDesce() |
1183 | 1183 | return "ok"; |
1184 | 1184 | } |
1185 | 1185 | //essa funcao e usada tambem por i3geo/ferramentas/upload/upload.php |
1186 | -function criarNovoMap() | |
1187 | -{ | |
1188 | - global $nome,$codigo,$locaplic,$it,$en,$es,$esquemaadmin,$metaestat,$tipoLayer,$data; | |
1186 | +function criarNovoMap(){ | |
1187 | + global $nome,$codigo,$locaplic,$it,$en,$es,$esquemaadmin,$metaestat,$tipoLayer,$data,$conexao; | |
1189 | 1188 | $arq = $locaplic."/temas/".$codigo.".map"; |
1190 | 1189 | if(!file_exists($arq)){ |
1191 | 1190 | if(empty($tipoLayer)){ |
... | ... | @@ -1201,6 +1200,10 @@ function criarNovoMap() |
1201 | 1200 | $dados[] = ' CONNECTIONTYPE POSTGIS'; |
1202 | 1201 | $tipoLayer = "polygon"; |
1203 | 1202 | } |
1203 | + elseif(!empty($conexao)){ | |
1204 | + $dados[] = ' CONNECTIONTYPE POSTGIS'; | |
1205 | + $dados[] = ' CONNECTION "'.$conexao.'"'; | |
1206 | + } | |
1204 | 1207 | $dados[] = " TYPE ".$tipoLayer; |
1205 | 1208 | if(empty($data)){ |
1206 | 1209 | $dados[] = ' DATA ""'; |
... | ... | @@ -1237,7 +1240,8 @@ function criarNovoMap() |
1237 | 1240 | { |
1238 | 1241 | fwrite($fp,$dado."\n"); |
1239 | 1242 | } |
1240 | - require_once("conexao.php"); | |
1243 | + | |
1244 | + include("conexao.php"); | |
1241 | 1245 | if($convUTF){ |
1242 | 1246 | $nome = utf8_encode($nome); |
1243 | 1247 | $desc = utf8_encode($desc); | ... | ... |
admin/php/metaestat_uploadshp_submit.php
... | ... | @@ -76,7 +76,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ |
76 | 76 | $colunasTemp = $layer->getItems(); |
77 | 77 | $colunas = array(); |
78 | 78 | foreach($colunasTemp as $c){ |
79 | - //abaixo gid e forçado a entrar | |
79 | + //abaixo gid e forcado a entrar | |
80 | 80 | if(!is_numeric($c) && strtolower($c) != "gid"){ |
81 | 81 | $colunas[] = $c; |
82 | 82 | } |
... | ... | @@ -182,6 +182,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ |
182 | 182 | ob_flush(); |
183 | 183 | flush(); |
184 | 184 | sleep(1); |
185 | + $srid = 4326; | |
185 | 186 | for ($i=0; $i<$numshapes;$i++){ |
186 | 187 | $s = $layer->getShape(new resultObj($i)); |
187 | 188 | $vs = array(); |
... | ... | @@ -212,9 +213,11 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ |
212 | 213 | } |
213 | 214 | if(($_POST["insrid"] == $_POST["outsrid"]) || $_POST["outsrid"] == ""){ |
214 | 215 | $vs[] = "st_geomfromtext('".$s->toWkt()."','".$_POST["insrid"]."')"; |
216 | + $srid = $_POST["insrid"]; | |
215 | 217 | } |
216 | 218 | else{ |
217 | 219 | $vs[] = "st_transform(st_geomfromtext('".$s->toWkt()."','".$_POST["insrid"]."'),'".$_POST["outsrid"]."')"; |
220 | + $srid = $_POST["outsrid"]; | |
218 | 221 | } |
219 | 222 | $str = implode(",",$vs); |
220 | 223 | $str = str_replace("nulo",'null',$str); |
... | ... | @@ -228,7 +231,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ |
228 | 231 | ob_flush(); |
229 | 232 | flush(); |
230 | 233 | sleep(1); |
231 | - if($_POST["incluiserialshp"] == "on"){ | |
234 | + if($_POST["incluiserialshp"] == "on" || $_POST["i3GEOuploadCriaMapfile"] == "on"){ | |
232 | 235 | $linhas[] = "alter table ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." add gid serial CONSTRAINT ".$_POST["tabelaDestino"]."_gid_pkey PRIMARY KEY"; |
233 | 236 | echo "<br>alter table ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." add gid serial CONSTRAINT ".$_POST["tabelaDestino"]."_gid_pkey PRIMARY KEY"; |
234 | 237 | } |
... | ... | @@ -257,6 +260,37 @@ if (isset($_FILES['i3GEOuploadshp']['name'])){ |
257 | 260 | echo "<br>Registros na tabela final: ". count($r); |
258 | 261 | echo "<br>Diferenças podem ocorrer em função de caracteres acentuados não suportados pelo banco de dados"; |
259 | 262 | echo "<br><b>Feito!!!<br>Faça o reload da página"; |
263 | + if($_POST["i3GEOuploadCriaMapfile"] == "on"){ | |
264 | + //verifica se o usuario marcou a opcao de cria mapfile | |
265 | + //nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera | |
266 | + //ser criado e registrado no sistema | |
267 | + $nome = $_POST["tabelaDestino"]; | |
268 | + $codigo = $_POST["tabelaDestino"]; | |
269 | + $it = $_POST["tabelaDestino"]; | |
270 | + $en = $_POST["tabelaDestino"]; | |
271 | + $es = $_POST["tabelaDestino"]; | |
272 | + //descobre o tipo de geometria | |
273 | + $tipo = "select ST_Dimension(the_geom) as d from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." limit 1"; | |
274 | + $q = $dbh->query($tipo,PDO::FETCH_ASSOC); | |
275 | + $tipo = $q->fetchAll(); | |
276 | + $tipo = $tipo[0]["d"]; | |
277 | + $tipoLayer = "polygon"; | |
278 | + if ($tipo == 0){ | |
279 | + $tipoLayer = "point"; | |
280 | + } | |
281 | + if ($tipo == 1){ | |
282 | + $tipoLayer = "line"; | |
283 | + } | |
284 | + $funcao = "CRIARNOVOMAP"; | |
285 | + $output = "retorno"; | |
286 | + $data = "the_geom from ($sql) as foo using unique gid using srid=$srid "; | |
287 | + $conexao = 'dbname='.$conexao["bancodedados"].' user='.$conexao["usuario"].' password='.$conexao["senha"].' host='.$conexao["host"].' port='.$conexao["porta"]; | |
288 | + include_once("editormapfile.php"); | |
289 | + echo "<b><p class='paragrafo' >Criado o mapfile!!!<br>"; | |
290 | + echo "Para editar clique: <a href='../../admin/html/editormapfile.html' target=_blank >".$nome."</a>"; | |
291 | + echo "<script>window.scrollTo(0,10000);i3GEO.util.insereCookie('I3GEOletraAdmin','".$nome."');</script>"; | |
292 | + } | |
293 | + echo "<br><br>Fim"; | |
260 | 294 | } |
261 | 295 | else{ |
262 | 296 | echo "<p class='paragrafo' >Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.</p>"; | ... | ... |