parse_cgi.php
4.43 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?php
exit;
/*
Title: parse_cgi.php
Faz o processamento de um mapfile segundo as necessidades do i3geo, como por exemplo, fazendo a substituição
das variáveis de conexão com banco e outras operações específicas do i3Geo.
Pode ser utilizado na tag IMG de um arquivo HTML ao invés de ser utilizado o Mapserver em modo CGI.
Licenca:
GPL2
i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
Este programa é software livre; você pode redistribuí-lo
e/ou modificá-lo sob os termos da Licença Pública Geral
GNU conforme publicada pela Free Software Foundation;
Este programa é distribuído na expectativa de que seja útil,
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
Consulte a Licença Pública Geral do GNU para mais detalhes.
Você deve ter recebido uma c�pia da Licença Pública Geral do
GNU junto com este programa; se não, escreva para a
Free Software Foundation, Inc., no endereço
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
Arquivo:
i3geo/classesphp/parse_cgi.php
Parâmetros:
$g_sid {string} - c�digo da seção aberta no servidor
$map_size {string} - string com o tamanho do novo mapa (w h)
$mapext {string}- extensão geográfica do novo mapa (xmin ymin xmax ymax)
$map_imagecolor {string} - cor do fundo do mapa (default é -1 -1 -1)
$map_transparent {string} - a cor do fundo será transparente? (ON OFF, default é ON)
Exemplo:
http://localhost/i3geo/classesphp/parse_cgi.php?g_sid=dgge4877dhhhgrjjey&map_size=500 500
*/
error_reporting(0);
include_once (dirname(__FILE__)."/classesphp/sani_request.php");
$_GET = array_merge($_GET,$_POST);
include_once ("carrega_ext.php");
include_once("funcoes_gerais.php");
$temp = $_GET["mapext"];
session_name("i3GeoPHP");
session_id($_GET["g_sid"]);
session_start();
$mapext = $temp;
$map_file = $_SESSION["map_file"];
$fingerprint = $_SESSION["fingerprint"];
include(dirname(__FILE__)."/../ms_configura.php");
if(isset($fingerprint))
{
if (md5('I3GEOSEC' . $_SERVER['HTTP_USER_AGENT'] . session_id()) != $fingerprint)
{exit;}
}
if (!isset($_GET["map_imagecolor"])){
$map_imagecolor = "-1 -1 -1";
} else {
$map_imagecolor = $_GET["map_imagecolor"];
}
if (!isset($map_transparent)){
$map_transparent = "ON";
} else {
$map_transparent = $_GET["map_transparent"];
}
//
//faz uma c�pia do mapfile para poder manipular sem afetar omapfile atual usado pelo i3geo
//
$nomerando = nomerandomico();
//echo $map_file."<br>";
$map_filen = str_replace(basename($map_file),$nomerando.".map",$map_file);
$map_filen = str_replace(".map","",$map_filen).".map";
copy($map_file,$map_filen);
substituiCon($map_filen,$postgis_mapa);
$map = ms_newMapObj($map_filen);
restauraCon($map_filen,$postgis_mapa);
$layersNames = $map->getalllayernames();
foreach ($layersNames as $layerName)
{
$layer = $map->getLayerByname($layerName);
if ($layer->getmetadata("classesnome") != "")
{autoClasses($layer,$map);}
if($layer->type == MS_LAYER_POLYGON)
{
$nclasses = $layer->numclasses;
for($i=0;$i<$nclasses;++$i){
$classe = $layer->getclass($i);
$nestilos = $classe;
for($j=0;$j<$nestilos;++$j){
$estilo = $classe->getstyle($j);
$estilo->set("symbolname","pt1");
}
}
}
}
if(isset($_GET["map_size"]))
{
$map_size = explode(",",$_GET["map_size"]);
$map->setsize($map_size[0],$map_size[1]);
}
if(isset($_GET["mapext"]))
{
$mapext = explode(" ",$_GET["mapext"]);
$map->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]);
}
//$map->save($map_file);
$s = $map->scalebar;
$s->set("status",MS_OFF);
$map_imagecolor = explode(" ",$map_imagecolor);
$imgcolor = $map->imagecolor;
$imgcolor->setrgb($map_imagecolor[0],$map_imagecolor[1],$map_imagecolor[2]);
$o = $map->outputformat;
if(strtolower($map_transparent) == "on")
$o->set("transparent",MS_ON);
else
$o->set("transparent",MS_OFF);
$img = $map->draw();
echo header("Content-type: " . $map->outputformat->mimetype . "\n\n");
$img->saveImage("");
unlink($map_filen);
?>