我正在尝试通过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
更新不起作用,我想知道为什么,因为它与谷歌示例非常相似
答案 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>