The MapML Project

Map Markup Language (MapML) is a project initiated by the W3C Maps for HTML Community Group. MapML extends the use of Open Geospatial Consortium (OGC) web map services by offering a hypertext for Web maps that is analogous to what HTML is for Web pages.

Background

By defining innovative geoprocessing operations using the web infrastructure, the Open Geospatial Consortium community is making significant contributions to the world and the IT infrastructure at large. Built using the web infrastructure, the OGC geodata service standards are a response to the lack of interoperability between geospatial systems that has hampered the growth of the geospatial industry for many years. Today, a large number of communities across the globe are using OGC standards and in particular the Web Map and Web Map Tiling standards (WMS and WMTS). But more can be done to make “map content” readily accessible to all users on the web. While the OGC WMS service facilitates the use of maps by allowing application developers and system integrators to generate and publish maps on the web, the OGC web map interface standards are too complex for use by non-initiated geospatial web users. The MapML community is proposing a simple Map format that can be deployed as an extension to the OGC WMS, WFS (Web Feature Service) and WMTS and integrated by any web user into their web pages. Like the OGC community, the MapML community relies on existing Web standards and best practices in the web industry, with special emphasis on URLs and simple hypertext for state transitions and standard styling techniques. The objective is to enable the convergence of modern Web mapping into the main stream of Web standards, to the mutual benefit of web mapping communities and geospatial data providers.

Interoperability – What does it mean for maps?

In the past, paper or Mylar maps could be readily viewed individually. If one needed to relate the information visible on one map to the information on another, it could be done, but often not without great effort. At a minimum, the process involved transcription, or if we were lucky enough that the base maps shared a scale and projection, it could be done with light tables and transparent overlays and reproductions. Computerization in the form of Geographic Information Systems (GIS) aided the process, but it was still onerous to get the inputs into formats that enabled such integration, and often the scale of compilation was a limiting factor.

Today, multiple mobile, server and desktop operating system platforms exist and the client installations are counted in their billions.  Back then, GIS was the dominant paradigm for consumption of geospatial information, and GIS users were also often programmers themselves.  Creating spatial data infrastructure (SDI) standards which targeted GIS developers and geospatial users was an obvious choice.  Another obvious choice by OGC in 2000, was the use of a truly interoperable platform which continues to redefine the entire IT market: the World Wide Web.  As Web mapping gained popularity, map integration and interoperability even got its own name: the “mashup”. The term went viral, and came to describe the integration of virtually any type of information; however it continues to be associated with maps by connotation.

Today, efficient decision support systems rely on map information that must be available at the touch of a phone screen, and not only available to developers. Current mapping standards require that mapping information be conditioned prior to being re-used as part of a mashup operation. Maps must be available and optimized for use under the same projection, scale and spatial extent, ready for any mashup. When two or more map data sources share these properties, they can be at least visually compared, which is all that is often necessary to get value from the underlying data: humans have an innate ability to judge proximity on a map. It is not enough, however, to supply SDIs via Web services, which in theory provide the ability to do such pre-processing “on the fly”. The inherently mathematical nature of maps and spatial data means that such integration is accessible only to developers and specialists. Decisions must still be made which require sophisticated knowledge of spatial information, and even seasoned developers often lack such skills.

MapML is explicitly designed to fill that gap. The MapML community proposes a MapML format that can be readily re-used by any web user. To become more interoperable, Spatial Data Infrastructures should prepare their information for direct use and mashup by citizens who consult their phones at need, and who thereby have the ability to visually and quickly compare spatial distribution of resources of any nature.

To ensure interoperability, service providers must do the work ahead of time; enhance their OGC WMS/WFS/WMTS with a MapML format that can be made available at simple URLs for HTML authors, who are not necessarily developers. In order to be mashable, information including map content must be URL-able.

MapML and the World Wide Web

MapML is designed for use on the World Wide Web infrastructure.  The Web, and the browsers which provide access to it, is made possible by standards: URLs, HTTP, and media types. The HTML vocabulary began in the early 1990s by supporting simple text content, linked together by hyperlinks embedded in the content by “HTML authors”.  Through time, HTML authors have progressively been given the ability to present different media types in their documents, beginning with images, later vector graphics and recently with HTML5, audio and video. In consequence, HTML is often today referred to as “hypermedia”, the term “hypertext” being no longer adequately descriptive.  As described, the Web slowly evolves to include new media types. A major architectural consideration in the design of the Web is political stability. When many servers are cooperatively involved in a system such as the Web, such stability is paramount. By designing the Web to interoperate based on agreement over formats or media types, functional stability is achieved.

The MapML community believes that Maps should be available as one or more media types so that the Web is able to integrate them naturally into its fabric. The benefits of doing so are enormous, both to citizens who want to use their national SDIs as well as to businesses who wish to benefit from the ubiquity of the Web, which as a standards-based public good, transcends operating systems and mobile platforms alike. Although there are many possible paths to integration of maps into the Web, one method proposed by the MapML community is to extend the existing HTML <MAP> element, to allow it to progressively behave like a modern Web map. The syntax could look like the following code:

<map zoom="3" lat="0" lon="0" width="900" height="400" controls>
  <layer src="http://openstreemap.org/osm/" label="OpenStreetMap" checked></layer>
</map>

