Google Earth使用python进行实时更新
我试图实时显示一个在谷歌地球上移动的物体 我发现了一些网页,让我相信这是可以做到的。不过我遇到了一些问题 我得到了一个指向kml文件的网络链接,我定期使用新的lat/lon更新该文件,但由于一个程序正在写入该文件(我的python代码),而另一个程序需要读取该文件(google earth),因此存在瓶颈,并导致严重的延迟 我还看到,您可以使用python脚本作为网络链接文件,因为它位于服务器上。我假设这意味着每次google earth刷新它都会调用python脚本,该脚本返回一个kml字符串 我用flask实现了这个理论,但没有得到任何结果。有人知道我做错了什么吗 代码如下: 我的网络链接kml:Google Earth使用python进行实时更新,python,flask,real-time,kml,google-earth,Python,Flask,Real Time,Kml,Google Earth,我试图实时显示一个在谷歌地球上移动的物体 我发现了一些网页,让我相信这是可以做到的。不过我遇到了一些问题 我得到了一个指向kml文件的网络链接,我定期使用新的lat/lon更新该文件,但由于一个程序正在写入该文件(我的python代码),而另一个程序需要读取该文件(google earth),因此存在瓶颈,并导致严重的延迟 我还看到,您可以使用python脚本作为网络链接文件,因为它位于服务器上。我假设这意味着每次google earth刷新它都会调用python脚本,该脚本返回一个kml字符串
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Aircraft 1</name>
<visibility>0</visibility>
<open>0</open>
<description>Test description</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>127.0.0.1:5000/aircraft.kml</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>0.05</refreshInterval>
</Link>
</NetworkLink>
</Folder>
</kml>
Python KML生产者(KML_updater.py):
def get_kml_文本(纬度、经度、高度):
返回\
'''
飞机1
展示飞机飞行1
{},{},{}
''。格式(经度、纬度、高度)
def to_print_output():
#创建lat/lon/alt
lat=41.98583333
lon=-91.5705556
alt=0
返回get_kml_文本(纬度、经度、高度)
from flask import Flask, request, send_from_directory
from GoogleEarthDraw import kml_updater
# set the project root directory as the static folder, you can set others.
app = Flask(__name__, static_url_path='')
@app.route('/aircraft.kml')
def send_py_app():
print("Returning py file")
return kml_updater.to_print_output()
if __name__ == "__main__":
app.run()
def get_kml_text(latitude, longitude, altitude):
return \
'''<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>Aircraft 1</name>
<description>Show flight of aircraft 1</description>
<Point>
<coordinates>{},{},{}</coordinates>
</Point>
</Placemark>
</kml>
'''.format(longitude, latitude, altitude)
def to_print_output():
# Create the lat/lon/alt
lat = 41.98583333
lon = -91.57055556
alt = 0
return get_kml_text(lat, lon, alt)