使用Python从KML文件提取船只位置?

0 投票
1 回答
750 浏览
提问于 2025-04-18 11:59

我在想,能不能用一个Python脚本,从一个由http://aprs.fi/提供的KML文件中提取每艘船的经纬度数据,并把这些数据保存到一个CSV文件里,跟我的位置相关呢?

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" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<NetworkLink>
    <name>APRS: All targets in view</name>
    <open>1</open>
    <Snippet maxLines="2">43°13.00&apos; N 27°55.00&apos; E - Real-time APRS network tracking of all APRS targets in the world</Snippet>
    <description><![CDATA[<p>Initial view: 43°13.00' N 27°55.00' E</p>
        <p>Google Earth application by <a href='http://aprs.fi/'>aprs.fi</a></p>]]>                                        </description>
<LookAt>
    <longitude>-0.3226803743656781</longitude>
    <latitude>53.60036183734124</latitude>
    <altitude>0</altitude>
    <heading>-11.4292926524615</heading>
    <tilt>1.734758838337611</tilt>
    <range>67610.58111833796</range>
    <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
</LookAt>
<Link>
    <href>http://aprs.fi/aprsupdate.kml?units=metric&amp;units_temp=C&amp;</href>
    <refreshMode>onExpire</refreshMode>
    <viewRefreshMode>onStop</viewRefreshMode>
    <viewRefreshTime>1</viewRefreshTime>
</Link>
</NetworkLink>
</kml>

这个网站提供的KML文件可以在Google Earth中使用,能实时显示全球每艘船的位置。

我最终想要的就是,每次运行这个Python脚本时,它能从这个KML文件中提取特定位置的每艘船的坐标,并把这些坐标保存到CSV文件里。

这个Python脚本会每60秒运行一次,因此会更新CSV文件中的坐标。

如果有人能给我一些指引,我会非常感激。谢谢!

1 个回答

0

KML 是一种 XML 文件,所以你可以用一些模块,比如 lxmlBeautifulSoupxml.dom.minidom 以及 csv 来保存它。要从服务器读取文件,你可以使用 requestspyCurl

从服务器抓取数据非常流行,所以还有一个叫 Scrapy 的框架。

如果你使用的是 Linux 系统,可以用 croncronjob 每60秒运行一次脚本。

撰写回答