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

Kra*_*lew 19 linux emacs perl cygwin geolocation

这是其中之一"肯定有一些通用实用程序比我提出的快速和肮脏的东西更好"问题.就像我一样,我知道如何以几种临时方式做到这一点,但是我喜欢使用标准.

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

详情:

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

[[metadata: timestamp="<2014-01-04 15:02:35 EST, Saturday, January 4, WW01>" <location location="??" timestamp="??"/>][03:02 PM]]
Run Code Online (Sandbox Code Playgroud)

如你所见,我很久以前就添加了记录我位置的功能.但到目前为止我不得不手动设置它.我很懒,经常忽略手动设置位置.(次要注意:我记录了我最后一次手动设置位置,在移动时有用,而忽略了手动更改我的位置.

我更希望有自动推断我的位置的代码.特别是因为我上个月旅行的时间相当多,但是对于我每天都在这里工作的六个地方来说可能更有用:家庭,工作,海边,标准餐厅,我在吃午餐或早餐. .

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

  • 我在哪里 - 在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等.有些是特定于操作系统的.

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

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

我的收藏

  • 跨越OS操作

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

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

    • 例如Perl CPAN IP ::位置,IP-> country/city/...
    • 例如谷歌等,从浏览器推断地理位置
  • 即使无法连接到标准地理定位服务或Internet,也能正常工作

    • 例如缓存最后位置
    • 例如,将名称与专用网络环境相关联的能力
    • 例如,如果在与网络隔离的实验室中
    • 或在家里,连接到WiFi,但宽带下来
    • 例如,看看无线SSID
  • 定制

    • 可以使用属于任何普遍存在的地理定位数据库的信息
    • 例如,我可能会将某些SSID视为我的家或办公室.
  • 学到了

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

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

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

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

小智 0

你为什么不考虑使用 GPS 呢?您只需将坐标添加到元数据中,然后在读取时将它们绑定到地址(从简单的数字到实际位置)。

通过这种方式,几乎任何东西都可以用坐标来标记。

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

在windows中,我不知道。

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

我不确定这是否满足您的要求,但我只是提出建议。