【问题标题】:Google Earth KML altitude modesGoogle 地球 KML 高度模式
【发布时间】:2014-11-22 14:20:33
【问题描述】:


我对 google earth 的 kml 文件有疑问。当我使用高度模式 clampToGround 时,它完全符合我的预期,它很好地跟随地面。

<?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>pm1kml</name>
        <Style id="poly">
            <LineStyle>
                <color>a000ff00</color>
            </LineStyle>
            <PolyStyle>
                <color>a000ff00</color>
        </PolyStyle>
    </Style>
    <Placemark>
        <styleUrl>#poly</styleUrl>
        <Polygon>
            <extrude>0</extrude>
            <tessellate>0</tessellate>
            <altitudeMode>clampToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>-5.255885800498265,36.11513548688032,123 -5.257614986927059,36.097578762436825,123 -5.257614986927059,36.097578762436825,123 -5.262736094548725,36.08069673306777,123 -5.262736094548725,36.08069673306777,123 -5.27105232206931,36.06513816569425,123 -5.27105232206931,36.06513816569425,123 -5.282244081528993,36.051500967335095,123 -5.282244081528993,36.051500967335095,123 -5.29588127988815,36.04030920787541,123 -5.29588127988815,36.04030920787541,123 -5.311439847261665,36.03199298035483,123 -5.311439847261665,36.03199298035483,123 -5.3283218766307225,36.02687187273316,123 -5.3283218766307225,36.02687187273316,123 -5.345878601074219,36.02514268630436,123 -5.345878601074219,36.02514268630436,123 -5.363435325517715,36.02687187273316,123 -5.363435325517715,36.02687187273316,123 -5.380317354886772,36.03199298035483,123 -5.380317354886772,36.03199298035483,123 -5.395875922260288,36.04030920787541,123 -5.395875922260288,36.04030920787541,123 -5.409513120619445,36.051500967335095,123 -5.409513120619445,36.051500967335095,123 -5.4207048800791275,36.06513816569425,123 -5.4207048800791275,36.06513816569425,123 -5.429021107599713,36.08069673306777,123 -5.429021107599713,36.08069673306777,123 -5.434142215221378,36.097578762436825,123 -5.434142215221378,36.097578762436825,123 -5.435871401650172,36.11513548688032,123 -5.435871401650172,36.11513548688032,123 -5.434142215221378,36.132692211323814,123 -5.434142215221378,36.132692211323814,123 -5.429021107599713,36.14957424069287,123 -5.429021107599713,36.14957424069287,123 -5.4207048800791275,36.16513280806639,123 -5.4207048800791275,36.16513280806639,123 -5.409513120619445,36.178770006425545,123 -5.409513120619445,36.178770006425545,123 -5.395875922260288,36.18996176588523,123 -5.395875922260288,36.18996176588523,123 -5.380317354886771,36.19827799340581,123 -5.380317354886771,36.19827799340581,123 -5.363435325517715,36.20339910102748,123 -5.363435325517715,36.20339910102748,123 -5.345878601074219,36.205128287456276,123 -5.345878601074219,36.205128287456276,123 -5.3283218766307225,36.20339910102748,123 -5.3283218766307225,36.20339910102748,123 -5.311439847261665,36.19827799340581,123 -5.311439847261665,36.19827799340581,123 -5.29588127988815,36.18996176588523,123 -5.29588127988815,36.18996176588523,123 -5.282244081528993,36.178770006425545,123 -5.282244081528993,36.178770006425545,123 -5.27105232206931,36.16513280806639,123 -5.27105232206931,36.16513280806639,123 -5.262736094548725,36.14957424069287,123 -5.262736094548725,36.14957424069287,123 -5.257614986927059,36.132692211323814,123 -5.257614986927059,36.132692211323814,123 -5.255885800498265,36.11513548688032,123 -5.255885800498265,36.11513548688032,123 -5.255885800498265,36.11513548688032,123  </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
    </Placemark>
</Document>

但是,当我使用relativeToGround 时,只有外部顶点跟随地面。在圆圈的中间,岩石在绿色区域上方,而不是在其下方 123 米处。
图片:http://nl.tinypic.com/r/2vcsvq1/8

<?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>pm1kml</name>
        <Style id="poly">
            <LineStyle>
                <color>a000ff00</color>
            </LineStyle>
            <PolyStyle>
                <color>a000ff00</color>
        </PolyStyle>
    </Style>
    <Placemark>
        <styleUrl>#poly</styleUrl>
        <Polygon>
            <extrude>0</extrude>
            <tessellate>0</tessellate>
            <altitudeMode>relativeToGround</altitudeMode>
            <outerBoundaryIs>
                <LinearRing>
                    <coordinates>-5.255885800498265,36.11513548688032,123 -5.257614986927059,36.097578762436825,123 -5.257614986927059,36.097578762436825,123 -5.262736094548725,36.08069673306777,123 -5.262736094548725,36.08069673306777,123 -5.27105232206931,36.06513816569425,123 -5.27105232206931,36.06513816569425,123 -5.282244081528993,36.051500967335095,123 -5.282244081528993,36.051500967335095,123 -5.29588127988815,36.04030920787541,123 -5.29588127988815,36.04030920787541,123 -5.311439847261665,36.03199298035483,123 -5.311439847261665,36.03199298035483,123 -5.3283218766307225,36.02687187273316,123 -5.3283218766307225,36.02687187273316,123 -5.345878601074219,36.02514268630436,123 -5.345878601074219,36.02514268630436,123 -5.363435325517715,36.02687187273316,123 -5.363435325517715,36.02687187273316,123 -5.380317354886772,36.03199298035483,123 -5.380317354886772,36.03199298035483,123 -5.395875922260288,36.04030920787541,123 -5.395875922260288,36.04030920787541,123 -5.409513120619445,36.051500967335095,123 -5.409513120619445,36.051500967335095,123 -5.4207048800791275,36.06513816569425,123 -5.4207048800791275,36.06513816569425,123 -5.429021107599713,36.08069673306777,123 -5.429021107599713,36.08069673306777,123 -5.434142215221378,36.097578762436825,123 -5.434142215221378,36.097578762436825,123 -5.435871401650172,36.11513548688032,123 -5.435871401650172,36.11513548688032,123 -5.434142215221378,36.132692211323814,123 -5.434142215221378,36.132692211323814,123 -5.429021107599713,36.14957424069287,123 -5.429021107599713,36.14957424069287,123 -5.4207048800791275,36.16513280806639,123 -5.4207048800791275,36.16513280806639,123 -5.409513120619445,36.178770006425545,123 -5.409513120619445,36.178770006425545,123 -5.395875922260288,36.18996176588523,123 -5.395875922260288,36.18996176588523,123 -5.380317354886771,36.19827799340581,123 -5.380317354886771,36.19827799340581,123 -5.363435325517715,36.20339910102748,123 -5.363435325517715,36.20339910102748,123 -5.345878601074219,36.205128287456276,123 -5.345878601074219,36.205128287456276,123 -5.3283218766307225,36.20339910102748,123 -5.3283218766307225,36.20339910102748,123 -5.311439847261665,36.19827799340581,123 -5.311439847261665,36.19827799340581,123 -5.29588127988815,36.18996176588523,123 -5.29588127988815,36.18996176588523,123 -5.282244081528993,36.178770006425545,123 -5.282244081528993,36.178770006425545,123 -5.27105232206931,36.16513280806639,123 -5.27105232206931,36.16513280806639,123 -5.262736094548725,36.14957424069287,123 -5.262736094548725,36.14957424069287,123 -5.257614986927059,36.132692211323814,123 -5.257614986927059,36.132692211323814,123 -5.255885800498265,36.11513548688032,123 -5.255885800498265,36.11513548688032,123 -5.255885800498265,36.11513548688032,123  </coordinates>
                </LinearRing>
            </outerBoundaryIs>
        </Polygon>
    </Placemark>
</Document>

我需要的是来自clampToGround 的多边形提升了 123 米。这可能与谷歌地球的 kml 文件。如果是这样,我该怎么做?
提前致谢!

编辑:它已经被报告为一个问题:https://code.google.com/p/kml-samples/issues/detail?id=432

【问题讨论】:

    标签: kml google-earth


    【解决方案1】:

    KML 规范中定义的clampToGroundrelativeToGround 之间存在明显的行为差异。

    clampToGround 根据定义遵循地形,这样如果多边形与地形相交,多边形将包裹山或丘陵的表面。

    另一方面,

    relativeToGround 创建一个平行于地面的平面,该平面穿过任何山脉和丘陵,如下图所示。 123 米的 relativeToGround 是高于地面而不高于岩石顶部的 123 的地面高程。相对于地面零高程的是这个实例是岩石的底部。

    直布罗陀的岩石在山顶大约高出地面 390 米,因此 123 米的相对高度穿过岩石。如果您希望多边形在岩石尖端上方 123 米处,那么您应该使相对高度约为 513 米,这就像在该位置上方低悬的绿色云一样。

    或者,如果您想用绿色多边形包裹岩石顶部并且多边形平面升高 123 米(穿过岩石),那么建议您使用 relativeToGround 定义第二个多边形 MultiGeometry(如上面列出的)和一个较小的圆圈,刚好覆盖岩石的尖端,altitudeMode=clampToGround。

    <MultiGeometry>
     <Polygon>
      <altitudeMode>relativeToGround</altitudeMode>
      ... use coordinates of original polygon here
     </Polygon>
     <Polygon>
      <altitudeMode>clampToGround</altitudeMode>
      ... use coordinates of smaller polygon here
     </Polygon>
    </MultiGeometry>
    

    但是,如果您想要让多边形跟随地形形状的clampToGround 行为,但高于地面,那么您需要在relativeToGround 模式下创建多边形的小网格。

    【讨论】:

    • 感谢您的回答,但这并不是我真正想要的。我希望多边形在多边形的每个点都高于地面 123 米,多边形必须跟随地形,但在其上方 123 米的高度。因此,在岩石顶部,多边形的高度为 513 米,而在海面下方,高度仅为 123 米。起初我以为tessellate 会对此有所帮助,但它不会。我可以自己镶嵌多边形,但它会很慢,我需要创建非常小的多边形以使其看起来不错。
    • Tessellate 仅适用于clampToGround 模式。更新了答案。看看有没有帮助。
    • 如果想要 123 米完全高于岩石尖端的海拔,则将海拔 123 高于尖端,大约为 513。但如果真的想要clampToGround 但高于地面,那么你需要创建一系列123 处的小块或子网格。较小的多边形将相对于岩石下方的地面,而不是海平面。
    • 我真的希望clampToGround 高出地面,我希望我不必创建子网格,但谷歌会用其中一种高度模式为我做到这一点。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多