diff --git a/README.md b/README.md index b59bad2528d6761a081a247d982de265df5dfadc..c191e150da25e39508c30f197cb160810e9a0217 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ -# DOREN 2019 +# Dosis Effect Relaties Natuur (DOREN) -Dit repository bevat python code voor selectie van Vegetatieopnames uit de EVA database en ruimtelijke-koppeling met diverse GIS bestanden. Deze code is onderdeel van het DOREN project van Wageningen Environenmental Research (WEnR). +Dit repository bevat python code voor selectie van Vegetatieopnames uit de EVA database en ruimtelijke-koppeling met diverse GIS bestanden. Deze code is onderdeel van het DOREN project van Wageningen Environenmental Research (WEnR). Deze repository is onderdeel van Wamelink *et al* (2021) *Responsecurven van habitattypen voor stikstofdepositie*. Code door: Hans Roelofsen, Wageningen Environmental Research -Project leider: Wieger Wamelink, Wageningen Environmental Research -Datum: begonnen september 2019. -###Brongegevens +Projectleider: Wieger Wamelink, Wageningen Environmental Research + +Datum: september 2019 - januari 2021 + +### Brongegevens * Export van de EVA vegetetieopname database uit, bestaande uit: * kopgegevens (headers) met opnameID, datum, latitude, longitude en andere metadata per plot * inventarisgegevens met soortnaam, soortnummer en bedekking voor alle soorten in elke opname @@ -36,7 +38,7 @@ In `create_doren.py` worden de gewenste selecties op de EVA opnames toegepast en De `pickle` wordt vervolgens gekopieerd naar de WUR [Anunna High Performance Computer](https://wiki.anunna.wur.nl/index.php/Main_Page). Hier wordt voor elke gewenste soort een soort-file gegenereerd middels het `run_species.py` script. Dit gebeurt gedistribueerd over meerdere HPC nodes, zodat de totale doorlooptijd beperkt blijft. Dit process wordt aangestuurd via `doren_batch.sh`. -### requirements +### Benodigdheden * [python 3.5.6](https://www.python.org/) * [geopandas 0.6.3](https://geopandas.org/install.html) * [numpy 1.15.2](https://numpy.org/) @@ -49,8 +51,6 @@ De `pickle` wordt vervolgens gekopieerd naar de WUR [Anunna High Performance Com Neem contact op met [Hans Roelofsen](https://www.wur.nl/en/Persons/Hans-dr.-HD-Hans-Roelofsen.htm). ### Copyright -Deze repository is onderdeel van Wamelink *et al* (2021) *Responsecurven van habitattypen voor stikstofdepositie*. - Copyright 2021 Wageningen Environmental Research (instituut binnen de rechtspersoon Stichting Wageningen Research), Postbus 47, 6700 AA Wageningen, T 0317 48 07 00, [Wageningen Environmental Research](www.wur.nl/environmental-research). Wageningen Environmental Research is onderdeel van Wageningen University & Research. * Overname, verveelvoudiging of openbaarmaking van deze uitgave is toegestaan mits met duidelijke bronvermelding. diff --git a/create_doren.py b/create_doren.py index dec12060f147d613c9cbbbf8993e44b73567b6da..55b2b78bd5f7b3d11326fc00100cb3967ea4e721 100644 --- a/create_doren.py +++ b/create_doren.py @@ -31,7 +31,6 @@ doren = dc.Doren(header_src=param_header_src, sp_src=param_sp_src) doren.initiate(sample=testing) doren.apply_requirements('req1', 'req2', 'req3', 'req4', 'req8', 'req9', 'req10', aoi_src=None if testing else param_aoi_src, dem_src=param_dem_src) - doren.overwrite_eunis(source_file=r'W:\PROJECTS\Doren19\a_brondata\EVA\delivery_20210112\Calluna_Avenula.csv', col='PlotObservationID', target_eunis='S42') doren.overwrite_eunis(source_file=r'W:\PROJECTS\Doren19\a_brondata\EVA\delivery_20210112\Calluna_Molinea.csv', @@ -44,6 +43,7 @@ doren.overwrite_eunis(source_file=r'W:\PROJECTS\Doren19\a_brondata\EVA\delivery_ col='PlotObservationID', target_eunis='S41') doren.overwrite_eunis(source_file=r'W:\PROJECTS\Doren19\a_brondata\EVA\delivery_20210112\Erica_Molinea.csv', col='PlotObservationID', target_eunis='S41') +doren.merge_eunis() doren.get_requested_species(xls=sp_req_src, sheet=sp_req_sheet, col=column, skip=skip, simplify_names=True) doren.add_covar(covar_dir=cv_cntr_dir, covar_src=cv_cntr_src, covar_name='country', raster=False, column='SOV_A3') diff --git a/run_species.py b/run_species.py index 4d338ed5980a15a18bb3af9b73d247b3b12aab80..d6e182b38dd6dbb1d813454c9c66573a0378253c 100644 --- a/run_species.py +++ b/run_species.py @@ -18,7 +18,7 @@ n_batches = int(args.n_batches) # Recover the Pickled doren object pkl_src = os.path.join('./pkl_src/', args.pkl) -# pkl_src = r'c:\Users\roelo008\OneDrive - WageningenUR\a_projects\DOREN\b_compiled_data\a_pkl\doren_20201209.pkl' +# pkl_src = r'c:\Users\roelo008\OneDrive - WageningenUR\a_projects\DOREN\b_compiled_data\a_pkl\doren_20210113.pkl' with open(pkl_src, 'rb') as handle: doren = pickle.load(handle) diff --git a/utils/doren_classes.py b/utils/doren_classes.py index 4e297391cbeff4fc662b550afb689b2607d3c731..a3ee42e8b1665fd2bd1431e67b9dd73a0dfdca51 100644 --- a/utils/doren_classes.py +++ b/utils/doren_classes.py @@ -134,22 +134,11 @@ class Doren: eva.eunis_old = eva.eunis_old.str.replace(',', '-') eva.eunis_new = eva.eunis_new.str.replace(',', '-') - # Assign final EUNIS code using EUNIS_new where possible else EUNIS_old - use_old_indx = eva.loc[(eva.eunis_new.isna()) | (eva.eunis_new == '?') | (eva.eunis_new == 'I')].index - use_new_indx = eva.index.difference(use_old_indx) - eva.loc[use_new_indx, 'eunis_code'] = eva.loc[use_new_indx, 'eunis_new'] - eva.loc[use_old_indx, 'eunis_code'] = eva.loc[use_old_indx, 'eunis_old'] - eva.loc[use_new_indx, 'eunis_src'] = 'eunis_new' - eva.loc[use_old_indx, 'eunis_src'] = 'eunis_old' - eva.eunis_code.fillna('?', inplace=True) # Fill NAs where EUNIS_Old was also NA - # Attach as attribute self.eva = gp.GeoDataFrame(eva, geometry='plot_coordinates_3035', crs={"init": "epsg:3035"}) del eva self.update_status() - - ''' Note: Integer kolommen kunnen geen NAs bevatten. Dus procedure zou moeten zijn: 1. inlezen @@ -157,6 +146,20 @@ class Doren: 3. kolommen parsen naar gewenste datatype ''' + def merge_eunis(self): + """ + combine old and new EUNIS data to a final EUNIS class + :return: + """ + + # Assign final EUNIS code using EUNIS_new where possible else EUNIS_old + use_old_indx = self.eva.loc[(self.eva.eunis_new.isna()) | (self.eva.eunis_new == '?') | (self.eva.eunis_new == 'I')].index + use_new_indx = self.eva.index.difference(use_old_indx) + self.eva.loc[use_new_indx, 'eunis_code'] = self.eva.loc[use_new_indx, 'eunis_new'] + self.eva.loc[use_old_indx, 'eunis_code'] = self.eva.loc[use_old_indx, 'eunis_old'] + self.eva.loc[use_new_indx, 'eunis_src'] = 'eunis_new' + self.eva.loc[use_old_indx, 'eunis_src'] = 'eunis_old' + self.eva.eunis_code.fillna('?', inplace=True) # Fill NAs where EUNIS_Old was also NA def get_requested_species(self, xls, sheet, col, skip, simplify_names=False): """ @@ -785,7 +788,7 @@ class Doren: plot_ids = df[col] sel_plot_ids = set(plot_ids).intersection(self.eva.index) - self.eva.loc[sel_plot_ids, 'EUNIS_New'] = target_eunis + self.eva.loc[sel_plot_ids, 'eunis_new'] = target_eunis msg = 'Manual overwrite EUNIS type for {0} plots to {1} based on {2}\n' \ .format(len(sel_plot_ids), target_eunis, source_file) self.report += msg