【问题标题】:How do you create a polygon shape in a KML that is positioned in the air?如何在位于空中的 KML 中创建多边形?
【发布时间】:2011-01-13 02:06:02
【问题描述】:

我需要能够将具有给定高度的多边形对象放入位于地面上方的 KML 中。我希望将空域信息显示到 KML 中,并且每个空域都有低海拔和高海拔值。

到目前为止,我能做的最接近的事情是创建两个具有不同高度的多边形来显示空域,但我无法连接多边形来显示中间区域。

感谢您的帮助

【问题讨论】:

  • 你有没有找到这个问题的答案?我有兴趣自己做类似的事情,并想在半空中“漂浮”一个多边形

标签: polygon kml google-earth


【解决方案1】:

您有两个选择,您可以创建空气空间的 collada 模型,或者定义每个面的一系列多边形对象,

可以定义垂直方向的多边形,注意你的方向(顺时针或逆时针),因为这会影响样式,从底部查看多边形会使它稍微变暗

对于简单的矩形形状,您需要 6 个面

以下 kml 是五边形示例的修改版本,其中一个垂直面已填充,其他 4 个垂直面需要完整,但您会明白的。

    <?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" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>pm1.kml</name>
    <Style id="poly">
        <LineStyle>
            <color>f0ffed42</color>
        </LineStyle>
        <PolyStyle>
            <color>e8ff9257</color>
        </PolyStyle>
    </Style>



<Placemark>
    <styleUrl>#poly</styleUrl>
        <Polygon>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
-77.05844056290393,38.86996206506943,500 -77.05552622493516,38.868757801256,500 
-77.05315536854791,38.87053267794386,500 -77.05465973756702,38.87291016281703,500 -77.05788457660967,38.87253259892824,500 -77.05844056290393,38.86996206506943,500 </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
</Placemark>
<Placemark>
    <styleUrl>#poly</styleUrl>
        <Polygon>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
-77.05844056290393,38.86996206506943,400 -77.05552622493516,38.868757801256,400 
-77.05315536854791,38.87053267794386,400 -77.05465973756702,38.87291016281703,400 -77.05788457660967,38.87253259892824,400 -77.05844056290393,38.86996206506943,400 </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
</Placemark>

<Placemark>
    <styleUrl>#poly</styleUrl>
        <Polygon>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>
 -77.05844056290393,38.86996206506943,500 -77.05844056290393,38.86996206506943,400 -77.05552622493516,38.868757801256,400  -77.05552622493516,38.868757801256,500  -77.05844056290393,38.86996206506943,500
</coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
</Placemark>

</Document>
</kml>

【讨论】:

    【解决方案2】:

    听起来您正在创建 2 个 2d 多边形而不是 3d 多边形? 您可以创建一个规则的 3d 多边形:

    http://code.google.com/apis/kml/documentation/kml_tut.html#polygons

    然后检查 KML 中的高度模式标签以将其“浮动”到表面上方:

    http://code.google.com/apis/kml/documentation/altitudemode.html

    【讨论】:

    • 感谢 geographika 的回答。你是对的,多边形有一个高度模式,但它们都是从地面开始的,除了绝对的,它只会让多边形向上浮动,但不会给它一个深度。
    • 您是否使用多边形中的 1 标签将多边形从其高度“连接”到地面?
    • extrude 标签只有在你想延伸到它时才适用于空中的物体。
    • 是的,你是对的。似乎对 KML 规范有疏忽。在skyfool.de/luftraeume 有创建 3d 多边形的 2d 面示例
    猜你喜欢
    • 2016-02-19
    • 2015-09-19
    • 2020-10-17
    • 2017-02-23
    • 1970-01-01
    • 2016-01-02
    • 2021-09-02
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多