Skip to content

Instantly share code, notes, and snippets.

@rutj3
Created July 10, 2018 07:03
Show Gist options
  • Save rutj3/9c7d037b133e76a21c0765c292b9e34f to your computer and use it in GitHub Desktop.
Save rutj3/9c7d037b133e76a21c0765c292b9e34f to your computer and use it in GitHub Desktop.
SatPy Resample angles
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from satpy import Scene\n",
"from satpy import find_files_and_readers\n",
"from pyresample.geometry import AreaDefinition\n",
"import numpy as np\n",
"\n",
"from datetime import datetime, timedelta\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# from satpy.utils import debug_on; debug_on()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Settings"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"base_dir = r'D:/Data/Sentinel/Sentinel3/OLCI'\n",
" \n",
"start_time = datetime(2018, 7, 2, 0, 0)\n",
"end_time = start_time + timedelta(days=1)\n",
"\n",
"area = AreaDefinition('NL', 'NL', 'NL', dict(init='EPSG:28992'), 2000, 2000, [-100000, 200000, 500000, 800000])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Search files"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"48"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"files = find_files_and_readers(sensor=\"olci\",\n",
" start_time=start_time,\n",
" end_time=end_time,\n",
" base_dir=base_dir,\n",
" reader='nc_olci_l1b')\n",
"\n",
"len(files['nc_olci_l1b'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load bands"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Oa01', 'Oa02', 'Oa03', 'Oa04', 'Oa05', 'Oa06', 'Oa07', 'Oa08', 'Oa09', 'Oa10', 'Oa11', 'Oa12', 'Oa13', 'Oa14', 'Oa15', 'Oa16', 'Oa17', 'Oa18', 'Oa19', 'Oa20', 'Oa21', 'latitude', 'longitude', 'satellite_azimuth_angle', 'satellite_zenith_angle', 'solar_azimuth_angle', 'solar_zenith_angle']\n"
]
}
],
"source": [
"bands = ['Oa%02i' % i for i in range(1,22)]\n",
"meta_bands = ['latitude', 'longitude', 'satellite_azimuth_angle', 'satellite_zenith_angle', 'solar_azimuth_angle', 'solar_zenith_angle']\n",
"\n",
"print(bands + meta_bands)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"scn = Scene(filenames=files, reader='nc_olci_l1b')\n",
"\n",
"# only load the sensor bands, works fine\n",
"scn.load(bands, calibration='radiance')\n",
"scn.load(meta_bands)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Oa01', 'Oa02', 'Oa03', 'Oa04', 'Oa05', 'Oa06', 'Oa07', 'Oa08', 'Oa09', 'Oa10', 'Oa11', 'Oa12', 'Oa13', 'Oa14', 'Oa15', 'Oa16', 'Oa17', 'Oa18', 'Oa19', 'Oa20', 'Oa21', 'latitude', 'longitude', 'satellite_azimuth_angle', 'satellite_zenith_angle', 'solar_azimuth_angle', 'solar_zenith_angle']\n"
]
}
],
"source": [
"print(scn.available_dataset_names())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[DatasetID(name='Oa01', wavelength=(0.3925, 0.4, 0.4075), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa02', wavelength=(0.4075, 0.4125, 0.4175), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa03', wavelength=(0.4375, 0.4425, 0.4475), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa04', wavelength=(0.485, 0.49, 0.495), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa05', wavelength=(0.505, 0.51, 0.515), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa06', wavelength=(0.555, 0.56, 0.565), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa07', wavelength=(0.615, 0.62, 0.625), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa08', wavelength=(0.66, 0.665, 0.67), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa09', wavelength=(0.67, 0.67375, 0.6775), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa10', wavelength=(0.6775, 0.68125, 0.685), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa11', wavelength=(0.70375, 0.70875, 0.71375), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa12', wavelength=(0.75, 0.75375, 0.7575), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa13', wavelength=(0.76, 0.76125, 0.7625), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa14', wavelength=(0.760625, 0.764375, 0.768125), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa15', wavelength=(0.76625, 0.7675, 0.76875), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa16', wavelength=(0.77125, 0.77875, 0.78625), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa17', wavelength=(0.855, 0.865, 0.875), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa18', wavelength=(0.88, 0.885, 0.89), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa19', wavelength=(0.895, 0.9, 0.905), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa20', wavelength=(0.93, 0.94, 0.95), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='Oa21', wavelength=(1.0, 1.02, 1.04), resolution=300, polarization=None, calibration='radiance', level=None, modifiers=()),\n",
" DatasetID(name='latitude', wavelength=None, resolution=300, polarization=None, calibration=None, level=None, modifiers=()),\n",
" DatasetID(name='longitude', wavelength=None, resolution=300, polarization=None, calibration=None, level=None, modifiers=()),\n",
" DatasetID(name='satellite_azimuth_angle', wavelength=None, resolution=300, polarization=None, calibration=None, level=None, modifiers=()),\n",
" DatasetID(name='satellite_zenith_angle', wavelength=None, resolution=300, polarization=None, calibration=None, level=None, modifiers=()),\n",
" DatasetID(name='solar_azimuth_angle', wavelength=None, resolution=300, polarization=None, calibration=None, level=None, modifiers=()),\n",
" DatasetID(name='solar_zenith_angle', wavelength=None, resolution=300, polarization=None, calibration=None, level=None, modifiers=())]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scn.datasets.keys()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Resample"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"scn_warped = scn.resample(destination=area, resampler='nearest') # no bilinear avail"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Write geotiff"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Miniconda3\\envs\\satpytest\\lib\\site-packages\\rasterio\\__init__.py:193: UserWarning: Dataset has no geotransform set. Default transform will be applied (Affine.identity())\n",
" s.start()\n",
"Rasterio 1.0+ required for setting colorinterp\n",
"Rasterio 1.0+ required for setting colorinterp\n",
"Rasterio 1.0+ required for setting colorinterp\n",
"Rasterio 1.0+ required for setting colorinterp\n"
]
}
],
"source": [
"for band in bands + meta_bands:\n",
"\n",
" filename = os.path.join(r'D:\\Algemeen\\Sentinel3_wv_aero\\NL_20180702', '{}_{}.tif'.format(band, start_time.strftime(\"%Y%m%d\")))\n",
" \n",
" if os.path.exists(filename):\n",
" continue\n",
" \n",
" scn_warped.save_dataset(band, filename=filename, writer='GeoTIFF', dtype=np.float32, enhancement_config=False)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment