📆 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, timedeltaA. 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)
dfC. 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