Сведения о вопросе

MAT

14:56, 18th August, 2020

Теги

location   zipcode    

Фильтр по коду zip или другим стратегиям поиска данных на основе местоположения

Просмотров: 405   Ответов: 5

Мой маленький сайт должен объединять список элементов из таблицы, используя местоположение активного пользователя в качестве фильтра. Подумайте Craigslist, где вы ищете "dvd", но результаты не из всех DB, они фильтруются по выбранному вами местоположению. Мой вопрос имеет 2 уровня:

  1. должен ли я пойти a-la-craigslist и попросить пользователей использовать местоположение на уровне города? Моя проблема с этим заключается в том, что вам нужно создать то, что кажется мне жестко закодированным, сделанным вручную списком местоположений.
  2. должен ли я пойти a-la-zipCode. Идея просто попросить пользователя ввести его zipcode, а затем объединить все элементы, которые находятся в том же или на определенном расстоянии от его кода zip.

Я, кажется, предпочитаю способ кода zip, поскольку он кажется более элегантным решением, но как на земле можно создать DB из всех кодов zip и реализовать функцию, которая дает код zip 12345, получает все zipcodes на расстоянии 1 мили?

это должно быть довольно распространено "task", поскольку многие сайты имеют потребность, подобную моей, поэтому я надеюсь не изобретать здесь колесо заново.



  Сведения об ответе

lats

04:33, 24th August, 2020

Получить базу данных кода Zip не проблема. Вы можете попробовать это бесплатно: http://zips.sourceforge.net/

Хотя я не знаю, насколько это актуально, или вы можете использовать один из многих поставщиков. У нас есть годовая подписка на ZipCodeDownload.com , и для возможно $100 мы получаем ежемесячные обновления с последними данными кода Zip в комплекте с Lat/Longs центроида кода zip.

Что касается запросов для всех молний в пределах определенного радиуса, то вам понадобится какая-то пространственная библиотека. Если у вас есть только таблица zips с lats/longs,, вам понадобится механизм, ориентированный на базу данных. SQL Server 2008 имеет встроенную возможность, и существуют библиотеки с открытым исходным кодом и коммерческие библиотеки , которые добавят такие возможности к SQL Server 2005. База данных с открытым исходным кодом PostgreSQL имеет проект PostGIS, который добавляет эту возможность в эту базу данных. Это здесь: http://postgis.refractions.net/

Другие платформы баз данных, вероятно, имеют аналогичные проекты, но это те, о которых я знаю. С помощью одной из этих библиотек на основе DB вы должны иметь возможность напрямую запрашивать любые коды zip (или любые строки любого типа, имеющие lat/long столбцы) в пределах заданного радиуса.

Если вы хотите пойти другим маршрутом, вы можете использовать пространственные инструменты с библиотекой карт. Здесь также есть варианты с открытым исходным кодом, такие как SharpMap и многие другие ( Google может помочь), которые могут использовать бесплатные карты Tiger для Соединенных Штатов в качестве источника данных. Однако этот маршрут несколько сложнее и, возможно, менее эффективен, если все, что вам нужно, - это поиск по радиусу.

Наконец, вы можете захотеть заглянуть в веб-сервис. Это, как вы говорите, является общей потребностью, и я полагаю, что существует любое количество веб-сервисов, на которые вы можете подписаться, которые могут предоставить все коды zip в данном радиусе от предоставленного кода zip. Быстрый поиск в Google обнаружил это: http://www.zip-codes.com/free-zip-code-tools.asp#radius но есть MANY ресурсов, которые необходимо иметь для поиска по этому вопросу.


  Сведения об ответе

ASER

11:45, 1st August, 2020

как на земле не один...] реализовать функцию, которая задала zip код 12345, получает все zipcodes на расстоянии 1 мили?

Вот пример того, как это сделать:

http://www.codeproject.com/KB/cs/zipcodeutil.aspx


  Сведения об ответе

qwerty101

19:04, 6th August, 2020

Просто чтобы быть техническим... PostGIS-это не проект сообщества Postgres... это автономный проект, который построен на вершине Postgres. Если вам нужна помощь или поддержка с PostGIS, вы захотите перейти в it's community вместо Postgres.


  Сведения об ответе

FAriza

00:07, 2nd August, 2020

Не будет ли более эффективным просто выяснить, какие города находятся в радиусе 1 мили, и сохранить эту информацию в таблице? Тогда вам не придется все время делать вычисления в базе данных.


  Сведения об ответе

9090

01:13, 15th August, 2020

Вы можете использовать PostGIS. Кроме того, я использовал библиотеки отображения deCarta. У них есть технология, которая позволяет вам геокей любой произвольный тип данных. Затем вы можете запросить их пространственно.

отказ от ответственности: я работаю на deCarta


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться