Commit cb46e1466d0cb39a8298afb3f5c20708364f8894

Authored by Edmar Moretti
1 parent 45224a0a

Ferramenta de cálculo de custo

ferramentas/melhorcaminho/dependencias.php 0 → 100755
... ... @@ -0,0 +1,30 @@
  1 +<?php
  2 +/**
  3 + * Carrega os programas javascript necessarios para a ferramenta
  4 + * Esse programa e usado na tag <script> ou com a funcao scripttag do i3Geo
  5 + * Alem de carregar os scripts, carrega tambem o template no formato MUSTACHE, definindo a variavel
  6 + * javascript i3GEOF.melhorcaminho.MUSTACHE
  7 + * O template e substituido pelos valores definidos em index.js no momento da inicializacao da ferramenta
  8 + */
  9 +if(extension_loaded('zlib')){
  10 + ob_start('ob_gzhandler');
  11 +}
  12 +header("Content-type: text/javascript");
  13 +include("index.js");
  14 +include("dicionario.js");
  15 +echo "\n";
  16 +/**
  17 + * Inclui o template mustache do HTML usado para criar o conteudo da janela
  18 + */
  19 +echo 'i3GEOF.melhorcaminho.MUSTACHE = "';
  20 +$texto = file_get_contents("template_mst.html");
  21 +$texto = str_replace("\n", "", $texto);
  22 +$texto = str_replace("\r", "", $texto);
  23 +$texto = str_replace("\t", "", $texto);
  24 +$texto = str_replace('"', "'", $texto);
  25 +echo $texto;
  26 +echo '";';
  27 +if(extension_loaded('zlib')){
  28 + ob_end_flush();
  29 +}
  30 +?>
0 31 \ No newline at end of file
... ...
ferramentas/melhorcaminho/dicionario.js 0 → 100755
... ... @@ -0,0 +1,58 @@
  1 +//+$trad(1,i3GEOF.gradeDePoligonos.dicionario)+
  2 +i3GEOF.melhorcaminho.dicionario = {
  3 + 'ajuda' : [ {
  4 + pt : "O melhor caminho &eacute; calculado sobre uma imagem raster. Os valores dos pixels ser&atilde;o considerados como o custo.",
  5 + en : "",
  6 + es : ""
  7 + } ],
  8 + 'ajuda2' : [ {
  9 + pt : "O c&aacute;lculo &eacute; feito a partir de um ponto inicial e um final. Esses dois pontos podem ser apontados no mapa ou pode ser utilizada uma camada j&aacute; existente no mapa.",
  10 + en : "",
  11 + es : ""
  12 + } ],
  13 + 'ajuda3' : [ {
  14 + pt : "O resultado do c&aacute;lculo ser&aacute; inclu&iacute;do no mapa como uma nova camada com dados no formato shapefile.",
  15 + en : "",
  16 + es : ""
  17 + } ],
  18 + 'raster' : [ {
  19 + pt : "Escolha o tema que cont&eacute;m a imagem raster que ser&aacute; utilizada para tra&ccedil;ar o melhor caminho",
  20 + en : "",
  21 + es : ""
  22 + } ],
  23 + 'temas' : [ {
  24 + pt : "Escolha o tema que ser&aacute; utilizado para obter o ponto inicial e final. No caso de tema pontual, ser&atilde;o considerados o primeiro e o &uacute;ltimo ponto. No caso de tema linear, ser&atilde;o considerados o primeiro e o &uacute;ltimo n&oacute;. No caso de tema poligonal, ser&atilde;o considerados o primeiro n&oacute; e o centr&oacute;ide. <br>Voc&ecirc; pode pular essa etapa caso queira escolher os pontos clicando no mapa.",
  25 + en : "",
  26 + es : ""
  27 + } ],
  28 + 'grau' : [ {
  29 + pt : "Grau",
  30 + en : "",
  31 + es : ""
  32 + } ],
  33 + 'minuto' : [ {
  34 + pt : "Minuto",
  35 + en : "",
  36 + es : ""
  37 + } ],
  38 + 'segundo' : [ {
  39 + pt : "Segundo",
  40 + en : "",
  41 + es : ""
  42 + } ],
  43 + 'coord' : [ {
  44 + pt : "Coordenadas do ponto inicial superior esquerdo (utilize o sinal negativo no grau quando ao sul do equador e a oeste). <b>Voc&ecirc; pode clicar no mapa para pegar o ponto.</b>",
  45 + en : "",
  46 + es : ""
  47 + } ],
  48 + 'pti' : [ {
  49 + pt : "Ponto inicial (A). Voc&ecirc; pode clicar no mapa ou digitar novos valores",
  50 + en : "",
  51 + es : ""
  52 + } ],
  53 + 'ptf' : [ {
  54 + pt : "Ponto final (B). Voc&ecirc; pode clicar no mapa ou digitar novos valores",
  55 + en : "",
  56 + es : ""
  57 + } ]
  58 +};
