【问题标题】:Where am I? (Geolocation, Emacs, Perl) [closed]我在哪里? (地理位置,Emacs,Perl)[关闭]
【发布时间】:2014-01-22 11:56:21
【问题描述】:

这是其中之一“肯定有一些通用实用程序 比我提出的快速而肮脏的事情要好”的问题。 如,我知道如何以几种特别的方式做到这一点,但很想 使用标准。

BRIEF:我正在寻找合理标准且无处不在的工具 确定我现在的地理位置。可从 Linux/UNIX 调用 命令行、Perl、Emacs 等。

详情:

一个微不足道的情况引发了这个问题(但毫无疑问 更重要的应用程序):我使用emacs org-mode,经常记录一个 日志或日记。我实际上并没有太多使用官方 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, 等等。有些是特定于操作系统的。

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

因此我的问题是:是否有任何普遍存在的地理位置服务?

我的愿望清单

  • 跨操作系统工作

    • 赛格温
    • Linux
    • 安卓?操作系统-X? (仅使用操作系统标准)
    • 例如尝试执行 Windows netsh 之类的命令,如果失败...
  • 命令行实用程序

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

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

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

    • 可以使用属于任何无处不在的地理位置数据库的信息
    • 例如我可能会认为某些 SSID 是我的家或办公室。
  • 学习

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

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

    • Windows 7“netsh wlan 显示接口”
    • Windows / Cygwin ipconfig
    • *IX ifconfig
    • traceroute / tracert
    • 反向 IP 查找
  • 缓存

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

【问题讨论】:

  • 这个问题既有趣又离题:工具推荐不属于 Stack Overflow。
  • 请不要关闭它。这是个好问题
  • 程序员使用的软件工具是允许的话题。这在许多程序中将非常有用。我不明白为什么它不属于这里。
  • 有 4,762 个问题标记为地理定位,其中许多问题类似于 stackoverflow.com/questions/1513485/…stackoverflow.com/questions/5364914/… 。我的问题主要不同之处在于我不是在问“我怎么知道我在 Android 上的位置?”或任何特定的操作系统 - 我正在寻找任何指向跨平台 API 的指针。知道如何调用其他几个地理定位工具包的库。

标签: linux perl emacs geolocation cygwin


【解决方案1】:

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

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

在 gnu/linux 和其他 unices 中,gpds 应该可以。

在 Windows 中,我不知道。

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

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

【讨论】:

  • 为什么不用 GPS?因为我的问题是通用的:我想要一个包,一个 API,我可以在我的 Android 设备上使用(其中一个有 GPS,但较旧的设备没有),也可以在我正在输入的平板电脑上使用现在,它没有 GPS,但有 wifi,虽然并不总是连接。而且,想想看,当我接受 VNC 工作时 - 这可能很有趣,涉及回溯和/或将信息传播到我正在输入的位置。
  • 唯一在每台设备上都以相同方式工作的是直接访问来自 GPS 设备的 GPS 数据。
  • 我想说的是(在发现按下回车键会发布我的评论而不是换行之前)是获得你所要求的唯一方法是自己开发那个 pagkage/API .我的建议是创建一个通用库并在其中开发与您的 API 兼容的特定于平台的库。
  • 很公平。我开始写这样一个包,虽然到目前为止只有我需要的部分。尽管如此,我还是希望它已经写好了,嗯?
【解决方案2】:

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

必须有一些框架可以做到这一点。既然你希望它是跨平台的,我认为基于 python 的框架是你最好的选择。您还可以试一试谷歌地理位置。 html5 中内置了一些用于地理位置的 api。我认为您可以制作自己的应用程序并在开源上共享以供其他人使用。

对于 windows,有许多商业 pc trackinga pps。他们都做得很好。

【讨论】:

    【解决方案3】:

    您可以使用 wget 从您提到的其中一个站点(例如wget @987654321@)中提取数据,然后从您刚刚下载的文件中查找数据

    【讨论】:

      【解决方案4】:

      GeoClue 似乎至少可以满足您的一些要求。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-12
        • 2014-12-26
        • 1970-01-01
        • 1970-01-01
        • 2017-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多