Как подвязать Базу данных к карте, MapServer, PostgreSQL

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
arzobispo
Активный участник
Сообщения: 230
Зарегистрирован: 10 сен 2008, 10:28
Репутация: 3
Контактная информация:

Как подвязать Базу данных к карте, MapServer, PostgreSQL

Сообщение arzobispo »

Добрый день!
У меня такой вопрос по карте, у вас вижу получилось хорошо :)
тоже делаю карту, так вот проблема, как подвязать Базу данных к карте, читаю на англ сайты и понять не могу. У меня стоит MapServer, база данных пока на Access, если надо перевести ее в другой фомат, не проблема. Можете рассказать, какие мне шаги надо сдеалать? Как понял надо поставить PostgreSQL чтобы формировать запросы к базе данных. Но как это сделать не могу понять.
Последний раз редактировалось arzobispo 22 окт 2008, 18:48, всего редактировалось 1 раз.
С Уважением, Антон
KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Городская web-карта - вот что получилось

Сообщение KolesovDmitry »

arzobispo писал(а):...проблема, как подвязать Базу данных к карте... У меня стоит MapServer ... Как понял надо поставить PostgreSQL чтобы формировать запросы к базе данных. Но как это сделать не могу понять.
Не совсем ясно, что вы не можете понять - как поставить PostgreSQL или как формировать запросы к БД.
Если последнее, то вот пример:

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

LAYER
    ...
    CONNECTIONTYPE postgis
    CONNECTION "dbname=<имя БД> host=<адрес> user=<имя пользователя> password=<пароль>"
    DATA "<имя поля с геометрическими данными> from <таблица>"
    ...
Вообще же, MapServer работает не только с PostgreSQL - почему вы выбрали именно его (просто любопытно)?
Аватара пользователя
arzobispo
Активный участник
Сообщения: 230
Зарегистрирован: 10 сен 2008, 10:28
Репутация: 3
Контактная информация:

Re: Городская web-карта - вот что получилось

Сообщение arzobispo »

Добрый день!
Просто о PostGIS узнал совсем недавно, на этих выходных думаю установлю PostGIS.
Мне интересны следующие моменты, попытаюсь их описать сейчас, т.к. не могу прикрутить на форму картнку, где изображена псевдокарта (упрощенная модель) и упрощенаня база данных.

Ниже представлена упрощенная карта, где  - квадрат прямоугольник с номером 01 (геометрические данные), номерация пусть идет сверху вниз от верхнего левого квадратика, нижний правый имеет индекс 036
________________
|       |
|       |
|       |
|       |
|       |
|       |
-----------------------

Также имеется База данных - упрощенная до одной таблицы:

Геометрические
данные
(на карте объект) | Вид | Особь | Животное
2 | Млекопитающие | Самец | Волк
10 | Млекопитающие | Самка | Волк
17 | Млекопитающие | Самец | Лиса
20 | Млекопитающие | Самка | Лиса
29 | Птицы | Самец | Синица
36 | Птицы | Самка | Снегирь


Вот возникли у меня следующие вопросы:
1. Где прописать SQL запрос к Базе данных?
2. Как связать Карту с Базой данных (как понял, то, что было в ответе на прошлое сообщение)?
3. Как связать пользовательский интерфейс с запросом SQL?

И если не затруднит, можете накидать примерно как это будет выглядеть. За раннее благодарен.
Последний раз редактировалось arzobispo 22 окт 2008, 18:48, всего редактировалось 1 раз.
С Уважением, Антон
KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Городская web-карта - вот что получилось

Сообщение KolesovDmitry »

arzobispo писал(а):Вот возникли у меня следующие вопросы:
1. Где прописать SQL запрос к Базе данных?
2. Как связать Карту с Базой данных (как понял, то, что было в ответе на прошлое сообщение)?
Это два связанных вопроса, и отвечать на них лучше одновременно.
Предполагаю, что у вас уже есть файл, описывающий карту (файл, с расширением map). И уже есть шаблон html, позволяющий отображать эту карту в окне браузера. (Если этого еще нет, то см. описание основных этапов создания карты и шаболонов: http://gis-lab.info/qa/mapserver-begin.html).
Предполагаю также, что вам нужно добавить еще один слой к карте - слой данных PostGIS.

Для этого:
Создаете новый слой в вашем map-файле (т.е. добавляете туда предложение LAYER) и настраиваете параметры (то, что не относится к БД, заменяю многоточием):

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

LAYER
    NAME      ...
    TYPE      <зависит от типа геометриии данных в вашей БД>
    CONNECTIONTYPE postgis	# Указываете, что слой - слой PostGIS
    CONNECTION "dbname=<имя> host=<адрес> port=<порт> user=<пользователь> password=<пароль>" # это и есть строка подключения к базе данных
    DATA "<имя поля с геоданными> from <таблица>" # выборка данных из БД
    HEADER ...
    FOOTER ...
    TEMPLATE ...
    PROJECTION
      ...
    END
    METADATA
      ...
    END
    CLASS
       ...
    END
     ...
  END
Итак, ответ на вопрос № 2:

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

CONNECTION "dbname=<имя> host=<адрес> port=<порт> user=<пользователь> password=<пароль>"

Это строка подключения, в которой задается имя базы данных, адрес сервера, порт, имя пользователя и пароль доступа (некоторые параметры могут отсутствовать - зависит от настроек подключения к БД в PostgreSQL).

Ответ на вопрос № 1:

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

DATA "<имя поля с геоданными> from <таблица>"
Здесь описывается имя поле с геометрическими данными и таблица, откуда выбираются данные. Например,

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

DATA "geom from bestoj"
Здесь же можно указать более сложный запрос - на выборку данных по условию, например:

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

DATA "the_geom from (SELECT landuse.object_id, landuse.area,
forest.type, forest.the_geom FROM landuse INNER JOIN forest ON
landuse.gid = forest.gid) as foo using unique gid using
SRID=4326"
Более подробно обо все этом сказано в учебных материалах: коротко в pdf и набор учебных материалов
arzobispo писал(а): 3. Как связать пользовательский интерфейс с запросом SQL?
С этим немного посложнее (для меня). Вижу 2 пути (возможно есть еще) оба из них я реализовывал давно и подробности помню плохо:
1) Пойти по пути использования параметров qstring, qlayer, qitem и т.д., предоставляемых MapServer. Об этом сказано здесь.
2) Использовать фильтры. Причем, параметры фильтрации можно менять динамически См. раздел "Changing map file parameters via a form or a URL"
Ответить

Вернуться в «Веб-картография»

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

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