Coverage for gws-app/gws/plugin/ows_server/wcs/__init__.py: 100%
0 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""WCS service.
3@TODO to be implemented
5"""
7# import gws
8# import gws.base.web
9# import gws.gis.crs
10# import gws.gis.bounds
11# import gws.base.ows.server
12#
13#
14# gws.ext.new.owsService('wcs')
15#
16#
17# class Config(gws.base.ows.server.service.Config):
18# """WCS Service configuration"""
19# pass
20#
21#
22# class Object(gws.base.ows.server.service.Object):
23# protocol = gws.OwsProtocol.WCS
24# supportedVersions = ['2.0.1', '1.0.0']
25# is_raster_ows = True
26#
27# @property
28# def service_link(self):
29# if self.project:
30# return gws.Data(url=self.url_path(self.project), scheme='OGC:WCS', function='search')
31#
32# @property
33# def default_templates(self):
34# return [
35# gws.Config(
36# type='py',
37# path=gws.u.dirname(__file__) + '/templates/getCapabilities.cx.py',
38# subject='ows.GetCapabilities',
39# mimeTypes=['xml'],
40# access=gws.c.PUBLIC,
41# ),
42# gws.Config(
43# type='py',
44# path=gws.u.dirname(__file__) + '/templates/describeCoverage.cx.py',
45# subject='ows.DescribeCoverage',
46# mimeTypes=['xml'],
47# access=gws.c.PUBLIC,
48# ),
49# ]
50#
51# @property
52# def default_metadata(self):
53# return gws.Data(
54# inspireDegreeOfConformity='notEvaluated',
55# inspireMandatoryKeyword='infoMapAccessService',
56# inspireResourceType='service',
57# inspireSpatialDataServiceType='view',
58# isoScope='dataset',
59# isoSpatialRepresentationType='vector',
60# )
61#
62# ##
63#
64# # @TODO wcs needs more work
65#
66# def handle_getcapabilities(self, rd: core.Request):
67# lcs = self.layer_caps_list(rd)
68# return self.template_response(rd, gws.OwsVerb.GetCapabilities, context={
69# 'layer_caps_list': lcs,
70# 'version': self.request_version(rd),
71# })
72#
73# def handle_describecoverage(self, rd: core.Request):
74# lcs = self.layer_caps_list_from_request(rd, ['coverageid', 'coverage', 'identifier'], self.SCOPE_LEAF)
75# if not lcs:
76# raise gws.base.web.error.NotFound()
77# return self.template_response(rd, gws.OwsVerb.DescribeCoverage, context={
78# 'layer_caps_list': lcs,
79# 'version': self.request_version(rd),
80# })
81#
82# def handle_getcoverage(self, rd: core.Request):
83# request_crs = rd.project.map.crs
84# p = rd.req.param('srsName')
85# if p:
86# crs = gws.gis.crs.get(p)
87# if not crs:
88# raise gws.base.web.error.BadRequest('Invalid CRS')
89# request_crs = crs
90#
91# bounds = gws.gis.bounds.from_request_bbox(rd.req.param('bbox'), request_crs, invert_axis_if_geographic=True)
92# if not bounds:
93# raise gws.base.web.error.BadRequest('Invalid BBOX')
94#
95# lcs = self.layer_caps_list_from_request(rd, ['coverageid', 'coverage', 'identifier'], self.SCOPE_LEAF)
96# if not lcs:
97# raise gws.base.web.error.NotFound('No layers found')
98#
99# return self.render_map_bbox_from_layer_caps_list(rd, lcs, bounds)