advertisement

Print

Developing Mapufacture

by Mikel Maron
06/14/2005

Editor's note: Mikel Maron is the creator of mapufacture and worldKit. In this article, Mikel traces mapufacture's development, its underpinnings, projects where it's in use, and worldKit, mapufacture's visualization engine. Mikel is a scheduled to speak at O'Reilly's upcoming Where 2.0 Conference, June 29-30 in San Francisco.

Mapping should be as easy as writing a weblog, as powerful as a desktop geographical information system (GIS), and go beyond to take advantage of the ecosystem of web services and infrastructure. It should be open to all those with unique perspectives on our common ground, but not require great investment in money or training on the tools. It should not require you to be an expert in mapping to share your expertise. This approach has motivated the development of worldKit and now mapufacture.

Mapufacture is a new service to browse, build, and share interactive web maps, on a global or local scale. It combines user-created geodata with freely available worldwide satellite and mapping imagery, and location databases. The visualization engine of mapufacture is worldKit, a Flash-based tool that builds maps from RSS feeds. In this article, I'll introduce you to mapufacture, but first I'll provide an overview of worldKit, whose visualization capabilities are on par with any GIS viewer.

worldKit

World as a Blog came about a couple of years ago to visualize the global immediacy enabled by weblogs. Weblogs.com, RSS, and GeoURL tags were stitched together to plot weblog posts in near real time. The power of that visualization convinced me of the great usefulness of web-based maps, prompting me to package World as a Blog for reuse, and release it as worldKit. Designers, coders, and power users could now easily build maps with little development. worldKit has been deployed for many uses, including animation of tsunami simulations, sharing kayaking spots in the Chesapeake Bay, and mapping Linux distributions.

Where 2.0 Conference.

worldKit is written in Flash ActionScript, reads annotations in geocoded RSS, and is configured in a simple XML format. Obviously, the quality of pure Ajax applications has improved tremendously, so I'll share a few thoughts on the choice of Flash. The Flash Player provides extremely efficient image manipulation and vector graphics, near ubiquitous experience across browsers, platforms, and devicesówith more improvements and more open development platforms on the horizon. Still, the similarity of ActionScript and JavaScript makes a port of worldKit to pure Ajax easy and possible, if that is needed. Many map applications have worked best by keeping form-based interaction within the browser, and communicating changes to worldKit by JavaScript. It's about choosing the right tool for the right job.

Geocoded RSS

Geocoded RSS leverages the infrastructure of tools and services built around publishing and aggregation for repurposing in the Geospatial Web. There is a need for more sophisticated protocols and formats, like the Open Geospatial Consortium (OGC) standards, and worldKit has begun to support those, but for widespread geodata creation, geocoded RSS is more than sufficient. For example, the U.S. Geological Survey (USGS) is publishing geocoded RSS earthquake alerts, and GeoURL includes location data in its RSS feeds of nearby sites.

XML

Location information is specified in the "geo" namespace, using <geo:lat> and <geo:long> tags within an RSS <item>. The <title>, <description>, and <link> fields are used to build the content of an annotation. RSS 1.0, 2.0, and Atom flavors are supported, as well as expected variations in the geo tags. <geo:line> and <geo:polygon> are also supported to draw more complex annotations. Detailed instructions for writing geocoded RSS is listed in worldKit's documentation. There are plugins for many blogging and CMS tools (Moveable Type, WordPress, Radio Userland, etc.) to integrate geocoding directly in the RSS publishing process. And it's easy enough to generate RSS from databases, or to write manually.

For people without access to the RSS generator of their tools, geotags can be written directly within the content or tags of an entry. Geotags are formed like geo:lat=* and geo:long=* and written within accessible forms, then published in the <description> or <dc:subject> fields in RSS. This method has been utilized to add mapping to services like TypePad, del.icio.us, and Yahoo 360.

Bringing Geospatial Web Services Together

Mapufacture uses public sources of imagery for base maps through Web Map Service (WMS) interfaces. worldKit tiles by zoom level and pan location, and constructs WMS requests covering tiles as they come into view. Global satellite data from Landsat 7 is available from JPL's OnEarth. Political and city borders, coastlines, and bodies of water (with labeled place names) are derived from VMap0, a decommissioned U.S. military digital map set. Detailed aerial and topographic maps for the U.S. from the USGS are supplied by TerraServer. A WMS source for Tiger street maps from the U.S. Census is in development.

Location lookup is handled by two RESTful web services, backed again by the Census Bureau and decommissioned military data. geocoder.us is used to look up U.S. street addresses, and the worldKit geocoder looks up city locations worldwide. The current location in mapufacture is always available, to be utilized for geotags in RSS authoring.

Annotations can be added by submitting the URL of an RSS feed, or a flickr photo stream URL. Thanks to photo mapping projects like Geobloggers, Mappr, flickr world map, and mapping flickr, flickr contains one of the largest collections of user-created geographic data.

Map layer selection, navigation, and RSS annotation all occurs application-like without browser refresh, via Ajax and Flash's XML communication. Once a map is constructed, the map can be stored on the system at a unique URL.

Today and Tomorrow

Mapufacture has already been incorporated into a couple of interesting collaborative projects. The Open Guide to London is a wiki-powered city guide with knowledge of thousands of places across London. Every neighborhood and category page now has a link on the right side to a mapufacture map plotting these locations (like this map of pubs in London). In Chicago, Sage is building a review service of Chicago restaurants that anyone can contribute by posting to del.icio.us. Posts tagged with Chicago restaurants geotagged, along with geotags, are mapped in mapufacture. These projects really demonstrate how to integrate across the tapestry of web services.

Mapufacture is out and complete now, yet there are big plans for the future. The interface will be expanded to enable creation of geocoded RSS directly within the map, and permit more of the display customizations available in worldKit. Most promising, as geocoded RSS is created and published for maps, those annotations will be aggregated within mapufacture, and likely elsewhere across the network. Searches on this collected geodata, by location, keywords, and tags, will lead to all sorts of powerful remixes and the emergence of a user-led, Geospatial web.

Mikel Maron is founder and developer of mapufacture and worldKit. He's previously worked as senior developer of My Yahoo, and researched evolutionary models of ecosystems at the University of Sussex.


Return to the OnDotNet.com