Re: [Matplotlib-users] plotting a colored symbol with plot command
On Fri, Aug 24, 2012 at 02:39:12PM -0700, Michael Rawlins wrote: From: Damon McDougall damon.mcdoug...@gmail.com To: Michael Rawlins rawlin...@yahoo.com Cc: matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net Sent: Friday, August 24, 2012 4:22 PM Subject: Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 09:20:47PM +0100, Damon McDougall wrote: plt.pyplot gives an error: AttributeError: 'module' object has no attribute 'pyplot' Sorry, that's my mistake. It should be plt.plot If I use plt.plot(x, y, color='g', marker='.', markersize=3.0) the dots are black. That should not happen... Have you tried some of the other colours? 'r', 'b', 'm', 'y', 'c'? Are they all black? What are you saving the file as? What is the output of: plt.get_backend() But I've found success with: plt.plot(x,y,'wo',markeredgecolor='white',markersize=3.0) so all is well. Thanks for your help. -- Damon McDougall http://www.damon-is-a-geek.com B2.39 Mathematics Institute University of Warwick Coventry West Midlands CV4 7AL United Kingdom -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On 8/24/12 10:20 PM, klo uo wrote: On Sat, Aug 25, 2012 at 1:26 AM, Jeff Whitaker wrote: Oh sure, it's simple! http://www.google.com/patents?id=J4YOEBAJdq=6618053 Hi Jeff, thanks for your reply. I was hoping to get response if there are ideas how this unfortunate performance can be avoided. If there are some thoughts or if it's closed case. Klo: It's not a closed case - but I have no idea how to do it. If you'd like to try to implement something, your contribution would be welcome. About GIS web-services, I thought maybe extending Basemap and providing interface to some of available online mapping services. For example arcgis is just one of them, and allows using their online map service to arbitrary application, while exposing REST (http://resources.arcgis.com/en/help/rest/apiref/index.html?mapserver.html) and SOAP service with full WSDL description (http://services.arcgisonline.com/ArcGIS/services/World_Imagery/MapServer?wsdl) and documentation. REST requests cover all of their services while SOAP is limited and a bit harder to code in this example. Services offer much more than it's needed to be paired in Basemap, as can be seen from documentation, with any imaginable projection and what not. As an example of using the service here is image: http://i.imgur.com/RpUFv.png and here is it's simple source code that executes unnoticeable in second: import matplotlib.pyplot as plt import urllib2 lon1 = -10; lon2 = 30; lat1 = 30; lat2 = 60 basemap_url = http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/export?bbox=%d,%d,%d,%dbboxSR=4326size=1024,768dpi=128format=png32f=image; % (lon1, lat1, lon2, lat2) overlay_url = https://ogcie.iblsoft.com/sigwx?SERVICE=WMSVERSION=1.3.0REQUEST=GetMapLAYERS=ASXXWIDTH=1024HEIGHT=768CRS=EPSG:4326BBOX=%d,%d,%d,%dTRANSPARENT=TRUESTYLES=FORMAT=image/png; % (lon1, lat1, lon2, lat2) plt.figure(figsize=(8, 6), dpi=128, facecolor='w') plt.imshow(plt.imread(urllib2.urlopen(basemap_url))) plt.imshow(plt.imread(urllib2.urlopen(overlay_url))) plt.gca().axison = False plt.savefig(scene.png, dpi=128, transparent=True) As both basemap map and overlay image use same CRS, this seems doable with just MPL. Having such service paired in Basemap as a feature looks very promising to me. I don't know much about MPL and Basemap design, as if all above talk is easy and then acceptable for implementation, but that's roughly what I had in mind for web-services - as additional feature for replacing bloated background maps provided, which does not have such quality to justify low performance. It looks like you are fetching an image over a specified region and displaying it with matplotlib. That's very useful, but it doesn't solve the zooming problem you mentioned. Still, it's a good start and would be nice to have in basemap. Sorry for sounding so dismissive in my earlier reply. How do you think web map services could be integrated into Basemap? Do you see this mainly as a faster and more general alternative to the 'bluemarble' or 'warpimage' methods, where you can specify a web map service and have the appropriate tile that fits the map projection region fetched and displayed automatically? -Jeff Cheers -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On Saturday, August 25, 2012, Jeff Whitaker wrote: On 8/24/12 10:20 PM, klo uo wrote: On Sat, Aug 25, 2012 at 1:26 AM, Jeff Whitaker wrote: Oh sure, it's simple! http://www.google.com/patents?id=J4YOEBAJdq=6618053 Hi Jeff, thanks for your reply. I was hoping to get response if there are ideas how this unfortunate performance can be avoided. If there are some thoughts or if it's closed case. Klo: It's not a closed case - but I have no idea how to do it. If you'd like to try to implement something, your contribution would be welcome. About GIS web-services, I thought maybe extending Basemap and providing interface to some of available online mapping services. For example arcgis is just one of them, and allows using their online map service to arbitrary application, while exposing REST ( http://resources.arcgis.com/en/help/rest/apiref/index.html?mapserver.html) and SOAP service with full WSDL description ( http://services.arcgisonline.com/ArcGIS/services/World_Imagery/MapServer?wsdl ) and documentation. REST requests cover all of their services while SOAP is limited and a bit harder to code in this example. Services offer much more than it's needed to be paired in Basemap, as can be seen from documentation, with any imaginable projection and what not. As an example of using the service here is image: http://i.imgur.com/RpUFv.png and here is it's simple source code that executes unnoticeable in second: import matplotlib.pyplot as plt import urllib2 lon1 = -10; lon2 = 30; lat1 = 30; lat2 = 60 basemap_url = http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/export?bbox=%d,%d,%d,%dbboxSR=4326size=1024,768dpi=128format=png32f=image % (lon1, lat1, lon2, lat2) overlay_url = https://ogcie.iblsoft.com/sigwx?SERVICE=WMSVERSION=1.3.0REQUEST=GetMapLAYERS=ASXXWIDTH=1024HEIGHT=768CRS=EPSG:4326BBOX=%d,%d,%d,%dTRANSPARENT=TRUESTYLES=FORMAT=image/png % (lon1, lat1, lon2, lat2) plt.figure(figsize=(8, 6), dpi=128, facecolor='w') plt.imshow(plt.imread(urllib2.urlopen(basemap_url))) plt.imshow(plt.imread(urllib2.urlopen(overlay_url))) plt.gca().axison = False plt.savefig(scene.png, dpi=128, transparent=True) As both basemap map and overlay image use same CRS, this seems doable with just MPL. Having such service paired in Basemap as a feature looks very promising to me. I don't know much about MPL and Basemap design, as if all above talk is easy and then acceptable for implementation, but that's roughly what I had in mind for web-services - as additional feature for replacing bloated background maps provided, which does not have such quality to justify low performance. It looks like you are fetching an image over a specified region and displaying it with matplotlib. That's very useful, but it doesn't solve the zooming problem you mentioned. Still, it's a good start and would be nice to have in basemap. Sorry for sounding so dismissive in my earlier reply. How do you think web map services could be integrated into Basemap? Do you see this mainly as a faster and more general alternative to the 'bluemarble' or 'warpimage' methods, where you can specify a web map service and have the appropriate tile that fits the map projection region fetched and displayed automatically? -Jeff If I could chime in for a quick moment, perhaps one could consider a specialized backend extension that would provide the web services communication? This way, when panning and zooming, the backend would know the limits and fetch (and optionally cache) the requested tiles from the connected service. Mind you, I don't think this quite falls into the scope of the mpl or Basemap project, but such a backend would be a powerful project on its own. Cheers! Ben Root -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] for a log y axis, set_major_formatter then twiny() removes the set_major_formatter
On Mon, Aug 20, 2012 at 09:13:10AM -0400, Michael Droettboom wrote: I've filed an issue for this here: https://github.com/matplotlib/matplotlib/issues/1110 I think I have sussed out what's going on here. See PR: https://github.com/matplotlib/matplotlib/pull/1145 Basically, on creating a new Axes object, if a shared axes was passed in, a copy of the current axes scale is executed. This overwrites the current formatter. Mike On 08/19/2012 05:55 PM, Eric Firing wrote: On 2012/08/19 10:31 AM, Christopher Graves wrote: Hi I do not think this is the expected behavior. First, run the following: from pylab import * plot([0,3],[0.2,0.7]) ax1 = gca() ax1.set_yscale('log') gca().yaxis.set_major_formatter(FormatStrFormatter('$%g$')) #ax2 = ax1.twiny() #ax2.set_xlim(ax1.get_xlim()) show() You will see that the y-axis is log10rithmic and axis labels are 0.1 and 1 rather than 10^-1 and 10^0, due to the use of set_major_formatter(). Now uncomment the 2 commented lines and run it again. It seems that upon applying a twiny(), the set_major_formatter() action is removed and the y-axis is now displayed as 10^-1 and 10^0. Or more likely, the y-axis is overwritten with a new y-axis present in ax2. One can add another gca().yaxis.set_major_formatter(FormatStrFormatter('$%g$')) before the show() and it works as intended. However, it seems like unexpected behavior to lose the formatting when twinning the axis to add a secondary x-axis. Any advice or agreement that this could be a bug? Yes, I think this is a bug. Eric Best, Chris -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Damon McDougall http://www.damon-is-a-geek.com B2.39 Mathematics Institute University of Warwick Coventry West Midlands CV4 7AL United Kingdom -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] plotting a colored symbol with plot command
From: Damon McDougall damon.mcdoug...@gmail.com To: Michael Rawlins rawlin...@yahoo.com Cc: matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net Sent: Saturday, August 25, 2012 4:21 AM Subject: Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 02:39:12PM -0700, Michael Rawlins wrote: From: Damon McDougall damon.mcdoug...@gmail.com To: Michael Rawlins rawlin...@yahoo.com Cc: matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net Sent: Friday, August 24, 2012 4:22 PM Subject: Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 09:20:47PM +0100, Damon McDougall wrote: If I use plt.plot(x, y, color='g', marker='.', markersize=3.0) the dots are black. That should not happen... Have you tried some of the other colours? 'r', 'b', 'm', 'y', 'c'? Are they all black? What are you saving the file as? What is the output of: plt.get_backend() Yes I've tried several. All produce black dots. The output of that command is 'agg'. I use: plt.savefig('map.eps') to produce eps images. -- Damon McDougall http://www.damon-is-a-geek.com B2.39 Mathematics Institute University of Warwick Coventry West Midlands CV4 7AL United Kingdom-- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] plotting a colored symbol with plot command
On Sat, Aug 25, 2012 at 07:59:52AM -0700, Michael Rawlins wrote: From: Damon McDougall damon.mcdoug...@gmail.com To: Michael Rawlins rawlin...@yahoo.com Cc: matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net Sent: Saturday, August 25, 2012 4:21 AM Subject: Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 02:39:12PM -0700, Michael Rawlins wrote: From: Damon McDougall damon.mcdoug...@gmail.com To: Michael Rawlins rawlin...@yahoo.com Cc: matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net Sent: Friday, August 24, 2012 4:22 PM Subject: Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 09:20:47PM +0100, Damon McDougall wrote: If I use plt.plot(x, y, color='g', marker='.', markersize=3.0) the dots are black. That should not happen... Have you tried some of the other colours? 'r', 'b', 'm', 'y', 'c'? Are they all black? What are you saving the file as? What is the output of: plt.get_backend() Yes I've tried several. All produce black dots. The output of that command is 'agg'. I use: plt.savefig('map.eps') to produce eps images. Bizarre. I am still seeing green dots. Could you provide a very minimal example for which you see black dots? It'd be nice to understand what's going on. Also, what's the output of import matplotlib print matplotlib.__version__ Thanks. -- Damon McDougall http://www.damon-is-a-geek.com B2.39 Mathematics Institute University of Warwick Coventry West Midlands CV4 7AL United Kingdom -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] plotting a colored symbol with plot command
On Sat, Aug 25, 2012 at 9:59 AM, Michael Rawlins rawlin...@yahoo.comwrote: -- *From:* Damon McDougall damon.mcdoug...@gmail.com *To:* Michael Rawlins rawlin...@yahoo.com *Cc:* matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net *Sent:* Saturday, August 25, 2012 4:21 AM *Subject:* Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 02:39:12PM -0700, Michael Rawlins wrote: From: Damon McDougall damon.mcdoug...@gmail.com To: Michael Rawlins rawlin...@yahoo.com Cc: matplotlib-users@lists.sourceforge.net matplotlib-users@lists.sourceforge.net Sent: Friday, August 24, 2012 4:22 PM Subject: Re: [Matplotlib-users] plotting a colored symbol with plot command On Fri, Aug 24, 2012 at 09:20:47PM +0100, Damon McDougall wrote: If I use plt.plot(x, y, color='g', marker='.', markersize=3.0) the dots are black. That should not happen... Have you tried some of the other colours? 'r', 'b', 'm', 'y', 'c'? Are they all black? What are you saving the file as? What is the output of: plt.get_backend() Yes I've tried several. All produce black dots. The output of that command is 'agg'. I use: plt.savefig('map.eps') to produce eps images. The default 'markeredgecolor' (or 'mec') is black, and with small dots, you will see more edge color than face color. To test this, create the same plot but with an exaggerated marker size, e.g. markersize=30. If that is the problem, you can fix it by also setting the edge color to green, e.g. mec='g'. Warren [Sending to the list this time--forgot to reply to all the first time.] -- Damon McDougall http://www.damon-is-a-geek.com B2.39 Mathematics Institute University of Warwick Coventry West Midlands CV4 7AL United Kingdom -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On 8/25/12 7:53 AM, Benjamin Root wrote: On Saturday, August 25, 2012, Jeff Whitaker wrote: On 8/24/12 10:20 PM, klo uo wrote: On Sat, Aug 25, 2012 at 1:26 AM, Jeff Whitaker wrote: Oh sure, it's simple! http://www.google.com/patents?id=J4YOEBAJdq=6618053 Hi Jeff, thanks for your reply. I was hoping to get response if there are ideas how this unfortunate performance can be avoided. If there are some thoughts or if it's closed case. Klo: It's not a closed case - but I have no idea how to do it. If you'd like to try to implement something, your contribution would be welcome. About GIS web-services, I thought maybe extending Basemap and providing interface to some of available online mapping services. For example arcgis is just one of them, and allows using their online map service to arbitrary application, while exposing REST (http://resources.arcgis.com/en/help/rest/apiref/index.html?mapserver.html) and SOAP service with full WSDL description (http://services.arcgisonline.com/ArcGIS/services/World_Imagery/MapServer?wsdl) and documentation. REST requests cover all of their services while SOAP is limited and a bit harder to code in this example. Services offer much more than it's needed to be paired in Basemap, as can be seen from documentation, with any imaginable projection and what not. As an example of using the service here is image: http://i.imgur.com/RpUFv.png and here is it's simple source code that executes unnoticeable in second: import matplotlib.pyplot as plt import urllib2 lon1 = -10; lon2 = 30; lat1 = 30; lat2 = 60 basemap_url = http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/export?bbox=%d,%d,%d,%dbboxSR=4326size=1024,768dpi=128format=png32f=image; % (lon1, lat1, lon2, lat2) overlay_url = https://ogcie.iblsoft.com/sigwx?SERVICE=WMSVERSION=1.3.0REQUEST=GetMapLAYERS=ASXXWIDTH=1024HEIGHT=768CRS=EPSG:4326BBOX=%d,%d,%d,%dTRANSPARENT=TRUESTYLES=FORMAT=image/png; % (lon1, lat1, lon2, lat2) plt.figure(figsize=(8, 6), dpi=128, facecolor='w') plt.imshow(plt.imread(urllib2.urlopen(basemap_url))) plt.imshow(plt.imread(urllib2.urlopen(overlay_url))) plt.gca().axison = False plt.savefig(scene.png, dpi=128, transparent=True) As both basemap map and overlay image use same CRS, this seems doable with just MPL. Having such service paired in Basemap as a feature looks very promising to me. I don't know much about MPL and Basemap design, as if all above talk is easy and then acceptable for implementation, but that's roughly what I had in mind for web-services - as additional feature for replacing bloated background maps provided, which does not have such quality to justify low performance. It looks like you are fetching an image over a specified region and displaying it with matplotlib. That's very useful, but it doesn't solve the zooming problem you mentioned. Still, it's a good start and would be nice to have in basemap. Sorry for sounding so dismissive in my earlier reply. How do you think web map services could be integrated into Basemap? Do you see this mainly as a faster and more general alternative to the 'bluemarble' or 'warpimage' methods, where you can specify a web map service and have the appropriate tile that fits the map projection region fetched and displayed automatically? -Jeff If I could chime in for a quick moment, perhaps one could consider a specialized backend extension that would provide the web services communication? This way, when panning and zooming, the backend would know the limits and fetch (and optionally cache) the requested tiles from the connected service. Mind you, I don't think this quite falls into the scope of the mpl or Basemap project, but such a backend would be a powerful project on its own. Cheers! Ben Root Maybe such a thing could be built using owslib? http://geopython.github.com/OWSLib/ -Jeff -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On 8/25/12 9:50 AM, Jeff Whitaker wrote: On 8/25/12 7:53 AM, Benjamin Root wrote: On Saturday, August 25, 2012, Jeff Whitaker wrote: On 8/24/12 10:20 PM, klo uo wrote: On Sat, Aug 25, 2012 at 1:26 AM, Jeff Whitaker wrote: Oh sure, it's simple! http://www.google.com/patents?id=J4YOEBAJdq=6618053 Hi Jeff, thanks for your reply. I was hoping to get response if there are ideas how this unfortunate performance can be avoided. If there are some thoughts or if it's closed case. Klo: It's not a closed case - but I have no idea how to do it. If you'd like to try to implement something, your contribution would be welcome. About GIS web-services, I thought maybe extending Basemap and providing interface to some of available online mapping services. For example arcgis is just one of them, and allows using their online map service to arbitrary application, while exposing REST (http://resources.arcgis.com/en/help/rest/apiref/index.html?mapserver.html) and SOAP service with full WSDL description (http://services.arcgisonline.com/ArcGIS/services/World_Imagery/MapServer?wsdl) and documentation. REST requests cover all of their services while SOAP is limited and a bit harder to code in this example. Services offer much more than it's needed to be paired in Basemap, as can be seen from documentation, with any imaginable projection and what not. As an example of using the service here is image: http://i.imgur.com/RpUFv.png and here is it's simple source code that executes unnoticeable in second: import matplotlib.pyplot as plt import urllib2 lon1 = -10; lon2 = 30; lat1 = 30; lat2 = 60 basemap_url = http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/export?bbox=%d,%d,%d,%dbboxSR=4326size=1024,768dpi=128format=png32f=image; % (lon1, lat1, lon2, lat2) overlay_url = https://ogcie.iblsoft.com/sigwx?SERVICE=WMSVERSION=1.3.0REQUEST=GetMapLAYERS=ASXXWIDTH=1024HEIGHT=768CRS=EPSG:4326BBOX=%d,%d,%d,%dTRANSPARENT=TRUESTYLES=FORMAT=image/png; % (lon1, lat1, lon2, lat2) plt.figure(figsize=(8, 6), dpi=128, facecolor='w') plt.imshow(plt.imread(urllib2.urlopen(basemap_url))) plt.imshow(plt.imread(urllib2.urlopen(overlay_url))) plt.gca().axison = False plt.savefig(scene.png, dpi=128, transparent=True) As both basemap map and overlay image use same CRS, this seems doable with just MPL. Having such service paired in Basemap as a feature looks very promising to me. I don't know much about MPL and Basemap design, as if all above talk is easy and then acceptable for implementation, but that's roughly what I had in mind for web-services - as additional feature for replacing bloated background maps provided, which does not have such quality to justify low performance. It looks like you are fetching an image over a specified region and displaying it with matplotlib. That's very useful, but it doesn't solve the zooming problem you mentioned. Still, it's a good start and would be nice to have in basemap. Sorry for sounding so dismissive in my earlier reply. How do you think web map services could be integrated into Basemap? Do you see this mainly as a faster and more general alternative to the 'bluemarble' or 'warpimage' methods, where you can specify a web map service and have the appropriate tile that fits the map projection region fetched and displayed automatically? -Jeff If I could chime in for a quick moment, perhaps one could consider a specialized backend extension that would provide the web services communication? This way, when panning and zooming, the backend would know the limits and fetch (and optionally cache) the requested tiles from the connected service. Mind you, I don't think this quite falls into the scope of the mpl or Basemap project, but such a backend would be a powerful project on its own. Cheers! Ben Root Maybe such a thing could be built using owslib? http://geopython.github.com/OWSLib/ -Jeff tilecache.org looks relevant too. -Jeff -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net
Re: [Matplotlib-users] Background basemaps in Basemap
On Sat, Aug 25, 2012 at 3:24 PM, Jeff Whitaker jsw...@fastmail.fm wrote: It looks like you are fetching an image over a specified region and displaying it with matplotlib. That's very useful, but it doesn't solve the zooming problem you mentioned. Still, it's a good start and would be nice to have in basemap. Yes, I was thinking about fetching image resource only. I should have probably fetched more detailed and smaller region that would demonstrate superiority over Basemap bitmaps quality and performance, as I mentioned zooming problem in a context of very high memory usage while provided image is with low detail compared to what's potentially possible. Sorry for sounding so dismissive in my earlier reply. How do you think web map services could be integrated into Basemap? Do you see this mainly as a faster and more general alternative to the 'bluemarble' or 'warpimage' methods, where you can specify a web map service and have the appropriate tile that fits the map projection region fetched and displayed automatically? Exactly - as function to Basemap class that could be called as bluemarble() or shadedrelief() etc. on previously defined projection. Export Map (http://atlas.resources.ca.gov/arcgis/SDK/REST/export.html) seems like only function needed, but more knowledge about Basemap is needed, as my main problem with it is fitting projections right. I tried to overlay arcgis map over some Basemap projections like: m=Basemap(...) m.imshow(arcgis_map) m.drawcoastlines() But it never fits, and also aspect ratio should be considered. And same scheme for potentially other mapping webservices, as functions to Basemap class... Also for reference here are maps available to arcgis service: http://server.arcgisonline.com/ArcGIS/rest/services -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On Sat, Aug 25, 2012 at 5:57 PM, Jeff Whitaker wrote: tilecache.org looks relevant too. This is like more advanced, on a higher level. I imagine if you plan to add some interaction to Basemap, it would be fantastic, to say at least. While reading Google patent you linked the other day, I came also to this link: http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection It was mentioned as a advanced feature to some server providing WMS capabilities Also, already mentioned GIS webservices IMHO provide interface to their caching/tiling mechanisms, but if there is backend to hold this feature in MPL/Basemap I have no idea. -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] How to get daily digest feature to work?
I have the digest option enabled in my matplotlib mailing list options. However, I still receive between 5 and 10 mailing list messages per day, sometimes more. Is there any way to change a setting to ensure that I can only ever receive exactly one message from the mailing list per day, with the entire day's entries included? Thanks, Ely -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On Sat, Aug 25, 2012 at 5:50 PM, Jeff Whitaker wrote: Maybe such a thing could be built using owslib? http://geopython.github.com/OWSLib/ This is interesting. I didn't know about this module Using either simple REST (urllib) to access webservices or depend on additional module which exposes all kinds of services capabilities, that are not just basemaps, but services which are used to interface many public data through XML communication, that are potentially attractive to Basemap users IMHO It is kind of a dilemma ;) -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
Export Map (http://atlas.resources.ca.gov/arcgis/SDK/REST/export.html) seems like only function needed, but more knowledge about Basemap is needed, as my main problem with it is fitting projections right. I tried to overlay arcgis map over some Basemap projections like: m=Basemap(...) m.imshow(arcgis_map) m.drawcoastlines() But it never fits, and also aspect ratio should be considered. Success! :) It was that imageSR had to be set, as it doesn't seem to be deduced from the map: basemap_url = http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/export?\ bbox=%d,%d,%d,%d\ bboxSR=4326\ imageSR=4326\ size=800,600\ dpi=128\ format=png32\ f=image % (lon1, lat1, lon2, lat2) \ Result with coastlines overlay attached! Jeff, I think it is easy to make this function to Basemap class, but I'm not confident doing it. If you can make it, I'll then try to use it as template and pair it to other available webservices Cheers -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
Result with coastlines overlay attached! Here is attachment Hm, image needs to be approved by moderator... Here is a link to it: http://i.imgur.com/1ZMoU.png -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Background basemaps in Basemap
On 8/25/12 3:08 PM, klo uo wrote: On Sat, Aug 25, 2012 at 10:19 PM, Jeff Whitaker jsw...@fastmail.fm wrote: Klo: For cylindrical equidistant maps (projection='cyl') it will be easy, since the corner lat/lon values are all that is needed. For other projections, we'll need a way to translate EPSG projection codes into Basemap kwargs. Jeff, how is it done for static bitmaps as bluemarble, etopo... ? Can't the same be done, if image fits in one of supported projections? Klo: The image in interpolated to the Basemap projection region. This is slow - the main reason to use the WMS is to avoid this by having it done on the server side. According http://atlas.resources.ca.gov/arcgis/SDK/REST/export.html `bbox` is required with syntax like: Syntax: xmin, ymin, xmax, ymax Number format for `bbox` AFAIK (but not sure) depends on `bboxSR` projection and dense list of available projections with their code is here: http://atlas.resources.ca.gov/arcgis/SDK/REST/pcs.html The trick is to figure out what the EPSG projection code is based on the Basemap projection info, and pass that information to the WMS server so it can do the interpolation. Here's an example for south polar stereographic: width = 12000.e3 plt.figure() basemap_url =\ http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer/export?\ bbox=%d,%d,%d,%d\ bboxSR=3412\ imageSR=3412\ size=800,800\ dpi=128\ format=png32\ f=image % (-width/2,-width/2,width/2,width/2) m =\ Basemap(projection='stere',resolution='i',lon_0=0,lat_0=-90,lat_ts=-70,\ width=width,height=width,rsphere=(6378273,6356889.449)) m.imshow(plt.imread(urllib2.urlopen(basemap_url)),origin='upper') m.drawmeridians(np.arange(-180,180,30),labels=[0,0,0,1],color='y') m.drawparallels(np.arange(-80,-0,10),labels=[1,0,0,0],color='y') m.drawcoastlines() plt.show() -Jeff So perhaps, by just providing `cyl` (bboxSR=4326) and imageSR to any desired projection from above list will do the trick? Quickly now, I tried to map other projection on whole world as it was easier not knowing Basemap that well: from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt import urllib2 lon1 = -180; lon2 = 180; lat1 = -90; lat2 = 90 basemap_url = http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer/export?\ bbox=%d,%d,%d,%d\ bboxSR=4326\ imageSR=54030\ size=2000,1000\ format=png32\ f=image % (lon1, lat1, lon2, lat2) m = Basemap(projection='robin', lon_0=0, resolution='c') m.imshow(plt.imread(urllib2.urlopen(basemap_url)), origin='upper') m.drawcoastlines() plt.gca().axison = False plt.title(Robinson Projection) plt.show() Seems almost fine ;) -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users