",">
",$str); return $str; } function wms_descricao ( $dom,$xp ) { $xpath = new DOMXPath($dom); $query = $xp; $entries = $xpath->query($query); $n = ""; foreach ($entries as $entry) { $n = $entry->nodeValue; } return $n; } function wms_descricaov ( $dom,$xp,$attrib ) { $xpath = new DOMXPath($dom); $query = $xp; $entries = $xpath->query($query); $n = ""; foreach ($entries as $entry) { $n = $entry->getAttribute($attrib); } return $n; } function wms_descricaon ( $dom,$xp,$n ) { $ctx = xpath_new_context($dom); $xpnode = xpath_eval($ctx,$xp); $dtnode = $xpnode->nodeset[$n]->first_child(); return $dtnode->content; } function wms_title ( $dom ) { # # Read the WMS service title and return it as text. # $xpath = new DOMXPath($dom); $query = '//WMT_MS_Capabilities/Service/Title'; $entries = $xpath->query($query); foreach ($entries as $entry){$nomeserv = $entry->nodeValue;} return $nomeserv; } function wms_onlineresource ( $dom ) { # # Read the WMS online resource URL and return it as text. # $xp = "/WMT_MS_Capabilities/Service/OnlineResource"; $ctx = xpath_new_context($dom); $xpnode = xpath_eval($ctx,$xp); return $xpnode->nodeset[0]->get_attribute("href"); } function wms_formats ( $dom ) { $xpath = new DOMXPath($dom); $query = '//WMT_MS_Capabilities/Capability/Request/GetMap/Format'; $entries = $xpath->query($query); $arr = array(); foreach ($entries as $entry) { $arr[] = $entry->nodeValue; } return $arr; } function wms_estilos ( $dom ) { # # Read the WMS image formats and return them as an array. # //$xp = "/Style"; //$ctx = xpath_new_context($dom); //$xpnode = xpath_eval($ctx,$xp); //return $xpnode->nodeset; $return = $dom->getElementsByTagName("Style"); } function wms_exceptions ( $dom ) { # # Read the WMS exception formats and return them as an array. # $xp = "/WMT_MS_Capabilities/Capability/Exception/Format"; $ctx = xpath_new_context($dom); $xpnode = xpath_eval($ctx,$xp); $arr = array(); for( $i = 0; $i < sizeof($xpnode->nodeset); ++$i ) { $dtnode = $xpnode->nodeset[0]->first_child(); array_push($arr,$dtnode->content); } return $arr; } function wms_layers ( $dom ) { # # Read the WMS first level layers and return an # array of nodes. # $xpath = new DOMXPath($dom); $query = '//WMT_MS_Capabilities/Capability/Layer'; $entries = $xpath->query($query); return $entries; } function wms_xpnode2content( $xp_node ) { # # Read the content child node of an element tag # node. # $content = ""; if( $xp_node->nodeset[0] ) { $node = $xp_node->nodeset[0]->first_child(); $content = $node->content; } return $content; } function wms_srs( $dom ) { $xpath = new DOMXPath($dom); $query = '//WMT_MS_Capabilities/Capability/Layer/SRS'; $entries = $xpath->query($query); $srs = ""; foreach ($entries as $entry) { $s = $entry->nodeValue; if ($s == "EPSG:4326") {$srs = "EPSG:4326";} } if ($srs == "") {$srs = $s;} return strtoupper($srs); } function wms_bbox( $dom ) { $xpath = new DOMXPath($dom); $query = '//WMT_MS_Capabilities/Capability/Layer/LatLonBoundingBox'; $entries = $xpath->query($query); foreach ($entries as $entry){$bbox = $entry->nodeValue;} if ($bbox == '-1,-1,-1,-1') {return '-180,-90,180,90';} else {return wms_bbox2txt($bbox);} } function wms_bbox2txt( $node ) { # # Convert a BoundingBox node into a text string. # if( $node ) { $txt .= 1 * $node->get_attribute("minx"); $txt .= ","; $txt .= 1 * $node->get_attribute("miny"); $txt .= ","; $txt .= 1 * $node->get_attribute("maxx"); $txt .= ","; $txt .= 1 * $node->get_attribute("maxy"); } else { $txt = "-180,-90,180,90"; } return $txt; } function wms_layer2html( $node, $tipo , $layer ) { # # Convert a Layer node into an HTML representation. # $ctx = xpath_new_context($node); $xp_title = xpath_eval($ctx,"/Title"); $xp_name = xpath_eval($ctx,"/Name"); if (wms_xpnode2content($xp_name) == ""){$xp_name = xpath_eval($ctx,"/name");} $xp_srs = xpath_eval($ctx,"/SRS"); $xp_llbbox = xpath_eval($ctx,"/LatLonBoundingBox"); $xp_bbox = xpath_eval($ctx,"/BoundingBox"); $txt_title = wms_xpnode2content($xp_title); $txt_name = wms_xpnode2content($xp_name); $txt_srs = strtoupper(wms_xpnode2content($xp_srs)); $node_llbbox = $xp_llbbox->nodeset[0]; $node_bbox = $xp_bbox->nodeset[0]; $queryable = 0; if ( $node->get_attribute("queryable") ) { $queryable = 1; } $opaque = 0; if ( $node->get_attribute("opaque") ) { $opaque = 1; } //legenda $xp_legenda = xpath_eval($ctx,"/LegendURL/OnlineResource"); $nodelegenda = $xp_legenda->nodeset[0]; if($nodelegenda) { $legenda = $nodelegenda->get_attribute("href");} $html = ""; $html .= "  "; $html .= $txt_title . "\n"; $html .= wms_hidden("bbox_$txt_name", wms_bbox2txt($node_bbox)); $html .= wms_hidden("llbox_$txt_name", wms_bbox2txt($node_llbbox)); $html .= wms_hidden("srs_$txt_name", $txt_srs); $html .= wms_hidden("query_$txt_name", $queryable ); $html .= wms_hidden("opaque_$txt_name", $opaque ); $html .= "
"; return $html; } function wms_layer3html( $node ) { # # Convert a Layer node into an HTML representation sem radio. # $ctx = xpath_new_context($node); $xp_title = xpath_eval($ctx,"/Title"); $xp_abs = xpath_eval($ctx,"/Abstract"); $txt_title = wms_xpnode2content($xp_title); $txt_abs = wms_xpnode2content($xp_abs); $html .= "".$txt_title . "" . "-" . $txt_abs . "\n"; $html .= "
"; return $html; } function wms_layer4html( $layer ) { $estilos = wms_estilos($layer); if (count($estilos) > 0) { $ctxl = xpath_new_context($layer); $xp_namel = xpath_eval($ctxl,"/Name"); if (wms_xpnode2content($xp_namel) == ""){$xp_namel = xpath_eval($ctxl,"/name");} $txt_namel = wms_xpnode2content($xp_namel); $html .= wms_layer3html($layer); foreach ($estilos as $estilo) { $html .= wms_layer2html($estilo,"estilo",$txt_namel); } } else { $html .= wms_layer2html($layer,"tema",""); } return $html; } function wms_fatal ( $err ) { print "

