如何使多边形上的颜色或阴影以kml为单位?

时间:2014-02-10 22:29:46

标签: colors kml kmz

我想在Google地球中显示空间数据,我认为最好的方法是使用多边形。我既喜欢多边形的高度,也喜欢它的颜色来表示数据。高度没问题,但我无法弄清楚如何强制多边形具有恒定的颜色和/或阴影。如果我将多边形的颜色设置为蓝色(FFFF0000),则从一个方向查看时显示为浅蓝色,而从另一个方向显示为深蓝色。例如,在下面的代码中,我有两个彼此成90度的多边形。它们都应该是相同的颜色。但是,在Google地球中查看时,它们显然具有不同的颜色(或者可能只是不同的阴影,因为它们与观看者的角度不同)。据推测这是设计的,但是我想制作具有恒定颜色(或阴影)的多边形,而不管视角如何。有人知道是否可以这样做吗?

由于

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2">
<Document>
  <name>kml toolbox tests</name>
  <Folder>
     <name>kml.poly3</name>
     <id>kml.poly3</id>
     <Placemark id="kml_poly3tpfc275749_9c60_474d_b419_d29a903da8be">
        <name>30</name>
        <visibility>1</visibility>
        <description/>
        <Style>
           <LineStyle>
              <color>FFFFFFFF</color>
              <width>5</width>
           </LineStyle>
           <PolyStyle>
              <color>FFFF0000</color>
           </PolyStyle>
        </Style>
        <Polygon id="Polygon_kml_poly3tpfc275749_9c60_474d_b419_d29a903da8be">
           <extrude>0</extrude>
           <tesselate>1</tesselate>
           <altitudeMode>relativeToGround</altitudeMode>
           <outerBoundaryIs>
              <LinearRing id="LinearRing_kml_poly3tpfc275749_9c60_474d_b419_d29a903da8be">
                 <coordinates>-111.98,40.6,0 
-111.97,40.6,0 
-111.97,40.6,1500 
-111.99,40.6,1500 
-111.99,40.6,0 </coordinates>
              </LinearRing>
           </outerBoundaryIs>
        </Polygon>
     </Placemark>
     <Placemark id="kml_poly3tpb12d0de1_b554_45ed_b9fd_63d120582f23">
        <name>31</name>
        <visibility>1</visibility>
        <description/>
        <Style>
           <LineStyle>
              <color>FFFFFFFF</color>
              <width>5</width>
           </LineStyle>
           <PolyStyle>
              <color>FFFF0000</color>
           </PolyStyle>
        </Style>
        <Polygon id="Polygon_kml_poly3tpb12d0de1_b554_45ed_b9fd_63d120582f23">
           <extrude>0</extrude>
           <tesselate>1</tesselate>
           <altitudeMode>relativeToGround</altitudeMode>
           <outerBoundaryIs>
              <LinearRing id="LinearRing_kml_poly3tpb12d0de1_b554_45ed_b9fd_63d120582f23">
                 <coordinates>-111.97,40.6,0 
-111.97,40.62,0 
-111.97,40.62,2000 
-111.97,40.6,2000 
-111.97,40.6,0 </coordinates>
              </LinearRing>
           </outerBoundaryIs>
        </Polygon>
     </Placemark>
<Camera id="ID">
  <TimePrimitive>...</TimePrimitive>
  <gx:ViewerOptions>
    <option> name="camera" type="boolean"></option>
  </gx:ViewerOptions>
  <longitude>-111.94</longitude>            <!-- kml:angle180 -->
  <latitude>40.53</latitude>              <!-- kml:angle90 -->
  <altitude>7500</altitude>              <!-- double -->
  <heading>340</heading>                <!-- kml:angle360 -->
  <tilt>60</tilt>                      <!-- kml:anglepos180 -->
  <roll>0</roll>                      <!-- kml:angle180 -->
  <altitudeMode>absolute</altitudeMode>
</Camera>
</Folder>
</Document>
</kml>

2 个答案:

答案 0 :(得分:0)

KML标准以及Google地球不允许您指定高级渲染选项,例如着色选项。当前Google Earth KML extensions不允许更改此选项,设置稍微透明的颜色也无效。

如果视角和多边形的面相互垂直,则颜色最大,但当角度倾斜并且角度接近0度时,颜色会变黑。在低于5-10度时,颜色几乎完全变黑。

如果多边形在地面上并且视图正向下看,则只能获得均匀着色。这允许您创建heat map visualizations

要申请新功能,您可以尝试以下步骤:

  1. 点击“帮助”菜单下的“发送反馈”,然后填写详细信息 回应谷歌。
  2. 开始讨论Google Earth forum
  3. 中的功能
  4. 通过https://code.google.com/p/earth-issues/issues/list
  5. 提交功能请求

答案 1 :(得分:0)

在更新版本的Google地球中,此多边形着色问题更加严重。在最近的版本中添加了一条注释,表示现在只渲染多边形的一面,所以我的下一步是将多边形背靠背放置,并进行相反的点顺序旋转。这样,从太阳角方向观察的所有多边形都可以至少显示为阴影。