В поисках идей: как бы вы начали писать геокодер? - PullRequest
1 голос
/ 11 сентября 2009

Поскольку геокодеры с открытым исходным кодом не могут начать сравниваться с Google или даже с Yahoo, я хотел бы начать проект по созданию хорошего геокодера с открытым исходным кодом. Просто для пояснения, геокодер берет некоторый текст (обычно с некоторыми ограничениями) и возвращает одну или несколько пар широта / долгота.

Я понимаю, что это трудная и сложная задача, поэтому мне интересно, как вы могли бы начать. Что бы вы прочитали? С какими алгоритмами вы бы ознакомились? Какой код вы бы просмотрели?

А также, если вы собираетесь разрабатывать это очень гибко, что бы вы хотели, чтобы первый прототип мог сделать?

РЕДАКТИРОВАТЬ: Давайте пока отложим вопрос с данными. Я собираюсь использовать данные OpenStreetMap вместе с базой данных, которые у меня есть. Позже я планирую включить и другие наборы данных, и я понимаю, что геокодер по своей природе будет ограничен качеством исходных данных.

Ответы [ 5 ]

3 голосов
/ 11 сентября 2009

Первая (и, вероятно, блокирующая ) проблема: откуда вы берете свои данные? (если вы не готовы платить тысячи долларов за проприетарные наборы).

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

1 голос
/ 11 сентября 2009

Алгоритмы просты. Хорошие картографические данные, однако, дороги. Очень дорого.

Google ездил на их автомобилях по всему миру, собирая эти данные среди прочего.

0 голосов
/ 11 сентября 2009

Я бы начал с абсолютного начала, выяснив, как вы собираетесь получать данные, которые соответствуют адресу улицы с геокодом. Либо Google заставлял людей ходить с единицами GPS, либо они получали информацию из какого-то существующего источника. Этот существующий источник мог быть ... (все догадки)

  • Почтовая служба
  • Некоторые существующие карты (напечатанные)
  • Группа пользователей-энтузиастов, которые были первыми, кто внедрил технологию GPS и которые более чем готовы вводить адреса улиц и координаты GPS
  • Некоторая государственная организация (или организации)
  • свои спутники
  • и т.д.

Полагаю, я понимаю, что информация была либо импортирована откуда-то, либо введена кем-то через какой-то интерфейс. В качестве отправной точки я бы посмотрел, как получить эту информацию. В ситуации с открытым исходным кодом вы можете получить кучу увлеченных людей для ввода информации.

Так что для моего первого прототипа, каким бы скучным он ни был, я бы создал форму для ввода информации.

Тогда вам нужно знать математику для определения ближайшего расстояния (по прямой линии). Оттуда попытайтесь выяснить, как включить дороги. (Полагаю, у вас должна быть точка данных для каждой кривой, где вы храните геокодированное местоположение кривой и угол дороги на векторе север / юг и восток / запад. принять во внимание уклон, чтобы получить точные дорожные измерения.)

Именно с этого я и начну.

Но, честно говоря, я бы даже не начал с этого. Другие программисты уже сделали это, меня больше интересует то, что еще не было сделано.

0 голосов
/ 11 сентября 2009

С точки зрения .NET эти статьи могут быть вам интересны:

Написание собственных приложений GPS: Часть I
Написание собственных приложений GPS: Часть 2
Написание ГИС и картографического программного обеспечения для .NET

Я только взглянул на статьи, но они долгое время были в списке самых популярных CodeProject.

А может быть этот проект CodePlex , который сделал доступным автор статей выше.

0 голосов
/ 11 сентября 2009
  • получить мои бесплатные исходные данные откуда-то вроде http://ipinfodb.com/ip_database.php
  • загрузить его в базу данных, денормализуя для быстрого поиска
  • дизайн мой API
  • создать его как веб-сервис RESTful
  • возвращает результаты в различных форматах: JSON, XML, CSV, необработанный текст

Первый прототип должен принимать почтовый индекс и возвращать широту / долготу в необработанном тексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...