Страница 1 из 3
реализации интерактивной карты города со всем функционалом
Добавлено: 28 авг 2009, 11:16
alaevka
Добрый день! Пишу большой проект под веб, и вот встала задача реализации интерактивной карты города со всем вытекающим функционалом (поиск по карте, привязка, маркеры). Детальной карты города, который мне нужен - в Google Maps нет, поэтому придется искать другие пути. Почитав форум и статьи на сайте немного расширил свои знания в области картографии. Нашел карту города в формате *.ntm (открывается GPSMapEdit). Сделал оттуда экспорт в mid/mif. Далее смог открыть данную карту в MapInfo. Смог сделать формат *.cdr (Corel Draw). А вот что делать дальше - не знаю. Начал изучать Map server.
Я так понимаю, что каким-то образом данную карту можно открыть, используя Map Server, а операции по навигации и всему остальному выполнять на js движке (допустим open layers). А возможно ли достичь с помощью мап сервера такой красивой отрисовки карты, как yandex или google maps? или надо в Corel Draw все это отрисовать дизайнерам?
Наведите пожалуйста на правильный путь. Где почитать? что посмотреть?

Re: Помогите программисту
Добавлено: 28 авг 2009, 11:42
Mavka
Все правильно. Качество будет на высоте.
Посмотреть можно здесь, правда это не MapServer, а GeoServer (не принципиально):
http://gis.gis-lab.info:8080/geoserver/ ... HEIGHT=512
Для OpenLayers примеры есть на оф. сайте:
http://openlayers.org/dev/examples/
Почитать... в
FAQ есть раздел "Интернет-картография".
Re: Помогите программисту
Добавлено: 28 авг 2009, 11:47
KolesovDmitry
alaevka писал(а):А возможно ли достичь с помощью мап сервера такой красивой отрисовки карты, как yandex или google maps?
Наведите пожалуйста на правильный путь. Где почитать? что посмотреть?

Вообще, MapServer может создавать очень качественную графику, но для этого нужно потратить время на изучение его возможностей. Если вы программист, то вам не должно быть это слишком трудным. Описание того, как создавать собственные символы (в широком смысле) дается тут:
http://mapserver.org/mapfile/symbology/ ... ction.html . Там же приводятся некоторые примеры, как могут выглядеть элементы карты.
Re: Помогите программисту
Добавлено: 28 авг 2009, 11:51
alaevka
Спасибо большое. А в каком формате должна быть карта для работы с мап сервером? Знаю, что он поддерживает множество форматов. В моем случае есть MapInfo (TAB, MAP, DAT), NTM, CDR..Что лучше описывается?
Re: Помогите программисту
Добавлено: 28 авг 2009, 11:55
Mavka
Из перечисленного - только MapInfo.
Re: Помогите программисту
Добавлено: 31 авг 2009, 12:48
alaevka
Открыл в MapInfo свою карту, через универсальный транслятор создал shp - файлы (всего получилось 3) - я правильно понимаю что это слои из MapInfo? Далее создал map - файл, поключил все к OpenLayers - Заработало! в итолге у меня улицы - это один слой, а дома - это другой. А как же добиться красоты карты? предположим один тип домов одним цветом, другой другим? Хочется добиться результата OpenStreetMap..
Re: Помогите программисту
Добавлено: 31 авг 2009, 13:03
Mavka
Стили оформления задаются на стороне MapServer.
В статье "
Начало работы с MapServer" даются простые варианты. Для более детального изучения обратитесь к "
Обучающему пособию по Mapserver 5.x".
Re: Помогите программисту
Добавлено: 31 авг 2009, 15:15
alaevka
Спасибо, Mavka!
Уже начал разбираться! Подключил еще один слой в OpenLayers (слой карт google). Тем самым наложил свою карту на карту google. И тут же очередной вопрос - моя карта получилась немного сплющенной и смещенной, в результате чего объекты не совпадают. Я так понимаю надо искать ошибку в мап файле. Где-то здесь читал, что надо указать какой-то коэффициент (напомню, изначально карта была нарисована для навигатора в GpsMapEdit и при наложении карт google все совпадало).
Re: Помогите программисту
Добавлено: 31 авг 2009, 16:00
Mavka
Параметр {'reproject': true} указали как
здесь (гл. 3)?
Re: Помогите программисту
Добавлено: 01 сен 2009, 07:56
alaevka
Огромное спасибо

!!! Теперь все как надо! Все наложилось один - в один. Еще несколько вопросов.
1. Карта моего города - это 2 шейп-файла (дороги, дома). Соответственно приходится делать 2 слоя на стороне клиента в openlayers. Но хотелось бы, что бы это был один слой.
2. Где посмотреть по поводу кэширования получаемых тайлов. Потому как даже локально заметна медленная загрузка.
3. Планирую реализовать возможность пользователями самим добавлять объекты на карту. Соответственно вижу здесь выход подключения Mysql или другой СУБД. Однако как мне в дальнейшем придется заново отрисовывать карту, если некоторые объекты в шейп фале, а другие (их координаты) хранятся в БД.
Re: Помогите программисту
Добавлено: 01 сен 2009, 08:22
Mavka
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-файлов.
Re: Помогите программисту
Добавлено: 01 сен 2009, 16:47
alaevka
И снова спасибо, Mavka!!!
По поводу параметра {'reproject': true} при наложении карты на google maps: при наложении и указании данного параметра все замечательно, однако если отключить слой google maps и оставить лишь свой слой, то карта вновь сплющивается. При чем параметр уже никоим образом не влияет. Как это можно объяснить?
Теперь по поводу WFS-T. Как я понимаю mapserver поддерживает только WFS. Вменяемую статью по созданию WFS сервиса на MapServer я найти не смог. Так же как и отличие WFS от WFS-T. Где это можно посмотреть? И если в моем случае будет необходим WFS-T, я правильно понимаю что мне нужно будет изучать GeoServer?
Re: реализации интерактивной карты города со всем функционалом
Добавлено: 02 сен 2009, 08:18
Mavka
alaevka писал(а):оставить лишь свой слой, то карта вновь сплющивается
Элементарно, Ватсон - меняется система координат. У вас данные в WGS84 (EPSG:4326) и соответствующая проекция. Как только добавляете google map, автоматически переключается на Spherical Mercator
Попробуйте создавать карту с заранее заданной проекцией:
Код: Выделить всё
var map = new OpenLayers.Map("map", {
projection: new OpenLayers.Projection("EPSG:900913")
});
MapServer эту СК не поддерживает и сразу запросить готовые данные нельзя.
Re: реализации интерактивной карты города со всем функционалом
Добавлено: 02 сен 2009, 08:28
Mavka
alaevka писал(а):Теперь по поводу WFS-T
Настроить WFS под GeoServer гораздо проще (там делать ничего не надо).
Статей про "OpenLayers и WFS-T" я не встречал. Но кто то на форуме с ним работал, по-пробуй поискать.
Re: реализации интерактивной карты города со всем функционалом
Добавлено: 08 сен 2009, 09:52
alaevka
:-/