Openlayers и самописный WMS

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Openlayers и самописный WMS

Сообщение Daess » 29 мар 2009, 23:05

Есть самописный WMS-сервис на JAVA в виде сервлета. Возвращает JPEG карту города. При подсовывании этого сервиса OpenLayers картинку он отображает, но как-то странно: два квадрата, в одном моя карта, другой розовый. При зуме розовые квадраты множатся, а один содержит карту, т.о. не зумится карта. В чем мб проблема?

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Openlayers и самописный WMS

Сообщение Максим Дубинин » 29 мар 2009, 23:37

а другие WMS-сервисы работают нормально?
пристегивайтесь, турбулентность прямо по курсу

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 29 мар 2009, 23:39

Не пробовал. Это если честно вообще мой первый опыт общения с этими технологиями (не считая GPS-приемник:)) Делал вроде как в статье, но что-то непонятно пока.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Openlayers и самописный WMS

Сообщение Максим Дубинин » 29 мар 2009, 23:46

в этой статье? http://gis-lab.info/qa/ol-load.html
в статье есть пример с работающим WMS, попробуйте сначала с ним
пристегивайтесь, турбулентность прямо по курсу

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Openlayers и самописный WMS

Сообщение bim2010 » 30 мар 2009, 12:43

Розовый квадрат означает, что он не чем не заполнен.
Это цвет фона по умолчанию, если отсутствует информация.
Мне тоже очень нравиться писать на JAVA и Javascript, но ведь есть
готовый сервер на JAVA - GeoServer. WMS там в наличии. Есть все исходники. Предположим Вы, когда писали WMS именно туда и смотрели.
Что бы понять, где у Вас ошибка выложите текст.
Возможно, Вы ошиблись в терменалогии, когда писали «Есть самописный WMS-сервис на JAVA в виде сервлета”. Ваш JAVA – код работает на сервере?
Если Вы решили написать WMS на клиенте на JAVA то это, на мой взгляд, на JAVA делать не стоит.
Еще вопрос - Вы уверены, что без WMS не обойтись? Я весь свой вектор разделил на относительно постоянную часть и переменную. Условно постоянную часть, преобразованную в jpg – на OpenLayers.Layer.TMS, переменную часть вектора оставил в виде вектора в OL. Конечно, это решение не универсально, но нагрузка на сервер по WMS преобразованию снята. Сразу скажу, мне это решение не нравится, но пока как времянка…
Был - бы готовый WMS на PHP бесплатный. Может кому попадался?

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 30 мар 2009, 15:46

На JAVA - потому что так требуется. Курсяк однако...

Заметил интересную вещь:

OpenLayers сконфигурирован следующим образом

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

<script defer="defer" type="text/javascript">
        var map = new OpenLayers.Map('map');
        var wms = new OpenLayers.Layer.WMS( "Voronezh WMS","http://localhost:1404/WMSService/wms?",
		{
			VERSION: '1.3.0',
			REQUEST: 'GetMap',
			FORMAT: 'jpeg',
			LAYERS: 'main',
			STYLES: 'default',
			CRS: 'EPSG:4326',
			WIDTH: '400',
			HEIGHT: '400',
			BBOX: '39.067383,51.590723,39.396973,51.754240' 
		});
		wms.setIsBaseLayer(true);
        map.addLayer(wms);
        map.zoomToMaxExtent();
      </script>
А ссылка, подаваемая на запрос изображения получается такая:

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

http://localhost:1404/WMSService/wms?VERSION=1.3.0&REQUEST=GetMap&FORMAT=jpeg&LAYERS=main&STYLES=default&CRS=EPSG%3A4326&WIDTH=256&HEIGHT=256&BBOX=0,-90,180,90&SERVICE=WMS&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326
Т.е. он не съел размеры и ограничение + дописал своих параметров, которые мне не нужны. Что тут можно сказать?

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 31 мар 2009, 20:02

А должен ли WMS сервис разрезать JPEG-карту на отдельные кусочки? Исходник у меня около 6 мегапикселей, а при зуме судя по незаполненным квадратам, каждый из них определенного небольшого размера.

