kml通过networklinkcontrol更新不更新

时间:2013-05-21 22:06:16

标签: kml google-earth

我正在尝试通过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

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

1 个答案:

答案 0 :(得分:0)

对于目标URL,NetworkLinkControl是严格的,并且在根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>

您会注意到tutorial中的targetUrl和NetworkLink网址匹配。

尝试将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>