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 | 595 | * Abre as telas de dialogo das opcoes de manipulacao do mapa atual |
596 | 596 | */ |
597 | 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 | 614 | atalhosedicao: function(idtema){ |
599 | 615 | i3GEO.mapa.ativaTema(idtema); |
600 | 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 | 673 | $fonte - Fonte |
674 | 674 | |
675 | 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 | 681 | //verifica se j'a existe um layer criado anteriormente com o mesmo nome e apaga se existir |
680 | 682 | if ($tipo == "limpaponto") |
... | ... | @@ -747,7 +749,6 @@ $wrap - caractere que indica quebra de linha |
747 | 749 | break; |
748 | 750 | } |
749 | 751 | } |
750 | - $apt = explode(" ",$xy); | |
751 | 752 | switch ($tipo) |
752 | 753 | { |
753 | 754 | case "ANNOTATION": |
... | ... | @@ -766,10 +767,17 @@ $wrap - caractere que indica quebra de linha |
766 | 767 | $shp = ms_newshapeobj(MS_SHAPE_POLYGON); |
767 | 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 | 781 | $pinlayer->addfeature($shp); |
774 | 782 | //$shp->free(); |
775 | 783 | return("ok"); | ... | ... |
... | ... | @@ -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 | 31 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 | ... | ... |