Страница 1 из 2
MapServer+OpenLayers. ускорение работы
Добавлено: 17 авг 2009, 10:46
dixgrey
подскажите новичку...
1. карта строится, как мне кажется, не очень быстро. какие начальные шаги надо делать и на что обратить внимание, для создания более оптимального проекта? можно ли добится таких скоростей, как на googlemaps?
2. на карте есть слой с фоном и слой с треками, которые я строю по точкам и которые все время разные. Но проблема в том, что при приближении OpenLayers восстанавливает из кеша старые данные, треки обновляются только на первом приближении. Как быть в таком случае?
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 авг 2009, 11:41
Mavka
1. По возможности уменьшить количество слоев.
Существенно повысить скорость можно с кэширующим сервером (WMS-C).
2. Слой с треками сделайте векторным. Они в каком формате храняться?
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 авг 2009, 13:49
Konstantin Tokar
Раз обновляются один раз - значит http сервер возвращает срок жизни картинок ненулевой. Для карт это правильно, а для динамично изменяющихся слоёв надо поставить отсутствие кэширования.
И делайте карту тилями 256х256, а трэки одним куском.
Кстати, я не знаю - а тили могут быть разного размера на разных слоях одной карты? В OL 2.6 я пробовал и нарвался на глюки.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 18 авг 2009, 09:44
dixgrey
все хранится в векторном формате, mapserver + postgis.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 18 авг 2009, 09:59
Mavka
Настройте MapServer на вывод трэков через WFS. А в OpenLayers подключите
слой через OpenLayers.Layer.WFS. Это может помочь с проблемами кэширования
и скоростью загрузки.
Я так понял у вас два слоя. Подложка (базовый) и слой с трэками (transparency)?
Если слой прозрачный, то он в формате png с 32 битами на пиксель, это не мало.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 15 сен 2009, 12:03
dixgrey
слоев сейчас больше, подложка (растр) и векторные слои домов улиц и треков, была проблема с extend - когда ее убрал, сервер начал чуть быстрее работать, но все равно тормоза остались. Сейчас пока сервер стоит на виртуальной машине, и то когда я, например, изменяю масштаб, надо ждать 3-5 секунд, пока он отрисует... что же будет когда на него залезут сразу 100 человек, не говоря уже про 1000...
попробую перевести на WFS, правда с ним пока не сталкивался, придется разбираться.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 15 сен 2009, 14:05
Mavka
Соберите все что только можно в один слой - подложку, дома, улицы.
И поставьте сервер WMS-C.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 16 сен 2009, 14:21
dixgrey
поставил WMS-C, не получилось нормально его сконфигурировать...
добавил в нем слой:
Код: Выделить всё
<wmsLayer>
<name>Rt_rt</name>
<mimeFormats>
<string>image/png</string>
<string>image/jpeg</string>
</mimeFormats>
<grids>
<entry>
<srs>
<number>4326</number>
</srs>
<grid>
<srs>
<number>4326</number>
</srs>
<dataBounds>
<coords>
<double>27.04068</double>
<double>55.627801</double>
<double>27.055416</double>
<double>55.639571</double>
</coords>
</dataBounds>
<gridBounds>
<coords>
<double>-180.0</double>
<double>-90.0</double>
<double>180.0</double>
<double>90.0</double>
</coords>
</gridBounds>
<zoomStart>5</zoomStart>
<zoomStop>20</zoomStop>
</grid>
</entry>
</grids>
<wmsUrl>
<string>http://vmadmin/cgi-bin/mapserv.exe?map=/ms4w/apps/minsk/bnz_test.map&</string>
</wmsUrl>
<wmsLayers>Rt_rt</wmsLayers>
<transparent>true</transparent>
</wmsLayer>
открываю его:
Код: Выделить всё
var mapurl="http://vmadmin:8080/geowebcache/service/wms";
var layer = new OpenLayers.Layer.WMS("Minsk",
mapurl, {layers: 'Rt_rt', format: 'png'}, options );
и на экране куча розовых тайтлов, тоже самое если
http://localhost:8080/geowebcache/demo попытаться сгенерировать слой в openlayers
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 16 сен 2009, 14:45
Mavka
Щелкните право кнопкой по розовому тайлу, выберите "скопировать адрес изображения".
1. Вдумчиво посмотрите на адрес, какие там параметры, все ли так как должно быть.
2. Откройте этот адрес в браузере, GWC скажет вам что не так.
3. Посмотрите логи Apache, что приходит на MapServer и что уходит обратно.
P.S. Обязательно указывайте название программы и ее версию, а не просто WMS-C.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 сен 2009, 12:27
dixgrey
адрес рисунка:
http://localhost:8080/geowebcache/servi ... HEIGHT=256
броузер возвращает:
400: Empty metatile, error message: MimeType mismatch, expected image/png but got text/xml from http://vmadmin/cgi-bin/mapserv.exe?map= ... 5751953125 null
geowebcache-1.1.3
jetty-6.1.19
на апач приходит "GET /cgi-bin/mapserv.exe?map=/ms4w/apps/minsk/bnz_test.map&?SERVICE=WMS&REQUEST=GetMap&VERSION=1.1.0&LAYERS=Rt_rt&EXCEPTIONS=application/vnd.ogc.se_inimage&STYLES=&TRANSPARENT=TRUE&FORMAT=image/png&SRS=EPSG:4326&WIDTH=512&HEIGHT=768&BBOX=27.04833984375,55.61279296875,27.059326171875,55.6292724609375 HTTP/1.1" 200 552"
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 сен 2009, 12:51
Mavka
Я ничего криминального не вижу... Что скажет браузер на
этот запрос?
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 сен 2009, 13:41
dixgrey
он говорит:
msWFSDispatch(): WFS server error. Incomplete WFS request: SERVICE parameter missing
все - понял в чем дело, перед service в запросе стоит "?" только пока не пойму где его убрать

Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 сен 2009, 13:56
Mavka
все - понял в чем дело, перед service в запросе стоит "?"
У меня с "&?"работает успешно. Появились они в настройках GWC:
Код: Выделить всё
<wmsUrl>
<string>http://vmadmin/cgi-bin/mapserv.exe?map=/ms4w/apps/minsk/bnz_test.map&</string>
</wmsUrl>
Последний "&" он и есть. А знак вопроса добавляется автоматически.
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 сен 2009, 14:00
dixgrey
если я пишу ...bnz_test.map&SERVICE=WMS&REQ... тайтл рисует,
если /apps/minsk/bnz_test.map&?SERVICE=WMS&REQ - выдает ошибку
Re: MapServer+OpenLayers. ускорение работы
Добавлено: 17 сен 2009, 14:04
Mavka
Тогда попробуй убрать "&"