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)
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)
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)
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)
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)
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')
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)