Имеется связка POSTGIS+OpenLayers+MapServer.
Задача: выбираю последовательно дом на карте, ввожу его адрес, записываю в БД.
Проблема в том, что карта большая, а когда я обхожу ее обычным SQL-запросом SELECT, то объекты выбираются в разных уголках карты. Как можно составить запрос, чтобы выбирать объекты последовательно из одной области, например.
запросы к POSTGIS
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 13 ноя 2008, 18:55
- Репутация: 0
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: запросы к POSTGIS
Не очень понятно, что означает процедура обхода карты запросом SELECT.
Если это действительно так, то можно:
1) Проиндексировать базу по пространственным объектам
2) Добавить в запрос выборку по охвату:
где the_geom - имя поля, хранящего геометрию, bbox - геометрический объект, представляющий охват интересующей вас области.
Я правильно понимаю, что это запрос следующего вида?n0ip писал(а): Проблема в том, что карта большая, а когда я обхожу ее обычным SQL-запросом SELECT, то объекты выбираются в разных уголках карты. Как можно составить запрос, чтобы выбирать объекты последовательно из одной области, например.
Код: Выделить всё
SELECT ... FROM dom WHERE dom_id=ID
1) Проиндексировать базу по пространственным объектам
2) Добавить в запрос выборку по охвату:
Код: Выделить всё
SELECT ... FROM dom WHERE (the_geom && bbox) AND (dom_id=ID)
Последний раз редактировалось KolesovDmitry 09 апр 2009, 14:21, всего редактировалось 1 раз.
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 13 ноя 2008, 18:55
- Репутация: 0
Re: запросы к POSTGIS
Большое спасибо за подсказку! =) Как домой доберусь - попробую и отпишусь по результатам.
И еще один маленький вопрос очень интересует: в openlayers у меня поле размерами (0,0,700,550). Есть возможность получить координату курсора (вроде как сам опенлайерс умеет ее возвращать в разных форматах). Как ее соотнести с данными в postgis?
Другими словами: я кликаю в дом, получаю (x,y) или (широту,долготу) в месте клика указателем. К примеру, (340,230). Как мне узнать попал ли я в какой либо геометрический объект из слоя, выведенного из postgis'a?..
Если не очень хорошо сформулировал - скажите =)
И еще один маленький вопрос очень интересует: в openlayers у меня поле размерами (0,0,700,550). Есть возможность получить координату курсора (вроде как сам опенлайерс умеет ее возвращать в разных форматах). Как ее соотнести с данными в postgis?
Другими словами: я кликаю в дом, получаю (x,y) или (широту,долготу) в месте клика указателем. К примеру, (340,230). Как мне узнать попал ли я в какой либо геометрический объект из слоя, выведенного из postgis'a?..
Если не очень хорошо сформулировал - скажите =)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость