Recently the
Free and Open Source Software Learning Centre (FOSSLC) held their annual
Summercamp in Ottawa. Haris Kurtagic and I prepared a presentation on a RESTful implementation of an open API for data access that Haris has developed and that has been implemented by Jason Birch at the City of Nanaimo and by Haris at a Slovenian water company. This
presentation is now on-line at the FOSSLC site including audio, video, and the presentation itself. I've
blogged about this before and Haris and I have published an
article in the on-line journal OSBR.
Parenthetically, one of the really cool things about FOSSLC is that the presentations from Summercamps and other events that they organize are available on line.
Feature Data Object API
A critical guideline for sharing data is to avoid making copies, because as soon as you make a copy, your data maintenance problem becomes much more complicated. The Feature Data Object API (FDO) was developed and designed to help address this problem. FDO is designed to be read/write so that you can not only read data, but you can also modify and update data sources without making copies. FDO is a project of the Open Source Geospatial Foundation (OSGEO).
FDO supports many different types of data stores including shape files, SDF, Oracle Spatial/Locator, SQL Server, MySQL, PostGIS and other spatial data stores.
FDO is fundamentally a C++ API, but it is available in Web programming environments such as PHP, JSP, and .Net/ASP. All of which is fine if you're a programmer.
Open Web-based Spatial Data Access for Non-programmers
But what if you're not a programmer and want to access spatial data on-line ? To begin to address this challenge, at FOSSLC we outlined an open architecture implemented by Haris and based on
REST (Representational State Transfer) that provides web services for geospatial data. The most important feature of this architecture is that because it's REST, all you need to know how to do to access spatial data on-line for both read and write is to write an URL, the string of characters at the top of your browser you use to link to web sites. To be concrete here's an example,
http://maps.nanaimo.ca/data/property/.html?filter_1_and_equal_house=2323&filter_2_and_like_street=Rosstown&count=20&submit=Search
You can choose how you want the data to come back, as HTML, KML, XML, GeoJSON, or PNG just by changing the "html" in the URL.
For example,
http://maps.nanaimo.ca/data/property/.kml?filter_1_and_equal_house=2323&filter_2_and_like_street=Rosstown&count=20&submit=Search
will retrieve KML which will invoke Google Earth.
In the presentation at FOSSLC we provided some examples of RESTful URLs for both the City of Nanaimo (
Nanaimo Geodata) and the water company in Slovenia (
GeoData Site), both of which you can try yourself. For English speakers with no Slovenian I would recommend the Nanaimo site.