2013-05-21 58 views
0

我想通过networkcontrollink更新kml文件更新 我想更新的kml文件存储在服务器上称为initial_coord.kml。kml通过networklinkcontrol更新不更新

<?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

NetworkLinkControl是严格的关于目标URL,并且您在根目录KML中有本地主机,并且在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这个和网络链接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> 
+0

等你什么意思?它没有抱怨网络链接导致它的绿色,但它只是没有更新。 我也尝试通过让update_coords.kml变成谷歌精确的例子: 究竟谷歌在其示例中有什么,但只是使用我的网址为kml文件。我没有使用脚本,它仍然没有工作。我做了谷歌做的,但仍然没有工作 – Joshi

+0

因此,因为我想使用python脚本,我该如何使用相同的IP? 我把我的Python脚本放在/ Library/WebServer中的CGI_Executables /我尝试使用url http://10.10.10.24/cgi-bin/pythonScript.py如果我的IP是10.10.10.24? 它适用于kml文件,如果我把它放在目录文件和使用url http://10.10.10.24/kmlFile.kml,但我需要切换到一个python文件,我不知道如何做到这一点。我尝试在网上找到thigns,但我似乎无法找到它。 – Joshi

+0

最初的KML和python脚本应该有匹配的URL - 尝试将KML放在与运行python CGI脚本的机器相同的机器上。另请注意,NetworkLink的URL必须与networkLinkControl中的目标相同。 – JasonM1