我在哪里? (Geolocation,Emacs,Perl)

时间:2014-01-04 21:24:24

标签: linux perl emacs geolocation cygwin

这是其中之一“肯定有一些通用的实用程序 比起快速而肮脏的东西,我提出了“问题。 就像在,我知道如何以几种临时方式做到这一点,但我很乐意 使用标准。

简介:我正在寻找合理的标准和无处不在的工具 确定我目前的地理位置。可从Linux / UNIX调用 命令行,Perl,Emacs等。

DETAIL:

一个微不足道的情况激发了这个问题(但毫无疑问 更重要的应用程序):我使用emacs org-mode,经常录制一个 日志或日记。我实际上并没有太多使用官方的组织模式日记 - 主要是,我将时间戳保存在隐藏的普通组织模式日志中 看起来像链接的元数据。

[[metadata: timestamp="<2014-01-04 15:02:35 EST, Saturday, January 4, WW01>" <location location="??" timestamp="??"/>][03:02 PM]]

正如你所看到的,我很久以前就添加了记录我的能力 地点。但到目前为止我不得不手动设置它。我很懒,而且 经常忽略手动设置位置。 (小调:我记录了 我最后一次手动设置位置,当我移动时有帮助 忽视手动改变我的位置。

我更愿意拥有自动推断我的代码 地点。特别是因为我已经旅行了很多 上个月,但对于大约六个人来说可能更有用 我每天都在这里移动的地方:家,工作,海边, 标准餐厅我在工作午餐或早餐。

我可以使用多种工具中的任何一种来计算我的位置,例如

  • 我在哪里 - 在Google地图上查看您当前的位置 - ctrlq.org/maps/where /

  • http://www.wolframalpha.com/input/?i=Where+am+I%3F

  • Perl CPAN包,例如IP :: Location - 将IP地址映射到某个位置

    • 注意:不一定适用于NAT后面的私有IP地址
    • 但可以与traceroute结合使用

和启发式,如查看WiFi SSID等

我已编写了一些内容。

但是......这比我编码的更深入。

没有 以上技术是完美的 - 例如我可能没有net.connectivity, 有些是特定于操作系统的。

如果已经有一些开源设施,我应该使用它。

因此我的问题是:有没有合理无处不在的地理定位服务?

我的愿望清单

  • 跨越操作系统

    • Cygwin的
    • 的Linux
    • 的Android? OS-X? (只使用OS标准)
    • e.g。尝试执行像Windows netsh这样的命令,如果失败......
  • 命令行实用程序

    • Perl等。
    • 可在emacs中调用
    • 因为那是我想用它的地方
    • 但我确信我希望能够在其他地方使用它。
  • 可以连接到广泛使用的标准地理定位服务

    • e.g。 Perl CPAN IP ::位置,IP-&gt; country / city /...
    • e.g。谷歌等从浏览器推断地理位置
  • 即使无法连接到标准地理定位服务或互联网

    ,也能正常工作
    • e.g。缓存最后位置
    • e.g。将名称与专用网络环境相关联的能力
    • e.g。如果在与网络隔离的实验室中
    • 或在家,连接到WiFi,但宽带下来
    • e.g。看看wifi SSID
  • 定制

    • 可以使用 NOT 任何无处不在的地理位置数据库中的信息
    • e.g。我可能认为某些SSID是我的家或办公室。
  • 据悉

    • 知道(或可以了解)某些SSID是移动的,而不是地理位置固定的(例如我手机上的移动热点)
    • 但有些(主要)地理位置固定(例如家中的WiFi连接到电缆调制解调器)
  • 学习

    • 可以覆盖不正确的推断(地理数据库有时是错误的,尤其是VPN)
    • 可以扩展或精确
    • 我不介意能够写规则
    • 但如果某些推理引擎本身维护规则,那就更好了。
    • e.g。如果我更正位置,推断用于错误推理的SSID坐标
  • 启发式

    • Windows 7“netsh wlan show interfaces”
    • Windows / Cygwin ipconfig
    • * IX ifconfig
    • traceroute / tracert
    • 反向IP查找
  • 缓存

    • 以避免昂贵的查询
    • 但缓存不是全局的 - 可以按应用程序完成
    • 某些应用可能希望绕过缓存
    • 其他人可以使用旧数据

4 个答案:

答案 0 :(得分:1)

GeoClue似乎至少满足了你的一些要求。

要将坐标转换为人类可读的地址,可以使用OSM Nominatim API

答案 1 :(得分:0)

为什么不考虑使用GPS?您可以在阅读时为元数据添加坐标并将它们绑定到地址(从简单数字到实际位置)。

通过这种方式,几乎所有东西都可以用坐标标记。

在gnu / linux和其他unices中,gpds应该这样做。

在Windows中,我不知道。

在Android中,android的脚本层应该提供对gps设备的访问。

我不确定这符合您的要求,但我只是在提议。

答案 2 :(得分:0)

您可以使用wget从您提到的其中一个网站提取数据,例如$(window).bind("load", function () { $.getScript('js/share.js', function () { $('#socialmedia').removeClass('hide'); } ); }); ,然后从您刚刚下载的文件中找到数据

答案 3 :(得分:-1)

让我这样说吧。您打算在不使用gps等定位设备的情况下跟踪您的位置。这是根据您离最近的网络接入点的当前地理位置完成的。网络接入点通常是地理编码的。我假设您在笔记本电脑中跟踪您的位置,因为它没有GPS。

必须有一些框架才能做到这一点。既然你希望它是跨平台的,我认为基于python的框架是你最好的选择。您还可以为Google地理位置提供一个镜头。 html5内置了一些用于地理位置的api。我认为你可以自己动手申请并在开源上分享,供其他人使用。

对于Windows,有许多商业电脑跟踪pps。所有人都做得很好。

相关问题