Archivos KMZ

¿Qué es un archivo KMZ?

Un archivo KMZ está formado por un archivo KML principal y cero o más archivos complementarios empaquetados en formato .zip formando una única unidad denominada fichero. A continuación, el archivo KMZ se puede almacenar y enviar por correo electrónico como una única entidad. Un elemento de enlace de red (NetworkLink) puede recuperar un archivo KMZ de un servidor web. Cuando el archivo KMZ se descomprime, el archivo .kml principal y los archivos complementarios se separan según sus formatos y estructura de directorio originales, con sus nombres de archivo y extensiones. Además de ser un formato de fichero, .zip también es un formato de compresión, por lo que un fichero puede incluir un único archivo KML grande. En función del contenido del archivo KML, este proceso da como resultado una compresión de 10:1. Tu archivo KML de 10 KB se puede presentar como un archivo KMZ de 1 KB.

Google Earth y Google Maps pueden leer archivos KML y KMZ directamente y pueden guardar archivos en formato KMZ. De forma predeterminada, el archivo KML principal se denomina doc.kml.

Nota: A modo de aclaración, esta página hace referencia al archivo KML principal del fichero KMZ como doc.kml. Este archivo KML principal puede tener cualquier nombre, siempre que termine en .kml y solo exista un único archivo .kml.

Debes crear un archivo KMZ si tu archivo doc.kml tiene un tamaño superior a 10 KB o si los archivos doc.kml hacen referencia a otros archivos (imágenes, archivos de sonido, modelos o texturas).

Estructura de directorio recomendada

En esta sección se ofrecen algunas recomendaciones sencillas para los creadores de archivos KML o KMZ. El ejemplo utilizado en esta sección procede del sitio web de Jimmy Buffett, que utiliza el formato KML para mostrar sus giras de conciertos previstas y otros datos destacados en Google Earth.

Descarga el archivo KMZ que contiene esta gira (utilizado con permiso).

Nota: Google Earth 6.0 cumple estrictamente el siguiente conjunto de directrices al resolver referencias relativas en un archivo KMZ (consulta concretamente el punto 4 de la siguiente lista). Las versiones anteriores de Google Earth eran menos rigurosas en lo que respecta a la forma en que resolvían estas referencias relativas. Como resultado, es posible que algunas referencias relativas que funcionaban en Google Earth 5.2 y versiones anteriores ahora necesiten ser editadas para funcionar con la versión 6.0 y otras versiones posteriores.

Sigue estas directrices al crear archivos KMZ:

  1. Crea una carpeta que incluya los contenidos de tu archivo KMZ. Asígnale un nombre descriptivo (por ejemplo, buffetthawaiitour).
  2. Coloca el archivo KML predeterminado (doc.kml o cualquier otro nombre que le quieras asignar) en el nivel superior dentro de esta carpeta. Incluye un único archivo .kml. Cuando Google Earth abre un archivo KMZ, escanea el archivo para buscar el primer archivo .kml de la lista e ignora todos los archivos .kml posteriores, si los hubiera, del fichero. Si el fichero contiene varios archivos .kml, no podrás estar seguro de cuál encontrará primero, por lo que tendrás que incluir solo uno.
  3. Incluye una o varias subcarpetas dentro de la carpeta principal para recopilar imágenes, modelos, texturas, archivos de sonido u otros recursos a lo que se hace referencia en el archivo doc.kml. La complejidad de esta estructura de directorio depende del número de archivos complementarios y de tus preferencias de organización.
  4. Utiliza referencias relativas. Para obtener información detallada, consulta el apartado Referencias a archivos externos. Todas las rutas relativas comienzan dentro de la carpeta básica que se ha descrito en el punto 1. Por ejemplo, si un archivo KMZ vacationJournal.kmz se encuentra en el escritorio y su archivo doc.kml hace referencia a un archivo myFavoritePlace.jpg, que también está ubicado en el escritorio, el elemento <href> del archivo doc.kml es ../myFavoritePlace.jpg.
  5. No utilices la extensión .kmz para ninguna de las subcarpetas del archivo KMZ. La extensión .kmz está reservada para el nombre del fichero en sí.

Por ejemplo, a continuación se muestra la estructura de archivos del archivo KMZ de la gira de Jimmy Buffett:

Puesto que existen solo cinco archivos complementarios, todos ellos están recopilados en una subcarpeta denominada files (archivos) dentro de la carpeta principal. Si cargas el archivo en Google Earth y, a continuación, lo copias y lo pegas en un navegador de texto, verás que todos los elementos de referencia de hipertexto (<href>) utilizan referencias relativas a estos archivos complementarios (que representan iconos, una superposición de suelo y el archivo de sonido de la gira).

A continuación, se indica el código KML para una de las referencias de icono:

<IconStyle>
  <scale>1.1</scale>
  <Icon>
    <href>files/icon_surfing.png</href>
  </Icon>
</IconStyle>

A continuación, se indica el código KML para la referencia al archivo de sonido:

<gx:SoundCue>,
  <href>files/Margaritaville.mp3</href>
</gx:SoundCue>

Referencias a archivos externos

El archivo doc.kml generalmente contiene varios enlaces a otros archivos (imágenes, iconos, modelos, texturas y archivos de sonido). Las referencias a estos archivos se incluyen en el atributo href (o a veces, el elemento <href>), que se puede encontrar en los siguientes elementos KML:

