KML 中的路径遵循赤道而不是坐标

Path in KML follows equator instead of coordinates

我想在 Google 地球上展示一条路径。

下面的 KML 生成一条在东经 28 度 45 分和西经 81 度 52 分之间的赤道路径。

我没有看到 KML 可能存在的明显问题。有人可以就这个问题给我建议吗?

<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
   <Document>
      <name>Paths</name>
      <Style id="transPurpleLineGreenPoly">
         <LineStyle>
            <color>7f00ff00</color>
            <width>4</width>
         </LineStyle>
         <PolyStyle>
            <color>7f00ff00</color>
         </PolyStyle>
      </Style>
      <Placemark>
         <visibility>1</visibility>
         <description>Path from Chile to Florida</description>
         <styleUrl>#transPurpleLineGreenPoly</styleUrl>
         <LineString>
            <tessellate>1</tessellate>
            <altitudeMode>clampToGround</altitudeMode>
            <coordinates>
              -70.900,  -27.117, 0
              -72.800,  -29.600, 0
              -80.000,  -20.000, 0
              -80.000,  -10.000, 0
              -80.200,  -7.300,  0
              -81.900,  -5.250,  0
              -81.250,  -3.000,  0
              -81.800,  -0.900,  0
              -80.000,  7.000, 0
              -79.453,  8.781, 0
              -79.521,  8.888, 0
              -79.559,  8.938, 0
              -79.569,  8.950, 0
              -79.585,  8.990, 0
              -79.591,  8.996, 0
              -79.599,  9.004, 0
              -79.604,  9.010, 0
              -79.619,  9.023, 0
              -79.643,  9.038, 0
              -79.656,  9.056, 0
              -79.672,  9.069, 0
              -79.691,  9.107, 0
              -79.703,  9.115, 0
              -79.717,  9.118, 0
              -79.750,  9.121, 0
              -79.768,  9.112, 0
              -79.806,  9.120, 0
              -79.815,  9.161, 0
              -79.844,  9.182, 0
              -79.850,  9.183, 0
              -79.862,  9.181, 0
              -79.874,  9.182, 0
              -79.924,  9.211, 0
              -79.924,  9.256, 0
              -79.924,  9.267, 0
              -79.921,  9.285, 0
              -79.919,  9.302, 0
              -79.919,  9.327, 0
              -79.919,  9.349, 0
              -79.919,  9.366, 0
              -79.919,  9.379, 0
              -79.919,  9.390, 0
              -80.008,  9.474, 0
              -75.000,  18.500, 0
              -73.673,  20.340, 0
              -75.516,  21.986, 0
              -76.767,  23.657, 0
              -77.500,  24.900, 0
              -79.341,  26.743, 0
              -79.889,  26.794, 0
              -79.987,  27.193, 0
              -80.058,  27.476, 0
              -80.128,  27.604, 0
              -80.269,  27.939, 0
              -80.452,  28.414, 0
              -80.508,  28.659, 0
              -80.589,  28.744, 0
            </coordinates>
         </LineString>
      </Placemark>
   </Document>
</kml>

这是一个常见错误。 KML 在 {longitude,latitude,altitude} 元组中不能有空格,否则会导致每个值都被解释为缺少纬度和高度值的经度。 KML 规范在其定义上是严格的,并且使用空格来分隔每个元组。 KML Reference 表示 "do not include spaces within a tuple"。

KML 是这样描述的:

    <coordinates>
      -70.900,  -27.117, 0
      -72.800,  -29.600, 0
      ...
    </coordinates>

空白实际上描绘了坐标元组,因此“-70.900”成为一个元组,其中经度为 -70,纬度为 0,海拔高度为 0。所有点都将分配纬度 0 并显示为一条线赤道。此 "line" 被解释为:

    <coordinates>
     -70.900,0,0
     -27.117,0,0
     0,0,0
     -72.8,0,0
     -29.6,0,0
     0,0,0
     ...
    </coordinates>

此问题在 KML Errata 中有更详细的描述。

要修复,需要去除每组坐标内的空白:

    <coordinates>
      -70.900,-27.117,0
      -72.800,-29.600,0
      ...
    </coordinates>