Of course, HTML is only one way that MapML could be used on the Web. Other clients could include complete GIS systems, content management systems, blog management systems etc.

MapML
Map Markup Language, or MapML, describes a simple UTF-8-only MicroXML format for maps. It encapsulates “map semantics” so that HTML authors can refer to maps with a simple URL, similar to how images or video can be accessed at simple URL. The underlying map service(s) that may be wrapped by the MapML response can (today) be WMS, tile caches (Figure 1, 2) or vector data.  MapML resources can also be static files. The goal of MapML is to be a principal media type for maps which will allow HTML to evolve to include maps and map mashups natively.  Such an extension should be done in the same way HTML has incorporated other media types over time, namely through the addition of an element which supports maps via a simple URL-based mechanism. Note that as for images and video, there need not be one single format which constitutes map media types, however it is certain that to be mashable, they must share some interoperable characteristics: projection, scale and extent.

<mapml>
  <head>
   <title>Canada Base Map - Transportation (CBMT) MapML Service</title>
   <meta http-equiv="Content-Type" content="text/mapml;zoom=3;projection=CBMTILE"/>
   <meta charset="utf-8"/>
   <meta name="projection" content="CBMTILE"/>
   <meta name="zoom" content="3"/>
   <base href="http://geogratis.gc.ca/mapml/en/cbmtile/cbmt/"/>
   <link rel="license" 
         href="http://www.nrcan.gc.ca/earth-sciences/geography/topographic-information/free-data-geogratis/licence/17285" 
         title="Canada Base Map © Natural Resources Canada"/>
  </head>
  <body>
    <extent units="CBMTILE" action="http://geogratis.gc.ca/mapml/en/cbmtile/cbmt/" method="get" enctype="application/x-www-form-urlencoded">
      <input name="xmin" type="xmin" value="3956.0" min="3385.0" max="5267.0"/>
      <input name="ymin" type="ymin" value="4522.0" min="3954.0" max="5069.0"/>
      <input name="xmax" type="xmax" value="4802.0" min="3385.0" max="5267.0"/>
      <input name="ymax" type="ymax" value="4942.0" min="3954.0" max="5069.0"/>
      <input name="zoom" type="zoom" value="3" min="0" max="17"/>
      <input name="projection" type="projection" value="CBMTILE"/>
    </extent>
    <tile col="17" row="18" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/18/17?m4h=t"/>
    <tile col="16" row="18" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/18/16?m4h=t"/>
    <tile col="17" row="17" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/17/17?m4h=t"/>
    <tile col="17" row="19" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/19/17?m4h=t"/>
    <tile col="16" row="17" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/17/16?m4h=t"/>
    <tile col="16" row="19" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/19/16?m4h=t"/>
    <tile col="18" row="18" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/18/18?m4h=t"/>
    <tile col="15" row="18" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/18/15?m4h=t"/>
    <tile col="18" row="17" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/17/18?m4h=t"/>
    <tile col="18" row="19" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/19/18?m4h=t"/>
    <tile col="15" row="17" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/17/15?m4h=t"/>
    <tile col="15" row="19" src="http://geoappext.nrcan.gc.ca/arcgis/rest/services/BaseMaps/CBMT3978/MapServer/tile/3/19/15?m4h=t"/>
  </body>
</mapml>

Figure 1 A MapML document containing tiles

>mashup

Figure 2 A possible rendering of the MapML document from Figure 1

MapML is designed to rely on Web standards such as URLs, Cascading Style Sheets (CSS), media types, the Document Object Model (DOM), and JavaScript. It is thought that by enabling the Web mapping (standards) community to contribute to the Web (standards) community in a manner structured to support the latter’s standards, a constructive virtuous feedback loop between the communities will establish and grow.  Furthermore, by basing the core content model of MapML on existing OGC standards and best practices from the Web mapping community, the virtuous feedback loop will have potential value for both communities.

The vocabulary of MapML is an extended subset of HTML and GeoJSON, which incorporates common idioms of Web mapping such as tile caches, map images and features. MapML enables styling of map features using Cascading Style Sheets, so that map authors can leverage standards for styling and HTML authors will also be able to be map authors for common use cases such as place marks and images. As such, the MapML metamodel is closely aligned to HTML, so that it can be processed (by the user agent) according to the Document Object Model, or DOM. This latter characteristic will allow MapML to support progressive enhancement by JavaScript programmers, since it is certainly impossible to predict the needs of every Web site incorporating maps.

The ultimate goal of MapML to be “URLable”, so that mashups can be created natively in HTML as described above. A prototype Custom Element has been built by the Maps For HTML Community Group, which simulates this ability. The prototype can be used, together with publicly available MapML feeds from the GeoGratis catalogue at: http://geogratis.gc.ca/api/en/nrcan-rncan/ess-sst/-/(urn:iso:format)map-markup-language?sort-field=relevance

For further resources and information on MapML and Maps for HTML, please consult the GeoGratis web site:

http://www.nrcan.gc.ca/earth-sciences/geography/topographic-information/free-data-geogratis/geogratis-web-services/17216#g6

Authors

Peter Rushforth, Natural Resources Canada – Peter.Rushforth@NRCan-RNCan.gc.ca

Edric Keighan, CubeWerx – ekeighan@cubewerx.com

Bookmark and Share