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 ['i3GEOuploadshp'] ['name'] ); verificaNome ( $_FILES ['i3GEOuploadshx'] ['name'] ); verificaNome ( $_FILES ['i3GEOuploaddbf'] ['name'] ); // remove acentos $nomePrefixo = "shp2pg".(rand (9000,10000)) * -1; // sobe arquivo $Arquivo = $_FILES ['i3GEOuploadshp'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shp" ); if ($status != 1) { echo ""; exit (); } $Arquivo = $_FILES ['i3GEOuploadshx'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shx" ); if ($status != 1) { echo ""; exit (); } $Arquivo = $_FILES ['i3GEOuploaddbf'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".dbf" ); if ($status != 1) { echo ""; exit (); } if (! file_exists ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shp" )) { echo ""; exit (); } $checkphp = \admin\php\funcoesAdmin\fileContemString ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shx", "Arquivo shx invalido"; unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shp" ); unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".dbf" ); unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shx" ); exit (); } $checkphp = \admin\php\funcoesAdmin\fileContemString ( $dirmap . "/" . $nomePrefixo . ".dbf", "Arquivo dbf invalido"; unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shp" ); unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".dbf" ); unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shx" ); exit (); } echo ""; // //gera o script para inclusao no banco // $shapefileObj = ms_newShapefileObj($_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shp",-1); $numshapes = $shapefileObj->numshapes; echo ""; ob_flush ();flush (); sleep ( 2 ); $mapObj = ms_newMapObjFromString("MAP END"); $layer = ms_newLayerObj($mapObj); $layer->set("data",$_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".shp"); if(file_exists($_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".prj")){ //$layer->setprojection("AUTO"); } $layer->open(); $colunasTemp = $layer->getItems(); $colunas = array(); foreach($colunasTemp as $c){ if(!is_numeric($c)){ $colunas[] = $c; } } echo ""; echo ""; ob_flush(); flush(); sleep(2); $sqinsert = array(); //verifica o tipo de coluna $tipoColuna = array(); $testar = $numshapes; if($numshapes > 50){ $testar = 50; } foreach($colunas as $coluna){ $tipo = "numeric"; for ($i=0; $i<$testar;$i++){ $s = $layer->getShape(new resultObj($i)); $v = $s->getValue($layer,$coluna); if(!is_numeric($v)){ $tipo = "varchar"; } } $tipoColuna[$coluna] = $tipo; } echo ""; //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"]."(the_geom geometry"; foreach($colunas as $coluna){ $sql .= ",".\admin\php\funcoesAdmin\removeAcentos(strtolower($coluna))." ".$tipoColuna[$coluna]; } $sql .= ")WITH(OIDS=FALSE)"; $sqltabela[] = $sql; $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadEsquemaDestino"].".".$_POST["i3GEOuploadNomeTabela"]." OWNER TO ".$conexao["user"]; $sqltabela[] = "CREATE INDEX ".$_POST["i3GEOuploadNomeTabela"]."_indx_thegeom ON ".$_POST["i3GEOuploadEsquemaDestino"].".".$_POST["i3GEOuploadNomeTabela"]." USING gist (the_geom )"; if(!empty($_POST["i3GEOuploadComentario"])){ $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 $linhas = array(); $insert = "INSERT INTO ".$_POST["i3GEOuploadEsquemaDestino"].".".$_POST["i3GEOuploadNomeTabela"]." (".strtolower(\admin\php\funcoesAdmin\removeAcentos(implode(",",$colunas))).",the_geom)"; echo ""; ob_flush(); flush(); sleep(1); $escapar = "'"; // //caso o usuario tenha definido a projecao de saida, os dados devem ser projetados // $mapObj->setProjection("init=epsg:".$_POST["i3GEOuploadSridDestino"]); $layer->setProjection("init=epsg:".$_POST["i3GEOuploadSridOrigem"]); $projInObj = $layer->getProjection(); $projOutObj = $mapObj->getProjection(); for ($i=0; $i<$numshapes;$i++){ $s = $layer->getShape(new resultObj($i)); //projeta o shape if($_POST["i3GEOuploadSridDestino"] != $_POST["i3GEOuploadSridOrigem"]){ $s->project(ms_newProjectionObj($projInObj), ms_newProjectionObj($projOutObj)); } $vs = array(); foreach($colunas as $coluna){ $escape = ""; if($tipoColuna[$coluna] == "varchar"){ $texto = $s->getValue($layer,$coluna); $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 = $s->getValue($layer,$coluna); if($valor == "" || (empty($valor) && $valor != 0)){ $valor = 'nulo'; } $vs[] = $valor; } } if($_POST["i3GEOuploadSridDestino"] == $_POST["i3GEOuploadSridOrigem"]){ $vs[] = "st_geomfromtext('".$s->toWkt()."','".$_POST["i3GEOuploadSridDestino"]."')"; } else{ $vs[] = "st_transform(st_geomfromtext('".$s->toWkt()."','".$_POST["i3GEOuploadSridDestino"]."'),'".$_POST["i3GEOuploadSridDestino"]."')"; } $str = implode(",",$vs); $str = str_replace("nulo",'null',$str); $linhas[] = $insert."VALUES(".$escape."".$str.")"; } $layer->close(); 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 "