Yahoo Releases Internet Location Platform

This week Yahoo announced its new Internet Location Platform API, "a resource for managing all geo-permanent named places on Earth" that "provide[s] the Yahoo! Geographic Developer Community with the vocabulary and grammar to describe the world's geography in an unequivocal, permanent, and language-neutral manner." (For more details see our new API profile.)

The RESTful read-only API associates "almost any named place on the Earth" with a unique identifier (called a "Where on Earth ID" or WOEID). Using Berkeley, California as an example you can see how the API uses WOEIDs to tell you about the relationship among locations. First, to look up the WOEID for Berkeley, CA:'Berkeley%20CA%20USA')

returns an XML response tells you, among other things, the WOEID for Berkeley, CA (2362930), the centroid of Berkeley (37.869499, -122.270531), and a bounding box for the city. For a given WOEID, you can get the same data. In our example,

resolves the WOEID of 2362930 back to Berkeley, CA.

The Yahoo! Internet Location Platform describes the relationships among locations in a variety of hierarchies. First of all, there is the concept of a locations' parent. Any given WOEID has at most one parent. You can get the parent Berkeley, CA with

which returns a detailed record for Alameda County, the county in which Berkeley is located. You can then ask the API for the entire parent-oriented hierarchy (a WOEID's parent, parent's parent, etc.) with

which returns Alameda County -> California -> United States -> North America.

You can use the API to ask for the children of a WOEID. The URL;count=100

returns the locations whose parent is Berkeley, CA. You'll see a variety of place types in the list, including "suburbs" (e.g., South Berkeley) and zip codes (e.g., 94703). Note the use of the matrix parameter count to increase the number of children returned to up to 100.

Not surprisingly, you can ask for the siblings of a WOEID, all the other locations that share the same parent. Among the siblings of Berkeley, CA listed in;count=100 are such places as Albany, Oakland, and Union City, which are other cities located in Alameda County.

What makes the Yahoo! Internet Location Platform especially interesting is how it supports "unofficial" or "informal" relationships beyond the strict one-parent-at-most hierarchy in belongtos and neighbors methods. The URL;count=100

returns "neighbors" to Berkeley, CA including Albany (which has the same parent as Berkeley) but also El Cerrito (which has a different parent, namely, Contra Costa County). It's puzzling, however, why Oakland is not considered a neighbor to Berkeley. I suppose the caveat that "that neighbors are not necessarily geographically contiguous" can be extended to "geographically continguous locations are not necessarily neighbors".

Or by using the belongtos verb you can learn about various informal aggregations. The URL;count=100

returns both official containing units for Berkeley (e.g., Alameda County and California) but also somewhat fuzzier units (West Coast, San Francisco Bay Area, and New Southwest).

Finally, there's support for "location names in multiple languages including English, French, German, Italian, Spanish and Dutch as well as local double-byte character set data in Japan, Hong Kong, Korea and Taiwan." For example, look at record for the USA in English, French, and Chinese.

WOEIDs are already being used in Flickr and its API, as Rev Dan Catt documents. Presumably, the Location Platform API will be used throughout Yahoo!'s other services (such as the Fire Eagle API.)

However, will WOEIDs be widely adopted outside of the context of using Yahoo!'s services? The breadth of coverage should be attractive to many developers:

The Yahoo! Internet Location Platform contains about six million places. Coverage varies from country-to-country but globally includes several hundred thousand unique administrative areas with half a million variant names; several thousand historical administrative areas; over two million unique settlements and suburbs, and two-and-a-half million unique postcode points covering about 150 countries, plus a significant number of points of interest, Colloquial Regions, Area Codes, Time Zones, and Islands.

However, there are important questions of ownership/restrictions on this data the possibility of lock-in. It'd be interesting, for instance, to compare the functionality and depth of the Yahoo! Internet Location Platform with the data and services currently in the GeoNames API (see its ProgrammableWeb profile and the list of 38 mashups using the API.) On a technical note, the current API doesn't seem to support reverse geocoding (to return a place name for a given latitude and longitude), functionality found in the Flickr API and GeoNames API).

For further analysis, you can read Marshall Kirkpatrick's piece in ReadWriteWeb, Brady Forrest in O'Reilly Radar, as well as Rev Dan Catt's detailed analysis, mentioned above.

Be sure to read the next Mapping article: Dash: An API for Your Car


Comments (3)

[...] some ways this can be seen as complementary to Yahoo’s new Internet Location Platform in that it will provide deeper data about a given [...]

[...] based on different geographic reference identifiers (e.g., Yahoo’s Where on Earth ID, or WOEID). The idea behind geosetta is that developers should be able to easily identify and cross reference [...]

[...] WOEIDs are unique identifiers for place names around the world (see our additional coverage of WOEIDs and Yahoo’s Placemaker API for more [...]