4 changed files with 157 additions and 329 deletions
@ -0,0 +1,157 @@ |
|||||||
|
{ |
||||||
|
"cells": [ |
||||||
|
{ |
||||||
|
"cell_type": "code", |
||||||
|
"execution_count": null, |
||||||
|
"metadata": {}, |
||||||
|
"outputs": [], |
||||||
|
"source": [ |
||||||
|
"# First: read the geotiff image with GDAL.\n", |
||||||
|
"from osgeo import gdal, osr\n", |
||||||
|
"\n", |
||||||
|
"gdal.UseExceptions()\n", |
||||||
|
"\n", |
||||||
|
"\n", |
||||||
|
"fname = '/notebooks/resources/T22KHG_20190425T132241_TCI_smaller.tif'\n", |
||||||
|
"\n", |
||||||
|
"ds = gdal.Open(fname)\n", |
||||||
|
"data = ds.ReadAsArray()\n", |
||||||
|
"gt = ds.GetGeoTransform()\n", |
||||||
|
"proj = ds.GetProjection()\n", |
||||||
|
"\n", |
||||||
|
"inproj = osr.SpatialReference()\n", |
||||||
|
"inproj.ImportFromWkt(proj)\n", |
||||||
|
"\n", |
||||||
|
"print('\\n\\n## ds ##:\\n\\n' + str(ds))\n", |
||||||
|
"print('\\n\\n## data ##:\\n\\n' + str(data))\n", |
||||||
|
"print('\\n\\n## gt ##:\\n\\n' + str(gt))\n", |
||||||
|
"print('\\n\\n## proj ##:\\n\\n' + str(proj))\n", |
||||||
|
"print('\\n\\n## inproj ##:\\n\\n' + str(inproj))" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cell_type": "code", |
||||||
|
"execution_count": null, |
||||||
|
"metadata": { |
||||||
|
"scrolled": false |
||||||
|
}, |
||||||
|
"outputs": [], |
||||||
|
"source": [ |
||||||
|
"# Second: convert the WKT projection information to a cartopy projection.\n", |
||||||
|
"import cartopy.crs as ccrs\n", |
||||||
|
"\n", |
||||||
|
"projcs = inproj.GetAuthorityCode('PROJCS')\n", |
||||||
|
"print('\\n\\n## projcs ##:\\n\\n' + str(projcs))\n", |
||||||
|
"\n", |
||||||
|
"projection = ccrs.epsg(projcs)\n", |
||||||
|
"print('\\n\\n## projection ##:\\n\\n' + str(projection))" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cell_type": "code", |
||||||
|
"execution_count": null, |
||||||
|
"metadata": {}, |
||||||
|
"outputs": [], |
||||||
|
"source": [ |
||||||
|
"# Third (and last): the figure.\n", |
||||||
|
"import matplotlib.pyplot as plt\n", |
||||||
|
"%matplotlib inline\n", |
||||||
|
"\n", |
||||||
|
"subplot_kw = dict(projection=projection)\n", |
||||||
|
"fig, ax = plt.subplots(figsize=(9, 9), subplot_kw=subplot_kw)\n", |
||||||
|
"\n", |
||||||
|
"extent = (gt[0], gt[0] + ds.RasterXSize * gt[1],\n", |
||||||
|
" gt[3] + ds.RasterYSize * gt[5], gt[3])\n", |
||||||
|
"\n", |
||||||
|
"img = ax.imshow(data[:3, :, :].transpose((1, 2, 0)), extent=extent, origin='upper')" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cell_type": "code", |
||||||
|
"execution_count": null, |
||||||
|
"metadata": {}, |
||||||
|
"outputs": [], |
||||||
|
"source": [ |
||||||
|
"import inspect\n", |
||||||
|
"\n", |
||||||
|
"for i in inspect.getmembers(ds):\n", |
||||||
|
" # Ignores anything starting with underscore \n", |
||||||
|
" # (that is, private and protected attributes)\n", |
||||||
|
" if not i[0].startswith('_'):\n", |
||||||
|
" # Ignores methods\n", |
||||||
|
" if not inspect.ismethod(i[1]):\n", |
||||||
|
" print(i)\n", |
||||||
|
"print('\\n')\n", |
||||||
|
"# dir(ds)" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"cell_type": "code", |
||||||
|
"execution_count": null, |
||||||
|
"metadata": {}, |
||||||
|
"outputs": [], |
||||||
|
"source": [ |
||||||
|
"# # First: read the geotiff image with GDAL.\n", |
||||||
|
"# from osgeo import gdal, osr\n", |
||||||
|
"\n", |
||||||
|
"# gdal.UseExceptions()\n", |
||||||
|
"\n", |
||||||
|
"\n", |
||||||
|
"# fname = 'T22KHG_20190425T132241_TCI_smaller.tif'\n", |
||||||
|
"\n", |
||||||
|
"# ds = gdal.Open(fname)\n", |
||||||
|
"# data = ds.ReadAsArray()\n", |
||||||
|
"# gt = ds.GetGeoTransform()\n", |
||||||
|
"# proj = ds.GetProjection()\n", |
||||||
|
"\n", |
||||||
|
"# inproj = osr.SpatialReference()\n", |
||||||
|
"# inproj.ImportFromWkt(proj)\n", |
||||||
|
"\n", |
||||||
|
"# print(inproj)\n", |
||||||
|
"\n", |
||||||
|
"# # Second: convert the WKT projection information to a cartopy projection.\n", |
||||||
|
"# import cartopy.crs as ccrs\n", |
||||||
|
"\n", |
||||||
|
"\n", |
||||||
|
"\n", |
||||||
|
"# projcs = inproj.GetAuthorityCode('PROJCS')\n", |
||||||
|
"# print(projcs)\n", |
||||||
|
"# projection = ccrs.epsg(projcs)\n", |
||||||
|
"# print(projection)\n", |
||||||
|
"\n", |
||||||
|
"# # Third (and last): the figure.\n", |
||||||
|
"# import matplotlib.pyplot as plt\n", |
||||||
|
"# %matplotlib inline\n", |
||||||
|
"\n", |
||||||
|
"# subplot_kw = dict(projection=projection)\n", |
||||||
|
"# fig, ax = plt.subplots(figsize=(9, 9), subplot_kw=subplot_kw)\n", |
||||||
|
"\n", |
||||||
|
"# extent = (gt[0], gt[0] + ds.RasterXSize * gt[1],\n", |
||||||
|
"# gt[3] + ds.RasterYSize * gt[5], gt[3])\n", |
||||||
|
"\n", |
||||||
|
"# img = ax.imshow(data[:3, :, :].transpose((1, 2, 0)), extent=extent, origin='upper')" |
||||||
|
] |
||||||
|
} |
||||||
|
], |
||||||
|
"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.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"nbformat": 4, |
||||||
|
"nbformat_minor": 2 |
||||||
|
} |
||||||
File diff suppressed because one or more lines are too long
@ -1,124 +0,0 @@ |
|||||||
{ |
|
||||||
"cells": [ |
|
||||||
{ |
|
||||||
"cell_type": "code", |
|
||||||
"execution_count": 1, |
|
||||||
"metadata": {}, |
|
||||||
"outputs": [ |
|
||||||
{ |
|
||||||
"ename": "AttributeError", |
|
||||||
"evalue": "'NoneType' object has no attribute 'RasterXSize'", |
|
||||||
"output_type": "error", |
|
||||||
"traceback": [ |
|
||||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
|
||||||
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", |
|
||||||
"\u001b[0;32m<ipython-input-1-fe2196e9e159>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;31m#Get the dimentions of column and row\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0mnc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRasterXSize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0mnr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRasterYSize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", |
|
||||||
"\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'RasterXSize'" |
|
||||||
] |
|
||||||
} |
|
||||||
], |
|
||||||
"source": [ |
|
||||||
"# pip install --user https://github.com/matplotlib/basemap/archive/master.zip\n", |
|
||||||
"\n", |
|
||||||
"import os\n", |
|
||||||
"from mpl_toolkits.basemap import Basemap\n", |
|
||||||
"import matplotlib.pyplot as plt\n", |
|
||||||
"from osgeo import gdal\n", |
|
||||||
"from osgeo import osr\n", |
|
||||||
"import numpy as np\n", |
|
||||||
"import math\n", |
|
||||||
"\n", |
|
||||||
"#Plot setup\n", |
|
||||||
"fig= plt.figure(figsize=(10,8))\n", |
|
||||||
"\n", |
|
||||||
"ax = plt.subplot(111,aspect = 'equal')\n", |
|
||||||
"plt.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, wspace=0, hspace=0)\n", |
|
||||||
"\n", |
|
||||||
"#Map setup\n", |
|
||||||
"map = Basemap(resolution='f', projection='cyl', llcrnrlon=-75, llcrnrlat=-5, urcrnrlon=-46, urcrnrlat=0)\n", |
|
||||||
"\n", |
|
||||||
"parallels = np.arange(-50,50,1.)\n", |
|
||||||
"meridians = np.arange(0,360,1)\n", |
|
||||||
"\n", |
|
||||||
"map.drawparallels(parallels,labels=[1,0,0,0],color='w', fontsize=10, fontweight='bold')\n", |
|
||||||
"meri = map.drawmeridians(meridians,labels=[0,0,0,1],color='w', fontsize=10, fontweight='bold')\n", |
|
||||||
"\n", |
|
||||||
"#Load colormap and setup elevation contour levels\n", |
|
||||||
"cmap=plt.get_cmap(\"jet\")\n", |
|
||||||
"clevs = np.linspace(0, 305, 21)\n", |
|
||||||
"\n", |
|
||||||
"# Load GeoTiff data\n", |
|
||||||
"raster = 'geo_dem_v2_52-50.tif'\n", |
|
||||||
"\n", |
|
||||||
"ds = gdal.Open(raster)\n", |
|
||||||
"\n", |
|
||||||
"#Get the dimentions of column and row\n", |
|
||||||
"nc = ds.RasterXSize\n", |
|
||||||
"nr = ds.RasterYSize\n", |
|
||||||
"\n", |
|
||||||
"#Read elevation data\n", |
|
||||||
"data = ds.ReadAsArray()\n", |
|
||||||
"\n", |
|
||||||
"#Get Longitude and Latitude info\n", |
|
||||||
"geotransform = ds.GetGeoTransform()\n", |
|
||||||
"xOrigin = geotransform[0]\n", |
|
||||||
"yOrigin = geotransform[3]\n", |
|
||||||
"pixelWidth = geotransform[1]\n", |
|
||||||
"pixelHeight = geotransform[5]\n", |
|
||||||
"\n", |
|
||||||
"#Generate Longitude and Latitude array\n", |
|
||||||
"lons = xOrigin + np.arange(0, nc)*pixelWidth\n", |
|
||||||
"lats = yOrigin + np.arange(0, nr)*pixelHeight\n", |
|
||||||
"\n", |
|
||||||
"#Contour plot\n", |
|
||||||
"x, y = map(*np.meshgrid(lons, lats))\n", |
|
||||||
"cs=map.contourf(x, y, data, clevs, cmap=cmap)\n", |
|
||||||
"\n", |
|
||||||
"map.drawparallels(parallels,labels=[1,0,0,0],color='k', fontsize=10, fontweight='bold')\n", |
|
||||||
"meri = map.drawmeridians(meridians,labels=[0,0,0,1],color='k', fontsize=10, fontweight='bold')\n", |
|
||||||
"\n", |
|
||||||
"cb = map.colorbar(cs, 'bottom', size='5%', pad='10%')\n", |
|
||||||
"\n", |
|
||||||
"cb.set_label('Elevation (m)', fontsize=12, fontweight='bold')\n", |
|
||||||
"cb.ax.tick_params(labelsize=10)\n", |
|
||||||
"\n", |
|
||||||
"plt.show()" |
|
||||||
] |
|
||||||
}, |
|
||||||
{ |
|
||||||
"cell_type": "code", |
|
||||||
"execution_count": null, |
|
||||||
"metadata": {}, |
|
||||||
"outputs": [], |
|
||||||
"source": [] |
|
||||||
}, |
|
||||||
{ |
|
||||||
"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.2" |
|
||||||
} |
|
||||||
}, |
|
||||||
"nbformat": 4, |
|
||||||
"nbformat_minor": 2 |
|
||||||
} |
|
||||||
Loading…
Reference in new issue