Saturday, July 17, 2010

Flickr Places

Flickr is really great for a number of reasons. It's free, or really cheap if your collection exceeds 200 photos. It has social networking, including tagging, commenting, groups, etc. And Flickr provides an extremely well documented Application Programming Interface (API) so developers can create sites using images and data stored on Flickr servers.

But the gem that can make our project work is Flickr's Places. Places basically takes a geotagged image, and associates it with different hierarchical levels of geography (country/region or state/city/neighborhood). This lets you essentially "visit" different places in the world, at least through the eyes of images on Flickr (like Portland, for example).

Much of this is built upon Yahoo's GeoPlanet architecture, which includes identifiers called Where On Earth IDs (WOEID). Every place, whether it is a city, country, neighborhood, etc., has a WOEID. Flickr has a nice interface for learning more about a place (like Portland), and everything associated with its WOEID.

Fortunately for us, Flickr also provides some great API functions for querying information and images using a WOEID as a limiting criteria. Here are two such functions that we'll use in our project:
  • flickr.places.placesForTags: returns a list of places (and their corresponding WOEIDs) that are "children" of a WOEID you provide. For example, if you provide the WOEID for Portland, the resulting set will be neighborhoods of Portland, since neighborhoods are "children" of a city. To take this further, you can specify that any places returned must have geotagged images that contain a certain Flickr tag. So if you were interested in getting a list of Portland neighborhoods that had images tagged with "art", you could do so.
  • flickr.photos.search: this is probably the most basic Flickr API function - you provide some search criteria, and get back a set images (or data to create the image paths with a scripting language). For example, we could get a set of images tagged with "art" for the Mississippi neighborhood of Portland.
So on a very basic level, here's how the forthcoming website for our project will work:

  1. We'll use flickr.places.placesForTags to get a list of New York City neighborhoods that has images our students have tagged. In all likelihood, we'll use Flickr machine tags in order to make our query precise. The response will be displayed to the user as a list of "clickable" neighborhoods.
  2. When the user clicks on a neighborhood, the site will use flickr.photos.search to return images in that neighborhood tagged by our students.
Again, that's the very basic functioning. We'll also allow users view images based on metadata values the students enter for images, and ideally will let users view neighborhood street art images over time. Once we have our specific plans in place, I'll post how we'll accomplish these goals.


But from a developer standpoint, there really won't be too much work. Flickr's "Places" has already done the heavy lifting by providing the architecture and the API methods. All we have to do is get the images in Flickr, map and tag them, and write some code to query and re-purpose the API responses. Obviously Margo and her students have a tall task to actually do the field work. But if done correctly, we should have a well-functioning site almost entirely driven by Flickr.

(image above Cardboard Guitar by opalmirror)

No comments:

Post a Comment