Commit 94e29cf24a608e174d899cb2c7e8e1225cf6a9be
1 parent
64bf4fed
Exists in
master
and in
7 other branches
- Opção para criar um buffer no ponto clicado na ferramenta de identificação
Showing
6 changed files
with
227 additions
and
22 deletions
Show diff stats
admin/admin.db
No preview for this file type
classesjs/dicionario_ajuda.js
| @@ -210,7 +210,7 @@ g_traducao_ajuda = { | @@ -210,7 +210,7 @@ g_traducao_ajuda = { | ||
| 210 | diretorio:"i3geo/ferramentas/buffer", | 210 | diretorio:"i3geo/ferramentas/buffer", |
| 211 | categoria:"3", | 211 | categoria:"3", |
| 212 | pt:"O entorno, ou buffer, é um polígono que circunda um elemento geográfico em uma distância fixa. Para o cálculo de distância o i3Geo utiliza a projeção policônica. Os atributos do tema alvo são copiados para os polígonos resultantes e uma nova camada é adicionada ao mapa. Opcionalmente, os polígonos resultantes podem ser unidos como um único.", | 212 | pt:"O entorno, ou buffer, é um polígono que circunda um elemento geográfico em uma distância fixa. Para o cálculo de distância o i3Geo utiliza a projeção policônica. Os atributos do tema alvo são copiados para os polígonos resultantes e uma nova camada é adicionada ao mapa. Opcionalmente, os polígonos resultantes podem ser unidos como um único.", |
| 213 | - complemento:"Para gerar o entorno, você precisa selecionar alguns elementos de um tema. Utilize para isso a opção de seleção ou a tabela de atributos do tema desejado.", | 213 | + complemento:"Para gerar o entorno, você precisa selecionar alguns elementos de um tema. Utilize para isso a opção de seleção ou a tabela de atributos do tema desejado. O buffer pode ser gerado também por meio da ferramenta de identificação.", |
| 214 | tela:"ferramentas/buffer/exemplo.htm", | 214 | tela:"ferramentas/buffer/exemplo.htm", |
| 215 | apijs:"i3GEO.analise.dialogo.buffer()" | 215 | apijs:"i3GEO.analise.dialogo.buffer()" |
| 216 | }, | 216 | }, |
classesphp/classe_analise.php
| @@ -1226,14 +1226,17 @@ $locaplic - Localização do I3geo. | @@ -1226,14 +1226,17 @@ $locaplic - Localização do I3geo. | ||
| 1226 | 1226 | ||
| 1227 | $unir - sim|nao indica se os elementos selecionados deverão ser unidos em um só antes do buffer ser criado | 1227 | $unir - sim|nao indica se os elementos selecionados deverão ser unidos em um só antes do buffer ser criado |
| 1228 | 1228 | ||
| 1229 | +$wkt - (opcional) elemento no formato wkt para o qual o buffer será gerado. Só de ve ser definido se $this->nome for vazio, ou seja | ||
| 1230 | +se o parâmetro "tema" não tiver sido fornecido ao construtor da classe | ||
| 1231 | + | ||
| 1229 | return: | 1232 | return: |
| 1230 | 1233 | ||
| 1231 | nome do layer criado com o buffer. | 1234 | nome do layer criado com o buffer. |
| 1232 | */ | 1235 | */ |
| 1233 | - function criaBuffer($distancia,$locaplic,$unir="nao") | 1236 | + function criaBuffer($distancia,$locaplic,$unir="nao",$wkt="") |
| 1234 | { | 1237 | { |
| 1235 | - if(!$this->layer){return "erro";} | ||
| 1236 | set_time_limit(180); | 1238 | set_time_limit(180); |
| 1239 | + //error_reporting(E_ALL); | ||
| 1237 | //para manipular dbf | 1240 | //para manipular dbf |
| 1238 | if(file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php")) | 1241 | if(file_exists($this->locaplic."/pacotes/phpxbase/api_conversion.php")) |
| 1239 | include_once($this->locaplic."/pacotes/phpxbase/api_conversion.php"); | 1242 | include_once($this->locaplic."/pacotes/phpxbase/api_conversion.php"); |
| @@ -1241,20 +1244,32 @@ nome do layer criado com o buffer. | @@ -1241,20 +1244,32 @@ nome do layer criado com o buffer. | ||
| 1241 | include_once "../pacotes/phpxbase/api_conversion.php"; | 1244 | include_once "../pacotes/phpxbase/api_conversion.php"; |
| 1242 | $nomebuffer = nomeRandomico(); | 1245 | $nomebuffer = nomeRandomico(); |
| 1243 | $nomeshp = $this->diretorio."/".$nomebuffer; | 1246 | $nomeshp = $this->diretorio."/".$nomebuffer; |
| 1244 | - //pega os shapes selecionados | ||
| 1245 | - carregaquery($this->arquivo,&$this->layer,&$this->mapa); | ||
| 1246 | - $sopen = $this->layer->open(); | ||
| 1247 | - if($sopen == MS_FAILURE){return "erro";} | ||
| 1248 | - $items = pegaItens($this->layer); | ||
| 1249 | - $this->layer->open(); | ||
| 1250 | - $res_count = $this->layer->getNumresults(); | ||
| 1251 | - $buffers = array(); | ||
| 1252 | - //pega um shape especifico | ||
| 1253 | - for ($i = 0; $i < $res_count; ++$i) | ||
| 1254 | - { | ||
| 1255 | - $result = $this->layer->getResult($i); | ||
| 1256 | - $shp_index = $result->shapeindex; | ||
| 1257 | - $shape = $this->layer->getfeature($shp_index,-1); | 1247 | + $listaShapes = array(); |
| 1248 | + if($this->nome != ""){ | ||
| 1249 | + //pega os shapes selecionados | ||
| 1250 | + carregaquery($this->arquivo,&$this->layer,&$this->mapa); | ||
| 1251 | + $sopen = $this->layer->open(); | ||
| 1252 | + if($sopen == MS_FAILURE){return "erro";} | ||
| 1253 | + $items = pegaItens($this->layer); | ||
| 1254 | + $this->layer->open(); | ||
| 1255 | + $res_count = $this->layer->getNumresults(); | ||
| 1256 | + $buffers = array(); | ||
| 1257 | + //pega um shape especifico | ||
| 1258 | + for ($i = 0; $i < $res_count; ++$i) | ||
| 1259 | + { | ||
| 1260 | + $result = $this->layer->getResult($i); | ||
| 1261 | + $shp_index = $result->shapeindex; | ||
| 1262 | + $listaShapes[] = $this->layer->getfeature($shp_index,-1); | ||
| 1263 | + } | ||
| 1264 | + $fechou = $this->layer->close(); | ||
| 1265 | + } | ||
| 1266 | + else{ | ||
| 1267 | + $s = ms_shapeObjFromWkt($wkt); | ||
| 1268 | + $s->values["ID"] = 0; | ||
| 1269 | + $items[] = "ID"; | ||
| 1270 | + $listaShapes[] = $s; | ||
| 1271 | + } | ||
| 1272 | + foreach($listaShapes as $shape){ | ||
| 1258 | //calcula a extensão geografica | 1273 | //calcula a extensão geografica |
| 1259 | $rect = $shape->bounds; | 1274 | $rect = $shape->bounds; |
| 1260 | $projInObj = ms_newprojectionobj("proj=latlong"); | 1275 | $projInObj = ms_newprojectionobj("proj=latlong"); |
| @@ -1283,11 +1298,9 @@ nome do layer criado com o buffer. | @@ -1283,11 +1298,9 @@ nome do layer criado com o buffer. | ||
| 1283 | $buffers = array($ns); | 1298 | $buffers = array($ns); |
| 1284 | $shapes = array($shapes[0]); | 1299 | $shapes = array($shapes[0]); |
| 1285 | } | 1300 | } |
| 1286 | - $fechou = $this->layer->close(); | ||
| 1287 | //gera o novo arquivo shape file | 1301 | //gera o novo arquivo shape file |
| 1288 | // cria o shapefile | 1302 | // cria o shapefile |
| 1289 | $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); | 1303 | $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); |
| 1290 | - $items = pegaItens($this->layer); | ||
| 1291 | // cria o dbf | 1304 | // cria o dbf |
| 1292 | $def = array(); | 1305 | $def = array(); |
| 1293 | $def[] = array("i3geo","C","254"); | 1306 | $def[] = array("i3geo","C","254"); |
classesphp/mapa_controle.php
| @@ -464,7 +464,7 @@ Salva o mapa acrescentando um novo layer com o buffer. | @@ -464,7 +464,7 @@ Salva o mapa acrescentando um novo layer com o buffer. | ||
| 464 | include_once("classe_analise.php"); | 464 | include_once("classe_analise.php"); |
| 465 | copiaSeguranca($map_file); | 465 | copiaSeguranca($map_file); |
| 466 | $m = new Analise($map_file,$tema,$locaplic,$ext); | 466 | $m = new Analise($map_file,$tema,$locaplic,$ext); |
| 467 | - $retorno = $m->criaBuffer($distancia,$locaplic,$unir); | 467 | + $retorno = $m->criaBuffer($distancia,$locaplic,$unir,$wkt); |
| 468 | $m->salva(); | 468 | $m->salva(); |
| 469 | $_SESSION["contadorsalva"]++; | 469 | $_SESSION["contadorsalva"]++; |
| 470 | //limpa selecao | 470 | //limpa selecao |
| @@ -0,0 +1,184 @@ | @@ -0,0 +1,184 @@ | ||
| 1 | +<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/javascript"); ?> | ||
| 2 | +/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ | ||
| 3 | +/* | ||
| 4 | +Title: Buffer (entorno) em um ponto | ||
| 5 | + | ||
| 6 | +Arquivo: | ||
| 7 | + | ||
| 8 | +i3geo/ferramentas/bufferpt/index.js.php | ||
| 9 | + | ||
| 10 | +Licenca: | ||
| 11 | + | ||
| 12 | +GPL2 | ||
| 13 | + | ||
| 14 | +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | ||
| 15 | + | ||
| 16 | +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | ||
| 17 | +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | ||
| 18 | + | ||
| 19 | +Este programa é software livre; você pode redistribuí-lo | ||
| 20 | +e/ou modificá-lo sob os termos da Licença Pública Geral | ||
| 21 | +GNU conforme publicada pela Free Software Foundation; | ||
| 22 | + | ||
| 23 | +Este programa é distribuído na expectativa de que seja útil, | ||
| 24 | +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
| 25 | +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
| 26 | +Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
| 27 | +Você deve ter recebido uma cópia da Licença Pública Geral do | ||
| 28 | +GNU junto com este programa; se não, escreva para a | ||
| 29 | +Free Software Foundation, Inc., no endereço | ||
| 30 | +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
| 31 | +*/ | ||
| 32 | +if(typeof(i3GEOF) === 'undefined'){ | ||
| 33 | + i3GEOF = []; | ||
| 34 | +} | ||
| 35 | +/* | ||
| 36 | +Classe: i3GEOF.bufferpt | ||
| 37 | + | ||
| 38 | +Cria um novo tema com um polígono de entorno para uma determinada coordenada enviada como parâmetro | ||
| 39 | + | ||
| 40 | +*/ | ||
| 41 | +i3GEOF.bufferpt = { | ||
| 42 | + /* | ||
| 43 | + Propriedade: x | ||
| 44 | + | ||
| 45 | + Coordenada x (longitude) do ponto | ||
| 46 | + */ | ||
| 47 | + x: 0, | ||
| 48 | + /* | ||
| 49 | + Propriedade: y | ||
| 50 | + | ||
| 51 | + Coordenada y (latitude) do ponto | ||
| 52 | + */ | ||
| 53 | + y: 0, | ||
| 54 | + /* | ||
| 55 | + Variavel: aguarde | ||
| 56 | + | ||
| 57 | + Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. | ||
| 58 | + */ | ||
| 59 | + aguarde: "", | ||
| 60 | + /* | ||
| 61 | + Function: inicia | ||
| 62 | + | ||
| 63 | + Inicia a ferramenta. É chamado por criaJanelaFlutuante | ||
| 64 | + | ||
| 65 | + Parametro: | ||
| 66 | + | ||
| 67 | + iddiv {String} - id do div que receberá o conteudo HTML da ferramenta | ||
| 68 | + */ | ||
| 69 | + inicia: function(iddiv){ | ||
| 70 | + var box; | ||
| 71 | + try{ | ||
| 72 | + $i(iddiv).innerHTML += i3GEOF.bufferpt.html(); | ||
| 73 | + new YAHOO.widget.Button( | ||
| 74 | + "i3GEObufferptbotao2", | ||
| 75 | + {onclick:{fn: i3GEOF.bufferpt.atualizaBox}} | ||
| 76 | + ); | ||
| 77 | + new YAHOO.widget.Button( | ||
| 78 | + "i3GEObufferptbotao1", | ||
| 79 | + {onclick:{fn: i3GEOF.bufferpt.executa}} | ||
| 80 | + ); | ||
| 81 | + } | ||
| 82 | + catch(erro){alert(erro);} | ||
| 83 | + }, | ||
| 84 | + /* | ||
| 85 | + Function: html | ||
| 86 | + | ||
| 87 | + Gera o código html para apresentação das opções da ferramenta | ||
| 88 | + | ||
| 89 | + Retorno: | ||
| 90 | + | ||
| 91 | + String com o código html | ||
| 92 | + */ | ||
| 93 | + html:function(){ | ||
| 94 | + var ins = '' + | ||
| 95 | + '<p class=paragrafo >Distância em metros ao redor do ponto</p>' + | ||
| 96 | + $inputText("","","i3GEOFbufferptDistancia","",10,0) + | ||
| 97 | + '<br><br><p class=paragrafo ><input id=i3GEObufferptbotao1 size=16 type=button value="Criar"/>'; | ||
| 98 | + return ins; | ||
| 99 | + }, | ||
| 100 | + /* | ||
| 101 | + Function: criaJanelaFlutuante | ||
| 102 | + | ||
| 103 | + Cria a janela flutuante para controle da ferramenta. | ||
| 104 | + | ||
| 105 | + Os parâmetros x e y são utilizados para a definição das propriedades i3GEOF.bufferpt.x e i3GEOF.bufferpt.y. Se não forem fornecidos, | ||
| 106 | + seus valores permanecerão como 0. Essas propriedades podem também ser definidas pela função que ativou a ferramenta. | ||
| 107 | + | ||
| 108 | + Parametros: | ||
| 109 | + | ||
| 110 | + x {dd} - coordenada x (longitude) | ||
| 111 | + | ||
| 112 | + y {dd} - coordenada y (latitude) | ||
| 113 | + */ | ||
| 114 | + criaJanelaFlutuante: function(x,y){ | ||
| 115 | + var janela,divid,temp,titulo,cabecalho,minimiza; | ||
| 116 | + if(x) | ||
| 117 | + {i3GEOF.bufferpt.x = x;} | ||
| 118 | + if(y) | ||
| 119 | + {i3GEOF.bufferpt.y = y;} | ||
| 120 | + cabecalho = function(){}; | ||
| 121 | + minimiza = function(){ | ||
| 122 | + i3GEO.janela.minimiza("i3GEOF.bufferpt"); | ||
| 123 | + }; | ||
| 124 | + //cria a janela flutuante | ||
| 125 | + titulo = "Entorno de um ponto <a class=ajuda_usuario target=_blank href='" + i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=24&idajuda=3' > </a>"; | ||
| 126 | + janela = i3GEO.janela.cria( | ||
| 127 | + "210px", | ||
| 128 | + "110px", | ||
| 129 | + "", | ||
| 130 | + "", | ||
| 131 | + "", | ||
| 132 | + titulo, | ||
| 133 | + "i3GEOF.bufferpt", | ||
| 134 | + false, | ||
| 135 | + "hd", | ||
| 136 | + cabecalho, | ||
| 137 | + "" | ||
| 138 | + ); | ||
| 139 | + divid = janela[2].id; | ||
| 140 | + i3GEOF.bufferpt.aguarde = $i("i3GEOF.bufferpt_imagemCabecalho").style; | ||
| 141 | + i3GEOF.bufferpt.inicia(divid); | ||
| 142 | + }, | ||
| 143 | + /* | ||
| 144 | + Function: executa | ||
| 145 | + | ||
| 146 | + Altera o tamanho do mapa | ||
| 147 | + | ||
| 148 | + Veja: | ||
| 149 | + | ||
| 150 | + <MUDATAMANHO> | ||
| 151 | + */ | ||
| 152 | + executa: function(){ | ||
| 153 | + try{ | ||
| 154 | + if(i3GEOF.bufferpt.aguarde.visibility === "visible") | ||
| 155 | + {return;} | ||
| 156 | + var distancia = $i("i3GEOFbufferptDistancia").value, | ||
| 157 | + p, | ||
| 158 | + fim, | ||
| 159 | + cp; | ||
| 160 | + if (distancia*1 !== 0) | ||
| 161 | + { | ||
| 162 | + i3GEOF.bufferpt.aguarde.visibility = "visible"; | ||
| 163 | + fim = function(retorno){ | ||
| 164 | + i3GEOF.bufferpt.aguarde.visibility = "hidden"; | ||
| 165 | + if (retorno.data === undefined ) | ||
| 166 | + {alert("Erro. A operação demorou muito.");} | ||
| 167 | + else | ||
| 168 | + {i3GEO.atualiza();} | ||
| 169 | + }; | ||
| 170 | + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=criabuffer&tema=&distancia="+distancia+"&unir=nao&wkt=POINT("+i3GEOF.bufferpt.x+" "+i3GEOF.bufferpt.y+")"; | ||
| 171 | + cp = new cpaint(); | ||
| 172 | + cp.set_response_type("JSON"); | ||
| 173 | + cp.call(p,"criaBuffer",fim); | ||
| 174 | + } | ||
| 175 | + else | ||
| 176 | + {alert("Distancia invalida");} | ||
| 177 | + } | ||
| 178 | + catch(e){$i("i3GEObufferfim").innerHTML = "<p class='paragrafo' >Erro. "+e;i3GEO.janela.fechaAguarde();i3GEOF.bufferpt.aguarde.visibility = "hidden";} | ||
| 179 | + | ||
| 180 | + | ||
| 181 | + | ||
| 182 | + } | ||
| 183 | +}; | ||
| 184 | +<?php error_reporting(0);if(extension_loaded('zlib')){ob_end_flush();}?> | ||
| 0 | \ No newline at end of file | 185 | \ No newline at end of file |
ferramentas/identifica/index.js.php
| @@ -163,6 +163,14 @@ i3GEOF.identifica = { | @@ -163,6 +163,14 @@ i3GEOF.identifica = { | ||
| 163 | }; | 163 | }; |
| 164 | $i("i3GEOidentificaguia5").onclick = function(){ | 164 | $i("i3GEOidentificaguia5").onclick = function(){ |
| 165 | i3GEO.guias.mostraGuiaFerramenta("i3GEOidentificaguia5","i3GEOidentificaguia"); | 165 | i3GEO.guias.mostraGuiaFerramenta("i3GEOidentificaguia5","i3GEOidentificaguia"); |
| 166 | + new YAHOO.widget.Button("i3GEOidentificabotao2",{ | ||
| 167 | + onclick:{ | ||
| 168 | + fn: function(){ | ||
| 169 | + var js = i3GEO.configura.locaplic+"/ferramentas/bufferpt/index.js.php"; | ||
| 170 | + i3GEO.util.scriptTag(js,"i3GEOF.bufferpt.criaJanelaFlutuante("+i3GEOF.identifica.x+","+i3GEOF.identifica.y+")","i3GEOF.bufferpt_script"); | ||
| 171 | + } | ||
| 172 | + } | ||
| 173 | + }); | ||
| 166 | var ins = "",retorna; | 174 | var ins = "",retorna; |
| 167 | i3GEO.coordenadas.formato = "lista"; | 175 | i3GEO.coordenadas.formato = "lista"; |
| 168 | i3GEO.coordenadas.mostraCoordenadas(false,"i3GEOidentificacoordtexto",i3GEOF.identifica.x,i3GEOF.identifica.y); | 176 | i3GEO.coordenadas.mostraCoordenadas(false,"i3GEOidentificacoordtexto",i3GEOF.identifica.x,i3GEOF.identifica.y); |
| @@ -303,7 +311,7 @@ i3GEOF.identifica = { | @@ -303,7 +311,7 @@ i3GEOF.identifica = { | ||
| 303 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia1" style="text-align:center;left:0px;" >Temas visíveis</div></em></a></li>'; | 311 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia1" style="text-align:center;left:0px;" >Temas visíveis</div></em></a></li>'; |
| 304 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia2" style="text-align:center;left:0px;" >Todos</div></em></a></li>'; | 312 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia2" style="text-align:center;left:0px;" >Todos</div></em></a></li>'; |
| 305 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia4" style="text-align:center;left:0px;" >Etiquetas</div></em></a></li>'; | 313 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia4" style="text-align:center;left:0px;" >Etiquetas</div></em></a></li>'; |
| 306 | - ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia5" style="text-align:center;left:0px;" >XY</div></em></a></li>'; | 314 | + ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia5" style="text-align:center;left:0px;" >XY/buffer</div></em></a></li>'; |
| 307 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia3" style="text-align:center;left:0px;" >Propriedades</div></em></a></li>'; | 315 | ins += ' <li><a href="#ancora"><em><div id="i3GEOidentificaguia3" style="text-align:center;left:0px;" >Propriedades</div></em></a></li>'; |
| 308 | ins += ' </ul>'; | 316 | ins += ' </ul>'; |
| 309 | ins += '</div>'; | 317 | ins += '</div>'; |
| @@ -328,7 +336,7 @@ i3GEOF.identifica = { | @@ -328,7 +336,7 @@ i3GEOF.identifica = { | ||
| 328 | ins += ' <b>Valores para o ponto indicado no mapa<br></b>'; | 336 | ins += ' <b>Valores para o ponto indicado no mapa<br></b>'; |
| 329 | ins += ' <div id=i3GEOidentificacoord ></div><br>'; | 337 | ins += ' <div id=i3GEOidentificacoord ></div><br>'; |
| 330 | ins += ' <div id=i3GEOidentificacoordtexto style=text-align:left ></div>'; | 338 | ins += ' <div id=i3GEOidentificacoordtexto style=text-align:left ></div>'; |
| 331 | - | 339 | + ins += ' <br><br><input id=i3GEOidentificabotao2 size=20 type=button value="Criar entorno (buffer)" />'; |
| 332 | ins += ' </div>'; | 340 | ins += ' </div>'; |
| 333 | //ins += '</div> '; | 341 | //ins += '</div> '; |
| 334 | return ins; | 342 | return ins; |