Подтвердить что ты не робот

Где я? (Geolocation, Emacs, Perl)

Это один из тех, "безусловно, есть какая-то универсальная утилита, которая лучше, чем быстрая и грязная вещь, с которой я столкнулся ". Как и в России, я знаю, как сделать это несколькими специальными способами, но хотел бы используйте стандарт.

КРАТКИЙ ОБЗОР: Я ищу разумно стандартные и вездесущие инструменты для определить мое нынешнее географическое положение. Вызывается из Linux/UNIX командной строки, Perl, Emacs и т.д.

ДЕТАЛЬ:

Тривиальная ситуация внушает этот вопрос (но, несомненно, более важные приложения): я использую emacs org-mode, часто для записи журнал или дневник. Я вообще не использую официальный дневник в режиме org-mode - в основном, я удаляю временные метки в обычном журнале режима org, метаданные, которые выглядят как ссылка.

[[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-адреса в местоположении

    • note: не обязательно работает для частного IP-адреса, за NAT
    • но может сочетаться с traceroute

и эвристики, такие как просмотр SSID WiFi и т.д.

Я уже что-то закодировал.

Но... там больше глубины, чем я закодировал.

Ни один из вышеприведенные методы являются совершенными. У меня может не быть net.connectivity, и т.д. Некоторые из них специфичны для ОС.

Если уже есть средство с открытым исходным кодом, я должен использовать это.

Поэтому мой вопрос: есть ли разумно вездесущая служба геолокации?

Мой список пожеланий

  • Работает с ОС OS

    • Cygwin
    • Linux
    • Android? OS-X? (просто используйте стандарт ОС)
    • например. пытается выполнить команду, такую ​​как Windows netsh, и если это не удается...
  • Утилита командной строки

    • Perl и т.д.
    • вызываемый в emacs
    • потому что я хочу использовать его
    • но я уверен, что хотел бы использовать его в других местах.
  • Может подключаться к широко доступным стандартным службам геолокации

    • например. Perl CPAN IP:: Местоположение, IP- > страна/город/...
    • например. Google и т.д., Вывести географическое расположение из браузера.
  • Работает даже тогда, когда не удается подключиться к стандартным службам геолокации или интернету

    • например. кеш последнего местоположения
    • например. способность связывать имя с частной сетевой средой
    • например. если в лаборатории, изолированной от сети
    • или дома, подключенный к Wi-Fi, но широкополосный доступ вниз.
    • например. посмотрите Wi-Fi SSID.
  • Настраиваемый

    • может использовать информацию, которая НЕ является частью любой вездесущей базы геолокации
    • например. Я могу признать некоторые SSID как мой дом или офис.
  • Узнал

    • Знает (или может узнать), что некоторые SSID являются мобильными, а не географически фиксированными (например, мобильная точка доступа на моем телефоне).
    • но некоторые из них (в основном) географически закреплены (например, WiFi дома подключена к кабельному модему).
  • Обучение

    • может переопределять неверные высылки (иногда геоданные ошибочны, особенно VPN)
    • может распространяться или делать точную
    • Я бы не прочь написать правила.
    • но еще лучше, если какой-либо механизм вывода поддерживает сами правила.
    • например. если я исправлю местоположение, сделайте выводы о SSID-координатах, используемых для ошибочного вывода
  • эвристика

    • Windows 7 "netsh wlan show interfaces"
    • Windows/Cygwin ipconfig
    • * IX ifconfig
    • traceroute/tracert
    • обратный поиск по IP-адресу
  • Кэширование

    • чтобы избежать дорогостоящих поисков.
    • но кеш не является глобальным - может быть сделано для каждого приложения
    • некоторые приложения могут обойти кеш
    • другие могут использовать старые данные
4b9b3361

Ответ 1

GeoClue, по-видимому, удовлетворяет хотя бы некоторым вашим требованиям.

Чтобы преобразовать координаты в удобочитаемый адрес, можно использовать API OSN Nominatim.

Ответ 2

Почему вы просто не использовали GPS? Вы можете просто добавить координаты в свои метаданные и привязать их к адресу (от простых чисел до фактического места) после чтения.

Таким образом, почти все может быть помечено координатами.

В gnu/linux и других организациях, gpds должен делать.

В Windows я понятия не имею.

В Android слой сценариев для android должен обеспечивать доступ к устройству gps.

Я не уверен, что это соответствует вашим требованиям, но я просто предлагаю.

Ответ 3

Вы можете использовать wget для извлечения данных с одного из указанных вами сайтов, что-то вроде wget http://www.wolframalpha.com/input/?i=Where+am+I%3F, а затем найти данные из загруженного вами файла.

Ответ 4

Позвольте мне сказать так. Вы намерены отслеживать свое местоположение без использования устройства позиционирования, такого как gps. Это делается на основе вашего текущего местоположения географии с ближайшей точки доступа к сети. Точки доступа к сети обычно имеют геокодирование. Я предполагаю, что вы отслеживаете свое местоположение на своем ноутбуке, так как оно не имеет gps.

Для этого должно быть несколько фреймворков. Поскольку вы хотите, чтобы это была кросс-платформа, я думаю, что основой для python является ваш лучший вариант. Вы также можете указать местоположение google geo. Есть несколько api, встроенных в html5 для геолокации. Я думаю, вы можете использовать coo-kup собственное приложение и делиться им на openource для всех остальных.

Для окон есть много коммерческих pc trackinga pps. Все они прекрасно справляются с этим.