ЗЫЖ и почему все-таки не принимаются значения BBOX и размеры?? :(

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 20 апр 2009, 14:14

Заставил карту отображаться. Теперь другая проблема. Есть начальный экстент, но при его использовании карта получается сжатой по вертикали раза в 2, хотя экстент задает приблизительно квадрат. В чем может быть проблема? Экстент верный - проверил по гуглемапу.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Openlayers и самописный WMS

Сообщение Максим Дубинин » 20 апр 2009, 16:56

судя по описанию, скорее всего у вас данные в одной СК, а их охват показывается на гугле по другому так как гугл, это другая СК.
пристегивайтесь, турбулентность прямо по курсу

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 27 апр 2009, 20:23

Так, с этой проблемой разобрался. Теперь вопрос: OpenLayers сам умеет склеивать слои? А то у меня есть два респонса от сервера - с как бы прозрачной PNG и базовой JPEG-подложкой, так вот пока одновременно заставить отображаться оба слоя пока не вышло (чтобы через прозрачность было видно базовый слой):(

Konstantin Tokar
Активный участник
Сообщения: 178
Зарегистрирован: 16 июл 2008, 09:56
Репутация: 1
Откуда: Москва

Re: Openlayers и самописный WMS

Сообщение Konstantin Tokar » 28 апр 2009, 00:31

Насчёт двух слоёв: я это сделал и это работает - jpeg рельеф и png слой с названиями и границами (например, береговой линией). Результат в целом отрицательный - трафик экономится, но общее время загрузки увеличилось, по сравнению с одним слоем jpg - из-за увеличения количества фрагментов, как показывает анализ в firebug. Вот кусок из моего проекта - насколько рабочий не знаю, я его закомментировал:

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

    var WorldMap_relief_only = new OpenLayers.Layer.WMS("WorldMap-relief-only JPG 50%", "http://xxxxxx.ru/cgi-bin/tilecache.py", {
        layers: 'WorldMap-relief-only'
    }, {
        buffer: 0,
        visibility: false,
        isBaseLayer: true
    });
    map.addLayer(WorldMap_relief_only);
    
    var WorldMap_contrastobject_only = new OpenLayers.Layer.WMS("WorldMap-contrastobject-only GIF", "http://xxxxxx.ru/cgi-bin/tilecache.py", {
        layers: 'WorldMap-contrastobject-only',
        transparent: true
    }, {
        buffer: 0,
        visibility: true,
        alfa: true
    });
    map.addLayer(WorldMap_contrastobject_only);
Последний раз редактировалось Konstantin Tokar 28 апр 2009, 00:34, всего редактировалось 1 раз.

Konstantin Tokar
Активный участник
Сообщения: 178
Зарегистрирован: 16 июл 2008, 09:56
Репутация: 1
Откуда: Москва

Re: Openlayers и самописный WMS

Сообщение Konstantin Tokar » 28 апр 2009, 00:33

Да, всё это просто на firefox, IE6 работает с PNG с ошибками, не забывайте.

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 28 апр 2009, 09:07

У меня и так FF, но все равно спасибо. Единственный вопрос вот в чем: у вас там фигурируют параметры transparent и alfa - за что они отвечают? Они вами самостоятельно обрабатываются?

Konstantin Tokar
Активный участник
Сообщения: 178
Зарегистрирован: 16 июл 2008, 09:56
Репутация: 1
Откуда: Москва

Re: Openlayers и самописный WMS

Сообщение Konstantin Tokar » 28 апр 2009, 21:27

Daess писал(а):У меня и так FF, но все равно спасибо. Единственный вопрос вот в чем: у вас там фигурируют параметры transparent и alfa - за что они отвечают? Они вами самостоятельно обрабатываются?
зачем я использовал alpha (или alfa) я не помню, может и ничего не значит - а может это параметр, передаваемый генератору картинок, transparent есть в примерах и значит то, что и ожидается - говорит что слой прозрачный.

Daess
Новоприбывший
Сообщения: 8
Зарегистрирован: 29 мар 2009, 17:03
Репутация: 0

Re: Openlayers и самописный WMS

Сообщение Daess » 28 апр 2009, 22:08

Спасибо большое! Я просто думал что transparent - это параметр запроса к серверу WMS и надо его самому обрабатывать. Ан нет - проставил его и все заработало:)

Ответить

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

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

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