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
------------------------------------------------------------------------------
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

Reply via email to