Поиск объекта по введённому адресу

Ответить
gisnoob
Новоприбывший
Сообщения: 1
Зарегистрирован: 16 окт 2009, 19:29
Репутация: 0

Поиск объекта по введённому адресу

Сообщение gisnoob » 16 окт 2009, 19:39

Доброго время суток ,
у меня есть таблица PostGis импортированная из shp файла , c улицами домами городами ...
Вопрос следующего плана: надо организовать поиск объекта по введённому адресу. Меня интеесует алгоритм нахождения этого объекта , ничего конкретного в инете не нашёл (вероятно не там искал).
Я предполагаю что алгоритм будет следующий:
Допустим если ввели улицу + дом , то надо искать наименьшее расстояние м-у объектами с названием этой улицы и номера дома , и город будет найден тоже из условия ближайшего рассположеия к улице.

Натолкните на правильный путь, заранее спасибо
Последний раз редактировалось Максим Дубинин 17 окт 2009, 02:09, всего редактировалось 1 раз.
Причина: изменен заголовок темы

Magicus
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 мар 2009, 14:03
Репутация: 0

Re: Поиск объекта по введённому адресу

Сообщение Magicus » 24 окт 2009, 16:14

У меня тоже такая проблема пока не знаю, как ее решить. А по поводу предложенному вами алгоритма я тоже думал но там есть небольшая проблема, если человек введет название улицы и номер дома который не существует на этой улице то он может просто найти дом на соседней улице.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Поиск объекта по введённому адресу

Сообщение Denis Rykov » 24 окт 2009, 17:50

Magicus писал(а):У меня тоже такая проблема пока не знаю, как ее решить. А по поводу предложенному вами алгоритма я тоже думал но там есть небольшая проблема, если человек введет название улицы и номер дома который не существует на этой улице то он может просто найти дом на соседней улице.
Если для каждого геометрического объекта есть поле "Улица" и "Номер дома", то введя необходимые данные и сформировав нужный SQL-запрос, вы получите множество объектов с указанными параметрами (возможно, пустое). Если же в базе дома представлены только своими номерами, а улицы названиями, тогда можно выполнить поиск всех домов, пересекающихся с буферной зоной выбранной улицы (какой именно буфер выбрать, решать вам).

Код: Выделить всё

SELECT * FROM Street, Houses WHERE Street.name='Пушкина' and Houses.number=55 and ST_Intersects(ST_Buffer(Street.geom,10),Houses.geom)
Если же вы хотите искать, используя условие минимальности расстояния (замечу, что в таком случае часть информации может потеряться, так как дома с одинаковыми улицами и номерами могут присутствовать в разных городах), то запрос будет выглядеть как-то так:

Код: Выделить всё

SELECT MIN(ST_Distance(Houses.geom,Street.geom)) AS minimum INTO TEMPORARY temptable FROM Houses, Street;
SELECT * FROM Street, Houses,temptable WHERE Street.name='Пушкина' and Houses.number=55 and ST_Distance(Street.geom,Houses.geom)=minimum
Spatial is now, more than ever, just another column- The Geometry Column.

oxch
Участник
Сообщения: 53
Зарегистрирован: 04 мар 2010, 11:30
Репутация: 0
Откуда: Комсомольск-на-Амуре
Контактная информация:

Re: Поиск объекта по введённому адресу

Сообщение oxch » 21 апр 2010, 09:06

Я бы посоветовал обратить внимание на возможности полнотекстового поиска в базе данных. С версии 8.3 эти функции интегрированы в PostgreSQL.

На сайте русской документации в статье http://postgresql.ru.net/docs/fullsearch.html описано как можно организовать этот поиск.

А дальше по результату поиска можно получить объект на карте и, соответственно, все его атрибуты.

По крайней мере, именно так я реализовывал поиск для себя. Для особо пытливых можно порекомендовать сделать поиск с учетом корреляции слов, чтобы искать даже в случае ошибки в строке поиска, ибо полнотекстовый поиск ищет только полное совпадение слов.
Чудес на свете не бывает, они просто случаются.
Знать - значит уметь использовать.
Интерактивная карта-схема Хабаровского края

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 23 гостя