Status
Getting a tour of Burning Man headquarters
Location
San Francisco, CA
Subscribe to GeoRSS Subscribe to KML


Web

Google releases libkml 0.1 alpha

Published in Google, KML


At the OGC Technical Committee meeting today in St. Louis, Google pushed out the initial release of an open-source library for parsing and publishing KML. Read more about it on the Google Open Source Blog.

libkml was originally “announced” about 6 months ago as part of the kick-off of the standardization of KML within the OGC.

libkml is interesting in several ways. KML itself is just an XML specification for geographic data. Nothing really special compared to other XML formats. However, as I’ve championed there is a big difference between types of developers that use and read schemas, and those that use libraries or simple examples and documentation to implement parsers or tools. This is justified in that developers (both consumers and producers as discussed here) are usually trying to solve some other problem and want to use a format like KML merely as a mechanism to publish and visualize their information. By providing a stable and full-featured library, developers are free to build tools around the library without having to deal with the intricacies and issues of the format itself.

Similarly to the effect of opening the standardization of KML to the OGC effected other organizations like Microsoft to embrace the format - an open-source library also encourages other implementations, or competitors, of KML applications. Google is primarily in the business of data organization and search - so the more tools that publish or utilize a format they can then index is a win.

Another implication of libkml is that a single library can grow with versions and features, again freeing the developer from having to track future versions or bug fixes to the format.

Lastly, libkml is written to be fast - which is essential for handling large KML documents, realtime visualization, and potentially even mobile/limited-resource clients. However, how small libkml can be made is left to be seen.

As Michael Ashbridge pointed out, this is a very “alpha release, not Beta in the Google sense”. In fact, in the documentation there is the very clear disclaimer: “THIS IS ALHPA SOFTWARE. Expect changes. We do not yet recommend use in production code.”

There are still a number of features that are not yet implemented that are forthcoming, or can be accomplished by the broader community. They’re looking for feedback from developers on the interface and functionality. The library is C++, with SWIG bindings currently in Ruby, Java, Python, Perl and PHP. There are examples for developers to get up and running quickly.

It’s released under the new BSD license. It is meant to be as open as possible for developers to use in both open-source and closed-source projects without worrying about interference with other licenses.

It’s great to see Google pushing on the open-{source,format} in geospatial. They’ve obviously done a lot to raise public awareness of placemarking and geospatial data with GoogleMaps and GoogleEarth - they’re now engaging the GIS community and helping them.

Hopefully people, at least developers and users in the know, can soon stop referring to KML strictly as “GoogleEarth format” or “GoogleEarth Layer”.

Dealing with Reality

An issue we commonly run into is the reality that there are a lot of KML and other data sources in the wild that are malformed. There is the common response “it works in GoogleMaps, why doesn’t it work elsewhere?”

libkml is able to handle, to some extext, ‘bad’ KML, but is very strict in outputting KML that is generated using the DOM API in the library. Hopefully this generally raises the quality of available KML.

lib{geo}

A potential extension to libkml that excites me would be the ability ingest a KML document and publish it out as other formats such as GeoRSS or GML. Especially if a higher-level interface was built onto libkml that abstracted away the specifics of KML and instead provided an interface for general geometry (and feature) creation and manipulation.

Unfortunately since my laptop hard drive died last week, I don’t have a development machine to build and play with this yet. But I expect to use this library in a number of projects.

Google Code Project: libkml.


FooCamp Takeaway - humans are behind the machine

Published in Conference, Web


GoldenGate BridgeFooCamp was a ton of fun - nothing beats spending a weekend in beautiful weather (outside at a conference? it can happen) talking with lots of smart, interesting, and funny people about a complete range of issues (humanitarian aid in Africa, to tracking your vehicle mileage in GoogleEarth).

The primary take-away I gained insight on was how much human is behind the machine/network for a great solution. There is a lot of research and effort spent designing better algorithms, faster processors, and automation. While we may be able to achieve better results and understanding through mass computation and filtering, it’s the human ability to pattern match and understand complex, arbitrary concepts that make for the best tool.

