LBS has arrived

Finally a consumer personal navigational device with internet connectivity, meet Dash Express. See also Engadget review.

Dash

The opportunities this opens up to both the Geo community and also Joe Public is quite huge. Enter GeoRSS. Your time to shine has arrived :)

Many websites have geo-relevant content - including, but not limited to, Google Maps, Yelp, Craigslist, Trulia, Gruvr, and many more. Just check the source of the feed to see if there is a latitude/longitude provided for each item in the feed, and if so, the odds are good that it will work as a MyFeed on MyDash.

Hopefully this will continue across the PND market. *fingers crossed* The only downer (apart from the price) ?

It will not work in Canada, Mexico, Europe or any location outside the United States

:(

gvSig mobile release & other thoughts

Seems as though a lot of people missed this release last week.

It gives us great pleasure to announce that the pilot application awarded the development contract for the gvSIG Mobile application by the Regional Ministry of Infrastructure and Transport is available. gvSIG Mobile is a smaller version of gvSIG which has been adapted for use in mobile devices. It supports shapefiles, ECW, WMS and images and is able to make use of GPS systems. Currently, only the visualization of layers and the generation of GPS tracklogs/waypoints are supported.

gvSIG Mobile … available at gvSIG website http://www.gvsig.gva.es

I must thank the gvSIG guys for helping me out with my WALIS Forum presentation by supplying me with a pre-release copy. Implemented a work around in 5mins and had it talking to our SDI straight away. Anyone with a Windows Mobile device, its definately worth checking out and things will become more interesting pending the gvSig and OSGEO talks.

gvsig.jpg

In other news, i am officially slack. But the good news is that i have been harassed by that many people at events and on email that i will begin making a concerted effort posting more regularly now. SO LAY OFF!

WALIS Forum has been and gone for another 18 months. Attendance was the biggest yet, with 820 through the doors. Highlights for me (in no particular order)..

  • Tim trying to do updates throughout the conf but stopping after the first post. Hey, i never said i was going to!
  • Harvey from Microsoft failing miserably trying to demo photosynth live. I feel ya pain buddy, i really do, but we had seen it all before anyway :)
  • Mr Parsons with the usual tidbits of humour. My only feedback would have been tailoring another presentation addressing the “short tail” as 95% of the attendees were the custodians and advanced spatial users. Certainly from my point of view, addressing how Google is tackling this area would have been far more interesting from a GeoWeb perspective! Next time.
  • Leaving a room of 100 people stunned after a presentation but then all saying what a great presentation it was. Hmmmm?
  • Cameron not taking a breath, ever, throughout the 2 day conference. That man can talk.

Where art thou WCS clients?

How can I push a proposal for provisioning elevation data via Web Coverage Services when there are no freakin’ clients?

After a couple of hours I seriously only found,

Suggesting users manually craft the requests is not an option :)

I guess this kinda gets back to my previous rants on this issue. We’ve got Deegree, Geoserver, Mapserver and quite a few other notable suppliers pushing coverages out … to where exactly??

Image courtesy http://www.refractions.net/terrainserver/

It seems absurd how many people grab the whole SRTM/Landsat/DEMs in general just because “its easier”. After looking into WCS, perhaps they are right. Chicken meet egg, again.

Generic Web Proxies

In my quest for increased adoption of geospatial web services, I would constantly bash my head against the wall trying to debug GIS applications. So if you have suffered from “what the” behaviour such as …

  • weird uri encoding
  • apps pretending to talk SSL but only on some requests
  • not supporting BASIC authentication when they say they do
  • clients not sending the required STYLES WMS kvp
  • sending hundreds upon hundreds of chunked requests …

then these scripts/apps may be for you. They are pretty generic and can be applied to any AJAX-type cross-domain restriction. The only OGC specific type line is the string replace of the online resource with the proxy uri (for obvious reasons for the getcapabilities document).

Other recommends ..

  1. For desktop based apps, i highly recommend fiddler2 as man in the middle proxy interceptor for debugging HTTP. It even does HTTPS mitm :)
  2. If you want to enable HTTPS/BASIC authentication on a desktop client that doesnt support it, check out InteProxy or email me for my own “Gismo” command line version. This will allow apps such as GRASS or QGIS which only has standard WMS support to magically start working on these services

But if you are just trying to get your poor OpenLayers application talking to that lonesome WFS server sitting on the interweb, these might come in handy!

Note that these are open proxies by default!

< ?php
	$urlparams = urldecode($_SERVER['QUERY_STRING']);
         $ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,$url."&Styles=");
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
 	curl_setopt($ch, CURLOPT_USERAGENT, "Openlayers proxy - CTweedie hax"); // Set a different user-agent so we can track usage easier
	curl_setopt($ch, CURLOPT_FAILONERROR,1);
	//curl_setopt($ch, CURLOPT_VERBOSE, 1);
   	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  // the next 3 lines makes it work through https SSL3 with authorization.
	curl_setopt($ch, CURLOPT_SSLVERSION, 3);
	curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass);
	$data = curl_exec($ch); // Execute query
        $data = str_replace("https://www.wms.com/server/to/reflect/to?","https://www.wms.com/server/proxy?", $data)
        $content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );
	header('Content-Type: '.$content_type);
	echo $data;
	curl_close($ch);
>

Python equivalent … almost identical to the OpenLayers version. In most situations, py urllib runs hands down quicker than php curl but it could well be my dodgy code!

#!/usr/bin/env python -u
 
import urllib
import urllib2
import cgi
import socket
import msvcrt
import os
import sys
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
# timeout in seconds
timeout = 15
socket.setdefaulttimeout(timeout)
 
fs = cgi.FieldStorage()
urlt = "https://www.wms.com/server/to/reflect/to?"
 
for i in fs.keys():
  urlt += i+"="+fs[i].value+"&"
url = urllib.unquote(urlt)
try:
    if url.startswith("http://") or url.startswith("https://"):
           passman = urllib2.HTTPPasswordMgrWithDefaultRealm()      # this creates a password manager
           passman.add_password(None, urlt, 'user', 'password')      # because we have put None at the start it will always use this username/password combination
           authhandler = urllib2.HTTPBasicAuthHandler(passman)                 # create the AuthHandler
           opener = urllib2.build_opener(authhandler)
           urllib2.install_opener(opener)
        y = urllib2.urlopen(url)
 
        headers = str(y.info()).split('\n')
        for h in headers:
            if h.startswith("Content-Type:"):
                print h
        print
        print y.read().replace("https://www.wms.com/server/to/reflect/to?","https://www.wms.com/server/proxy?")
        y.close()
    else:
        print """Content-Type: text/plain Illegal request."""
except Exception, E:
    print "Status: 500 Unexpected Error"
    print "Content-Type: text/plain"
    print
    print url
    print "Some unexpected error occurred. Error text was:", E

Bravo ..

..to Sebastian’s spatialreference.org post. You made me chuckle and i don’t really know why :) I had actually not seen the projection render call, that is damn nice work Chris and Howard. Sebastian lists a few suggested improvements to the “service” which i whole heartedly agree. Geodesy/datums/projections/geoids/coordinate systems need not be some magical black art done only by PhD’s, or alternatively some magical program that you insert numbers in, get stuff out, but having no idea what just happened. Let there be light …

Second bravo goes to Flamingo mapping components, a new (i think) dutch GPL mapviewer. I happened to stumble onto these guys’ Flash based WMS client the other day and all i can say is hooray! Finally a flash client which is separated into components, has a neat interface and is actually configurable WITHOUT requiring Flash CS3 just to change the stupid service URI.