FOSS4G Sydney 2009

Andrew Hallam | | 13 April 2009, 07:37

Calendars at the ready! The Free and Open Source Software for Geospatial (FOSS4G) conference will be occurring in Sydney from 20-23 October 2009. That’s Tuesday to Friday inclusive. Key dates:

Online Registration Opens: 20 April 2009
Abstract Submission Deadline: 01 June 2009
Early Registration Deadline: 31 July 2009

The call for presentations is open.

Now, the author of this site has obviously been hiding under a rock because he missed this completely. The heads-up came from the company that provides PostgreSQL support to the author’s employer.

Yahoo! Internet Location Platform - Part 2

Andrew Hallam | | 19 May 2008, 19:41

As many people have noted, the Yahoo! Internet Location Platform has been released. After looking at the examples it all made sense, but two things stood out:

  1. Request: The use of a custom query mechanism rather than using HTTP query strings. (This is addressed in Part 1 of this post.)
  2. Response: The lack of URIs to identify related resources.

What follows is just a quick exploration of the second of these two issues.

URIs for Related Resources

The response documents provided by the Yahoo! Internet Location Platform do not contain any URI’s to identify related resources. This seems like a lost opportunity to make client applications less fragile and make life easier for developers. It could also make scaling on the server-side easier. (Yes, I’m talking about using REST.)

The current approach provides some of the information required to construct URIs, but the client application needs to be aware of the URI pattern to used to construct the URI for each type of resource.

There can be three types of related resources implied in a location search result:

  1. Related locations. e.g. Country, state, admin, locality, etc.
  2. Pages of matching records from the same collection of search results.
  3. Neighbouring geographies.

1. Related Locations:

Using the Sydney Opera House landmark search example, the related country is returned as:

<country type="Country" code="AU">Australia</country>

 

If an application wishes to take any action that requires knowing the centroid or bounding box of Australia it must know how to construct the correct URI to query the server. e.g.

http://where.yahooapis.com/v1/places.q('Australia')

 

This creates a fragile client application. If the URI construction rules, the host domain, or the URI path change then the client applications will break. The client application needs to know too much about the internal workings of the service. i.e. It is more tightly coupled that it needs to be.

An alternative solution is to identify each related resource with a fully formed URI, in the original response document, which the client application could then dereference:

<country yahoo:uri="http://where.yahooapis.com/v1/place/23424748"
  type="Country" code="AU">Australia</country>

 

Yahoo! can then make all the changes they want to the URI that identifies the Australia resource representation without breaking client applications. It doesn’t matter if they change the URI to:

http://where07.yahoo.com/location/australia

 

The client application will still work provided it still understands the structure of the response document. (Data coupling is a topic for another day.)

2. Paging:

Using the Springfield place search example, when a place search matches more records than it returns in the firts response document this is indicated using:

<places ... yahoo:start="0" yahoo:count="5" yahoo:total="61">

 

These three attributes provide useful information for the client application, but again, in order to get the next five matching results the client needs to know how to construct the appropriate URI:

http://where.yahooapis.com/v1/places.q('springfield');start=5;count=5

 

It would be helpful to developers if the original response included a URI for both the next five and the previous set of records (if applicable):

<next count="5" 
  yahoo:uri="http://where.yahooapis.com/v1/places.q('springfield');start=10;count=5"/>
<previous count="5" 
  yahoo:uri="http://where.yahooapis.com/v1/places.q('springfield');start=0;count=5"/>

 

This is a less compelling example, because it assumes that the client application always wishes to obtain matching results in fixed size sets, whereas the approach taken by the Yahoo! Internet Location Platform allows the client application to make that choice on-the-fly.

3. Neighbouring Geographies:

The current response documents do not include any details about neighbouring geographies, but there is a neighbouring geographies query. Client applications must know how to construct yet another URI to obtain this information:

http://where.yahooapis.com/v1/place/12795711/neighbors 

 

Why not simply add a new element to the response document that provides that URI?

<neighbors type="State" 
  yahoo:uri="http://where.yahooapis.com/v1/place/12795711/neighbors"/>

 

Conclusion:

Taking a more standardised approach to adding query parameters to URIs, and providing URI’s to related resources, would enable developers to create less fragile client applications. The Yahoo! Internet Location Platform also appears to have missed an opportunity to deliver a true REST interface in an application where it would be very well suited, however…

Caveat: All the above has been written knowing nothing about the business or design constraints that shaped the Yahoo! Internet Location Platform. There are likely to be many perfectly sensible reasons for the design choices that were made.

Yahoo! Internet Location Platform - Part 1

Andrew Hallam | | 19 May 2008, 19:34

