【问题标题】:KML polygon, altitude mode destroys colorKML多边形,高度模式破坏颜色
【发布时间】:2021-04-09 19:41:38
【问题描述】:

我正在尝试生成 KML 叠加层。我有一个网格,我正在绘制一个区域,上面有彩色方块。当我将高度模式设置为“clampToGround”时,关于我正在生成的多边形的所有内容,包括它们的颜色,都会按预期工作。但是,不希望让网格变形以映射到地面。当我更改高度模式以使叠加层悬停在离地面几米处时,网格部分的形状是正确的,但颜色信息被丢弃并且网格部分被涂成黑色。

这是我的 KML 代码的可测试摘录。这里显示颜色正确,但网格变形到地面。将高度模式的值更改为: absolute 会产生其他行为。

有没有办法在正确的高度同时使用正确的颜色?

<?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">
    <Document id="1">
        <Document id="2">
            <Style id="10">
                <PolyStyle id="10">
                    <color>0xFF0000FF</color>
                    <colorMode>normal</colorMode>
                    <fill>1</fill>
                    <outline>1</outline>
                </PolyStyle>
            </Style>
            <name>Antenna Data</name>
            <Camera>
                <longitude>-122.30201334502573</longitude>
                <latitude>37.87244901754293</latitude>
                <altitude>200</altitude>
            </Camera>
            <Placemark id="5">
                <name>region</name>
                <styleUrl>#10</styleUrl>
                <Polygon id="4">
                    <altitudeMode>clampToGround</altitudeMode>
                    <outerBoundaryIs>
                        <LinearRing id="8">
                            <coordinates>-122.30243999999999,37.871973499999996,10 -122.30243999999999,37.8719265,10 -122.30238,37.8719265,10 -122.30238,37.871973499999996,10</coordinates>
                        </LinearRing>
                    </outerBoundaryIs>
                </Polygon>
            </Placemark>
        </Document>
    </Document>
</kml>

【问题讨论】:

  • 您使用什么客户端查看 KML?
  • Google 地球,但我愿意为其他可能解决此问题的客户提供建议

标签: kml


【解决方案1】:

您的 KML 有几个问题。

多边形缺少闭合顶点。为了成为有效的 KML 多边形,第一个坐标集 (lon,lat,alt) 必须作为最后一个坐标集重复,以便多边形自行闭合。对于您的正方形示例,您需要 5 个坐标集,第一个和最后一个相同。

先尝试修复它,如果您仍然看到着色问题,请尝试确保顶点缠绕方向正确(逆时针方向)。如果它是向后的,那么多边形的较暗“底部”将朝上,并且可能看起来很暗/黑色。从坐标来看,你的似乎是正确的,但我可能弄错了。

另外,您的颜色不是有效的 KML 颜色,因为它前面似乎有一个额外的“0x”。一个有效的 KML 颜色需要四个两个字符的值(每个值介于 00 和 ff 之间),分别代表 Alpha、Blue、Green、Red(AABBGGRR,是的,它是 HTML 颜色的倒数)。纯红色为:FF0000FF。

以下是您的 KML 示例的更新副本,其中高度模式 = 绝对,添加了闭合顶点,并校正了颜色...这适用于我在 Earth Pro 中。

<?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">
    <Document id="1">
        <Document id="2">
            <Style id="10">
                <PolyStyle id="10">
                    <color>FF0000FF</color>
                    <colorMode>normal</colorMode>
                    <fill>1</fill>
                    <outline>1</outline>
                </PolyStyle>
            </Style>
            <name>Antenna Data</name>
            <Camera>
                <longitude>-122.30201334502573</longitude>
                <latitude>37.87244901754293</latitude>
                <altitude>200</altitude>
            </Camera>
            <Placemark id="5">
                <name>region</name>
                <styleUrl>#10</styleUrl>
                <Polygon id="4">
                    <altitudeMode>absolute</altitudeMode>
                    <outerBoundaryIs>
                        <LinearRing id="8">
                            <coordinates>-122.30243999999999,37.871973499999996,10 -122.30243999999999,37.8719265,10 -122.30238,37.8719265,10 -122.30238,37.871973499999996,10 -122.30243999999999,37.871973499999996,10</coordinates>
                        </LinearRing>
                    </outerBoundaryIs>
                </Polygon>
            </Placemark>
        </Document>
    </Document>
</kml>

【讨论】:

    【解决方案2】:

    我遇到的解决方案是我可以在 Google 地球中简单地取消激活地形。这似乎现在可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多