JefersonPMS's picture
Wildfire allocation decision-support dashboard
e7e46ae
Raw
History Blame Contribute Delete
2.25 kB
import ee, json
KEY=r'C:/JEFERSON-ARTIGOS/TESE/ee-guiapratico4-3a12b9584ab4.json'
k=json.load(open(KEY)); ee.Initialize(ee.ServiceAccountCredentials(k['client_email'],KEY),project=k['project_id'])
def build_stack():
srtm=ee.Image('USGS/SRTMGL1_003')
dem=srtm.rename('DEM')
slope=ee.Terrain.slope(srtm).rename('Declividade')
aspect=ee.Terrain.aspect(srtm).rename('Orientacao')
tc=ee.ImageCollection('IDAHO_EPSCOR/TERRACLIMATE').filterDate('2008-01-01','2008-12-31').mean()
tmax=tc.select('tmmx').multiply(0.1).rename('Tmax')
tmin=tc.select('tmmn').multiply(0.1).rename('Tmin')
ppt=tc.select('pr').rename('Ppt')
soil=tc.select('soil').multiply(0.1).rename('UmidSolo')
ws=tc.select('vs').multiply(0.01).rename('VelVento')
vap=tc.select('vap').multiply(0.001) # kPa (pressao vapor real)
es=tmax.expression('0.6108*exp(17.27*T/(T+237.3))',{'T':tmax})
rh=vap.divide(es).multiply(100).rename('UmidRel')
ndvi=ee.ImageCollection('MODIS/006/MOD13Q1').filterDate('2008-01-01','2008-12-31').mean().select('NDVI').multiply(0.0001).rename('NDVI')
lai=ee.ImageCollection('MODIS/006/MOD15A2H').filterDate('2008-01-01','2008-12-31').mean().select('Lai_500m').multiply(0.1).rename('IAF')
lc=ee.Image('ESA/GLOBCOVER_L4_200901_200912_V2_3').select('landcover').rename('CoberturaTerra')
# fatores antrópicos (assets do autor): distância euclidiana a estradas e residências (m)
dist_estradas=ee.Image('users/jefersonmufmg/Estradas_euclid').rename('DistEstradas')
dist_residencias=ee.Image('users/jefersonmufmg/Pueblos_euclid').rename('DistResidencias')
return dem.addBands([slope,aspect,tmax,tmin,ppt,soil,ws,rh,ndvi,lai,lc,dist_estradas,dist_residencias])
if __name__=='__main__':
stack=build_stack()
print('bandas:', stack.bandNames().getInfo())
# teste: amostrar 5 pontos conhecidos na Andaluzia
pts=ee.FeatureCollection([ee.Feature(ee.Geometry.Point([-5.0,37.4]),{'classe':1}),
ee.Feature(ee.Geometry.Point([-3.6,37.2]),{'classe':0})])
s=stack.sampleRegions(collection=pts, properties=['classe'], scale=500, geometries=False)
print(json.dumps(s.getInfo()['features'][0]['properties'], indent=1, ensure_ascii=False))