From 503f6099e7f1be8058536e595f84d47836a2ffe8 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 17 Jun 2011 01:23:31 +0000 Subject: [PATCH] Opção que permite salvar as geometrias do editor vetorial em arquivos shapefile e adicionar no mapa --- admin/admin.db | Bin 71680 -> 0 bytes classesjs/classe_barradebotoes.js | 2 +- classesjs/classe_interface.js | 15 +++++++++++++++ classesphp/classe_analise.php | 53 ++++++++++++++++++++++++++++++++++++----------------- classesphp/mapa_controle.php | 2 +- mashups/openlayers.js.php | 94 ++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------ 6 files changed, 99 insertions(+), 67 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index e5232d1..b19aae4 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/classesjs/classe_barradebotoes.js b/classesjs/classe_barradebotoes.js index 0df6bb9..346f749 100644 --- a/classesjs/classe_barradebotoes.js +++ b/classesjs/classe_barradebotoes.js @@ -1098,7 +1098,7 @@ i3GEO.barraDeBotoes = { i3GEO.editorOL.layergrafico = new OpenLayers.Layer.Vector("Edição",{displayInLayerSwitcher:false,visibility:true}); i3GEO.editorOL.mapa.addLayers([i3GEO.editorOL.layergrafico]); i3GEO.editorOL.criaBotoes(i3GEO.editorOL.botoes); - i3GEO.editorOL.criaJanelaAtivaTema(); + //i3GEO.editorOL.criaJanelaAtivaTema(); //i3GEOOL.inicia(); } } diff --git a/classesjs/classe_interface.js b/classesjs/classe_interface.js index c843aa4..b8cd971 100644 --- a/classesjs/classe_interface.js +++ b/classesjs/classe_interface.js @@ -719,6 +719,7 @@ i3GEO.Interface = { openlayers.ordenaLayers(); openlayers.recalcPar(); i3GEO.janela.fechaAguarde(); + openlayers.sobeLayersGraficos(); }, cria: function(w,h){ var f,ins, @@ -875,6 +876,7 @@ i3GEO.Interface = { urlfundo = configura.locaplic+"/classesphp/mapa_openlayers.php?g_sid="+i3GEO.configura.sid+"&layer=&tipolayer=fundo&TIPOIMAGEM="+configura.tipoimagem, nlayers = i3GEO.arvoreDeCamadas.CAMADAS.length, layer, + layers, camada, urllayer, opcoes, @@ -948,6 +950,19 @@ i3GEO.Interface = { try {i3geoOL.addLayers(i3GEO.Interface.openlayers.LAYERSADICIONAIS);} catch(e){} + // + //sobe o nível das camadas gráficas + // + }, + sobeLayersGraficos: function(){ + var nlayers = i3geoOL.getNumLayers(), + layers = i3geoOL.layers, + i; + for(i=0;iincmapageometrias($dir_tmp,$imgdir,$geometrias,$tipoLista="arraywkt"); + return "ok"; + } + $geos = array(); foreach ($geometrias as $geo){ $geos[] = ms_shapeObjFromWkt($geo); } - $n = count($geos); if ($n == 1) { @@ -2397,26 +2405,37 @@ $dir_tmp - Diretório temporário do mapserver $imgdir - Diretório das imagens do mapa atual $lista - Nomes, sem o caminho, dos arquivos com as geometrias, separados por vírgula. + +$tipoLista - tipo de valores que são passados em $lista stringArquivos|arraywkt. O default é stringArquivos */ - function incmapageometrias($dir_tmp,$imgdir,$lista) + function incmapageometrias($dir_tmp,$imgdir,$lista,$tipoLista="stringArquivos") { - $lista = explode(",",$lista); $dir = $dir_tmp."/".$imgdir."/"; - $shapes = array(); - $valoresoriginais = array(); - foreach ($lista as $l) - { - $geos = &$this->unserializeGeo($dir.$l); - //pega todas as geometrias - foreach ($geos["dados"] as $geo) + if($tipoLista == "stringArquivos"){ + $lista = explode(",",$lista); + $shapes = array(); + $valoresoriginais = array(); + foreach ($lista as $l) { - //echo $geo["wkt"]."
"; - $shapes[] = ms_shapeObjFromWkt(str_replace("'","",$geo["wkt"])); - foreach ($geo["valores"] as $v) - {$valorestemp[] = $v["item"]."=".$v["valor"];} - $valoresoriginais[] = implode(" ",$valorestemp); + $geos = &$this->unserializeGeo($dir.$l); + //pega todas as geometrias + foreach ($geos["dados"] as $geo) + { + //echo $geo["wkt"]."
"; + $shapes[] = ms_shapeObjFromWkt(str_replace("'","",$geo["wkt"])); + foreach ($geo["valores"] as $v) + {$valorestemp[] = $v["item"]."=".$v["valor"];} + $valoresoriginais[] = implode(" ",$valorestemp); + } } } + if($tipoLista == "arraywkt"){ + $shapes = array(); + $valoresoriginais = array(); + foreach ($lista as $l){ + $shapes[] = ms_shapeObjFromWkt($l); + } + } //verifica o tipo if (count($shapes) == 0){return("erro.");} $tiposhape = $shapes[0]->type; diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index f9d9217..ebac5c5 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -338,7 +338,7 @@ A lista de WKTs deve usar o separador | case "FUNCOESGEOMETRIASWKT": include_once("classe_analise.php"); $m = new Analise($map_file,""); - $retorno = $m->aplicaFuncaoListaWKT(explode("|",$geometrias),$operacao); + $retorno = $m->aplicaFuncaoListaWKT(explode("|",$geometrias),$operacao,$dir_tmp,$imgdir); break; /* Valor: CALCULAGEOMETRIAS diff --git a/mashups/openlayers.js.php b/mashups/openlayers.js.php index 0a919e9..e0b5de5 100644 --- a/mashups/openlayers.js.php +++ b/mashups/openlayers.js.php @@ -120,7 +120,6 @@ i3GEO.editorOL = { {i3GEO.editorOL.mapa.zoomToMaxExtent();} i3GEO.editorOL.coordenadas(); i3GEO.editorOL.criaJanelaBusca(); - i3GEO.editorOL.criaJanelaAtivaTema(); i3GEO.editorOL.criaBotoes(i3GEO.editorOL.botoes); }, layersLigados: function(){ @@ -198,36 +197,52 @@ i3GEO.editorOL = { } catch(e){} }, - criaJanelaAtivaTema: function(){ + criaComboTemas: function(){ var layers = i3GEO.editorOL.layersLigados(), nlayers = layers.length, i, temp, combo = ""; + return combo; + }, + atualizaJanelaAtivaTema: function(){ + var combo = i3GEO.editorOL.criaComboTemas(); + YAHOO.temaativo.container.panel.setBody(combo); + document.getElementById("i3GEOOLlistaTemasAtivos").onchange = function(){ + if(botaoIdentifica){ + botaoIdentifica.layers = [i3GEO.editorOL.layersLigados()[this.value]]; + } + }; + }, + criaJanelaAtivaTema: function(){ + var temp; if(!document.getElementById("paneltemaativo")){ YAHOO.namespace("temaativo.container"); YAHOO.temaativo.container.panel = new YAHOO.widget.Panel("paneltemaativo", {zIndex:20000, iframe:true, width:"250px", visible:false, draggable:true, close:true } ); - YAHOO.temaativo.container.panel.setBody(combo); + YAHOO.temaativo.container.panel.setBody(""); if(typeof i3GEO != undefined && i3GEO != "") {YAHOO.temaativo.container.panel.setHeader("Tema ativo
");} else {YAHOO.temaativo.container.panel.setHeader("Tema ativo");} YAHOO.temaativo.container.panel.setFooter(""); YAHOO.temaativo.container.panel.render(document.body); + YAHOO.temaativo.container.panel.show(); YAHOO.temaativo.container.panel.center(); + i3GEO.editorOL.atualizaJanelaAtivaTema(); YAHOO.util.Event.addListener(YAHOO.temaativo.container.panel.close, "click", function(){ i3GEOpanelEditor.deactivate(); i3GEOpanelEditor.activate(); - if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEO.editorOL.criaJanelaAtivaTema()") > 0) - {i3GEO.eventos.ATUALIZAARVORECAMADAS.remove("i3GEO.editorOL.criaJanelaAtivaTema()");} + if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEO.editorOL.atualizaJanelaAtivaTema()") > 0) + {i3GEO.eventos.ATUALIZAARVORECAMADAS.remove("i3GEO.editorOL.atualizaJanelaAtivaTema()");} }); if(typeof i3GEO != undefined && i3GEO != ""){ - if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEO.editorOL.criaJanelaAtivaTema()") < 0) - {i3GEO.eventos.ATUALIZAARVORECAMADAS.push("i3GEO.editorOL.criaJanelaAtivaTema()");} + if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEO.editorOL.atualizaJanelaAtivaTema()") < 0) + {i3GEO.eventos.ATUALIZAARVORECAMADAS.push("i3GEO.editorOL.atualizaJanelaAtivaTema()");} } temp = $i("paneltemaativo_minimizaCabecalho"); if(temp){ @@ -235,15 +250,8 @@ i3GEO.editorOL = { } } else{ - YAHOO.temaativo.container.panel.setBody(combo); - YAHOO.temaativo.container.panel.render(document.body); YAHOO.temaativo.container.panel.show(); } - document.getElementById("i3GEOOLlistaTemasAtivos").onchange = function(){ - if(botaoIdentifica){ - botaoIdentifica.layers = [i3GEO.editorOL.layersLigados()[this.value]]; - } - }; }, ativaTema: function(id){ document.getElementById("i3GEOOLlistaTemasAtivos").value = id; @@ -388,29 +396,33 @@ i3GEO.editorOL = { }); }, salvaGeometrias: function(){ - try{ - YAHOO.namespace("salvaGeometrias.container"); - YAHOO.salvaGeometrias.container.panel = new YAHOO.widget.Panel("panelsalvageometrias", {zIndex:2000, iframe:false, width:"250px", visible:false, draggable:true, close:true } ); - YAHOO.salvaGeometrias.container.panel.setHeader("Geometrias"); - YAHOO.salvaGeometrias.container.panel.setBody(""); - YAHOO.salvaGeometrias.container.panel.setFooter(""); - YAHOO.salvaGeometrias.container.panel.render(document.body); - YAHOO.salvaGeometrias.container.panel.center(); - } - catch(e){} - YAHOO.salvaGeometrias.container.panel.show(); var geos = i3GEO.editorOL.layergrafico.selectedFeatures; var n = geos.length; var ins = ""; if(n > 0){ + try{ + YAHOO.namespace("salvaGeometrias.container"); + YAHOO.salvaGeometrias.container.panel = new YAHOO.widget.Panel("panelsalvageometrias", {zIndex:2000, iframe:false, width:"250px", visible:false, draggable:true, close:true } ); + YAHOO.salvaGeometrias.container.panel.setHeader("Geometrias"); + YAHOO.salvaGeometrias.container.panel.setBody(""); + YAHOO.salvaGeometrias.container.panel.setFooter(""); + YAHOO.salvaGeometrias.container.panel.render(document.body); + YAHOO.salvaGeometrias.container.panel.center(); + } + catch(e){} + YAHOO.salvaGeometrias.container.panel.show(); ins += "

