Commit d393e8303bf4171d6494c3f8412979c854a5eb81
1 parent
6a1b7c86
Exists in
master
and in
7 other branches
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; | ... | ... |