Commit d393e8303bf4171d6494c3f8412979c854a5eb81

Authored by Edmar Moretti
1 parent 6a1b7c86

Alteração nas funções de cálculo de área e perímetro na operação de análise de g…

…eometrias. Esses cálculos agora são feitos via phpmapscript, não sendo mais necessário uma conexão com o Postgis.
Showing 2 changed files with 34 additions and 35 deletions   Show diff stats
classesphp/classe_analise.php
@@ -1327,75 +1327,70 @@ $operacao - Tipo de análise. @@ -1327,75 +1327,70 @@ $operacao - Tipo de análise.
1327 { 1327 {
1328 $lista = explode(",",$lista); 1328 $lista = explode(",",$lista);
1329 $dir = $dir_tmp."/".$imgdir."/"; 1329 $dir = $dir_tmp."/".$imgdir."/";
1330 - if ($postgis_con == "")  
1331 - {return ("erro. Nao foi definida a conexao com o Postgis.");} 1330 + //if ($postgis_con == "")
  1331 + //{return ("erro. Nao foi definida a conexao com o Postgis.");}
1332 foreach ($lista as $l) 1332 foreach ($lista as $l)
1333 { 1333 {
1334 $geos = &$this->unserializeGeo($dir.$l); 1334 $geos = &$this->unserializeGeo($dir.$l);
1335 foreach ($geos["dados"] as &$geo) 1335 foreach ($geos["dados"] as &$geo)
1336 { 1336 {
1337 $g = $geo["wkt"]; 1337 $g = $geo["wkt"];
1338 - $pgconn = pg_connect($postgis_con); 1338 + //$pgconn = pg_connect($postgis_con);
1339 switch ($operacao) 1339 switch ($operacao)
1340 { 1340 {
1341 case "perimetro": 1341 case "perimetro":
  1342 + /*
1342 $sql = "select perimeter(transform( GeomFromText('$g',4291),$srid_area))::float as perim"; 1343 $sql = "select perimeter(transform( GeomFromText('$g',4291),$srid_area))::float as perim";
1343 $result=pg_query($pgconn, $sql); 1344 $result=pg_query($pgconn, $sql);
1344 pg_close($pgconn); 1345 pg_close($pgconn);
1345 $calculo = pg_fetch_all($result); 1346 $calculo = pg_fetch_all($result);
1346 $geo["valores"][] = array("item"=>"P_perim_metros","valor"=>$calculo[0]["perim"]); 1347 $geo["valores"][] = array("item"=>"P_perim_metros","valor"=>$calculo[0]["perim"]);
  1348 + */
  1349 + $shape = ms_shapeObjFromWkt($g);
  1350 + $area = $shape->getArea();
  1351 + $rect = $shape->bounds;
  1352 + $projInObj = ms_newprojectionobj("proj=latlong");
  1353 + $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=0,lon_0=".$rect->miny.",x_0=5000000,y_0=10000000");
  1354 + $shape->project($projInObj, $projOutObj);
  1355 + $s = $shape->towkt();
  1356 + $shape = ms_shapeObjFromWkt($s);
  1357 + $area = $shape->getLength();
  1358 + $geo["valores"][] = array("item"=>"P_perim_metros","valor"=>$area);
  1359 +
1347 break; 1360 break;
1348 case "area": 1361 case "area":
  1362 + /*
1349 $sql = "select area(transform( GeomFromText('$g',4291),$srid_area))::float as aream"; 1363 $sql = "select area(transform( GeomFromText('$g',4291),$srid_area))::float as aream";
1350 $result=pg_query($pgconn, $sql); 1364 $result=pg_query($pgconn, $sql);
1351 pg_close($pgconn); 1365 pg_close($pgconn);
1352 $calculo = pg_fetch_all($result); 1366 $calculo = pg_fetch_all($result);
1353 $geo["valores"][] = array("item"=>"P_area_metros","valor"=>$calculo[0]["aream"]); 1367 $geo["valores"][] = array("item"=>"P_area_metros","valor"=>$calculo[0]["aream"]);
  1368 + */
  1369 + $shape = ms_shapeObjFromWkt($g);
  1370 + $area = $shape->getArea();
  1371 + $rect = $shape->bounds;
  1372 + $projInObj = ms_newprojectionobj("proj=latlong");
  1373 + $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=0,lon_0=".$rect->miny.",x_0=5000000,y_0=10000000");
  1374 + $shape->project($projInObj, $projOutObj);
  1375 + $s = $shape->towkt();
  1376 + $shape = ms_shapeObjFromWkt($s);
  1377 + $area = $shape->getArea();
  1378 + $geo["valores"][] = array("item"=>"P_area_metros","valor"=>$area);
1354 break; 1379 break;
1355 case "comprimento": 1380 case "comprimento":
  1381 + /*
1356 $sql = "select length(transform( GeomFromText('$g',4291),$srid_area))::float as compm"; 1382 $sql = "select length(transform( GeomFromText('$g',4291),$srid_area))::float as compm";
1357 $result=pg_query($pgconn, $sql); 1383 $result=pg_query($pgconn, $sql);
1358 pg_close($pgconn); 1384 pg_close($pgconn);
1359 $calculo = pg_fetch_all($result); 1385 $calculo = pg_fetch_all($result);
1360 $geo["valores"][] = array("item"=>"P_compr_metros","valor"=>$calculo[0]["compm"]); 1386 $geo["valores"][] = array("item"=>"P_compr_metros","valor"=>$calculo[0]["compm"]);
  1387 + */
1361 break; 1388 break;
1362 } 1389 }
1363 } 1390 }
1364 $this->serializeGeo($dir.$l,$geos); 1391 $this->serializeGeo($dir.$l,$geos);
1365 } 1392 }
1366 return("ok"); 1393 return("ok");
1367 -  
1368 -  
1369 -  
1370 - /* utiliza o geos  
1371 - $lista = explode(",",$lista);  
1372 - $dir = $dir_tmp."/".$imgdir."/";  
1373 - foreach ($lista as $l)  
1374 - {  
1375 - $geos = &$this->unserializeGeo($dir.$l);  
1376 - foreach ($geos["dados"] as &$geo)  
1377 - {  
1378 - //cria objeto projecao  
1379 - $projInObj = ms_newprojectionobj("proj=latlong,ellps=GRS67");  
1380 - $projOutObj = ms_newprojectionobj("proj=laea,ellps=GRS67,lat_0=-12,lon_0=-52,x_0=500000,y_0=10000000,units=m");  
1381 - $g = ms_shapeObjFromWkt($geo["wkt"]);  
1382 - $p = $g->project($projInObj,$projOutObj);  
1383 - switch ($operacao)  
1384 - {  
1385 - case "comprimento":  
1386 - $valor = $g->getLength();  
1387 - $geo["valores"][] = array("item"=>"P_perim_metros","valor"=>$valor);  
1388 - break;  
1389 - case "area":  
1390 - $valor = $g->getArea();  
1391 - $geo["valores"][] = array("item"=>"P_area_metros","valor"=>$valor);  
1392 - break;  
1393 - }  
1394 - }  
1395 - $this->serializeGeo($dir.$l,$geos);  
1396 - }  
1397 - return("ok");  
1398 - */  
1399 } 1394 }
1400 /* 1395 /*
1401 function: incmapageometrias 1396 function: incmapageometrias
ms_configura.php
@@ -113,6 +113,8 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) @@ -113,6 +113,8 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
113 /* 113 /*
114 Variable: $postgis_con 114 Variable: $postgis_con
115 115
  116 + Depreciado - não é mais necessário
  117 +
116 string de conexão com o banco de dados postgis utilizada para reallização de cálculos 118 string de conexão com o banco de dados postgis utilizada para reallização de cálculos
117 119
118 se não existir, deixe em branco 120 se não existir, deixe em branco
@@ -121,6 +123,8 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) @@ -121,6 +123,8 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
121 /* 123 /*
122 Variable: $srid_area 124 Variable: $srid_area
123 125
  126 + Depreciado - não é mais necessário
  127 +
124 srid utilizado nos cálculos que exigem projeção equivalente 128 srid utilizado nos cálculos que exigem projeção equivalente
125 */ 129 */
126 $srid_area = 1; 130 $srid_area = 1;