Estos enlaces externos pueden ser referencias absolutas (absolute) o relativas (relative), tal y como se describe en la siguiente sección. Pueden hacer referencia a archivos que se encuentren dentro del mismo archivo KMZ o también a archivos incluidos en otros archivos KMZ o almacenados en otros lugares de la Web. A excepción del elemento <sourceHref> del elemento de modelo (<Model>), las referencias relativas siempre se resuelven con el archivo doc.kml, tal y como se explica en la sección Cómo resolver referencias relativas.

Referencias absolutas y referencias relativas

Las referencias absolutas contienen la URL completa del archivo al que están vinculadas. Resultan útiles para archivos publicados en un servidor central y que no sean ambiguos. Sin embargo, si utilizas referencias absolutas a archivos locales, los enlaces se romperán cuando los archivos se muevan a un nuevo sistema. Las referencias relativas evitan este problema.

A continuación se muestra un ejemplo de referencia absoluta a un archivo almacenado en un servidor central:

<Icon>
  <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>

Cómo resolver referencias relativas

En general, las referencias relativas se resuelven en relación con el archivo doc.kml. Cualquier URL relativa se resuelve con el directorio que contiene el archivo, que se considera la raíz del archivo KMZ. En el ejemplo de la gira por Hawái, la URL básica es similar a la siguiente (dependiendo de donde descargues archivo KMZ):

buffetthawaiitour.kmz

Si quieres hacer referencia a un archivo ubicado en un archivo KMZ diferente (por ejemplo, en images/jimmyphoto.jpg incluido en margaritavillealbum.kmz, puedes incluir la notación ".." para subir un nivel en la estructura de directorio, lo que te conduciría fuera del archivo KMZ actual (buffetthawaiitour.kmz):

<href>../margaritavillealbum.kmz/images/jimmyphoto.jpg"</href>

Nota: Las reglas para resolver referencias relativas en un fichero KMZ se basan en la sección 5 del estándar RFC 3986 para la resolución de direcciones web. La URL básica viene determinada por la ubicación del archivo doc.kml y todas las URL relativas se resuelven en relación con esta URL básica.

La excepción: el elemento <sourceHref> en <Model>

El elemento <Model> contiene un elemento de enlace (<Link>) que especifica un archivo COLLADA para cargarlo en Google Earth. Los archivos COLLADA especifican objetos en 3D y tienen la extensión de archivo .dae. El elemento <Model> también contiene un elemento de alias (<Alias>), que a su vez contiene una asignación entre el elemento <targetHref> (el archivo de textura que va a recuperar Google Earth) y el elemento <sourceHref> (la ruta especificada por el archivo de textura del archivo COLLADA con la extensión .dae). Si el elemento <sourceHref> contiene una ruta relativa, Google Earth interpreta esta ruta como relativa al archivo .dae que hace referencia a ella (no relativa al archivo doc.kml como en los demás casos). Por ejemplo:

<Model>
.
.
.
  <Link>
    <href>MackyBldg.kmz/files/CU Macky.dae</href>
  </Link>
  <ResourceMap>
    <Alias>
      <sourceHref>../files/StairsnoCulling.jpg</sourceHref>
      <targetHref>../files/StairsnoCulling.jpg</targetHref>
    </Alias>
    <Alias>
      <sourceHref>../files/sideturretnoCulling.jpg</sourceHref>
      <targetHref>../files/sideturretnoCulling.jpg</targetHref>
	</Alias>
.
.
.
</Model>

Cómo crear el fichero KMZ

Utiliza Windows Explorer o el Finder de Mac para crear un fichero .zip. Selecciona el contenido de la carpeta que contiene el archivo doc.kml y los recursos relacionados y selecciona una opción como, por ejemplo, la opción de WinZip para añadir un archivo. La biblioteca JAR de Java también cuenta con una biblioteca .zip para crear y extraer mediante programación un fichero .zip, y Linux tiene versiones de líneas de comandos para comprimir y descomprimir.

Nota: Cuando crees un fichero .zip, asegúrate de seleccionar contenidos de la carpeta que contiene el archivo doc.kml, no la carpeta en sí.

Después de crear el fichero, cambia la extensión del archivo .zip a .kmz. Para extraer los archivos del fichero, cambia la extensión del archivo .kmz de nuevo a .zip y utiliza el programa de .zip para descomprimir el fichero.

Google Earth y los ficheros KMZ

Cómo utilizar el elemento <iframe>

En las viñetas <description> de KML, Google Earth trata la mayoría de los elementos HTML de la misma forma en que se tratan en los navegadores web estándar. Sin embargo, un elemento <iframe> en una viñeta descriptiva se trata como HTML puro, es decir, los recursos KML especiales no se reconocen. Por ejemplo, un elemento <iframe> no puede mostrar recursos KMZ y los enlaces de anclaje locales como <a href="#my feature;flyto">, no se reconocen. El elemento <src> de un elemento <iframe> no puede hacer referencia a un archivo local en disco, ni tampoco a un archivo que se encuentre dentro de un archivo KMZ; este debe hacer referencia a una URL de Internet a la que el navegador pueda acceder.