diff --git a/admin/admin.db b/admin/admin.db index 426081b..5024716 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin1/catalogo/mapfile/preview/index.php b/admin1/catalogo/mapfile/preview/index.php index fae08ee..a2e9394 100755 --- a/admin1/catalogo/mapfile/preview/index.php +++ b/admin1/catalogo/mapfile/preview/index.php @@ -233,5 +233,204 @@ function nomeRand($n=10) } return $nomes; } +function autoClasses(&$nlayer, $mapa, $locaplic = null) { + $postgis_mapa = $_SESSION ["postgis_mapa"]; + ; + $substituicon = "nao"; + if ($nlayer->connectiontype == MS_POSTGIS) { + if ($nlayer->connection == " ") { + $nlayer->set ( "connection", $postgis_mapa ); + $substituicon = "sim"; + } + } + // + // gera classes automaticamente (temas vetoriais) + if ($nlayer->getmetadata ( "classesitem" ) != "") { + $itemnome = $nlayer->getmetadata ( "classesnome" ); + $itemid = $nlayer->getmetadata ( "classesitem" ); + $itemcor = $nlayer->getmetadata ( "classescor" ); + $itemsimbolo = $nlayer->getmetadata ( "classesimbolo" ); + $itemtamanho = $nlayer->getmetadata ( "classestamanho" ); + $classeoriginal = $nlayer->getclass ( 0 ); + // + // pega a extensao geografica que devera ser utilizada + // + $prjMapa = $mapa->getProjection (); + $prjTema = $nlayer->getProjection (); + $ret = $nlayer->getmetadata ( "extensao" ); + if ($ret == "") { + $ret = $nlayer->getextent (); + // reprojeta o retangulo + if (($prjTema != "") && ($prjMapa != $prjTema)) { + $projInObj = ms_newprojectionobj ( $prjTema ); + $projOutObj = ms_newprojectionobj ( $prjMapa ); + $ret->project ( $projInObj, $projOutObj ); + } + } else { + $temp = explode ( " ", $ret ); + $ret = ms_newRectObj (); + $ret->setextent ( $temp [0], $temp [1], $temp [2], $temp [3] ); + } + // + $sopen = $nlayer->open (); + if ($sopen == MS_FAILURE) { + return "erro"; + } + $status = $nlayer->whichShapes ( $ret ); + $parametrosClasses = array (); + if ($status == 0) { + while ( $shape = $nlayer->nextShape () ) { + $id = trim ( $shape->values [$itemid] ); + if (! $parametrosClasses [$id]) { + $nome = ""; + if ($itemnome != "") + $nome = trim ( $shape->values [$itemnome] ); + $cor = ""; + if ($itemcor != "") + $cor = explode ( ",", trim ( $shape->values [$itemcor] ) ); + if (count ( $cor ) != 3) + $cor = explode ( " ", trim ( $shape->values [$itemcor] ) ); + $tamanho = ""; + if ($itemtamanho != "") + $tamanho = trim ( $shape->values [$itemtamanho] ); + $simbolo = ""; + if ($itemsimbolo != "") + $simbolo = trim ( $shape->values [$itemsimbolo] ); + $parametrosClasses [$id] = array ( + "nome" => $nome, + "cor" => $cor, + "tamanho" => $tamanho, + "simbolo" => $simbolo + ); + } + } + $fechou = $nlayer->close (); + // echo "
";var_dump($parametrosClasses);
+			if (count ( $parametrosClasses ) > 0) {
+				$ids = array_keys ( $parametrosClasses );
+				for($i = 0; $i < count ( $parametrosClasses ); ++ $i) {
+					$p = $parametrosClasses [$ids [$i]];
+					// echo "
";var_dump($p);
+					$nclasse = ms_newClassObj ( $nlayer, $classeoriginal );
+					if ($p ["nome"] != "")
+						$nclasse->set ( "name", $p ["nome"] );
+						$estilo = $nclasse->getstyle ( 0 );
+						if ($p ["cor"] != "") {
+							$cor = $p ["cor"];
+							$ncor = $estilo->color;
+							if ($ncor == "")
+								$ncor = $estilo->outlinecolor;
+								$ncor->setrgb ( $cor [0], $cor [1], $cor [2] );
+						}
+						if ($p ["tamanho"] != "")
+							$estilo->set ( "size", $p ["tamanho"] );
+							if ($p ["simbolo"] != "")
+								$estilo->set ( "symbolname", $p ["simbolo"] );
+								$strE = "('[" . $itemid . "]'eq'" . $ids [$i] . "')";
+								$nclasse->setexpression ( $strE );
+				}
+				$classeoriginal->set ( "status", MS_DELETE );
+			}
+		}
+		if ($substituicon == "sim") {
+			$nlayer->set ( "connection", " " );
+		}
+	}
+	$pf = $nlayer->getmetadata ( "palletefile" );
+	if ($pf != "") {
+		if (! file_exists ( $pf )) {
+			return;
+		}
+		$ps = $nlayer->getmetadata ( "palletesteps" );
+		if ($ps == "")
+			$ps = 8;
+			//
+			// pega os valores do arquivo
+			//
+			$rules = array ();
+			$abre = fopen ( $pf, "r" );
+			$paletteRules = array ();
+			while ( ! feof ( $abre ) ) {
+				$line = trim ( fgets ( $abre ) );
+				$pos = strpos ( $line, "#" );
+				if ($pos === false || $pos > 0) {
+					$paletteEntry = explode ( " ", $line );
+					$rules [] = array (
+							"v0" => $paletteEntry [0],
+							"v1" => $paletteEntry [1],
+							"r0" => $paletteEntry [2],
+							"g0" => $paletteEntry [3],
+							"b0" => $paletteEntry [4],
+							"r1" => $paletteEntry [5],
+							"g1" => $paletteEntry [6],
+							"b1" => $paletteEntry [7]
+					);
+				}
+			}
+			fclose ( $abre );
+			foreach ( $rules as $rule ) {
+				$delta = ceil ( ($rule ["v1"] - $rule ["v0"]) / $ps );
+				$legenda = true;
+				for($value = $rule ["v0"]; $value < $rule ["v1"]; $value += $delta) {
+					$class = ms_newClassObj ( $nlayer );
+					$style = ms_newStyleObj ( $class );
+					if ($legenda) {
+						$class->set ( name, round ( $value, 0 ) );
+						$legenda = true;
+					}
+					$expression = "([pixel] > " . round ( $value, 0 ) . " AND [pixel] <= " . round ( $value + $delta, 0 ) . ")";
+					$class->setExpression ( $expression );
+					$rgb = getRGBpallete ( $rule, $value );
+					$style->color->setRGB ( $rgb [0], $rgb [1], $rgb [2] );
+				}
+			}
+	}
+	return;
+}
+function getRGBpallete($rule, $value) {
+	$escala = ($value - $rule ["v0"]) / ($rule ["v1"] - $rule ["v0"]);
+	$r = $rule ["r0"] + round ( ($rule ["r1"] - $rule ["r0"]) * $escala, 0 );
+	$g = $rule ["g0"] + round ( ($rule ["g1"] - $rule ["g0"]) * $escala, 0 );
+	$b = $rule ["b0"] + round ( ($rule ["b1"] - $rule ["b0"]) * $escala, 0 );
+	return array (
+			$r,
+			$g,
+			$b
+	);
+}
+function cloneInlineSymbol($layern, $nmapa, $mapa) {
+	$numclasses = $layern->numclasses;
+	for($ci = 0; $ci < $numclasses; $ci ++) {
+		$classe = $layern->getclass ( $ci );
+		$numestilos = $classe->numstyles;
+		for($ei = 0; $ei < $numestilos; $ei ++) {
+			$estilo = $classe->getstyle ( $ei );
+			if ($estilo->symbolname != "") {
+				$nomesimbolo = $estilo->symbolname;
+				$simbolo = $nmapa->getSymbolObjectById ( $nmapa->getSymbolByName ( $nomesimbolo ) );
+				if ($simbolo->inmapfile == MS_TRUE || file_exists ( $nomesimbolo )) {
+					$simbolon = new symbolObj ( $mapa, $nomesimbolo );
+					$simbolon->set ( "inmapfile", MS_TRUE );
+
+					$simbolon->setImagePath ( $simbolo->imagepath );
+					$simbolon->setPoints ( $simbolo->getPointsArray () );
+					// $simbolon->setPattern($simbolo->getPatternArray());
+					$simbolon->set ( "type", $simbolo->type );
+					// $simbolon->set("antialias",$simbolo->antialias);
+					$simbolon->set ( "character", $simbolo->character );
+					$simbolon->set ( "filled", $simbolo->filled );
+
+					// $simbolon->set("font",$simbolo->font);
+					// $simbolon->set("position",$simbolo->position);
+					$simbolon->set ( "sizex", $simbolo->sizex );
+					$simbolon->set ( "sizey", $simbolo->sizey );
+					$simbolon->set ( "transparent", $simbolo->transparent );
+					$simbolon->set ( "transparentcolor", $simbolo->transparentcolor );
+					// $simbolon->set("anchorpoint",$simbolo->anchorpoint);
+				}
+			}
+		}
+	}
+}
 ?>
