Commit b4fc61563be3a80bde5250572aa987a0d5638b68

Authored by Edmar Moretti
1 parent dd071ace

Inclus~]ao de opção para união dos polígonos resultantes da operação de buffer

classesphp/classe_analise.php
... ... @@ -671,8 +671,7 @@ $locaplic - diretório da aplicação i3geo
671 671 $linha->add($poPoint1);
672 672 $linha->add($poPoint2);
673 673 $ShapeObj = ms_newShapeObj(MS_SHAPE_LINE);
674   - $ShapeObj->add($linha);
675   -
  674 + $ShapeObj->add($linha);
676 675 $novoshpf->addShape($ShapeObj);
677 676 $registro = array($i1,$i2,$i3,$i4,$i5,$i6);
678 677 xbase_add_record($db,$registro);
... ... @@ -1138,11 +1137,13 @@ $distancia - Distância em km.
1138 1137  
1139 1138 $locaplic - Localização do I3geo.
1140 1139  
  1140 +$unir - sim|nao indica se os elementos selecionados deverão ser unidos em um só antes do buffer ser criado
  1141 +
1141 1142 return:
1142 1143  
1143 1144 nome do layer criado com o buffer.
1144 1145 */
1145   - function criaBuffer($distancia,$locaplic)
  1146 + function criaBuffer($distancia,$locaplic,$unir="nao")
1146 1147 {
1147 1148 //para manipular dbf
1148 1149 if(file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php"))
... ... @@ -1186,6 +1187,15 @@ nome do layer criado com o buffer.
1186 1187 $shapes[] = $shape;
1187 1188 }
1188 1189 }
  1190 + //faz a união dos elementos se necessário
  1191 + if($unir == "sim")
  1192 + {
  1193 + $ns = $buffers[0];
  1194 + for($s=1;$s < count($buffers);$s++)
  1195 + {$ns = $ns->union_geos($buffers[$s]);}
  1196 + $buffers = array($ns);
  1197 + $shapes = array($shapes[0]);
  1198 + }
1189 1199 $fechou = $this->layer->close();
1190 1200 //gera o novo arquivo shape file
1191 1201 // cria o shapefile
... ...
classesphp/classe_temas.php
... ... @@ -191,9 +191,9 @@ A mudança é feita apenas na representação do layer.
191 191 foreach ($this->grupo as $l)
192 192 {
193 193 $l = $this->mapa->getlayerbyname($l);
194   - if ($l->type == 1) //se for do tipo linear
  194 + if (($l->type == 1) || ($l->type == MS_LAYER_LINE)) //se for do tipo linear
195 195 {$l->set("type",MS_LAYER_POLYGON);}
196   - elseif ($l->type == 2) //se for do tipo poligonal
  196 + elseif (($l->type == 2) || ($l->type == MS_LAYER_POLYGON)) //se for do tipo poligonal
197 197 {$l->set("type",MS_LAYER_LINE);}
198 198 if (($l->type < 1) || ($l->type > 2))
199 199 {$retorno = "erro. O tipo desse tema nao pode ser alterado";}
... ...
classesphp/mapa_controle.php
... ... @@ -1249,7 +1249,7 @@ Include:
1249 1249 include("classe_analise.php");
1250 1250 copiaSeguranca($map_file);
1251 1251 $m = new Analise($map_file,$tema);
1252   - $cp->set_data($m->criaBuffer($distancia,$locaplic));
  1252 + $cp->set_data($m->criaBuffer($distancia,$locaplic,$unir));
1253 1253 $m->salva();
1254 1254 //limpa selecao
1255 1255 if (file_exists($map_file."qy"))
... ...
ferramentas/buffer/index.js
... ... @@ -42,7 +42,9 @@ function t1()
42 42 function t2()
43 43 {
44 44 ins = "Dist&acirc;ncia do entorno em metros"
45   - ins += "<br><br><input class=digitar id='d' type=text size=10 value='0'/>"
  45 + ins += "<br><input class=digitar id='d' type=text size=10 value='0'/><br><br>"
  46 + ins += "Considerar os elementos selecionados como se fossem um s&oacute;?";
  47 + ins += "<br><select id=unir ><option value=nao selected >n&atilde;o</option><option value=sim >sim</option></select>"
46 48 mostraOpcao("t1()","t3()",ins,"t2")
47 49 }
48 50 function t3()
... ... @@ -73,7 +75,7 @@ function criarbuffer()
73 75 else
74 76 {window.parent.ajaxredesenha("");}
75 77 }
76   - var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=criabuffer&tema="+tema+"&distancia="+distancia
  78 + var p = g_locaplic+"/classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=criabuffer&tema="+tema+"&distancia="+distancia+"&unir="+$i("unir").value
77 79 var cp = new cpaint();
78 80 //cp.set_debug(2);
79 81 cp.set_response_type("JSON");
... ...