So the question remains, where is the boundary between the human-machine operation? How much effort do you let the machine perform, and how best can you allow human-bias to influence the results at a sufficiently high level that the entire thing scales. Are users tagging sites enough, or should their be a concierge type service that users can submit questions and get semi-realtime responses or aggregated similar historical responses (similar to an *answers site)?

Searches that are filtered by our social networks provides a very good solution. I’ve specified by preferences by the friends I’ve chosen. However, this is a very passive solution and doesn’t account for the fact that I may like Bob and his taste in music, but I wouldn’t trust his recommendation with food. It seems like there is some solution between tagging, IRC/IM, forums, and traditional search.

Speaking of search

Another very exciting thing was pimping the new OpenSearch-Geo. It’s interesting how few developers who are usually “in the know”, know that OpenSearch is a very much alive, and easy to implement, standard that can greatly enhance their service.

I think we’ll soon seen a number of popular sites get OpenSearch capabilities and also some better browser support.

Now that the weekend is over, I get to enjoy a relaxing vacation for a week in Hawaii before heading off to the UK for more conferencing.


GeoTruc - standards tool

Published in Geo, GeoRSS, Web


Mickaël ‘Korbinus’ Graf has released an improved geo:truc. If you haven’t tried it yet, geo:truc is a great and simple service for generating the GeoData markup in currently 8 different formats: Machine tags, geo Microformat, GeoJSON, GeoRSS (GML), GeoRSS (simple), HTML, KML, and GeoRSS-W3C.

To use it you can just click on the map, or enter a location in the form field. Then click on the link for the format you want to see. Read more about it on Mickaël’s blog. One of the neatest improvements, and very useful for integrating into another application, is the webservice:

What is really great about geo:truc is that it provides a very simple and easy to use tool for users to get somewhat complex information. I believe his primary purpose was to provide scientists a mechanism for geocoding their specimen identification experiments. These are non-GIS users who want to store geographic information. Now, they can do it and include it on their websites/documents and share with the world.

But why geo:truc? Mickaël’s reasoning behind the name explains it very well:

“Truc” is a french word meaning an undefined thing, so I joked by calling it “geo:truc”.


University Campus Maps?

Published in Geo, Maps, Metacarta


Why is it that most major universities maps are still relegated to the old scanned paper copy? Check out the beauty that is University of Michigan’s Campus map. It’s amazing that a major university still uses GIF images for their campus maps.

Now, they know what mapping is, check out their cool transit services. There is even a 3D Atlas of Ann Arbor in Google Earth.

It’s not hard to make this into a more usable dynamic map. I used the MetaCarta’s Map Rectifier to take the campus map image, rectify it using several control points (intersections and circles work great for this) and created a slippy campus map.

University of Michigan OpenLayers Map

You can play with the actual Campus Map here on MapSomething. The next steps would be searchable campus directory, click on buildings to get info on rooms, open times, phone numbers, a way to upload your schedule and have it plan out your route, etc.

Maybe I should send this on over to the School of Information or the Community Information Corps


Google GeoRSS & Open-Source map utilities

Published in Geo, GeoRSS, Google


I was gone for 5 days to the Ontario Curling Association’s Colts Provincial Playdowns, the top-tier competition after playing down against 130 other curling teams. We held our own, but the competition was very stiff.

It was a tough time to be away, a lot of amazing news came out. First and foremost is that Google adds support for GeoRSS. This is exciting news because it demonstrates the maturity and interest in the syndication of geographic content in blogs, CMS’s, sites, and news.

This will also add a little bit of more difficulty moving forward in GeoRSS. Now that a major company has added support, and assumedly a lot more developers will add support now as well, then the specification has to be much more cognizant of future changes, users, and upgrades. Before, the specification was really guided by the majority of developers using the standard itself. If some spec was changed, we all went out and updated our libraries. Now, however, we really need to denote versions, and how users can update their tools to accomodate both the new version and backwards compatibility.

On top of that exciting news, Google also open-sourced part of the GoogleMaps library. See the
gmaps-utility-library-dev FAQ. Currently this is limited to the GMarkerManager, but demonstrates their interest in opening the library up for interesting projects, ideas, and hacks.