You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
| 2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
| 2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
| 2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
| 2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
| 2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
| 2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
| 2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
| 2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
| 2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
| 2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
| 2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
| 2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
| 2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(9) |
2
(11) |
3
(2) |
|
4
|
5
(6) |
6
(1) |
7
(6) |
8
(7) |
9
(16) |
10
(6) |
|
11
(2) |
12
(13) |
13
(3) |
14
(6) |
15
(6) |
16
(19) |
17
(2) |
|
18
(1) |
19
(1) |
20
(11) |
21
(5) |
22
(4) |
23
(7) |
24
(14) |
|
25
(15) |
26
(27) |
27
(26) |
28
(7) |
29
(2) |
30
(7) |
|
|
From: Darren D. <dar...@co...> - 2007-11-02 20:28:11
|
On Thursday 25 October 2007 03:17:05 pm David D Clark wrote: > Hello folks, > > I have a Gaussian peak centered on zero. When the plot is drawn on > screen with the GTKAgg backend, the peak is shown in the correct place. > When I either click on the disk icon and save the plot as eps or use > savefig, the peak is shifted to the left of zero by several x axis units. > > I am using Python 2.5 with matplotlib 0.90.1 and numpy 1.0.3. and scipy > 0.5.1 in my script. These are running on my Fedora 7 box. I compiled > and installed mpl 0.90.1 this morning because I noticed this behavior > with python-matplotlib-0.90.0 that I had installed with yum. I also see > this behavior if I run my script from the command line and from ipython > 0.8.1. > > When I save using PNG, the peak is in the correct place. My Mac also > saves both EPS and PNG correctly. > > Any thoughts? Maybe you could post a small example that demonstrates the problem. I dont see any reason why eps output should be different depending on your OS, unless it is a problem with your viewer, or you are distilling your postscript output and it is a problem with ghostscript. Darren |
|
From: Michael H. <mh...@us...> - 2007-11-02 19:55:10
|
Jeff - My data set is actually dynamically generated by a program called ShakeMap. It's a 2D grid, with an extent usually about 600 kilometers on a side, centered wherever the earthquake happened to be. The ShakeMap program does not know or care that some of the data may be under water, but for display purposed, I do! The grid is also in a geographic projection (latitude/longitude coordinates assumed to be cartesian). So in this test instance (on a data set near Taiwan), my map width is about 5.91 degrees longitude, and my height is about 5.5 degrees latitude. If I set xoffset=-0.01*5.91, I get -0.05. This is not noticeably different than the default. Is the problem that my dataset is not projected? --Mike On Nov 2, 2007, at 1:33 PM, Jeff Whitaker wrote: > Michael Hearne wrote: >> Jeff - I looked at that example file, and I think there's a big >> difference - your etopo base data set is global, and you can plot >> over the data in the oceans by setting the mask on all pixels less >> than zero. >> >> My dataset (a map of earthquake shaking) is not global, and >> actually has NO missing data. I think I need a way to "clip" the >> data by the land mask - that is, find all of the pixels that are >> NOT on land, and then mask them off. > Mike: > > If it's not global, is it just defined for land points? If so, it > can't be a 2-D grid, so you won't be able to plot it with imshow > anyway. Can you explain the structure of the data? >> >> Is there an easy way to do this with matplotlib/basemap tools? > Not really. You'll have to define a sea mask for your grid and use > that the create a masked array. There is a land-sea mask dataset > included in basemap, but it may not match the resolution of your grid. > >> >> Regarding my other issue - I used my script to test x/y offset >> values: [0.05,0.1,0.5,1.0,10] and couldn't see any difference. >> I'd be more than happy to provide test output, or debugging >> information... >> >> Just to be clear - these offsets are supposed to move the meridian >> and/or parallel labels around with respect to the map edge? My >> actual goal is to get the labels inside the edge of the map (I >> tried negative numbers to accomplish this, to no effect.) > You need to define an offset as a fraction of the map width - the > numbers you are giving are too small to notice any difference. As > I said before, try something like -0.01*(m.max-m.min). >> >> On a positive note, I _can_ make solid lines! > > Good! > > -Jeff > > -- > Jeffrey S. Whitaker Phone : (303)497-6313 > Meteorologist FAX : (303)497-6449 > NOAA/OAR/PSD R/PSD1 Email : Jef...@no... > 325 Broadway Office : Skaggs Research Cntr 1D-124 > Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg ------------------------------------------------------ Michael Hearne mh...@us... (303) 273-8620 USGS National Earthquake Information Center 1711 Illinois St. Golden CO 80401 Senior Software Engineer Synergetics, Inc. ------------------------------------------------------ |
|
From: Pierre GM <pgm...@gm...> - 2007-11-02 19:41:52
|
On Friday 02 November 2007 15:10:15 Michael Hearne wrote: > Is there an easy way to do this with matplotlib/basemap tools? I'm afraid that not. Your problem is that you need to find for each cell of your gridded data whether you are on land or in an ocean, and mask the corresponding cell in the latter case. Such a manipulation of geometry is not available in matplotlib (yet, and will it ever be?). You could of course start writing your tests. However, that's exactly what OGR is designed to do, and the couple of functions I sent earlier can be quite helpful. Once again, OGR is part of the GDAL suite. |
|
From: Jeff W. <js...@fa...> - 2007-11-02 19:34:09
|
Michael Hearne wrote: > Jeff - I looked at that example file, and I think there's a big > difference - your etopo base data set is global, and you can plot over > the data in the oceans by setting the mask on all pixels less than zero. > > My dataset (a map of earthquake shaking) is not global, and actually > has NO missing data. I think I need a way to "clip" the data by the > land mask - that is, find all of the pixels that are NOT on land, and > then mask them off. Mike: If it's not global, is it just defined for land points? If so, it can't be a 2-D grid, so you won't be able to plot it with imshow anyway. Can you explain the structure of the data? > > Is there an easy way to do this with matplotlib/basemap tools? Not really. You'll have to define a sea mask for your grid and use that the create a masked array. There is a land-sea mask dataset included in basemap, but it may not match the resolution of your grid. > > Regarding my other issue - I used my script to test x/y offset values: > [0.05,0.1,0.5,1.0,10] and couldn't see any difference. I'd be more > than happy to provide test output, or debugging information... > > Just to be clear - these offsets are supposed to move the meridian > and/or parallel labels around with respect to the map edge? My actual > goal is to get the labels inside the edge of the map (I tried negative > numbers to accomplish this, to no effect.) You need to define an offset as a fraction of the map width - the numbers you are giving are too small to notice any difference. As I said before, try something like -0.01*(m.max-m.min). > > On a positive note, I _can_ make solid lines! Good! -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 Meteorologist FAX : (303)497-6449 NOAA/OAR/PSD R/PSD1 Email : Jef...@no... 325 Broadway Office : Skaggs Research Cntr 1D-124 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg |
|
From: Michael H. <mh...@us...> - 2007-11-02 19:10:24
|
Jeff - I looked at that example file, and I think there's a big difference - your etopo base data set is global, and you can plot over the data in the oceans by setting the mask on all pixels less than zero. My dataset (a map of earthquake shaking) is not global, and actually has NO missing data. I think I need a way to "clip" the data by the land mask - that is, find all of the pixels that are NOT on land, and then mask them off. Is there an easy way to do this with matplotlib/basemap tools? Regarding my other issue - I used my script to test x/y offset values: [0.05,0.1,0.5,1.0,10] and couldn't see any difference. I'd be more than happy to provide test output, or debugging information... Just to be clear - these offsets are supposed to move the meridian and/or parallel labels around with respect to the map edge? My actual goal is to get the labels inside the edge of the map (I tried negative numbers to accomplish this, to no effect.) On a positive note, I _can_ make solid lines! Thanks for all of your help, Mike On Nov 2, 2007, at 11:47 AM, Jeff Whitaker wrote: > Michael Hearne wrote: >> I have two questions: >> >> 1) The fillcontinents() method has a zorder keyword parameter. >> Is this supposed to work with imshow()? I have the latest tarball >> from the website, and I can't get my image to paint on top of the >> continents. >> >> 2) Has anyone figured out a way to make an _ocean_ mask? I need >> my map to look like this >> ( http://earthquake.usgs.gov/eqcenter/pager/us/2007itah/us/5/ >> shakemap.600.jpg) >> >> , where the image data (the yellow and orange bits) that extends >> out beyond the land boundary is masked by a blue ocean. >> >> Thanks, >> >> Mike > Mike: You can set the background color for the axes instance to > blue, and then draw the filled continents over it. > > You'll also have to make your image a masked array, and set the > missing values to be transparent. > > The basemap examples plotmap_masked.py shows how to do both of > these things. > > -Jeff > -- > Jeffrey S. Whitaker Phone : (303)497-6313 > Meteorologist FAX : (303)497-6449 > NOAA/OAR/PSD R/PSD1 Email : Jef...@no... > 325 Broadway Office : Skaggs Research Cntr 1D-124 > Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg ------------------------------------------------------ Michael Hearne mh...@us... (303) 273-8620 USGS National Earthquake Information Center 1711 Illinois St. Golden CO 80401 Senior Software Engineer Synergetics, Inc. ------------------------------------------------------ |
|
From: Jeff W. <js...@fa...> - 2007-11-02 18:56:10
|
Michael Hearne wrote: > Thanks for the reponses so far, but I lied. I have more questions :) > > 1) How do I get drawmeridians() and drawparallels() to draw solid > (i.e., not dashed) lines? setting linestyle='-' does not seem to work. Mike: From the docstring: "dashes - dash pattern for parallels (default [1,1], i.e. 1 pixel on, 1 pixel off)." So use dashes=[1,0] to get solid lines. > 2) What are appropriate values for the xoffset and yoffset keyword > parameters for the above functions? I've tried several values, even > altering them by a few orders of magnitude, and I can't see any > difference. "xoffset - label offset from edge of map in x-direction (default is 0.01 times width of map in map projection coordinates). yoffset - label offset from edge of map in y-direction (default is 0.01 times height of map in map projection coordinates)." So, the default is 0.01*(m.xmax-m.xmin). Making it 0.1*(m.xmax-m.xmin) makes the labels much farther out for me. -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 Meteorologist FAX : (303)497-6449 NOAA/OAR/PSD R/PSD1 Email : Jef...@no... 325 Broadway Office : Skaggs Research Cntr 1D-124 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg |
|
From: Jeff W. <js...@fa...> - 2007-11-02 17:48:00
|
Michael Hearne wrote: > I have two questions: > > 1) The fillcontinents() method has a zorder keyword parameter. Is > this supposed to work with imshow()? I have the latest tarball from > the website, and I can't get my image to paint on top of the continents. > > 2) Has anyone figured out a way to make an _ocean_ mask? I need my > map to look like this > > ( > http://earthquake.usgs.gov/eqcenter/pager/us/2007itah/us/5/shakemap.600.jpg) > > > , where the image data (the yellow and orange bits) that extends out > beyond the land boundary is masked by a blue ocean. > > Thanks, > > Mike Mike: You can set the background color for the axes instance to blue, and then draw the filled continents over it. You'll also have to make your image a masked array, and set the missing values to be transparent. The basemap examples plotmap_masked.py shows how to do both of these things. -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 Meteorologist FAX : (303)497-6449 NOAA/OAR/PSD R/PSD1 Email : Jef...@no... 325 Broadway Office : Skaggs Research Cntr 1D-124 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg |
|
From: Michael H. <mh...@us...> - 2007-11-02 16:21:12
|
Pierre - That's great. As soon as I get the zorder problem figured out (can't have land AND ocean masks on!) , I'll give your solution a try. One question regarding - I found this page: http://trac.osgeo.org/gdal/wiki/GdalOgrInPython but it wasn't immediately apparent how to _get_ it. Do I have to download/build ogr first, then install the python bindings? --Mike On Nov 2, 2007, at 10:06 AM, Pierre GM wrote: > On Friday 02 November 2007 11:51:55 Michael Hearne wrote: >> 2) Has anyone figured out a way to make an _ocean_ mask? I need my >> map to look like this > > Assuming that you have gdal installed, you can use this set of > functions. > Basically, you use OGR to compute the differences between the > background and > the land polygons... Works fine for my applications (I interpolate > some > rainfall fields over AL/GA/FL, and need to hide the interpolated > values in > the Gulf of Mexico), but might still be a tad buggy. Please don't > hesittate > to contact me if you need help with that. > > > > #####----------------------------------------------------------------- > --------- > #---- --- OGR conversion --- > #####----------------------------------------------------------------- > --------- > import ogr > > def polygon_to_geometry(polygon): > """Creates a new ogr.Geometry object from a matplolib.Polygon.""" > if not isinstance(polygon, Polygon): > raise TypeError, "The input data should be a valid Polygon > object!" > listvert = ["%s %s" % (x,y) for (x,y) in polygon.get_verts()] > listvert.append(listvert[0]) > return ogr.CreateGeometryFromWkt("POLYGON ((%s))" % ','.join > (listvert)) > > #--------------------------------------------------------------------- > -------- > #---- OGR to matplotlib --- > #--------------------------------------------------------------------- > -------- > > def _geometry_to_vertices(geometry): > """Creates a list of vertices (x,y) from the current geometry.""" > verts = [] > for nl in range(geometry.GetGeometryCount()): > line = geometry.GetGeometryRef(nl) > points = [(line.GetX(i), line.GetY(i)) for i in > range(line.GetPointCount())] > verts.append(points) > return verts > > > def geometry_to_vertices(geometry): > """Creates lists of vertices (x,y) from the current geometry.""" > if not isinstance(geometry, ogr.Geometry): > raise TypeError, "The input data should be a valid > ogr.Geometry > object!" > vertices = [] > # > if geometry.GetGeometryType() == ogr.wkbPolygon: > vertices.extend(_geometry_to_vertices(geometry)) > elif geometry.GetGeometryType() == ogr.wkbMultiPolygon: > for np in range(geometry.GetGeometryCount()): > poly = geometry.GetGeometryRef(np) > vertices.extend(_geometry_to_vertices(poly)) > return vertices > > #####----------------------------------------------------------------- > --------- > #---- --- Add-ons > #####----------------------------------------------------------------- > --------- > > def fillwaterbodies(basemap, color='blue', inlands=True, ax=None, > zorder=None): > """Fills the water bodies with color. > If inlands is True, inland water bodies are also filled. > > :Inputs: > basemap : Basemap > The basemap on which to fill. > color : string/RGBA tuple *['blue']* > Filling color > inlands : boolean *[True]* > Whether inland water bodies should be filled. > ax : Axes instance *[None]* > Axe on which to plot. If None, the current axe is selected. > zorder : integer *[None]* > zorder of the water bodies polygons. > """ > if not isinstance(basemap, Basemap): > raise TypeError, "The input basemap should be a valid > Basemap object!" > # > if ax is None and basemap.ax is None: > try: > ax = pylab.gca() > except: > import pylab > ax = pylab.gca() > # > coastpolygons = basemap.coastpolygons > coastpolygontypes = basemap.coastpolygontypes > (llx, lly) = (basemap.llcrnrx, basemap.llcrnry) > (urx, ury) = (basemap.urcrnrx,basemap.urcrnry) > background = Polygon([(llx, lly), (urx, lly), (urx, ury), (llx, > ury)]) > # > ogr_background = polygon_to_geometry(background) > inland_polygons = [] > # > for (poly, polytype) in zip(coastpolygons, coastpolygontypes): > if polytype != 2: > verts = ["%s %s" % (x,y) for (x,y) in zip(*poly)] > ogr_poly = ogr.CreateGeometryFromWkt("POLYGON > ((%s))" % ','.join(verts)) > ogr_background = ogr_background.Difference(ogr_poly) > else: > inland_polygons.append(Polygon(zip(*poly), > facecolor=color, > edgecolor=color, > linewidth=0)) > # > background = geometry_to_vertices(ogr_background) > for xy in background: > patch = Polygon(xy, facecolor=color, edgecolor=color, > linewidth=0) > if zorder is not None: > patch.set_zorder(zorder) > ax.add_patch(patch) > # > if inlands: > for poly in inland_polygons: > if zorder is not None: > poly.set_zorder(zorder) > ax.add_patch(poly) > basemap.set_axes_limits(ax=ax) > return > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a > browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users ------------------------------------------------------ Michael Hearne mh...@us... (303) 273-8620 USGS National Earthquake Information Center 1711 Illinois St. Golden CO 80401 Senior Software Engineer Synergetics, Inc. ------------------------------------------------------ |
|
From: Pierre GM <pgm...@gm...> - 2007-11-02 16:06:30
|
On Friday 02 November 2007 11:51:55 Michael Hearne wrote:
> 2) Has anyone figured out a way to make an _ocean_ mask? I need my
> map to look like this
Assuming that you have gdal installed, you can use this set of functions.
Basically, you use OGR to compute the differences between the background and
the land polygons... Works fine for my applications (I interpolate some
rainfall fields over AL/GA/FL, and need to hide the interpolated values in
the Gulf of Mexico), but might still be a tad buggy. Please don't hesittate
to contact me if you need help with that.
#####--------------------------------------------------------------------------
#---- --- OGR conversion ---
#####--------------------------------------------------------------------------
import ogr
def polygon_to_geometry(polygon):
"""Creates a new ogr.Geometry object from a matplolib.Polygon."""
if not isinstance(polygon, Polygon):
raise TypeError, "The input data should be a valid Polygon object!"
listvert = ["%s %s" % (x,y) for (x,y) in polygon.get_verts()]
listvert.append(listvert[0])
return ogr.CreateGeometryFromWkt("POLYGON ((%s))" % ','.join(listvert))
#-----------------------------------------------------------------------------
#---- OGR to matplotlib ---
#-----------------------------------------------------------------------------
def _geometry_to_vertices(geometry):
"""Creates a list of vertices (x,y) from the current geometry."""
verts = []
for nl in range(geometry.GetGeometryCount()):
line = geometry.GetGeometryRef(nl)
points = [(line.GetX(i), line.GetY(i)) for i in
range(line.GetPointCount())]
verts.append(points)
return verts
def geometry_to_vertices(geometry):
"""Creates lists of vertices (x,y) from the current geometry."""
if not isinstance(geometry, ogr.Geometry):
raise TypeError, "The input data should be a valid ogr.Geometry
object!"
vertices = []
#
if geometry.GetGeometryType() == ogr.wkbPolygon:
vertices.extend(_geometry_to_vertices(geometry))
elif geometry.GetGeometryType() == ogr.wkbMultiPolygon:
for np in range(geometry.GetGeometryCount()):
poly = geometry.GetGeometryRef(np)
vertices.extend(_geometry_to_vertices(poly))
return vertices
#####--------------------------------------------------------------------------
#---- --- Add-ons
#####--------------------------------------------------------------------------
def fillwaterbodies(basemap, color='blue', inlands=True, ax=None,
zorder=None):
"""Fills the water bodies with color.
If inlands is True, inland water bodies are also filled.
:Inputs:
basemap : Basemap
The basemap on which to fill.
color : string/RGBA tuple *['blue']*
Filling color
inlands : boolean *[True]*
Whether inland water bodies should be filled.
ax : Axes instance *[None]*
Axe on which to plot. If None, the current axe is selected.
zorder : integer *[None]*
zorder of the water bodies polygons.
"""
if not isinstance(basemap, Basemap):
raise TypeError, "The input basemap should be a valid Basemap object!"
#
if ax is None and basemap.ax is None:
try:
ax = pylab.gca()
except:
import pylab
ax = pylab.gca()
#
coastpolygons = basemap.coastpolygons
coastpolygontypes = basemap.coastpolygontypes
(llx, lly) = (basemap.llcrnrx, basemap.llcrnry)
(urx, ury) = (basemap.urcrnrx,basemap.urcrnry)
background = Polygon([(llx, lly), (urx, lly), (urx, ury), (llx, ury)])
#
ogr_background = polygon_to_geometry(background)
inland_polygons = []
#
for (poly, polytype) in zip(coastpolygons, coastpolygontypes):
if polytype != 2:
verts = ["%s %s" % (x,y) for (x,y) in zip(*poly)]
ogr_poly = ogr.CreateGeometryFromWkt("POLYGON
((%s))" % ','.join(verts))
ogr_background = ogr_background.Difference(ogr_poly)
else:
inland_polygons.append(Polygon(zip(*poly),
facecolor=color,
edgecolor=color,
linewidth=0))
#
background = geometry_to_vertices(ogr_background)
for xy in background:
patch = Polygon(xy, facecolor=color, edgecolor=color, linewidth=0)
if zorder is not None:
patch.set_zorder(zorder)
ax.add_patch(patch)
#
if inlands:
for poly in inland_polygons:
if zorder is not None:
poly.set_zorder(zorder)
ax.add_patch(poly)
basemap.set_axes_limits(ax=ax)
return
|
|
From: Michael H. <mh...@us...> - 2007-11-02 15:52:05
|
I have two questions: 1) The fillcontinents() method has a zorder keyword parameter. Is this supposed to work with imshow()? I have the latest tarball from the website, and I can't get my image to paint on top of the continents. 2) Has anyone figured out a way to make an _ocean_ mask? I need my map to look like this (http://earthquake.usgs.gov/eqcenter/pager/us/2007itah/us/5/shakemap. 600.jpg) , where the image data (the yellow and orange bits) that extends out beyond the land boundary is masked by a blue ocean. Thanks, Mike |
|
From: Jed F. <jed...@gm...> - 2007-11-02 03:38:16
|
On Thu, 1 Nov 2007 Alan G Isaac <ai...@am...> wrote: > <URL:http://www.mail-archive.com/mat...@li.../msg01221.html> > >hth, Ah, I sould be able to modify that to do what I need but it's to bad there isn't a more elegant way than remaping the data and faking the labels. Thanks for the quick help. -- Jed Frechette jdfrechette.alturl.com |