From 2ad69a1b9eea00943730d87efc21fa1323710f1b Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 18 Aug 2014 12:28:50 +0000 Subject: [PATCH] Inclusão de opção para filtrar camadas no ms_criamapa.php e para ver a ajuda --- classesjs/geradordelinks.js | 25 +++++++++++++------------ exemplos/index.html | 3 +++ geradordelinks.htm | 7 ++----- ms_criamapa.php | 306 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------- 4 files changed, 233 insertions(+), 108 deletions(-) diff --git a/classesjs/geradordelinks.js b/classesjs/geradordelinks.js index 96ef26a..ff4cbc7 100644 --- a/classesjs/geradordelinks.js +++ b/classesjs/geradordelinks.js @@ -78,7 +78,7 @@ Veja: /* Classe: i3geo_gl_configura -Cria o objeto javascript com os parâmetros de configuração da api e com as funções de manipulação. +Cria o objeto javascript com os par�metros de configuração da api e com as funções de manipulação. Example: @@ -115,31 +115,31 @@ function i3geo_gl_configura(loc_i3geo,nomeseltema,temasa,link,grupo,subgrupo,tem */ this.link = link; /* - Guarda o valor do parâmetro seltema + Guarda o valor do par�metro seltema */ this.nomeseltema = nomeseltema; /* - Guarda o valor do parâmetro loc_i3geo + Guarda o valor do par�metro loc_i3geo */ this.loc_i3geo = loc_i3geo; /* - Guarda o valor do parâmetro menu + Guarda o valor do par�metro menu */ this.menu = menu; /* - Guarda o valor do parâmetro grupo + Guarda o valor do par�metro grupo */ this.grupo = grupo; /* - Guarda o valor do parâmetro subgrupo + Guarda o valor do par�metro subgrupo */ this.subgrupo = subgrupo; /* - Guarda o valor do parâmetro tema + Guarda o valor do par�metro tema */ this.tema = tema; /* - Guarda o valor do parâmetro buscageo + Guarda o valor do par�metro buscageo */ this.buscageo = buscageo; /* @@ -200,7 +200,7 @@ function i3geo_gl_configura(loc_i3geo,nomeseltema,temasa,link,grupo,subgrupo,tem /* Function: crialink - Pega os parâmetros especificados pelo usuário e monta o link para mostrar na tela. + Pega os par�metros especificados pelo usuário e monta o link para mostrar na tela. */ this.crialink = function() { @@ -302,7 +302,7 @@ function i3geo_gl_configura(loc_i3geo,nomeseltema,temasa,link,grupo,subgrupo,tem /* Function: preseltema - Compatibiliza a chamada da função i3geo_combotemasMenu com a função this.seltema em termos de número de parâmetros + Compatibiliza a chamada da função i3geo_combotemasMenu com a função this.seltema em termos de número de par�metros */ this.preseltema = function(idgrupo,idsubgrupo,idtema) { @@ -435,7 +435,8 @@ function i3geo_gl_configura(loc_i3geo,nomeseltema,temasa,link,grupo,subgrupo,tem $i("OpenLayers_Control_PanZoom_panleft").style.display="none" $i("OpenLayers_Control_PanZoom_panright").style.display="none" */ - $i("OpenLayers.Control.NavToolbar_36").style.display="none"; + //TODO remover a barra + //$i("OpenLayers.Control.NavToolbar_36").style.display="none"; zb.div.style.left="0px"; $i3geo_gl.OL.capturageo = function() { @@ -462,7 +463,7 @@ Inicia a interface do gerador de links. Parameters: -objeto_i3geo_gl_configura - objeto com os parâmentros de configuração criado pela função i3geo_gl_configura +objeto_i3geo_gl_configura - objeto com os par�mentros de configuração criado pela função i3geo_gl_configura */ function i3geo_gl_inicia(objeto_i3geo_gl_configura) { diff --git a/exemplos/index.html b/exemplos/index.html index 20c16f5..eb98467 100644 --- a/exemplos/index.html +++ b/exemplos/index.html @@ -30,6 +30,9 @@ body,td {

Diversos

+ Para ver os parâmetros de inicialização com ms_configura basta digitar http://localhost/i3geo/ms_criamapa.php?ajuda +

+

Navegador de WMS cadastrados na INDE Brasileira

diff --git a/geradordelinks.htm b/geradordelinks.htm index 511757a..4a4b6f9 100644 --- a/geradordelinks.htm +++ b/geradordelinks.htm @@ -20,8 +20,8 @@ P -->

Gerador de links do i3Geo
-

Bookmark: -

+

Para ver os parâmetros de inicialização com ms_configura basta digitar http://localhost/i3geo/ms_criamapa.php?ajuda

+

Aqui você pode gerar links para abrir o i3Geo de forma personalizada. Os links podem ser incluídos em qualquer página WEB, sendo possível definir quais os temas serão mostrados e qual a extensão geográfica do mapa.

@@ -119,9 +119,6 @@ File: i3geo/geradordelinks.htm OpenLayers.ImgPath = "pacotes/openlayers/img/"; var g_locaplic = i3GEO.util.protocolo()+"://"+window.location.host+"/i3geo"; i3GEO.configura.locaplic = g_locaplic; -$i("bm1").innerHTML = i3GEO.social.bookmark(window.location.href); -loc = window.location.href; -i3GEO.social.compartilhar("curtir",loc,loc,"comtotal"); var i3geo_gl_configura = new i3geo_gl_configura( g_locaplic, diff --git a/ms_criamapa.php b/ms_criamapa.php index e40dbd6..5dd0550 100644 --- a/ms_criamapa.php +++ b/ms_criamapa.php @@ -130,8 +130,99 @@ gvsiggvp - (depreciado na versão 4.7 - utilize o parametro temasa) endere gvsigview - lista com nomes de views existentes no projeto gvSig separado por virgula. Se for vazio, serao adicionadas todas as views. Exemplo (http://localhost/i3geo/ms_criamapa.php?gvsiggvp=c:\temp\teste.gvp&gvsigview=Untitled - 0) restauramapa - id do mapa armazenado no sistema de administracao e que será restaurado para ser aberto novamente (veja em i3geo/admin/html/mapas.html) + +filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter= + + Exemplo de filtro + + http://localhost/i3geo/ms_criamapa.php?temasa=_lbiomashp&map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp + + no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' */ +if(isset($_GET["ajuda"])){ + echo "
";
+	echo"
+Parâmetros:
+
+base - arquivo mapfile que servirá de base para a criação do mapa. Por default, são utilizados os arquivos existentes em i3geo/aplicmap (geral1windows, geral1,...)
+	Essa variável pode ser definida em ms_configura também. Se não estiver definida em nenhum lugar, o i3Geo tentará descobrir o arquivo adequado a ser utilizado. Você pode utilizar essa opção para abrir um mapa com as camadas que você quiser, mas para evitar redundâncias, prefira o uso de &temasa
+
+temasa - lista, separada por espaços, com os nomes dos arquivos map ou gvsig que serão adicionados ao mapa. Se o arquivo não estiver no diretório i3geo/temas, o nome deve incluir o caminho completo no servidor. O arquivo pode conter mais de um layer pois todos os existentes serão adicionados ao mapa. Por default, todos os layers encontrados nos mapfiles são adicionados ao mapa com o status de desenho em OFF.
+
+layers - lista, separada por espaços, com os nomes dos layers que serão ligados. A lista deve conter os nomes dos layers e não os nomes dos mapfiles acrescentados ao mapa. Por exemplo, ao adicionar com 'temasa' um mapfile chamado 'transporte' que contenha os layers 'estradas' e 'ferrovias' os dois layers serão adicionados ao mapa. Para que esses dois layers fiquem visíveis no mapa deve-se utilizar &layers=estradas ferrovias.
+
+desligar - lista com os nomes dos temas que serão forçados a inicializar desligados, ou seja, com STATUS OFF
+
+mapext - extensao geografica que será utilizada. Por padrão, a extensão geográfica é definida para abranger o Brasil todo. Para alterar o padrão deve-se utilizar o parâmetro mapext para especificar a nova abrangência. Essa abrangência deve ser definida em coordenadas no formato décimos de grau e na projeção geográfica. Exemplo: &mapext=-54 -30 -50 -12. Observe que a ordem dos valores são xmin ymin xmax ymax
+
+executa - programa ou função em php que será executado via include. O include é feito no final do processo de inicialização quando a variável $tmpfname já está definida. Essa variável guarda o nome do arquivo mapfile que será utilizado pelo i3geo.
+
+interface - nome da interface que será utilizada para abrir o mapa. As interfaces são arquivos HTML que podem estar no diretório aplicmap. Por default, utiliza-se o geral.htm. Vc pode copiar esse html e alterá-lo para customizar o mapa. Para chamar o html customizado, utilize ms_criamapa.php?interface=meumapa.htm
+
+perfil - perfil utilizado para restringir os menus de temas. ms_criamapa.php?perfil=usuário1
+
+caminho - caminho relativo que indica o local onde a interface do mapa esta localizada.
+
+pontos - lista de coordenadas x e y que serão adicionadas como pontos no mapa.
+
+nometemapontos - nome do tema de pontos
+
+linhas - lista de coordenadas x e y que serão adicionadas como linhas no mapa. As coordenadas de linhas diferentes devem ser separadas por ',', por exemplo: -54 -12 -50 -12,-50 -1 -50 -2 -50 -3
+
+nometemalinhas - nome do tema de linhas
+
+poligonos - lista de coordenadas x e y que serão adicionadas como polígonos no mapa. As coordenadas dos vértices de polígonos diferentes devem ser separadas por ','.
+
+nometemapoligonos - nome do tema de polígonos
+
+simbolo - nome do símbolo que será utilizado para desenhar os elementos inseridos (veja arquivo de símbolos em i3geo/symbols)
+
+corsimbolo - cor do símbolo definido em RGB separados por espaço ou vírgula
+
+tamanhosimbolo - tamanho do símbolo em pixels
+
+wkt - insere elementos no mapa com coordenadas definidas em wkt
+
+nometemawkt - nome do tema em wkt
+
+idioma - idioma da interface (veja os idiomas disponíveis em classe_idioma.js)
+
+kmlurl - url de um arquivo KML que será incluido no mapa. Válido apenas na interface google maps
+
+url_wms - endereço de um WMS (será incluido como uma camada no mapa)
+
+layer_wms - nome do layer
+
+style_wms - estilo do layer
+
+nome_wms - nome da camada (titulo)
+
+srs_wms - código da projeção
+
+image_wms - tipo de imagem disponível
+
+versao_wms - Versão do WMS (necessário quando da inclusão de uma camada WMS diretamente pela URL)
+
+gvsiggvp - (depreciado na versão 4.7 - utilize o parametro temasa) endereço no servidor do arquivo de projeto gvSig (gvp) que será utilizado para construir o mapa (experimental)
+
+gvsigview - lista com nomes de views existentes no projeto gvSig separado por virgula. Se for vazio, serao adicionadas todas as views. Exemplo (http://localhost/i3geo/ms_criamapa.php?gvsiggvp=c:\temp\teste.gvp&gvsigview=Untitled - 0)
+
+restauramapa - id do mapa armazenado no sistema de administracao e que será restaurado para ser aberto novamente (veja em i3geo/admin/html/mapas.html)
+
+filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter=
+
+  Exemplo de filtro
+
+  http://localhost/i3geo/ms_criamapa.php?temasa=_lbiomashp&map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp
+
+  no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA'
+	
+	";
+	exit;
+}
+
+
 //$_COOKIE = array();
 //
 //quando $funcao existe, é pq o ms_criamapa.php está sendo utilizado como um include em classesphp/mapa_controle.php
@@ -249,25 +340,33 @@ $expoeMapfile_ = $expoeMapfile;
 $googleApiKey_ = $googleApiKey;
 $mensagemInicia_ = $mensagemInicia;
 $interfacePadrao_ = $interfacePadrao;
-if(isset($interface))
-{$interface_ = $interface;}
-else{$interface_ = $interfacePadrao;}
-if(isset($kmlurl))
-{$kmlurl_ = $kmlurl;}
+if(isset($interface)){
+	$interface_ = $interface;
+}
+else{
+	$interface_ = $interfacePadrao;
+}
+if(isset($kmlurl)){
+	$kmlurl_ = $kmlurl;
+}
 //
 //se houver string de conexão para substituição
 //o modo cgi não irá funcionar
 //
-if($postgis_mapa != "")
-{$utilizacgi = "nao";}
-if(!isset($perfil))
-{$perfil="";}
+if($postgis_mapa != ""){
+	$utilizacgi = "nao";
+}
+if(!isset($perfil)){
+	$perfil="";
+}
 $perfil_ = $perfil;
 $utilizacgi_ = $utilizacgi;
-if ((isset($navegadoresLocais)) && ($navegadoresLocais != ""))
-{$navegadoresLocais_ = "sim";}
-else
-{$navegadoresLocais_ = "nao";}
+if ((isset($navegadoresLocais)) && ($navegadoresLocais != "")){
+	$navegadoresLocais_ = "sim";
+}
+else{
+	$navegadoresLocais_ = "nao";
+}
 if(empty($i3georendermode)){
 	$i3georendermode_ = 0;
 }
@@ -333,8 +432,9 @@ $_SESSION["saikuUrl"] = $saikuUrl_;
 //pega todas as variáveis da sessão, mesmo as que foram definidas anteriormente
 //
 
-foreach(array_keys($_SESSION) as $k)
-{eval("\$".$k."='".$_SESSION[$k]."';");}
+foreach(array_keys($_SESSION) as $k){
+	eval("\$".$k."='".$_SESSION[$k]."';");
+}
 $postgis_mapa = $postgis_mapa_;
 /*
 Define os arquivos .map
@@ -349,12 +449,11 @@ O arquivo é lido conforma a característica do sistema operacional.
 */
 $versao = versao();
 $versao = $versao["principal"];
-if(!isset($base) || $base == "")
-{
-	if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
-	{$base = $locaplic."/aplicmap/geral1windowsv".$versao.".map";}
-	else
-	{
+if(!isset($base) || $base == ""){
+	if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){
+		$base = $locaplic."/aplicmap/geral1windowsv".$versao.".map";
+	}
+	else{
 		if($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){
 			$base = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map";
 		}
@@ -375,13 +474,11 @@ Cria os objetos map que serão processados
 
 O arquivo definido em $base é lido como um objeto map. Esse objeto será processado para incluir novos layers e alterar outros parâmetros definidos pelo usuário.
 */
-if (file_exists($base))
-{
+if (file_exists($base)){
 	$map = ms_newMapObj($base);
 	$mapn = ms_newMapObj($base);
 }
-else
-{
+else{
 	$map = ms_newMapObj($locaplic."/aplicmap/".$base.".map");
 	$mapn = ms_newMapObj($locaplic."/aplicmap/".$base.".map");
 }
@@ -397,53 +494,63 @@ Parâmetros adicionais.
 
 Processa os parâmetros para a inicialização verificando se foram passados pela URL ou não.
 */
-if (!isset($mapext))
-{$mapext = $map->extent->minx." ".$map->extent->miny." ".$map->extent->maxx." ".$map->extent->maxy;}
-if (!isset ($map_reference_image)) //arquivo com a imagem de referência
-{$map_reference_image = $map->reference->image;}
-if (!isset ($map_reference_extent)) //extensão geográfica da imagem do mapa de referência
-{$map_reference_extent = $map->reference->extent->minx." ".$map->reference->extent->miny." ".$map->reference->extent->maxx." ".$map->reference->extent->maxy;}
+if (!isset($mapext)){
+	$mapext = $map->extent->minx." ".$map->extent->miny." ".$map->extent->maxx." ".$map->extent->maxy;
+}
+//arquivo com a imagem de referência
+if (!isset ($map_reference_image)){
+	$map_reference_image = $map->reference->image;
+}
+//extensão geográfica da imagem do mapa de referência
+if (!isset ($map_reference_extent)){
+	$map_reference_extent = $map->reference->extent->minx." ".$map->reference->extent->miny." ".$map->reference->extent->maxx." ".$map->reference->extent->maxy;
+}
 if(!isset($interface)){
-	if(!isset($interfacePadrao))
-	{$interfacePadrao = "openlayers.htm";}
+	if(!isset($interfacePadrao)){
+		$interfacePadrao = "black_ol.htm";
+	}
 	$interface = $interfacePadrao;
 }
 
-if(isset($layers) && !isset($temasa))
-{$temasa = $layers;}
+if(isset($layers) && !isset($temasa)){
+	$temasa = $layers;
+}
 
 incluiTemasIniciais();
 
-if(isset($layers))
-{ligaTemas();}
-if(isset($desligar))
-{desligaTemasIniciais();}
-if (isset($map_reference_image))
-{$mapn->reference->set("image",$map_reference_image);}
+if(isset($layers)){
+	ligaTemas();
+}
+if(isset($desligar)){
+	desligaTemasIniciais();
+}
+if (isset($map_reference_image)){
+	$mapn->reference->set("image",$map_reference_image);
+}
 $extr = $mapn->reference->extent;
-if (isset($map_reference_extent))
-{
+if (isset($map_reference_extent)){
 	$temp = explode(" ",$map_reference_extent);
-	foreach ($temp as $t)
-	{
-		if ($t != "")
-		{$newext[] = $t;}
+	foreach ($temp as $t)	{
+		if ($t != ""){
+			$newext[] = $t;
+		}
+	}
+	if (count($newext) == 4){
+		$extr->setextent($newext[0], $newext[1], $newext[2], $newext[3]);
 	}
-	if (count($newext) == 4)
-	{$extr->setextent($newext[0], $newext[1], $newext[2], $newext[3]);}
 }
 $ext = $mapn->extent;
 $newext = array();
-if ((isset($mapext)) && ($mapext != ""))
-{
+if ((isset($mapext)) && ($mapext != "")){
 	$temp = explode(" ",$mapext);
-	foreach ($temp as $t)
-	{
-		if ($t != "")
-		{$newext[] = $t;}
+	foreach ($temp as $t)	{
+		if ($t != ""){
+			$newext[] = $t;
+		}
+	}
+	if (count($newext) == 4){
+		$ext->setextent($newext[0], $newext[1], $newext[2], $newext[3]);
 	}
-	if (count($newext) == 4)
-	{$ext->setextent($newext[0], $newext[1], $newext[2], $newext[3]);}
 }
 else{
 	//algumas aplicacoes usam essa variavel (SAIKU)
@@ -468,35 +575,43 @@ $_SESSION["imgurl"] = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].$atu
 $_SESSION["tmpurl"] = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].$atual;
 $_SESSION["map_file"] = $tmpfname;
 $_SESSION["mapext"] = $mapext;
-if (isset($executa))
-{
-	if (file_exists($executa))
-	{include_once ($executa);}
-	if (function_exists($executa))
-	{eval($executa."();");}
+if (isset($executa)){
+	if (file_exists($executa)){
+		include_once ($executa);
+	}
+	if (function_exists($executa)){
+		eval($executa."();");
+	}
+}
+if(isset($wkt)){
+	insereWKTUrl();
 }
-if(isset($wkt))
-{insereWKTUrl();}
 
-if(isset($pontos))
-{inserePontosUrl();}
+if(isset($pontos)){
+	inserePontosUrl();
+}
 
-if(isset($linhas))
-{insereLinhasUrl();}
+if(isset($linhas)){
+	insereLinhasUrl();
+}
 
-if(isset($poligonos))
-{inserePoligonosUrl();}
+if(isset($poligonos)){
+	inserePoligonosUrl();
+}
 
-if(isset($url_wms))
-{incluiTemaWms();}
+if(isset($url_wms)){
+	incluiTemaWms();
+}
 
 adaptaLayers($tmpfname,$versao);
 
-if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat"))
-{require_once(dirname(__FILE__)."/ms_registraip.php");}
+if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")){
+	require_once(dirname(__FILE__)."/ms_registraip.php");
+}
 //echo $tmpfname;exit;
-if ($interface != "mashup")
-{abreInterface($interface,$caminho,$tempo);}
+if ($interface != "mashup"){
+	abreInterface($interface,$caminho,$tempo);
+}
 
 /*
 Adapta os dados de cada layer.
@@ -507,31 +622,40 @@ function adaptaLayers($tmpfname,$versao){
 	$mapa = ms_newMapObj($tmpfname);
 	$path = $mapa->shapepath;
 	$numlayers = $mapa->numlayers;
-	for($i=0;$i<$numlayers;++$i)
-	{
+	for($i=0;$i<$numlayers;++$i){
 		$layer = $mapa->getLayer($i);
 		$ok = true;
-		if ($layer->connection == "")
-		{
+		if ($layer->connection == ""){
 			$ok = false;
 			$d = $layer->data;
-			if((file_exists($d)) || (file_exists($d.".shp")))
-			{$ok = true;}
-			else
-			{
-				if((file_exists($path."/".$d)) || (file_exists($path."/".$d.".shp")))
-				{$ok = true;}
+			if((file_exists($d)) || (file_exists($d.".shp"))){
+				$ok = true;
 			}
+			else{
+				if((file_exists($path."/".$d)) || (file_exists($path."/".$d.".shp"))){
+					$ok = true;
+				}
+			}
+		}
+		if ($ok == false){
+			$layer->set("status",MS_OFF);
 		}
-		if ($ok == false)
-		{$layer->set("status",MS_OFF);}
 		//para impedir erros na legenda
-		if($layer->getmetadata("classe") == "")
-		{$layer->setmetadata("classe","");}
+		if($layer->getmetadata("classe") == ""){
+			$layer->setmetadata("classe","");
+		}
 		if($versao > 5){
 			$layer->setprocessing("LABEL_NO_CLIP=True");
 			$layer->setprocessing("POLYLINE_NO_CLIP=True");
 		}
+		//
+		//verifica se deve aplicar filtro
+		//
+		$filtro = $_GET["map_layer_".$layer->name."_filter"];
+		if(!empty($filtro)){
+			$layer->setmetadata("CACHE","nao");
+			$layer->setfilter($filtro);
+		}
 	}
 	$mapa->save($tmpfname);
 	erroCriacao();
--
libgit2 0.21.2