|
From: Jeff W. <js...@fa...> - 2012-08-25 15:50:37
|
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=J4YOAAAAEBAJ&dq=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,%d&bboxSR=4326&size=1024,768&dpi=128&format=png32&f=image" > > % (lon1, lat1, lon2, lat2) > > overlay_url = > > > "https://ogcie.iblsoft.com/sigwx?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=ASXX&WIDTH=1024&HEIGHT=768&CRS=EPSG:4326&BBOX=%d,%d,%d,%d&TRANSPARENT=TRUE&STYLES=&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 |