MapServer+OpenLayers. Так и должно быть или моя ошибка?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
monstr
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 янв 2009, 15:01
Репутация: 0

MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение monstr » 11 янв 2009, 15:45

Доброго времени суток, Уважаемые форумчане.

Я использую mapserver (поставил ms4w 2.3.1) и OpenLayers 2.7.

Сначала я создал, WMS-сервис с помощью Mapserver. Как я понял, для этого просто надо создать "правильный" map-файл.
Затем создал html-файл и включил в него с помощью OpenLayers свою карту.

В QGIS WMS-сервис подключился и отображается без проблем. А вот при открытии html-файла я вижу просто много карт маленького размера:
Изображение

и при увеличении/уменьшении масштаба то же самое :(
Но хочется одну масштабируемую карту.

может, кто подскажет, в чем моя ошибка или непонимание???

html-файл следующего содержания:

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

<html>
<head>
  <title>OpenLayers Example</title>
    <script
    src="http://openlayers.org/api/OpenLayers.js"></script>
    </head>
    <body>
      <div style="width:100%; height:100%" id="map"></div>
	  <script defer="defer" type="text/javascript">	 
        var map = new OpenLayers.Map('map');
        var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
            "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/monstrmap/rus.map&mode=map&", {layers: "ruspolit"} );
        map.addLayer(wms);
        map.zoomToMaxExtent();
      </script>

</body>
</html>

Map-файл у меня получился следующего вида:

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

MAP
	NAME			"WMS" 
	STATUS			ON    
	IMAGETYPE		png
	EXTENT			18 35 180 82	#границы(в градусах)
	SIZE			800 600
	SHAPEPATH		"shp"
	UNITS DD
	IMAGECOLOR		200 200 200
	WEB		
		IMAGEPATH "/ms4w/tmp/ms_tmp/"
		IMAGEURL "/ms_tmp/"
		METADATA
			"wms_title" "MoNsTr Demo"
			"wms_abstract" "This is the WMS try-version from MoNsTr"
			"wms_onlineresource" "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/monstrmap/rus.map&"
			"wms_srs" "EPSG:42304 EPSG:42101 EPSG:4269 EPSG:4326"
			"wms_getfeatureinfo" "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/monstrmap/rus.map&"
			"wms_featureinfoformat" "text/plain"
		END #metadata
	END #web
	
	PROJECTION
		"init=epsg:4326"   ##required
		#"proj=latlong"
		#"ellps=WGS84"
		#"datum=WGS84"
	END #projection


	LAYER
		NAME			ruspolit	
		METADATA
			"wms_title"    "ruspolit"   ##required
		END #metadata
		DATA			bnd-political-boundary-a	
		PROJECTION
			"init=epsg:4326"   ##recommended
		END

		STATUS			OFF
		TYPE			POLYGON
		CLASS
			NAME "Карта России"
			STYLE
				COLOR 230 230 230
				OUTLINECOLOR 32	32 32
			END #style
		END #class
	END #layer
	
END #map
Спасибо

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

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение Максим Дубинин » 11 янв 2009, 23:36

честно скажу, в код вникнуть не успел, но похоже, что у вас проблемы с охватом (extent). Попробуйте проверить правильно ли у вас работает вот этот код. Если да, попробуйте "reverse engineering", map-файл могу прислать. Если откопаете все-таки где была ошибка, не забудьте поделиться.

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

<script type="text/javascript">
var lon = 44;
var lat = 46;
var zoom = 5;
var map, layer;
map = new OpenLayers.Map('map2');
layer = new OpenLayers.Layer.WMS("GIS-Lab Test WMS", "http://gis-lab.info/cgi-bin/wmsworld?", {layers: 'world'});
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
map.addControl(new OpenLayers.Control.LayerSwitcher());
</script>
пристегивайтесь, турбулентность прямо по курсу

monstr
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 янв 2009, 15:01
Репутация: 0

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение monstr » 12 янв 2009, 01:40

Да, sim, Ваш код работает. Буду копать map-файл...
Вышлите, пожалуйста, рабочий вариант map-файла.

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

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение Максим Дубинин » 12 янв 2009, 01:51

я бы, прежде чем смотреть map-файл, поэкспериментировал с js, убрал map.zoomToMaxExtent(); и сделал бы как у меня setcenter с lat/log заданными в начале.

работающий map-файл
http://gis-lab.info/programs/mapserver/ ... ap/wms.map
пристегивайтесь, турбулентность прямо по курсу

di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение di@mond » 24 май 2009, 16:35

Ну так какое все-таки решение этой проблемы? сама с такой столкнулась!!
Что, где нужно изменить?

dimas4
Интересующийся
Сообщения: 17
Зарегистрирован: 16 апр 2009, 18:28
Репутация: 0

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение dimas4 » 03 авг 2009, 17:18

У меня такая же проблема , может кто нибудь подскажет решение, может дело в shp файле и нужно его в kml конвертировать???

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

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение Mavka » 03 авг 2009, 17:50

А то что sim выше советует пробовали?
лангольеры под окном жрали время ом-ном-ном

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

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение Konstantin Tokar » 04 авг 2009, 00:27

При работе с OpenLayers первое что надо проверить - какие данные ему приходят от сервера, вне зависимости от типа сервера. Если данные идут правильные, те которые заказывает OpenLayers - значит надо лечить OpenLayers, чтобы он заказывал правильные данные. Если OpenLayers просит одно, а сервер отдаёт другое - надо править сервер - проекции, например.

Посмотреть что происходит между сервером и OL проще всего в FireFox&FireBug. В нескольких местах там можно посмотреть текст запроса, заголовки, POST ответ, посмотреть какие картинки возвращаются.

dimas4
Интересующийся
Сообщения: 17
Зарегистрирован: 16 апр 2009, 18:28
Репутация: 0

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение dimas4 » 11 авг 2009, 16:54

дело в extent, monstr скинь свой shp файл

monstr
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 янв 2009, 15:01
Репутация: 0

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение monstr » 12 авг 2009, 07:40

Для тех, кому все же интересно...
Как я понял, необходимо было явно задать параметры lon, lat и zoom в строке
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
а в моем первоначальном коде этой строки вообще не было.

dimas4
Интересующийся
Сообщения: 17
Зарегистрирован: 16 апр 2009, 18:28
Репутация: 0

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Сообщение dimas4 » 29 авг 2009, 11:36

у тебя наверно в openlayer выставлены географические координаты EPSG: 4326. географические координаты работают с extend -180 -90 180 90. в твоем map файле вообще 18 35 180 82. если происходит такая борода с отображением скорее всего твой shp файл нарисован в другой координатной сетке. Попробуй принудительно задать в openlayer свой extend. Например
options = {
maxExtent: new OpenLayers.Bounds(3200, -8200, 7200, 4200),

};
у меня после такого нормально начало отображаться.

Ответить

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

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

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