diff --git a/admin1/dicionario/menup.js b/admin1/dicionario/menup.js
index 9189430..909c4c9 100755
--- a/admin1/dicionario/menup.js
+++ b/admin1/dicionario/menup.js
@@ -330,5 +330,10 @@ i3GEOadmin.menup.dicionario = {
 		pt : "Importar shapefile para Postgis",
 		en : "",
 		es : ""
+	} ],
+	'csv2pg' : [ {
+		pt : "Importar CSV para Postgis",
+		en : "",
+		es : ""
 	} ]
 };
diff --git a/admin1/dicionario/uploadshp.js b/admin1/dicionario/uploadshp.js
index f3d1c99..efbe50c 100755
--- a/admin1/dicionario/uploadshp.js
+++ b/admin1/dicionario/uploadshp.js
@@ -146,5 +146,40 @@ i3GEOadmin.uploadshp.dicionario = {
 		pt : "Alias da conexão com o banco de dados. Será utilizado apenas para o caso de construção do arquivo mapfile.",
 		en : "",
 		es : ""
+	} ],
+	'txtTituloCsv2Pg' : [ {
+		pt : "Importação de arquivo CSV para Postgis",
+		en : "",
+		es : ""
+	} ],
+	'txtDescCsv2Pg' : [ {
+		pt : "Faz o upload de um arquivo CSV e converte para o banco de dados Postgis existente no servidor web. Permite ainda a conversão de colunas com a latitude e longitude em uma coluna do tipo geometria.",
+		en : "",
+		es : ""
+	} ],
+	'txtAjudaCsv2Pg' : [ {
+		pt : "No formulário deve-se indicar o arquivo no formato CSV. O arquivo é enviado ao servidor e armazenado temporariamente para que a conversão para Postgis seja possível. O resultado do processo será uma tabela no banco de dados no esquema escolhido pelo usuário. O acesso ao banco é feito por meio do usuário administrativo da aplicação i3Geo (o mesmo que gerencia o sistema de administração, veja em ms_configura.php). Esse usuário, definido pelo administrador do servidor, deve ter os direitos de escrita no esquema do banco de dados escolhido para importar os dados.",
+		en : "",
+		es : ""
+	} ],
+	'txtArquivoCsv' : [ {
+		pt : "Escolha o arquivo texto no formato CSV",
+		en : "",
+		es : ""
+	} ],
+	'sridOrigemCsv' : [ {
+		pt : "Código numérico SRID (projeção cartográfica) referente aos dados das colunas x e y caso sejam especificadas",
+		en : "",
+		es : ""
+	} ],
+	'colunaX' : [ {
+		pt : "Nome da coluna no arquivo CSV que contém os valores de coordenadas do eixo x (longitude)",
+		en : "",
+		es : ""
+	} ],
+	'colunaY' : [ {
+		pt : "Nome da coluna no arquivo CSV que contém os valores de coordenadas do eixo y (latitude)",
+		en : "",
+		es : ""
 	} ]
 };
