示例#1
0
    def test_webservice(self):
        data = {'geom_txt': self.polygons[0].wkt}
        #self.settings_manager.set(ROOT_URLCONF = 'lingcod.raster_stats.urls')
        response = self.client.get('/test_impact/', data)
        self.failUnlessEqual(response.status_code, 200)

        for obj in serializers.deserialize("json", response.content):
            web_zonal = obj.object
            util_zonal = zonal_stats(self.polygons[0], self.rast, read_cache=False)
            self.failUnlessEqual(web_zonal.avg, util_zonal.avg)
示例#2
0
    def test_zonal_util(self):
        """
        Tests that starspan works and stuff
        """
        # shouldnt have any nulls
        zonal = zonal_stats(self.polygons[0], self.rast)
        self.assertEqual(zonal.nulls,0)

        # doesnt even touch the raster, all should be null
        zonal = zonal_stats(self.polygons[1], self.rast)
        self.assertEqual(zonal.pixels,None)

        # Partly on and partly off the raster
        # no nulls but pixel count should be low
        zonal = zonal_stats(self.polygons[2], self.rast)
        self.assertEqual(zonal.nulls,0)
        self.assertEqual(zonal.pixels,225)

        # All on the raster but should have nulls
        zonal = zonal_stats(self.polygons[3], self.rast)
        self.assertEqual(zonal.nulls,279)
示例#3
0
    def test_zonal_util(self):
        """
        Tests that starspan works and stuff
        """
        # shouldnt have any nulls
        zonal = zonal_stats(self.polygons[0], self.rast)
        self.assertEqual(zonal.nulls, 0)

        # doesnt even touch the raster, all should be null
        zonal = zonal_stats(self.polygons[1], self.rast)
        self.assertEqual(zonal.pixels, None)

        # Partly on and partly off the raster
        # no nulls but pixel count should be low
        zonal = zonal_stats(self.polygons[2], self.rast)
        self.assertEqual(zonal.nulls, 0)
        self.assertEqual(zonal.pixels, 225)

        # All on the raster but should have nulls
        zonal = zonal_stats(self.polygons[3], self.rast)
        self.assertEqual(zonal.nulls, 279)
示例#4
0
    def test_webservice(self):
        data = {'geom_txt': self.polygons[0].wkt}
        #self.settings_manager.set(ROOT_URLCONF = 'lingcod.raster_stats.urls')
        response = self.client.get('/test_impact/', data)
        self.failUnlessEqual(response.status_code, 200)

        for obj in serializers.deserialize("json", response.content):
            web_zonal = obj.object
            util_zonal = zonal_stats(self.polygons[0],
                                     self.rast,
                                     read_cache=False)
            self.failUnlessEqual(web_zonal.avg, util_zonal.avg)
示例#5
0
    def test_caching(self):
        """
        Test that the caching mechanism works and we can turn it on/off
        """
        clear_cache()
        self.assertEqual( len(ZonalStatsCache.objects.all()), 0)

        zonal = zonal_stats(self.polygons[0], self.rast)
        self.assertEqual( zonal.from_cache, False)
        self.assertEqual( len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[0], self.rast)
        self.assertEqual( zonal.from_cache, True)
        self.assertEqual( len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[0], self.rast, read_cache=False)
        self.assertEqual( zonal.from_cache, False)
        self.assertEqual( len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[3], self.rast, write_cache=False)
        self.assertEqual( zonal.from_cache, False)
        self.assertEqual( len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[3], self.rast)
        self.assertEqual( zonal.from_cache, False)
        self.assertEqual( len(ZonalStatsCache.objects.all()), 2)

        zonal = zonal_stats(self.polygons[3], self.rast)
        self.assertEqual( zonal.from_cache, True)
        self.assertEqual( len(ZonalStatsCache.objects.all()), 2)

        clear_cache()
        self.assertEqual( len(ZonalStatsCache.objects.all()), 0)
示例#6
0
    def test_caching(self):
        """
        Test that the caching mechanism works and we can turn it on/off
        """
        clear_cache()
        self.assertEqual(len(ZonalStatsCache.objects.all()), 0)

        zonal = zonal_stats(self.polygons[0], self.rast)
        self.assertEqual(zonal.from_cache, False)
        self.assertEqual(len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[0], self.rast)
        self.assertEqual(zonal.from_cache, True)
        self.assertEqual(len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[0], self.rast, read_cache=False)
        self.assertEqual(zonal.from_cache, False)
        self.assertEqual(len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[3], self.rast, write_cache=False)
        self.assertEqual(zonal.from_cache, False)
        self.assertEqual(len(ZonalStatsCache.objects.all()), 1)

        zonal = zonal_stats(self.polygons[3], self.rast)
        self.assertEqual(zonal.from_cache, False)
        self.assertEqual(len(ZonalStatsCache.objects.all()), 2)

        zonal = zonal_stats(self.polygons[3], self.rast)
        self.assertEqual(zonal.from_cache, True)
        self.assertEqual(len(ZonalStatsCache.objects.all()), 2)

        clear_cache()
        self.assertEqual(len(ZonalStatsCache.objects.all()), 0)
示例#7
0
def stats_for_geom(request, raster_name):
    # Confirm that we have a valid polygon geometry
    if 'geom_txt' in request.REQUEST: 
        geom_txt = str(request.REQUEST['geom_txt'])
    else:
        return HttpResponse("Must supply a geom_txt parameter", status=404)
    
    try:
        geom = fromstr(geom_txt)
    except:
        return HttpResponse("Must supply a parsable geom_txt parameter (wkt or json)", status=404)
 
    # Confirm raster with pk exists
    try:
        raster = RasterDataset.objects.get(name=raster_name)
    except:
        return HttpResponse("No raster with pk of %s" % pk, status=404)

    #TODO check if continuous
    zonal = zonal_stats(geom, raster)
    zonal.save()
    zqs = ZonalStatsCache.objects.filter(pk=zonal.pk)
    data = serializers.serialize("json", zqs, fields=('avg','min','max','median','mode','stdev','nulls','pixels','date_modified','raster'))
    return HttpResponse(data, mimetype='application/json')
示例#8
0
 def test_categories(self):
     zonal = zonal_stats(self.polygons[0], self.rast)
     sumpix = 0
     for zc in zonal.categories.all():
         sumpix += zc.count
     self.assertEqual(zonal.pixels, sumpix)
示例#9
0
 def test_categories(self):
     zonal = zonal_stats(self.polygons[0], self.rast)
     sumpix = 0
     for zc in zonal.categories.all():
         sumpix += zc.count
     self.assertEqual(zonal.pixels, sumpix)