標高モード

KML 要素の多くには <altitude> 要素や座標が含まれており、地面、海面、海底からその要素までの距離を指定できます。標高は、<AbstractView> 要素にも含めることができます。

標高の値を指定する場合は、必ず <altitudeMode> 要素も一緒に指定します。この要素によって、標高値が Google Earth でどのように解釈されるかが決まります。標高は、以下を基点として測定できます:

  • 地表面から(relativeToGround
  • 海面から(absolute
  • 主要な水域の底から(relativeToSeaFloor

また、標高を無視することもできます(clampToGround および clampToSeaFloor)。

SeaFloor 標高モードと KML 拡張名前空間

海底関連の標高モードは、KML 標準の拡張セット内に接頭辞 gx で格納されます。このモードを使用するには、まず KML ファイルの開始要素 <kml> に正しい名前空間 URI を追加する必要があります:

<kml xmlns="http://www.opengis.net/kml/2.2"
     xmlns:gx="http://www.google.com/kml/ext/2.2">

また、clampToSeaFloor または relativeToSeaFloor を使用する場合は、<altitudeMode> の代わりに <gx:altitudeMode> を指定します。

なお、接頭辞 gx の拡張名前空間をサポートしていない地理情報ブラウザもありますので注意してください。Google Earth 5.0 ではサポートされています。

標高モードのリファレンス

absolute

absolute 標高モードでは、要素の下にある地形の実際の高度に関係なく、海面からの相対標高が測定されます。この方法を使用すると、要素を地下に配置して見えなくすることができます。下の例のように、要素の一部を地中まで伸ばすことも可能です。負の値を指定すると、要素を海面より下に配置できます。

この高度モードでは、標高値が正確に知られている場合に便利です。たとえば、GPS で移動経路を追跡する場合には、絶対標高モードを使用して飛行中や運転中に作成された経路を表示できます。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
 
<GroundOverlay>
  <name>absolute Example</name>
  <Icon>
    <href>rectangle.jpg</href>
    <viewBoundScale>0.75</viewBoundScale>
  </Icon>
  <altitude>2744.0</altitude>
  <altitudeMode>absolute</altitudeMode>
  <LatLonBox>
    <north>48.783</north>
    <south>48.751</south>
    <east>-121.75</east>
    <west>-121.89</west>
    <rotation>-30</rotation>
  </LatLonBox>
</GroundOverlay>

</kml>

clampToGround

このモードでは、標高値は無視され、KML 要素は地形に沿って地面に配置されます。この方法を使用すると、たとえば GroundOverlay を地表面に「かぶせる」ことができます。clampToGround モードでは、要素の位置として主要な水域を指定すると、その要素が海面に配置されます。

KML 要素に標高モードが指定されていない場合のデフォルトモードは clampToGround です。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <GroundOverlay> <name>clampToGround example</name> <Icon> <href>rectangle.jpg</href> <viewBoundScale>0.75</viewBoundScale> </Icon> <altitude>2744.0</altitude> <altitudeMode>clampToGround</altitudeMode> <LatLonBox> <north>48.783</north> <south>48.751</south> <east>-121.75</east> <west>-121.89</west> <rotation>-30</rotation> </LatLonBox> </GroundOverlay> </kml>

clampToSeaFloor

拡張名前空間内に格納されています。SeaFloor 標高モードと KML 拡張名前空間に重要な説明がありますのでぜひご覧ください。

このモードでは、clampToGround と同様に標高値が無視され、要素は主要な水域の底に配置されます。ただし、要素を水域から離れた場所に配置すると地面に固定されます。

<?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">   <!-- required when using gx-prefixed elements -->
 
<Placemark>
  <name>clampToSeaFloor example</name>		
  <Polygon>
    <tessellate>1</tessellate>
    <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
    <outerBoundaryIs>
      <LinearRing>
        <coordinates>
          146.793,12.213,0
          146.803,12.202,0 
          146.829,12.218,0 
          146.807,12.226,0 
          146.793,12.213,0 
        </coordinates>
      </LinearRing>
    </outerBoundaryIs>
  </Polygon>
</Placemark>

</kml>

relativeToGround

このモードでは、標高が座標の真下の地面から測定されます。

たとえば、送電線の鉄塔を丘を越えて敷設するような場合には、この標高モードを使用できます。鉄塔の高さがすべて 20 m とすると、地形の変化に応じて各鉄塔の最上部の位置が上下します。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark> <name>relativeToGround Example</name> <LineString> <extrude>1</extrude> <altitudeMode>relativeToGround</altitudeMode> <coordinates> -121.835,48.754,700 -121.828,48.764,700 -121.818,48.776,700 -121.794,48.787,700 -121.778,48.781,700 -121.766,48.771,700 -121.768,48.757,700 -121.773,48.747,700 </coordinates> </LineString> </Placemark> </kml>

relativeToSeaFloor

拡張名前空間内に格納されています。SeaFloor 標高モードと KML 拡張名前空間に重要な説明がありますのでぜひご覧ください。

このモードでは、要素を主要な水域に配置すると、要素の真下の海底からの標高が測定されます。水域外に配置した場合は、地面からの標高が測定されます。

<?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">   <!-- required when using gx-prefixed elements -->

<Placemark>
  <name>relativeToSeaFloor Example</name>
  <LineString>
    <extrude>1</extrude>
    <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
    <coordinates>
      146.825,12.233,400
      146.820,12.222,400
      146.812,12.212,400
      146.796,12.209,400
      146.788,12.205,400
    </coordinates>
  </LineString>
</Placemark>

</kml>