def serviceCapabilities(self, host, layers): xml = """<?xml version="1.0" encoding="UTF-8" ?> <TileMapService version="1.0.0"> <TileMaps>""" for name, layer in layers.items(): profile = "none" if layer.srs == "EPSG:4326": profile = "global-geodetic" elif layer.srs == "OSGEO:41001": profile = "global-mercator" xml += """ <TileMap href="%s1.0.0/%s/" srs="%s" title="%s" profile="%s" /> """ % ( host, name, layer.srs, layer.name, profile, ) xml += """ </TileMaps> </TileMapService>""" return Capabilities("text/xml", xml)
def layerCapabilities(self, host, layer): tms_type = layer.tms_type or "default" xml = """<?xml version="1.0" encoding="UTF-8" ?> <TileMap version="1.0.0" tilemapservice="%s1.0.0/"> <!-- Additional data: tms_type is %s --> <Title>%s</Title> <Abstract>%s</Abstract> <SRS>%s</SRS> <BoundingBox minx="%.6f" miny="%.6f" maxx="%.6f" maxy="%.6f" /> <Origin x="%.6f" y="%.6f" /> <TileFormat width="%d" height="%d" mime-type="%s" extension="%s" /> <TileSets> """ % (host, tms_type, layer.name, layer.description, layer.srs, layer.bbox[0], layer.bbox[1], layer.bbox[2], layer.bbox[3], layer.bbox[0], layer.bbox[1], layer.size[0], layer.size[1], layer.fmt(), layer.extension) for z, res in enumerate(layer.resolutions): xml += """ <TileSet href="%s1.0.0/%s/%d" units-per-pixel="%.20f" order="%d" />""" % ( host, layer.name, z, res, z) xml += """ </TileSets> </TileMap>""" return Capabilities("text/xml", xml)
def serverCapabilities(self, host): return Capabilities( "text/xml", """<?xml version="1.0" encoding="UTF-8" ?> <Services> <TileMapService version="1.0.0" href="%s1.0.0/" /> </Services>""" % host, )
def getCapabilities(self, host, param): if host[-1] not in "?&": if "?" in host: host += "&" else: host += "?" metadata = self.service.metadata if "description" in metadata: description = metadata["description"] else: description = "" formats = {} for layer in self.service.layers.values(): formats[layer.format()] = 1 formats = formats.keys() xml = """<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?> <!DOCTYPE WMT_MS_Capabilities SYSTEM "http://schemas.opengeospatial.net/wms/1.1.1/WMS_MS_Capabilities.dtd" [ <!ELEMENT VendorSpecificCapabilities (TileSet*) > <!ELEMENT TileSet (SRS, BoundingBox?, Resolutions, Width, Height, Format, Layers*, Styles*) > <!ELEMENT Resolutions (#PCDATA) > <!ELEMENT Width (#PCDATA) > <!ELEMENT Height (#PCDATA) > <!ELEMENT Layers (#PCDATA) > <!ELEMENT Styles (#PCDATA) > ]> <WMT_MS_Capabilities version="1.1.1"> <Service> <Name>OGC:WMS</Name> <Title>%s</Title> <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="%s"/> </Service> """ % (description, host) xml += """ <Capability> <Request> <GetCapabilities> <Format>application/vnd.ogc.wms_xml</Format> <DCPType> <HTTP> <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="%s"/></Get> </HTTP> </DCPType> </GetCapabilities>""" % (host) xml += """ <GetMap>""" for format in formats: xml += """ <Format>%s</Format>\n""" % format xml += """ <DCPType> <HTTP> <Get><OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="%s"/></Get> </HTTP> </DCPType> </GetMap> </Request>""" % (host) xml += """ <Exception> <Format>text/plain</Format> </Exception> <VendorSpecificCapabilities>""" for name, layer in self.service.layers.items(): resolutions = " ".join(["%.20f" % r for r in layer.resolutions]) xml += """ <TileSet> <SRS>%s</SRS> <BoundingBox SRS="%s" minx="%f" miny="%f" maxx="%f" maxy="%f" /> <Resolutions>%s</Resolutions> <Width>%d</Width> <Height>%d</Height> <Format>%s</Format> <Layers>%s</Layers> <Styles></Styles> </TileSet>""" % (layer.srs, layer.srs, layer.bbox[0], layer.bbox[1], layer.bbox[2], layer.bbox[3], resolutions, layer.size[0], layer.size[1], layer.format(), name) xml += """ </VendorSpecificCapabilities> <UserDefinedSymbolization SupportSLD="0" UserLayer="0" UserStyle="0" RemoteWFS="0"/> <Layer> <Title>TileCache Layers</Title>""" for name, layer in self.service.layers.items(): xml += """ <Layer queryable="0" opaque="0" cascaded="1"> <Name>%s</Name> <Title>%s</Title> <SRS>%s</SRS> <BoundingBox SRS="%s" minx="%f" miny="%f" maxx="%f" maxy="%f" /> </Layer>""" % (name, layer.name, layer.srs, layer.srs, layer.bbox[0], layer.bbox[1], layer.bbox[2], layer.bbox[3]) xml += """ </Layer> </Capability> </WMT_MS_Capabilities>""" return Capabilities("text/xml", xml)