Geotagging Web Pages and RSS Feeds
For a Web site, several means of geotagging are available. My previous article explained how to embed the site's geographic information in its DNS entry. Other options also allow this information to be placed within a site or each individual page. These are the older ICBM tags and the newer, more generic geo-structure tags.
The ICBM (original acronym is Intercontinental Ballistic Missile) tags derive from a more historical application, as described in the AntiOnline jargon dictionary:
(Also 'missile address') The form used to register a site with the Usenet mapping project, back before the day of pervasive Internet, included a blank for longitude and latitude, preferably to seconds-of-arc accuracy. This was actually used for generating geographically-correct maps of Usenet links on a plotter; however, it became traditional to refer to this as one's 'ICBM address' or 'missile address', and some people include it in their sig block with that name. (A real missile address would include target elevation.)
ICBM tags are limited to latitude and longitude and do not include other regional information, such as city or country. From Matt Croydon's PostNeo, the RFC (request for comment) of the syntax is as follows:
<meta name='ICBM' content="latitude, longitude" />
This tag would be included in your Web page's <head> section.
Another means of embedding geographic metadata is through geo-structure tags. These geo-structure tags can include latitude and longitude information as well as regional information and an extra placename. The placename could contain the specific address of the person or business. Or, it could be useful for providing a location that may not have a specific point but covering a broader region, such as a city or district. The following example is for the Museo Nacional Del Prado, in Madrid, Spain.
<meta name="geo.position" content="40.4157;-3.6947" /> <meta name="geo.region" content="ES-M"> <meta name="geo.placename" content="Paseo del Prado">
I obtained the geo.position information using Multimap, given the address provided on the museum's Web page. The geo.region uses the ISO-3166-1 Country Names and Region Names specifications. For the US and Canada, this is the abbreviation for the state or province; it varies in other countries. All together, the code for my Web site looks like this:
<meta name="DC.title" content="High Earth Orbit" /> <meta name="ICBM" content="42.4266, -83.49307" /> <meta name="geo.position" content="42.4266;-83.49307" /> <meta name="geo.region" content="US-MI"> <meta name="geo.placename" content="Northville">
As mentioned in the introduction, Multimap provides a location service that offers hotels located within the area of the maps you have selected. This service is provided by the Accommodation Search Engine Network. The Web pages on the ASE site employ the use of commented-out tables to hide the geographic information. The Multimap Web service then pulls this information from each of the hotels' Web pages or backend databases. This method is not recommended, however, because it is not standard and is difficult to use for applications and other Web services. An example of this block is shown below:
<!-- <a name="geo"></a><br> <table> <tr class="bg2"> <td class="head2">Geographical Information:</td> </tr> <tr class="bg1"> <td class="text"> <span>Accuracy:</span>Property<br> <span>Lat:</span>39.894337<br> <span>Long:</span>-83.807657<br> <span>TimeZone:</span>Eastern<br> </td> </tr> </table> -->
Besides geotagging a Web site, it is possible to geotag the source of an RSS feed as well as the individual articles. By geotagging each article, your feed can provide entries from various locations. Then, these entries can be displayed on a map where users can read about locations that interest them. Alternatively, by geotagging the source of the feed, a directory or opml file could provide feeds based on user-selected locations.
The Resource Description Framework Interest Group (RDFIG) has published a solidifying standard for the geospatial vocabulary. It includes specifying latitude, longitude and, optionally, altitude. This is similar to the geo tags discussed above, with small syntactic differences. Furthermore, the RDF requires you to specify an XML namespace (xmlns) for the WGS84 geodetic reference datum.
<rdf:RDF > <geo:Point> <geo:lat>55.701</geo:lat> <geo:long>12.552</geo:long> <geo:alt>52.4</geo:alt> </geo:Point> </rdf:RDF>
The ICBM standard discussed above also can be used in tagging an RSS feed. Again, an XML namespace is used to specify the keywords of the file, and the tags are included either in the header or within the item tags. Here is example from the USGS Earthquake feed of events over 2.5 on the Richter scale in the last 7 days:
<rss version="2.0" > <item> <title>M 3.7, Southern Alaska</title> <description>January 02, 2005 03:55:52 GMT</description> <link>http://earthquake.usgs.gov/recenteqsww/Quakes/ak00043775.htm</link> <icbm:latitude>60.4780</icbm:latitude> <icbm:longitude>-152.4355</icbm:longitude> <dc:subject>3</dc:subject> <dc:subject>pasthour</dc:subject> </item>
Finally, some Weblog services may prevent users from adding new tags to RSS feeds. In this case, it is acceptable for some sites and packages to embed the geographic information in <dc:subject> tags, as shown below:
<?xml version="1.0"?> <rss version="2.0" > <channel> <item> <title>Example Title</title> <link>http://site.com/geo</link> <description>Example Description</description> <dc:subject>geo:lat=33.00 geo:long=-44.54</dc:subject> </item> </channel> </rss>
Several Weblog packages already incorporate the ability to specify a geographic location within an entry as well as for the entire Weblog. This geographic information then can be included for users when reading the Weblog through their browsers or through their own aggregators. Each entry, when posted, is assigned either a default location or is given a new location. The following is an example of the geotagged RSS feed generated by Wordpress v1.2:
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" > <channel> <title>High Earth Orbit</title> <link>http://highearthorbit.com</link> <description>LinuxJournal Example</description> <icbm:latitude>42.4266</icbm:latitude> <icbm:longitude>-83.4931</icbm:longitude> <copyright>Copyright 2005</copyright> <pubDate>Wed, 05 Jan 2005 18:54:47 +0000</pubDate> <generator>http://wordpress.org/?v=1.2</generator> <item> <title>Sample Title</title> <link>http://highearthorbit.com/index.php?p=121</link> <pubDate>Wed, 05 Jan 2005 18:54:47 +0000</pubDate> <category>Sample Category</category> <guid>http://highearthorbit.com/index.php?p=121</guid> <description>Sample Description</description> <geo:Point> <geo:lat>42.5021</geo:lat> <geo:long>-83.1454</geo:long> </geo:Point> <icbm:latitude>42.5021</icbm:latitude> <icbm:longitude>-83.1454</icbm:longitude> </item> </channel> </rss>
For more information on other particular Weblogs, check out the Worldkit Documentation.
Free DevOps eBooks, Videos, and more!
Regardless of where you are in your DevOps process, Linux Journal can help!
We offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, and advice & help from the expert sources like:
- Linux Journal
- Users, Permissions and Multitenant Sites
- New Products
- Flexible Access Control with Squid Proxy
- Security in Three Ds: Detect, Decide and Deny
- High-Availability Storage with HA-LVM
- Tighten Up SSH
- DevOps: Everything You Need to Know
- Solving ODEs on Linux
- Non-Linux FOSS: MenuMeters
- March 2015 Issue of Linux Journal: System Administration