НЕ отображается слой поверх OSM

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
dascom
Интересующийся
Сообщения: 18
Зарегистрирован: 25 мар 2011, 10:36
Репутация: 1

НЕ отображается слой поверх OSM

Сообщение dascom » 01 апр 2011, 10:22

Добрый день.
Необходимо отобразить WMS слой поверх OSM карты. В ходе долгих мучений получился вот такой текст скрипта:

function init() {
map = new OpenLayers.Map("basicMap");
map.addControl(new OpenLayers.Control.LayerSwitcher());
var mapnik = new OpenLayers.Layer.OSM();
var wms1 = new OpenLayers.Layer.WMS(
"voda",
"http://...ru/cgi-bin/mapserv?map=/var/www/1.map&",
{
map: 'http://...ru/cgi-bin/mapserv?map=/var/www/1.map&',
transparent: 'TRUE',
layers: 'voda'
},

{'reproject': true}
);

map.addLayer(mapnik);
map.addLayer(wms1);
map.setCenter(new OpenLayers.LonLat(40,43.55) // Center of the map
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
), 11// Zoom level
);
}

Но в результате, отображается ОСМ карта, а вместо моего слоя - надпись: msWMSLoadGetParams(): WMS server error. Invalid SRS given: SRS must be valid for all requested layers.
f1.jpg
f1.jpg (21.4 КБ) 9801 просмотр
Я так понял, что необходимо провести преобразование слоя в другую систему координат. Но как это сделать - не представляю ввиду того, что с openlayers столкнулся совсем недавно. В базе слой хранится, как я понял, в системе 4326.
Заранее благодарю за помощь.

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

Re: НЕ отображается слой поверх OSM

Сообщение Mavka » 01 апр 2011, 10:49

В map-файле добавьте проекцию 900913:

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

wms_srs    "epsg:4326 epsg:900913" 
лангольеры под окном жрали время ом-ном-ном

dascom
Интересующийся
Сообщения: 18
Зарегистрирован: 25 мар 2011, 10:36
Репутация: 1

Re: НЕ отображается слой поверх OSM

Сообщение dascom » 01 апр 2011, 12:09

Вот листинг мапфайла
MAP
SYMBOLSET "./symb/symb1.sym"
FONTSET "./fonts/fonts.list"
NAME "WMS"
STATUS ON
IMAGETYPE png
EXTENT 39.3 43.5 40.7 43.9
SIZE 800 600
SHAPEPATH "/ms4w/tmp"
WEB
TEMPLATE "template.html"
IMAGEPATH "/var/www/ms4w/img/"
IMAGEURL "/tmp/"
METADATA
wms_title "eng_test"
wms_abstract "This is the WMS"
wms_onlineresource "http://1.ru/cgi-bin/mapserv?map=/var/www/1.map&"
wms_getfeatureinfo "http://1.ru/cgi-bin/mapserv?map=/var/www/1.map&"
wms_featureinfoformat "text/plain"
wms_srs "epsg:4326 epsg:900913"
END
END
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
"init=epsg:900913"
END
#вода
LAYER
NAME 'zv'
TYPE POLYGON
DUMP true
TEMPLATE "dummy"
CONNECTIONTYPE postgis
CONNECTION "dbname='pgis_test' host=1.ru port=5432 user='1' password='1' sslmode=disable"
DATA 'the_geom FROM "voda" USING UNIQUE gid USING srid=4326'
METADATA
wms_title "voda"
wms_abstract "voda"
wms_include_items "all"
END
STATUS OFF
TRANSPARENCY 100
PROJECTION
'proj=longlat'
'ellps=WGS84'
'datum=WGS84'
'no_defs'
END
CLASS
STYLE
SYMBOL 'diagfill'
SIZE 8
COLOR 0 20 250
END
END
END

Так же делал первый раз, так что за косяки не судите строго.
Если на прямую к нему обращаться - вроде работает нормально...

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

