Differences between revisions 18 and 22 (spanning 4 versions)
Revision 18 as of 2010-11-22 11:36:35
Size: 4473
Editor: anonymous
Comment:
Revision 22 as of 2010-11-22 12:55:36
Size: 4823
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
 * Interaction with other (non-Python) tools, e.g. [[http://www.soest.hawaii.edu/GMT/|The Generic Mapping Tools]].  * Interaction with other (non-Python) tools, e.g. [[http://www.soest.hawaii.edu/GMT/|The Generic Mapping Tools]], Google Earth
Line 63: Line 64:
m.plot(x,y,'r.') m.plot([x],[y],'r.')
Line 71: Line 72:
module load python module load Python
Line 149: Line 150:

= Exercise =

Add to the above Basemap the air temperature from NCEP reanalyis as isolines:

{{{#!python
fid=io.netcdf_file('air.mon.mean.nc','r')
lat=array(fid.variables['lat'])
lon=array(fid.variables['lon'])
air=array(fid.variables['air'])
LON,LAT=meshgrid(lon,lat)
x,y=m(LON,LAT)
m.contour(x,y,air[753,:,:])
}}}

Visualisation

Python does not rely on one standard library for plotting and visualization, you have the choice to from several alternatives:

2 D Plots with Pylab

density.png

   1 from pylab import *
   2 # The seawater module is installed only for Python2.6.2:
   3 # module load Python/2.6.2 
   4 import seawater
   5 
   6 S=linspace(0,35)
   7 T=linspace(-2,35.0)
   8 
   9 rho=zeros((S.size,T.size))
  10 
  11 for i,t in enumerate(T):
  12     rho[i,:]=seawater.dens(S,t)
  13 
  14 figure()
  15 CS = contour(S,T,rho,15,colors='k')
  16 clabel(CS, fontsize=8, inline=1)
  17 ylabel('Temperature [$^\circ$C]')
  18 xlabel('Salinity')
  19 title('Sea water density  [kg/m$^3$]')
  20 show()
  21 savefig('density.png',dpi=75)

Basemap

The matplotlib basemap toolkit is a library for plotting 2D data on maps in Python.

Map1.png

   1 from pylab import *
   2 from mpl_toolkits.basemap import Basemap
   3 
   4 m = Basemap(projection='ortho',lon_0=10.0,lat_0=45.0,resolution='l')
   5 m.bluemarble()
   6 
   7 lon,lat=10.0,53.5 # Hamburg
   8 
   9 x,y=m(lon,lat)
  10 m.plot([x],[y],'r.')
  11     
  12 show()
  13 savefig('Map1.png',dpi=75)

Don't forget to set the correct path for using Basemap on ZMAW systems

module load Python

GMT

map.png

GMT is an open source collection of ~60 tools for manipulating geographic and Cartesian data sets (including filtering, trend fitting, gridding, projecting, etc.) and producing publication quality scientific plots.

In particular useful are the gridding routines which can be used for irregular sampled oceanographic as well as for satellite data.

GMT can be easily applied together with Python using the os module.

   1 import os
   2 os.system('pscoast -R4/12/52/57 -JM6i -P -B1g1 -Ggray -Df > map.ps')
   3 os.system('gv map.ps')

Google Earth

600px-Google_earth_chlorophyll.png

Documentation:

http://code.google.com/apis/kml/documentation/

Chlorophyll data:

http://oceancolor.gsfc.nasa.gov/cgi/climatologies.pl

Download png and make black transparent

convert -transparent black A20020012007273.L3m_CU_CHLO_4.png A20020012007273.L3m_CU_CHLO_4_trans.png

Create .kml file

<?xml version="1.0"?>
<kml xmlns="http://earth.google.com/kml/2.1"><Document><name>Chlorophyll Climatology</name>
  <Folder>
<Snippet maxLines="0"/>
<name>MODIS</name>
<ScreenOverlay>
  <name>UHH Logo</name>
  <color>ffffffff</color>
  <visibility>1</visibility>
  <Icon>
    <href>http://www.ifm.uni-hamburg.de/logo_uhh_neu.gif</href>
  </Icon>
      <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
      <screenXY x="5" y="5" xunits="pixels" yunits="insetPixels"/>
      <size x="90" y="90" xunits="pixel" yunits="pixel"/>
</ScreenOverlay>
<LookAt>
        <longitude>8</longitude>
        <latitude>53</latitude>
         <altitude>2000000</altitude>       
  <heading>0</heading>          
</LookAt>
<Folder> <Snippet maxLines="0"/>
<name>Chlorophyll</name><GroundOverlay> <name>2002-2007</name>
<visibility>1</visibility><color>ffffffff</color>
<Icon><href>A20020012007273.L3m_CU_CHLO_4_trans.png</href></Icon>
<LatLonBox><north>90</north><south>-90</south><east>180</east><west>-180</west></LatLonBox>
</GroundOverlay></Folder></Folder></Document></kml>

Grads

http://opengrads.org/wiki/index.php?title=PyGrADS_Interactive_Shell

Exercise

Add to the above Basemap the air temperature from NCEP reanalyis as isolines:

   1 fid=io.netcdf_file('air.mon.mean.nc','r')
   2 lat=array(fid.variables['lat'])
   3 lon=array(fid.variables['lon'])
   4 air=array(fid.variables['air'])
   5 LON,LAT=meshgrid(lon,lat)
   6 x,y=m(LON,LAT)
   7 m.contour(x,y,air[753,:,:])

LehreWiki: OpenSource2010/Lesson6 (last edited 2010-11-22 12:55:36 by anonymous)