Commit 823e969417b1788c24fddd5b1d0653f89e38c77d
1 parent
207c9f35
Exists in
master
and in
7 other branches
Nova ferramenta que permite converter wkt em shapefile ou feature e adiciona ao mapa como camada
Showing
7 changed files
with
294 additions
and
6 deletions
Show diff stats
classesjs/classe_mapa.js
| @@ -595,6 +595,22 @@ i3GEO.mapa = | @@ -595,6 +595,22 @@ i3GEO.mapa = | ||
| 595 | * Abre as telas de dialogo das opcoes de manipulacao do mapa atual | 595 | * Abre as telas de dialogo das opcoes de manipulacao do mapa atual |
| 596 | */ | 596 | */ |
| 597 | dialogo : { | 597 | dialogo : { |
| 598 | + /** | ||
| 599 | + * Function: wkt2layer | ||
| 600 | + * | ||
| 601 | + * Janela de conversao de wkt em layer. | ||
| 602 | + */ | ||
| 603 | + wkt2layer: function(wkt){ | ||
| 604 | + var temp = function(wkt){ | ||
| 605 | + i3GEOF.wkt2layer.iniciaJanelaFlutuante(wkt); | ||
| 606 | + }; | ||
| 607 | + i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.wkt2layer()","wkt2layer","wkt2layer","dependencias.php",temp); | ||
| 608 | + }, | ||
| 609 | + /** | ||
| 610 | + * Function: atalhosedicao | ||
| 611 | + * | ||
| 612 | + * Janela com as principais opcoes de edicao de um layer. Utilizado pelo sistema de administracao. | ||
| 613 | + */ | ||
| 598 | atalhosedicao: function(idtema){ | 614 | atalhosedicao: function(idtema){ |
| 599 | i3GEO.mapa.ativaTema(idtema); | 615 | i3GEO.mapa.ativaTema(idtema); |
| 600 | i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.atalhosedicao()","atalhosedicao","atalhosedicao","dependencias.php","i3GEOF.atalhosedicao.iniciaJanelaFlutuante()"); | 616 | i3GEO.util.dialogoFerramenta("i3GEO.mapa.dialogo.atalhosedicao()","atalhosedicao","atalhosedicao","dependencias.php","i3GEOF.atalhosedicao.iniciaJanelaFlutuante()"); |
classesphp/classe_temas.php
| @@ -673,8 +673,10 @@ $tamanho - Tamanho do texto. | @@ -673,8 +673,10 @@ $tamanho - Tamanho do texto. | ||
| 673 | $fonte - Fonte | 673 | $fonte - Fonte |
| 674 | 674 | ||
| 675 | $wrap - caractere que indica quebra de linha | 675 | $wrap - caractere que indica quebra de linha |
| 676 | + | ||
| 677 | +$wkt - boolean indicando se $xy e um WKT | ||
| 676 | */ | 678 | */ |
| 677 | - function insereFeature($marca,$tipo,$xy,$texto,$position,$partials,$offsetx,$offsety,$minfeaturesize,$mindistance,$force,$shadowcolor,$shadowsizex,$shadowsizey,$outlinecolor,$cor,$sombray,$sombrax,$sombra,$fundo,$angulo,$tamanho,$fonte,$wrap) | 679 | + function insereFeature($marca,$tipo,$xy,$texto,$position,$partials,$offsetx,$offsety,$minfeaturesize,$mindistance,$force,$shadowcolor,$shadowsizex,$shadowsizey,$outlinecolor,$cor,$sombray,$sombrax,$sombra,$fundo,$angulo,$tamanho,$fonte,$wrap,$wkt=false) |
| 678 | { | 680 | { |
| 679 | //verifica se j'a existe um layer criado anteriormente com o mesmo nome e apaga se existir | 681 | //verifica se j'a existe um layer criado anteriormente com o mesmo nome e apaga se existir |
| 680 | if ($tipo == "limpaponto") | 682 | if ($tipo == "limpaponto") |
| @@ -747,7 +749,6 @@ $wrap - caractere que indica quebra de linha | @@ -747,7 +749,6 @@ $wrap - caractere que indica quebra de linha | ||
| 747 | break; | 749 | break; |
| 748 | } | 750 | } |
| 749 | } | 751 | } |
| 750 | - $apt = explode(" ",$xy); | ||
| 751 | switch ($tipo) | 752 | switch ($tipo) |
| 752 | { | 753 | { |
| 753 | case "ANNOTATION": | 754 | case "ANNOTATION": |
| @@ -766,10 +767,17 @@ $wrap - caractere que indica quebra de linha | @@ -766,10 +767,17 @@ $wrap - caractere que indica quebra de linha | ||
| 766 | $shp = ms_newshapeobj(MS_SHAPE_POLYGON); | 767 | $shp = ms_newshapeobj(MS_SHAPE_POLYGON); |
| 767 | break; | 768 | break; |
| 768 | } | 769 | } |
| 769 | - $lin = ms_newlineobj(); | ||
| 770 | - for ($i = 0;$i < count($apt); $i = $i + 2) | ||
| 771 | - {$lin->addxy($apt[$i],$apt[$i + 1]);} | ||
| 772 | - $shp->add($lin); | 770 | + if($wkt == false){ |
| 771 | + $apt = explode(" ",$xy); | ||
| 772 | + $lin = ms_newlineobj(); | ||
| 773 | + for ($i = 0;$i < count($apt); $i = $i + 2){ | ||
| 774 | + $lin->addxy($apt[$i],$apt[$i + 1]); | ||
| 775 | + } | ||
| 776 | + $shp->add($lin); | ||
| 777 | + } | ||
| 778 | + else{ | ||
| 779 | + $shp = ms_shapeObjFromWkt($xy); | ||
| 780 | + } | ||
| 773 | $pinlayer->addfeature($shp); | 781 | $pinlayer->addfeature($shp); |
| 774 | //$shp->free(); | 782 | //$shp->free(); |
| 775 | return("ok"); | 783 | return("ok"); |
| @@ -0,0 +1,30 @@ | @@ -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.wkt2layer.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.wkt2layer.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 | \ No newline at end of file | 31 | \ No newline at end of file |
| @@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
| 1 | +//+$trad(1,i3GEOF.wkt2layer.dicionario)+ | ||
| 2 | +i3GEOF.wkt2layer.dicionario = { | ||
| 3 | + 'wkt2layer' : [ { | ||
| 4 | + pt : "WKT como nova camada", | ||
| 5 | + en : "", | ||
| 6 | + es : "" | ||
| 7 | + } ], | ||
| 8 | + 'shapefile' : [ { | ||
| 9 | + pt : "Exporta o WKT em shape file e insere como uma nova camada, permitindo o download dos dados. Não permite que os dados sejam recuperados quando o mapa é salvo.", | ||
| 10 | + en : "", | ||
| 11 | + es : "" | ||
| 12 | + } ], | ||
| 13 | + 'feature' : [ { | ||
| 14 | + pt : "Cria uma nova camada no mapa atual e insere os dados. Permite que os dados sejam salvos no mapa para abertura posterior.", | ||
| 15 | + en : "", | ||
| 16 | + es : "" | ||
| 17 | + } ], | ||
| 18 | + 'mensagem' : [ { | ||
| 19 | + pt : "WKT vazio", | ||
| 20 | + en : "", | ||
| 21 | + es : "" | ||
| 22 | + } ] | ||
| 23 | +}; |
| @@ -0,0 +1,102 @@ | @@ -0,0 +1,102 @@ | ||
| 1 | +if (typeof (i3GEOF) === 'undefined') { | ||
| 2 | + var i3GEOF = {}; | ||
| 3 | +} | ||
| 4 | +/* | ||
| 5 | + * Classe: i3GEOF.wkt2layer | ||
| 6 | + */ | ||
| 7 | +i3GEOF.wkt2layer = | ||
| 8 | +{ | ||
| 9 | + /** | ||
| 10 | + * Template no formato mustache. E preenchido na carga do javascript com o programa dependencias.php | ||
| 11 | + */ | ||
| 12 | + MUSTACHE : "", | ||
| 13 | + /** | ||
| 14 | + * Susbtitutos para o template | ||
| 15 | + */ | ||
| 16 | + mustacheHash : function(wkt) { | ||
| 17 | + var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.wkt2layer.dicionario); | ||
| 18 | + dicionario["locaplic"] = i3GEO.configura.locaplic; | ||
| 19 | + dicionario["wkt"] = wkt; | ||
| 20 | + return dicionario; | ||
| 21 | + }, | ||
| 22 | + /* | ||
| 23 | + * Function: inicia | ||
| 24 | + * | ||
| 25 | + * Inicia a ferramenta. É chamado por criaJanelaFlutuante | ||
| 26 | + * | ||
| 27 | + * Parametro: | ||
| 28 | + * | ||
| 29 | + * iddiv {String} - id do div que receberá o conteudo HTML da ferramenta | ||
| 30 | + */ | ||
| 31 | + inicia : function(iddiv,wkt) { | ||
| 32 | + $i(iddiv).innerHTML = i3GEOF.wkt2layer.html(wkt); | ||
| 33 | + new YAHOO.widget.Button("i3GEOFwkt2layerShp", { | ||
| 34 | + onclick : { | ||
| 35 | + fn : function() { | ||
| 36 | + var wkt = $i("i3GEOFwkt2layerWkt").value; | ||
| 37 | + if(wkt.length < 5){ | ||
| 38 | + i3GEO.janela.tempoMsg($trad("mensagem",i3GEOF.wkt2layer.dicionario)); | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | + }); | ||
| 43 | + new YAHOO.widget.Button("i3GEOFwkt2layerInterno", { | ||
| 44 | + onclick : { | ||
| 45 | + fn : function() { | ||
| 46 | + var wkt = $i("i3GEOFwkt2layerWkt").value; | ||
| 47 | + if(wkt.length < 5){ | ||
| 48 | + i3GEO.janela.tempoMsg($trad("mensagem",i3GEOF.wkt2layer.dicionario)); | ||
| 49 | + } | ||
| 50 | + } | ||
| 51 | + } | ||
| 52 | + }); | ||
| 53 | + }, | ||
| 54 | + /* | ||
| 55 | + * Function: html | ||
| 56 | + * | ||
| 57 | + * Gera o código html para apresentação das opções da ferramenta | ||
| 58 | + * | ||
| 59 | + * Retorno: | ||
| 60 | + * | ||
| 61 | + * String com o código html | ||
| 62 | + */ | ||
| 63 | + html : function(wkt) { | ||
| 64 | + var ins = Mustache.render(i3GEOF.wkt2layer.MUSTACHE, i3GEOF.wkt2layer.mustacheHash(wkt)); | ||
| 65 | + return ins; | ||
| 66 | + }, | ||
| 67 | + /* | ||
| 68 | + * Function: criaJanelaFlutuante | ||
| 69 | + * | ||
| 70 | + * Cria a janela flutuante para controle da ferramenta. | ||
| 71 | + */ | ||
| 72 | + iniciaJanelaFlutuante : function(wkt) { | ||
| 73 | + var minimiza, cabecalho, janela, divid, temp, titulo; | ||
| 74 | + | ||
| 75 | + cabecalho = function() { | ||
| 76 | + }; | ||
| 77 | + minimiza = function() { | ||
| 78 | + i3GEO.janela.minimiza("i3GEOFwkt2layer"); | ||
| 79 | + }; | ||
| 80 | + // cria a janela flutuante | ||
| 81 | + titulo = $trad("wkt2layer",i3GEOF.wkt2layer.dicionario); | ||
| 82 | + janela = | ||
| 83 | + i3GEO.janela.cria( | ||
| 84 | + "280px", | ||
| 85 | + "180px", | ||
| 86 | + "", | ||
| 87 | + "", | ||
| 88 | + "", | ||
| 89 | + titulo, | ||
| 90 | + "i3GEOF.wkt2layer", | ||
| 91 | + false, | ||
| 92 | + "hd", | ||
| 93 | + cabecalho, | ||
| 94 | + minimiza, | ||
| 95 | + "", | ||
| 96 | + true | ||
| 97 | + ); | ||
| 98 | + divid = janela[2].id; | ||
| 99 | + $i("i3GEOF.wkt2layer_corpo").style.backgroundColor = "white"; | ||
| 100 | + i3GEOF.wkt2layer.inicia(divid,wkt); | ||
| 101 | + } | ||
| 102 | +}; |
| @@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
| 1 | +<style> | ||
| 2 | +.yui-button#i3GEOFwkt2layerShp button { | ||
| 3 | + background: url('../imagens/gisicons/shape.png') 5% 50% no-repeat; | ||
| 4 | + width: 200px; | ||
| 5 | +} | ||
| 6 | + | ||
| 7 | +.yui-button#i3GEOFwkt2layerInterno button { | ||
| 8 | + background: url('../imagens/gisicons/layer-vector-create.png') 5% 50% | ||
| 9 | + no-repeat; | ||
| 10 | + width: 200px; | ||
| 11 | +} | ||
| 12 | +</style> | ||
| 13 | +<div style='margin-left: 5px'> | ||
| 14 | + <p class='paragrafo'> | ||
| 15 | + <b>WKT: </b> | ||
| 16 | + </p> | ||
| 17 | + <p class='paragrafo'> | ||
| 18 | + <textarea id='i3GEOFwkt2layerWkt' cols='30' rows='3'> | ||
| 19 | + {{{wkt}}} </textarea> | ||
| 20 | + </p> | ||
| 21 | + <p class='paragrafo'>{{{shapefile}}}</p> | ||
| 22 | + <br> | ||
| 23 | + <p class='paragrafo'> | ||
| 24 | + <input id='i3GEOFwkt2layerShp' type='button' value='Shape File' /> | ||
| 25 | + </p> | ||
| 26 | + <p class='paragrafo'>{{{feature}}}</p> | ||
| 27 | + <br> | ||
| 28 | + <p class='paragrafo'> | ||
| 29 | + <input id='i3GEOFwkt2layerInterno' type='button' value='Feature' /> | ||
| 30 | + </p> | ||
| 31 | +</div> |
| @@ -0,0 +1,78 @@ | @@ -0,0 +1,78 @@ | ||
| 1 | +MAP | ||
| 2 | + FONTSET "../symbols/fontes.txt" | ||
| 3 | + SYMBOLSET "../symbols/simbolosv6.sym" | ||
| 4 | + LAYER | ||
| 5 | + | ||
| 6 | +#DATA "PG:host=localhost port=5432 dbname='siss' user='postgres' password='postgres' schema='public' table='modelagem' mode='2'" | ||
| 7 | +DATA "/var/www/rasters/modelagem_ED1_ok.tif" | ||
| 8 | +#PROCESSING "NODATA=0" | ||
| 9 | +PROCESSING "SCALE=AUTO" | ||
| 10 | +PROCESSING "LOAD_WHOLE_IMAGE=YES" | ||
| 11 | +PROCESSING "SCALE=0,100" | ||
| 12 | + PROCESSING "SCALE_BUCKETS=10" | ||
| 13 | + | ||
| 14 | + METADATA | ||
| 15 | + "METAESTAT_ID_MEDIDA_VARIAVEL" "" | ||
| 16 | + "cache" "" | ||
| 17 | + "CLASSE" "SIM" | ||
| 18 | + "METAESTAT_CODIGO_TIPO_REGIAO" "" | ||
| 19 | + "metaestat" "" | ||
| 20 | + "convcaracter" "" | ||
| 21 | + "TEMA" "Raster" | ||
| 22 | + "cortepixels" "0" | ||
| 23 | + END # METADATA | ||
| 24 | + NAME "testeraster" | ||
| 25 | + STATUS OFF | ||
| 26 | + TEMPLATE "none.htm" | ||
| 27 | + TYPE RASTER | ||
| 28 | + UNITS METERS | ||
| 29 | + | ||
| 30 | + CLASS | ||
| 31 | + NAME ">= 1 e < que 20" | ||
| 32 | + EXPRESSION (([pixel]>=1)and([pixel]<20)) | ||
| 33 | + STYLE | ||
| 34 | + COLOR 32 92 148 | ||
| 35 | + OUTLINECOLOR 255 255 255 | ||
| 36 | + END # STYLE | ||
| 37 | + TITLE "testeraster+0" | ||
| 38 | + END # CLASS | ||
| 39 | + CLASS | ||
| 40 | + NAME ">= 20 e < que 40" | ||
| 41 | + EXPRESSION (([pixel]>=20)and([pixel]<40)) | ||
| 42 | + STYLE | ||
| 43 | + COLOR 187 188 5 | ||
| 44 | + OUTLINECOLOR 255 255 255 | ||
| 45 | + END # STYLE | ||
| 46 | + TITLE "testeraster+1" | ||
| 47 | + END # CLASS | ||
| 48 | + CLASS | ||
| 49 | + NAME ">= 40 e < que 60" | ||
| 50 | + EXPRESSION (([pixel]>=40)and([pixel]<60)) | ||
| 51 | + STYLE | ||
| 52 | + COLOR 242 92 238 | ||
| 53 | + OUTLINECOLOR 255 255 255 | ||
| 54 | + END # STYLE | ||
| 55 | + TITLE "testeraster+2" | ||
| 56 | + END # CLASS | ||
| 57 | + CLASS | ||
| 58 | + NAME ">= 60 e < que 80" | ||
| 59 | + EXPRESSION (([pixel]>=60)and([pixel]<80)) | ||
| 60 | + STYLE | ||
| 61 | + COLOR 36 224 102 | ||
| 62 | + OUTLINECOLOR 255 255 255 | ||
| 63 | + END # STYLE | ||
| 64 | + TITLE "testeraster+3" | ||
| 65 | + END # CLASS | ||
| 66 | + CLASS | ||
| 67 | + NAME ">= 80 e < que 100" | ||
| 68 | + EXPRESSION (([pixel]>=80)and([pixel]<=100)) | ||
| 69 | + STYLE | ||
| 70 | + COLOR 55 187 122 | ||
| 71 | + OUTLINECOLOR 255 255 255 | ||
| 72 | + END # STYLE | ||
| 73 | + TITLE "testeraster+4" | ||
| 74 | + END # CLASS | ||
| 75 | + | ||
| 76 | + END # LAYER | ||
| 77 | + | ||
| 78 | +END # MAP |