📆 Project Period | May, 2022 |
📍 GitHub | gitlab.esa.int |
AI4EO to monitor air quality(NO2)-omi-linking
import numpy as np
import netCDF4
import h5py
import os
import pandas as pd
import glob
from scipy.io import netcdf
from datetime import datetime, timedelta
A. Extract NO2 from OMI-L3
A.1 Explore content of files with h5py
A.2 Creating pandas dataframe with date, longitutes, latitude, no2 column data and grid ID
cols = df.columns.values
order = [4,0,2,1,3]
df2 = df[cols[order]].sort_values(['ID', 'date'], ignore_index=True)
df2.to_csv('/home/jovyan/eodata/AI4EO to monitor air quality NO2/timeSeries_NO2_OMI.csv', index=False)
df2
#print missing dates
all_data = pd.read_csv('/home/jovyan/eodata/AI4EO to monitor air quality NO2/timeSeries_NO2_OMI.csv')
missings = pd.date_range(start = '2004-10-01', end = '2020-12-31').difference(pd.unique(all_data['date']))
missings
pd.date_range(start = '2004-10-01', end = '2020-12-31').difference(pd.unique(df2['date']))
for y in range(2004,2020):
df2[df2["date"].dt.year==datetime(y,1,1).year].to_csv("/home/jovyan/eodata/AI4EO to monitor air quality NO2/OMI-yearly\\OMI-"+str(y)+".csv", index=False)
B. Link UK grid to OMI grid
B.1 Load UK grid
uk_grids = pd.read_csv('/home/jovyan/eodata/AI4EO to monitor air quality NO2/UK_grids_noGeo_centroid.csv').drop(['.geo','system:index'], axis=1)
uk_grids = uk_grids.add_prefix('uk_')
uk_grids
B.2 Compute OMI grid values
OMI_grids.to_csv('/home/jovyan/eodata/AI4EO to monitor air quality NO2/OMI_grids_noGeo_centroid.csv', index=False)
B.3 Link UK grid to OMI grid
for row in uk_grids.head().iterrows():
#print(row[1])
print(row[1]['uk_centroidLat'])
print(row[1]['uk_centroidLon'])
OMI_grids.head()
53.520869128059545
-0.0012246022636999
53.520616071300296
0.0138497457511531
53.52036111946441
0.0289239196618866
53.52010431396655
0.0439978709429132
53.51984553097928
0.0590715504716754
df.to_csv('/home/jovyan/eodata/AI4EO to monitor air quality NO2/link_OMI_UK.csv', index=False)
df
C. Retrieve NO2 time series data for a particular UK grid.
uk_gridIds = df.uk_gridId.unique()
id = uk_gridIds[0]
print('UK grid id:', id)
# Get id of correspondent CAMS grid
cams_gridId = df[df.uk_gridId == id]['OMI_ID'].values[0]
print('Correspondent CAMS grid id:', cams_gridId)
tseries = df2[df2.ID == ID].reset_index()
tseries
UK grid id: TA3204
Correspondent CAMS grid id: 1699