def test_addConstantBands(self): newimg = tools.addConstantBands(0, "a", "b", "c")(self.l8SR) vals = tools.get_value(newimg, self.p_l8SR_no_cloud, 30) self.assertEqual(vals["B1"], 517) self.assertEqual(vals["a"], 0) self.assertEqual(vals["b"], 0) self.assertEqual(vals["c"], 0) newimg2 = tools.addConstantBands(a=0, b=1, c=2)(self.l8SR) vals2 = tools.get_value(newimg2, self.p_l8SR_no_cloud, 30) self.assertEqual(vals2["B1"], 517) self.assertEqual(vals2["a"], 0) self.assertEqual(vals2["b"], 1) self.assertEqual(vals2["c"], 2) newimg3 = tools.addConstantBands(0, "a", "b", "c", d=1, e=2)(self.l8SR) vals3 = tools.get_value(newimg3, self.p_l8SR_no_cloud, 30) self.assertEqual(vals3["B1"], 517) self.assertEqual(vals3["a"], 0) self.assertEqual(vals3["b"], 0) self.assertEqual(vals3["c"], 0) self.assertEqual(vals3["d"], 1) self.assertEqual(vals3["e"], 2)
def test_expressions(self): from geetools import expressions generator = expressions.ExpGen() exp_max = generator.max("b('B1')", "b('B2')") exp_min = generator.min("b('B1')", "b('B2')") img_max = self.l8SR.expression(exp_max).select([0], ["max"]) img_min = self.l8SR.expression(exp_min).select([0], ["min"]) vals_max = tools.get_value(img_max, self.p_l8SR_no_cloud, 30, 'client') vals_min = tools.get_value(img_min, self.p_l8SR_no_cloud, 30, 'client') self.assertEqual(vals_max["max"], 580) self.assertEqual(vals_min["min"], 517)
def test_bap2016_0(self): pmulti = scores.MultiYear(2016, self.temporada) objbap = bap.Bap(year=2016, colgroup=self.coleccion, season=self.temporada, scores=(self.pindice, self.pmascpor, self.psat, self.pout, self.pop, self.pdoy, pmulti), masks=(self.nubes,), filters=(self.filtro,), ) # objbap.debug = True sitio = self.sitio unpix = objbap.bestpixel(sitio, indices=("ndvi",)) img = unpix.image col = unpix.col self.assertIsInstance(img, ee.Image) self.assertIsInstance(col, ee.ImageCollection) idict = img.getInfo() cdict = col.getInfo() self.assertIsInstance(idict, dict) self.assertIsInstance(cdict, dict) value = tools.get_value(img, self.centroid, 30, 'client') print(value) self.assertIsInstance(value, dict) # self.assertEqual(value["BLUE"], 0.008500000461935997) # self.assertEqual(value["col_id"], 12.0) # self.assertEqual(value["ndvi"], 0.872759222984314)
def test_bap2016_0(self): pmulti = scores.MultiYear(2016, self.temporada) objbap = bap.Bap(year=2016, # colgroup=self.coleccion, season=self.temporada, scores=(self.pindice, self.pmascpor, self.psat, self.pout, self.pop, self.pdoy, pmulti), masks=(self.nubes,), filters=(self.filtro,), ) # objbap.debug = True sitio = self.sitio unpix = objbap.bestpixel(sitio, indices=("ndvi",)) img = unpix.image col = unpix.col self.assertIsInstance(img, ee.Image) self.assertIsInstance(col, ee.ImageCollection) idict = img.getInfo() cdict = col.getInfo() self.assertIsInstance(idict, dict) self.assertIsInstance(cdict, dict) value = tools.get_value(img, self.centroid, 30, 'client') print(value) self.assertIsInstance(value, dict) visual = img.visualize(bands=['NIR','SWIR','RED'], min=0, max=0.5) url = visual.getThumbUrl({'region':tools.getRegion(img)}) print('Result:', url)
def test_parametrize(self): newimg = tools.parametrize((0, 10000), (0, 1), ["B1", "B2"])(self.l8SR) vals = tools.get_value(newimg, self.p_l8SR_no_cloud, 30) self.assertEqual(vals["B1"], 517.0 / 10000) self.assertEqual(vals["B2"], 580.0 / 10000) self.assertEqual(vals["B3"], 824)
def test_sumBands(self): newimg = tools.sumBands("added_bands", ("B1", "B2", "B3"))(self.l8SR) vals = tools.get_value(newimg, self.p_l8SR_no_cloud, 30) suma = int(vals["B1"]) + int(vals["B2"]) + int(vals["B3"]) self.assertEqual(vals["added_bands"], suma)
def test_mask2(self): masked_img = self.l8SR.updateMask(self.l8SR.select(["cfmask"]).eq(0)) mask2zero = tools.mask2zero(masked_img) val_no_change = tools.get_value(mask2zero, self.p_l8SR_no_cloud, 30)["B1"] val_change = tools.get_value(mask2zero, self.p_l8SR_cloud, 30)["B1"] self.assertEqual(val_no_change, 517) self.assertEqual(val_change, 0) mask2num = tools.mask2number(10)(masked_img) val_no_change_num = tools.get_value(mask2num, self.p_l8SR_no_cloud, 30)["B1"] val_change_num = tools.get_value(mask2num, self.p_l8SR_cloud, 30)["B1"] self.assertEqual(val_no_change_num, 517) self.assertEqual(val_change_num, 10)
def test_minmax(self): min = 150 max = 2000 thres = scores.Threshold(self.band, (min, max)) newimg = thres.map()(self.img) val1 = tools.get_value(img=newimg, point=self.p1, scale=30, side='client')['score-thres'] val2 = tools.get_value(img=newimg, point=self.p2, scale=30, side='client')['score-thres'] val3 = tools.get_value(img=newimg, point=self.p3, scale=30, side='client')['score-thres'] self.assertEqual(val1, 1) self.assertEqual(val2, 0) self.assertEqual(val3, 0) masked = newimg.select(['B5', 'B7', 'B4']).updateMask(newimg.select('score-thres')) thumb = masked.getThumbUrl({ 'min': 0, 'max': 5000, 'region': self.region.getInfo()['coordinates'] }) original = newimg.select(['B5', 'B7', 'B4']).getThumbUrl({ 'min': 0, 'max': 5000, 'region': self.region.getInfo()['coordinates'] }) print('Original: {}'.format(original)) print('See image at: {}'.format(thumb))
def test_default(self): # SCORE score = scores.MaskPercent(self.band) newimg = score.map(self.col, self.pol)(self.image) maskpercent_prop = newimg.get(score.name).getInfo() maskpercent_pix = tools.get_value(newimg, self.p, side='client')[score.name] self.assertEqual(maskpercent_prop, 0, 5625) self.assertEqual(maskpercent_pix, 0, 5625)
def test_rename_bands(self): i = tools.rename_bands({"B1": "BLUE", "B2": "GREEN"})(self.l8SR) vals = tools.get_value(i, self.p_l8SR_no_cloud, 30) bands = i.bandNames().getInfo() self.assertEqual(bands, [ "BLUE", "GREEN", "B3", "B4", "B5", "B6", "B7", "cfmask", "cfmask_conf" ]) self.assertEqual(vals["BLUE"], 517)
def test_threshold_satcol(self): col = Collection.Landsat8USGS() p = ee.Geometry.Point([-70.16521453857422, -43.02372558882024]) colEE = col.colEE.filterBounds(p).map(col.rename()) score = Threshold() colEE_score = colEE.map(score.map(col)) p1 = ee.Geometry.Point([-69.38690186070744, -43.06088427532436]) p0 = ee.Geometry.Point([-69.21112061070744, -43.41704165930161]) image = ee.Image(colEE_score.first()) p1_val = tools.get_value(image, p1, 30, 'client')['score-thres'] p0_val = tools.get_value(image, p0, 30, 'client')['score-thres'] self.assertEqual(float(p1_val), 1) self.assertEqual(float(p0_val), 0) # output(image, 'from_satcol', {'bands':['score-thres'], 'min':0, 'max':1}) export(image.select([score.name]), 'test_scores', 'threshold_satcol', 30)
def test_break2band(self): b2b = self.principe.break2band() self.assertEqual(type(b2b), ee.Image) if exist_geetools: values = tools.get_value(b2b, self.center, scale=30, side='client') pp.pprint(values) self.output(b2b, 'test_break2band', { 'bands': ['change_0', 'change_1', 'change_2'], 'min': 0, 'max': 1 })
def test_with_zeros(self): col = Collection.Sentinel2() score = MaskPercent() image = cloud_mask.sentinel2()(cloud_S2) bounds = image.geometry().buffer(-50000) computed = score.map(col, bounds)(image) maskprop = computed.get(score.name).getInfo() maskband = tools.get_value(computed, image.geometry().centroid(), 10, 'client')[score.name] print(maskband, maskprop) self.assertEqual(maskband, maskprop)
scores = (doy, sat, op, out, ind, mascpor, dist) # BAP OBJECT bap = bap.Bap(year=2010, range=(0, 0), season=a_season, # colgroup=col_group, # if colgroup is None, it'll use season.SeasonPriority masks=masks, scores=scores, filters=filters) # SITE site = ee.Geometry.Polygon([[-71,-42], [-71,-43], [-72,-43], [-72,-42]]) # COMPOSITE composite = bap.bestpixel(site=site, indices=("ndvi",)) # The result (composite) is a namedtuple, so image = composite.image # image is a ee.Image object, so you can do anything # from here.. one_value = tools.get_value(image, site.centroid(), 30, 'client') pp.pprint(one_value)
def test_cloud_mask(self): from geetools import cloud_mask # LANDSAT 4 TOA masked_l4toa = cloud_mask.fmask("fmask")(self.l4toa) p_l4toa = ee.Geometry.Point([-72.2736, -44.6062]) vals_l4toa = tools.get_value(masked_l4toa, p_l4toa, 30) self.assertEqual(vals_l4toa["B1"], None) # LANDSAT 5 USGS p_l5usgs = ee.Geometry.Point([-65.4991, -24.534]) masked_l5usgs = cloud_mask.fmask("cfmask")(self.l5SR) vals_l5usgs = tools.get_value(masked_l5usgs, p_l5usgs, 30) self.assertEqual(vals_l5usgs["B1"], None) # LANDSAT 5 LEDAPS p_l5led = ee.Geometry.Point([-70.3455, -43.8306]) masked_l5led = cloud_mask.ledaps(self.l5led) vals_l5led = tools.get_value(masked_l5led, p_l5led, 30) self.assertEqual(vals_l5led["B1"], None) # LANDSAT 5 TOA masked_l5toa = cloud_mask.fmask("fmask")(self.l5toa) p_l5toa = ee.Geometry.Point([-70.9003, -39.7421]) vals_l5toa = tools.get_value(masked_l5toa, p_l5toa, 30) self.assertEqual(vals_l5toa["B1"], None) # LANDSAT 7 USGS p_l7usgs = ee.Geometry.Point([-64.8533, -26.1052]) masked_l7usgs = cloud_mask.fmask("cfmask")(self.l7SR) vals_l7usgs = tools.get_value(masked_l7usgs, p_l7usgs, 30) self.assertEqual(vals_l7usgs["B1"], None) # LANDSAT 7 LEDAPS p_l7led = ee.Geometry.Point([-64.9141, -25.2264]) masked_l7led = cloud_mask.ledaps(self.l7led) vals_l7led = tools.get_value(masked_l7led, p_l7led, 30) self.assertEqual(vals_l7led["B1"], None) # LANDSAT 7 TOA masked_l7toa = cloud_mask.fmask("fmask")(self.l7toa) p_l7toa = ee.Geometry.Point([-64.8495, -25.2354]) vals_l7toa = tools.get_value(masked_l7toa, p_l7toa, 30) self.assertEqual(vals_l7toa["B1"], None) # LANDSAT 8 USGS p_l8usgs = ee.Geometry.Point([-65.5568, -24.3327]) masked_l8usgs = cloud_mask.fmask("cfmask")(self.l8SR) vals_l8usgs = tools.get_value(masked_l8usgs, p_l8usgs, 30) self.assertEqual(vals_l8usgs["B1"], None) # LANDSAT 8 TOA masked_l8toa = cloud_mask.fmask("fmask")(self.l8toa) p_l8toa = ee.Geometry.Point([-71.7833, -43.6634]) vals_l8toa = tools.get_value(masked_l8toa, p_l8toa, 30) self.assertEqual(vals_l8toa["B1"], None) # LANDSAT SENTINEL 2 masked_s2 = cloud_mask.sentinel2(self.sentinel2) p_s2 = ee.Geometry.Point([-72.2104, -42.7592]) vals_s2 = tools.get_value(masked_s2, p_s2, 10) self.assertEqual(vals_s2["B1"], None) # LANDSAT MODIS AQ masked_ma = cloud_mask.modis(self.modis_aqua) p_ma = ee.Geometry.Point([-69.071, -43.755]) vals_ma = tools.get_value(masked_ma, p_ma, 500) self.assertEqual(vals_ma["sur_refl_b01"], None) # LANDSAT MODIS TE masked_te = cloud_mask.modis(self.modis_terra) p_te = ee.Geometry.Point([-71.993, -43.692]) vals_te = tools.get_value(masked_te, p_te, 500) self.assertEqual(vals_te["sur_refl_b01"], None)
def test_replace(self): testband = ee.Image.constant(10).select([0], ["anyname"]) newimg = tools.replace(self.l8SR, "B1", testband) vals = tools.get_value(newimg, self.p_l8SR_no_cloud, 30) self.assertEqual(vals["B1"], 10)