Ejemplo n.º 1
0
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("")
Ejemplo n.º 2
0
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("")