proxy.php
2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
exit;
/**
* Utilize proxy.php para acessar URLs por intermedio do servidor, via CURL
* Voce pode usar o parametro proxy?url=
* ou entao, enviar a URL e seus parametros apos o sinal "?"
* 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
*
* Para controlar o retorno dos dados, utilize o arametro &tipoRetornoProxy, que pode ter os seguintes valores:
* (se nao for definido retorna no formato nativo)
*
* string - retorna o resultado nativo entre aspas simples
* gml2json - converte um formato GML2 em geoJson (util em chamadas getfeatureinfo)
*/
if(!isset($i3geo_proxy_server)){
include(dirname(__FILE__)."/../ms_configura.php");
}
//echo $_SERVER ["SERVER_NAME"].":".$_SERVER ["SERVER_PORT"]."/".basename($locaplic)."/i3geo/ogc.php";
//exit;
$ch = curl_init();
if(!$ch){
echo "erro curl_init";
exit;
}
if($_GET["url"]){
curl_setopt($ch, CURLOPT_URL, $_GET["url"]);
}
else{
curl_setopt($ch, CURLOPT_URL, $_SERVER["QUERY_STRING"]);
}
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(isset($i3geo_proxy_server) && $i3geo_proxy_server != ""){
curl_setopt($ch, CURLOPT_PROXY, $i3geo_proxy_server);
}
$resultado = curl_exec($ch);
if($_GET["tipoRetornoProxy"] == "string"){
echo '"'.$resultado.'"';
exit;
}
if($_GET["tipoRetornoProxy"] == "gml2wkt"){
echo gml2wkt($resultado);
exit;
}
echo $resultado;
function gml2wkt($gml){
// Parse GML file
include("funcoes_gerais.php");
$k = array_keys($_GET);
session_name("i3GeoPHP");
session_id($_GET[$k[0]]);
session_start();
//var_dump($_SESSION);exit;
$nome = $_SESSION["dir_tmp"]."/gml_".nomeRandomico();
$nomegml = $nome.".gml";
$nomemap = $_SESSION["map_file"];
$gml = str_replace("xsi:schemaLocation","erro",$gml);
gravaDados(array($gml),$nomegml);
$map = new mapObj($nomemap);
$layer = ms_newLayerObj($map);
$layer->setConnectionType(MS_OGR);
$layer->set("connection",$nomegml);
$layer->set("template","none.html");
$layer->set("type",MS_LAYER_POLYGON);
$layer->set("name",$nome);
$layer->set("status",MS_DEFAULT);
$layer->setmetadata("tema",$nome);
$classe = ms_newClassObj($layer);
$novoestilo = ms_newStyleObj($classe);
$ncor = $novoestilo->color;
$ncor->setrgb(255,255,255);
//$map->save($nomemap);
//exit;
$layer->queryByrect($map->extent);
$sopen = $layer->open();
$shape = $layer->getShape($layer->getResult(0));
$wkt = $shape->towkt();
return json_encode(array($wkt));
}
?>