def hoverFeature(request): try: layer_id = int(request.GET['shapefile_id']) latitude = float(request.GET['latitude']) longitude = float(request.GET['longitude']) layer = Shapefile.objects.get(id=layer_id, created_by=request.user) query = findFeature(layer,longitude,latitude) attributes = Attribute.objects.filter(shapefile=layer).order_by('name') if query: feat_data={} for attribute in attributes: try: value = query.attribute_value[attribute.name] except: value = None feat_data[attribute.name] = value formset = HoverFeatureAttributeForm(feat_data=feat_data, feat_id_relat=query.id_relat) return render_to_response("layers/vector/layers_vector_featureAttributes.html", {'formset': formset },context_instance=RequestContext(request)) else: return HttpResponse('<i>No feature</i>') except: traceback.print_exc() return HttpResponse("")
def selectFeature(request): try: post_dict = dict(request.POST.copy().iteritems()) layer_id = int(post_dict['layer_id']) latitude = float(post_dict['latitude']) longitude = float(post_dict['longitude']) layer = Shapefile.objects.get(id=layer_id, created_by=request.user) query = findFeature(layer, longitude, latitude) if query: geometryField = calcGeometryField(layer.geom_type) SQLQuery = "SELECT row_to_json(f) As %s \ FROM (SELECT 'Feature' As type \ , ST_AsGeoJSON(%s)::json As geometry \ , row_to_json((SELECT l FROM (SELECT id_relat AS feat_id) As l)) As properties \ FROM layers_feature As l WHERE l.id = %s ) As f;" % (layer.geom_type, geometryField, query.pk) cursor = connection.cursor() cursor.execute(SQLQuery) row = cursor.fetchone()[0] response = json.dumps({'geojson':row, 'feat_id':query.pk}) return HttpResponse(response,content_type="application/json") else: return HttpResponse("") except: traceback.print_exc() return HttpResponse("")