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>