Re: НЕ отображается слой поверх OSM

Сообщение Mavka » 01 апр 2011, 12:49

Кроме того что на уровне MAP проекцию нужно исправить (странно, что он у вас "работает нормально")

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

PROJECTION
    "init=epsg:4326"
END
ошибок не вижу. Попробуйте включить отладку.

Из кода OpenLayers уберите (дублирует url) всю строку:

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

map: 'http://...ru/cgi-bin/mapserv?map=/var/www/1.map&', 
лангольеры под окном жрали время ом-ном-ном

dascom
Интересующийся
Сообщения: 18
Зарегистрирован: 25 мар 2011, 10:36
Репутация: 1

Re: НЕ отображается слой поверх OSM

Сообщение dascom » 01 апр 2011, 13:30

В инструкции было написано указать в мапфайле следующие параметры проекции:
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
"init=epsg:4326"

Если не трудно - поясните - что здесь для чего и что лишнее?

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

Re: НЕ отображается слой поверх OSM

Сообщение Mavka » 01 апр 2011, 13:34

То, что у вас прописано не "init=epsg:4326", а "init=epsg:900913"

И проекцию нужно указывать или:

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

"proj=latlong"
"ellps=WGS84"
"datum=WGS84" 
или

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

"init=epsg:4326" 
лангольеры под окном жрали время ом-ном-ном

dascom
Интересующийся
Сообщения: 18
Зарегистрирован: 25 мар 2011, 10:36
Репутация: 1

Re: НЕ отображается слой поверх OSM

Сообщение dascom » 01 апр 2011, 14:01

Спасибо. Понял. Но не смотря на все изменения , слой по прежнему не оттображается.
По прежнему выдает ошибку :
f2.jpg
f2.jpg (24.2 КБ) 9775 просмотров

dascom
Интересующийся
Сообщения: 18
Зарегистрирован: 25 мар 2011, 10:36
Репутация: 1

Re: НЕ отображается слой поверх OSM

Сообщение dascom » 01 апр 2011, 14:18

Забыл уточнить. При работе с гуглом в качестве подложки - все работает отлично.
var gmap = new OpenLayers.Layer.Google( "Google Streets", {numZoomLevels: 20} );
var gsat = new OpenLayers.Layer.Google( "Google Satellite", {type: G_SATELLITE_MAP, numZoomLevels: 20} );
var wms1 = new OpenLayers.Layer.WMS("voda",
"http://1.ru/cgi-bin/mapserv?map=/var/www/1.map&",
{
transparent: 'TRUE',
layers: 'voda'
},
{'reproject': true}
);

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

Re: НЕ отображается слой поверх OSM

Сообщение Mavka » 01 апр 2011, 15:03

1. Как вы должно быть заметили, ошибка не так же самая, а другая.
2. Проверять работу WMS лучше в настольной ГИС (qgis).
3. Смотрите какие запросы уходят из OL на сервер.
4. Смотрите логи отладки.
5. В гугло-слое вы использовали reproject. Это совершенно другой механизм перепроецирования.

Почитайте.
лангольеры под окном жрали время ом-ном-ном

dascom
Интересующийся
Сообщения: 18
Зарегистрирован: 25 мар 2011, 10:36
Репутация: 1

Re: НЕ отображается слой поверх OSM

Сообщение dascom » 07 апр 2011, 13:40

Итак, при активном участии Mavka (за что я безмерно благодарен), вопрос решен.
В данном случае проблема заключалась в отсутствии необходимой проекции, а именно:
Нужно было найти папку с файлами проекций. В OSGeo4W это 'c:\OSGeo4W\share\proj\', в Linux можно искать по файлу 'epsg'. Далее НУЖНО (для надежности) во все три файла - epsg, esri, esri.extra прописать первой строкой:

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

#  google mercator
 <900913> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext  +no_defs <>  
После чего у меня все заработало. Всем удачи.

Ответить

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

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

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