Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Earth使用python进行实时更新_Python_Flask_Real Time_Kml_Google Earth - Fatal编程技术网

Google Earth使用python进行实时更新

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字符串

我试图实时显示一个在谷歌地球上移动的物体

我发现了一些网页,让我相信这是可以做到的。不过我遇到了一些问题

我得到了一个指向kml文件的网络链接,我定期使用新的lat/lon更新该文件,但由于一个程序正在写入该文件(我的python代码),而另一个程序需要读取该文件(google earth),因此存在瓶颈,并导致严重的延迟

我还看到,您可以使用python脚本作为网络链接文件,因为它位于服务器上。我假设这意味着每次google earth刷新它都会调用python脚本,该脚本返回一个kml字符串

我用flask实现了这个理论,但没有得到任何结果。有人知道我做错了什么吗

代码如下:

我的网络链接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)