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 1327 {
1328 1328 $lista = explode(",",$lista);
1329 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 1332 foreach ($lista as $l)
1333 1333 {
1334 1334 $geos = &$this->unserializeGeo($dir.$l);
1335 1335 foreach ($geos["dados"] as &$geo)
1336 1336 {
1337 1337 $g = $geo["wkt"];
1338   - $pgconn = pg_connect($postgis_con);
  1338 + //$pgconn = pg_connect($postgis_con);
1339 1339 switch ($operacao)
1340 1340 {
1341 1341 case "perimetro":
  1342 + /*
1342 1343 $sql = "select perimeter(transform( GeomFromText('$g',4291),$srid_area))::float as perim";
1343 1344 $result=pg_query($pgconn, $sql);
1344 1345 pg_close($pgconn);
1345 1346 $calculo = pg_fetch_all($result);
1346 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 1360 break;
1348 1361 case "area":
  1362 + /*
1349 1363 $sql = "select area(transform( GeomFromText('$g',4291),$srid_area))::float as aream";
1350 1364 $result=pg_query($pgconn, $sql);
1351 1365 pg_close($pgconn);
1352 1366 $calculo = pg_fetch_all($result);
1353 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 1379 break;
1355 1380 case "comprimento":
  1381 + /*
1356 1382 $sql = "select length(transform( GeomFromText('$g',4291),$srid_area))::float as compm";
1357 1383 $result=pg_query($pgconn, $sql);
1358 1384 pg_close($pgconn);
1359 1385 $calculo = pg_fetch_all($result);
1360 1386 $geo["valores"][] = array("item"=>"P_compr_metros","valor"=>$calculo[0]["compm"]);
  1387 + */
1361 1388 break;
1362 1389 }
1363 1390 }
1364 1391 $this->serializeGeo($dir.$l,$geos);
1365 1392 }
1366 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 1396 function: incmapageometrias
... ...
ms_configura.php
... ... @@ -113,6 +113,8 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
113 113 /*
114 114 Variable: $postgis_con
115 115  
  116 + Depreciado - não é mais necessário
  117 +
116 118 string de conexão com o banco de dados postgis utilizada para reallização de cálculos
117 119  
118 120 se não existir, deixe em branco
... ... @@ -121,6 +123,8 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
121 123 /*
122 124 Variable: $srid_area
123 125  
  126 + Depreciado - não é mais necessário
  127 +
124 128 srid utilizado nos cálculos que exigem projeção equivalente
125 129 */
126 130 $srid_area = 1;
... ...