Overview

Namespaces

  • Mapbender
    • Component
      • HTTP
    • CoreBundle
      • Command
      • Component
        • Exception
      • Controller
      • DataFixtures
        • ORM
      • DependencyInjection
      • Element
        • Type
      • Entity
      • EventListener
      • Extension
      • Form
        • DataTransformer
        • EventListener
        • Type
      • Security
      • Template
    • KmlBundle
      • Element
    • ManagerBundle
      • Controller
      • Form
        • DataTransformer
        • Type
    • MonitoringBundle
      • Command
      • Component
      • Controller
      • DependencyInjection
      • Entity
      • EventListener
      • Form
    • PrintBundle
      • Component
      • Controller
    • WmcBundle
      • Component
        • Exception
      • Element
        • Type
      • Entity
      • Form
        • Type
    • WmsBundle
      • Component
        • Exception
      • Controller
      • DependencyInjection
      • Element
        • Type
      • Entity
      • Event
      • Form
        • EventListener
        • Type
    • WmtsBundle
      • Component
        • Exception
      • Controller
      • Entity
      • Form
        • Type
  • None
  • PHP

Classes

  • Attribution
  • Authority
  • Dimension
  • Extent
  • Identifier
  • IdentifierAuthority
  • LegendUrl
  • MetadataUrl
  • MinMax
  • OnlineResource
  • RequestInformation
  • Size
  • Style
  • WmsCapabilitiesParser
  • WmsCapabilitiesParser111
  • WmsCapabilitiesParser130
  • WmsInstanceConfiguration
  • WmsInstanceConfigurationOptions
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
  1: <?php
  2: 
  3: namespace Mapbender\WmsBundle\Component;
  4: 
  5: use Mapbender\WmsBundle\Entity\WmsSource;
  6: use Mapbender\CoreBundle\Component\BoundingBox;
  7: use Mapbender\CoreBundle\Entity\Contact;
  8: use Mapbender\CoreBundle\Entity\Keyword;
  9: use Mapbender\WmsBundle\Entity\WmsLayerSource;
 10: use Mapbender\WmsBundle\Component\RequestInformation;
 11: 
 12: /**
 13:  * Class that Parses WMS 1.3.0 GetCapabilies Document 
 14:  * @package Mapbender
 15:  * @author Paul Schmidt
 16:  */
 17: class WmsCapabilitiesParser111 extends WmsCapabilitiesParser
 18: {
 19: 
 20:     /**
 21:      * Creates an instance
 22:      * @param \DOMDocument $doc
 23:      */
 24:     public function __construct(\DOMDocument $doc)
 25:     {
 26:         parent::__construct($doc);
 27:     }
 28: 
 29:     /**
 30:      * Parses the GetCapabilities document
 31:      * 
 32:      * @return \Mapbender\WmsBundle\Entity\WmsSource
 33:      */
 34:     public function parse()
 35:     {
 36:         $wms = new WmsSource();
 37:         $root = $this->doc->documentElement;
 38: 
 39:         $wms->setVersion($this->getValue("./@version", $root));
 40:         $this->parseService($wms, $this->getValue("./Service", $root));
 41:         $capabilities = $this->xpath->query("./Capability/*", $root);
 42:         foreach($capabilities as $capabilityEl)
 43:         {
 44:             if($capabilityEl->localName === "Request")
 45:             {
 46:                 $this->parseCapabilityRequest($wms, $capabilityEl);
 47:             } else if($capabilityEl->localName === "Exception")
 48:             {
 49:                 $this->parseCapabilityException($wms, $capabilityEl);
 50:             } else if($capabilityEl->localName === "Layer")
 51:             {
 52:                 $rootlayer = new WmsLayerSource();
 53:                 $wms->addLayer($rootlayer);
 54:                 $layer = $this->parseLayer($wms, $rootlayer, $capabilityEl);
 55:             }
 56:             /* parse _ExtendedOperation  */ else if($capabilityEl->localName === "UserDefinedSymbolization")
 57:             {
 58:                 $this->parseUserDefinedSymbolization($wms, $capabilityEl);
 59:             }
 60:             /* @TODO add other _ExtendedOperation ?? */
 61:         }
 62:         return $wms;
 63:     }
 64: 
 65:     /**
 66:      * Parses the Service section of the GetCapabilities document
 67:      * 
 68:      * @param \Mapbender\WmsBundle\Entity\WmsSource $wms the WmsSource
 69:      * @param \DOMElement $contextElm the element to use as context for
 70:      * the Service section
 71:      */
 72:     private function parseService(WmsSource $wms, \DOMElement $contextElm)
 73:     {
 74:         $wms->setName($this->getValue("./Name/text()", $contextElm));
 75:         $wms->setTitle($this->getValue("./Title/text()", $contextElm));
 76:         $wms->setDescription($this->getValue("./Abstract/text()", $contextElm));
 77: 
 78:         $keywordElList = $this->xpath->query("./KeywordList/Keyword",
 79:                                              $contextElm);
 80:         foreach($keywordElList as $keywordEl)
 81:         {
 82:             $keyword = new Keyword();
 83:             $keyword->setValue(trim($this->getValue("./text()", $keywordEl)));
 84:             $keyword->setSourceclass($wms->getClassname());
 85:             $keyword->setSourceid($wms);
 86:             //FIXME: breaks sqlite
 87:             //$wms->addKeyword($keyword);
 88:         }
 89: 
 90:         $wms->setOnlineResource($this->getValue("./OnlineResource/@xlink:href",
 91:                                                 $contextElm));
 92: 
 93:         $wms->setFees($this->getValue("./Fees/text()", $contextElm));
 94:         $wms->setAccessConstraints($this->getValue("./AccessConstraints/text()",
 95:                                                    $contextElm));
 96: 
 97:         $contact = new Contact();
 98:         $contact->setPerson($this->getValue("./ContactInformation/ContactPersonPrimary/ContactPerson/text()",
 99:                                             $contextElm));
100:         $contact->setOrganization($this->getValue("./ContactInformation/ContactPersonPrimary/ContactOrganization/text()",
101:                                                   $contextElm));
102:         $contact->setPosition($this->getValue("./ContactInformation/ContactPosition/text()",
103:                                               $contextElm));
104: 
105:         $contact->setAddressType($this->getValue("./ContactInformation/ContactAddress/AddressType/text()",
106:                                                  $contextElm));
107:         $contact->setAddress($this->getValue("./ContactInformation/ContactAddress/Address/text()",
108:                                              $contextElm));
109:         $contact->setAddressCity($this->getValue("./ContactInformation/ContactAddress/City/text()",
110:                                                  $contextElm));
111:         $contact->setAddressStateOrProvince($this->getValue("./ContactInformation/ContactAddress/StateOrProvince/text()",
112:                                                             $contextElm));
113:         $contact->setAddressPostCode($this->getValue("./ContactInformation/ContactAddress/PostCode/text()",
114:                                                      $contextElm));
115:         $contact->setAddressCountry($this->getValue("./ContactInformation/ContactAddress/Country/text()",
116:                                                     $contextElm));
117: 
118:         $contact->setVoiceTelephone($this->getValue("./ContactInformation/ContactVoiceTelephone/text()",
119:                                                     $contextElm));
120:         $contact->setFacsimileTelephone($this->getValue("./ContactInformation/ContactFacsimileTelephone/text()",
121:                                                         $contextElm));
122:         $contact->setElectronicMailAddress($this->getValue("./ContactInformation/ContactElectronicMailAddress/text()",
123:                                                            $contextElm));
124: 
125:         $wms->setContact($contact);
126:     }
127: 
128:     /**
129:      * Parses the Capabilities Request section of the GetCapabilities document
130:      * 
131:      * @param \Mapbender\WmsBundle\Entity\WmsSource $wms the WmsSource
132:      * @param \DOMElement $contextElm the element to use as context for the
133:      * Capabilities Request section
134:      */
135:     private function parseCapabilityRequest(WmsSource $wms,
136:             \DOMElement $contextElm)
137:     {
138:         $operations = $this->xpath->query("./*", $contextElm);
139:         foreach($operations as $operation)
140:         {
141:             if($operation->localName === "GetCapabilities")
142:             {
143:                 $getCapabilities = $this->parseOperationRequestInformation($operation);
144:                 $wms->setGetCapabilities($getCapabilities);
145:             } else if($operation->localName === "GetMap")
146:             {
147:                 $getMap = $this->parseOperationRequestInformation($operation);
148:                 $wms->setGetMap($getMap);
149:             } else if($operation->localName === "GetFeatureInfo")
150:             {
151:                 $getFeatureInfo = $this->parseOperationRequestInformation($operation);
152:                 $wms->setGetFeatureInfo($getFeatureInfo);
153:             } else if($operation->localName === "GetLegendGraphic")/* parse _ExtendedOperation */
154:             {
155:                 $getLegendGraphic = $this->parseOperationRequestInformation($operation);
156:                 $wms->setGetLegendGraphic($getLegendGraphic);
157:             } else if($operation->localName === "DescribeLayer")
158:             {
159:                 $describeLayer = $this->parseOperationRequestInformation($operation);
160:                 $wms->setDescribeLayer($describeLayer);
161:             } else if($operation->localName === "GetStyles")
162:             {
163:                 $getStyles = $this->parseOperationRequestInformation($operation);
164:                 $wms->setGetStyles($getStyles);
165:             } else if($operation->localName === "PutStyles")
166:             {
167:                 $putStyles = $this->parseOperationRequestInformation($operation);
168:                 $wms->setPutStyles($putStyles);
169:             }
170:         }
171:     }
172: 
173:     /**
174:      * Parses the Operation Request Information section of the GetCapabilities
175:      * document
176:      * 
177:      * @param \DOMElement $contextElm the element to use as context for the
178:      * Operation Request Information section
179:      */
180:     private function parseOperationRequestInformation(\DOMElement $contextElm)
181:     {
182:         $requestImformation = new RequestInformation();
183:         $tempList = $this->xpath->query("./Format", $contextElm);
184:         if($tempList !== null)
185:         {
186:             foreach($tempList as $item)
187:             {
188:                 $requestImformation->addFormat($this->getValue("./text()", $item));
189:             }
190:         }
191:         $requestImformation->setHttpGet($this->getValue(
192:                         "./DCPType/HTTP/Get/OnlineResource/@xlink:href",
193:                         $contextElm));
194:         $requestImformation->setHttpPost($this->getValue(
195:                         "./DCPType/HTTP/Post/OnlineResource/@xlink:href",
196:                         $contextElm));
197: 
198:         return $requestImformation;
199:     }
200: 
201:     /**
202:      * Parses the Capability Exception section of the GetCapabilities
203:      * document
204:      * 
205:      * @param \Mapbender\WmsBundle\Entity\WmsSource $wms the WmsSource
206:      * @param \DOMElement $contextElm the element to use as context for the
207:      * Capability Exception section
208:      */
209:     private function parseCapabilityException(WmsSource $wms,
210:             \DOMElement $contextElm)
211:     {
212:         $tempList = $this->xpath->query("./Format", $contextElm);
213:         if($tempList !== null)
214:         {
215:             foreach($tempList as $item)
216:             {
217:                 $wms->addExceptionFormat($this->getValue("./text()", $item));
218:             }
219:         }
220:     }
221: 
222:     /**
223:      * Parses the UserDefinedSymbolization section of the GetCapabilities
224:      * document
225:      * 
226:      * @param \Mapbender\WmsBundle\Entity\WmsSource $wms the WmsSource
227:      * @param \DOMElement $contextElm the element to use as context for the
228:      * UserDefinedSymbolization section
229:      */
230:     private function parseUserDefinedSymbolization(WmsSource $wms,
231:             \DOMElement $contextElm)
232:     {
233:         if($contextElm !== null)
234:         {
235:             $wms->setSupportSld($this->getValue("./@SupportSLD", $contextElm));
236:             $wms->setUserLayer($this->getValue("./@UserLayer", $contextElm));
237:             $wms->setUserStyle($this->getValue("./@UserStyle", $contextElm));
238:             $wms->setRemoteWfs($this->getValue("./@RemoteWFS", $contextElm));
239:             $wms->setInlineFeature($this->getValue("./@InlineFeature",
240:                                                    $contextElm));
241:             $wms->setRemoteWcs($this->getValue("./@RemoteWCS", $contextElm));
242:         }
243:     }
244: 
245:     /**
246:      * Parses the Layer section of the GetCapabilities document
247:      * 
248:      * @param \Mapbender\WmsBundle\Entity\WmsSource $wms the WmsSource
249:      * @param \Mapbender\WmsBundle\Entity\WmsLayerSource $wmslayer the WmsLayerSource
250:      * @param \DOMElement $contextElm the element to use as context for the
251:      * Layer section
252:      * @return \Mapbender\WmsBundle\Entity\WmsLayerSource the created layer
253:      */
254:     private function parseLayer(WmsSource $wms, WmsLayerSource $wmslayer,
255:             \DOMElement $contextElm)
256:     {
257:         $wmslayer->setQueryable($this->getValue("./@queryable", $contextElm));
258:         $wmslayer->setCascaded($this->getValue("./@cascaded", $contextElm));
259:         $wmslayer->setOpaque($this->getValue("./@opaque", $contextElm));
260:         $wmslayer->setNoSubset($this->getValue("./@noSubsets", $contextElm));
261:         $wmslayer->setFixedWidth($this->getValue("./@fixedWidth", $contextElm));
262:         $wmslayer->setFixedHeight($this->getValue("./@fixedHeight", $contextElm));
263: 
264:         $wmslayer->setName($this->getValue("./Name/text()", $contextElm));
265:         $wmslayer->setTitle($this->getValue("./Title/text()", $contextElm));
266:         $wmslayer->setAbstract($this->getValue("./Abstract/text()", $contextElm));
267: 
268:         $keywordElList = $this->xpath->query("./KeywordList/Keyword",
269:                                              $contextElm);
270:         foreach($keywordElList as $keywordEl)
271:         {
272:             $keyword = new Keyword();
273:             $keyword->setValue(trim($this->getValue("./text()", $keywordEl)));
274:             $keyword->setSourceclass($wmslayer->getClassname());
275:             $keyword->setSourceid($wmslayer);
276:             // FIXME: breaks sqlite
277:             //$wmslayer->addKeyword($keyword);
278:         }
279: 
280:         $tempList = $this->xpath->query("./SRS", $contextElm);
281:         if($tempList !== null)
282:         {
283:             foreach($tempList as $item)
284:             {
285:                 $wmslayer->addSrs($this->getValue("./text()", $item));
286:             }
287:         }
288:         $latlonbboxEl = $this->getValue("./LatLonBoundingBox", $contextElm);
289:         if($latlonbboxEl !== null)
290:         {
291:             $latlonBounds = new BoundingBox();
292:             $latlonBounds->setSrs("EPSG:4326");
293:             $latlonBounds->setMinx($this->getValue("./@minx", $latlonbboxEl));
294:             $latlonBounds->setMiny($this->getValue("./@miny", $latlonbboxEl));
295:             $latlonBounds->setMaxx($this->getValue("./@maxx", $latlonbboxEl));
296:             $latlonBounds->setMaxy($this->getValue("./@maxy", $latlonbboxEl));
297:             //@TODO  resx="0.01" resy="0.01" ??
298:             $wmslayer->setLatlonBounds($latlonBounds);
299:         }
300: 
301:         $tempList = $this->xpath->query("./BoundingBox", $contextElm);
302:         if($tempList !== null)
303:         {
304:             foreach($tempList as $item)
305:             {
306:                 $bbox = new BoundingBox();
307:                 $bbox->setSrs($this->getValue("./@SRS", $item));
308:                 $bbox->setMinx($this->getValue("./@minx", $item));
309:                 $bbox->setMiny($this->getValue("./@miny", $item));
310:                 $bbox->setMaxx($this->getValue("./@maxx", $item));
311:                 $bbox->setMaxy($this->getValue("./@maxy", $item));
312:                 //@TODO  resx="0.01" resy="0.01" ??
313:                 $wmslayer->addBoundingBox($bbox);
314:             }
315:         }
316:         /* @TODO Dimension <element ref="Dimension" minOccurs="0" maxOccurs="unbounded"/>
317:          * <element name="Dimension">
318:          * <annotation><documentation>The Dimension element declares the existence of a dimension and indicates what values along a dimension are valid.</documentation></annotation>
319:          * <complexType><simpleContent><extension base="string">
320:          * <attribute name="name" type="string" use="required"/>
321:          * <attribute name="units" type="string" use="required"/>
322:          * <attribute name="unitSymbol" type="string"/>
323:          * <attribute name="default" type="string"/>
324:          * <attribute name="multipleValues" type="boolean"/>
325:          * <attribute name="nearestValue" type="boolean"/>
326:          * <attribute name="current" type="boolean"/>
327:          * </extension></simpleContent></complexType>
328:          * </element>
329:          */
330:         $attributionEl = $this->getValue("./Attribution", $contextElm);
331:         if($attributionEl !== null)
332:         {
333:             $attribution = new Attribution();
334:             $attribution->setTitle($this->getValue("./Title/text()",
335:                                                    $attributionEl));
336:             $attribution->setOnlineResource($this->getValue("./OnlineResource/@xlink:href",
337:                                                             $attributionEl));
338:             $logoUrl = new LegendUrl();
339:             $logoUrl->setHeight($this->getValue("./LogoURL/@height",
340:                                                 $attributionEl));
341:             $logoUrl->setWidth($this->getValue("./LogoURL/@width",
342:                                                $attributionEl));
343:             $onlineResource = new OnlineResource();
344:             $onlineResource->setHref($this->getValue("./LogoURL/OnlineResource/@xlink:href",
345:                                                      $attributionEl));
346:             $onlineResource->setFormat($this->getValue("./LogoURL/Format/text()",
347:                                                        $attributionEl));
348:             $logoUrl->setOnlineResource($onlineResource);
349:             $attribution->setLogoUrl($logoUrl);
350:             $wmslayer->setAttribution($attribution);
351:         }
352: 
353:         $authorityList = $this->xpath->query("./AuthorityURL", $contextElm);
354:         $identifierList = $this->xpath->query("./Identifier", $contextElm);
355:         if($authorityList !== null)
356:         {
357:             foreach($authorityList as $authorityEl)
358:             {
359:                 $authority = new Authority();
360:                 $authority->setName($this->getValue("./@name", $authorityEl));
361:                 $authority->setUrl($this->getValue("./OnlineResource/@xlink:href",
362:                                                    $authorityEl));
363:                 $wmslayer->addAuthority($authority);
364:             }
365:         }
366:         if($identifierList !== null)
367:         {
368:             foreach($identifierList as $identifierEl)
369:             {
370:                 $identifier = new Identifier();
371:                 $identifier->setAuthority($this->getValue("./@authority",
372:                                                           $identifierEl));
373:                 $identifier->setValue($this->getValue("./text()", $identifierEl));
374:                 $wmslayer->setIdentifier($identifier);
375:             }
376:         }
377: 
378:         $metadataUrlList = $this->xpath->query("./MetadataURL", $contextElm);
379:         if($metadataUrlList !== null)
380:         {
381:             foreach($metadataUrlList as $metadataUrlEl)
382:             {
383:                 $metadataUrl = new MetadataUrl();
384:                 $onlineResource = new OnlineResource();
385:                 $onlineResource->setFormat($this->getValue("./Format/text()",
386:                                                            $metadataUrlEl));
387:                 $onlineResource->setHref($this->getValue("./OnlineResource/@xlink:href",
388:                                                          $metadataUrlEl));
389:                 $metadataUrl->setOnlineResource($onlineResource);
390:                 $metadataUrl->setType($this->getValue("./@type", $metadataUrlEl));
391:                 $wmslayer->addMetadataUrl($metadataUrl);
392:             }
393:         }
394: 
395:         $dimensionList = $this->xpath->query("./Dimension", $contextElm);
396:         if($dimensionList !== null)
397:         {
398:             foreach($dimensionList as $dimensionEl)
399:             {
400:                 $dimension = new Dimension();
401:                 $dimension->setName($this->getValue("./@name", $dimensionEl)); //($this->getValue("./@CRS", $item));
402:                 $dimension->setUnits($this->getValue("./@units", $dimensionEl));
403:                 $dimension->setUnitSymbol($this->getValue("./@unitSymbol",
404:                                                           $dimensionEl));
405:                 $wmslayer->addDimensionl($dimension);
406:             }
407:         }
408: 
409:         $extentList = $this->xpath->query("./Extent", $contextElm);
410:         if($extentList !== null)
411:         {
412:             foreach($extentList as $extentEl)
413:             {
414:                 $extent = new Extent();
415:                 $extent->setName($this->getValue("./@name", $extentEl));
416:                 $extent->setDefault($this->getValue("./@default", $extentEl));
417:                 $extent->setMultipleValues($this->getValue("./@multipleValues",
418:                                                            $extentEl) !== null ? (bool) $this->getValue("./@name",
419:                                                                                                         $extentEl)
420:                                     : null);
421:                 $extent->setNearestValue($this->getValue("./@nearestValue",
422:                                                          $extentEl) !== null ? (bool) $this->getValue("./@name",
423:                                                                                                       $extentEl)
424:                                     : null);
425:                 $extent->setCurrent($this->getValue("./@current", $extentEl) !== null
426:                                     ? (bool) $this->getValue("./@name",
427:                                                              $extentEl) : null);
428:                 $extent->setExtentValue($this->getValue("./text()", $extentEl));
429:                 $wmslayer->addExtent($extent);
430:             }
431:         }
432: 
433:         $dataUrlList = $this->xpath->query("./DataURL", $contextElm);
434:         if($dataUrlList !== null)
435:         {
436:             foreach($dataUrlList as $dataUrlEl)
437:             {
438:                 $onlineResource = new OnlineResource();
439:                 $onlineResource->setFormat($this->getValue("./Format/text()",
440:                                                            $dataUrlEl));
441:                 $onlineResource->setHref($this->getValue("./OnlineResource/@xlink:href",
442:                                                          $dataUrlEl));
443: 
444:                 $wmslayer->addDataUrl($onlineResource);
445:             }
446:         }
447: 
448:         $featureListUrlList = $this->xpath->query("./FeatureListURL",
449:                                                   $contextElm);
450:         if($featureListUrlList !== null)
451:         {
452:             foreach($featureListUrlList as $featureListUrlEl)
453:             {
454:                 $onlineResource = new OnlineResource();
455:                 $onlineResource->setFormat($this->getValue("./Format/text()",
456:                                                            $featureListUrlEl));
457:                 $onlineResource->setHref($this->getValue("./OnlineResource/@xlink:href",
458:                                                          $featureListUrlEl));
459: 
460:                 $wmslayer->addFeatureListUrl($onlineResource);
461:             }
462:         }
463: 
464:         $tempList = $this->xpath->query("./Style", $contextElm);
465:         if($tempList !== null)
466:         {
467:             foreach($tempList as $item)
468:             {
469:                 $style = new Style();
470:                 $style->setName($this->getValue("./Name/text()", $item));
471:                 $style->setTitle($this->getValue("./Title/text()", $item));
472:                 $style->setAbstract($this->getValue("./Abstract/text()", $item));
473: 
474:                 $legendUrlEl = $this->getValue("./LegendURL", $item);
475:                 if($legendUrlEl !== null)
476:                 {
477:                     $legendUrl = new LegendUrl();
478:                     $legendUrl->setWidth($this->getValue("./@width",
479:                                                          $legendUrlEl));
480:                     $legendUrl->setHeight($this->getValue("./@height",
481:                                                           $legendUrlEl));
482:                     $onlineResource = new OnlineResource();
483:                     $onlineResource->setFormat($this->getValue("./Format/text()",
484:                                                                $legendUrlEl));
485:                     $onlineResource->setHref($this->getValue("./OnlineResource/@xlink:href",
486:                                                              $legendUrlEl));
487:                     $legendUrl->setOnlineResource($onlineResource);
488:                     $style->setLegendUrl($legendUrl);
489:                 }
490: 
491:                 $styleUrlEl = $this->getValue("./StyleURL", $item);
492:                 if($styleUrlEl !== null)
493:                 {
494:                     $onlineResource = new OnlineResource();
495:                     $onlineResource->setFormat($this->getValue("./Format/text()",
496:                                                                $styleUrlEl));
497:                     $onlineResource->setHref($this->getValue("./OnlineResource/@xlink:href",
498:                                                              $styleUrlEl));
499:                     $style->setStyleUlr($onlineResource);
500:                 }
501: 
502:                 $stylesheetUrlEl = $this->getValue("./StyleSheetURL", $item);
503:                 if($stylesheetUrlEl !== null)
504:                 {
505:                     $onlineResource = new OnlineResource();
506:                     $onlineResource->setFormat($this->getValue("./Format/text()",
507:                                                                $stylesheetUrlEl));
508:                     $onlineResource->setHref($this->getValue("./OnlineResource/@xlink:href",
509:                                                              $stylesheetUrlEl));
510:                     $style->setStyleSheetUrl($onlineResource);
511:                 }
512:                 $wmslayer->addStyle($style);
513:             }
514:         }
515:         $scaleHintEl = $this->getValue("./ScaleHint", $contextElm);
516:         if($scaleHintEl !== null)
517:         {
518:             $scaleHint = new MinMax();
519:             $min = $this->getValue("./@min", $scaleHintEl);
520:             $scaleHint->setMin($min !== null ? floatval($min) : null);
521:             $max = $this->getValue("./@max", $scaleHintEl);
522:             $scaleHint->setMax($max !== null ? floatval($max) : null);
523:             $wmslayer->setScaleHint($scaleHint);
524: //            $min = 0;
525: //            $max = 0;
526: //            if($scaleHint->getMax() <= 1000)
527: //            {
528: //                $max = $scaleHint->getMax();
529: //            }
530: //            if($scaleHint->getMin() <= 1000)
531: //            {
532: //                $min = $scaleHint->getMin();
533: //            }
534: //            $scale = new MinMax();
535: //            $scale->setMax(round(($max * 2004.3976484406788493955738891127)));
536: //            $scale->setMin(round(($min * 2004.3976484406788493955738891127)));
537: //            $wmslayer->setScale($scale);
538:             
539:             
540:             $minScale = ($scaleHint->getMin()/sqrt(2.0))*$this->resolution/2.54*100;
541:             $maxScale = ($scaleHint->getMax()/sqrt(2.0))*$this->resolution/2.54*100;
542:             $scale = new MinMax();
543:             $scale->setMax(round($maxScale));
544:             $scale->setMin(round($minScale));
545:             $wmslayer->setScale($scale);
546:         }
547: 
548:         $tempList = $this->xpath->query("./Layer", $contextElm);
549:         if($tempList !== null)
550:         {
551:             foreach($tempList as $item)
552:             {
553:                 $subwmslayer = $this->parseLayer($wms, new WmsLayerSource(),
554:                                                  $item);
555:                 $subwmslayer->setParent($wmslayer);
556:                 $subwmslayer->setSource($wms);
557:                 $wmslayer->addSublayer($subwmslayer);
558:                 $wms->addLayer($subwmslayer);
559:             }
560:         }
561:         $wmslayer->setSource($wms);
562:         return $wmslayer;
563:     }
564: 
565: }
566: 
567: 
Mapbender3 API documenation API documentation generated by ApiGen 2.8.0