You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
348 lines
8.4 KiB
348 lines
8.4 KiB
2 years ago
|
<?php
|
||
|
|
||
|
class WMTS
|
||
|
{
|
||
|
public $output;
|
||
|
|
||
|
public function get($objArr)
|
||
|
{
|
||
|
$_request = $objArr->_request;
|
||
|
|
||
|
switch ($_request)
|
||
|
{
|
||
|
case "registerService":
|
||
|
$this->output = $this->registerService($objArr);
|
||
|
|
||
|
break;
|
||
|
|
||
|
case "fetchLayers":
|
||
|
$this->output = $this->fetchLayers($objArr);
|
||
|
break;
|
||
|
|
||
|
case "registerLayer":
|
||
|
$this->output = $this->registerLayer($objArr);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function registerService($objArr)
|
||
|
{
|
||
|
require("config.php");
|
||
|
|
||
|
$p = new PROXY();
|
||
|
|
||
|
$objArr->_serviceUrl = PROXY::checkUrlScheme($objArr->_serviceUrl);
|
||
|
|
||
|
$p->_url = $this->createGetCapabilitiesUri($objArr->_serviceUrl);
|
||
|
|
||
|
$_username = $objArr->_username;
|
||
|
|
||
|
$_password = $objArr->_password;
|
||
|
|
||
|
$_isSecure = false;
|
||
|
|
||
|
if((!empty($_username)) && (!empty($_password)))
|
||
|
{
|
||
|
$_isSecure = addCredentialsToSession($objArr->_serviceUrl, $objArr->_username, $objArr->_password);
|
||
|
}else{
|
||
|
removeCredentialsFromSession($objArr->_serviceUrl);
|
||
|
}
|
||
|
|
||
|
$p->get();
|
||
|
|
||
|
$r = new RESPONSE();
|
||
|
|
||
|
$r->_responseCode = $p->o_responseCode;
|
||
|
|
||
|
if ($p->o_responseCode == 200)
|
||
|
{
|
||
|
|
||
|
$exc=$p->xmlNode("//ogc:ServiceExceptionReport/ogc:ServiceException/text()");
|
||
|
|
||
|
if (!empty($exc))
|
||
|
{
|
||
|
$r->_errorStatus = 0;
|
||
|
|
||
|
$r->_errorDescription = $p->xmlNode("//ogc:ServiceExceptionReport/ogc:ServiceException/text()");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
$version = $p->xmlNode("string(//@version)");
|
||
|
|
||
|
$sectionVersionManager = "WMTS_".$version;
|
||
|
|
||
|
$section=$_config[$sectionVersionManager];
|
||
|
|
||
|
$_serviceObject = new SERVICEOBJECT();
|
||
|
|
||
|
$_serviceObject->_serviceId = md5($objArr->_serviceUrl);
|
||
|
|
||
|
$_serviceObject->_serviceType = "WMTS";
|
||
|
|
||
|
$_serviceObject->_isSecure = $_isSecure;
|
||
|
|
||
|
$_serviceObject->_serviceName = $p->xmlNode($section["_serviceName"]);
|
||
|
|
||
|
$_serviceObject->_serviceAbstract = $p->xmlNode($section["_serviceAbstract"]);
|
||
|
|
||
|
$_serviceObject->_serviceTitle = $p->xmlNode($section["_serviceTitle"]);
|
||
|
|
||
|
$_serviceObject->_serviceUrl = $objArr->_serviceUrl;
|
||
|
|
||
|
$_serviceObject->_username = $p->_username;
|
||
|
|
||
|
$_serviceObject->_password = $p->_password;
|
||
|
|
||
|
$_serviceObject->_version = $p->xmlNode("string(//@version)");
|
||
|
|
||
|
$_serviceObject->_isVector = false;
|
||
|
|
||
|
$_serviceObject->_isService = true;
|
||
|
|
||
|
$r->_response=$_serviceObject;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$r->_errorDescription = $p->o_response;
|
||
|
}
|
||
|
|
||
|
return $r;
|
||
|
|
||
|
}
|
||
|
|
||
|
public function fetchLayers($objArr)
|
||
|
{
|
||
|
require("config.php");
|
||
|
|
||
|
$p = new PROXY();
|
||
|
|
||
|
$p->_url = $this->createGetCapabilitiesUri($objArr->_serviceUrl);
|
||
|
|
||
|
$p->_username = $objArr->_username;
|
||
|
|
||
|
$p->_password = $objArr->_password;
|
||
|
|
||
|
$p->get();
|
||
|
|
||
|
$r = new RESPONSE();
|
||
|
|
||
|
$r->_responseCode = $p->o_responseCode;
|
||
|
|
||
|
if ($p->o_responseCode == 200)
|
||
|
{
|
||
|
$exc=$p->xmlNode("//ogc:ServiceExceptionReport/ogc:ServiceException/text()");
|
||
|
|
||
|
if (!empty($exc))
|
||
|
{
|
||
|
$r->_errorStatus = 0;
|
||
|
|
||
|
$r->_errorDescription = $p->xmlNode("//ogc:ServiceExceptionReport/ogc:ServiceException/text()");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
$version = $p->xmlNode("string(//@version)");
|
||
|
|
||
|
$sectionVersionManager = "WMTS_".$version;
|
||
|
|
||
|
$section=$_config[$sectionVersionManager];
|
||
|
|
||
|
$countLayer = $p->xmlNode($section["_layer"]);
|
||
|
|
||
|
$r_layers = Array();
|
||
|
|
||
|
for ($i =1;$i<=$countLayer;$i++)
|
||
|
{
|
||
|
$layerId = md5($p->xmlNode(str_replace("[]","[".$i."]",$section["_layerName"])));
|
||
|
|
||
|
$serviceId=md5($objArr->_serviceUrl);
|
||
|
|
||
|
$supportedEPSG = array();
|
||
|
|
||
|
$layerName = $p->xmlNode(str_replace("[]","[".$i."]",$section["_layerName"]));
|
||
|
|
||
|
$wmtsMatrixSetLinks = $p->xmlNode(str_replace("{_layerName}",$layerName,$section["_matrixSetLinks"]));
|
||
|
|
||
|
for ($a = 1; $a<=$wmtsMatrixSetLinks;$a++)
|
||
|
{
|
||
|
$wmtsMatrixSet = str_replace("{_layerName}",$layerName,$section["_matrixSetLink"]);
|
||
|
|
||
|
$wmtsMatrixSet = $p->xmlNode(str_replace("[]","[".$a."]",$wmtsMatrixSet));
|
||
|
|
||
|
$epsg = $p->xmlNode(str_replace("{_tileMatrixSet}",$wmtsMatrixSet,$section["_supportedEPSG"]));
|
||
|
|
||
|
$supportedEPSG[]=$epsg;
|
||
|
}
|
||
|
|
||
|
$_layerObject=new LAYEROBJECT();
|
||
|
|
||
|
$_layerObject->_serviceId = $serviceId;
|
||
|
|
||
|
$_layerObject->_layerId = $serviceId.$layerId;
|
||
|
|
||
|
$_layerObject->_layerName = $layerName;
|
||
|
|
||
|
$_layerObject->_supportedEPSG=$supportedEPSG;
|
||
|
|
||
|
$_layerObject->_layerTitle = $p->xmlNode(str_replace("[]","[".$i."]",$section["_layerTitle"]));
|
||
|
|
||
|
$_layerObject->_layerAbstract = $p->xmlNode(str_replace("[]","[".$i."]",$section["_layerAbstract"]));
|
||
|
|
||
|
$_layerObject->_layerLegend = $section["_layerLegend"];
|
||
|
|
||
|
$_layerObject->_bboxMinX = $p->xmlNode(str_replace("[]","[".$i."]",$section["_bboxMinX"]));
|
||
|
|
||
|
$_layerObject->_bboxMaxX = $p->xmlNode(str_replace("[]","[".$i."]",$section["_bboxMaxX"]));
|
||
|
|
||
|
$_layerObject->_bboxMinY = $p->xmlNode(str_replace("[]","[".$i."]",$section["_bboxMinY"]));
|
||
|
|
||
|
$_layerObject->_bboxMaxY = $p->xmlNode(str_replace("[]","[".$i."]",$section["_bboxMaxY"]));
|
||
|
|
||
|
$_layerObject->_isQueryable = false;
|
||
|
|
||
|
$_layerObject->_isSLDEditable=false;
|
||
|
|
||
|
$_layerObject->_isSearchable=false;
|
||
|
|
||
|
$_layerObject->_isVector = false;
|
||
|
|
||
|
$_layerObject->_isPrintable = true;
|
||
|
|
||
|
$r_layers[]=$_layerObject;
|
||
|
}
|
||
|
|
||
|
$_serviceObject = new SERVICEOBJECT();
|
||
|
|
||
|
$_serviceObject->_serviceId = md5($objArr->_serviceUrl);
|
||
|
|
||
|
$_serviceObject->_serviceType = "WMTS";
|
||
|
|
||
|
$_serviceObject->_serviceName = $p->xmlNode($section["_serviceName"]);
|
||
|
|
||
|
$_serviceObject->_serviceAbstract = $p->xmlNode($section["_serviceAbstract"]);
|
||
|
|
||
|
$_serviceObject->_serviceTitle = $p->xmlNode($section["_serviceTitle"]);
|
||
|
|
||
|
$_serviceObject->_serviceUrl = $objArr->_serviceUrl;
|
||
|
|
||
|
$_serviceObject->_version = $p->xmlNode("string(//@version)");
|
||
|
|
||
|
$_serviceObject->_layers = $r_layers;
|
||
|
|
||
|
$r->_response=$_serviceObject;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$r->_errorDescription = $p->o_response;
|
||
|
}
|
||
|
|
||
|
return $r;
|
||
|
|
||
|
}
|
||
|
|
||
|
public function registerLayer($objArr)
|
||
|
{
|
||
|
require("config.php");
|
||
|
|
||
|
$p = new PROXY();
|
||
|
|
||
|
$p->_url = $this->createGetCapabilitiesUri($objArr->_serviceUrl);
|
||
|
|
||
|
$p->_username = $objArr->_username;
|
||
|
|
||
|
$p->_password = $objArr->_password;
|
||
|
|
||
|
$p->get();
|
||
|
|
||
|
$r = new RESPONSE();
|
||
|
|
||
|
$r->_responseCode = $p->o_responseCode;
|
||
|
|
||
|
if ($p->o_responseCode == 200)
|
||
|
{
|
||
|
$exc=$p->xmlNode("//ogc:ServiceExceptionReport/ogc:ServiceException/text()");
|
||
|
|
||
|
if (!empty($exc))
|
||
|
{
|
||
|
$r->_errorStatus = 0;
|
||
|
|
||
|
$r->_errorDescription = $p->xmlNode("//ogc:ServiceExceptionReport/ogc:ServiceException/text()");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$version = $p->xmlNode("string(//@version)");
|
||
|
|
||
|
$sectionVersionManager = "WMTS_".$version;
|
||
|
|
||
|
$section=$_config[$sectionVersionManager];
|
||
|
|
||
|
$wmtsMatrixSetLinks = $p->xmlNode(str_replace("{_layerName}",$objArr->_layerName,$section["_matrixSetLinks"]));
|
||
|
|
||
|
$wmtsDetails=array();
|
||
|
|
||
|
for ($a=1;$a<=$wmtsMatrixSetLinks;$a++)
|
||
|
{
|
||
|
|
||
|
$wmtsMatrixSet = str_replace("{_layerName}",$objArr->_layerName,$section["_matrixSetLink"]);
|
||
|
|
||
|
$wmtsMatrixSet = $p->xmlNode(str_replace("[]","[".$a."]",$wmtsMatrixSet));
|
||
|
|
||
|
$epsg = $p->xmlNode(str_replace("{_tileMatrixSet}",$wmtsMatrixSet,$section["_supportedEPSG"]));
|
||
|
|
||
|
$matrixIds = str_replace("{_layerName}",$objArr->_layerName,$section["_matrixIds"]);
|
||
|
|
||
|
$matrixIdsCount = $p->xmlNode(str_replace("[]","[".$a."]",$matrixIds));
|
||
|
|
||
|
$matrixIdList = array();
|
||
|
|
||
|
$martixId = str_replace("{_layerName}",$objArr->_layerName,$section["_matrixId"]);
|
||
|
|
||
|
$martixId = str_replace("[]","[".$a."]",$martixId);
|
||
|
|
||
|
for ($b=1;$b<=$matrixIdsCount;$b++)
|
||
|
{
|
||
|
$matrixIdList[]=$p->xmlNode(str_replace("[{}]","[".$b."]",$martixId));
|
||
|
}
|
||
|
|
||
|
$_WMTSLayerDetails=new WMTSLAYERDETAILS();
|
||
|
|
||
|
$_WMTSLayerDetails->_matrixEPSG = $epsg;
|
||
|
|
||
|
$_WMTSLayerDetails->_matrixSet = $wmtsMatrixSet;
|
||
|
|
||
|
$_WMTSLayerDetails->_matrixIds = $matrixIdList;
|
||
|
|
||
|
$_WMTSLayerDetails->_topLeftCornerX = $p->xmlNode(str_replace("{_tileMatrixSet}",$wmtsMatrixSet,$section["_topLeftCornerX"]));
|
||
|
|
||
|
$_WMTSLayerDetails->_topLeftCornerY = $p->xmlNode(str_replace("{_tileMatrixSet}",$wmtsMatrixSet,$section["_topLeftCornerY"]));
|
||
|
|
||
|
$wmtsDetails[] = $_WMTSLayerDetails;
|
||
|
}
|
||
|
|
||
|
$r->_response=$wmtsDetails;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$r->_errorDescription = $p->o_response;
|
||
|
}
|
||
|
|
||
|
return $r;
|
||
|
}
|
||
|
|
||
|
|
||
|
public function createGetCapabilitiesUri($_url)
|
||
|
{
|
||
|
$_query["REQUEST"]="GETCAPABILITIES";
|
||
|
|
||
|
$_query["SERVICE"]="WMTS";
|
||
|
|
||
|
return PROXY::createUriQuery($_url, $_query);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|