... ...
ferramentas/melhorcaminho/exec.php 0 → 100755
... ... @@ -0,0 +1,48 @@
  1 +<?php
  2 +include_once(dirname(__FILE__)."/../inicia.php");
  3 +//
  4 +//faz a busca da fun&ccedil;&atilde;o que deve ser executada
  5 +//
  6 +$retorno = ""; //string que ser&aacute; retornada ao browser via JSON
  7 +switch (strtoupper($funcao))
  8 +{
  9 + case "SHAPE2PONTOS":
  10 + $mapa = ms_newMapObj($map_file);
  11 + $layer = $mapa->getlayerbyname($tema);
  12 + $shapes = retornaShapesMapext($layer,$mapa);
  13 +
  14 + //quando ponto 0
  15 + if($layer->type == 0){
  16 + $objLine = $shapes[0]->line;
  17 + $pontoA = $objLine0(0);
  18 + $objLine = $shapes[count($shapes) - 1]->line;
  19 + $pontoB = $objLine(0);
  20 + }
  21 + //quando linha 1
  22 + if($layer->type == 1){
  23 + $objLine = $shapes[0]->line;
  24 + $pontoA = $objLine->point(0);
  25 + $pontoB = $objLine->point($objLine->numpoints - 1);
  26 + }
  27 + //quando poligono 2
  28 + if($layer->type == 2){
  29 + $objLine = $shapes[0]->line(0);
  30 + $pontoA = $objLine->point(0);
  31 + $pontoB = $shapes[0]->getCentroid();
  32 + }
  33 + $retorno = array(
  34 + "ax"=>$pontoA->x,
  35 + "ay"=>$pontoA->y,
  36 + "bx"=>$pontoB->x,
  37 + "by"=>$pontoB->y
  38 + );
  39 + break;
  40 +}
  41 +if (!connection_aborted()){
  42 + if(isset($map_file) && isset($postgis_mapa) && $map_file != "")
  43 + restauraCon($map_file,$postgis_mapa);
  44 + cpjson($retorno);
  45 +}
  46 +else
  47 +{exit();}
  48 +?>
0 49 \ No newline at end of file
... ...
ferramentas/melhorcaminho/exemplo.png 0 → 100644

14.3 KB

