$aLayer) { if( isset($aLayer['serviceId']) && $aLayer['serviceId'] == $nServiceId) { $aszSessionLayer =& $_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']['layers']['LAYER'][$key]; $szSessionKey = $key; if( isset($aLayer['cached']) && $aLayer['cached'] ) { $bCachedLayer = true; } } } } if( !$bCachedLayer ) { $szGetServiceIdURL = "http://ceomap2.ccrs.nrcan.gc.ca/cgi-bin/cslt/wes/service_manager/catquery?RS=XML&ESN=f&DOCID=$nServiceId&DOIT=Get+Service"; $fh = fopen($szGetServiceIdURL, "r"); $szXMLDoc = ""; while ($szString = fread($fh, 1024)) { $szXMLDoc .= $szString; } if ($szXMLDoc != "") { $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $szXMLDoc, $aVals, $index); xml_parser_free($parser); $oXMLDoc = xml_get_children($aVals); } if (!isset($oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords']) || $oXMLDoc->searchResponse->value->searchStatus->attributes['success'] == false || $oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords'] <= 0) { ?> searchResponse->value->searchResults->value->ISO19119->value; // Get the connection string // if DCP is a array, take the first one if (is_array($oRes->operationMetadata->value->DCP)) $szLayerConnectString = $oRes->operationMetadata->value->DCP[0]->value->connectPoint->value->linkage->attributes['xlink:href']; else $szLayerConnectString = $oRes->operationMetadata->value->DCP->value->connectPoint->value->linkage->attributes['xlink:href']; // Get layer title $szLayerTitle = $oRes->citation->value->title->value; // Get layer name $szLayerName = $oRes->citation->value->alternateTitle->value; // Get server version $szServerVersion = $oRes->serviceTypeVersion->value; // Get Abstract $szLayerAbstract = $oRes->abstract->value; // Get bounding box $szBBox = str_replace(",", " ", substr(substr($oRes->typeProperty->value->typeValue->value->instanceValue->value->value->value, 1), 0, -1)); // Get styles, formats and SRSs // ( $szLayerSRSs, $szLayerStyles and $szLayerFormats ) // Get parameter count $nbParam = count($oRes->operationMetadata->value->parameter); for($j=0;$j<$nbParam;$j++) { // Get parameter object $oParam =& $oRes->operationMetadata->value->parameter[$j]; // If parameter is a STYLE if ($oParam->value->parameterName->value->nameValue->value == "STYLES") { $szLayerStyles = ""; // Is there more than one style ? if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle)) { // Yes, then get style objects count $nbStyle = count($oParam->value->permittedValues->value->enumValues->value->valueTitle); for($k=0;$k<$nbStyle;$k++) { // Get style title $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value; // Get style online resource $szOnlineRes = $oParam->value->permittedValues->value->enumValues->value->valueOnLineResource[$k]->value->linkage->attributes['xlink:href']; // add them to layer info string. $szLayerStyles .= $szTitle.">,< ".$szOnlineRes.">;<"; } } else { // Get style title $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value; // Get style online resource $szOnlineRes = $oParam->value->permittedValues->value->enumValues->value->valueOnLineResource->value->linkage->attributes['xlink:href']; // add them to layer info string. $szLayerStyles .= $szTitle.">,< ".$szOnlineRes.">;<"; } $szLayerStyles = substr($szLayerStyles, 0, -3); } else if ($oParam->value->parameterName->value->nameValue->value == "FORMAT") { $szLayerFormat = ""; // Is there more than one format ? if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle)) { // Yes, then get format objects count $nbFormat = count($oParam->value->permittedValues->value->enumValues->value->valueTitle); for($k=0;$k<$nbFormat;$k++) { // Get format title $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value; // Get format value $szValue = $oParam->value->permittedValues->value->enumValues->value->value[$k]->value; // add them to layer info string. $szLayerFormats .= $szValue.","; } } else { // Get format title $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value; // Get format value $szValue = $oParam->value->permittedValues->value->enumValues->value->value->value; // add them to layer info string. $szLayerFormats .= $szValue.","; } $szLayerFormats = substr($szLayerFormats, 0, -1); } else if ($oParam->value->parameterName->value->nameValue->value == "SRS") { $szLayerSRSs = ""; // Is there more than one srs if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle)) { // Yes, then get srs objects count $nbSRS = count($oParam->value->permittedValues->value->enumValues->value->valueTitle); for($k=0;$k<$nbSRS;$k++) { // Get SRS title $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value; // add them to layer info string. $szLayerSRSs .= $szTitle." "; } } else { // Get SRS title $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value; // add them to layer info string. $szLayerSRSs .= $szTitle." "; } $szLayerSRSs = substr($szLayerSRSs, 0, -1); } } // Then put all this in the session to cache the information. if( count($aszSessionLayer) > 0 ) { $aszSessionLayer["cached"] = true; $aszSessionLayer["name"] = $szLayerName; $aszSessionLayer["title"] = $szLayerTitle; $aszSessionLayer["abstract"] = $szLayerAbstract; $aszSessionLayer["server_version"] = $szServerVersion; $aszSessionLayer["connection_string"] = $szLayerConnectString; $aszSessionLayer["bbox"] = $szBBox; $aszSessionLayer["cached_styles"] = $szLayerStyles; $aszSessionLayer["cached_formats"] = $szLayerFormats; $aszSessionLayer["cached_srs"] = $szLayerSRSs; } } else { // Retreive cached information $szLayerName = $aszSessionLayer["name"]; $szLayerTitle = $aszSessionLayer["title"]; $szLayerAbstract = $aszSessionLayer["abstract"]; $szServerVersion = $aszSessionLayer["server_version"]; $szLayerConnectString = $aszSessionLayer["connection_string"]; $szBBox = $aszSessionLayer["bbox"]; $szLayerStyles = $aszSessionLayer["cached_styles"]; $szLayerFormats = $aszSessionLayer["cached_formats"]; $szLayerSRSs = $aszSessionLayer["cached_srs"]; } //Build URL to get preview. $szURL = ""; $szURL = $szLayerConnectString; // build the WMS connection string if (strpos($szURL, '?') === false) { //need to add ? $szURL = $szURL . "?"; } else if (substring($szURL, -1) != "&" ) { //need to add & $szURL .= "&"; } $szURL .= "service=WMS&"; $szURL .= "version=" . $szServerVersion . "&"; $szURL .= "request=GetMap&"; if (isset($_GET['SRS'])) $szURL .= "SRS=".$_GET['SRS']."&"; else $szURL .= "SRS=EPSG:4326&"; if (isset($_GET['BBOX'])) { $szURL .= "BBOX=".$_GET['BBOX']."&"; } else { $aszTmpBBox = explode(" ", $szBBox); // BBox is minx, maxx, maxy, miny $szTmpBBox = implode(",", array($aszTmpBBox[0], $aszTmpBBox[3], $aszTmpBBox[1], $aszTmpBBox[2])); $szURL .= "BBOX=". $szTmpBBox ."&"; } $szURL .= "width=220&"; $szURL .= "height=220&"; $szURL .= "layers=" . $szLayerName . "&"; $szURL .= "format=" . $szFormat . "&"; // From the server $szURL .= "exceptions=application/vnd.ogc.se_inimage"; ?>