Commit 3a36fa57da486d1dc968deac06d4b6e058c683dd
1 parent
931e4cbf
Exists in
master
and in
7 other branches
Correção na árvore de temas KML usada no google earth
Showing
3 changed files
with
119 additions
and
76 deletions
Show diff stats
admin/admin.db
No preview for this file type
kml.php
| ... | ... | @@ -44,18 +44,15 @@ include_once ("classesphp/classe_menutemas.php"); |
| 44 | 44 | include_once ("ms_configura.php"); |
| 45 | 45 | include_once ("admin/php/conexao.php"); |
| 46 | 46 | $encoding = "ISO-8859-1"; |
| 47 | -if($convUTF == true) | |
| 48 | -{$encoding = "UTF-8";} | |
| 49 | -if(!isset($idioma)) | |
| 50 | -{$idioma = "pt";} | |
| 51 | -if(isset($_GET["tipoxml"]) && $_GET["tipoxml"] == "kml"){ | |
| 52 | - echo header('Content-type: application/vnd.google-earth.kml+xml'); | |
| 53 | - echo header('Content-Disposition: attachment; filename="i3geo.kml"'); | |
| 47 | +if($convUTF == true){ | |
| 48 | + $encoding = "UTF-8"; | |
| 49 | +} | |
| 50 | +if(!isset($idioma)){ | |
| 51 | + $idioma = "pt"; | |
| 54 | 52 | } |
| 55 | -else | |
| 56 | -{echo header("Content-type: application/xml");} | |
| 57 | -echo '<?xml version="1.0" encoding="'.$encoding.'"?>'; | |
| 58 | -echo "<kml xmlns='http://earth.google.com/kml/2.2'>\n"; | |
| 53 | + | |
| 54 | +$xml = '<?xml version="1.0" encoding="'.$encoding.'"?>'; | |
| 55 | +$xml .= "<kml xmlns='http://earth.google.com/kml/2.2'>\n"; | |
| 59 | 56 | |
| 60 | 57 | // |
| 61 | 58 | //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']); |
| 67 | 64 | $protocolo = $protocolo . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; |
| 68 | 65 | $urli3geo = str_replace("/kml.php","",$protocolo.$_SERVER["PHP_SELF"]); |
| 69 | 66 | //error_reporting(0); |
| 70 | -if(!isset($perfil)){$perfil = "";} | |
| 67 | +if(!isset($perfil)){ | |
| 68 | + $perfil = ""; | |
| 69 | +} | |
| 71 | 70 | // |
| 72 | 71 | //monta o xml |
| 73 | 72 | // |
| 74 | -echo "<Document><name>Menu i3geo</name><open>0</open><description></description><visibility>0</visibility>\n"; | |
| 73 | +$xml .= "<Document><name>Menu i3geo</name><open>0</open><description></description><visibility>0</visibility>\n"; | |
| 75 | 74 | include(dirname(__FILE__)."/admin/php/admin.php"); |
| 76 | 75 | if(!empty($esquemaadmin)){ |
| 77 | 76 | $esquemaadmin = str_replace(".","",$esquemaadmin)."."; |
| 78 | 77 | } |
| 79 | -if($idioma == "pt") | |
| 80 | -{$coluna = "nome_menu";} | |
| 81 | -else | |
| 82 | -{$coluna = $idioma;} | |
| 78 | +if($idioma == "pt"){ | |
| 79 | + $coluna = "nome_menu"; | |
| 80 | +} | |
| 81 | +else{ | |
| 82 | + $coluna = $idioma; | |
| 83 | +} | |
| 83 | 84 | $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 "); |
| 85 | + | |
| 86 | +//echo "<pre>menu - ".var_dump($menus);exit; | |
| 84 | 87 | foreach($menus as $menu){ |
| 85 | - kml_cabecalho($menu["nome_menu"],$menu["desc_menu"]); | |
| 88 | + $xml .= kml_cabecalho($menu["nome_menu"],$menu["desc_menu"]); | |
| 86 | 89 | $id_menu = $menu["id_menu"]; |
| 87 | 90 | //raiz |
| 88 | - if($idioma == "pt") | |
| 89 | - {$coluna = "nome_tema";} | |
| 90 | - else | |
| 91 | - {$coluna = $idioma;} | |
| 91 | + if($idioma == "pt") { | |
| 92 | + $coluna = "nome_tema"; | |
| 93 | + } | |
| 94 | + else{ | |
| 95 | + $coluna = $idioma; | |
| 96 | + } | |
| 97 | + | |
| 92 | 98 | $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"; |
| 93 | 99 | $temas = pegaDados($sql); |
| 94 | 100 | if(count($temas) > 0){ |
| 95 | - foreach ($temas as $tema) | |
| 96 | - {kml_tema_bd($tema);} | |
| 101 | + foreach ($temas as $tema){ | |
| 102 | + $xml .= kml_tema_bd($tema); | |
| 103 | + } | |
| 97 | 104 | } |
| 105 | + | |
| 98 | 106 | if($idioma == "pt"){ |
| 99 | 107 | $coluna = "nome_grupo"; |
| 100 | 108 | } |
| 101 | 109 | else{ |
| 102 | 110 | $coluna = $idioma; |
| 103 | 111 | } |
| 112 | + | |
| 104 | 113 | $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"); |
| 105 | 114 | foreach($grupos as $grupo){ |
| 106 | - kml_cabecalho($grupo["nome_grupo"],$grupo["desc_grupo"]); | |
| 115 | + $xml .= kml_cabecalho($grupo["nome_grupo"],$grupo["desc_grupo"]); | |
| 107 | 116 | $id_grupo = $grupo["id_grupo"]; |
| 108 | 117 | //raiz |
| 109 | - if($idioma == "pt") | |
| 110 | - {$coluna = "nome_tema";} | |
| 111 | - else | |
| 112 | - {$coluna = $idioma;} | |
| 118 | + if($idioma == "pt"){ | |
| 119 | + $coluna = "nome_tema"; | |
| 120 | + } | |
| 121 | + else{ | |
| 122 | + $coluna = $idioma; | |
| 123 | + } | |
| 113 | 124 | $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"; |
| 114 | 125 | $temas = pegaDados($sql); |
| 115 | 126 | if(count($temas) > 0){ |
| 116 | - foreach ($temas as $tema) | |
| 117 | - {kml_tema_bd($tema);} | |
| 127 | + foreach ($temas as $tema){ | |
| 128 | + $xml .= kml_tema_bd($tema); | |
| 129 | + } | |
| 118 | 130 | } |
| 119 | 131 | if($idioma == "pt"){ |
| 120 | 132 | $coluna = "nome_subgrupo"; |
| ... | ... | @@ -123,12 +135,13 @@ foreach($menus as $menu){ |
| 123 | 135 | $coluna = $idioma; |
| 124 | 136 | } |
| 125 | 137 | $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 "; |
| 126 | - $sql .= "where n1.id_grupo = '$id_grupo' and n2.id_subgrupo = s.id_subgrupo "; | |
| 138 | + $sql .= "where n1.id_menu = '$id_menu' and n1.id_grupo = '$id_grupo' and n2.id_subgrupo = s.id_subgrupo "; | |
| 127 | 139 | $sql .= "and n2.id_n1 = n1.id_n1 "; |
| 128 | 140 | $sql .= "and (n1.n1_perfil = '' or n1.n1_perfil is null) and (n2.n2_perfil = '' or n2.n2_perfil isnull) "; |
| 129 | 141 | $sql .= "and (lower(n2.publicado) != 'nao' or n2.publicado is null) "; |
| 130 | 142 | $sql .= "order by s.nome_subgrupo"; |
| 131 | 143 | $subgrupos = pegaDados($sql); |
| 144 | + //var_dump($subgrupos); | |
| 132 | 145 | if($idioma == "pt"){ |
| 133 | 146 | $coluna = "nome_tema"; |
| 134 | 147 | } |
| ... | ... | @@ -145,20 +158,32 @@ foreach($menus as $menu){ |
| 145 | 158 | $sql .= "and (lower(t.tipoa_tema) != 'wms' or t.tipoa_tema is null)"; |
| 146 | 159 | $sql .= "and (lower(n3.publicado) != 'nao' or n3.publicado is null) "; |
| 147 | 160 | $temas = pegadados($sql); |
| 148 | - kml_folder($subgrupo["nome_subgrupo"]); | |
| 161 | + $xml .= kml_folder($subgrupo["nome_subgrupo"]); | |
| 149 | 162 | if(count($temas) > 0){ |
| 150 | - foreach ($temas as $tema) | |
| 151 | - {kml_tema_bd($tema);} | |
| 163 | + foreach ($temas as $tema){ | |
| 164 | + $xml .= kml_tema_bd($tema); | |
| 165 | + } | |
| 152 | 166 | } |
| 153 | - echo "</Folder>\n"; | |
| 167 | + $xml .= "</Folder>\n"; | |
| 154 | 168 | } |
| 155 | - echo "</Folder>\n"; | |
| 169 | + $xml .= "</Folder>\n"; | |
| 156 | 170 | } |
| 157 | - echo "</Folder>\n"; | |
| 171 | + $xml .= "</Folder>\n"; | |
| 158 | 172 | } |
| 159 | -echo "</Document></kml>\n"; | |
| 173 | + | |
| 174 | +$xml .= "</Document></kml>\n"; | |
| 175 | +//exit; | |
| 176 | +if(isset($_GET["tipoxml"]) && $_GET["tipoxml"] == "kml"){ | |
| 177 | + echo header('Content-type: application/vnd.google-earth.kml+xml'); | |
| 178 | + echo header('Content-Disposition: attachment; filename="i3geo.kml"'); | |
| 179 | +} | |
| 180 | +else{ | |
| 181 | + echo header("Content-type: application/xml"); | |
| 182 | +} | |
| 183 | +echo $xml; | |
| 160 | 184 | function kml_tema_bd($tema){ |
| 161 | 185 | global $urli3geo; |
| 186 | + $xml = ""; | |
| 162 | 187 | $teste = array_keys($tema); |
| 163 | 188 | if(in_array("link_tema",$teste)){ |
| 164 | 189 | $fonte = $tema["link_tema"]; |
| ... | ... | @@ -176,29 +201,34 @@ function kml_tema_bd($tema){ |
| 176 | 201 | } |
| 177 | 202 | $fonte = "<a href='$fonte' >Fonte </a>"; |
| 178 | 203 | $legenda = "<a href='$urli3geo/ogc.php?tema=$id&layer=$id&request=getlegendgraphic&service=wms&format=image/jpeg' >Legenda </a>"; |
| 179 | - | |
| 204 | + $urlLegenda = $urli3geo."/ogc.php?tema=$id&layer=$id&request=getlegendgraphic&service=wms&format=image/jpeg"; | |
| 180 | 205 | $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"; |
| 181 | - kml_servico($nome,$fonte,$legenda,$desc,$href); | |
| 206 | + | |
| 207 | + $xml .= kml_servico($nome,$fonte,$legenda,$desc,$href,$urlLegenda); | |
| 182 | 208 | |
| 183 | 209 | if(strtolower($tema["kmz_tema"]) == "sim"){ |
| 184 | 210 | $href = "$urli3geo/pacotes/kmlmapserver/kmlservice.php?request=kmz&map=$id&typename=$id"; |
| 185 | - kml_networklink($nome." (vetorial)",$fonte,$legenda,$desc,$href); | |
| 211 | + $xml .= kml_networklink($nome." (vetorial)",$fonte,$legenda,$desc,$href); | |
| 186 | 212 | } |
| 213 | + return $xml; | |
| 187 | 214 | } |
| 188 | 215 | function kml_cabecalho($nome,$desc){ |
| 189 | - echo "<Folder>\n"; | |
| 190 | - echo " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 191 | - echo " <description>".str_replace("&","&",kml_converteTexto($desc))."</description>\n"; | |
| 192 | - echo " <open>0</open><visibility>0</visibility>\n"; | |
| 216 | + $xml = "<Folder>\n"; | |
| 217 | + $xml .= " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 218 | + $xml .= " <description>".str_replace("&","&",kml_converteTexto($desc))."</description>\n"; | |
| 219 | + $xml .= " <open>0</open><visibility>0</visibility>\n"; | |
| 220 | + return $xml; | |
| 193 | 221 | } |
| 194 | -function kml_folder($nome){ | |
| 195 | - echo " <Folder>\n"; | |
| 196 | - echo " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 197 | - echo " <description></description>\n"; | |
| 198 | - echo " <open>0</open><visibility>0</visibility>\n"; | |
| 222 | +function kml_folder($nome,$open=0,$vis=0){ | |
| 223 | + $xml = " <Folder>\n"; | |
| 224 | + $xml .= " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 225 | + $xml .= " <description></description>\n"; | |
| 226 | + $xml .= " <open>$open</open><visibility>$vis</visibility>\n"; | |
| 227 | + return $xml; | |
| 199 | 228 | } |
| 200 | 229 | function kml_tema($tema){ |
| 201 | 230 | global $urli3geo; |
| 231 | + $xml = ""; | |
| 202 | 232 | $nome = kml_converteTexto($tema->TNOME); |
| 203 | 233 | $desc = kml_converteTexto($tema->TDESC); |
| 204 | 234 | $id = kml_converteTexto($tema->TID); |
| ... | ... | @@ -218,31 +248,46 @@ function kml_tema($tema){ |
| 218 | 248 | |
| 219 | 249 | $legenda = "<a href='$urli3geo/ogc.php?tema=$id&layer=$id&request=getlegendgraphic&service=wms&format=image/png' >Legenda </a>"; |
| 220 | 250 | $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"; |
| 221 | - kml_servico($nome,$fonte,$legenda,$desc,$href); | |
| 251 | + $xml .= kml_servico($nome,$fonte,$legenda,$desc,$href); | |
| 222 | 252 | } |
| 253 | + return $xml; | |
| 223 | 254 | } |
| 224 | -function kml_servico($nome,$fonte,$legenda,$desc,$href){ | |
| 225 | - echo " <GroundOverlay>\n"; | |
| 226 | - echo " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 227 | - echo " <description><![CDATA[".$fonte.$legenda.$desc."]]></description>\n"; | |
| 228 | - echo " <visibility>0</visibility>\n"; | |
| 229 | - echo " <Icon>\n"; | |
| 230 | - echo " <viewRefreshMode>onStop</viewRefreshMode>\n"; | |
| 231 | - echo " <href>$href</href>\n"; | |
| 232 | - echo " </Icon>\n"; | |
| 233 | - echo " <LatLonBox><north>9.49014618085</north><south>-39.3925604735</south><east>-29.5851853</east><west>-76.5125927</west></LatLonBox>\n"; | |
| 234 | - echo " </GroundOverlay>\n"; | |
| 255 | +function kml_servico($nome,$fonte,$legenda,$desc,$href,$urlLegenda){ | |
| 256 | + $xml = kml_folder($nome); | |
| 257 | + $xml .= "<ScreenOverlay>\n"; | |
| 258 | + $xml .= "<name>Legenda</name>\n"; | |
| 259 | + $xml .= "<visibility>0</visibility>\n"; | |
| 260 | + $xml .= "<Icon>\n"; | |
| 261 | + $xml .= "<href><![CDATA[".$urlLegenda."]]></href>\n"; | |
| 262 | + $xml .= "</Icon>\n"; | |
| 263 | + $xml .= "<overlayXY x='0.01' y='0.14' xunits='fraction' yunits='fraction'/>\n"; | |
| 264 | + $xml .= "<screenXY x='0.01' y='0.14' xunits='fraction' yunits='fraction'/>\n"; | |
| 265 | + $xml .= "<size x='-1' y='-1' xunits='pixels' yunits='pixels'/>\n"; | |
| 266 | + $xml .= "</ScreenOverlay>\n"; | |
| 267 | + $xml .= " <GroundOverlay>\n"; | |
| 268 | + $xml .= " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 269 | + $xml .= " <description><![CDATA[".$fonte.$legenda.$desc."]]></description>\n"; | |
| 270 | + $xml .= " <visibility>0</visibility>\n"; | |
| 271 | + $xml .= " <Icon>\n"; | |
| 272 | + $xml .= " <viewRefreshMode>onStop</viewRefreshMode>\n"; | |
| 273 | + $xml .= " <href>$href</href>\n"; | |
| 274 | + $xml .= " </Icon>\n"; | |
| 275 | + $xml .= " <LatLonBox><north>9.49014618085</north><south>-39.3925604735</south><east>-29.5851853</east><west>-76.5125927</west></LatLonBox>\n"; | |
| 276 | + $xml .= " </GroundOverlay>\n"; | |
| 277 | + $xml .= "</Folder>"; | |
| 278 | + return $xml; | |
| 235 | 279 | } |
| 236 | 280 | function kml_networklink($nome,$fonte,$legenda,$desc,$href){ |
| 237 | - echo " <NetworkLink>\n"; | |
| 238 | - echo " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 239 | - echo " <description><![CDATA[".$fonte.$legenda.$desc."]]></description>\n"; | |
| 240 | - echo " <visibility>0</visibility>\n"; | |
| 241 | - echo " <Link>\n"; | |
| 242 | - echo " <viewRefreshMode>never</viewRefreshMode>\n"; | |
| 243 | - echo " <href>$href</href>\n"; | |
| 244 | - echo " </Link>\n"; | |
| 245 | - echo " </NetworkLink>\n"; | |
| 281 | + $xml = " <NetworkLink>\n"; | |
| 282 | + $xml .= " <name>".str_replace("&","&",kml_converteTexto($nome))."</name>\n"; | |
| 283 | + $xml .= " <description><![CDATA[".$fonte.$legenda.$desc."]]></description>\n"; | |
| 284 | + $xml .= " <visibility>0</visibility>\n"; | |
| 285 | + $xml .= " <Link>\n"; | |
| 286 | + $xml .= " <viewRefreshMode>never</viewRefreshMode>\n"; | |
| 287 | + $xml .= " <href>$href</href>\n"; | |
| 288 | + $xml .= " </Link>\n"; | |
| 289 | + $xml .= " </NetworkLink>\n"; | |
| 290 | + return $xml; | |
| 246 | 291 | } |
| 247 | 292 | function kml_converteTexto($i){ |
| 248 | 293 | global $encoding; | ... | ... |
pacotes/kmlmapserver/classes/layerserver.class.php
| ... | ... | @@ -212,8 +212,8 @@ class LayerServer { |
| 212 | 212 | // Set endpoint |
| 213 | 213 | //die($_SERVER['REQUEST_URI']); |
| 214 | 214 | |
| 215 | - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); | |
| 216 | - $protocolo = strtolower($protocolo[0]); | |
| 215 | + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); | |
| 216 | + $protocolo = strtolower($protocolo[0]); | |
| 217 | 217 | $this->endpoint = $protocolo . '://'.$_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] ? ':'.$_SERVER['SERVER_PORT'] : '') . $_SERVER['PHP_SELF']; |
| 218 | 218 | |
| 219 | 219 | // Process request |
| ... | ... | @@ -223,9 +223,7 @@ class LayerServer { |
| 223 | 223 | if($this->has_error()){ |
| 224 | 224 | $this->add_errors(); |
| 225 | 225 | } |
| 226 | - | |
| 227 | 226 | return $this->send_stream($this->get_kml()); |
| 228 | - | |
| 229 | 227 | } |
| 230 | 228 | |
| 231 | 229 | /** | ... | ... |