ferramentas/melhorcaminho/index.js 0 → 100644
... ... @@ -0,0 +1,380 @@
  1 +/*
  2 +Title: Melhor caminho
  3 +
  4 +Calcula o melhor caminho entre dois pontos com base em uma imagem raster
  5 +
  6 +Arquivo:
  7 +
  8 +i3geo/ferramentas/melhorcaminho/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&eacute;rio do Meio Ambiente Brasil
  17 +Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
  18 +
  19 +Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
  20 +e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
  21 +GNU conforme publicada pela Free Software Foundation;
  22 +
  23 +Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
  24 +por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
  25 +de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
  26 +Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
  27 +Voc&ecirc; deve ter recebido uma c&oacute;pia da Licen&ccedil;a P&uacute;blica Geral do
  28 +GNU junto com este programa; se n&atilde;o, escreva para a
  29 +Free Software Foundation, Inc., no endere&ccedil;o
  30 +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  31 +*/
  32 +
  33 +if(typeof(i3GEOF) === 'undefined'){
  34 + var i3GEOF = {};
  35 +}
  36 +/*
  37 +Classe: i3GEOF.melhorcaminho
  38 +
  39 +*/
  40 +i3GEOF.melhorcaminho = {
  41 + /*
  42 + Variavel: aguarde
  43 +
  44 + Estilo do objeto DOM com a imagem de aguarde existente no cabe&ccedil;alho da janela.
  45 + */
  46 + aguarde: "",
  47 + COORDENADASTEMA: "",
  48 + /*
  49 + Para efeitos de compatibilidade antes da vers&atilde;o 4.7 que n&atilde;o tinha dicion&aacute;rio
  50 + */
  51 + criaJanelaFlutuante: function(){
  52 + i3GEOF.melhorcaminho.iniciaDicionario();
  53 + },
  54 + /*
  55 + Function: iniciaDicionario
  56 +
  57 + Carrega o dicion&aacute;rio e chama a fun&ccedil;&atilde;o que inicia a ferramenta
  58 +
  59 + O Javascript &eacute; carregado com o id i3GEOF.nomedaferramenta.dicionario_script
  60 + */
  61 + iniciaDicionario: function(){
  62 + if(typeof(i3GEOF.melhorcaminho.dicionario) === 'undefined'){
  63 + i3GEO.util.scriptTag(
  64 + i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/dicionario.js",
  65 + "i3GEOF.melhorcaminho.iniciaJanelaFlutuante()",
  66 + "i3GEOF.melhorcaminho.dicionario_script"
  67 + );
  68 + }
  69 + else{
  70 + i3GEOF.melhorcaminho.iniciaJanelaFlutuante();
  71 + }
  72 + },
  73 + /*
  74 + Function: inicia
  75 +
  76 + Inicia a ferramenta. &Eacute; chamado por criaJanelaFlutuante
  77 +
  78 + Parametro:
  79 +
  80 + iddiv {String} - id do div que receber&aacute; o conteudo HTML da ferramenta
  81 + */
  82 + inicia: function(iddiv){
  83 + try{
  84 + i3GEO.util.mudaCursor(i3GEO.configura.cursores,"default",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);
  85 + $i(iddiv).innerHTML += i3GEOF.melhorcaminho.html();
  86 + i3GEOF.melhorcaminho.t0();
  87 + }
  88 + catch(erro){i3GEO.janela.tempoMsg(erro);}
  89 + },
  90 + /*
  91 + Function: html
  92 +
  93 + Gera o c&oacute;digo html para apresenta&ccedil;&atilde;o das op&ccedil;&otilde;es da ferramenta
  94 +
  95 + Retorno:
  96 +
  97 + String com o c&oacute;digo html
  98 + */
  99 + html:function(){
  100 + var ins = '';
  101 + ins += '<div style="padding:5px;background-color:#F2F2F2;top:0px;left:0px;display:block;width:98%;" id="i3GEOmelhorcaminhoresultado" >';
  102 + ins += '</div>';
  103 + ins += '<div style="top:10px;left:0px;display:block;width:98%;color:red" id="i3GEOmelhorcaminhofim" >';
  104 + ins += '</div>';
  105 + return ins;
  106 + },
  107 + /*
  108 + Function: iniciaJanelaFlutuante
  109 +
  110 + Cria a janela flutuante para controle da ferramenta.
  111 + */
  112 + iniciaJanelaFlutuante: function(){
  113 + var minimiza,cabecalho,janela,divid,titulo,temp;
  114 + if($i("i3GEOF.melhorcaminho")){
  115 + return;
  116 + }
  117 + //cria a janela flutuante
  118 + titulo = $trad("melhorcaminho")+" <a class=ajuda_usuario target=_blank href='" + i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=3&idajuda=14' >&nbsp;&nbsp;&nbsp;</a>";
  119 + cabecalho = function(){
  120 + i3GEO.barraDeBotoes.execBotao("pan");
  121 + };
  122 + minimiza = function(){
  123 + i3GEO.janela.minimiza("i3GEOF.melhorcaminho");
  124 + };
  125 + janela = i3GEO.janela.cria(
  126 + "400px",
  127 + "190px",
  128 + "",
  129 + "",
  130 + "",
  131 + titulo,
  132 + "i3GEOF.melhorcaminho",
  133 + false,
  134 + "hd",
  135 + cabecalho,
  136 + minimiza,
  137 + "",
  138 + false,
  139 + i3GEO.configura.locaplic+"/imagens/oxygen/16x16/accessories-calculator.png"
  140 + );
  141 + divid = janela[2].id;
  142 + janela[0].setFooter("<div id=i3GEOF.melhorcaminho_rodape style=background-color:#F2F2F2; ></div>");
  143 + i3GEOF.melhorcaminho.aguarde = $i("i3GEOF.melhorcaminho_imagemCabecalho").style;
  144 + i3GEOF.melhorcaminho.inicia(divid);
  145 + temp = function(){
  146 + i3GEO.eventos.cliquePerm.ativa();
  147 + i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()","i3GEOF.melhorcaminho.capturaPontoB()"]);
  148 + };
  149 + YAHOO.util.Event.addListener(janela[0].close, "click", temp);
  150 + },
  151 + t0: function()
  152 + {
  153 + var ins = "<img class=i3GeoExemploImg src='"+i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/exemplo.png' />" +
  154 + "<p class='paragrafo' >"+$trad('ajuda',i3GEOF.melhorcaminho.dicionario) +
  155 + "<p class='paragrafo'>"+$trad('ajuda2',i3GEOF.melhorcaminho.dicionario) +
  156 + "<p class='paragrafo'>"+$trad('ajuda3',i3GEOF.melhorcaminho.dicionario);
  157 + i3GEO.util.proximoAnterior("","i3GEOF.melhorcaminho.t1()",ins,"i3GEOF.melhorcaminho.t0","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  158 + },
  159 + t1: function(){
  160 + var ins = "<p class='paragrafo'>"+$trad('raster',i3GEOF.melhorcaminho.dicionario) +" :<br>" +
  161 + "<div class='styled-select' id='i3GEOmelhorcaminhoDivRaster'></div>" +
  162 + "<br>";
  163 + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t0()","i3GEOF.melhorcaminho.t2()",ins,"i3GEOF.melhorcaminho.t1","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  164 + i3GEOF.melhorcaminho.comboTemasRaster();
  165 + },
  166 + t2: function(){
  167 + var ins = "<p class='paragrafo'>"+$trad('temas',i3GEOF.melhorcaminho.dicionario) +" :<br>" +
  168 + "<div class='styled-select' id='i3GEOmelhorcaminhoDivTema'></div>" +
  169 + "<br>";
  170 + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t1()","i3GEOF.melhorcaminho.t3()",ins,"i3GEOF.melhorcaminho.t2","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  171 + i3GEOF.melhorcaminho.comboTemas();
  172 + },
  173 + t3: function(){
  174 + var ins = "<p class='paragrafo'><b>"+$trad('pti',i3GEOF.melhorcaminho.dicionario)+"</b>";
  175 + ins += "<p class='paragrafo'>X (long): ";
  176 + ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"</p>";
  177 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;' ><input id='i3GEOmelhorcaminhoxg' title='grau' type=text value='1'/></div>";
  178 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;margin-left:10px;margin-right:10px;' ><input id='i3GEOmelhorcaminhoxm' title='minuto' type=text value='00'/></div>";
  179 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='margin-left:10px;' ><input id='i3GEOmelhorcaminhoxs' title='segundo' type=text value='00.00'/></div>";
  180 +
  181 + ins += "<br><p class='paragrafo'>Y (lat): ";
  182 + ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"</p>";
  183 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;' ><input id='i3GEOmelhorcaminhoyg' title='grau' type=text value='1'/></div>";
  184 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;margin-left:10px;' ><input id='i3GEOmelhorcaminhoym' title='minuto' type=text value='00'/></div>";
  185 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;margin-left:10px;' ><input id='i3GEOmelhorcaminhoys' title='segundo' type=text value='00.00'/></div>";
  186 +
  187 + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  188 + i3GEO.eventos.cliquePerm.desativa();
  189 + i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]);
  190 + //calcula as coordenadas em DD
  191 + dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay);
  192 + dmsx = dms[0].split(" ");
  193 + dmsy = dms[1].split(" ");
  194 + $i("i3GEOmelhorcaminhoxg").value = dmsx[0];
  195 + $i("i3GEOmelhorcaminhoxm").value = dmsx[1];
  196 + $i("i3GEOmelhorcaminhoxs").value = dmsx[2];
  197 + $i("i3GEOmelhorcaminhoyg").value = dmsy[0];
  198 + $i("i3GEOmelhorcaminhoym").value = dmsy[1];
  199 + $i("i3GEOmelhorcaminhoys").value = dmsy[2];
  200 + },
  201 + t4: function(){
  202 + var ins = "<p class='paragrafo'><b>"+$trad('ptf',i3GEOF.melhorcaminho.dicionario)+"</b>";
  203 + ins += "<p class='paragrafo'>X (long): ";
  204 + ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"</p>";
  205 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;' ><input id='i3GEOmelhorcaminhoixg' title='grau' type=text value='1'/></div>";
  206 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;margin-left:10px;margin-right:10px;' ><input id='i3GEOmelhorcaminhoixm' title='minuto' type=text value='00'/></div>";
  207 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='margin-left:10px;' ><input id='i3GEOmelhorcaminhoixs' title='segundo' type=text value='00.00'/></div>";
  208 +
  209 + ins += "<br><p class='paragrafo'>Y (lat): ";
  210 + ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"</p>";
  211 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;' ><input id='i3GEOmelhorcaminhoiyg' title='grau' type=text value='1'/></div>";
  212 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;margin-left:10px;' ><input id='i3GEOmelhorcaminhoiym' title='minuto' type=text value='00'/></div>";
  213 + ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;margin-left:10px;' ><input id='i3GEOmelhorcaminhoiys' title='segundo' type=text value='00.00'/></div>";
  214 +
  215 + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","i3GEOF.melhorcaminho.t5()",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  216 +
  217 + i3GEO.eventos.cliquePerm.desativa();
  218 + i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]);
  219 + //calcula as coordenadas em DD
  220 + dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by);
  221 + dmsx = dms[0].split(" ");
  222 + dmsy = dms[1].split(" ");
  223 + $i("i3GEOmelhorcaminhoixg").value = dmsx[0];
  224 + $i("i3GEOmelhorcaminhoixm").value = dmsx[1];
  225 + $i("i3GEOmelhorcaminhoixs").value = dmsx[2];
  226 + $i("i3GEOmelhorcaminhoiyg").value = dmsy[0];
  227 + $i("i3GEOmelhorcaminhoiym").value = dmsy[1];
  228 + $i("i3GEOmelhorcaminhoiys").value = dmsy[2];
  229 + },
  230 + t5: function(){
  231 + var ins = "<p class='paragrafo'><b>"+$trad('numero',i3GEOF.melhorcaminho.dicionario)+"</b>";
  232 + ins += "<p class='paragrafo'>X</p>";
  233 + ins += "<div class='i3geoForm i3geoFormIconeEdita' ><input id='i3GEOmelhorcaminhonptx' title='pontos em x' type=text value='10'/></div>";
  234 + ins += "<br><p class='paragrafo'>Y";
  235 + ins += "<div class='i3geoForm i3geoFormIconeEdita' ><input id='i3GEOmelhorcaminhonpty' title='pontos em y' type=text value='10'/></div>";
  236 +
  237 + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  238 + },
  239 + t6: function(){
  240 + var b,ins = "<p class='paragrafo'><b>"+$trad('adicionaTema',i3GEOF.melhorcaminho.dicionario)+"</b>";
  241 + ins += "<p class='paragrafo'><input id=i3GEOmelhorcaminhobotao1 size=18 class=executar type='button' value='"+$trad('criaGrade',i3GEOF.melhorcaminho.dicionario)+"' />";
  242 +
  243 + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
  244 + b = new YAHOO.widget.Button(
  245 + "i3GEOmelhorcaminhobotao1",
  246 + {onclick:{fn: i3GEOF.melhorcaminho.criaGrade}}
  247 + );
  248 + b.addClass("rodar");
  249 + },
  250 + comboTemasRaster: function(){
  251 + i3GEO.util.comboTemas(
  252 + "i3GEOmelhorcaminhoRaster",
  253 + function(retorno){
  254 + $i("i3GEOmelhorcaminhoDivRaster").innerHTML = retorno.dados;
  255 + $i("i3GEOmelhorcaminhoDivRaster").style.display = "block";
  256 + },
  257 + "i3GEOmelhorcaminhoDivRaster",
  258 + "",
  259 + false,
  260 + "raster",
  261 + " "
  262 + );
  263 + },
  264 + comboTemas: function(){
  265 + i3GEO.util.comboTemas(
  266 + "i3GEOmelhorcaminhoTema",
  267 + function(retorno){
  268 + $i("i3GEOmelhorcaminhoDivTema").innerHTML = retorno.dados;
  269 + $i("i3GEOmelhorcaminhoDivTema").style.display = "block";
  270 + if ($i("i3GEOmelhorcaminhoTema")){
  271 + $i("i3GEOmelhorcaminhoTema").onchange = function(){
  272 + //captura o ponto inicial e final
  273 + i3GEOF.melhorcaminho.shape2pontos($i("i3GEOmelhorcaminhoTema").value);
  274 + };
  275 + }
  276 + },
  277 + "i3GEOmelhorcaminhoDivTema",
  278 + "",
  279 + false,
  280 + "naoraster",
  281 + " "
  282 + );
  283 + },
  284 + shape2pontos: function(tema){
  285 + var p, par, retorno
  286 + p = i3GEO.configura.locaplic + "/ferramentas/melhorcaminho/exec.php?g_sid="+i3GEO.configura.sid;
  287 + par = "funcao=shape2pontos&tema=" + tema;
  288 + retorno = function(retorno) {
  289 + var dms,dmsx,dmsy;
  290 + i3GEO.janela.fechaAguarde("shape2pontos");
  291 + i3GEOF.melhorcaminho.COORDENADASTEMA = retorno.data;
  292 + i3GEOF.melhorcaminho.t3();
  293 + };
  294 + i3GEO.janela.abreAguarde("shape2pontos", $trad("o1"));
  295 + cpJSON.call(p, "foo", retorno, par);
  296 + },
  297 + capturaPontoA: function(){
  298 + i3GEO.eventos.cliqueCapturaPt(
  299 + "i3GEOmelhorcaminhoxg",
  300 + "i3GEOmelhorcaminhoxm",
  301 + "i3GEOmelhorcaminhoxs",
  302 + "i3GEOmelhorcaminhoyg",
  303 + "i3GEOmelhorcaminhoym",
  304 + "i3GEOmelhorcaminhoys"
  305 + );
  306 + },
  307 + capturaPontoB: function(){
  308 + i3GEO.eventos.cliqueCapturaPt(
  309 + "i3GEOmelhorcaminhoixg",
  310 + "i3GEOmelhorcaminhoixm",
  311 + "i3GEOmelhorcaminhoixs",
  312 + "i3GEOmelhorcaminhoiyg",
  313 + "i3GEOmelhorcaminhoiym",
  314 + "i3GEOmelhorcaminhoiys"
  315 + );
  316 + },
  317 + /*
  318 + Function: criaGrade
  319 +
  320 + Cria a grade e adiciona um novo tema ao mapa
  321 +
  322 + Veja:
  323 +
  324 + <GRADEDEPOL>
  325 + */
  326 + criaGrade: function(){
  327 + try{
  328 + if(i3GEOF.melhorcaminho.aguarde.visibility === "visible")
  329 + {return;}
  330 + i3GEOF.melhorcaminho.aguarde.visibility = "visible";
  331 + var dx,dy,ix,iy,nptx,npty,fim,p,cp,proj="nao";
  332 + if(!$i("i3GEOmelhorcaminhoProj").checked){
  333 + dx = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoxg").value,$i("i3GEOmelhorcaminhoxm").value,$i("i3GEOmelhorcaminhoxs").value);
  334 + dy = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoyg").value,$i("i3GEOmelhorcaminhoym").value,$i("i3GEOmelhorcaminhoys").value);
  335 + }
  336 + else{
  337 + proj = "sim";
  338 + dx = $i("i3GEOmelhorcaminhoxg").value;
  339 + dy = $i("i3GEOmelhorcaminhoyg").value;
  340 + }
  341 + ix = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoixg").value,$i("i3GEOmelhorcaminhoixm").value,$i("i3GEOmelhorcaminhoixs").value);
  342 + iy = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoiyg").value,$i("i3GEOmelhorcaminhoiym").value,$i("i3GEOmelhorcaminhoiys").value);
  343 + nptx = $i("i3GEOmelhorcaminhonptx").value;
  344 + npty = $i("i3GEOmelhorcaminhonpty").value;
  345 + if ((dx == 0) || (dy == 0))
  346 + {i3GEO.janela.tempoMsg($trad('msg',i3GEOF.melhorcaminho.dicionario));return;}
  347 + if ((nptx == 0) || (npty == 0))
  348 + {i3GEO.janela.tempoMsg($trad('msg2',i3GEOF.melhorcaminho.dicionario));return;}
  349 + if (nptx * npty > 10000)
  350 + {i3GEO.janela.tempoMsg($trad('msg2',i3GEOF.melhorcaminho.dicionario));return;}
  351 + fim = function(retorno){
  352 + i3GEOF.melhorcaminho.aguarde.visibility = "hidden";
  353 + if (retorno.data == undefined )
  354 + {$i("i3GEOmelhorcaminhofim").innerHTML = "<p class='paragrafo'>Erro. ";}
  355 + else
  356 + {i3GEO.atualiza("");}
  357 + };
  358 + p = i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/exec.php?g_sid="+i3GEO.configura.sid+"&proj="+proj+"&funcao=gradedepol&xdd="+dx+"&ydd="+dy+"&px="+ix+"&py="+iy+"&nptx="+nptx+"&npty="+npty;
  359 + cp = new cpaint();
  360 + cp.set_response_type("JSON");
  361 + cp.call(p,"melhorcaminho",fim);
  362 + }
  363 + catch(e){$i("i3GEOmelhorcaminhofim").innerHTML = "<p class='paragrafo' >Erro. "+e;i3GEOF.melhorcaminho.aguarde.visibility = "hidden";}
  364 + },
  365 + /*
  366 + Function: capturaPonto
  367 +
  368 + Captura um ponto no mapa e preenche os campos de coordenadas de in&iacute;cio da grade
  369 + */
  370 + capturaPonto: function(){
  371 + i3GEO.eventos.cliqueCapturaPt(
  372 + "i3GEOmelhorcaminhoixg",
  373 + "i3GEOmelhorcaminhoixm",
  374 + "i3GEOmelhorcaminhoixs",
  375 + "i3GEOmelhorcaminhoiyg",
  376 + "i3GEOmelhorcaminhoiym",
  377 + "i3GEOmelhorcaminhoiys"
  378 + );
  379 + }
  380 +};
