【发布时间】: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/
-
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