From 3a36fa57da486d1dc968deac06d4b6e058c683dd Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 19 Feb 2016 22:59:20 -0200 Subject: [PATCH] Correção na árvore de temas KML usada no google earth --- admin/admin.db | Bin 332800 -> 0 bytes kml.php | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------ pacotes/kmlmapserver/classes/layerserver.class.php | 6 ++---- 3 files changed, 119 insertions(+), 76 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index b37dc87..8734d96 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/kml.php b/kml.php index 6d2785e..da36c04 100755 --- a/kml.php +++ b/kml.php @@ -44,18 +44,15 @@ include_once ("classesphp/classe_menutemas.php"); include_once ("ms_configura.php"); include_once ("admin/php/conexao.php"); $encoding = "ISO-8859-1"; -if($convUTF == true) -{$encoding = "UTF-8";} -if(!isset($idioma)) -{$idioma = "pt";} -if(isset($_GET["tipoxml"]) && $_GET["tipoxml"] == "kml"){ - echo header('Content-type: application/vnd.google-earth.kml+xml'); - echo header('Content-Disposition: attachment; filename="i3geo.kml"'); +if($convUTF == true){ + $encoding = "UTF-8"; +} +if(!isset($idioma)){ + $idioma = "pt"; } -else -{echo header("Content-type: application/xml");} -echo ''; -echo "\n"; + +$xml = ''; +$xml .= "\n"; // //pega os endereços para compor a url de chamada do gerador de web services @@ -67,54 +64,69 @@ $protocolo1 = strtolower($protocolo . '://'.$_SERVER['SERVER_NAME']); $protocolo = $protocolo . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; $urli3geo = str_replace("/kml.php","",$protocolo.$_SERVER["PHP_SELF"]); //error_reporting(0); -if(!isset($perfil)){$perfil = "";} +if(!isset($perfil)){ + $perfil = ""; +} // //monta o xml // -echo "Menu i3geo00\n"; +$xml .= "Menu i3geo00\n"; include(dirname(__FILE__)."/admin/php/admin.php"); if(!empty($esquemaadmin)){ $esquemaadmin = str_replace(".","",$esquemaadmin)."."; } -if($idioma == "pt") -{$coluna = "nome_menu";} -else -{$coluna = $idioma;} +if($idioma == "pt"){ + $coluna = "nome_menu"; +} +else{ + $coluna = $idioma; +} $menus = pegaDados("SELECT publicado_menu,perfil_menu,aberto,desc_menu,id_menu,$coluna as nome_menu from ".$esquemaadmin."i3geoadmin_menus where lower(publicado_menu) != 'nao' or publicado_menu is null order by nome_menu "); + +//echo "
menu - ".var_dump($menus);exit;
 foreach($menus as $menu){
-	kml_cabecalho($menu["nome_menu"],$menu["desc_menu"]);
+	$xml .= kml_cabecalho($menu["nome_menu"],$menu["desc_menu"]);
 	$id_menu = $menu["id_menu"];
 	//raiz
-	if($idioma == "pt")
-	{$coluna = "nome_tema";}
-	else
-	{$coluna = $idioma;}
+	if($idioma == "pt")	{
+		$coluna = "nome_tema";
+	}
+	else{
+		$coluna = $idioma;
+	}
+	
 	$sql = "select id_raiz,i3geoadmin_raiz.id_tema,$coluna as nome_tema,tipoa_tema,codigo_tema,kmz_tema FROM ".$esquemaadmin."i3geoadmin_raiz LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = i3geoadmin_raiz.id_tema where (lower(i3geoadmin_temas.tipoa_tema) != 'wms' or i3geoadmin_temas.tipoa_tema is null) and (lower(i3geoadmin_temas.kml_tema) != 'nao' or i3geoadmin_temas.kml_tema isnull) and i3geoadmin_temas.tipoa_tema != 'WMS' and i3geoadmin_temas.kml_tema != 'nao' and i3geoadmin_raiz.id_menu='$id_menu' and i3geoadmin_raiz.nivel = 0 and i3geoadmin_raiz.id_nivel = 0 order by ordem";
 	$temas = pegaDados($sql);
 	if(count($temas) > 0){
-		foreach ($temas as $tema)
-		{kml_tema_bd($tema);}
+		foreach ($temas as $tema){
+			$xml .= kml_tema_bd($tema);
+		}
 	}
+	
 	if($idioma == "pt"){
 		$coluna = "nome_grupo";
 	}
 	else{
 		$coluna = $idioma;
 	}
+	
 	$grupos = pegaDados("SELECT $coluna as nome_grupo,n1.id_n1,n1.id_grupo,gr.desc_grupo from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as gr where (lower(n1.publicado) != 'nao' or n1.publicado is null) and n1.id_menu = '$id_menu' and n1.id_grupo = gr.id_grupo order by gr.nome_grupo");
 	foreach($grupos as $grupo){
-		kml_cabecalho($grupo["nome_grupo"],$grupo["desc_grupo"]);
+		$xml .= kml_cabecalho($grupo["nome_grupo"],$grupo["desc_grupo"]);
 		$id_grupo = $grupo["id_grupo"];
 		//raiz
-		if($idioma == "pt")
-		{$coluna = "nome_tema";}
-		else
-		{$coluna = $idioma;}
+		if($idioma == "pt"){
+			$coluna = "nome_tema";
+		}
+		else{
+			$coluna = $idioma;
+		}
 		$sql = "select id_raiz,i3geoadmin_raiz.id_tema,$coluna as nome_tema,tipoa_tema,kml_tema,kmz_tema,codigo_tema FROM ".$esquemaadmin."i3geoadmin_raiz LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = i3geoadmin_raiz.id_tema where lower(i3geoadmin_temas.tipoa_tema) != 'wms' and lower(i3geoadmin_temas.kml_tema) != 'nao' and i3geoadmin_temas.tipoa_tema != 'WMS' and i3geoadmin_temas.kml_tema != 'nao' and i3geoadmin_raiz.id_menu='$id_menu' and i3geoadmin_raiz.nivel = 1 and i3geoadmin_raiz.id_nivel = ".$grupo["id_n1"]." order by ordem";
 		$temas = pegaDados($sql);
 		if(count($temas) > 0){
-			foreach ($temas as $tema)
-			{kml_tema_bd($tema);}
+			foreach ($temas as $tema){
+				$xml .= kml_tema_bd($tema);
+			}
 		}
 		if($idioma == "pt"){
 			$coluna = "nome_subgrupo";
@@ -123,12 +135,13 @@ foreach($menus as $menu){
 			$coluna = $idioma;
 		}
 		$sql = "select s.$coluna as nome_subgrupo,n2.id_n2 from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_subgrupos as s ";
-		$sql .= "where n1.id_grupo = '$id_grupo' and n2.id_subgrupo = s.id_subgrupo ";
+		$sql .= "where n1.id_menu = '$id_menu' and n1.id_grupo = '$id_grupo' and n2.id_subgrupo = s.id_subgrupo ";
 		$sql .= "and n2.id_n1 = n1.id_n1 ";
 		$sql .= "and (n1.n1_perfil = '' or n1.n1_perfil is null) and (n2.n2_perfil = '' or n2.n2_perfil isnull) ";
 		$sql .= "and (lower(n2.publicado) != 'nao' or n2.publicado is null) ";
 		$sql .= "order by s.nome_subgrupo";
 		$subgrupos = pegaDados($sql);
+		//var_dump($subgrupos);
 		if($idioma == "pt"){
 			$coluna = "nome_tema";
 		}
@@ -145,20 +158,32 @@ foreach($menus as $menu){
 			$sql .= "and (lower(t.tipoa_tema) != 'wms' or t.tipoa_tema is null)";
 			$sql .= "and (lower(n3.publicado) != 'nao' or n3.publicado is null) ";
 			$temas = pegadados($sql);
-			kml_folder($subgrupo["nome_subgrupo"]);
+			$xml .= kml_folder($subgrupo["nome_subgrupo"]);
 			if(count($temas) > 0){
-				foreach ($temas as $tema)
-				{kml_tema_bd($tema);}
+				foreach ($temas as $tema){
+					$xml .= kml_tema_bd($tema);
+				}
 			}
-			echo "\n";
+			$xml .= "\n";
 		}
-		echo "\n";
+		$xml .= "\n";
 	}
-	echo "\n";
+	$xml .= "\n";
 }
-echo "\n";
+
+$xml .= "\n";
+//exit;
+if(isset($_GET["tipoxml"]) && $_GET["tipoxml"] == "kml"){
+	echo header('Content-type: application/vnd.google-earth.kml+xml');
+	echo header('Content-Disposition: attachment; filename="i3geo.kml"');
+}
+else{
+	echo header("Content-type: application/xml");
+}
+echo $xml;
 function kml_tema_bd($tema){
 	global $urli3geo;
+	$xml = "";
 	$teste = array_keys($tema);
 	if(in_array("link_tema",$teste)){
 		$fonte = $tema["link_tema"];
@@ -176,29 +201,34 @@ function kml_tema_bd($tema){
 	}
 	$fonte = "Fonte ";
 	$legenda = "Legenda ";
-
+	$urlLegenda = $urli3geo."/ogc.php?tema=$id&layer=$id&request=getlegendgraphic&service=wms&format=image/jpeg";
 	$href = "$urli3geo/ogc.php?tema=$id&width=800&height=800&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&STYLES=&BGCOLOR=0xFFFFFF&FORMAT=image/png&TRANSPARENT=TRUE&layers=$id";
-	kml_servico($nome,$fonte,$legenda,$desc,$href);
+	
+	$xml .= kml_servico($nome,$fonte,$legenda,$desc,$href,$urlLegenda);
 
 	if(strtolower($tema["kmz_tema"]) == "sim"){
 		$href = "$urli3geo/pacotes/kmlmapserver/kmlservice.php?request=kmz&map=$id&typename=$id";
-		kml_networklink($nome." (vetorial)",$fonte,$legenda,$desc,$href);
+		$xml .= kml_networklink($nome." (vetorial)",$fonte,$legenda,$desc,$href);
 	}
+	return $xml;
 }
 function kml_cabecalho($nome,$desc){
-	echo "\n";
-	echo " ".str_replace("&","&",kml_converteTexto($nome))."\n";
-	echo " ".str_replace("&","&",kml_converteTexto($desc))."\n";
-	echo " 00\n";
+	$xml = "\n";
+	$xml .= " ".str_replace("&","&",kml_converteTexto($nome))."\n";
+	$xml .= " ".str_replace("&","&",kml_converteTexto($desc))."\n";
+	$xml .= " 00\n";
+	return $xml;
 }
-function kml_folder($nome){
-	echo " \n";
-	echo "  ".str_replace("&","&",kml_converteTexto($nome))."\n";
-	echo "  \n";
-	echo "  00\n";
+function kml_folder($nome,$open=0,$vis=0){
+	$xml = " \n";
+	$xml .= "  ".str_replace("&","&",kml_converteTexto($nome))."\n";
+	$xml .= "  \n";
+	$xml .= "  $open$vis\n";
+	return $xml;
 }
 function kml_tema($tema){
 	global $urli3geo;
+	$xml = "";
 	$nome = kml_converteTexto($tema->TNOME);
 	$desc = kml_converteTexto($tema->TDESC);
 	$id = kml_converteTexto($tema->TID);
@@ -218,31 +248,46 @@ function kml_tema($tema){
 
 		$legenda = "Legenda ";
 		$href = "$urli3geo/ogc.php?tema=$id&width=800&height=800&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&STYLES=&BGCOLOR=0xFFFFFF&FORMAT=image/png&TRANSPARENT=TRUE&layers=$id";
-		kml_servico($nome,$fonte,$legenda,$desc,$href);
+		$xml .= kml_servico($nome,$fonte,$legenda,$desc,$href);
 	}
+	return $xml;
 }
-function kml_servico($nome,$fonte,$legenda,$desc,$href){
-	echo "   \n";
-	echo "    ".str_replace("&","&",kml_converteTexto($nome))."\n";
-	echo "    \n";
-	echo "    0\n";
-	echo "    \n";
-	echo "    onStop\n";
-	echo "    $href\n";
-	echo "    \n";
-	echo "    9.49014618085-39.3925604735-29.5851853-76.5125927\n";
-	echo "   \n";
+function kml_servico($nome,$fonte,$legenda,$desc,$href,$urlLegenda){
+	$xml = kml_folder($nome);
+	$xml .= "\n";
+	$xml .= "Legenda\n";
+	$xml .= "0\n";
+	$xml .= "\n";
+	$xml .= "\n";
+	$xml .= "\n";
+	$xml .= "\n";
+	$xml .= "\n";
+	$xml .= "\n";
+	$xml .= "\n";
+	$xml .= "   \n";
+	$xml .= "    ".str_replace("&","&",kml_converteTexto($nome))."\n";
+	$xml .= "    \n";
+	$xml .= "    0\n";
+	$xml .= "    \n";
+	$xml .= "    onStop\n";
+	$xml .= "    $href\n";
+	$xml .= "    \n";
+	$xml .= "    9.49014618085-39.3925604735-29.5851853-76.5125927\n";
+	$xml .= "   \n";
+	$xml .= "";
+	return $xml;
 }
 function kml_networklink($nome,$fonte,$legenda,$desc,$href){
-	echo "   \n";
-	echo "    ".str_replace("&","&",kml_converteTexto($nome))."\n";
-	echo "    \n";
-	echo "    0\n";
-	echo "    \n";
-	echo "       never\n";
-	echo "       $href\n";
-	echo "    \n";
-	echo "   \n";
+	$xml = "   \n";
+	$xml .= "    ".str_replace("&","&",kml_converteTexto($nome))."\n";
+	$xml .= "    \n";
+	$xml .= "    0\n";
+	$xml .= "    \n";
+	$xml .= "       never\n";
+	$xml .= "       $href\n";
+	$xml .= "    \n";
+	$xml .= "   \n";
+	return $xml;
 }
 function kml_converteTexto($i){
 	global $encoding;
diff --git a/pacotes/kmlmapserver/classes/layerserver.class.php b/pacotes/kmlmapserver/classes/layerserver.class.php
index 9245d28..d89181d 100755
--- a/pacotes/kmlmapserver/classes/layerserver.class.php
+++ b/pacotes/kmlmapserver/classes/layerserver.class.php
@@ -212,8 +212,8 @@ class LayerServer {
 				// Set endpoint
 				//die($_SERVER['REQUEST_URI']);
 
-		$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
-		$protocolo = strtolower($protocolo[0]);
+				$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
+				$protocolo = strtolower($protocolo[0]);
 				$this->endpoint = $protocolo . '://'.$_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] ? ':'.$_SERVER['SERVER_PORT'] : '') . $_SERVER['PHP_SELF'];
 
 				// Process request
@@ -223,9 +223,7 @@ class LayerServer {
 				if($this->has_error()){
 						$this->add_errors();
 				}
-
 				return $this->send_stream($this->get_kml());
-
 		 }
 
 		/**
--
libgit2 0.21.2