Keyhole Markup Language (KML)

Keyhole Markup Language (KML) is een op XML gebaseerde opmaaktaal die is ontworpen voor het annoteren en overlappen van visualisaties op diverse tweedimensionale, op het Web gebaseerde online kaarten of driedimensionale Earth-browsers (zoals Google Earth). In feite werd KML oorspronkelijk ontwikkeld voor gebruik met Google Earth; omdat dat project oorspronkelijk Keyhole heette, evenals het bedrijf dat dit werk ondernam, volgde de verwante opmaaktaal dit voorbeeld. Toen Google in 2004 Keyhole overnam, ging ook dat project mee en werd het uiteindelijk Google Earth. De naam "Keyhole" is een verwijzing naar de oorspronkelijke KH militaire verkenningssatellieten die in het midden van de jaren zeventig werden gelanceerd en de eerste "oog-in-de-hemel" foto's maakten die zo vaak worden bekeken in Google Earth en andere geobrowsers.

Een KML-bestand bevat specificaties voor verschillende functies voor weergave in Google Earth, Maps en Mobile, en andere driedimensionale Earth of geobrowser programma's. De functieset van KML omvat plaatsmarkeringen, 3D-modellen, tekstbeschrijvingen, afbeeldingen, polygonen, enzovoort. Elke locatie heeft een geassocieerde lengte- en breedtegraad en er kunnen view-specifieke gegevens zoals koers, hoogte en helling worden verstrekt om een zogenaamde "cameraweergave" voor geospatiale gegevens te definiëren. KML heeft een deel van zijn grammatica gemeen met de geography markup language, of GML, een Open XML markup language die is gedefinieerd om geografische gegevens en kenmerken uit te drukken.

De huidige specificatie voor KML is 2.2, die is ingediend bij het Open Geospatial Consortium (OGC) ter bekrachtiging als een open standaard die door elke geobrowser mag worden gebruikt. Aangezien het OGC reeds de voogdij heeft over GML, sluit dit goed aan. KML-documenten worden vaak verspreid in de vorm van KMZ-bestanden, die niets meer zijn dan een gezipt KML-document in een bestand met een .kmz-extensie. Een KMZ-bestand bevat meestal één KML-document, steevast "doc.kml" genaamd, samen met afbeeldingen voor overlays en iconen waarnaar intern kan worden verwezen.