我想在命令行上获得我的linux设备的精确纬度经度。 像HTML5中的地理位置一样。 我没有访问浏览器

我想从我的Linux设备发送当前Lat Long的电子邮件。 我尝试在HTML5浏览器的地理位置,它很好。 但是我想在命令行上。 我尝试了很多选项,例如curl,通过IP到某些网站的geoip,但它们都显示了我的ISP的位置,而不是我的。 我更喜欢使用它在命令行或Python等工具。

我可以成功地编写一个python程序,它打开一个本地保存的HTML5地理定位代码页,并显示准确的经纬度。 然后自动python从浏览器中提取lat并显示在terminal上。 文件:test.py

from splinter.browser import Browser import os.path import time browser = Browser() browser.visit('file://' + os.path.realpath('geo.html')) time.sleep(5) elements = browser.find_by_css("#demo") div = elements[0] print div.value browser.quit() 

文件:geo.html

  <html> <head> <title>Test</title> <p id="demo"></p> <script type="text/javascript"> var x = document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML = "Geolocation is not supported by this browser."; } } function showPosition(position) { x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude; } </script> </head> <body> <p>The element below will receive content</p> <div id="div" /> <script type="text/javascript">getLocation()</script> </body> </html> 

但是有一个bug,每次python打开浏览器时,我都要在浏览器中点击“Share location:Yes”。 因为该页面正在本地服务器上运行,而不是在任何Web服务器上运行。 所以这个解决scheme是不适用的。 任何人都可以build议我可靠的解决scheme,以获得我目前在经济刺激在Linux中的命令行?

在Linux上,您需要与gpsd交谈。

  • 你可以和libgps : http : libgps

  • 你可以使用DBUS接口。

  • 或者你可以使用python界面: 如何使用/安装gps python库