Commit bc360fd6a518938ef7360e6e2a684b5d33f2a850
1 parent
842e89d6
Exists in
master
and in
7 other branches
Adaptações para versão 7 do Mapserver
Showing
4 changed files
with
78 additions
and
105 deletions
Show diff stats
aplicmap/geral1debianv7.map
classesphp/proxy.php
1 | 1 | <?php |
2 | +/** | |
3 | + * Utilize proxy.php para acessar URLs por intermedio do servidor, via CURL | |
4 | + * Voce pode usar o parametro proxy?url= | |
5 | + * ou entao, enviar a URL e seus parametros apos o sinal "?" | |
6 | + * http://localhost/i3geo/classesphp/proxy.php?http://localhost/i3geo/classesphp/mapa_openlayers.php?g_sid=e7oi2d2645gt712e4cjmt93pf5&TIPOIMAGEM=nenhum&DESLIGACACHE=sim&layer=mundo&REQUEST=getfeature&service=wfs&version=1.0.0&OUTPUTFORMAT=gml2 | |
7 | + * | |
8 | + * Para controlar o retorno dos dados, utilize o arametro &tipoRetornoProxy, que pode ter os seguintes valores: | |
9 | + * (se nao for definido retorna no formato nativo) | |
10 | + * | |
11 | + * string - retorna o resultado nativo entre aspas simples | |
12 | + * gml2json - converte um formato GML2 em geoJson (util em chamadas getfeatureinfo) | |
13 | + */ | |
2 | 14 | if(!isset($i3geo_proxy_server)){ |
3 | 15 | include(dirname(__FILE__)."/../ms_configura.php"); |
4 | 16 | } |
... | ... | @@ -18,17 +30,54 @@ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
18 | 30 | if(isset($i3geo_proxy_server) && $i3geo_proxy_server != ""){ |
19 | 31 | curl_setopt($ch, CURLOPT_PROXY, $i3geo_proxy_server); |
20 | 32 | } |
21 | -$resultado = curl_exec($ch); | |
33 | +$resultado = curl_exec($ch); | |
34 | + | |
22 | 35 | if($_GET["tipoRetornoProxy"] == "string"){ |
23 | 36 | echo '"'.$resultado.'"'; |
24 | 37 | exit; |
25 | 38 | } |
26 | 39 | |
27 | -if($_GET["tipoRetornoProxy"] == "json"){ | |
28 | - $r = array($resultado); | |
29 | - //echo json_encode(str_replace(array("\n","\r","\t"),"",$r)); | |
30 | - echo json_encode($r); | |
40 | +if($_GET["tipoRetornoProxy"] == "gml2wkt"){ | |
41 | + echo gml2wkt($resultado); | |
31 | 42 | exit; |
32 | 43 | } |
44 | + | |
33 | 45 | echo $resultado; |
46 | + | |
47 | + | |
48 | +function gml2wkt($gml){ | |
49 | + // Parse GML file | |
50 | + include("funcoes_gerais.php"); | |
51 | + $k = array_keys($_GET); | |
52 | + session_name("i3GeoPHP"); | |
53 | + session_id($_GET[$k[0]]); | |
54 | + session_start(); | |
55 | + //var_dump($_SESSION);exit; | |
56 | + $nome = $_SESSION["dir_tmp"]."/gml_".nomeRandomico(); | |
57 | + $nomegml = $nome.".gml"; | |
58 | + $nomemap = $_SESSION["map_file"]; | |
59 | + $gml = str_replace("xsi:schemaLocation","erro",$gml); | |
60 | + gravaDados(array($gml),$nomegml); | |
61 | + $map = new mapObj($nomemap); | |
62 | + $layer = ms_newLayerObj($map); | |
63 | + $layer->setConnectionType(MS_OGR); | |
64 | + $layer->set("connection",$nomegml); | |
65 | + $layer->set("template","none.html"); | |
66 | + $layer->set("type",MS_LAYER_POLYGON); | |
67 | + $layer->set("name",$nome); | |
68 | + $layer->set("status",MS_DEFAULT); | |
69 | + $layer->setmetadata("tema",$nome); | |
70 | + $classe = ms_newClassObj($layer); | |
71 | + $novoestilo = ms_newStyleObj($classe); | |
72 | + $ncor = $novoestilo->color; | |
73 | + $ncor->setrgb(255,255,255); | |
74 | + //$map->save($nomemap); | |
75 | + //exit; | |
76 | + $layer->queryByrect($map->extent); | |
77 | + $sopen = $layer->open(); | |
78 | + $shape = $layer->getShape($layer->getResult(0)); | |
79 | + $wkt = $shape->towkt(); | |
80 | + return json_encode(array($wkt)); | |
81 | +} | |
82 | + | |
34 | 83 | ?> |
35 | 84 | \ No newline at end of file | ... | ... |
ferramentas/editorol/editorol.js
... | ... | @@ -664,7 +664,6 @@ i3GEO.editorOL = |
664 | 664 | i3GEO.editorOL.mapa.zoomToExtent(b); |
665 | 665 | }, |
666 | 666 | mostraLegenda : function() { |
667 | - //TODO testar no mashup | |
668 | 667 | var layers = i3GEO.editorOL.layersLigados(), nlayers = layers.length, ins = "", i, icone = "", url, fers, f = "", fer = ""; |
669 | 668 | for (i = 0; i < nlayers; i++) { |
670 | 669 | try { |
... | ... | @@ -790,26 +789,31 @@ i3GEO.editorOL = |
790 | 789 | "&filter=<Filter><Intersects><PropertyName>Geometry</PropertyName><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:posList>" + poligono |
791 | 790 | + "</gml:posList></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersects></Filter>"; |
792 | 791 | retorno = function(r){ |
793 | - //FIXME nao funciona | |
794 | - //parser gml | |
795 | - var f,c,format; | |
796 | - /* | |
797 | - format = new ol.format.GML2({ | |
798 | - featurePrefix: "ms", | |
799 | - geometryName : "msGeometry", | |
800 | - featureNS : "http://mapserver.gis.umn.edu/mapserver" | |
801 | - }); | |
802 | - */ | |
803 | - //console.info(r[0]) | |
804 | - format = new ol.format.GML2(); | |
805 | - f = format.readFeatures(r[0]); | |
806 | - //console.info(f); | |
792 | + var fs,c,format, f, n, i; | |
793 | + format = new ol.format.WKT(); | |
794 | + fs = format.readFeatures(r[0]); | |
795 | + n = fs.length; | |
807 | 796 | c = i3GEO.desenho.layergrafico.getSource(); |
808 | - c.addFeature(f); | |
797 | + for(i=0; i<n; i++){ | |
798 | + f = fs[i]; | |
799 | + f.setStyle( | |
800 | + new ol.style.Style({ | |
801 | + stroke: new ol.style.Stroke({ | |
802 | + color: 'rgba(' + i3GEO.editorOL.simbologia.strokeColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')', | |
803 | + width: i3GEO.editorOL.simbologia.strokeWidth | |
804 | + }), | |
805 | + fill: new ol.style.Fill({ | |
806 | + color: 'rgba(' + i3GEO.editorOL.simbologia.fillColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')' | |
807 | + }) | |
808 | + }) | |
809 | + ); | |
810 | + f.setId(i3GEO.util.uid()); | |
811 | + c.addFeature(f); | |
812 | + } | |
809 | 813 | }; |
810 | 814 | u = i3GEO.configura.locaplic + "/classesphp/proxy.php?" |
811 | 815 | + u |
812 | - + "&tipoRetornoProxy=json"; | |
816 | + + "&tipoRetornoProxy=gml2wkt"; | |
813 | 817 | cpJSON.call(u, "foo", retorno, ""); |
814 | 818 | }, |
815 | 819 | salvaGeometrias : function() { |
... | ... | @@ -1566,88 +1570,6 @@ i3GEO.editorOL = |
1566 | 1570 | adiciona = true; |
1567 | 1571 | |
1568 | 1572 | } |
1569 | - if (botoes.identifica === true) { | |
1570 | - //TODO incluir codigo ol3 | |
1571 | - | |
1572 | - botaoIdentifica = | |
1573 | - new OpenLayers.Control.WMSGetFeatureInfo( | |
1574 | - { | |
1575 | - maxFeatures : 1, | |
1576 | - infoFormat : 'text/plain', // 'application/vnd.ogc.gml', | |
1577 | - layers : [ | |
1578 | - i3GEO.editorOL.layerAtivo() | |
1579 | - ], | |
1580 | - queryVisible : true, | |
1581 | - title : $trad("d7t"), | |
1582 | - type : OpenLayers.Control.TYPE_TOOL, | |
1583 | - displayClass : "editorOLidentifica", | |
1584 | - eventListeners : { | |
1585 | - getfeatureinfo : function(event) { | |
1586 | - var lonlat = i3GEO.editorOL.mapa.getLonLatFromPixel(event.xy), lonlattexto = "<hr>", formata; | |
1587 | - if (botoes.linha === true || botoes.ponto === true || botoes.poligono === true || botoes.edita === true) { | |
1588 | - lonlattexto += | |
1589 | - "<pre><span style=font-size:12px;color:blue;cursor:pointer onclick='i3GEO.editorOL.captura(\"" + lonlat.lon | |
1590 | - + "," | |
1591 | - + lonlat.lat | |
1592 | - + "\")'>edita geometria</span></pre><br>"; | |
1593 | - } | |
1594 | - formata = function(texto) { | |
1595 | - var temp, temp1, n, i, f = [], textoN = texto.split(":"); | |
1596 | - try { | |
1597 | - if (textoN.length > 1) { | |
1598 | - temp = textoN[2].replace(/\n\r/g, ""); | |
1599 | - temp = temp.replace(/'/g, ""); | |
1600 | - temp = temp.replace(/\n/g, "|"); | |
1601 | - temp = temp.replace(/_/g, " "); | |
1602 | - temp = temp.replace(/=/g, ":"); | |
1603 | - temp = temp.split("|"); | |
1604 | - n = temp.length; | |
1605 | - for (i = 0; i < n; i++) { | |
1606 | - temp1 = temp[i].replace(/^\s+/, ""); | |
1607 | - temp1 = temp1.replace(/\s+$/, ""); | |
1608 | - if (temp1 != "") | |
1609 | - f.push(temp1); | |
1610 | - } | |
1611 | - texto = f.join("<br><br>"); | |
1612 | - } | |
1613 | - } catch (e) { | |
1614 | - } | |
1615 | - return texto; | |
1616 | - }; | |
1617 | - i3GEO.editorOL.mapa.addPopup(new OpenLayers.Popup.FramedCloud("chicken", i3GEO.editorOL.mapa | |
1618 | - .getLonLatFromPixel(event.xy), null, "<div style=text-align:left >" + lonlattexto | |
1619 | - + "<pre>" | |
1620 | - + formata(event.text) | |
1621 | - + "</pre></div>", null, true)); | |
1622 | - i3GEO.editorOL.removeClone(); | |
1623 | - }, | |
1624 | - beforegetfeatureinfo : function(event) { | |
1625 | - var ativo = [ | |
1626 | - i3GEO.editorOL.layerAtivo() | |
1627 | - ]; | |
1628 | - // se for TMS tem de pegar o clone wms | |
1629 | - if (ativo[0].serviceVersion === "&tms=" || ativo[0].CLASS_NAME == "OpenLayers.Layer.TMS" | |
1630 | - || ativo[0].CLASS_NAME == "OpenLayers.Layer.OSM") { | |
1631 | - ativo = [ | |
1632 | - i3GEO.editorOL.layertms2wms(ativo[0]) | |
1633 | - ]; | |
1634 | - } | |
1635 | - ativo[0].projection = new OpenLayers.Projection("EPSG:4326"); | |
1636 | - event.object.layers = ativo; | |
1637 | - botaoIdentifica.layers = ativo; | |
1638 | - botaoIdentifica.url = ativo[0].url; | |
1639 | - }, | |
1640 | - activate : function() { | |
1641 | - i3GEO.editorOL.criaJanelaAtivaTema(); | |
1642 | - } | |
1643 | - } | |
1644 | - }); | |
1645 | - // button.events.register("getfeatureinfo", this, showInfo); | |
1646 | - controles.push(botaoIdentifica); | |
1647 | - adiciona = true; | |
1648 | - | |
1649 | - } | |
1650 | - | |
1651 | 1573 | */ |
1652 | 1574 | }, |
1653 | 1575 | removeFeaturesSel : function(){ | ... | ... |
temas/_ltestegml.map
... | ... | @@ -3,10 +3,11 @@ MAP |
3 | 3 | SYMBOLSET "../symbols/simbolos.sym" |
4 | 4 | LAYER |
5 | 5 | CONNECTION "/var/www/i3geo/aplicmap/dados/ucsfi.gml" |
6 | + #CONNECTION "/tmp/ms_tmp/gml_UGJUDdOMyt.gml" | |
6 | 7 | CONNECTIONTYPE OGR |
7 | 8 | METADATA |
8 | 9 | "METAESTAT_ID_MEDIDA_VARIAVEL" "" |
9 | - "cache" "sim" | |
10 | + "cache" "nao" | |
10 | 11 | "CLASSE" "SIM" |
11 | 12 | "permitekmz" "nao" |
12 | 13 | "METAESTAT_CODIGO_TIPO_REGIAO" "" | ... | ... |