Как найти ограничивающие рамки для геокодового радиуса поиска - PullRequest
0 голосов
/ 22 марта 2012

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

Есть ли инструмент, который это делает? эта информация где-то продается?

Мое первоначальное решение состоит в том, чтобы создать оценку областей путем поиска всех адресов внутри них и получения простейшего многоугольника, который их окружает, и использования его в качестве ограничивающего прямоугольника. Однако это кажется действительно грубым способом сделать это. Я делаю этот расчет для каждого города, штата и почтового индекса в моей базе данных и сохраняю его? Как другие люди решили эту проблему?

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Если вы используете PostgreSQL для своей базы данных, вы можете использовать box(geometry) или его вариант для вычисления ограничивающей рамки для геометрии. Вы также можете неявно использовать ограничивающую рамку для геометрии в вашем SQL. Например (из Использование PostGIS: управление данными и запросы ):

SELECT road_id, road_name FROM roads WHERE roads_geom && ST_GeomFromText('POLYGON((...))',-1);

где && "указывает, пересекает ли ограничивающий прямоугольник одной геометрии ограничивающий прямоугольник другого". Чтобы получить ограничивающую рамку для коллекции геометрий, вы можете сначала использовать Collect или Union, чтобы объединить или объединить все геометрии вместе.

Конечно, если вы не используете PostGIS, функциональность действительно исходит от GEOS , которая является базовой библиотекой, которую фактически использует PostGIS. Основные функции геометрии можно использовать напрямую (например, из python), чтобы делать то, что вы хотите.

0 голосов
/ 22 марта 2012

Такие компании, как Maponics имеют данные о полигонах районов, округов, городов, штатов, провинций, поселков и т. Д. Могут быть и другие поставщики.

Многие из этих полигонов имеют огромное количествоточек, поэтому вы должны либо:

  • вычислить ограничивающие рамки, либо

  • предварительно вычислить идентификатор zip, район, город и т. д. для каждогоадрес и индексирование коллекции поиска по этим регионам.

Но зачем создавать свое приложение, храня базу данных мест и самостоятельно вычисляя географические данные?Вы можете сотрудничать с такими провайдерами, как CityGrid ;они предоставляют API для мест, которые можно искать по району, почтовому индексу и т. д .;Вы можете использовать их данные бесплатно в вашем собственном местном приложении.

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