реализации интерактивной карты города со всем функционалом

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

реализации интерактивной карты города со всем функционалом

Сообщение alaevka » 28 авг 2009, 11:16

Добрый день! Пишу большой проект под веб, и вот встала задача реализации интерактивной карты города со всем вытекающим функционалом (поиск по карте, привязка, маркеры). Детальной карты города, который мне нужен - в Google Maps нет, поэтому придется искать другие пути. Почитав форум и статьи на сайте немного расширил свои знания в области картографии. Нашел карту города в формате *.ntm (открывается GPSMapEdit). Сделал оттуда экспорт в mid/mif. Далее смог открыть данную карту в MapInfo. Смог сделать формат *.cdr (Corel Draw). А вот что делать дальше - не знаю. Начал изучать Map server.

Я так понимаю, что каким-то образом данную карту можно открыть, используя Map Server, а операции по навигации и всему остальному выполнять на js движке (допустим open layers). А возможно ли достичь с помощью мап сервера такой красивой отрисовки карты, как yandex или google maps? или надо в Corel Draw все это отрисовать дизайнерам?

Наведите пожалуйста на правильный путь. Где почитать? что посмотреть? :cry:

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Помогите программисту

Сообщение Mavka » 28 авг 2009, 11:42

Все правильно. Качество будет на высоте.
Посмотреть можно здесь, правда это не MapServer, а GeoServer (не принципиально):
http://gis.gis-lab.info:8080/geoserver/ ... HEIGHT=512

Для OpenLayers примеры есть на оф. сайте: http://openlayers.org/dev/examples/

Почитать... в FAQ есть раздел "Интернет-картография".
лангольеры под окном жрали время ом-ном-ном

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Помогите программисту

Сообщение KolesovDmitry » 28 авг 2009, 11:47

alaevka писал(а):А возможно ли достичь с помощью мап сервера такой красивой отрисовки карты, как yandex или google maps?

Наведите пожалуйста на правильный путь. Где почитать? что посмотреть? :cry:
Вообще, MapServer может создавать очень качественную графику, но для этого нужно потратить время на изучение его возможностей. Если вы программист, то вам не должно быть это слишком трудным. Описание того, как создавать собственные символы (в широком смысле) дается тут: http://mapserver.org/mapfile/symbology/ ... ction.html . Там же приводятся некоторые примеры, как могут выглядеть элементы карты.

alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

Re: Помогите программисту

Сообщение alaevka » 28 авг 2009, 11:51

Спасибо большое. А в каком формате должна быть карта для работы с мап сервером? Знаю, что он поддерживает множество форматов. В моем случае есть MapInfo (TAB, MAP, DAT), NTM, CDR..Что лучше описывается?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Помогите программисту

Сообщение Mavka » 28 авг 2009, 11:55

Из перечисленного - только MapInfo.
лангольеры под окном жрали время ом-ном-ном

alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

Re: Помогите программисту

Сообщение alaevka » 31 авг 2009, 12:48

Открыл в MapInfo свою карту, через универсальный транслятор создал shp - файлы (всего получилось 3) - я правильно понимаю что это слои из MapInfo? Далее создал map - файл, поключил все к OpenLayers - Заработало! в итолге у меня улицы - это один слой, а дома - это другой. А как же добиться красоты карты? предположим один тип домов одним цветом, другой другим? Хочется добиться результата OpenStreetMap..

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Помогите программисту

Сообщение Mavka » 31 авг 2009, 13:03

Стили оформления задаются на стороне MapServer.
В статье "Начало работы с MapServer" даются простые варианты. Для более детального изучения обратитесь к "Обучающему пособию по Mapserver 5.x".
лангольеры под окном жрали время ом-ном-ном

alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

Re: Помогите программисту

Сообщение alaevka » 31 авг 2009, 15:15

Спасибо, Mavka!

Уже начал разбираться! Подключил еще один слой в OpenLayers (слой карт google). Тем самым наложил свою карту на карту google. И тут же очередной вопрос - моя карта получилась немного сплющенной и смещенной, в результате чего объекты не совпадают. Я так понимаю надо искать ошибку в мап файле. Где-то здесь читал, что надо указать какой-то коэффициент (напомню, изначально карта была нарисована для навигатора в GpsMapEdit и при наложении карт google все совпадало).

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Помогите программисту