$err

"; exit; } function wms_hidden ( $name, $value ) { return "\n"; } function wms_pan ( $bbox, $size, $click ) { # # Calculate a new extent based on an image size and image # click coordinates. Move extent linearly so that the # click becomes the new spatial center. # $sw = $bbox[2] - $bbox[0]; $sh = $bbox[3] - $bbox[1]; $iw = $size[0]; $ih = $size[1]; $x = $click[0]; $y = $ih - $click[1] - 1; $mx = $iw / 2; $my = $ih / 2; $bbox[0] = $bbox[0] - $sw * ($mx - $x) / $iw; $bbox[1] = $bbox[1] - $sh * ($my - $y) / $ih; $bbox[2] = $bbox[2] - $sw * ($mx - $x) / $iw; $bbox[3] = $bbox[3] - $sh * ($my - $y) / $ih; return $bbox; } function wms_zoom ( $bbox, $factor ) { # # Create a new resized extent based on a spatial extent and # zoom factor. # $sw = $bbox[2] - $bbox[0]; $sh = $bbox[3] - $bbox[1]; $mx = ($bbox[2] + $bbox[0]) / 2; $my = ($bbox[3] + $bbox[1]) / 2; $bbox[0] = $mx - $factor * $sw / 2; $bbox[1] = $my - $factor * $sh / 2; $bbox[2] = $mx + $factor * $sw / 2; $bbox[3] = $my + $factor * $sh / 2; return $bbox; } function wms_scale ( $bbox, $size ) { # # Resize a spatial extent to have the same aspect ratio # as an image size. # # Spatial width is always preserved and spatial height is # altered to match the new aspect ratio. There are other # heuristics for this transformation which might be # more aesthetically pleasing. # $sw = $bbox[2] - $bbox[0]; $sh = $bbox[3] - $bbox[1]; $iw = $size[0]; $ih = $size[1]; $sh = $sw * $ih / $iw; $bbox[1] = (($bbox[3] + $bbox[1]) / 2) - ($sh / 2); $bbox[3] = (($bbox[3] + $bbox[1]) / 2) + ($sh / 2); return $bbox; } ?>