When Google released Google Earth as a free download several years ago, people quickly learned what Keyhole Markup Language (KML). GIS professionals were quick to build translators to convert their data from several different formats into KML for viewing in Google Earth. The better of these tools let the user maintain the mapping symbology from their GIS software platform into the KML.
In the last couple of years, and enormous amount of geospatial data has been converted to KML to be viewed in Google Earth. In response, may geospatial visualization packages started to let users load KML into their own viewers. So where does KML actually fit into the whole geospatial realm? Will it become a standardized way to store geospatial data?
KML has a couple of things going for it. It’s based on XML and is well documented. It represents a pretty good method for encoding spatial data and symbology (and, to a lesser extent, attribution). But by far the biggest thing KML has going for it is that it is native to Google Earth. To that end, KML is really oriented toward defining displayable geospatial data. I have yet to see any code that performs any geosprocessing on KML, and there is a lot of overhead with KML then with, as an example, a shapefile.
So where does KML fit in compared to GIS data? I think that the answer to that lies with what people with a GIS background typically do with KML. They dynamically generate it from traditional geospatial data stores (shapefiles, geodatabases, etc), and they allow their own viewers to load and see KML files.
KML is serving the role that is usually found within GIS software. Whenever a file is loaded, a symbology class is assigned to it to define how the data will look in the map. Most people, other than programmers, never actually see this information. They only see the windows that let them alter the symbology of data, and the data itself. Some GIS packages allow users to save “layer” information that references the originating spatial data (an ESRI ‘.lyr’ file is an example).
So, in conclusion, it appears that KML represents what is typically in in-memory representation of geospatial and symbology data in most geospatial software applications, offering KML authors a very unique, open, specification at that level of representation.