0

我正在尝试通过 networkcontrollink 使用更新更新 kml 文件我要更新的 kml 文件存储在服务器上,称为 initial_coord.kml。

<?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>
  <Placemark id="pm123">
    <name>point123</name>
    <Point>
      <coordinates>-95.44,40.42,0</coordinates>
    </Point>
  </Placemark>
  <Placemark id="pm456">
    <name>point456</name>
    <Point>
      <coordinates>-95.43,40.42,0</coordinates>
    </Point>
  </Placemark>
</Document>
</kml>

我加载以更新它的 kml 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
  <name>Update</name>
  <Link>
    <href>http://localhost/cgi-bin/testF/add_more_coords.py</href></Link>
</NetworkLink>
</kml>

我正在调用的python脚本如下

#!/usr/bin/python
kml= (
    '<?xml version="1.0" encoding="UTF-8"?>\n'
    '<kml xmlns="http://www.opengis.net/kml/2.2">\n'
    '<NetworkLinkControl>\n'
    '<Update>\n'
    '<targetHref>http://10.10.210.247/initial_coords.kml</targetHref>\n'
    '<Change>\n'
    '<Placemark targetId="pm123">\n'
    '<name>Name changed by Update Change</name>\n'
    '<!-- coordinates remain the same -->\n'
    '</Placemark>\n'
    '</Change>\n'
    '</Update>\n'
    '</NetworkLinkControl>\n'
    '</kml>\n'
    )
print 'Content-Type: application/vnd.google-earth.kml+xml\n'
print kml

更新不起作用,我想知道为什么,因为它与谷歌示例非常相似

4

1 回答 1

0

NetworkLinkControl 对目标 URL 非常严格,根 KML 中有localhost ,python 生成的输出中有 10.10.210.247。大多数完全匹配才能正常工作。

<Link>
    <href>http://localhost/cgi-bin/testF/add_more_coords.py</href></Link>
</NetworkLink>

<Update>
    '<targetHref>http://10.10.210.247/initial_coords.kml</targetHref>\n'
<Update>

您会注意到教程中的 targetUrl 和 NetworkLink URL 匹配。

尝试将 IP 地址放在根 KML 文件中以匹配在 python 中生成的内容。

<NetworkLink>
  <Link>
    <href>http://10.10.210.247/cgi-bin/testF/add_more_coords.py</href>
  </Link>
</NetworkLink>

<Update>
    '<targetHref>http://10.10.210.247/cgi-bin/testF/add_more_coords.py</targetHref>\n'
<Update>
于 2013-05-21T22:12:32.887 回答