Komplexe Stile für LineStrings mit DrawOrder

Josh Livni, Google Geo APIs-Team
Dezember 2010

Ziel

In dieser Anleitung lernen Sie einige neue KML-Elemente kennen, die mit Google Earth 6.0 eingeführt wurden, und zeigen Ihnen, wie Sie damit komplexe Kartografien für Ihre LineStyles erstellen. Die folgenden Elemente werden behandelt: <gx:physicalWidth>, <gx:outerColor>, <gx:outerWidth> und <gx:drawOrder>.

Einführung

Vor der Veröffentlichung von Google Earth 6.0 waren Sie nur eingeschränkt in der Lage, komplexe kartografische Stile für LineStrings zu definieren. Wenn Sie beispielsweise einen Stil für eine Straße erstellen möchten, bei der die Mitte des LineStrings eine andere Farbe als die Kanten hat, müssen Sie zwei separate LineStrings mit unterschiedlichen Breiten zeichnen und auch dann können Sie die Reihenfolge, in der sie gezeichnet werden, nicht garantieren.

Die folgenden Beispiele zeigen, wie Sie eine Straße erstellen. Erstens: Die Straße hat einen einfachen Stil. Dann fügst du einen Bürgersteig hinzu. Zum Schluss fügen Sie eine Autobahnüberführung hinzu.

Einfache Straße

Das erste relevante Element ist <gx:physicalWidth>. Damit können Sie die Breite eines LineStrings in Metern und nicht in Pixeln festlegen. Im Fall unseres Straßenbeispiels können Sie also die Breite der Straße an die Bilder anpassen, unabhängig davon, aus welcher Höhe der Endnutzer die Straße sieht. Wenn die Höhe zunimmt, wird die Straße in Pixeln verkleinert. Dies führt zu einem Effekt, bei dem Sie den LineString nur dann sehen können, wenn Sie ihn heranzoomen. Das kann nützlich sein, wenn Sie keine kleinen Straßen aus der Ferne hervorheben möchten oder wenn die Kartografie immer mit den Satellitenbildern übereinstimmen soll.

<?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>

Wenn Sie die Kamerahöhe in Google Earth ändern, achten Sie darauf, dass die Höhe immer exakt der Breite des zugrunde liegenden Bildes entspricht.

Bürgersteige hinzufügen

Jetzt können Sie die Elemente <gx:outerColor> und <gx:outerWidth> hinzufügen, indem Sie am Rand unserer Straße ein helles Grün hinzufügen, um Bürgersteige zu kennzeichnen. Legen Sie 25% der Gesamtpixel der Straße als hellgrau fest.

<?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>

Da die Breite der Straße auf 12 Meter festgelegt war, bedeutet der Wert von 0,25 für die äußere Breite, dass 3 Meter dieser Breite auf ein helleres Grün gesetzt sind (etwa 1,5 Meter auf jeder Straßenseite).

Autobahnüberführung

Da Sie nun eine Grundstraße haben, geht es an die Überführung einer Autobahnüberführung. Diese Farbe wird hellorange und eine dunklere orangefarbene Linie dargestellt. Der Schlüssel muss hier ein <gx:drawOrder> von 1 (der Standardwert ist 0) in <LineSring> enthalten, damit die Autobahn über der Straße gerendert wird. Wenn Sie einen komplexeren Autobahnkreuz (oder eine Kartografie, die mehr als zwei überlappende LineStrings erfordert) erstellen möchten, können Sie einfach einen höheren Wert für <gx:drawOrder> hinzufügen, je nachdem, welcher oben dargestellt wird.

<?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>

Nächste Schritte

Die Möglichkeit, einen einzelnen LineString mit mehreren Farben zu beschreiben, kombiniert mit der Kontrolle über die Renderingreihenfolge ermöglicht es Ihnen, komplexe Linienkartografie zu erstellen, die zuvor nicht möglich war. Egal, ob du eine Autobahnüberführung oder ein abstraktes Kunstprojekt entwickelst – mit diesen Stilregeln hast du Spaß!