Commit 965f17fc989413f6e68f0d463257b6196747299b
1 parent
50159d0b
Exists in
master
and in
7 other branches
Correção na projecao de dados em projecao AUTO e download
Showing
3 changed files
with
60 additions
and
51 deletions
Show diff stats
admin/admin.db
No preview for this file type
classesphp/classe_analise.php
| ... | ... | @@ -1274,8 +1274,7 @@ class Analise |
| 1274 | 1274 | $layerdestino->close(); |
| 1275 | 1275 | $rect = $this->mapa->extent; |
| 1276 | 1276 | $projInObj = $layerorigem->getProjection(); |
| 1277 | - if ($projInObj == "") | |
| 1278 | - { | |
| 1277 | + if ($projInObj == ""){ | |
| 1279 | 1278 | $projInObj = ms_newprojectionobj("proj=longlat,ellps=WGS84,datum=WGS84,no_defs"); |
| 1280 | 1279 | } |
| 1281 | 1280 | $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=".$rect->miny.",lon_0=".$rect->minx.",x_0=5000000,y_0=10000000"); |
| ... | ... | @@ -1291,12 +1290,11 @@ class Analise |
| 1291 | 1290 | $def[] = array("dist_m","N","10","2"); |
| 1292 | 1291 | $def[] = array("origem","C","255"); |
| 1293 | 1292 | $def[] = array("destino","C","255"); |
| 1294 | - if($this->dbaseExiste == false) | |
| 1295 | - { | |
| 1293 | + if($this->dbaseExiste == false){ | |
| 1296 | 1294 | $db = xbase_create($nomeshp.".dbf", $def);xbase_close($db); |
| 1297 | 1295 | } |
| 1298 | - else | |
| 1299 | - {$db = dbase_create($nomeshp.".dbf", $def);dbase_close($db); | |
| 1296 | + else{ | |
| 1297 | + $db = dbase_create($nomeshp.".dbf", $def);dbase_close($db); | |
| 1300 | 1298 | } |
| 1301 | 1299 | //acrescenta os pontos no novo shapefile |
| 1302 | 1300 | $dbname = $nomeshp.".dbf"; |
| ... | ... | @@ -1304,26 +1302,23 @@ class Analise |
| 1304 | 1302 | $db=xbase_open($dbname,2); |
| 1305 | 1303 | else |
| 1306 | 1304 | $db=dbase_open($dbname,2); |
| 1307 | - foreach ($shapesorigem as $sorigem) | |
| 1308 | - { | |
| 1309 | - if($itemorigem != "") | |
| 1310 | - { | |
| 1305 | + foreach ($shapesorigem as $sorigem){ | |
| 1306 | + if($itemorigem != ""){ | |
| 1311 | 1307 | $valororigem = $sorigem->values[$itemorigem]; |
| 1312 | 1308 | } |
| 1313 | - else | |
| 1314 | - {$valororigem = ""; | |
| 1309 | + else{ | |
| 1310 | + $valororigem = ""; | |
| 1315 | 1311 | } |
| 1316 | 1312 | foreach ($shapesdestino as $sdestino) |
| 1317 | 1313 | { |
| 1318 | 1314 | $linha = ms_newLineObj(); |
| 1319 | 1315 | $linha->add($sorigem->getCentroid()); |
| 1320 | 1316 | $linha->add($sdestino->getCentroid()); |
| 1321 | - if($itemdestino != "") | |
| 1322 | - { | |
| 1317 | + if($itemdestino != ""){ | |
| 1323 | 1318 | $valordestino = $sdestino->values[$itemdestino]; |
| 1324 | 1319 | } |
| 1325 | - else | |
| 1326 | - {$valordestino = ""; | |
| 1320 | + else{ | |
| 1321 | + $valordestino = ""; | |
| 1327 | 1322 | } |
| 1328 | 1323 | $ShapeObj = ms_newShapeObj(MS_SHAPE_LINE); |
| 1329 | 1324 | $ShapeObj->add($linha); |
| ... | ... | @@ -1619,7 +1614,7 @@ class Analise |
| 1619 | 1614 | $nomeCentroides = nomeRandomico(); |
| 1620 | 1615 | $nomeshp = $this->diretorio."/".$nomeCentroides; |
| 1621 | 1616 | $shapes = retornaShapesSelecionados($this->layer,$this->arquivo,$this->mapa); |
| 1622 | - | |
| 1617 | + | |
| 1623 | 1618 | //$shapes = $shape[0]; |
| 1624 | 1619 | foreach($shapes as $shape){ |
| 1625 | 1620 | $LineObj = ms_newLineObj(); | ... | ... |
classesphp/funcoes_gerais.php
| ... | ... | @@ -1395,11 +1395,13 @@ $dir_tmp {string} - Diretório temporário |
| 1395 | 1395 | |
| 1396 | 1396 | $nomeRand {boleano} - Gera um nome randomico para o shapefile (TRUE) ou utiliza o nome do tema (FALSE) |
| 1397 | 1397 | |
| 1398 | +$prj {string} - String que sera gravada no arquivo prj | |
| 1399 | + | |
| 1398 | 1400 | Retorno: |
| 1399 | 1401 | |
| 1400 | 1402 | {string} - nome do arquivo criado ou false se ocorrer erro |
| 1401 | 1403 | */ |
| 1402 | -function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) | |
| 1404 | +function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj="") | |
| 1403 | 1405 | { |
| 1404 | 1406 | $versao = versao(); |
| 1405 | 1407 | $versao = $versao["principal"]; |
| ... | ... | @@ -1412,6 +1414,18 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1412 | 1414 | } |
| 1413 | 1415 | $map = @ms_newMapObj($map_file); |
| 1414 | 1416 | $layer = $map->getlayerbyname($tema); |
| 1417 | + //e necessario abrir ou nao vai projetar | |
| 1418 | + $layer->open(); | |
| 1419 | + $prjMapa = $map->getProjection(); | |
| 1420 | + $prjTema = $layer->getProjection(); | |
| 1421 | + if($prjTema != ""){ | |
| 1422 | + $projInObj = new projectionObj($prjTema); | |
| 1423 | + $projOutObj = new projectionObj($prjMapa); | |
| 1424 | + } | |
| 1425 | + else{ | |
| 1426 | + $projInObj = ""; | |
| 1427 | + $projOutObj = ""; | |
| 1428 | + } | |
| 1415 | 1429 | |
| 1416 | 1430 | $layer->set("template","none.htm"); |
| 1417 | 1431 | $diretorio = dirname($dir_tmp); |
| ... | ... | @@ -1468,7 +1482,7 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1468 | 1482 | $resultadoFinal = true; |
| 1469 | 1483 | } |
| 1470 | 1484 | else{ |
| 1471 | - $shapesSel = retornaShapesSelecionados($layer,$map_file,$map); | |
| 1485 | + $shapesSel = retornaShapesSelecionados($layer,$map_file,$map,false); | |
| 1472 | 1486 | $items = pegaItens($layer); |
| 1473 | 1487 | // cria o dbf |
| 1474 | 1488 | $def = array(); |
| ... | ... | @@ -1482,10 +1496,12 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1482 | 1496 | $def[] = array($temp,"C","254"); |
| 1483 | 1497 | $cni = $cni + 1; |
| 1484 | 1498 | } |
| 1485 | - if(!function_exists("dbase_create")) | |
| 1486 | - {$db = xbase_create($nomeshp.".dbf", $def);} | |
| 1487 | - else | |
| 1488 | - {$db = dbase_create($nomeshp.".dbf", $def);} | |
| 1499 | + if(!function_exists("dbase_create")){ | |
| 1500 | + $db = xbase_create($nomeshp.".dbf", $def); | |
| 1501 | + } | |
| 1502 | + else{ | |
| 1503 | + $db = dbase_create($nomeshp.".dbf", $def); | |
| 1504 | + } | |
| 1489 | 1505 | $dbname = $nomeshp.".dbf"; |
| 1490 | 1506 | $reg = array(); |
| 1491 | 1507 | $novoshpf = ms_newShapefileObj($nomeshp.".shp", -2); |
| ... | ... | @@ -1494,8 +1510,8 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1494 | 1510 | if ($res_count > 0){ |
| 1495 | 1511 | for ($i = 0; $i < $res_count; ++$i){ |
| 1496 | 1512 | $shape = $shapesSel[$i]; |
| 1497 | - foreach ($items as $ni) | |
| 1498 | - { | |
| 1513 | + $shape->project($projInObj, $projOutObj); | |
| 1514 | + foreach ($items as $ni){ | |
| 1499 | 1515 | $vreg = $shape->values[$ni]; |
| 1500 | 1516 | if(strlen($vreg) > 255){ |
| 1501 | 1517 | $vreg = substr($vreg,0,255); |
| ... | ... | @@ -1513,7 +1529,6 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1513 | 1529 | xbase_close($db); |
| 1514 | 1530 | else |
| 1515 | 1531 | dbase_close($db); |
| 1516 | - $layer->close(); | |
| 1517 | 1532 | // |
| 1518 | 1533 | //verifica a quantidade de registros no final |
| 1519 | 1534 | // |
| ... | ... | @@ -1538,6 +1553,8 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1538 | 1553 | {unlink($nomeshp.".shp");} |
| 1539 | 1554 | if(file_exists($nomeshp.".shx")) |
| 1540 | 1555 | {unlink($nomeshp.".shx");} |
| 1556 | + if(file_exists($nomeshp.".prj")) | |
| 1557 | + {unlink($nomeshp.".prj");} | |
| 1541 | 1558 | $resultadoFinal = false; |
| 1542 | 1559 | } |
| 1543 | 1560 | } |
| ... | ... | @@ -1550,20 +1567,9 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) |
| 1550 | 1567 | } |
| 1551 | 1568 | else{ |
| 1552 | 1569 | //gera o arquivo prj |
| 1553 | - /* | |
| 1554 | - if(!file_exists($nomeshp.".prj")){ | |
| 1555 | - $projecao = $layer->getProjection(); | |
| 1556 | - if($projecao == ""){ | |
| 1557 | - $projecao = $map->getProjection(); | |
| 1558 | - } | |
| 1559 | - include($locaplic."/pacotes/proj4php-proj4php5.2/src/proj4php/proj4php.php"); | |
| 1560 | - | |
| 1561 | - $proj4 = new Proj4php(); | |
| 1562 | - $projWGS84 = new Proj4phpProj('EPSG:4326',$proj4); | |
| 1563 | - echo $projWGS84->projection;exit; | |
| 1564 | - | |
| 1570 | + if($prj != ""){ | |
| 1571 | + gravaDados(array($prj),$nomeshp.".prj"); | |
| 1565 | 1572 | } |
| 1566 | - */ | |
| 1567 | 1573 | return $nomeshp; |
| 1568 | 1574 | } |
| 1569 | 1575 | } |
| ... | ... | @@ -1618,7 +1624,7 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) |
| 1618 | 1624 | //cria o arquivo mapfile, caso ele não exista, que servirá de base para obtenção dos dados |
| 1619 | 1625 | // |
| 1620 | 1626 | $nomeRand = true; |
| 1621 | - //echo $versao;exit; | |
| 1627 | + $projecao = pegaProjecaoDefault(); | |
| 1622 | 1628 | if (($map_file == "") || (!@ms_newMapObj($map_file))){ //a funcao foi chamada do aplicativo datadownload |
| 1623 | 1629 | if($base == "" or !isset($base)){ |
| 1624 | 1630 | $base = ""; |
| ... | ... | @@ -1647,6 +1653,7 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) |
| 1647 | 1653 | } |
| 1648 | 1654 | $map_tmp = ms_newMapObj($base); |
| 1649 | 1655 | $map_file = $dir_tmp."/".nomerandomico(20).".map"; |
| 1656 | + $map_tmp->setProjection($projecao["proj4"]); | |
| 1650 | 1657 | $map_tmp->save($map_file); |
| 1651 | 1658 | $nomeRand = false; |
| 1652 | 1659 | } |
| ... | ... | @@ -1830,12 +1837,19 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) |
| 1830 | 1837 | } |
| 1831 | 1838 | // |
| 1832 | 1839 | //se nao existir selecao seleciona por box |
| 1840 | + //o box vem do mapfile original | |
| 1833 | 1841 | // |
| 1834 | 1842 | if(!file_exists($sel->qyfile) || $numSel < 1){ |
| 1835 | 1843 | $box = $rectextent->minx." ".$rectextent->miny." ".$rectextent->maxx." ".$rectextent->maxy; |
| 1836 | 1844 | $sel->selecaoBOX("novo",$box); |
| 1845 | + //reaproveita arquivo anterior | |
| 1846 | + $nomeRand = false; | |
| 1847 | + } | |
| 1848 | + $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand,$projecao["prj"]); | |
| 1849 | + //remove o arquivo de selecao se ele foi criado apenas para pegar todos os elementos | |
| 1850 | + if($nomeRand == false){ | |
| 1851 | + $sel->selecaoLimpa(); | |
| 1837 | 1852 | } |
| 1838 | - $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand); | |
| 1839 | 1853 | if($nomeshp == false){ |
| 1840 | 1854 | return array("arquivos"=>"<span style=color:red >Ocorreu um erro, tente novamente","nreg"=>0); |
| 1841 | 1855 | } |
| ... | ... | @@ -1847,6 +1861,9 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) |
| 1847 | 1861 | |
| 1848 | 1862 | $resultado[] = str_replace($radtmp."/","",$nomeshp).".dbf"; |
| 1849 | 1863 | $dataArquivos[] = date ("F d Y H:i:s.",filemtime($nomeshp.".dbf")); |
| 1864 | + | |
| 1865 | + $resultado[] = str_replace($radtmp."/","",$nomeshp).".prj"; | |
| 1866 | + $dataArquivos[] = date ("F d Y H:i:s.",filemtime($nomeshp.".prj")); | |
| 1850 | 1867 | } |
| 1851 | 1868 | } |
| 1852 | 1869 | } |
| ... | ... | @@ -2500,17 +2517,17 @@ function retornaShapesMapext($objLayer,$objMapa){ |
| 2500 | 2517 | function retornaShapesSelecionados($objLayer,$map_file,$objMapa,$indexado=false){ |
| 2501 | 2518 | $shapes = array(); |
| 2502 | 2519 | $qyfile = dirname($map_file)."/".$objLayer->name.".php"; |
| 2503 | - | |
| 2504 | - if(!file_exists($qyfile)) | |
| 2505 | - {return $shapes;} | |
| 2520 | + if(!file_exists($qyfile)){ | |
| 2521 | + return $shapes; | |
| 2522 | + } | |
| 2506 | 2523 | |
| 2507 | 2524 | $handle = fopen ($qyfile, "r"); |
| 2508 | 2525 | $conteudo = fread ($handle, filesize ($qyfile)); |
| 2509 | 2526 | fclose ($handle); |
| 2510 | 2527 | $listaDeIndices = unserialize($conteudo); |
| 2511 | - //echo count($listaDeIndices);exit; | |
| 2512 | - if(count($listaDeIndices) == 0) | |
| 2513 | - {return $shapes;} | |
| 2528 | + if(count($listaDeIndices) == 0){ | |
| 2529 | + return $shapes; | |
| 2530 | + } | |
| 2514 | 2531 | |
| 2515 | 2532 | $versao = versao(); |
| 2516 | 2533 | $versao = $versao["principal"]; |
| ... | ... | @@ -2521,14 +2538,11 @@ function retornaShapesSelecionados($objLayer,$map_file,$objMapa,$indexado=false) |
| 2521 | 2538 | |
| 2522 | 2539 | $sopen = $objLayer->open(); |
| 2523 | 2540 | if($sopen == MS_FAILURE){return "erro";} |
| 2524 | - $objLayer->open(); | |
| 2525 | 2541 | $res_count = $objLayer->getNumresults(); |
| 2526 | 2542 | $centroides = array(); |
| 2527 | 2543 | $shapes = array(); |
| 2528 | 2544 | //pega um shape especifico |
| 2529 | - | |
| 2530 | - for ($i = 0; $i < $res_count; ++$i) | |
| 2531 | - { | |
| 2545 | + for ($i = 0; $i < $res_count; ++$i){ | |
| 2532 | 2546 | if($versao >= 6){ |
| 2533 | 2547 | $shape = $objLayer->getShape($objLayer->getResult($i)); |
| 2534 | 2548 | $shp_index = $shape->index; | ... | ... |