海拔模式

KML 的许多地图项都可以包含 <altitude> 元素或坐标,用于指定该特定地图项高出地平面、海平面或海底的距离。<AbstractView> 元素还可以包含海拔值。

所有海拔值都应随附一个 <altitudeMode> 元素,该元素可告知 Google 地球如何解析海拔值。海拔的测量方式如下:

  • 从地球表面 (relativeToGround) 测量,
  • 从海平面上方 (absolute) 测量,
  • 从主水体的底部 (relativeToSeaFloor) 测量。

海拔也可忽略(clampToGroundclampToSeaFloor

海底海拔模式与 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">

然后,在使用 clampToSeaFloorrelativeToSeaFloor 时,用 <gx:altitudeMode> 替换 <altitudeMode>

请注意,某些地理浏览器可能不支持以 gx 为前缀的扩展元素命名空间。Google 地球5.0支持此类命名空间。

海拔模式参考

absolute

absolute 海拔模式用于测量相对于海平面的海拔,此模式会忽略地图项下地形的实际高度。使用此模式时,可以将地图项放置在地下,这时是看不到地图项的。可在地下扩展某个地图项的多个部分,如下例所示。可以使用负值,以将地图项放置在海平面以下。

当知道精确的海拔值时,这种海拔模式就非常有用。例如,GPS 跟踪可以使用绝对 (absolute) 海拔模式显示飞行或潜水时经过的路径。

示例

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

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

clampToSeaFloor 模式包含在扩展元素命名空间中。有关重要信息,请参见海底海拔模式和 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

relativeToGround 模式用于测量以坐标值正下方地平面为基准的海拔。

例如,当电线杆位于小山上时,可以使用此海拔模式确定电线杆顶端的位置。如果每根电线杆高20米,则每根电线杆顶端的位置会随地球海拔的变化而上下变动。

示例

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

relativeToSeaFloor 模式包含在扩展元素命名空间中。有关重要信息,请参见海底海拔模式和 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>