diff --git a/admin1/menu.js b/admin1/menu.js
index 1480938..efd7792 100755
--- a/admin1/menu.js
+++ b/admin1/menu.js
@@ -66,6 +66,8 @@ menuPrincipal = [
 		},{
 		html: ""+$trad("shp2pg",i3GEOadmin.menup.dicionario)+""
 		},{
+		html: ""+$trad("csv2pg",i3GEOadmin.menup.dicionario)+""
+		},{
 		html: ""+$trad("uploadSimbolo",i3GEOadmin.menup.dicionario)+""
 		}
 	]},{
diff --git a/admin1/upload/arquivo/exec.php b/admin1/upload/arquivo/exec.php
index b778813..9621bd4 100755
--- a/admin1/upload/arquivo/exec.php
+++ b/admin1/upload/arquivo/exec.php
@@ -213,6 +213,7 @@ if (isset ( $_FILES ['i3GEOuploadshp'] ['name'] )) {
 				$layer->setprojection("AUTO");
 			}
 			$mapa->save ( $_SESSION ["locaplic"] . "/temas/" . $codigo . ".map" );
+			\admin\php\funcoesAdmin\removeCabecalhoMapfile ( $_SESSION ["locaplic"] . "/temas/" . $codigo . ".map" );
 			echo "";
 		} else {
 			echo "";
diff --git a/admin1/upload/csv2pg/exec.php b/admin1/upload/csv2pg/exec.php
new file mode 100755
index 0000000..60d6709
--- /dev/null
+++ b/admin1/upload/csv2pg/exec.php
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	

+Pasta não encontrada"; + exit (); + } + echo "

"; + + ob_flush (); + flush (); + sleep ( 2 ); + + if (! file_exists ( $_SESSION ["dir_tmp"] ) || empty ( $_SESSION ["dir_tmp"] )) { + echo ""; + exit (); + } + // verifica nomes + verificaNome ( $_FILES ['i3GEOuploadcsv'] ['name'] ); + // remove acentos + $nomePrefixo = "csv2pg" . (rand ( 9000, 10000 )) * - 1; + // sobe arquivo + $Arquivo = $_FILES ['i3GEOuploadcsv'] ['tmp_name']; + $status = move_uploaded_file ( $Arquivo, $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv" ); + if ($status != 1) { + echo ""; + exit (); + } + if (! file_exists ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv" )) { + echo ""; + exit (); + } + $checkphp = \admin\php\funcoesAdmin\fileContemString ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "Arquivo csv invalido"; + unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv" ); + exit (); + } + echo ""; + // + // gera o script para inclusao no banco + // + // pega a lista de colunas e identifica o separador utilizado + $handle = fopen ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "r" ); + $cabecalho = fgets ( $handle ); + $buffer = str_replace ( '"', '', $cabecalho ); + $buffer = str_replace ( "'", '', $buffer ); + $buffer = str_replace ( "\n", '', $buffer ); + $buffer = str_replace ( "\r", '', $buffer ); + $colunas = explode ( ";", $buffer ); + $separador = ";"; + if (count ( $colunas ) == 1) { + $colunas = explode ( ",", $buffer ); + $separador = ","; + } + echo ""; + echo ""; + fclose ( $handle ); + echo ""; + echo ""; + ob_flush (); + flush (); + sleep ( 2 ); + // + // testa as linhas e separadores + // + $handle = fopen ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "r" ); + $linhas = array (); + $ncolunas = count ( $colunas ); + $linhas50 = array (); + while ( ! feof ( $handle ) ) { + $buffer = fgets ( $handle ); + if ($buffer != $cabecalho) { + $buffer = str_replace ( "'", '', $buffer ); + $buffer = str_replace ( "\n", '', $buffer ); + $buffer = str_replace ( "\r", '', $buffer ); + if ($buffer != "") { + $temp = explode ( $separador, $buffer ); + if (count ( $linhas50 ) < 51) { + $linhas50 [] = $temp; + } + if (count ( $temp ) != $ncolunas) { + echo ""; + exit (); + } + } + } + } + fclose ( $handle ); + // + // pega os tipos das colunas + // + $contador = 0; + foreach ( $colunas as $coluna ) { + $tipo = "numeric"; + for($i = 1; $i < 50; $i ++) { + $s = $linhas50 [$i]; + $v = $s [$contador]; + if (! is_numeric ( $v )) { + $tipo = "varchar"; + } + } + $tipoColuna [$colunas [$contador]] = $tipo; + $contador = $contador + 1; + } + echo ""; + + $sqinsert = array (); + + // verifica autorizacao para o esquema + if (empty ( $_POST ["i3GEOuploadEsquemaDestino"] ) || ! in_array ( $_POST ["i3GEOuploadEsquemaDestino"], $_SESSION ["i3geoUploadDataWL"] ["postgis"] ["esquemas"] )) { + echo ""; + exit (); + } + + $conexao = $_SESSION ["i3geoUploadDataWL"] ["postgis"] ["conexao"]; + try { + $dbh = new PDO ( 'pgsql:dbname=' . $conexao ["dbname"] . ';user=' . $conexao ["user"] . ';password=' . $conexao ["password"] . ';host=' . $conexao ["host"] . ';port=' . $conexao ["port"] ); + } catch ( PDOException $e ) { + echo ""; + exit (); + } + if (empty ( $_POST ["i3GEOuploadNomeTabela"] ) || empty ( $_POST ["i3GEOuploadEsquemaDestino"] )) { + exit (); + } + // gera o script para criar a tabela + // verifica se a tabela ja existe + $sql = "SELECT table_name FROM information_schema.tables where table_schema = '" . $_POST ["i3GEOuploadEsquemaDestino"] . "' AND table_name = '" . $_POST ["i3GEOuploadNomeTabela"] . "'"; + $res = $dbh->query ( $sql, PDO::FETCH_ASSOC ); + if (count ( $res->fetchAll () ) > 0) { + $tabelaExiste = true; + } else { + $tabelaExiste = false; + } + // encoding do banco de dados + $sql = "SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = '" . $conexao ["dbname"] . "'"; + $res = $dbh->query ( $sql, PDO::FETCH_ASSOC ); + $encodingdb = $res->fetchAll (); + $encodingdb = $encodingdb [0]; + $encodingdb = $encodingdb ["pg_encoding_to_char"]; + if ($encodingdb == "UTF8") { + $encodingdb = "UTF-8"; + } + if ($encodingdb == "LATIN1") { + $encodingdb = "ISO-8859-1"; + } + // a tabela nao existe e e do tipo create + $sqltabela = array (); + + if ($tabelaExiste == false && $_POST ["i3GEOuploadTipoOperacao"] == "criar") { + $sql = "CREATE TABLE " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . "("; + $temp = array (); + if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { + $temp [] = "the_geom geometry"; + } + foreach ( $colunas as $coluna ) { + $temp [] = \admin\php\funcoesAdmin\removeAcentos ( strtolower ( $coluna ) ) . " " . $tipoColuna [$coluna]; + } + $sql .= implode ( ",", $temp ) . ")WITH(OIDS=FALSE)"; + $sqltabela [] = $sql; + $sqltabela [] = "ALTER TABLE " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " OWNER TO " . $conexao ["user"]; + if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { + $sqltabela [] = "CREATE INDEX " . $_POST ["i3GEOuploadNomeTabela"] . "_indx_thegeom ON " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " USING gist (the_geom )"; + } + if (! empty ( $_POST ["comentarioShp"] )) { + $enc = mb_detect_encoding ( $texto ); + $_POST ["i3GEOuploadComentario"] = mb_convert_encoding ( $_POST ["i3GEOuploadComentario"], $encodingdb, $enc ); + $sqltabela [] = "COMMENT ON TABLE " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " IS '" . $_POST ["i3GEOuploadComentario"] . "'"; + } + echo ""; + } + if ($tabelaExiste == true && $_POST ["i3GEOuploadTipoOperacao"] == "criar") { + echo ""; + exit (); + } + // se a tabela existe e e para atualizar os registros + if ($tabelaExiste == true && $_POST ["i3GEOuploadTipoOperacao"] == "atualizar") { + $sqltabela [] = "delete from " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"]; + } + + // gera o script para inserir os dados + echo ""; + ob_flush (); + flush (); + sleep ( 1 ); + + $linhas = array (); + $insert = "INSERT INTO " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " (" . strtolower ( \admin\php\funcoesAdmin\removeAcentos ( implode ( ",", $colunas ) ) ) . ")"; + if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { + $insert = "INSERT INTO " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " (" . strtolower ( \admin\php\funcoesAdmin\removeAcentos ( implode ( ",", $colunas ) ) ) . ",the_geom)"; + } + + $escapar = "'"; + + //descobre o indice do array que contem a coluna com x e com y + $x = ""; + $y = ""; + if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { + for($i = 0; $i < count ( $colunas ); $i ++) { + if($colunas[$i] == $_POST ["i3GEOuploadColunaX"]){ + $x = $i; + } + if($colunas[$i] == $_POST ["i3GEOuploadColunaY"]){ + $y = $i; + } + } + } + + $handle = fopen ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "r" ); + $numcsv = 0; + while ( ! feof ( $handle ) ) { + $buffer = fgets ( $handle ); + $numcsv = $numcsv + 1; + if ($buffer != $cabecalho) { + $buffer = str_replace ( "'", '', $buffer ); + $buffer = str_replace ( '"', '', $buffer ); + $buffer = str_replace ( "\n", '', $buffer ); + $buffer = str_replace ( "\r", '', $buffer ); + if ($buffer != "") { + $l = explode ( $separador, $buffer ); + $vs = array (); + for($i = 0; $i < count ( $colunas ); $i ++) { + $escape = ""; + if ($tipoColuna [$colunas [$i]] == "varchar") { + $texto = str_replace(array("'",'"'),"",$l [$i]); + $enc = mb_detect_encoding ( $texto ); + $textosl = addcslashes ( $texto, $escapar ); + if ($textosl != $texto) { + $escape = "E"; + } + if ($enc != "" && $enc != $encodingdb) { + $textosl = "$escape'" . mb_convert_encoding ( $textosl, $encodingdb, $enc ) . "'"; + } else { + $textosl = "$escape'" . $textosl . "'"; + } + if ($textosl == "''") { + $textosl = 'null'; + } + $vs [] = $textosl; + } else { + $valor = $l [$i]; + if ($valor == "" || (empty ( $valor ) && $valor != 0)) { + $valor = 'nulo'; + } + $vs [] = $valor; + } + } + if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { + $vx = str_replace(",",".",$l [$x]); + $vy = str_replace(",",".",$l [ $y]); + if ($_POST ["i3GEOuploadSridDestino"] == $_POST ["i3GEOuploadSridOrigem"]) { + $vs[] = "ST_PointFromText('POINT(". $vx . " " . $vy .")','".$_POST["i3GEOuploadSridDestino"]."')"; + } else { + $vs[] = "ST_transform (ST_PointFromText('POINT(". $vx . " " . $vy .")','".$_POST["i3GEOuploadSridDestino"]."')," . $_POST["i3GEOuploadSridDestino"] . ")"; + } + } + $str = implode ( ",", $vs ); + $str = str_replace ( "nulo", 'null', $str ); + $linhas [] = $insert . "VALUES(" . $escape . "" . $str . ")"; + } + } + } + fclose ( $handle ); + + if (! in_array ( $_POST ["i3GEOuploadColunaGid"], $colunas ) && $_POST ["i3GEOuploadTipoOperacao"] == "criar") { + $linhas [] = "alter table " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " add " . $_POST ["i3GEOuploadColunaGid"] . " serial CONSTRAINT " . $_POST ["i3GEOuploadNomeTabela"] . "_gid_pkey PRIMARY KEY"; + } + + if ($_POST ["i3GEOuploadApenasScript"] == "on") { + echo ""; + } else { + // aqui o sql e executado verdadeiramente + // antes e feito um backup da tabela + + // $sqltabela sera vazio se a tabela ja existir + foreach ( $sqltabela as $linha ) { + try { + $dbh->query ( $linha ); + } catch ( PDOException $e ) { + echo "