Сообщение Mavka » 31 авг 2009, 16:00

Параметр {'reproject': true} указали как здесь (гл. 3)?
лангольеры под окном жрали время ом-ном-ном

alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

Re: Помогите программисту

Сообщение alaevka » 01 сен 2009, 07:56

Огромное спасибо :roll: !!! Теперь все как надо! Все наложилось один - в один. Еще несколько вопросов.

1. Карта моего города - это 2 шейп-файла (дороги, дома). Соответственно приходится делать 2 слоя на стороне клиента в openlayers. Но хотелось бы, что бы это был один слой.

2. Где посмотреть по поводу кэширования получаемых тайлов. Потому как даже локально заметна медленная загрузка.

3. Планирую реализовать возможность пользователями самим добавлять объекты на карту. Соответственно вижу здесь выход подключения Mysql или другой СУБД. Однако как мне в дальнейшем придется заново отрисовывать карту, если некоторые объекты в шейп фале, а другие (их координаты) хранятся в БД.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Помогите программисту

Сообщение Mavka » 01 сен 2009, 08:22

1. Перечислить их списком:

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

var mylayer = new OpenLayers.Layer.WMS('Группа',
  'http://myserver/wms?',
  {map: '/path/to/mapfile.map', layers: 'house,road'},
  {isBaseLayer: false}
); 
Тогда MapServer их склеит и на OpenLayers придет одна картинка, а не две отдельные.

2. GeoJazzy, GeoWebCache.

3. Здесь вариантов много. Посмотрите в сторону WFS-T. Это сервис на подобие WMS, но данные передаются в векторном виде. В OpenLayers есть контроллер EditingToolbar (пример). Если пользователи доверенные, то загрузите все данные в базу PostGIS и подключайте ее к MapServer вместо shp-файлов.
лангольеры под окном жрали время ом-ном-ном

alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

Re: Помогите программисту

Сообщение alaevka » 01 сен 2009, 16:47

И снова спасибо, Mavka!!!

По поводу параметра {'reproject': true} при наложении карты на google maps: при наложении и указании данного параметра все замечательно, однако если отключить слой google maps и оставить лишь свой слой, то карта вновь сплющивается. При чем параметр уже никоим образом не влияет. Как это можно объяснить?


Теперь по поводу WFS-T. Как я понимаю mapserver поддерживает только WFS. Вменяемую статью по созданию WFS сервиса на MapServer я найти не смог. Так же как и отличие WFS от WFS-T. Где это можно посмотреть? И если в моем случае будет необходим WFS-T, я правильно понимаю что мне нужно будет изучать GeoServer?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: реализации интерактивной карты города со всем функционалом

Сообщение Mavka » 02 сен 2009, 08:18

alaevka писал(а):оставить лишь свой слой, то карта вновь сплющивается
Элементарно, Ватсон - меняется система координат. У вас данные в WGS84 (EPSG:4326) и соответствующая проекция. Как только добавляете google map, автоматически переключается на Spherical Mercator
Попробуйте создавать карту с заранее заданной проекцией:

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

var map = new OpenLayers.Map("map", {
  projection: new OpenLayers.Projection("EPSG:900913")
}); 
MapServer эту СК не поддерживает и сразу запросить готовые данные нельзя.
Последний раз редактировалось Mavka 02 сен 2009, 08:30, всего редактировалось 1 раз.
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: реализации интерактивной карты города со всем функционалом

Сообщение Mavka » 02 сен 2009, 08:28

alaevka писал(а):Теперь по поводу WFS-T
Настроить WFS под GeoServer гораздо проще (там делать ничего не надо).
Статей про "OpenLayers и WFS-T" я не встречал. Но кто то на форуме с ним работал, по-пробуй поискать.
лангольеры под окном жрали время ом-ном-ном

alaevka
Интересующийся
Сообщения: 22
Зарегистрирован: 28 авг 2009, 11:02
Репутация: 0

Re: реализации интерактивной карты города со всем функционалом

Сообщение alaevka » 08 сен 2009, 09:52

:-/
Последний раз редактировалось alaevka 10 ноя 2010, 19:31, всего редактировалось 1 раз.

Ответить

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

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

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