Estilos complejos para LineStrings con DrawOrder

Josh Livni, equipo de API de Google Geo
Diciembre de 2010

Objetivo

En este tutorial se presentan algunos de los nuevos elementos KML que se introdujeron en Google Earth 6.0 y la manera en que se pueden utilizar a fin de crear una cartografía compleja para tus LineStyles. Los elementos que aprenderás son <gx:physicalWidth>, <gx:outerColor>, <gx:outerWidth> y <gx:drawOrder>.

Introducción

Antes de la publicación de Google Earth 6.0, tenías una capacidad limitada para definir estilos cartográficos complejos para LineStrings. Por ejemplo, si quisieras crear un estilo para una ruta, en la que el centro de LineString tuviera un color diferente al de los bordes, tendrías que dibujar dos LineStrings diferentes con anchos diferentes, e incluso no podrías garantizar el orden en el que se dibujaría.

En los siguientes ejemplos, se explica cómo crear una ruta. En primer lugar, la ruta tendrá un estilo sencillo. Luego, agregarás una acera. Por último, agregarás un paso elevado de autopista.

Una ruta básica

El primer elemento de interés es <gx:physicalWidth>, que te permite establecer el ancho de una LineString en metros, en lugar de píxeles. En el caso de nuestro ejemplo de ruta, esto significa que puedes establecer el ancho de nuestra ruta para que coincida con las imágenes subyacentes, independientemente de la altitud desde la cual el usuario final vea la ruta. A medida que aumentas la altitud, la ruta disminuye en píxeles, lo que crea un efecto en el que solo puedes ver LineString cuando se aplica zoom de acercamiento. Esto puede resultar útil si no deseas enfatizar pequeñas rutas desde una distancia o si deseas asegurarte de que tu cartografía coincida con las imágenes satelitales en todo momento.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

A medida que cambies la altitud de la cámara en Google Earth, debes tener en cuenta el nivel de coincidencia con el ancho de las imágenes subyacentes en todo momento.

Agregar aceras

Ahora puedes agregar los elementos <gx:outerColor> y <gx:outerWidth> agregando un verde claro a los bordes de la ruta para indicar las aceras. Establece que el 25% del total de píxeles de la ruta sea de color gris claro.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

Debido a que el ancho de la ruta se estableció en 12 metros, el valor de 0,25 para el ancho exterior significa que 3 metros de ese ancho se fijarán en un color verde más claro (aproximadamente 1,5 metros en cada lado de la ruta).

Un paso elevado de la autopista

Ahora que tienes una ruta básica, es hora de llegar a un paso elevado de la autopista. Este tendrá un color naranja claro con una línea mediana de color naranja más oscuro. La adición clave aquí es incluir un <gx:drawOrder> de 1 (el valor predeterminado es 0) en <LineSring> para garantizar que la autopista se renderice en la parte superior de la ruta. Si compilaste un intercambio de autopistas más complejo (o cualquier cartografía que requiriera más de dos LineStrings superpuestas), puedes agregar un valor más alto a <gx:drawOrder> para el que quieras renderizar en la parte superior.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>10</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Style id="highway">
    <LineStyle>
      <color>cc1447ff</color>
      <gx:physicalWidth>20</gx:physicalWidth>
      <gx:outerColor>cc1473ff</gx:outerColor>
      <gx:outerWidth>0.75</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
     -122.2442883478408,37.4347536724074,0
     -122.2417741446485,37.43594997501623,0
     -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
  <Placemark>
    <styleUrl>#highway</styleUrl>
    <LineString>
    <gx:drawOrder>1</gx:drawOrder>
    <coordinates>
      -122.2442692500139,37.43634904345254,0
      -122.2415928723012,37.43416417520744,0
    </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

¿Qué sigue?

La capacidad de describir una sola LineString con varios colores, combinada con el control del orden de representación te permite crear una cartografía de línea compleja que antes no era posible. Ya sea que estés construyendo un viaducto de autopista o un proyecto de arte abstracto, diviértete con estas reglas de estilo.