Foram encontrada(s) "+n+" geometria(s) selecionada(s)

"; - ins += "

Listar geometrias "; - ins += "Salvar geometria(s)

"; + ins += "

Listar  "; + ins += "Salvar  "; + ins += "Exportar (shapefile)

"; YAHOO.salvaGeometrias.container.panel.setBody(ins); } else {alert("Selecione pelo menos um elemento");} }, + exportarSHP: function(){ + i3GEO.editorOL.processageo("converteSHP"); + }, listaGeometriasSel: function(){ var geos = i3GEO.editorOL.layergrafico.selectedFeatures; var n = geos.length; @@ -631,7 +643,6 @@ i3GEO.editorOL = { { displayClass: "editorOLedita", title: "modifica figura", - //onModification: function(evt){alert("oi");i3GEO.editorOL.guardaBackup();}, clickout: true, toggle: true, mode: OpenLayers.Control.ModifyFeature.RESHAPE @@ -891,9 +902,7 @@ i3GEO.editorOL = { YAHOO.editorOL.container.panel.render(document.body); YAHOO.editorOL.container.panel.center(); - YAHOO.util.Event.addListener(YAHOO.editorOL.container.panel.close, "click", function(){}); - if(i3GEO.eventos && i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEO.editorOL.criaJanelaAtivaTema()") < 0) - {i3GEO.eventos.ATUALIZAARVORECAMADAS.push("i3GEO.editorOL.criaJanelaAtivaTema()");} + YAHOO.util.Event.addListener(YAHOO.editorOL.container.panel.close, "click", function(){}); temp = $i("panelpropriedadesEditor_minimizaCabecalho"); if(temp){ temp.onclick = function(){i3GEO.janela.minimiza("panelpropriedadesEditor");} @@ -975,7 +984,7 @@ i3GEO.editorOL = { var geosel = i3GEO.editorOL.layergrafico.selectedFeatures, fwkt = new OpenLayers.Format.WKT(), polis,linhas,pontos,uniaopolis,uniaolinhas,uniaopontos,n,i,temp; - if(geosel.length > 1){ + if(geosel.length > 0){ polis = i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.Polygon"); linhas = i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.LineString"); pontos = i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.Point"); @@ -983,8 +992,12 @@ i3GEO.editorOL = { i3GEO.janela.fechaAguarde("i3GEO.editorPoli"); i3GEO.janela.fechaAguarde("i3GEO.editorLinhas"); i3GEO.janela.fechaAguarde("i3GEO.editorPontos"); - if(retorno != "" && retorno.data && retorno.data != "") + if(retorno != "" && retorno.data && retorno.data != "" && operacao != "converteSHP") {i3GEO.editorOL.substituiFeaturesSel(retorno.data);} + if(operacao === "converteSHP"){ + i3GEO.atualiza(); + i3GEO.janela.minimiza("paneltemaativo"); + } } if(polis.length > 0){ i3GEO.janela.abreAguarde("i3GEO.editorPoli","Poligonos"); @@ -999,21 +1012,6 @@ i3GEO.editorOL = { i3GEO.php.funcoesGeometriasWkt(temp,pontos.join("|"),operacao); } return; - /* - if(polis) - {uniaopolis = i3GEO.editorOL.uniaojts(polis);} - if(linhas) - {uniaolinhas = i3GEO.editorOL.uniaojts(linhas);} - if(pontos) - {uniaopontos = i3GEO.editorOL.uniaojts(pontos);} - - if(uniaopolis) - {i3GEO.editorOL.layergrafico.addFeatures(uniaopolis);} - if(uniaolinhas) - {i3GEO.editorOL.layergrafico.addFeatures(uniaolinhas);} - if(uniaopontos) - {i3GEO.editorOL.layergrafico.addFeatures(uniaopontos);} - */ } else {alert("Selecione pelo menos dois elementos");} -- libgit2 0.21.2