... ...
ferramentas/melhorcaminho/template_mst.html 0 → 100755
... ... @@ -0,0 +1,2 @@
  1 +<div style='padding: 5px; background-color: #F2F2F2; top: 0px; left: 0px; display: block; width: 98%;' id='i3GEOmelhorcaminhoresultado'></div>
  2 +<div style='top: 10px; left: 0px; display: block; width: 98%; color: red' id='i3GEOmelhorcaminhofim'></div>
0 3 \ No newline at end of file
... ...
ferramentas/teste.phtml 0 → 100644
... ... @@ -0,0 +1,252 @@
  1 +<?php
  2 +//Utilize para testar a carga de uma ferramenta
  3 +//exemplo: http://localhost/i3geo/ferramentas/teste.phtml?f=i3GEO.analise.dialogo.melhorcaminho()
  4 +?>
  5 +
  6 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
  7 +<html>
  8 +<head>
  9 +<meta http-equiv="Category" content="i3Geo Mapa interativo MMA geoprocessamento sig mobile">
  10 +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
  11 +<title>i3GEO - OpenLayers</title>
  12 +<script src="../classesjs/i3geonaocompacto.js"></script>
  13 +<script src="../pacotes/openlayers/OpenLayers2131.js.php"></script>
  14 +<link rel="stylesheet" type="text/css" href="../css/black.css">
  15 +<style>
  16 +.olControlEditingToolbar1 div {
  17 + background-image: url(../mashups/openlayers.png);
  18 + background-repeat: no-repeat;
  19 + float: right;
  20 + right: 50px;
  21 + height: 29px;
  22 + margin: 2px;
  23 + width: 29px;
  24 + cursor: pointer;
  25 + top: 10px;
  26 +}
  27 +</style>
  28 +</head>
  29 +<body id="i3geo" style='margin-left: 7px; background: white;'>
  30 + <!-- inclui o nome do usuario logado -->
  31 + <div id="i3GEONomeLogin" style="position: absolute; left: 10px; top: 12px; font-size: 11px; z-index: 50000"></div>
  32 + <table id='mst' summary="" style='display: none;' width=100% cellspacing='0'>
  33 + <tr>
  34 + <td id="contemMenu" style="background: black; height: 30px; text-align: right; border-width: 0pt 0pt 1px; border-color: rgb(240, 240, 240)">
  35 + <!--menu suspenso-->
  36 + <div id="menus" style="height: 30px;"></div>
  37 + </td>
  38 + </tr>
  39 + <tr>
  40 + <td style="vertical-align: top; border-width: 0px;">
  41 + <table width="100%" style="vertical-align: top; border-width: 0px">
  42 + <tr>
  43 + <td class=verdeclaro id=contemImg>
  44 + <div id=corpoMapa style="position: relative; background-image: url('../imagens/i3geo1bw.jpg');"></div>
  45 + </td>
  46 + </tr>
  47 + </table>
  48 + </td>
  49 + </tr>
  50 + <tr>
  51 + <td>
  52 + <table style="width: 100%; height: 28px">
  53 + <tr>
  54 + <td class=fundoRodape style="width: 25%">
  55 + <!-- aqui ser&aacute; inclu&iacute;da a escala num&eacute;rica -->
  56 + <div id=escala style="margin: auto; text-align: right; left: 15px;"></div>
  57 + </td>
  58 + <td class=fundoRodape style="width: 5%"></td>
  59 + <td class=fundoRodape style="width: 40%">
  60 + <!-- aqui ser&aacute; inclu&iacute;do o gadget que mostra a coordenada geogr&aacute;fica da posi&ccedil;&atilde;o do mouse -->
  61 + <div id=localizarxy style="margin: auto; text-align: left; font-size: 10px; display: inline-table"></div>
  62 + </td>
  63 + <td class=fundoRodape style="width: 20%">
  64 + <!-- bot&atilde;o de compartilhamento em redes sociais-->
  65 + <!--<div id=i3GEOcompartilhar style="width: 170px; margin: auto; text-align: left; padding-top: 1px"></div> -->
  66 + <!-- aqui ser&aacute; inclu&iacute;do o contador de tempo quando o temporizador de redesenho do mapa estiver ativo -->
  67 + <div id=tempoRedesenho style="z-index: 100; position: absolute; top: 0px; color: green; background-color: black; width: 50px; display: none"></div>
  68 + </td>
  69 + <!-- aqui ser&atilde;o inclu&iacute;das as bandeiras que permitem a troca de idioma -->
  70 + <td class=fundoRodape style="width: 10%;">
  71 + <div id=seletorIdiomas style="right: 15px;"></div>
  72 + </td>
  73 + </tr>
  74 + </table>
  75 + </td>
  76 + </tr>
  77 + </table>
  78 + <table id="i3GEOlogoMarca" style='margin: 0px auto; box-shadow: 0 1px 13px gray; border-radius: 5px;'>
  79 + <tr>
  80 + <td style="height: 30px">
  81 + <div id=versaoi3geo></div>
  82 + <h2 style="font-weight: normal; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;">i3Geo - Software livre para cria&ccedil;&atilde;o de mapas interativos e geoprocessamento</h2>
  83 + <h3 style="font-weight: normal; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;">Baseado no Mapserver, &eacute; licenciado sob GPL e integra o Portal do Software P&uacute;blico Brasileiro</h3>
  84 + </td>
  85 + </tr>
  86 + <tr>
  87 + <td style="padding: 10px;">
  88 + <img style="width: 560px; height: 81px" alt="" src='../imagens/logo_inicio.png'>
  89 + </td>
  90 + </tr>
  91 + <tr>
  92 + <td>
  93 + <!--
  94 + <script id="ohloh" type="text/javascript" src="http://www.ohloh.net/p/150688/widgets/project_users.js?style=red"></script>
  95 + -->
  96 + </td>
  97 + </tr>
  98 + </table>
  99 +
  100 + <div id="i3GEOguiaMovel" style="visibility: hidden; position: absolute; display: block; border: 0px solid white; text-align: left; z-index: 2000; background-color: none">
  101 + <div style="cursor: pointer; position: absolute; top: 50%; margin-top: -65px; width: 30px; z-index: 5000; left: 18px; background-color: lightgray; border: 1px solid lightgray; border-radius: 5px; opacity: 0.8;box-shadow:-1px 0px 1px 1px rgba(200, 200, 200, 0.81)">
  102 + <!-- <img src='../imagens/openbars1.png' style="width: 48px; position: absolute; left: -16px; height: 418px; top: -160px;">-->
  103 + <div id="iconeGuia_temas" ></div>
  104 + <div id="iconeGuia_adiciona" style="margin-top: 3px;"></div>
  105 + <div id="iconeGuia_legenda" style="margin-top: 3px;"></div>
  106 + </div>
  107 +
  108 + <!--
  109 + <img id="i3GEOguiaMovelPuxador" onclick='i3GEO.guias.guiaMovel.abreFecha()' style='z-index:2;border:solid 0px white;left:0px;position:absolute;top:0px' width='0px' src='../imagens/openbars.png' >
  110 + -->
  111 + <div id="i3GEOguiaMovelMolde" style="top: 0px; box-shadow: 0 2px 10px 0 #888888; position: absolute; display: none; border: 0px solid white; text-align: left; z-index: 1000; background-color: gray">
  112 + <!--
  113 + <div id="i3GEOguiaMovelIcones" style='overflow:none;left:0px;display:none;position:absolute;top:0px;text-align:center;height:0px;width:0px;border:solid 0px white;background-color:white' ></div>
  114 + -->
  115 + <div id="i3GEOguiaMovelConteudo" style='top: 10px; overflow: auto; display: none; position: absolute; border-color: gray; border-width: 0px 0 0px 0px; left: 0px; height: 0px; background-color: white'>
  116 + <div id='guia1obj' style='display: none;'>
  117 + <!-- Esta div acrescenta a op&ccedil;&atilde;o de busca r&aacute;pida, caso vc queira coloc&aacute;-la em um lugar espec&iacute;fico -->
  118 + <div style='left:5px;top:10px;width:150px;' id=buscaRapida ></div>
  119 + <!-- Esta div acrescenta a lista de propriedades do mapa -->
  120 + <div id=listaPropriedades style='top: 15px;'></div>
  121 + <!-- Esta div acrescenta a lista de de camadas do tipo 'baselayers' espec&iacute;ficas da interface Openlayers. Veja tamb&eacute;m a op&ccedil;&atilde;o i3GEO.Interface.openlayers.GADGETS.LayerSwitcher -->
  122 + <div id=listaLayersBase style='top: 15px;'></div>
  123 + <!-- Esta div acrescenta a lista de de camadas dispon&iacute;veis no mapa atual -->
  124 + <div id=listaTemas style='top: 15px;'></div>
  125 + </div>
  126 + <div id='guia2obj' style='display: none;'>
  127 + Aguarde...
  128 + <img alt="" src="../imagens/branco.gif" width=248 />
  129 + </div>
  130 + <div id='guia4obj' style='display: none; text-align: left'>
  131 + <div id='legenda' style='text-align: left'></div>
  132 + </div>
  133 + <!--
  134 + <div id='guia5obj' style='display:none;text-align:left'><div id='banners' style='overflow:auto;text-align:left'>Aguarde...</div></div>
  135 + -->
  136 + </div>
  137 + </div>
  138 + </div>
  139 + <script>
  140 + i3GEO.configura.locaplic = i3GEO.util.protocolo() + "://"
  141 + + window.location.host + "/i3geo";
  142 + i3GEO.configura.autotamanho = false;
  143 + i3GEO.Interface.ATUAL = "openlayers";
  144 + i3GEO.Interface.IDCORPO = "contemImg";
  145 + i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.permiteLogin = true;
  146 +
  147 + i3GEO.Interface.openlayers.TILES = true;
  148 +
  149 + i3GEO.configura.guardaExtensao = false;
  150 + i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.finaliza = 'if($i("omenudataInterface1")){i3GEOoMenuBar.getMenuItem("omenudataInterface1").cfg.setProperty("text", " ");}';
  151 +
  152 + i3GEO.cria();
  153 + i3GEO.configura.mapaRefDisplay = "none";
  154 + i3GEO.barraDeBotoes.TIPO = "olhodepeixe";
  155 + //ajusta o deslocamento da barra de botoes
  156 + i3GEO.barraDeBotoes.OFFSET = 11;
  157 + //ajusta a posicao da barra de botoes no IE
  158 + if(navm){
  159 + i3GEO.barraDeBotoes.OFFSET = 5;
  160 + }
  161 + if(chro){
  162 + i3GEO.barraDeBotoes.OFFSET = 15;
  163 + }
  164 +
  165 + i3GEO.configura.oMenuData["submenus"]["janelas"] = [];
  166 + i3GEO.ajuda.ATIVAJANELA = false;
  167 + i3GEO.idioma.IDSELETOR = "seletorIdiomas";
  168 +
  169 + //i3GEO.arvoreDeTemas.TIPOBOTAO = "radio";
  170 + i3GEO.arvoreDeTemas.OPCOESADICIONAIS.comentarios = true;
  171 + i3GEO.arvoreDeCamadas.VERIFICAABRANGENCIATEMAS = true;
  172 + i3GEO.arvoreDeCamadas.MOSTRALISTAKML = false;
  173 + i3GEO.mapa.AUTORESIZE = true;
  174 + i3GEO.guias.TIPO = "movel";
  175 + i3GEO.guias.guiaMovel.config.topGuiaMovel = 36;
  176 + i3GEO.janela.ativaAlerta();
  177 + i3GEO.finaliza = function() {
  178 + if ($i("i3GEOlogoMarca")) {
  179 + $i("i3GEOlogoMarca").style.display = "none";
  180 + }
  181 + i3GEO.mapa.insereDobraPagina("googlemaps",
  182 + "../imagens/dobragooglemaps.png"
  183 + );
  184 + };
  185 + i3GEO.finalizaAPI = function() {
  186 + <?php echo $_GET["f"].";";?>
  187 + };
  188 + //indica se a opcao de navegacao nas pastas do servidor sera ativada
  189 + i3GEO.arvoreDeTemas.OPCOESADICIONAIS.navegacaoDir = true;
  190 + i3GEO.janela.TRANSICAOSUAVE = true;
  191 +
  192 + OpenLayers.ImgPath = "../pacotes/openlayers/img/";
  193 + (function() {
  194 + var oce = new OpenLayers.Layer.ArcGIS93Rest(
  195 + "ESRI Ocean Basemap",
  196 + "http://server.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer/export",
  197 + {
  198 + format : "jpeg"
  199 + }, {
  200 + isBaseLayer : true,
  201 + visibility : false
  202 + });
  203 + var ims = new OpenLayers.Layer.ArcGIS93Rest(
  204 + "ESRI Imagery World 2D",
  205 + "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer/export",
  206 + {
  207 + format : "jpeg"
  208 + }, {
  209 + isBaseLayer : true,
  210 + visibility : false
  211 + });
  212 + var wsm = new OpenLayers.Layer.ArcGIS93Rest(
  213 + "ESRI World Street Map",
  214 + "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer/export",
  215 + {
  216 + format : "jpeg"
  217 + }, {
  218 + isBaseLayer : true,
  219 + visibility : false
  220 + });
  221 + var bra = new OpenLayers.Layer.WMS(
  222 + "Base carto MMA",
  223 + "http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map",
  224 + {
  225 + layers : "baseraster",
  226 + srs : "EPSG:4618",
  227 + format : "image/png",
  228 + isBaseLayer : false
  229 + }, {
  230 + isBaseLayer : true,
  231 + visibility : false
  232 + });
  233 +
  234 + var tms = new OpenLayers.Layer.TMS("OSGEO",
  235 + "http://tilecache.osgeo.org/wms-c/Basic.py/", {
  236 + layername : "basic",
  237 + type : "png",
  238 + // set if different than the bottom left of map.maxExtent
  239 + tileOrigin : new OpenLayers.LonLat(-180, -90),
  240 + isBaseLayer : true,
  241 + visibility : false
  242 + });
  243 +
  244 + i3GEO.Interface.openlayers.LAYERSADICIONAIS = [ oce, ims, wsm, tms,
  245 + bra ];
  246 + })();
  247 + i3GEO.configura.sid = "";
  248 + i3GEO.inicia();
  249 +
  250 + </script>
  251 +</body>
  252 +</html>
... ...