Skip to content

Instantly share code, notes, and snippets.

@sfinkens
Created March 29, 2019 15:55
Show Gist options
  • Save sfinkens/67c0646d27f2bf3068224067bee8f81a to your computer and use it in GitHub Desktop.
Save sfinkens/67c0646d27f2bf3068224067bee8f81a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Geo-Referencing offset in L1.5 SEVIRI Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Until December 2017, SEVIRI L1.5 data is shifted by 1.5km SSP North and West against the nominal GEOS projection. Since\n",
"December 2017 this offset has been corrected. A flag in the data indicates if the correction has been applied. If no correction was applied, the satpy readers adjust the area extent to match the shifted data.\n",
"\n",
"The purpose of this document is to illustrate how we derived the offset correction using a very simple example. "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import pyresample.geometry\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Define area extent (image is upright in this example to prevent confusion)\n",
"llx, lly, urx, ury = (-5E6, -5E6, 5E6, 5E6)\n",
"\n",
"# Define grid\n",
"grid = pyresample.geometry.AreaDefinition(\n",
" area_id='some_area_name',\n",
" description='On-the-fly area',\n",
" proj_id='geosmsg',\n",
" projection={'a': '6378169.0', \n",
" 'b': '6356583.800000001', \n",
" 'h': '35785831.0', \n",
" 'lon_0': '0.0', \n",
" 'proj': 'geos', \n",
" 'units': 'm'},\n",
" width=2, height=2,\n",
" area_extent=(llx, lly, urx, ury)\n",
")\n",
"crs = grid.to_cartopy_crs()\n",
"\n",
"# Define simple test image\n",
"data = np.array(([1,2], \n",
" [3,4]))\n",
"\n",
"# Plot data on a map\n",
"ax = plt.subplot(111, projection=crs)\n",
"ax.coastlines()\n",
"im = ax.imshow(data, transform=crs, extent=crs.bounds, \n",
" origin='upper', vmin=1, vmax=4)\n",
"plt.colorbar(im)\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we emulate a geo-referencing offset of 1 pixel in N-W direction. The yellow pixel which was originally measured over southern Africa has moved to the northern Atlantic. The other pixels have moved to space and are therefore masked."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"data_shift = np.ma.masked_invalid([[4, np.nan], \n",
" [np.nan, np.nan]])\n",
"\n",
"ax = plt.subplot(111, projection=crs)\n",
"ax.coastlines()\n",
"im = ax.imshow(data_shift, transform=crs, extent=crs.bounds, \n",
" origin='upper', vmin=1, vmax=4)\n",
"plt.colorbar(im)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we adjust the area definition to match the shifted data. Note that we have to shift the corners in the *opposite* direction, i.e. to S-E! Think of it as if the coastlines in the image above were fixed and you dragged the image to S-E until data and coastlines are aligned correctly. "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"shift = 5E6 # One pixel\n",
"\n",
"# Shift grid in S-E direction. Positive x/y is East/North, respectively.\n",
"grid_shift = pyresample.geometry.AreaDefinition(\n",
" area_id='some_area_name',\n",
" description='On-the-fly area',\n",
" proj_id='geosmsg',\n",
" projection={'a': '6378169.0', \n",
" 'b': '6356583.800000001', \n",
" 'h': '35785831.0', \n",
" 'lon_0': '0.0', \n",
" 'proj': 'geos', \n",
" 'units': 'm'},\n",
" width=2, height=2,\n",
" area_extent=(llx+shift, lly-shift, urx+shift, ury-shift)\n",
")\n",
"crs_shift = grid_shift.to_cartopy_crs()\n",
"\n",
"# Plot data on a map\n",
"ax = plt.subplot(111, projection=crs_shift)\n",
"ax.coastlines()\n",
"im = ax.imshow(data_shift, transform=crs_shift, extent=crs_shift.bounds, \n",
" origin='upper', vmin=1, vmax=4)\n",
"plt.colorbar(im)\n",
"plt.show()\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.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment