Skip to content

Commit 238a7f5

Browse files
committed
Don't require width, height, bbox for requests with filter or filter_geom
1 parent c27048c commit 238a7f5

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

src/feature_info_service.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -140,19 +140,20 @@ def query(self, identity, origin, service_name, layers, params):
140140
)
141141

142142
# calculate query coordinates and resolutions
143-
try:
144-
bbox = list(map(float, params["bbox"].split(",")))
145-
x = 0.5 * (bbox[0] + bbox[2])
146-
y = 0.5 * (bbox[1] + bbox[3])
147-
xres = (bbox[2] - bbox[0]) / params['width']
148-
yres = (bbox[3] - bbox[1]) / params['height']
149-
except Exception as e:
150-
x = 0
151-
y = 0
152-
xres = 0
153-
yres = 0
143+
x = 0
144+
y = 0
145+
if params.get('bbox') and params.get('width') and params.get('height'):
146+
try:
147+
bbox = list(map(float, params["bbox"].split(",")))
148+
x = 0.5 * (bbox[0] + bbox[2])
149+
y = 0.5 * (bbox[1] + bbox[3])
150+
xres = (bbox[2] - bbox[0]) / params['width']
151+
yres = (bbox[3] - bbox[1]) / params['height']
152+
except Exception as e:
153+
xres = 0
154+
yres = 0
155+
params['resolution'] = max(xres, yres)
154156

155-
params['resolution'] = max(xres, yres)
156157
crs = params['crs']
157158
output_info_format = params.get('info_format').lower()
158159

src/server.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ def get_identity_or_auth(info_service):
8282
info_parser.add_argument('bbox', type=str)
8383
info_parser.add_argument('filter', type=str)
8484
info_parser.add_argument('filter_geom', type=str)
85-
info_parser.add_argument('height', required=True, type=int)
86-
info_parser.add_argument('width', required=True, type=int)
85+
info_parser.add_argument('height', type=int)
86+
info_parser.add_argument('width', type=int)
8787
info_parser.add_argument('crs', required=True, type=str)
8888
info_parser.add_argument('feature_count', default=1, type=int)
8989
info_parser.add_argument('with_geometry', default="true", type=str)
@@ -170,17 +170,17 @@ def __process_request(self, args, service_name):
170170

171171
layers = params['layers'].split(',')
172172

173-
if 'filter' in params and params['filter']:
173+
if params.get('filter'):
174174
# OK
175175
pass
176-
elif 'filter_geom' in params and params['filter_geom']:
176+
elif params.get('filter_geom'):
177177
# OK
178178
pass
179-
elif 'i' in params and params['i'] and 'j' in params and params['j'] and 'bbox' in params and params['bbox']:
179+
elif params.get('i') and params.get('j') and params.get('bbox') and params.get('width') and params.get('height'):
180180
# OK
181181
pass
182182
else:
183-
api.abort(404, "Either filter, filter_geom, or i and j, are required")
183+
api.abort(404, "Either filter, filter_geom, or (i, j, bbox, width, height), are required")
184184

185185
origin = request.origin
186186
headers = request.headers

0 commit comments

Comments
 (0)