DrawOrder を使用した LineString の複雑なスタイル設定

Josh Livni、Google Geo APIs チーム
2010 年 12 月

目標

このチュートリアルでは、Google Earth 6.0 で導入された新しい KML 要素と、それらを使用して LineStyle の複雑な地図作成を行う方法について説明します。学習する要素は、<gx:physicalWidth><gx:outerColor><gx:outerWidth><gx:drawOrder> です。

はじめに

Google Earth 6.0 のリリース以前は、LineString の複雑な地図作成スタイルを定義する機能が制限されていました。たとえば、道路のスタイルを作成する場合、LineString の中心と端で色を変えるには、幅の異なる 2 つの LineString を別々に描画する必要があります。それでも、描画順序を保証することはできません。

次の例では、道路を作成する手順を説明します。まず、道路はシンプルなスタイルになります。次に、歩道を追加します。最後に、高速道路の高架橋を追加します。

基本的な道路

最初の要素は <gx:physicalWidth> です。これにより、LineString の幅をピクセルではなくメートル単位で設定できます。道路の例では、エンドユーザーがどの高度から道路を見ても、道路の幅を基盤となる画像と一致させることができます。高度が上がると、道路のピクセル数が減少し、ズームインしたときにのみ LineString が表示される効果が生まれます。この方法は、遠くから見たときに小さな道路を強調したくない場合や、地図作成が常に衛星画像と一致するようにしたい場合に便利です。

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

Google Earth でカメラの高度を変更すると、常に基盤となる画像の幅とほぼ一致していることがわかります。

歩道を追加する

道路の端に薄い緑色を追加して歩道を表し、<gx:outerColor> 要素と <gx:outerWidth> 要素を追加します。道路の総ピクセルの 25% をライトグレーに設定します。

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

道路の幅が 12 メートルに設定されているため、outerWidth の値が .25 の場合、その幅の 3 メートルが明るい緑色に設定されます(道路の両側に約 1.5 メートル)。

高速道路の陸橋

基本的な道路ができたので、次は高速道路の高架橋に取り組みましょう。このボックスは薄いオレンジ色で、中央値の線は濃いオレンジ色になります。ここで重要なのは、<LineSring><gx:drawOrder> を 1(デフォルトは 0)として含めることです。これにより、高速道路が道路の上にレンダリングされます。より複雑な高速道路のインターチェンジ(または 2 つ以上の LineString が重なり合う地図)を作成する場合は、上に表示したい方の <gx:drawOrder> に大きい値を指定するだけです。

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

次のステップ

1 つの LineString を複数の色で記述できる機能と、レンダリング順序を制御できる機能が組み合わさることで、これまで不可能だった複雑な線地図を作成できます。高速道路の高架橋を建設する場合でも、抽象芸術プロジェクトを制作する場合でも、これらのスタイリング ルールを楽しみましょう。