def GetFeatureInfo(self, r, kwargs): parms = GetFeatureInfoMixin.Parameters.create(kwargs).cleaned_data y = parms['i'] x = parms['j'] bbox = parms['bbox'] width = parms['width'] * 1.0 height = parms['height'] * 1.0 wherex = bbox[0] + x / width * (bbox[2] - bbox[0]) wherey = bbox[1] + (height - y) / height * (bbox[3] - bbox[1]) if 'filter' in kwargs and kwargs['filter']: parms['filter'] = json.loads(kwargs['filter']) else: parms['filter'] = common.get_filter_params(kwargs) for k, v in kwargs.items(): if k not in parms: parms[k.lower()] = v info = self.adapter.get_feature_info(wherex, wherey, **parms) if parms['callback']: return HttpResponse("{callback}({json})".format( callback=parms['callback'], json=json.dumps(info))) elif parms['format'] == 'application/json' or r.META[ 'HTTP_ACCEPT_LANGUAGE'] == 'application/json': return HttpResponse(json.dumps(info), content_type='application/json') else: elt = etree.Element('FeatureInfoResponse') for i, layer in enumerate(info.keys()): for feature in info[layer]: fields = etree.SubElement(elt, "FIELDS") for k, v in feature.items(): try: fields.set(k, unicode(v)) except: fields.set(k, '') return HttpResponse(etree.tostring(elt, xml_declaration=True), content_type='application/vnd.ogc.wms_xml')
def GetFeatureInfo(self, r, kwargs): print json.dumps({k : str(v) for k, v in r.META.items()}, indent=4) parms = GetFeatureInfoMixin.Parameters.create(kwargs).cleaned_data y = parms['i'] x = parms['j'] bbox = parms['bbox'] width = parms['width']*1.0 height = parms['height']*1.0 wherex = bbox[0] + x/width*(bbox[2]-bbox[0]) wherey = bbox[1] + (height-y)/height*(bbox[3]-bbox[1]) if 'filter' in kwargs and kwargs['filter']: parms['filter'] = json.loads(kwargs['filter']) else: parms['filter'] = common.get_filter_params(kwargs) for k,v in kwargs.items(): if k not in parms: parms[k.lower()] = v info = self.adapter.get_feature_info(wherex, wherey, **parms) if parms['callback']: return HttpResponse("{callback}({json})".format(callback=parms['callback'], json=json.dumps(info))) elif parms['format'] == 'application/json' or r.META['HTTP_ACCEPT_LANGUAGE'] == 'application/json': return HttpResponse(json.dumps(info), mimetype='application/json') else: elt = etree.Element('FeatureInfoResponse') for i, layer in enumerate(info.keys()): for feature in info[layer]: fields = etree.SubElement(elt, "FIELDS") for k, v in feature.items(): try: fields.set(k, unicode(v)) except: fields.set(k, '') return HttpResponse(etree.tostring(elt, xml_declaration=True), mimetype='application/vnd.ogc.wms_xml')
def GetFeatureInfo(self, r, kwargs): parms = GetFeatureInfoMixin.Parameters.create(kwargs).cleaned_data x = parms.cleaned_data['i'] y = parms.cleaned_data['j'] bbox = parms.cleaned_data['bbox'] width = parms.cleaned_data['width']*1.0 height = parms.cleaned_data['height']*1.0 wherex = bbox[0] + x/width*(bbox[2]-bbox[0]) wherey = bbox[1] + y/height*(bbox[3]-bbox[1]) if 'filter' in kwargs: parms.cleaned_data['filter'] = json.loads(kwargs['filter']) else: parms.cleaned_data['filter'] = common.get_filter_params(kwargs) info = self.adapter.get_feature_info(wherex, wherey, **parms.cleaned_data) if parms.cleaned_data['callback']: return HttpResponse("{callback}({json})".format(callback=parms.cleaned_data['callback'], json=json.dumps(info))) elif parms.cleaned_data['format'] == 'application/json': return HttpResponse(json.dumps(info), mimetype='application/json') else: raise common.OWSException.at('GetFeatureInfo', "Feature info format not supported")