As many people have noted, the Yahoo! Internet Location Platform has been released. After looking at the examples it all made sense, but two things stood out:

  1. Request: The use of a custom query mechanism rather than using “HTTP query strings”:http://en.wikipedia.org/wiki/Query_string.
  2. Response: The lack of URIs to identify related resources. (This is addressed in Part 2 of this post.)

What follows is just a quick exploration of the first of these two issues.

Query Mechanisms

The Yahoo! Internet Location Platform uses an interesting mixture of three different query syntax styles.

1. The place name search syntax looks like an object method call.

/places.q('sydney%20opera%20house')

 

Yahoo!‘s function-like syntax places.q(‘place%20name’) makes it look like q is a method on the places object. That would suggest the underlying implementation may have leaked into the interface (surely not!).

2. The paging parameters, start and count, are semicolon delimited strings.

/places.q('springfield');start=0;count=5

 

Avoiding the use of HTTP query strings would allow HTTP caches to cache the results of the place name searches. That would improve performance on common searches while reducing the load on the Yahoo! servers. However, that would prevent Yahoo! from controlling access and accurately metering usage.

3. And, query strings are still used to determine language and format of the resource:

/places.q('usa')?lang=fr
/place/2487956?format=json

 

There goes the caching theory, so why not just use plain vanilla query strings for all parameters and keep it consistent? Example:

/places?q=springfield&start=0&count=5&format=json&

 

It’s dead easy to construct a query string from a map, or dictionary, of name/value pairs and append it to a GET request. Using a non-standard and inconsistent approach creates more work for developers.

Continue to Part 2

MapInfo No Longer

Andrew Hallam | | 7 September 2007, 23:49

Wow, more upheaval in the commercial geospatial world. Pitney Bowes are dropping the MapInfo brand.

PostgreSQL and Data Modelling Tools

Andrew Hallam | | 7 September 2007, 20:52

The opportunity recently presented itself to reverse engineer a PostGIS database using three different data modelling tools. Heere are some first impression on these tools, and results of how they handled the PostGIS geometry data type.

» Read more...

Google Gears

Andrew Hallam | | 31 May 2007, 20:42

At Google Developer Day 2007 in Sydney, Google have announced the early beta of Google Gears. Gears provides seamless offline storage for your browser-based applications. It’s an open source plug-in for browsers, available under a New BSD license.

Quick takeaways:

  • Uses SQLite for offline storage of millions of documents, and includes full text search.
  • Sits between your web app and the server and manages synchronisation.
  • Provides process worker for offloading JavaScript processing to worker threads.

This looks really interesting for data intensive mapping applications, although it’s not clear if you can use the database to store image tiles.

Leica Acquires Earth Resource Mapping

Andrew Hallam | | 23 May 2007, 05:43

Via Chris, and as he says, Wow. My company was a reseller of ERM products for several years, so it will be interesting to see how the ERM product line evolves under Leica’s stewardship. I too, hope the ERM team stays in Perth (good luck guys and gals).

Leica press release dated 21 May 2007.

Google Earth 4.1 Fly To Broken in Australia

Andrew Hallam | | 12 May 2007, 22:12

After upgrading from Google Earth 4.0.something to 4.1.7076.4458 on Ubuntu 7.04, the Fly To address search doesn’t work. I’m assuming this error is particular to Australian users since it returns an error stating:

Unable to perform search Couldn’t resolve host ‘maps.google.au’

Update, 2007-05-18: Just tried a street address search and it worked fine. Thanks for the fix Google.

That should obviously be maps.google.com.au. I searched everywhere obvious to find a likely configuration setting, but alas, not one was found.

Hopefully this value is pulled from Google servers at login (REST style), rather than being baked into compiled code.

Heat Loss Mapping

Andrew Hallam | | 9 May 2007, 02:35

Private companies have been capturing aerial imagery and making it available for general sale for a few years. However, this is the first time I’ve heard of a company doing the same with infra-red thermal imagery.

Hotmapping.co.uk have complete aerial heat-loss data sets of most of London and all of Norwich.

I wonder if Google or Microsoft would make this sort of imagery available via their respective mapping products? There are some privacy issues but, on balance, it seems like a good thing. It would look very nice in Google Earth.

Spatial Component of All Data

Andrew Hallam | | 8 May 2007, 05:51

It is often stated in the geospatial industry that 80% of all data has a spatial component. This seems to be a bit of a self perpetuating meme. Does anyone know where the 80% figure came from, and whether there is any substance behind it? Thanks.

« Previous |

Powered by Textpattern | Tranquility White made TXP-ready by Textpattern Templates