параметр STATUS для группы слоев (Mapserver) для wms-сервера

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
yarovka
Интересующийся
Сообщения: 18
Зарегистрирован: 05 мар 2010, 18:34
Репутация: 0

параметр STATUS для группы слоев (Mapserver) для wms-сервера

Сообщение yarovka »

Доброго времени суток!

Столкнулась со следующей проблемой.

У меня есть .map файл с описанием нескольких слоев (типы разные, есть LINE, POLYGON и есть POINT):

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

MAP
  NAME 			 "МОЯ_КАРТА"
  STATUS 		 ON
  SIZE           1163 842
  EXTENT         476024.78 4629051.50 686617.88 4849094.27
  SHAPEPATH      "../data/МОЯ_КАРТА"
  IMAGECOLOR     255 255 255
  
  WEB
		METADATA
				"wms_title"				"..."
				"wms_abstract"				"..."
				"wms_onlineresourse"		".../МОЯ_КАРТА.map"
				"wms_srs"					"EPSG:32629 EPSG:54004 EPSG:4326"
				"wms_enable_request" 		"*"
				"wms_feature_info_mime_type" "text/plain"
		END #End metadata
  END #End web
  
  PROJECTION	 
	"init=epsg:4326"
  END #End projection
  
  LAYER
	NAME			"СЛОЙ_1"
	METADATA
			"wms_title"			"СЛОЙ_1"
			"wms_srs"				"EPSG:32629 EPSG:54004 EPSG:4326"
			"wms_include_items"		"all"
	END #End metadata
	TYPE			LINE
	STATUS			DEFAULT
	DATA			"../data/МОЯ_КАРТА/СЛОЙ_1.shp"
	TEMPLATE	"template.html"
	PROJECTION		
		"init=epsg:32629"
	END #End projection
		CLASS
			NAME "..."
			STYLE
			COLOR 138 0 146 
			OUTLINECOLOR 0 0 0
			END 
		END 
  END 
END	

  LAYER
	NAME			"СЛОЙ_2"
	METADATA
			"wms_title"				"СЛОЙ_2"
			"wms_srs"				"EPSG:32629 EPSG:54004 EPSG:4326"
			"wms_include_items"		"all"
	END #End metadata
	TYPE			LINE
	STATUS			DEFAULT
	DATA			"data/МОЯ_КАРТА/СЛОЙ_2.shp"
	TEMPLATE	"template.html"
	PROJECTION		
		"init=epsg:32629"
	END #End projection
		CLASS
			NAME "..."
			STYLE
			COLOR 98 255 69 
			OUTLINECOLOR 0 0 0
			END
		END
 END
К моей карте я обращаюсь в следующем коде:

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


new OpenLayers.Layer.WMS("МОЯ_КАРТА (Group Layer)",
".../МОЯ_КАРТА.map",
{
layers: [
"СЛОЙ_1",
"СЛОЙ_2"
],
transparent: true,
format: "image/gif"
},
{
isBaseLayer: false,
buffer: 0,
displayInLayerSwitcher: false,
visibility: false
}
),


Все отлично появляется и отображается. Проблема следующая... Все слои, составляющие группу МОЯ_КАРТА, отображаются ТОЛЬКО все вместе, и никак не по-отдельности. Чтобы они отображались по-отдельности, поставила в параметре STATUS .map файла для каждого слоя OFF, что тут же привело к ошибке: msWMSLoadGetMapParams(): WMS server error. Invalid SRS given: SRS must be valid for all requested layers. При этом в QGIS и GVSIG слои читаются так, как нужно.
Почитала рекомендации Mapserver, говорят, что для WMS servera STATUS слоя должен ставиться обязательно в DEFAULT. Поставила. Работает. Но все слои отображаются ОДНОВРЕМЕННО. А надо, чтобы они выбирались по желанию пользователя.

Кто-нибудь сталкивался с такой проблемой?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: параметр STATUS для группы слоев (Mapserver) для wms-сер

Сообщение Denis Rykov »

Дело не в MapServer, просто вы в OL создали 1 слой, представляющий собой комбинацию нескольких слоев WMS. Создайте для каждого слоя свой OpenLayers.Layer.WMS и будет вам счастье, то есть вместо:

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

new OpenLayers.Layer.WMS("МОЯ_КАРТА (Group Layer)",
  ".../МОЯ_КАРТА.map",
  {
    layers: [
      "СЛОЙ_1",
      "СЛОЙ_2"
      ]
...
должно быть:

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

new OpenLayers.Layer.WMS("МОЯ_КАРТА (Group Layer)",
  ".../МОЯ_КАРТА.map",
  {
     layers: "СЛОЙ_1"
...
Аналогично для второго слоя.
Spatial is now, more than ever, just another column- The Geometry Column.
yarovka
Интересующийся
Сообщения: 18
Зарегистрирован: 05 мар 2010, 18:34
Репутация: 0

Re: параметр STATUS для группы слоев (Mapserver) для wms-сер

Сообщение yarovka »

Спасибо, проблема решена! Как всегда, всему бедой невнимательность... Ошибка: "msWMSLoadGetMapParams(): WMS server error. Invalid SRS given: SRS must be valid for all requested layers" появлялась из-за неправильно указанной проекции каждого .map файла. Т.к. я их накладываю на гугл, нужно было в каждом слое указать проекцию гугла. Теперь все работает отлично, и с групповыми слоями, все отображается по клику пользователя.
Ответить

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

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

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